Hermes:微信实时监控菜地,偷菜的人慌了

我家的院子里种了点菜,黄瓜、丝瓜、西红柿,长得虽然经常奇形怪状,但还是经常被路过的人顺手薅走。于是想着,能不能让上一篇文章里那台AI化的树莓派派上点用场——挂个摄像头盯着菜园,再接一个微信机器人,随时给我汇报菜园的情况,还可以顺便用大模型分析一下有没有人在偷菜。

整个方案的链路如下:

  flowchart LR
    A[微信] -->|消息| B[Hermes Gateway]
    B --> C[Hermes Agent]
    C -->|garden-camera skill| D[rpicam-still]
    D -->|jpg| E[树莓派摄像头]
    C -->|vision 分析| F[LLM]
    F --> C
    C -->|图片+文字| B
    B -->|回复| A

最终效果:在微信里给机器人发一句"看看院子",几秒钟后收到一张实时照片,外加AI对实时画面的分析汇报。

Hermes 是什么

简单来说,Hermes(众神的信使赫耳墨斯)是小龙虾OpenClaw的平替。

Hermes 是 Nous Research 出的一个开源 Agent 框架,名字取自希腊神话中的赫耳墨斯——奥林匹斯十二主神之一,宙斯与迈亚之子,司职商业、旅行、偷窃、畜牧、竞技、演说,也是众神的信使。他行动敏捷,常被描绘为头戴有翼金盔、脚穿带翼凉鞋、手持双蛇盘绕的节杖。罗马神话中对应的是墨丘利(Mercury)。

安装 Hermes

Hermes 的安装很简单,一行命令:

# 默认安装到 $HOME/.hermes
# 也可以通过环境变量 HERMES_HOME 指定安装目录
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc    # 或者 source ~/.zshrc
hermes              # 启动!

如果想装到指定目录:

wget https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh
chmod +x install.sh
./install.sh --hermes-home /data/runtime/hermes

安装完之后,目录和重要的配置文件在这些地方:

  • Home:~/.hermes/
  • Settings:~/.hermes/config.yaml
  • bin:~/.local/bin/hermes
  • Service:~/.config/systemd/user/hermes-gateway.service
  • API Keys:~/.hermes/.env
  • Data:~/.hermes/cron/sessions/logs/

常用的几个子命令:

hermes setup            # 配置 API Key
hermes config           # 查看/编辑配置
hermes gateway install  # 安装网关服务(消息+定时任务)
hermes update           # 更新到最新版

连接微信

国内用 Telegram、Discord 不太方便,所以一般会使用微信或者飞书。

OpenClaw连接微信还要自己折腾一下,Hermes则已经内置了微信支持,只需要扫个码就可以完成对接。选择连接微信后会问要不要开 QR 登录:

Start QR login now? [Y/n]: y

请使用微信扫描以下二维码:
https://liteapp.weixin.qq.com/q/7GiQu1?qrcode=xxxxxxxxxxxxxxxx&bot_type=3

这时终端会直接显示微信登录的二维码,如果无法显示,使用上面提示的地址用浏览器访问就可以看到二维码。

手机微信扫一下,然后在终端里设置权限,用默认值即可:

 → (●) Use DM pairing approval (recommended)
   (○) Allow all direct messages
   (○) Only allow listed user IDs
   (○) Disable direct messages

在另一台设备(或者你自己的微信小号)上给机器人发一条消息,会收到一个配对码,回到树莓派终端执行:

hermes pairing approve weixin F94QZ72U

或者直接在对话框里按提示输入配对码,微信通道就接通了。连通后可以立刻在微信里和这个 Agent 对话。

树莓派摄像头

先在树莓派上安装摄像头配件。安装方式:摄像头排线接到电源和 HDMI 之间的 CSI 接口,白色一侧朝向 HDMI 方向,有文字的一侧朝向电源和网卡方向,插到底锁紧即可。

接上摄像头之后,先在系统里启用:

# 启用摄像头
sudo raspi-config
# 查看摄像头状态(推荐)
vcgencmd get_camera
# 列出已检测到的摄像头(supported=1 detected=1)
rpicam-hello --list-cameras

# 拍摄并保存为 test.jpg
rpicam-jpeg -o test.jpg
# 或者使用功能更全的命令(推荐)
rpicam-still -o test.jpg

如果你一行命令也不想执行,可以直接在opencode里告诉AI:“调试摄像头”,AI会自动完成上述全部步骤。

在 Bookworm 上原来的 raspistilllibcamera-still 已经统一改名成 rpicam-* 系列。rpicam-stillrpicam-jpeg 多了曝光、对焦、HDR 等参数,还可以RAW格式输出,适合作为长期使用的拍照命令。

参数说明:

  • –shutter <微秒>:手动设置快门速度(支持长曝光,如 100 秒)。
  • –gain <值>:设置模拟增益(相当于 ISO)。
  • –exposure :曝光模式(如 normal、sport)。
  • –ev <值>:曝光补偿(EV 值,正负调整亮度)。
  • –awb :白平衡模式(auto、daylight、cloudy 等)。
  • –awbgains <r,b>:手动设置红/蓝增益。

把摄像头对着菜园架好,运行一下 rpicam-still -o test.jpg,rsync 回本机看一眼,能拍到清晰的菜地全景,就算成功了。

如果使用桌面版的树莓派,拍摄后会立刻在桌面上弹出照片,更方便使用。

编写 garden-camera 技能

