一个 agent 不够用

pcclaw 能跑起来之后,用起来还挺顺手的。让它帮我写代码、查文档、跑脚本,基本的事情都能做。

我们平时需要专业的事交给专业的 agent,写代码有 coder,做设计有 designer,管任务有 captain。但问题是每次都要自己指定去找哪个 agent,用起来很麻烦。

能不能让 agent 自己知道该找谁?

消息总线的设计

当时的想法是:做一个消息总线,每个 bot 都挂在上面,bot 之间通过发消息协作。想让某个 bot 做事,就发一条消息 @ 它。

角色大概是这样分的:

  • captain:大管家,负责整理思路、拆解任务、协调全局
  • coder:负责开发,下面还有 architect、implement、review、tester 等子 agent
  • design:负责设计文档
  • content:负责内容创作
  • ……

这套东西用起来有段时间感觉相当爽。我可以在开车的时候通过飞书和 captain 对话,让它帮我整理一个想法,captain 觉得需要技术方案就会 @ coder,coder 内部再分工,architect 写设计、implement 写代码、review 检查。我只需要说一句需求,后面的事 captain 去协调。

有段时间我迷上了让 pcclaw 开发 pcclaw。感觉挺厉害,但其实还是 claude 更强些。不过自家的孩子,总是最好的。

后来我给 pcclaw 取名叫"咖啡"——一边喝咖啡,咖啡自己就把活干完了的意思。

那段时间每天早上 6 点起床弄咖啡,弄到 8 点再洗漱吃饭,时间卡得很紧。路上也闲不住,一边开车一边用飞书和咖啡聊,想到什么就说,让它做调研、出方案,顺手 PUA 它让它好好干活。

那段时间晚上 1 点多才睡,第二天 4 点 20 就自然醒了——也不敢起来,怕一起来就睡不着了,毕竟还得上班。就躺着,脑子里转的全是给 pcclaw 加什么功能。

直到有天早上开车时候睡着了。感觉睡了 2 秒钟,眼睛睁开车已经偏了,还好刚下高速,车速不快,但还是挺后怕的。然后就老实了,7:30 起床,保命要紧。

问题出现了

好景不长。

消息总线有个致命的问题:被 @ 的 bot,它自己也可能去 @ 别的 bot

比如 captain 发一条消息同时 @ coder 和 @ design,让他们分别去开发和设计。coder 完成自己的任务后,觉得设计也需要跟进,又自己去 @ 了 design。但这根本不是 coder 该管的事,design 那边本来已经在跑了,这一 @ 就乱了。

bot 越权乱 @,而且你没法完全预测 LLM 什么时候会这样做,这就是根本问题所在。

我开始修这个问题。加规则,限制 bot 什么时候可以 @ 别人;加检测,发现循环就截断;加优先级,控制消息处理顺序……

git 分支一个接一个地开:feature/groupfeature/group2feature/group3feature/group4。每次觉得快修好了,跑一跑又出新问题。提交记录里全是这类东西:

fix: NeedsReply false positive - remove '完成' from keywords
fix: prevent endless repeating message bug
fix: refine COMMON_RULES - clarify when to yield
docs: add super prominent reminder - after replying, NO extra status, just exit
fix: fix direct messages not responding in collaborative bots mode

规则越加越多,提示词越来越长,但 bot 还是会时不时乱跑。有时候修好了一个场景,另一个场景又崩了。

就这样耗了三周多。

受不了了

4 月 8 日,有个分支叫 dev-before-rollback-20260408-165953

这个分支名本身就说明了一切——那天我做了一次回滚,在此之前存了一个备份。

三周时间,几十个分支,上百次提交,问题还是没有根本解决。消息总线这个架构,在 LLM 这个场景下太难控制了。LLM 不是确定性的程序,你没法完全预测它什么时候会发消息、发给谁、发多少条。靠规则和提示词去约束,本质上是在用不确定的方式解决不确定性带来的问题。

那段时间我跟自己说:再给它一周,再给它一周。但每次又是新的问题。

最终还是决定放弃,重新设计。


tclaw 提供 Mac、Linux、Windows 版下载,Mac 版支持最好,感兴趣可以去 tclaw-releases 体验。

也可以先玩玩 tclaw 用 AI 做的几个小游戏:→ 点这里玩