跳转到内容

herdr:给 agent 专用的会话壳

这一页是 Ling 9 月 14 日问到的 herdr 的研究结果,也是给克老师、阿匠、管管的提案件。一句话:herdr 是给 coding agent 专用的 tmux 替代品,它把第 3 课"载体与调度"那一格从自己造变成买现成,并顺手给了第 8 课要的"谁卡了"信号。它不碰通信、真源、能力层、控制面。

十分钟。事实来自 GitHub API 与仓库 README(2026-09-14 读),Apache-2.0;周边仓库按星数列。本页只提案不决定:spike 由本席做,归口三位各管一段,换不换 Ling 拍。

先记三样
  • 位置:产品形基础设施,商品级,正在快速演化(3 月建,日更);和 tmux 同槽,不是 agent。
  • 抄与不抄:用它的会话壳、窗格状态信号、按需开窗格、多机一窗;不用它的窗格互喊当集团通信,不靠它恢复进程,不一次全换。
  • 一个数:三态(工作中、卡住、空闲)。一条令:"先一席一机出四个数,再谈换。"
  • 一个 Rust 单文件的终端多路复用器,自称“你的 coding agent 住的运行时”。3.8 万星,2026-03-27 建,9 月 14 日仍在推,Apache-2.0,brew install herdr。
  • 断连不停:客户端关掉或 SSH 断了,后台服务端继续跑;机器重启后恢复布局,可 resume 受支持的 agent 会话,但原进程不会活过来。
  • 多机一窗:本机加保存的 SSH 机器合成一个窗口,一张合并的 agent 列表,各机独立重连。
  • 每个窗格标着工作中、卡住等回答、空闲;agent 停下来要人答时它会说。
  • agent 原生:agent 通过命令行和 socket 接口开窗格、互相下提示、等另一个 agent 真卡住再动。
  • 跑你已有的东西:Claude Code、Codex、Cursor、OpenCode、Grok 都能跑,它不包装也不替代,只接管终端。
  • 键盘和鼠标都是一等公民;插件市场。
仓做什么对我们
AltanS/collie(963 星)手机端 PWA 管 herdr,走 tailnet,推送通知,快捷动作我们的 Tailscale 正好;Ling 手机看谁卡了
furkankly/zoetrope(861 星)把 Claude Code 或 Codex 会话画成实时流程图读面候选
persiyanov/herdr-reviewr(695 星)代码评审侧栏,评论 diff 直接回给 agent异构验收的界面
missuo/herdrm(686 星,无许可证)macOS 原生控制台,跨设备看所有 agent 终端无许可证,不用
alexei-led/ccgram(265 星)Telegram 与 tmux/herdr 的桥,支持 Claude Code、Codex、Pi和我们的 Telegram 插件同槽,只看不换
levi-qiao/herdr-agent-quota(113 星)按凭证分的额度、上下文、缓存表,覆盖 Claude、Codex、Grok 等第 13 课额度余量的读数来源候选
joelhooks/herdr-pings(9 星)窗格里 agent 的 turn 级唤醒事件、崩溃桥看门狗从"进程在不在"到"任务在不在动"的现成件
  • 它填哪一格:七件事里的载体与调度。第 3 课说 tmux 只是会话壳,herdr 就是会话壳的 agent 专用版。它另外给了观测那格一个信号:窗格三态,就是第 8 课静默失败要的“任务在不在动”。
  • 它不填哪几格:通信(义务、回执仍走站内信)、真源与状态(结果仍回写事件日志和对象)、能力层、控制面。窗格互喊只能当“拉起、催醒、看谁卡了”,不能当集团通信,否则回执和真源丢失(第 2、10 课)。
  • 它让哪件事变成必须:载体契约要写成机器能校验的清单(环境变量、钥匙、hooks、Telegram 状态目录),因为窗格是从配置里拉起来的;配置不全就是“进程在了、Telegram 没连上”那种事故。这和第 9 课 RSIH 的 Genome 是同一件事:席位配置成为一个可复制、可校验的目录。
  • 和 Ling 想要的形状:每个核心席、常驻席带一个这样的载体,领头席按需开执行窗格、派活、收结果回写对象,其他核心席从对象里读。这和第 10 课野生样本的领头 agent 加临时执行体一模一样。两条不改:执行体随叫随到不养常驻群(136 号偏航四号);按信号爬坡地铺,先一席一机(第 12 课)。

我们的远程链四层:Tailscale 网络、SSH 加 kc 认证、会话壳、Claude Code。herdr 只换第三层。要验三点:服务端必须在图形登录域启动(否则钥匙串不可用,和 sshd 拉起 tmux 的坑相同);每个窗格的启动配置带载体契约;Termius 那条 fresh attach 从 tmux 改成 herdr。

两个 spike(本席做,不动现有席)

Section titled “两个 spike(本席做,不动现有席)”
  1. herdr 换壳:LG01 一席,在 herdr 窗格里按我们的契约拉起。四个数:断连重连是否续跑;机器重启后 resume 是否接上同一会话;从席里开三个执行窗格派活、收结果、回写站内信的往返时间;多机一窗接第二台机是否走通 Tailscale。产出一张“tmux 依赖对照表”(心跳探针、重拉脚本、send-keys、状态栏各对应 herdr 的什么)。钉版本,替身 tmux,退出日一个月。
  2. pi 作轻量执行体:pi 支持订阅登录(Claude Pro/Max、ChatGPT Plus/Pro、Copilot、Kimi)。同一票在 pi 和 Claude Code 各跑一遍,比重读量、时间、结果层。前提两个:裁“同一件事一个答案”(载体现在只有 Claude Code);核第三方 harness 用 Claude 订阅登录的官方政策,不让整队订阅冒险。
  • 管管(网络可达性与恢复):远程链、Termius 与 kc、“稳定找人工作流 v1.0”里 attach 那一行。
  • 阿匠(身份与能力供应链,载体维护 owner):载体契约、hooks、Telegram 环境变量;RSIH 与周榜五件的裁决已在他手里。
  • 克老师(战略与系统合成):登进 P1 中轴的 R12 原生载体与放置,9 月 25 日复审一起看。集团目录查“载体换壳、迁席”当前无承接职责,即 136 号中轴核心那格待坐人。
  • Ling:只拍“换不换”,在 spike 出数之后。
  • 项目六个月大、日更,接口会变:钉版本、拔除演练。
  • 不恢复进程:看门狗、心跳、载体契约仍是我们自己的。
  • 同一账号额度同一份:窗格再多也按第 12、13 课的档位和余量算。
  • herdrm 无许可证不用;ccgram 与我们 Telegram 插件同槽不换。

README 与周边清单存集团记录 records/aios-course/gh-top5-20260913/herdrdev__herdr.README.md 与 records/aios-course/herdr-research-20260915.md。提案身份:本席研究,非裁决。