ELI5 · 不是“装了就自动协作”

Herdr 管工位Hermes 管团队

最简单的理解:Herdr 像办公室物业和监控室,负责窗口、终端、进程有没有活着;Hermes 像部门经理,负责角色、任务、记忆、沟通和汇报。Codex、Claude Code 等本地 CLI 才是坐在工位上干活的专家。

官方文档交叉核对Herdr 实机 schema 核对事实 / 推断 / 建议分开
Herdr = 运行层Workspace → Tab → Pane → Agent;真实 PTY、真实进程、状态检测、输入输出、断开后继续运行。
Hermes = 语义层Profiles/Bots、消息、临时子 Agent、持久任务板、Gateway、记忆、技能和最终汇总。
01 / Executive answer

先说结论

如果你的目标是:在 Herdr 里同时开 Codex、Claude Code、Hermes,让一个“总管”能派活、查看进度、处理卡住的问题,最合理的组合是下面这样。

推荐:Hermes 当总管,Herdr 当本地 Agent 运行平台

把 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

不要把 User Stories 当产品规格。 Hermes 的 User Stories 页面是社区真实案例索引,里面包括第三方项目、个人脚本和外部扩展;“有人用 Hermes + tmux 做到了”不等于 Hermes 核心已经内置同样能力。
02 / Runtime layer

Herdr 怎么管理多窗口

想象一栋办公楼。Herdr 的核心不是“多个聊天机器人”,而是“多个真实终端和进程”。客户端关掉后,办公室里的人仍然在工作。

Session一整套独立服务器命名空间
Workspace一个项目或工作上下文
Tab项目里的一张桌面布局
Pane一个真实 PTY/终端工位
Agent工位里被识别的 CLI 进程
小白比喻真正拥有的东西常见误解
Session一栋独立办公楼独立 socket、pane 和状态命名空间一般不用每个项目建 Session;先用 Workspace
Workspace一个项目办公室Tabs、Panes、cwd、项目上下文不是 Hermes profile,也不是安全沙箱
Tab一张可切换的大桌面一组分屏布局不是 Agent 会话
Pane一个工位真实 PTY、shell、进程、输入输出没有 Agent 也照样存在,可跑测试/服务器
Agent坐在工位上的专家被检测出的 Codex/Claude/Hermes 等进程与语义状态只是当前 pane occupant,不是永久容器

多窗口为什么不会跟着 UI 一起死?

Herdr Client
只负责显示、键盘、鼠标和导航;按 ctrl+b q 可以离开。
Herdr Server
真正持有 Pane、PTY 和进程。客户端断开,服务器仍继续运行它们。
Local socket
CLI、集成和自动化控制器都通过本地 NDJSON socket 请求状态、发输入、订阅事件。

Herdr 所谓 Agent “状态”是什么?

working / idle

正在工作,或已准备好接受输入。Herdr 可能依据官方 lifecycle hook,也可能读取终端底部画面并匹配 manifest。

blocked / done

发现审批/提问界面,或后台完成但你还没看。done 本质上是“未查看的 idle”。

unknown

知道这里有 Agent,但无法自信分类。它绝不等于“成功完成”。需要 agent explain 或直接读屏。

状态向上汇总

Pane 卡住会让 Tab 和 Workspace 也显示 blocked;你不必逐个窗口轮询。

断开、重启、更新,到底分别能保存什么?
  • 只断开客户端或 SSH:原进程继续运行,这是最可靠的持久化。
  • Mac 睡眠或关机:本地 CPU 和进程不会继续工作;要无人值守运行,机器必须保持唤醒,或把 Herdr Server 放在常开的远程主机。
  • Herdr Server 重启:原进程已经没了;布局可恢复,但任意 shell/server/test 不会神奇复活。
  • 安装当前官方 integration:支持的 Agent 会报告原生 session id,Herdr 可用原 CLI 的 resume 命令重开对话。
  • Pane history:只重放最近屏幕,不恢复旧进程;默认关闭,因为屏幕可能含秘密。
  • Live handoff:更新/远程接管时尽量把活 PTY 转给新 server,属于 best effort。
03 / Semantic layer

Hermes 的“多 Agent”有五种