Hermes 的扩展方式叫 Skill,本质上就是一段带有自然语言触发条件的 Markdown 描述 + 一组可执行命令。Skill 放在 ~/.hermes/skills/ 下,按目录组织。

直接让 Hermes 自己写一个就好了。在终端里启动 hermes,给它下面这段 Prompt:

创建一个技能,当我询问你"菜园情况如何"/“院子情况如何"时,调用 rpicam-still -o camera/xxxx.jpg 拍摄一张照片,照片保存在当前 workspace 的 camera 目录下,并反馈该照片(如果是微信等 channel 询问,则把照片发回去,并简要分析照片中院子是否有人偷菜)。

Hermes 会反过来 clarify 几个细节,例如:

  1. 照片保存在哪里?是当前工作目录还是固定路径(比如 ~/garden-photos/ 或者带时间戳)?
  2. “如果是微信询问则返回给照片”——指的是通过任意已连接的消息平台自动发回去,还是特指微信?
  3. 这个技能只是拍照+反馈,还是希望 Agent 也用 vision 分析照片内容?

此时会弹出用户交互菜单追问需求细节,我使用的Deepseek v4 Pro大模型,似乎在用户交互菜单的支持上存在一些小问题。AI没有获得用户反馈之后,自动按照最佳实践自己决定了这些细节,自己根据上下文做了合理的默认决策(带时间戳保存、自动回复当前 channel、调用 vision 分析,如果用户只要照片则跳过分析),最后输出:

技能:garden-camera
位置:~/.hermes/skills/smart-home/garden-camera/SKILL.md

打开生成的 SKILL.md 看一眼,大致结构是:

  • 概述:描述这个技能是干什么用的:从树莓派摄像头捕获一张照片并返回照片及摘要
  • 触发条件:消息中匹配"菜园情况如何”、“院子情况如何”、“看看院子"等
  • 工作流:拍摄、校验、分析、反馈
  • 检查清单:确认做的事情是正确的
---
name: garden-camera
description: "Use when the user asks about 菜园情况, 院子情况, 花园, 偷菜, garden status, yard status. Capture a photo via rpicam-still, save with timestamp, and return the photo with an AI analysis of plant health and garden conditions."
version: 1.0.0
author: Hermes Agent
license: MIT
metadata:
  hermes:
    tags: [garden, camera, rpicam, raspberry-pi, vision, smart-home]
    related_skills: []
---

# Garden Camera — 菜园/院子摄像头
  ## Overview
    ...
  ## When to Use
    ...
  ## Workflow
    ### Step 1: Capture the Photo
      ...
    ### Step 2: Verify the Photo
      ...
    ### Step 3: Analyze with Vision AI
      ...
    ### Step 4: Report to the User
      ...
    ## Alternative: Silent Capture Only
      ...
  ## Common Pitfalls
    ...
  ## Verification Checklist
    ...

公众号后台回复看菜园,获得完整 SKILL.md 文件。

实战效果

把树莓派搬到窗台上,摄像头对准菜园,gateway 服务起好:

systemctl --user enable --now hermes-gateway.service
systemctl --user status hermes-gateway.service

掏出手机,在微信里发一句"院子情况如何”,几秒钟后收到回复:

> 📷 菜园快照 — 20260506_093810.jpg

**🔍 菜园检查结果:**

✅ **没人偷菜!** 画面中没有出现人或动物,菜园安全。

🌱 **蔬菜健康状况:**
- 植物叶片呈健康绿色,无枯萎、黄叶或虫害迹象
- 部分小苗处于幼苗期,植株纤细但状态良好
- 竹子和小树枝叶茂盛,长势不错

⚠️ **需要注意的问题:**
1. **土壤偏干** — 看起来比较干燥,建议适当浇水
2. **植物分布稀疏** — 可以考虑补种或密植
3. **栅栏附近有杂草** — 需要整理,避免争夺养分
4. **定期检查病虫害** — 虽然目前没有,但要持续关注

总体来说菜园状况不错,蔬菜在茁壮成长中!就是记得浇浇水 💧

成了。换一句"看看院子"试试,触发同样的技能。再换"菜地咋样"——这个没在显式触发词里,但因为语义接近,LLM 自己也能匹配到。把 LLM 当人就行——人能听懂的,LLM 也能听懂。

小结

在树莓派跑通整个流程后非常兴奋,实在是太好玩了。整套方案的关键点:

  • 树莓派 作为永远在线的边缘节点,挂摄像头、跑 Hermes,功耗低,放窗台不占地方
  • Hermes 作为 Agent 框架,把消息平台、本地命令、LLM 串起来,写技能只要写 Markdown
  • 微信通道 作为和用户沟通的桥梁,让控制入口下沉到日常使用最频繁的 App,不用专门开一个新应用
  • rpicam-still + vision LLM 完成"拍照 + 看图说话"的闭环

更进一步,还可以加更多技能:

  • 定时任务:每天定时自动拍照片存档,做时间序列对比
  • 异常检测:检测到闲人靠近时主动 push 微信
  • 识别采摘:分析蔬菜水果的成熟程度,通知用户及时采摘
  • 丰收统计:统计蔬菜水果的年度产出量,收获满满的成就感
  • 联动浇水:判断土壤干燥程度,自动控制 GPIO 上的继电器开水阀

赫耳墨斯本来就是司"偷窃"和"信使"的神,让他帮我盯着偷菜贼,再合适不过。