X 精选 · 2026-11-02
一个 agent 同时干很多活,靠的是系统结构
今天只推两条。DeepSeek Harness 团队写了一篇长文,讲怎么把 agent 从「一个会话一件事」改成一个一直在线、同时推进很多任务的整体,还开源了原型。另一条是 Patrick Collison 给自己的小应用都加了一个「改进」输入框,用户写一句,agent 直接实现,David Cramer 接着说 Sentry 在试让 agent 自己提交反馈。
DeepSeek 那篇最值得细读。它把系统拆成只管对接人和派活的 Router 层、各管一件事的 Worker 层,用事件驱动代替人敲提示词,外面再挂一个独立的 Watchdog 判断每个 Worker 有没有实质进展。实验里最有说服力的一组:单会话加「该委派就委派」的提示词,5 次里一次都没委派;改成「优先委派」的提示词,5 次里委派了 4 次;结构上就不让 Router 干活的版本,p95 完成时间 15.7 分钟,前者是 29.5 分钟。第二条是一个产品形态的问题:用户提的改进直接变成代码,这和你的点子墙、回答反馈是同一条链路的两头。
01DeepSeek 的 Super-agent:Router 不干活,Worker 只管一件事
原文是 DeepSeek Harness 团队(@DeepSeekHarness,约 4.6 万粉)的 X 长文《Exploring Super-agent Design: Towards a More Autonomous Agent System》,作者是 Yujia Qiao,11-01 发出,7768 赞、7400 收藏、85 万浏览。omarsar0(约 32.7 万粉)转发时说这是他读过最贴近自己带 agent 团队方式的文章,那条转发本身有 865 收藏;badlogicgames(Mario Zechner,Pi 的作者)说内容和他们在 earendil 的方向基本一致。整篇讲的是:单个任务现在受限于模型能力,但同时跑多个任务受限于人的注意力,一个人通常只能盯 3 到 5 个活跃会话,所以要让系统而不是人去管理会话。文章按顺序讲了两层架构、事件驱动、全双工多渠道交互、计算和状态和执行环境分离、Watchdog、实验和未解决的问题,最后附了开源原型 dsh-superagent-prototype。
问题从哪来。现在主流的 agent 以单个会话为工作单位,会话之间互相隔离。给本地单会话 agent 接上 CLI、MCP 和各种连接器,它能收到外部消息,但还是同步跑在一个会话里:长操作会卡住对话,不同任务的上下文混在一起,本机一离线就全停。他们想要的东西有四个特征:用户在 IM 和 GitHub 评论里跟它说话,始终觉得是同一个 agent;能同时推进几件复杂的事,上一件没完就能接下一条指令;不等人一步步吩咐,盯着环境里的事件自己动手,没事就不出声;一直在线,出了异常能自己恢复。文章的判断是,任何单个 ReAct 循环都给不了这四样,只能靠外面的系统结构。
两层架构。所有事件都进一个会话,上下文最连续,但 ReAct 一次走一步,吞吐低,不同任务的中间细节还会搅在一起;每个事件开一个新会话,吞吐上去了,结果却彼此脱节,好几个会话分别回复用户也很乱。他们的解法是拆成两层。Router 层是一个长期存活的会话,接收所有入口的人类消息,是全局的顺序点、协调点和记忆,但它不执行任务,连 Bash 工具都可以没有,只负责和人对话、派活、记住任务之间的关系。文章特意和常见的 Agent Team 做了区分:Team Lead 要把一个复杂任务拆细、协调成员,推理负担很重;Router 不拆单个任务,所以活比想象中简单,用较轻的模型就够快也够好。Worker 层每个会话只做一件事,上下文隔离、工具齐全,用最强的模型,从不直接对人说话,只向 Router 汇报。几个 Worker 碰到同一个 PR 时,它们都订阅这个 PR 的事件流,自己就能看到对方在干什么、自己解决冲突,少数需要跨任务协调的事才由 Router 转达。
事件驱动,分快慢两条路。agent 的输入不再是人敲的提示词,而是群消息、邮件、日历提醒、评审评论、CI 结果这类事件,文章叫 Trigger。真实群聊里绝大多数消息不需要 agent 管,所以先走代码做的快路径:按来源、群、用户或 bot 白名单判断,每个来源可以设成「只回应明确请求」「当作候选」或「忽略」。过了这一关的候选事件才交给模型,按写成提示词的策略决定要不要动手,这一层也是人随时用自然语言加减规则的地方。路由同样分快慢:Router 第一次为某个 PR、IM 话题或邮件串派出 Worker 后,这个 Worker 直接订阅这条线程,之后的事件由代码直接递给它,Router 只处理还没人订阅的新事件。
上下文当缓存用。注入太多,窗口被塞满,注意力被稀释;注入太少,模型要反复调工具去读。他们借编译器的说法分两种操作:Inline 是把马上可能用到的信息直接放进窗口,Spill 是把太长或少用的内容留在窗口外,只放一个引用或摘要。具体顺序是先只给当前对象的 ID 和摘要,再按时间和空间上的相邻关系补一点,比如前 50 个字、这条 IM 消息的前后几条和它回复的那条、同一段代码评审里相邻的评论,超长的截断并留下「后面在哪」的指针。Router 的老任务记不住全部历史,就给 Trigger、线程、Worker 会话都编上唯一 ID,注入时带上相关对象的 ID,模型可以顺着 ID 一跳一跳往回查,他们叫 Chain of Recall。还有一条是借 CPU 的推测执行:他们内部的用户群配了「静默复现并修复」策略,有人报问题或讨论改动时,agent 先在后台试着复现、找修法,只有确认了问题、也找到了简单修法才出声,否则全程不说话。
全双工和多渠道。耗时的命令和工具改成异步的 start() 和 stop(),start() 立刻返回「已开始」,结果回来时作为一条新事件送回会话,所以 agent 在后台跑长任务时也能马上回应新消息。开源原型里的具体做法是前台 shell 命令超过 5 秒就转成后台任务。不同渠道说话方式不同:IM 里尽量少打扰,只在需要决定或签字时找人,只问直接的问题,给简短结论,他们验证过一条简单有效的硬规则,每条回复不超过 100 个词;GitHub、邮件、文档这类异步渠道则要信息密集,PR 要写清背景、改动和验证结果。
计算、状态、执行环境三者分开,再加一个 Watchdog。跑 agent 循环的计算可以是无状态的云容器,会话等状态放数据库,容器随便重启替换,本机睡眠也不影响 agent 在线。执行环境往往有没提交的改动、私有凭证、内网依赖和特定工具链,很难同步到云上,所以干脆不搬:每台执行机器只跑一个不存状态的轻量守护进程,只负责执行命令、返回结果,用户自己的电脑也能接进来,离线时相关任务等它重新上线再继续。文章提到 Anthropic 的「Decoupling the brain from the hands」是同一思路,区别是 Anthropic 讲托管服务,他们先要接的是人每天用、时在时不在的个人电脑。最后,长期在线的系统只靠内部逻辑撑不久,需要主系统之外独立的控制循环。很多异常不是崩溃:进程还活着,但模型在原地打转或者偏离了目标。所以他们的 Watchdog 是一个由定时消息驱动的独立 agent 会话,既处理 API 报错、状态恢复失败这类基础设施问题,也用模型判断每个 Worker 有没有实质进展;维护者还能用自然语言问它为什么出错,让它在系统运行中改提示词或调整触发规则。
实验数字。他们用合成负载做了初步实验,文章自己也说结果只作参考。端到端实验每轮约 300 条群聊和 GitHub CI 消息,其中约 20 条是真正的工作请求,编码工作用一个只耗时间的工具模拟,四种设计各跑 5 次。Super-agent 从请求到结果 p50 12.4 分钟、p95 15.7 分钟。单会话加子 agent 工具、用中性提示词(「合适时用 subagent」)的版本,5 次里一次都没委派,所有活都在主会话里干、不断被新消息打断,p95 到了 29.5 分钟;换成「优先委派」的提示词,5 次里委派了 4 次,剩下那次模型觉得活「很小」自己干了,拖出一条长尾。去掉直达订阅的版本完成时间差不多,但 Router 每轮多做约 30% 的决策,缓存读取 token 从 2320 万涨到 3180 万,多了约 37%。Router 单独压测时,需要决策的事件从每分钟约 1 个加到约 40 个,平均每批从 1.0 个变成 2.8 个,单次请求只从 2.5 秒涨到 3.9 秒,摊到每个决策反而从 6.4 秒降到 1.6 秒,原因是一轮推理期间到达的事件会在下一轮被合并处理。
他们自己承认还没解决的。Router 什么时候该分片、Worker 之间什么时候该直接通信,还要更多场景验证;系统跑上几个月以后,长期记忆会成为主要瓶颈。会话对用户隐藏之后,任务该怎么展示给人、人怎么在中途插手,是新的产品问题,他们的实例直接在 GitHub Issue 和 PR 里工作。组织变大以后,开几个 Super-agent 实例等于决定哪些上下文共享、哪些隔离,实例之间就变成 agent 对 agent 通信。安全上,云端循环不断吃进外部事件,而执行机器上有私有代码和凭证,一次提示注入就可能波及所有接入的机器,所以 agent 需要一种「能用凭证但看不到凭证」的方式。
为什么有说服力。它没提出新理论,用的都是计算机系统里的老办法:快慢路径、订阅分发、缓存和溢出、推测执行、存算分离、外部控制循环。最有分量的是委派那组对照:同一个模型,靠提示词决定要不要委派,结果取决于它当时觉得活大还是小;把「Router 不执行任务」做成结构,这个不稳定就没了。这和你一直坚持的方向一致,规矩放在结构里,而不是靠提示词里多写一句。
和你现在的开发。11-01 的日报里有三件事几乎能一一对上。第一,#1468 连派三次 Claude 都没推新提交,Forge 的复盘是「下次先看会话卡在哪」,Tata 也写了「P1 PR 超过 2 小时没新提交就去问」,这正是文章里 Watchdog 判断 Worker 有没有实质进展的那一层,现在靠两个 bot 各自记着。第二,Mac mini 磁盘写满,同时拖垮了 CI runner 和主群,断了约 13.5 小时,Watch 的复盘写着 #317 之前 Mac mini 仍是单点;文章第 5 节的思路是只把执行环境留在那台机器上,循环和状态都不放在那里。第三,Watch 的巡查每 5 分钟看一次 connected 和 napcat,复盘里反复写「只看了连接状态,没核对主群真实回复」,文章说的正是 Watchdog 要看任务进展,不能只看进程活没活着。另外,Tata 写到她合 PR 太快,Forge 和 Watch 的日报写完时 main 已经变了,这类「谁手里的状态过时了」的问题,文章用的是让相关 Worker 都订阅同一条事件流。
能怎么借鉴。最小的一步是给「派出去的任务」加一个独立的进展检查:定时看每个开着的 PR 或 Claude 会话最近一次提交时间,超过阈值就判定卡住,交给一个会话去看原因,而不是原样重派。再往后,可以对照原型仓库的 003 Execution 看它怎么做 Router 和 Worker 的工具集划分、5 秒转后台。原型目前只支持 github.com 和飞书,要求给 agent 单独开一个 GitHub 用户账号(GitHub App 不行,因为它要读账号通知),适合读,不一定适合直接装。
适合写成博客或视频。可以讲成「我的 7 个 bot 对照 Super-agent 的五个模块」:每个模块配一件你团队里真实发生过的事,比如 #1468 重派三次、Mac mini 磁盘满,然后说你打算先补哪一块。委派实验那组 0/5 和 4/5 的数字很适合做开场。
02「改进」输入框:用户写一句,agent 直接改
Stripe CEO Patrick Collison(@patrickc,约 184 万粉,3922 赞、3637 收藏、34 万浏览)在 11-01 早上发帖说,他给自己所有用 vibe coding 做的个人应用都加了一个「improvements」功能:一个自由输入框,接着一个 agent,用户写什么它就直接实现什么。他说这让打磨毛边、加新功能的门槛低到几乎没有,另一个在用他应用的人几天里已经提交了 150 个改进;他把这叫做 liquid software,觉得没有这个功能的软件都开始显得有点僵硬。他自己也列了没想清楚的地方:时间长了会不会没法维护,多人协作的软件怎么用这个模式,这样做出来的软件能不能安全可靠。他的结论是,至少在个人场景里很好用。
Sentry 创始人 David Cramer(@zeeg,约 3.6 万粉,146 赞、141 收藏)在下面接了两句:一是 Sentry 已有的 User Feedback 接口可以承接这类输入;二是他们正在 Sentry 的 MCP 里试一件事,让 agent 在某个东西没按它的预期工作时,用同一个接口自动提交反馈。也就是说,反馈的来源不只是人,用产品的 agent 本身也成了提意见的用户。
为什么值得想。这把「用户反馈」和「开发」之间那段人工流程压得很短。Patrick 担心的维护、协作、安全,恰好是团队产品绕不开的三件事;zeeg 的补充则说明另一头也在变,提反馈的可能是 agent。
和你现在的开发。夹夹这边两头都有现成的东西。一头是 #1330 点子墙,现在 CI 绿、可合并,等你决定上不上;另一头是 #1464 立的需求「回答反馈几乎没数据」,Ledger 的统计里 10-31 一次回答反馈都没有,10-30 是 4 次,其中 3 次是同一条回答上来回点的。如果点子墙上线,可以想的是:点子落到哪一步就停,是直接派 agent 实现,还是只开 issue 进 Tata 的流程。另外,问夹夹自己调工具失败时(比如 Scout 记录的线上搜索 30 秒不返回),能不能像 zeeg 说的那样,由 agent 自动记一条反馈,而不是只等用户点踩。
适合写成短视频。「如果每个 app 都有一个改进框」这个设想很直观,可以拿点子墙做演示,讲你会在哪一步加人工把关、为什么。
03看过但没选的
Karpathy 的 HackerTube(让 Claude 从 20 年的 HN 评论里筛出 6454 个反复被推荐的视频)有 2 万多赞,你多半已经刷到。Thorsten Ball 讲 agent 时代改用 trunk-based 开发的帖子 10-30 那期推过,这次他只是追了一条回应。mattpocockuk 的 Sandcastle 目前只是一段产品宣传语,swyx 的 low effort 加 critique loop 是在转 theo,mitsuhiko 说 Opus 两周能重写 CPython 只是一句判断,badlogicgames 的 pi-schema 是一个 JSON schema 库,和你手上的活关系不大,都跳过了。
04回个信号
哪条有用、哪条没用,回个字或点个表情就行,我会照着调。