Hermes Agent
Jimmy 自建的个人 AI agent 框架:profile + auth pool + IM gateway + skill plugin,作为 review-agent / personal-ai-delegate 等自家产品的运行时底座。
1. 核心产品 / 服务
Hermes 是一个本地 + VPS 双部署的 agent 运行时,上游 fork 自 NousResearch 的 hermes-agent。Jimmy 把它当作"自家所有 AI 工作流的容器"来用。
核心架构:
- CLI 入口:
hermeswrapper,背后跑hermes_cli.main(Python venv);本地装在~/.hermes/,VPS 上独立 user 跑 systemd --user 服务。 - Profile 系统:
hermes profile create/use/alias管理多个独立配置,支持--clone-all复制凭据,用来做"OAuth 订阅 vs 便宜 provider"的隔离。 - Auth pool:所有 provider 凭据集中存在
~/.hermes/auth.json,单一 source of truth;支持 API key / OAuth / PKCE 多种类型。 - Model routing 分层(
config.yaml):model:主对话模型(hermes chat和 IM gateway 走这个)auxiliary.*小任务(approval / compression / flush_memories / mcp / session_search / skills_hub / web_extract / vision)各自指定 provider+modeldelegation.*subagent 调用单独路由compression.*历史压缩单独路由
- IM Gateway:原生 Lark/Feishu 集成(
~/.hermes/.env配 FEISHU_APP_ID/SECRET/DOMAIN),Telegram、Slack 通过 channel adapter 接入。allowlist + pair 流程 + admin notify 三层 access control 已经 patch 进 gateway/run.py。 - Cron:
~/.hermes/cron/jobs.json支持 per-job provider/model/base_url override(CLI 不暴露这几个字段,要直接改 JSON)。 - Skill plugin:
~/.hermes/skills/<category>/<name>/SKILL.md注册本地 skill;scanner 不 follow symlink,必须 rsync 真实拷贝。
Provider 覆盖:原生支持 Anthropic(含 OAuth 订阅 token)、Moonshot Kimi(kimi-coding / kimi-coding-cn,K2.5/K2.6 已在内置 model list)、DeepSeek 直连、openrouter 接所有其余模型。
2. 服务对象 & 痛点
主要"用户":Jimmy 本人——一个 crypto 退出后做 AI 自动化的连续创业者,每天要跑多个 cron、多个 IM channel、多个 sub-agent,需要一个能把这些都装进同一个壳的工具。
潜在外延用户:personal-ai-delegate 把 Hermes 当 SDK,目标是 senior 管理 junior 的工作场景;review-agent 把 Hermes 当 host runtime,公开 release 后任何 hermes 用户都能装。
痛点 / 设计动机:
- Claude Code、OpenClaw 这类 CLI 是单 session、单 channel、单 model 的;Jimmy 的工作流是多 channel + 多 cron + 多 model
- 订阅 OAuth quota(Anthropic Pro/Max)和按量计费要分开烧——主对话用订阅,subagent 和压缩走便宜 provider
- 多个 IM bot 共用一套 auth pool 和 skill 库,避免每个 channel 重复配
- 上游 patch 容易被
hermes update冲掉——所以 Jimmy 的 patch 都写成幂等 Python 脚本,带 backup + marker
3. 竞争格局
| 维度 | Hermes (Jimmy) | Claude Code | OpenClaw | Anthropic Claude Agent SDK | Cursor agents | Aider |
|---|---|---|---|---|---|---|
| 定位 | 个人多 channel agent 运行时 | 终端 coding CLI | 多 user 协作 agent 平台 | 嵌入式 SDK | IDE 内 coding agent | git-aware coding CLI |
| 部署 | 本地 + VPS systemd | 本地 CLI | 本地 + VPS daemon | 嵌入式 lib | IDE | 本地 CLI |
| Channel | Lark / TG / Slack | 终端 only | Lark / WhatsApp / WeCom | 调用方自己接 | IDE 内 | 终端 only |
| Provider | 多家 + OAuth + auth pool | Anthropic only | 多家 | Anthropic | Anthropic / OpenAI / 自家 | 多家 |
| Profile / 多账号 | 原生 | 无 | 部分 | N/A | 单一 | 单一 |
| Skill plugin | 原生 | Skills (近期) | Skill | 用户自己实现 | Composer | 无 |
| Cron / 定时 | 内置 | 无 | 内置 | N/A | 无 | 无 |
| 适用场景 | 自动化工作流 | 写代码 | 团队 IM agent | 集成到产品里 | IDE 写代码 | 改 repo |
差异化关键:多 IM channel + cron + 多 model routing 三件事捏一起,并且对个人订阅 OAuth quota 做了细粒度路由。Claude Code 和 Aider 没有这个抽象层;OpenClaw 更偏团队多用户场景;Anthropic Agent SDK 是 lib 级别,需要自己组装。
4. 独特观察
- OAuth 订阅 + auxiliary 分离是省钱关键:主 model 接 Anthropic OAuth(吃订阅额度),auxiliary/delegation/compression 全指向 openrouter 上的 deepseek / minimax-m2.7 这种便宜模型。subagent 8 并发 × OAuth = 容易撞 rate limit,所以 delegation 走便宜 provider 是必要防护。
- Cron 默认跑主 model 的陷阱:如果主 model 是 OAuth,每日 cron 会烧订阅 quota 而且容易触发 Anthropic 异常检测——必须在
jobs.json里显式 override provider/model(CLI 不暴露这几个字段)。这是个隐式风险,没踩过坑发现不了。 - PKCE state = code_verifier 的小 trick:hermes 把 PKCE
code_verifier直接塞到 OAuthstate参数里(agent/anthropic_adapter.py),所以授权回调粘贴回的state == verifier。中途死掉还能手动调 token endpoint 换 token——少见但聪明的实现。 - Skill scanner 不 follow symlink:开发中 skill 想被识别必须
rsync真实拷贝到~/.hermes/skills/<category>/<name>/,ln -s会被静默忽略。开发流程要 edit dev path → sync → 验证。 - Kimi 接入零改源码:Moonshot Kimi 已经原生支持,包括自动 base-URL 切换(看 key 前缀
sk-kimi-→api.kimi.com/coding,普通sk-→ 配置 base_url),tool schema sanitize 也自动跑。hermes auth add kimi-coding一行就接上 K2.5/K2.6。 - 上游 patch 会被冲:hermes-agent 是 NousResearch 上游 repo,本地 patch(DeepSeek thinking disable / Feishu allowlist / admin notify)都会被
hermes update覆盖——所以 Jimmy 的所有 patch 都写成幂等脚本放 VPS 上,带 marker + backup,update 后重跑即可。 - vs OpenClaw 的取舍:OpenClaw 是 Jimmy 早期主力,更适合"团队多用户协作"的场景(dmPolicy / allowFrom / 多用户隔离);Hermes 是后来发现"我自己一个人用其实更需要 profile + auth pool + cron"才转过去的。两个都在用,分工不同——见 openclaw-hermes-updates。
- Kimi 在 Hermes 路径:直连 Moonshot 比走 openrouter 更便宜(OpenRouter 不一定 pass-through prompt-caching 折扣),但 OpenRouter 上的 Kimi 也比直连 Moonshot 便宜(第三方 provider 内卷)——具体看 workload 是不是 cache 友好。
5. Financials
N/A — 个人内部工具,不收费、不融资、不商业化。仅作为 review-agent / personal-ai-delegate 等可能商业化产品的底层 runtime。
6. People & Relationships
- Builder: Jimmy(个人项目)
- Upstream: NousResearch hermes-agent(fork,本地 patch 用幂等脚本维护)
- Hosted at: 本地 macOS(dev)+ 个人 VPS(systemd --user 跑 gateway / cron)
- Models routed:
- 主对话:Anthropic Claude(OAuth 订阅)
- 辅助 / subagent:deepseek / minimax / glm 等 via openrouter
- 直连:kimi (Moonshot) for coding / 长上下文
- Built on top:
- review-agent — Hermes skill,pre-meeting material review
- personal-ai-delegate (PAID) — Hermes plugin
paid-v1,senior 管 junior 的代理
- 生态对照: tinyfish(如果不想自建 web automation 的对照选项)
Sources
- local:
memory/reference_hermes_config.md— Hermes 配置架构、profile、auth pool、OAuth PKCE、cron override 风险 - local:
memory/reference_hermes_kimi_provider.md— Kimi/Moonshot 原生支持,base-URL 自动切换,tool schema sanitize - local:
memory/reference_hermes_feishu_allowlist.md— Feishu gateway 三层 allowlist + admin-notify patch + 上游 update 覆盖问题 - local:
memory/feedback_hermes_skill_install.md— Skill scanner 不 follow symlink,必须 rsync - local:
2026-04-20-summary.md(原 wiki 引用,raw/ 里未找到,存疑)