这些名字都像“多 Agent”,但寿命、身份和通信方式完全不同。选错了,就会把临时分工当成长期团队,或把多模型投票误认成多个员工。

机制它到底是什么是否有长期身份/记忆最适合不适合
Bot Mode把 Hermes Profiles 做成有名字的长期 Bot;每个有角色、模型、记忆、技能、凭证和聊天长期专家团队、群聊、例行任务直接管理任意外部 CLI pane
Delegationdelegate_task 临时生一个干净上下文的子 Agent,结束后只回传摘要没有短时并行研究、一次性审核跨重启、人工插话、长期审计
KanbanSQLite 持久任务队列 + 状态机 + 命名 profile worker + dispatcher长流程、依赖、重试、人工介入、审计立刻要一个短答案的 fork/join
MoA多个参考模型先给意见,一个 aggregator 真正回复和调用工具不是多个员工高难判断、多模型交叉意见需要各自工具/工作目录/独立任务的团队
A2A跨进程、机器或框架的标准 Agent-to-Agent HTTP 协议由对端决定Hermes ↔ 远端 Hermes / CrewAI / ADK同机简单并行;官方更推荐 Delegation/Kanban

Bot Mode:像给公司建立长期通讯录

你 / 主 Bot提出目标、做决策
@researcher自己的 profile、记忆、技能
@coder自己的模型、凭证、聊天
@reviewer自己的例行任务和历史

Bot 就是 Profile

不是新底层对象。文件在 ~/.hermes/profiles/<name>/;CLI 可以用 hermes -p <bot> chat 访问相同 profile。

群聊有防失控上限

一个房间 2–6 个 Bot;一次用户消息最多 3 轮、10 条 Bot 消息。没有 @ 人时所有成员都可判断要不要回应。

Bot 之间可私信

Canonical Bot Chat 里有 message_agent;本机是异步 fire-and-forget,跨机器可由 Desktop relay 或 hermes peer 中转。

普通 CLI ≠ Bot 通信面

官方明确说普通 CLI session 不会获得 message_agent。把某个 Bot profile 开进 Herdr pane,并不会自动获得 Desktop 群聊的全部协调语义。

Delegation:像经理临时找三位外包分析员

子 Agent 从空白对话开始,不知道父 Agent 的聊天记录;父 Agent 必须把目标和上下文讲全。默认最多并行 3 个(可配置),每个有自己的终端 session,最后只有结构化总结进入父上下文。优点是快、隔离;缺点是失败后不具备 Kanban 那种持久恢复和人类中途接管。

Kanban:像有台账的跨班组工单系统

任务、依赖、评论、状态、worker 身份和交接都写入 ~/.hermes/kanban.db。评论是 Agent 间的正式交接协议;worker 每次重启会读到完整评论。它能用 scratch、指定目录或 Git worktree 工作,并通过 heartbeat、claim TTL、失败计数和 review 状态避免任务悄悄丢失。

与 Herdr 组合时最容易踩的坑:Hermes Kanban 自带 dispatcher,会直接启动 worker OS 进程;Herdr 也能启动 pane 里的 Agent。不要让两个系统同时“拥有”同一个 worker 的启动/停止。若想让 Kanban worker 全部可视化在 Herdr pane,需写明确的 dispatcher/adapter,而不是只开两个开关。
04 / Local CLI

Hermes 到底怎么管理本地 CLI

答案分三层:Hermes 能运行 shell 命令;能把 Codex 的 app-server 当内部 runtime;也能导入 Claude/Codex 配置。但这三件事都不等于“像 Herdr 一样持久管理多个全屏 CLI 窗口”。

A

Terminal backend

Hermes 的 terminal/file/code 工具可在 local、Docker、SSH、Modal、Daytona、Vercel Sandbox、Singularity 中执行。它关心“命令在哪里跑”。

B

Codex app-server

可选地把 OpenAI/Codex turn 交给 codex app-server。Codex 自己负责 shell、patch、sandbox、MCP;Hermes 包住 session、gateway 和 UI。

C

