tbrain(三):几个绕不开的问题

关于协议 第一个要想清楚的问题:agent 怎么和 tbrain 通信? 一开始想过用 WebSocket,实时性更好。但想了想,任务调度对实时性要求没那么高,agent 每隔几秒来拉一次任务完全够用,换来的是协议简单、接入方便。就用 HTTP 了。agent 的工作流程大概是这样: 注册自己,告诉 tbrain 我是谁、能做什么,拿到一个 token 每 30 秒发一次心跳,证明自己还在线 每 3 秒拉一次任务,有活就认领 执行过程中可以上报进度,UI 上能实时看到 做完上报结果,或者上报失败并说明原因 tbrain 通过心跳判断 agent 是否在线。心跳超时的 agent 会被标记为离线,手里的任务重新放回队列,等其他同角色的 agent 来认领,不需要人工介入。 任务计划谁来出 调度是确定性的,但"这个任务该怎么拆、交给谁"不是——这需要判断力。 有些场景流程是固定的,比如"先开发、再测试、再部署",每步交给谁很明确,提前写死就行。但有些场景不好提前定死,需求一来,得先看看现在有哪些 agent 在线、各自能干什么,再临时决定怎么安排。 所以支持了三种模式: 静态模式:提交 Job 时自己写好任务列表和依赖关系,tbrain 照着跑。 AI 规划模式:只提交一个目标,brain agent 看到目标后自己规划出任务列表,发回给 tbrain 执行。 混合模式:骨架是静态的,某些步骤交给 brain agent 来决定怎么做。 任务失败了怎么处理 设计失败处理的时候,想了一下失败都有哪些情况:网络抖一下超时了、agent 做错了需要重来、碰到了没权限处理的情况需要人来拍板……这几种情况的处理方式完全不一样,不能一刀切。 最后让 agent 自己在上报失败时指定失败等级: 自动重试:瞬态错误,系统自动重试,不超过两次 打回重做:业务失败,打回上游任务重新来过 人工审核:需要人来决定,任务挂起等人处理 致命错误:整个 Job 直接失败 agent 自己最清楚为什么失败,让它定级比 tbrain 猜要靠谱。 ...

June 10, 2026 · 1 min · 大飞

tbrain(一):三周,几十个分支,然后我放弃了

下面是用 tbrain + tclaw 多 Agent 协作开发的挂机游戏: 一个听起来很合理的设计 做 AI agent 做到一定程度,你会开始嫌一个 agent 不够用。 写代码的事,交给 coder。做设计文档,交给 designer。整体协调,交给一个大管家 captain。每个人做自己擅长的,这不就是正常团队的运作方式吗? 所以我给自己的 agent 工具做了一个消息总线。每个 bot 都注册在上面,bot 之间通过发消息协作,想让谁做事就 @ 它。设计上简洁,概念上直觉,感觉挺美的。 确实美了一段时间。 开车的时候用飞书和 captain 说一句需求,captain 帮我整理思路,觉得需要写代码就 @ coder,coder 内部再分工,architect 写设计、implement 写代码、tester 跑测试。我只管说,后面的事它们自己协调。那段时间我给这套东西取了个名字叫"咖啡"——一边喝咖啡,咖啡自己把活干完了。 好景不长 然后问题来了。被 @ 的 bot,自己也会去 @ 别的 bot,消息裂变,系统失控。 这段噩梦足足耗了三周,几十个分支,上百次提交,最后还是回滚了。细节就不在这里展开了——如果有兴趣,可以去看 tclaw 的开发故事,那篇写得比较完整。 简短结论:靠规则和提示词约束 LLM,本质上是在用不确定的方式解决不确定性带来的问题。这件事根本做不完。 放弃,重构。 重构之后 重构后的方案简单多了:不再有消息总线,改成调用制。用 list_categories 看看现在有哪些领域的 agent,用 list_agents 列出该领域下的具体 agent,再用 run_agent 让它去做事。被调用的 agent 做完返回结果,不能主动去找别人。控制权始终在调用方手里,不会有人越权乱插嘴。 这套方案稳了很多。但用了一段时间之后,碰到了另一堵墙—— 所有 agent 还是跑在同一台机器、同一个进程里。想在开发机上跑一个 coder,测试机上跑一个 tester,让它们协同,做不到。每个 agent 都是孤岛。 ...

June 10, 2026 · 1 min · 大飞

tclaw(二):多 Agent 协作,以及那三周的噩梦

一个 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 起床,保命要紧。 ...

June 2, 2026 · 1 min · 大飞
京ICP备14031575号-3