作者用 Herdr 在常驻 Linux 虚拟机上,先后结合 Claude Code 和使用 GitHub Copilot 订阅的 Pi,复现具名 Agent 持续协作的体验。该流程强调项目记忆与群聊协作,作者未声称准确率提升,并承认会放大部分失败模式。
第一次体验 Grok Bot 时,持久运行的 Agent 和 Agent 团队真正引起了我的兴趣。Grok Bot 对外的定位是全天在线的 AI 队友,每个都有自己的云端计算机。我把这些持久运行的 Bot 拉进群聊,组成软件团队,再在侧边栏里把它们整理成独立的小组。这样一来,你不用每接一个任务就新开一次聊天,而是与有名字的同伴一起工作:它们了解项目,记得之前的讨论,还会在共同的对话流程中相互交流。免费额度用完后,我在一台全天在线的 Linux VM 上,用 Herdr 重建了这套配置:先用 Claude Code,后来又换成 Pi,接入我的 GitHub Copilot 订阅。它能比标准的单任务会话带来更高的准确率吗?大概不能。但我是不是更喜欢这种工作方式,哪怕它也会放大一些失败模式?绝对是!

Grok Bot 变成了 Grok 团队
在典型的 Claude Code 工作流里,一个“Agent”其实只是一个会话:为某项任务创建的一段对话或线程,用完即弃,最后留下一堆你再也不会打开的标签页。另一种含义是静态定义文件,里面写着 system prompt、允许使用的工具,以及指定的模型,本质上还是一份用来启动另一个全新对话线程的配置。如今大多数 Agent 都只是对话线程,并不是持续存在的实体。
Grok Bot 并没有专门把自己宣传成“持久运行的工程团队”框架。它的核心卖点是全天在线的 Bot:拥有自己的云端 Linux 计算机、浏览器和终端,即使你的笔记本电脑合上了,它们也能继续全天候工作。真正吸引我的,是把这些持久运行的 Bot 按角色组织起来,在群聊里组成团队,再在侧边栏中把每个团队单独分组。