Import setup

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、插件或相关 paneHerdr 本身不是完整网页浏览器;它管理承载工具的终端
让长期角色互相消息、记忆、定时工作Bot Mode / Profiles / Kanban不提供角色记忆Hermes 负责
检测某个 CLI 正在等待批准自己的 Agent loop 能处理自己可检测 pane occupant 的 blocked UI外部 CLI 用 Herdr
把 Claude/Codex 旧配置搬给 Hermesimport-agent无关--dry-run,凭证手动配置
Codex app-server runtime 的关键限制
它不是“在 Herdr 里开一个 Codex TUI”。Hermes 把 turn 交给 Codex app-server 子进程,并桥接事件。此 runtime 下,Hermes 的 delegate_taskmemorysession_searchtodo 不可直接在主 turn 使用;Kanban 可通过 callback 工作。要用临时子 Agent 时需回到默认 runtime。它还会管理 ~/.codex/config.toml 中标记区块,区块内自定义内容会在迁移时被覆盖。
Profile 是否能隔离 Claude/Codex 登录?
默认不能完全隔离。Hermes profile 隔离的是 HERMES_HOME,但 host 上外部 CLI 默认仍使用真实 HOME,所以 git/ssh/gh/Claude/Codex 通常共享同一套用户级凭证。需要独立身份时用 terminal.home_mode: profile,并在每个 profile home 里重新初始化相关登录;Codex app-server 还可为每个 profile 指定独立 CODEX_HOME
05 / Recommended architecture

Hermes 和 Herdr 怎么协作

推荐把“谁决定任务”和“谁拥有终端”写死,不要让两个系统互相猜。下面是最清晰、最容易排错的责任链。

从 Hermes Desktop / Telegram / CLI 提目标,做审批和业务判断。
Hermes Lead
拆任务、选 Codex/Claude/Hermes specialist、准备完整 prompt、决定验收标准。
Herdr skill
通过 Herdr CLI / socket 创建布局、启动 Agent、prompt、wait、read、explain。
Herdr Server
持有真实 panes 和 CLI 进程;检测 working / blocked / done;客户端离开后继续运行。
Specialists
Codex / Claude Code / Gemini / Hermes 等在独立 pane 或 Git worktree 中做具体工作。
结果回路
Herdr wait/read → Hermes 验证证据与冲突 → 给你一份合并后的结论。

现成就能做的连接

① Herdr 识别 Hermes

herdr agent start lead --kind hermes --pane <id> 可在已有空闲 shell pane 中启动 Hermes。Herdr 用 screen manifest 判断其状态。

② 保存 Hermes session

herdr integration install hermes 写入 Hermes plugin 并启用它;重启 Hermes 后可报告 session id,Server 重启时用 hermes --resume <id>

③ Hermes 反控 Herdr

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 的文件,再验证该文件。

建议的四条治理规则

  • 单一写作者:同一 checkout 同一时间只允许一个 Agent 改;并行写用独立 Git worktree。
  • 单一进程所有者:一个 worker 要么由 Herdr 启动/停止,要么由 Hermes Kanban dispatcher 管,不要双重管理。
  • 阻塞必须由人看:Herdr 识别 blocked 后只读屏;不要让总管自动按 Enter 同意未知权限。
  • 交接靠证据:输出 changed files、测试命令、退出码、未覆盖风险和产物路径;终端最后一句“done”不算验收。
06 / Daily operations

每天真正用的三招

这两篇社区文章最值得留下的不是“多开几个窗口”,而是一条能每天重复的管理闭环:先把任务交清楚,再把成功方法固化,最后只在真正需要你时汇报。

TRICK 1

派工:一次完整闭环

Hermes 选定一个结果,Herdr 提供工位和生命周期,Worker 执行。Captain 等待状态变化,检查真实产物和验收命令,再向你汇报。

TRICK 2

学习:验收后才固化

只有已通过验收、以后还会重复的流程,才整理成候选 Hermes Skill。先审查权限和边界,再安装并重跑一次;失败的终端过程不是知识。

TRICK 3

巡检:只读一条摘要

herdr status/list/read 汇总每个 Agent 的状态、任务、最近进展和需要。观察时不按键、不发 prompt、不重启、不关闭。

Captain 和 Worker 的最小合约

