[分享创造] 写了一个开源 agent 平台,专门解决"管 100 个 agent"的运维问题
各位 V2EXer ,最近在 Claude Code 的加成下,生产率有点爆棚,和大家分享一下自己折腾的东西:
起因
最近一年 CLI agent 火起来了,Claude Code 、OpenClaw 、Hermes 这一类,本质上都是个人助理形态:
- memory 是 markdown 文件
- session 是 JSONL
- skill 是文件夹
- secret 是 dotfile / 环境变量
- 配置散落在 ~/.xxx/ 下
一个人一台电脑用这种栈,体验好还方便。但我自己折腾的时候发现,一旦想跑多个 agent —— 比如给团队每人配一个、或者做一个 SaaS 给每个用户配一个、或者跑一群分工不同的 specialist agent —— 这种”文件即状态”的模式就崩了。
- 想给 100 个 agent 装同一个 skill:写部署脚本 SSH 进每台机器
- 想统一加一条系统指令:同上
- 想审计某个 agent 上周做了啥:登上去 grep 文件
- secret 散在各处还在 shell history 里,安全性也很差
这是一个没有运维层的栈,因为单用户场景下 agent 自己就是运维。
做了啥
写了个开源平台叫 OpenHermit 。一个核心设计选择:把内部状态和外部状态分开。
- 内部状态( sessions / memories / instructions / skills / MCP / schedules / secrets / users )→ 全部进 PostgreSQL ,按 agent_id 分 scope
- 外部状态( agent 当前在工作的 workspace 文件)→ 留在每个 agent 自己的 Docker 容器里
类比:人的记忆在脑子里,工作的文件在电脑里。OpenClaw 把这两者混在一起,OpenHermit 把它们分开。
我觉得 openclaw 的做法有点像:你既可以在你的桌面上工作,又可以随时打开自己的脑子动手术。我的做法是把这两个事情严格分开,手术的事情交给一个专业的人来管理。
这样做带来什么
内部状态集中后,运维操作变成一行命令:
hermit skills enable standup-digest –all # 给所有 agent 装一个 skill hermit mcp enable mcp_github –all # 给所有 agent 加一个 MCP hermit instructions append rules “不要泄露 PII 。” –all # 给所有 agent 推一条新规则 hermit config secrets set OPENROUTER_API_KEY … –agent main # 更换 secret
也可以从一个 admin UI 看到所有 agent 的 session 、event 、memory ,secret 加密存表里( AES-256-GCM ),channel adapter (Telegram/Discord/Slack) 内置好了。 当前状态
- License: MIT
- 栈: TypeScript + Hono + PostgreSQL + Drizzle + Docker
- 内置 channel: CLI / Web / Telegram / Discord / Slack
- 仍然在快速迭代,文档、测试覆盖、稳定性都还有不少坑要填
- star 数还很惨淡,欢迎拍砖、提 issue 、提 PR
链接
- 仓库: https://github.com/williamwa/openhermit
- 站点: https://openhermit.ai
- 设计思路(一篇博客): https://openhermit.ai/blog/agents-but-operable
想听的反馈
- 内部 / 外部状态这个切分,大家觉得是合理的设计选择吗?还是有更好的技术架构?
- 你们身边有没有在管多 agent 的场景?是怎么解决的?
- 任何 “上 Postgres 到底有没有必要” 的反对意见 —— 都欢迎,我现在最缺的就是不同视角。
谢谢各位看完这么长。