| tags: [ AI Agent Hermes RaspberryPi ] categories: [ 技术 ]
Hermes:微信实时监控菜地,偷菜的人慌了
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 上原来的 raspistill、libcamera-still 已经统一改名成 rpicam-* 系列。rpicam-still 比 rpicam-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 几个细节,例如:
- 照片保存在哪里?是当前工作目录还是固定路径(比如
~/garden-photos/或者带时间戳)? - “如果是微信询问则返回给照片”——指的是通过任意已连接的消息平台自动发回去,还是特指微信?
- 这个技能只是拍照+反馈,还是希望 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 上的继电器开水阀
赫耳墨斯本来就是司"偷窃"和"信使"的神,让他帮我盯着偷菜贼,再合适不过。