Herdr 的自我介绍里有一句话很吸睛:"每一处界面都是你 agent 能改的文件。"
它是一个给 coding agent 用的原生宿主——Claude Code、Codex、以及任何在终端里跑的 agent 都能住进去。想法是反过来的:不是让你去学一套新的 IDE 布局,而是把整个界面做成纯文本文件,你要什么形状,让 agent 自己改。

具体做法简单到有点粗暴。~/.config/herdr-app 下面就是全部:
AGENTS.md告诉 agent 它能改什么settings.json存字体主题音效keys.json是键位layouts/放布局mods/放模块themes/放主题。
没有插件系统,没有要维护的 fork,你要什么直接说,它改文件。
官方给的那个例子就是整件事的缩影——你说"给每个标签页加个计时器,显示它的 agent 干了多久",agent 就去改 mods/tabs/main.js,回来告诉你"加了 6 行删了 1 行,搞定"。
比界面更能说明设计取向的是架构:agent 不住在窗口里。它们跑在本机的一个小服务 herdr-core 上,所以你退出应用、更新、甚至让它崩掉,每个终端都还在原来的地方。这条直接解决了现在最烦的一个问题——本地 agent 干到一半你把窗口关了,进度就没了。


另外几个能力也围着这个转。agent 可以自己起 agent:一个 agent 把活交给帮手,然后继续干;帮手干完,报告会直接落进它的输入。"不用在窗口之间复制粘贴,herdr-core 负责传消息。"命令长这样:hc run --bg codex "review my diff. Done: hc send t1",帮手的报告、退出、"需要你"都进到主 agent 的输入里,而人只需要看结果。
状态可见性也做了:每个 agent 主动报告自己是"在干活、干完了、还是在等你"。侧边栏和标签页上能看出哪个需要你,其余的保持安静。"你可以不用一直去查了。"
跨机器也打通了。笔记本、服务器、VM、云沙箱,只要能 SSH 就连进来,它们的空间和 agent 会出现在同一个侧边栏里,按机器名分组。本机休眠或者应用关掉,那边的 agent 继续跑。
它还定义了一个很小的协议叫 OSC 7501(Program Status Protocol),一行转义序列就能让你的脚本变成一个"会报状态的 agent":printf '\e]7501;state=blocked:app=my-agent\e\\'。这个选择挺聪明——不要求 agent 改代码适配,只是往终端里吐一个标准序列。
开源部分:应用、herdr-core、Herdr TUI 三个仓库都是 Apache 2.0。
有个容易搞混的点官方自己澄清了:Herdr TUI 是最早那个 Herdr(带自己 server 的终端应用),现在这个是建立在 herdr-core 上的独立新程序,两者不共享 agent,一个里跑的不会出现在另一个里。TUI 版本继续维护。

这件事的看点在思路上。现在做 agent IDE 的有两条路:一条是给 agent 造更好的工具(Monaco 编辑器、git worktree 隔离、可视化 diff),一条是给 agent 造更好的容器。Herdr 走的是第三条——把宿主本身变成 agent 的产出物。界面不是产品,是你和 agent 之间的一个可协商对象。
能不能成取决于一个现实问题:大多数人其实不知道自己想要什么布局。让你"直接说",回答往往是"默认的就挺好"。这套设计的真正用户,可能是那些已经被现有 IDE 的固定形状卡住很久、且清楚知道要改哪的人。
参考来源