从体验上说,这就像在和一群有名字、有记忆的同伴交谈,你真的会记住谁是谁。这些 Agent 了解项目,会与你、也会彼此并肩工作,很像一个相处融洽的人类小团队。你可以把它们拉进群聊,讨论想法,提出异议,看着它们一边推进工作,一边相互交流。时间久了,团队里的 Agent 也会逐渐熟悉代码库。
你和 PdM Agent 的一次讨论,自然而然就变成了一张待办工单,群聊里收到通知,Dev 和 QA Agent 接棒处理,30 分钟后,一个新的 GitHub release 就发布了。你还可以打开手机 App,看到同样的聊天记录,让它们做点什么,再验证已经部署的结果,全程都不用碰笔记本电脑。
这种感觉让人耳目一新。那些“AI 工厂”的说法透着一股柴油朋克味,而繁重的规格驱动流程又明显带着瀑布开发的影子。我一直缺少的,是这种接近人与人协作、以敏捷方式和 Agent 团队互动的体验。它的结果比传统的单任务 Claude Code 会话更好吗?大概没有,准确率基本相当。但我是不是更喜欢它?绝对是!
它还有一个实际好处:常驻远程机器的团队可以照看长时间运行的任务。Agent 可以启动异步 bash 任务,通过隐式循环监控外部事件或耗时较长的测试套件,并在某个步骤完成或出错时相互通知,而不用我一直守着笔记本电脑上的终端。
我猜,从底层来看,是下面四件事凑到了一起,才让这种体验在今天成为可能:
我的 Cursor/Grok Bot 试用最终还是结束了。按我的估算,如果按量计费,高强度使用 Grok 一周可能要花大约 2,000 美元。我通常是谁家还有 token 就迁到谁家,所以先换到了 Claude Code,随后又开始寻找一种办法,让同样的配置用上我的 GitHub Copilot 订阅。
Claude Code 和 Copilot 的工具都无法开箱即用地提供 Grok Bot 那样的体验,于是我在自己的 VM 上重建了一套接近的方案。
思路很简单。你不用每遇到一件杂事就新开聊天,而是在同一个仓库里,保留一小组有名字、持续运行的会话。比如,一位负责人兼协调者(r&d),一位负责研究方案和边界情况的成员(researcher),一位负责实现的成员(dev),再加上一位速度快、成本低、处理小任务的成员(haiku 或 luna)。
假设你想给一个 API 客户端增加请求重试功能,同时又不想让非幂等写入变得不安全。在普通工作流里,你会在一个标签页里做调研,把结论复制到第二个标签页里写规格,再打开第三个标签页写代码。有了持久运行的团队,你只需把想法告诉负责人 Agent,让它和其他成员一起解决:
和 researcher 确认哪些端点可以安全重试,商定一个小规模的首批实现范围,再让 dev 完成实现。
接下来,Agent 就会开始异步交流。researcher 检查代码库,指出没有幂等键的 POST 请求不应该自动重试,然后把结论发回来。负责人把结论整理成具体任务,通知 dev。dev 编写代码、运行测试,再汇报结果。如果你想中途调整方向,直接加入聊天就行。大家还保留着当天早些时候的上下文;等某个对话线程终于变长了,它就会压缩上下文,继续运行。
要在自己的机器上搭建这套环境,需要三个组成部分:
按照 Herdr 的安装指南在 VM 上安装,然后从笔记本电脑连接:
ssh your-host
cd ~/your-repo
herdr
如果本地也安装了 Herdr,还可以直接连接:
herdr --remote your-host
首次启动时,Herdr 会提示你启用 Claude Code 和 Pi 的 Agent 集成。之后也可以随时在 Herdr TUI 中单独开启或关闭某项集成。启用后,Herdr 就能显示实时状态圆点,并在服务器重启后恢复已保存的 Agent 对话。
在 VM 上运行 Herdr 后,配置 Claude Code 团队只需要几分钟:
## Teams
- Claude Code sessions: read `TEAM_CLAUDE.md`.
- Pi sessions: read `TEAM_PI.md`.
Claude Code 内置了跨会话消息功能:ListAgents 和 SendMessage,可以通过 /list-agents 查看。在聊天中直接按名字提到其他 Agent,比如 @researcher、@dev,它们就会开始相互交流。下一个任务也不要再新建 Claude 会话。每个 Agent 迟早都会触发上下文压缩,而这件事通常不需要你操心。
既然 Claude Code 已经能用,为什么还要引入 Pi?
因为我有 GitHub Copilot 订阅,而且就目前而言,Copilot 是对我最划算的推理服务提供方:一个平台就能使用多种模型,包括 Sol、Luna、Astra、Claude 和 GPT。Copilot 订阅还提供 GitHub Copilot CLI 和 OpenAI Codex 的访问权限,所以我先检查了这两个工具。但 Copilot CLI 和 Codex 都缺少这套工作流所需的关键功能:有名字、长期运行的同伴会话之间的异步通信。
Pi 同时解决了这两方面的问题:
pi install npm:pi-intercom
在构建评测运行器、通过基准测试实验开展研究的过程中,我把 Pi 配置扩展成了一个 6 人 Agent 团队,放进独立的 pi/<repo> Herdr 工作区里,并增加了专职 QA Agent,以及负责质疑假设的 Oracle:
在 Pi 中,输入 /intercom,或按 Alt+M,就能打开同伴浮层面板;Agent 则直接调用 intercom 工具:
intercom({
action: "send",
to: "pi/qa",
message: "Verify the acceptance criteria on the runner and send pi/dev any repro steps."
})
在 TEAM_PI.md 中,我要求它们在普通异步交接时使用 action: "send",回复时也重新发送一条 send;只有遇到必须等待答案才能继续的问题,才使用同步的 ask。
这里我想说得现实一些。持久运行的 Agent 团队不会神奇地让底层模型变聪明。传统的每个任务开一个对话线程的工作流,大概率也能给出相同的代码质量和准确率。变化的是人类操作者的体验,以及你可以把长时间运行的任务和监控循环交给团队照看的能力。
与此同时,赋予 Agent 团队自主权和异步消息能力,也会放大某些失败模式,尤其是围绕凭空捏造的目标上演的一场场表演。前段时间,我整理过一篇关于“幻觉之外的 AI Agent 失败模式”的文章。一个周末观察 Pi 团队工作的经历,让其中好几种失败模式都得到了淋漓尽致的展示:
那场通宵的工程表演结束后,我让 pi/r&d 和 pi/oracle 坐下来做了一次复盘,并把明确的范围约束写进 TEAM_PI.md:默认每个任务只设一位交付负责人;不要因为某个角色存在,就把它也叫来参与;绝不要把“运行一个现成 CLI”变成一项必须先完成的工程项目。
我的体会是:持久运行的团队是一种强大的工作流,但不是银弹。要把它用好,需要你亲自实验、不断调整;当团队开始给自己凭空制造工作时,偶尔还得用全大写字母大声叫停。
为了让团队能通过一条命令启动,我整理了四个小文件,你可以拿来放到项目根目录:
在 Herdr 的 shell 标签页中运行:
bash claude-team.sh
# or on a dedicated VM where you want to skip permission prompts:
CLAUDE_SKIP_PERMISSIONS=1 bash claude-team.sh
bash pi-team.sh
如果某个角色的标签页已经存在,脚本就不会改动它,因此不会覆盖正在进行的对话。启动它们,试着调整角色,享受和团队一起工作的乐趣吧 :)
如果还想采取进一步措施,可以考虑屏蔽此人和/或举报滥用行为。