Captain 是唯一和你对话的人,负责结果、选择 Worker、监督、验收和最终报告;Herdr 启动的 CLI 是 Worker,只做一个有边界、能独立验收的交付物。

role=worker; outcome=<最终要交付什么>
scope=<允许修改的路径;其他只读>
constraints=<不能做什么、哪些外部动作需批准>
accept=<验收命令或可观察结果>
return=done|blocked; paths=<产物>; checks=<检查>; blocker=<原因>; stop
  • 先走最短路径:一个很小、紧密的交付物直接做;长任务、独立交付物、专业 CLI 或真正可并行的工作才值得用 Herdr。
  • 默认一个 Worker:只有依赖已满足,而且文件、接口和运行资源互不冲突时才并行。
  • 一个交付物一条通道:Worker 不继续派 Worker,也不顺手清理任务外内容。
  • 回执不是证明:Captain 仍要检查实际 diff、产物和验收命令。
停止条件:最多发送一次包含“具体失败检查”的修正。同一种失败出现两次、连续两轮没有进展,或十分钟没有产生实质产物,就停止并报告;不要自动换另一个模型把已做工作重放一遍。

只读的 Flock Check

巡检的目标是减少你在终端之间切换,而不是偷偷替你操作。先读 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
字段应该回答什么不能怎么猜
Statusworkingidleblockedunknown不能只凭窗口标题或旧输出说“正在工作”
Task当前或最近一次任务,一句话上下文不足就明确写“不足”,不能编身份
Progress最后一个可观察的产物、命令结果或里程碑不能只写“取得进展”
Needs无、需要任务、用户决定、审批、重启、依赖或额度输入框里暂存的文字不等于已经提交运行
隐私边界:终端内容可能含代码、token、私信或个人路径。摘要应脱敏;巡检本身不得聚焦 pane、发送按键、提交 prompt、启动/停止 Agent 或关闭 Workspace。定时 cron 也只能做同样的只读检查。

到底应该选择哪一层?

你的真实需求优先选择为什么
同时看见、保留和控制多个终端Herdr它拥有 pane、PTY、进程和状态汇总
让 Hermes HQ 管几个本地 CLI WorkerHermes + HerdrHermes 决策,Herdr 执行和观察
用一条消息知道谁卡住、谁需要你只读 flock-check把状态和最近证据压缩成管理摘要
任务跨重启、依赖、重试和人工审批Hermes Kanban业务状态要进入持久任务台账,而不是只留在终端
工程团队需要 worktree、PR 和事件驱动监督评估 Firstmate它是更完整的外部 Agent 团队发行包;当前 Herdr backend 仍标为实验性

文章说法与当前实现:五个校正

持久化不等于电脑睡着还工作

关闭 Herdr 客户端或 SSH 后 server 可继续;本地电脑睡眠或关机则不会。无人值守必须保持唤醒或使用远程常开主机。

Hermes integration 不上报完整生命周期

它主要上报可恢复的原生 session identity;Hermes 的 idle/working/blocked 当前仍由 screen manifest 判断。

Herdr 管承载浏览器的工位

浏览器 CLI、插件或浏览器工具可以出现在 Herdr pane;Herdr 自己不是一款完整网页浏览器。

“学习”必须经过验收闸门

正确顺序是:验收通过 → 提取候选 Skill → 审查权限和可复用边界 → 安装 → 重跑。不能把一次失败记录自动变成长期规则。

模型排行榜属于个人经验

模型能力、额度和价格会变。路由应根据当前可用性、成本和同一验收标准的真实结果,而不是永久复制作者排序。

共享规则不等于照搬全局软链接

可以保留一份统一 Captain 合约,但 CLI 命令以当前版本 herdr --skill 为准。文章关联仓库已把旧方案标为实验,并指向 Firstmate。

07 / Herdr API dictionary

Herdr 重要 API 全解读

Herdr CLI 是对本地 socket API 的友好包装。正式自动化优先用 CLI;需要长期事件订阅、或某方法 CLI 没暴露时再直接连 NDJSON socket。下面清单来自本机 Herdr v0.8.2 的 herdr api schema --json

