Hermes Agent 实战 12|工具链外延:用 AI 运维 AI,与这个系列的诞生原创
# 工具链外延:用 AI 运维 AI,与这个系列的诞生
系列收官篇。前 11 篇都在讲「Hermes 帮我管机房」,这篇讲「我用什么管 Hermes」——Claude Code 作为元层、opencode / ACP 的接入、一个监听发布就自动更新的 webhook。最后揭一个闭环:你正在读的这个系列,本身就是用 AI 从上万次会话里提炼出来的,我会把那套提取流程完整交出来。
# 1. 用 Claude Code 运维 Hermes 本身
一个有意思的分工:Hermes 管我的机器,Claude Code 管 Hermes。源码改动、合并上游、修配置、排查网关——这些「关于 Hermes 自己」的活,我在 Claude Code 里做。它对每个 Profile 目录、源码仓库、WebUI 仓库都有独立上下文,是这套部署的「元层运维台」。
这一层积累下来的对话量惊人:光 Claude Code 这边就有两百多个对话、上百兆。这本身说明一件事——运维一个 agent 部署的工作量,不亚于运维它所管理的那些机器。Agent 不是「装好就不管」,它是一个需要持续维护的活系统。
# 2. opencode / ACP:同一个 Agent,更多面孔
Hermes 通过 ACP(Agent Client Protocol)能接进 VS Code / Zed / JetBrains;我也把它接进了 opencode。要点只有一个:
同一套 Hermes 配置/技能/记忆,只是换一个前端外壳。 别在每个前端里重新发明一遍 agent。
接入时的常见问题是「为什么某个 agent 定义不被识别」——基本都是配置文件路径/格式没对上前端的约定,而不是 Hermes 本身的问题。先确认前端在哪个路径、按什么格式找 agent 定义,再怀疑 agent。
# 3. 监听发布就自动更新的 webhook
我给 WebUI 做了个自动更新:当上游项目发新版本,自动拉取 + 重启。用一个常驻 webhook + systemd 托管:
# 用 webhook 工具起一个监听,systemctl 管理
# 当 hermes-webui 有新版本发布 → 触发拉取 + 重启
2
关键纪律和第 03、10 篇一致:
- 更新后用 systemctl 重启,别 nohup 手动起——要让服务进程被正确托管,否则崩了不会自愈。
- WebUI 是系统级服务(
/etc/systemd/system/),Restart=always已设,崩溃能自恢复。 - 自动更新同样适用「变更必验证」:拉完起不来,要有告警,别静默挂掉。
# 4. 闭环:这个系列是怎么写出来的
最后揭盖子。整个《Hermes Agent 实战》的素材,不是我翻聊天记录翻出来的——是用 AI 从上万次真实会话里自动提炼的,正好把全系列的方法用了一遍。
# 4.1 数据在哪
- Hermes 会话:每个 Profile 的
state.db(SQLite,sessions/messages两张表,带 FTS5 全文索引)。十几个库加起来上万会话、近十万条消息。 - Claude Code 会话:
~/.claude/projects/**/*.jsonl,两百多个对话。
# 4.2 提取三步
index → 把所有会话扫成一张总索引(profile / 标题 / 日期 / 消息数 / 主题)
dump → 把实质性会话导成「脱敏后的可读转录」,按主题归类
summarize → 让一个便宜模型把每个会话压成「博客级摘要块」
(场景 / 动作 / 结果 / 可写的角度 / 用户原话)
2
3
4
summarize 这步,用的就是第 04 篇讲的辅助模型思路——一个便宜的 qwen3-coder 批量总结上万会话,而不是用主模型烧钱。最后产出三百多个「博客级摘要块」,每篇文章就从对应主题的摘要块里挑骨架,再回原始转录里捞命令细节。
# 4.3 脱敏是第一公民
公开发布等于永久索引,脱敏必须自动化、可复核:
# 单遍正则脱敏的核心(可复现骨架)
REDACTIONS = [
(r"sk-[A-Za-z0-9]{16,}", "<APIKEY>"),
(r"(?<!\d)\d{8,}:[A-Za-z0-9_-]{20,}", "<TOKEN>"), # id:secret 令牌
(r"\d{1,3}(?:\.\d{1,3}){2,3}", "<IP>"), # IP(含粘连/子网)
(r"[~\w./-]*id_rsa(?:\.pub)?", "<SSH_KEY>"),
]
2
3
4
5
6
7
这里我自己踩了个很值得分享的坑:第一版 IP 正则用了 \b 词边界,结果中文紧贴 IP(解析到<PUBLIC_IP>)时,因为中文在 Python 正则里算 \w,词边界不成立,IP 整个漏网。教训:脱敏正则必须拿真实脏数据测——\b 在中英文混排里会骗你。改用 lookbehind、并要求 ≥3 段点分,才稳。最后对全部产物做了一遍泄漏扫描,确认 IP / key / token / 域名全部归零,才敢动笔。
这正是整个系列的元主题在自我应验:「我跑了脱敏」和「真的没泄漏」是两回事——所以最后那一遍扫描,是必须的复核终态。
# 5. 写在最后
十二篇下来,如果只留一句:
Agent 不是「接个大模型」那么简单。它是一个有隔离边界、有常驻进程、有定时任务、有状态会泄漏、有配置会膨胀、需要升级和反哺、甚至需要被另一个 AI 来运维的——活系统。
这个系列的全部价值,不在「成功跑通」的截图,而在上万次会话里那些它怎么失败、为什么失败、最后怎么治住的真实记录。希望这些踩过的坑,能让你在自己的 agent 上少踩几个。
——《Hermes Agent 实战》完。