现成连接点
Herdr 官方支持 --kind hermes,也有 herdr integration install hermes,能记录 Hermes 的原生 session id 并在重启后恢复。
最简单的理解:Herdr 像办公室物业和监控室,负责窗口、终端、进程有没有活着;Hermes 像部门经理,负责角色、任务、记忆、沟通和汇报。Codex、Claude Code 等本地 CLI 才是坐在工位上干活的专家。
如果你的目标是:在 Herdr 里同时开 Codex、Claude Code、Hermes,让一个“总管”能派活、查看进度、处理卡住的问题,最合理的组合是下面这样。
把 Hermes 自己放进一个 Herdr pane;给它安装 Herdr 的操作 skill。Hermes 负责“派什么活、交给谁、最后怎么合并”,Herdr 负责“在哪个 pane 启动哪个 CLI、现在是 working / blocked / done、如何读回终端结果”。
Herdr 官方支持 --kind hermes,也有 herdr integration install hermes,能记录 Hermes 的原生 session id 并在重启后恢复。
Herdr 不理解业务任务,也不会自动让多个 CLI 讨论。它提供可靠“手脚”;仍需 Hermes、脚本或人来决定提示词、交接和验收。
第一阶段只让 Hermes 调用 list/read/wait/explain;确认稳定后,再开放 split/start/prompt/send-keys。
想象一栋办公楼。Herdr 的核心不是“多个聊天机器人”,而是“多个真实终端和进程”。客户端关掉后,办公室里的人仍然在工作。
| 层 | 小白比喻 | 真正拥有的东西 | 常见误解 |
|---|---|---|---|
Session | 一栋独立办公楼 | 独立 socket、pane 和状态命名空间 | 一般不用每个项目建 Session;先用 Workspace |
Workspace | 一个项目办公室 | Tabs、Panes、cwd、项目上下文 | 不是 Hermes profile,也不是安全沙箱 |
Tab | 一张可切换的大桌面 | 一组分屏布局 | 不是 Agent 会话 |
Pane | 一个工位 | 真实 PTY、shell、进程、输入输出 | 没有 Agent 也照样存在,可跑测试/服务器 |
Agent | 坐在工位上的专家 | 被检测出的 Codex/Claude/Hermes 等进程与语义状态 | 只是当前 pane occupant,不是永久容器 |
ctrl+b q 可以离开。working / idle正在工作,或已准备好接受输入。Herdr 可能依据官方 lifecycle hook,也可能读取终端底部画面并匹配 manifest。
blocked / done发现审批/提问界面,或后台完成但你还没看。done 本质上是“未查看的 idle”。
unknown知道这里有 Agent,但无法自信分类。它绝不等于“成功完成”。需要 agent explain 或直接读屏。
Pane 卡住会让 Tab 和 Workspace 也显示 blocked;你不必逐个窗口轮询。
这些名字都像“多 Agent”,但寿命、身份和通信方式完全不同。选错了,就会把临时分工当成长期团队,或把多模型投票误认成多个员工。
| 机制 | 它到底是什么 | 是否有长期身份/记忆 | 最适合 | 不适合 |
|---|---|---|---|---|
| Bot Mode | 把 Hermes Profiles 做成有名字的长期 Bot;每个有角色、模型、记忆、技能、凭证和聊天 | 有 | 长期专家团队、群聊、例行任务 | 直接管理任意外部 CLI pane |
| Delegation | delegate_task 临时生一个干净上下文的子 Agent,结束后只回传摘要 | 没有 | 短时并行研究、一次性审核 | 跨重启、人工插话、长期审计 |
| Kanban | SQLite 持久任务队列 + 状态机 + 命名 profile worker + dispatcher | 有 | 长流程、依赖、重试、人工介入、审计 | 立刻要一个短答案的 fork/join |
| MoA | 多个参考模型先给意见,一个 aggregator 真正回复和调用工具 | 不是多个员工 | 高难判断、多模型交叉意见 | 需要各自工具/工作目录/独立任务的团队 |
| A2A | 跨进程、机器或框架的标准 Agent-to-Agent HTTP 协议 | 由对端决定 | Hermes ↔ 远端 Hermes / CrewAI / ADK | 同机简单并行;官方更推荐 Delegation/Kanban |
不是新底层对象。文件在 ~/.hermes/profiles/<name>/;CLI 可以用 hermes -p <bot> chat 访问相同 profile。
一个房间 2–6 个 Bot;一次用户消息最多 3 轮、10 条 Bot 消息。没有 @ 人时所有成员都可判断要不要回应。
Canonical Bot Chat 里有 message_agent;本机是异步 fire-and-forget,跨机器可由 Desktop relay 或 hermes peer 中转。
官方明确说普通 CLI session 不会获得 message_agent。把某个 Bot profile 开进 Herdr pane,并不会自动获得 Desktop 群聊的全部协调语义。
子 Agent 从空白对话开始,不知道父 Agent 的聊天记录;父 Agent 必须把目标和上下文讲全。默认最多并行 3 个(可配置),每个有自己的终端 session,最后只有结构化总结进入父上下文。优点是快、隔离;缺点是失败后不具备 Kanban 那种持久恢复和人类中途接管。
任务、依赖、评论、状态、worker 身份和交接都写入 ~/.hermes/kanban.db。评论是 Agent 间的正式交接协议;worker 每次重启会读到完整评论。它能用 scratch、指定目录或 Git worktree 工作,并通过 heartbeat、claim TTL、失败计数和 review 状态避免任务悄悄丢失。
答案分三层:Hermes 能运行 shell 命令;能把 Codex 的 app-server 当内部 runtime;也能导入 Claude/Codex 配置。但这三件事都不等于“像 Herdr 一样持久管理多个全屏 CLI 窗口”。
Hermes 的 terminal/file/code 工具可在 local、Docker、SSH、Modal、Daytona、Vercel Sandbox、Singularity 中执行。它关心“命令在哪里跑”。
可选地把 OpenAI/Codex turn 交给 codex app-server。Codex 自己负责 shell、patch、sandbox、MCP;Hermes 包住 session、gateway 和 UI。
hermes import-agent 导入 AGENTS.md/CLAUDE.md、skills、MCP 和部分权限。它不导入凭证,也不接管正在运行的 Codex/Claude CLI 会话。
| 你想做的事 | Hermes 原生是否适合 | Herdr 是否适合 | 建议 |
|---|---|---|---|
跑一次 pytest / git status | 非常适合 | 也可以 | 直接用 Hermes terminal;无需制造 pane |
| 用 ChatGPT 订阅驱动 Codex 工具循环 | 可用 Codex app-server runtime | 不负责模型认证 | 需要 Codex 原生 sandbox/plugins 时使用 |
| 同时保留 5 个可观察的 Codex/Claude 全屏 TUI | 不是它的核心终端编排模型 | 正是强项 | 在 Herdr panes 启动 CLI |
| 让 Agent 使用网页或浏览器工具 | 可通过自身工具、MCP 或技能访问 | 可承载浏览器 CLI、插件或相关 pane | Herdr 本身不是完整网页浏览器;它管理承载工具的终端 |
| 让长期角色互相消息、记忆、定时工作 | Bot Mode / Profiles / Kanban | 不提供角色记忆 | Hermes 负责 |
| 检测某个 CLI 正在等待批准 | 自己的 Agent loop 能处理自己 | 可检测 pane occupant 的 blocked UI | 外部 CLI 用 Herdr |
| 把 Claude/Codex 旧配置搬给 Hermes | import-agent | 无关 | 先 --dry-run,凭证手动配置 |
delegate_task、memory、session_search、todo 不可直接在主 turn 使用;Kanban 可通过 callback 工作。要用临时子 Agent 时需回到默认 runtime。它还会管理 ~/.codex/config.toml 中标记区块,区块内自定义内容会在迁移时被覆盖。
HERMES_HOME,但 host 上外部 CLI 默认仍使用真实 HOME,所以 git/ssh/gh/Claude/Codex 通常共享同一套用户级凭证。需要独立身份时用 terminal.home_mode: profile,并在每个 profile home 里重新初始化相关登录;Codex app-server 还可为每个 profile 指定独立 CODEX_HOME。
推荐把“谁决定任务”和“谁拥有终端”写死,不要让两个系统互相猜。下面是最清晰、最容易排错的责任链。
herdr agent start lead --kind hermes --pane <id> 可在已有空闲 shell pane 中启动 Hermes。Herdr 用 screen manifest 判断其状态。
herdr integration install hermes 写入 Hermes plugin 并启用它;重启 Hermes 后可报告 session id,Server 重启时用 hermes --resume <id>。
Herdr 官方 agent skill 在 HERDR_ENV=1 时教 Agent 使用 herdr CLI,能查看邻居、split pane、启动 helper、等待和读回输出。
用 task id + worktree path + acceptance criteria + verification + residual risk 作为每次派工模板;不要只从终端聊天记录猜结果。
# 1. Hermes lead 先拿到当前全局状态
herdr agent list
# 2. 在当前 Herdr pane 旁边开一个不抢焦点的工位
split=$(herdr pane split --current --direction right --no-focus)
pane=$(printf '%s\n' "$split" | jq -r '.result.pane.pane_id')
# 3. 在已有空闲 shell pane 启动 Codex 专家
herdr agent start reviewer --kind codex --pane "$pane"
# 4. 给出完整任务并等待明确状态
herdr agent prompt reviewer \
"只读审查当前 diff。输出:发现、证据、风险、建议;不要修改文件。" \
--wait --until idle --until done --until blocked --timeout 120000
# 5. 读结果;若 blocked,先读屏再由人决定按什么键
herdr agent read reviewer --source recent-unwrapped --lines 160
agent prompt --wait 不是“给这一条 prompt 建独立任务 id”。如果 Agent 原本就在 working,现有 turn 完成也可能满足 wait。重要工作应先确认 Agent idle,或让结果写入带 task id 的文件,再验证该文件。这两篇社区文章最值得留下的不是“多开几个窗口”,而是一条能每天重复的管理闭环:先把任务交清楚,再把成功方法固化,最后只在真正需要你时汇报。
Hermes 选定一个结果,Herdr 提供工位和生命周期,Worker 执行。Captain 等待状态变化,检查真实产物和验收命令,再向你汇报。
只有已通过验收、以后还会重复的流程,才整理成候选 Hermes Skill。先审查权限和边界,再安装并重跑一次;失败的终端过程不是知识。
用 herdr status/list/read 汇总每个 Agent 的状态、任务、最近进展和需要。观察时不按键、不发 prompt、不重启、不关闭。
Captain 是唯一和你对话的人,负责结果、选择 Worker、监督、验收和最终报告;Herdr 启动的 CLI 是 Worker,只做一个有边界、能独立验收的交付物。
role=worker; outcome=<最终要交付什么>
scope=<允许修改的路径;其他只读>
constraints=<不能做什么、哪些外部动作需批准>
accept=<验收命令或可观察结果>
return=done|blocked; paths=<产物>; checks=<检查>; blocker=<原因>; stop
巡检的目标是减少你在终端之间切换,而不是偷偷替你操作。先读 Herdr 的实时状态,再用最近终端输出补充任务背景;两者冲突时要明确说“不确定”。
# 1. 检查 server 和协议
herdr status
# 2. 盘点 Agent 与 Workspace;自动化时解析 JSON
herdr agent list
herdr workspace list
# 3. 按 pane id 读取必要的最近输出;先 80 行,最多扩到 200 行
herdr agent read <pane_id> \
--source recent-unwrapped \
--lines 80 \
--format text
| 字段 | 应该回答什么 | 不能怎么猜 |
|---|---|---|
| Status | working、idle、blocked 或 unknown | 不能只凭窗口标题或旧输出说“正在工作” |
| Task | 当前或最近一次任务,一句话 | 上下文不足就明确写“不足”,不能编身份 |
| Progress | 最后一个可观察的产物、命令结果或里程碑 | 不能只写“取得进展” |
| Needs | 无、需要任务、用户决定、审批、重启、依赖或额度 | 输入框里暂存的文字不等于已经提交运行 |
| 你的真实需求 | 优先选择 | 为什么 |
|---|---|---|
| 同时看见、保留和控制多个终端 | Herdr | 它拥有 pane、PTY、进程和状态汇总 |
| 让 Hermes HQ 管几个本地 CLI Worker | Hermes + Herdr | Hermes 决策,Herdr 执行和观察 |
| 用一条消息知道谁卡住、谁需要你 | 只读 flock-check | 把状态和最近证据压缩成管理摘要 |
| 任务跨重启、依赖、重试和人工审批 | Hermes Kanban | 业务状态要进入持久任务台账,而不是只留在终端 |
| 工程团队需要 worktree、PR 和事件驱动监督 | 评估 Firstmate | 它是更完整的外部 Agent 团队发行包;当前 Herdr backend 仍标为实验性 |
关闭 Herdr 客户端或 SSH 后 server 可继续;本地电脑睡眠或关机则不会。无人值守必须保持唤醒或使用远程常开主机。
它主要上报可恢复的原生 session identity;Hermes 的 idle/working/blocked 当前仍由 screen manifest 判断。
浏览器 CLI、插件或浏览器工具可以出现在 Herdr pane;Herdr 自己不是一款完整网页浏览器。
正确顺序是:验收通过 → 提取候选 Skill → 审查权限和可复用边界 → 安装 → 重跑。不能把一次失败记录自动变成长期规则。
模型能力、额度和价格会变。路由应根据当前可用性、成本和同一验收标准的真实结果,而不是永久复制作者排序。
可以保留一份统一 Captain 合约,但 CLI 命令以当前版本 herdr --skill 为准。文章关联仓库已把旧方案标为实验,并指向 Firstmate。
Herdr CLI 是对本地 socket API 的友好包装。正式自动化优先用 CLI;需要长期事件订阅、或某方法 CLI 没暴露时再直接连 NDJSON socket。下面清单来自本机 Herdr v0.8.2 的 herdr api schema --json。
session.snapshot 得到全量状态;然后 events.subscribe 接增量事件。断线、事件落后或版本不一致时,重新 snapshot,而不是凭旧缓存补猜。Unix 默认是 ~/.config/herdr/herdr.sock;命名 Session 是 ~/.config/herdr/sessions/<name>/herdr.sock。Windows 使用 named pipe。每一行是一条 JSON,客户端用自己的 id 对上响应:
{"id":"req-1","method":"session.snapshot","params":{}}
{"id":"req-1","result":{...}}
建立连接先用 ping 检查 protocol;调用方应容忍未知字段。文档可能落后于安装包,所以运行时以本机 herdr api schema --json 为权威。
Hermes 不是只有一个 API。你要先判断调用者是谁:人、Hermes 内部模型、远端程序,还是另一个 Agent。
| 接口面 | 给谁用 | 关键接口 / 命令 | 与 Herdr 的关系 |
|---|---|---|---|
| CLI / TUI | 人和 shell 脚本 | hermes chat、-p、--resume、-w、slash commands | 可作为 Herdr pane occupant;最直观 |
| Profiles / Bot | 长期角色 | hermes profile create/list/show、message_agent、groups、routines | 提供身份/记忆,不负责 pane 布局 |
| Delegation tools | Hermes 模型 | delegate_task(goal, context) 或 batch | 临时子 Agent 自有 terminal session,但不是 Herdr pane |
| Kanban tools / CLI | 模型、人、cron、脚本 | kanban_show/create/link/comment/complete/block;hermes kanban ... | 可做业务台账;直接接管 Herdr worker 需 adapter |
| OpenAI-compatible API | Web UI、CI、外部控制器 | POST /v1/chat/completions、/v1/responses、GET /v1/models | 外部系统调用 Hermes 的入口,不控制 Herdr |
| Runs API | 长任务控制器 | POST /v1/runs,status/events/approval/steer/stop | 可作为上层 control plane;需自己把 Herdr tool 接进 Hermes |
| A2A | 另一个独立 Agent | a2a_discover/call/list/history/orchestrate;Agent Card + JSON-RPC | 适合跨机器/框架,不替代本机 pane socket |
| Peer | 另一台 Hermes Gateway | hermes peer dm/run/status/stop | 跨机器 Bot 通信;网络和 API key 另管 |
POST /v1/chat/completions:标准 Chat Completions;请求自己带完整消息,偏无状态。POST /v1/responses:支持 previous_response_id 的服务器端多轮状态。POST /v1/runs:立即返回 run id,适合长任务;配套 status、SSE events、approval、steer 和 stop。GET /v1/capabilities:先探测当前 Hermes 是否支持 runs、stream、stop、session continuity,避免写死版本假设。GET /.well-known/agent-card.json + POST /:A2A v1 Agent Card 与 JSON-RPC 入口。安全:Hermes API Server 能使用 terminal/file 等完整工具,即使只绑定 localhost 也要求 bearer key。不要把 key 写进报告、任务评论或 pane metadata。
先让信息流跑通,再逐步开放写权限。这样某个状态误判最多导致“没自动继续”,而不是误批危险命令。
确认 Hermes 已存在;安装 herdr integration install hermes;重启 Hermes;用 herdr integration status 检查版本。只验证 session identity 和 resume。
给 Hermes lead 安装 release-matched Herdr skill,但只允许 status/list/get/read/explain/wait。连续做几次人工对照,确认 blocked/done 分类可信。
开放 pane split、agent start、agent prompt。每次任务必须有 task id、workspace/worktree、acceptance、timeout 和产物路径。
blocked 时 Hermes 只转述 UI 和建议,不自动 send-keys enter。由你在 Desktop/Telegram 批准后再发明确键。
先手动运行 flock check,确认摘要没有把历史当实时;稳定后才能加 cron。只有验收通过且重复出现的流程,才进入 Skill 候选、人工审查和复测。
若工作跨重启、角色、review、重试,再把业务状态放 Kanban。先决定:保留原 dispatcher,还是做 Herdr-backed worker adapter;不要模糊共管。
按这个顺序读,不需要一开始吞完整站点。前 6 篇足够搭出安全的第一版。
层级、API 方法、状态含义、Bot/Delegation/Kanban/A2A 行为来自 2026-09-01 读取的官方文档;Herdr 方法清单还与本机 v0.8.2 schema 对照。社区工作流在 2026-09-02 再次核对公开仓库。
“Hermes 当经理、Herdr 当运行层”是基于两者能力边界的架构判断,不是两家官方发布的一键集成产品。
分阶段开放 Herdr 写操作、单一 worker 所有者、统一交接证据,是本报告给你的治理方案。