正确的同步模型:首次连接先调用 session.snapshot 得到全量状态;然后 events.subscribe 接增量事件。断线、事件落后或版本不一致时,重新 snapshot,而不是凭旧缓存补猜。
Socket 在哪里?一条请求长什么样?

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 为权威。

08 / Hermes interfaces

Hermes 的接口地图

Hermes 不是只有一个 API。你要先判断调用者是谁:人、Hermes 内部模型、远端程序,还是另一个 Agent。

接口面给谁用关键接口 / 命令与 Herdr 的关系
CLI / TUI人和 shell 脚本hermes chat-p--resume-w、slash commands可作为 Herdr pane occupant;最直观
Profiles / Bot长期角色hermes profile create/list/showmessage_agent、groups、routines提供身份/记忆,不负责 pane 布局
Delegation toolsHermes 模型delegate_task(goal, context) 或 batch临时子 Agent 自有 terminal session,但不是 Herdr pane
Kanban tools / CLI模型、人、cron、脚本kanban_show/create/link/comment/complete/blockhermes kanban ...可做业务台账;直接接管 Herdr worker 需 adapter
OpenAI-compatible APIWeb UI、CI、外部控制器POST /v1/chat/completions/v1/responsesGET /v1/models外部系统调用 Hermes 的入口,不控制 Herdr
Runs API长任务控制器POST /v1/runs,status/events/approval/steer/stop可作为上层 control plane;需自己把 Herdr tool 接进 Hermes
A2A另一个独立 Agenta2a_discover/call/list/history/orchestrate;Agent Card + JSON-RPC适合跨机器/框架,不替代本机 pane socket
Peer另一台 Hermes Gatewayhermes peer dm/run/status/stop跨机器 Bot 通信;网络和 API key 另管
最重要的 Hermes HTTP endpoints
  • 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。

09 / Rollout

最稳妥的实施顺序

先让信息流跑通,再逐步开放写权限。这样某个状态误判最多导致“没自动继续”,而不是误批危险命令。

DAY 0

建立官方集成

确认 Hermes 已存在;安装 herdr integration install hermes;重启 Hermes;用 herdr integration status 检查版本。只验证 session identity 和 resume。

PHASE 1

只读观察

给 Hermes lead 安装 release-matched Herdr skill,但只允许 status/list/get/read/explain/wait。连续做几次人工对照,确认 blocked/done 分类可信。

PHASE 2

受控派工

开放 pane splitagent startagent prompt。每次任务必须有 task id、workspace/worktree、acceptance、timeout 和产物路径。

PHASE 3

人工审批回路

blocked 时 Hermes 只转述 UI 和建议,不自动 send-keys enter。由你在 Desktop/Telegram 批准后再发明确键。

PHASE 4

只读巡检与受控学习

先手动运行 flock check,确认摘要没有把历史当实时;稳定后才能加 cron。只有验收通过且重复出现的流程,才进入 Skill 候选、人工审查和复测。

LATER

需要时再接 Kanban

若工作跨重启、角色、review、重试,再把业务状态放 Kanban。先决定:保留原 dispatcher,还是做 Herdr-backed worker adapter;不要模糊共管。

10 / Reading order

如果要让两者协作,还要读哪些文档

按这个顺序读,不需要一开始吞完整站点。前 6 篇足够搭出安全的第一版。

第一组:必须读

第二组:要做自动化再读

11 / Evidence & limits

依据、推断与尚未做的事

事实

层级、API 方法、状态含义、Bot/Delegation/Kanban/A2A 行为来自 2026-09-01 读取的官方文档;Herdr 方法清单还与本机 v0.8.2 schema 对照。社区工作流在 2026-09-02 再次核对公开仓库。

推断

“Hermes 当经理、Herdr 当运行层”是基于两者能力边界的架构判断,不是两家官方发布的一键集成产品。

建议

分阶段开放 Herdr 写操作、单一 worker 所有者、统一交接证据,是本报告给你的治理方案。

本报告没有替你修改 Hermes/Herdr 配置,也没有启动或停止现有 Agent。它是一份研究和实施蓝图。安装 integration、skill 或 adapter 前,应该先查看你当前运行中的 Herdr session、Hermes profile 和 Gateway 状态。

主要官方来源

社区运行手册与当前实现