工具试了一圈,最后还是靠几个纯文本文件
先说结论:让 AI Agent 好好干活这件事,我最近试了两个工具,都没搞明白怎么用。
一个是 superset.sh,本地优先的桌面工作台,能同时跑多个 coding agent,每个 agent 分到一个隔离的 git worktree 和独立分支,最后在一个面板里统一看 diff 再决定合不合。
一个是 multica.ai,开源的,思路是把 coding agent 当队友管——有任务队列、状态、评论、活动时间线,还有可复用的「技能库」,本地一个 daemon 去调度你机器上装的各种 agent。
两个都做得挺认真,定位也都不是替代 Claude Code 或者 Codex,而是坐在它们上面的那一层:管理层。
我装完,打开,看了一会儿,关掉了。
后来想明白为什么。不是我懒,是它俩卖的东西,我已经手工做出来了。
「每个 agent 一棵隔离的 worktree」——我自己的全局规则里早就写死了:多会话并行时每个会话开自己的 worktree,什么时候该开、什么时候不必开、干完怎么回收,都有判据。这条规则不是想出来的,是共享一棵树被坑出来的:别人的未提交文件混进 git status、提交必须逐条列路径、发布时不知道该钉哪个提交。
「可复用的技能库」——我那堆 skill 文件、每个仓库的项目说明、十几条拦截规则,就是。
所以工具递过来的那个抽象,跟我手上已经长出来的那套对不上。它要我把我的搬进它的模型里,而我的模型是被具体的坑一条条打出来的,每一条背后都有一次真实的浪费。
倒是这一周里真正省下时间的三件事,一件工具都没用上。
一、指令文件放错地方,等于没写
我手上十几个仓库,每个都有一份给 AI 写的项目说明。之前是 CLAUDE.md 和 AGENTS.md 各存一份。
这周花了半天把所有仓库统一成一个形状:正文全部写在 AGENTS.md 里,CLAUDE.md 只留五行指针指过去。
原因是本机实测出来的三条机制,各带对照组:
- Claude Code 只读
CLAUDE.md。 - Codex 只读
AGENTS.md。 - 两边都不读对方那份。
- Claude Code 会展开
@导入,Codex 不会。
所以「正文写 CLAUDE.md」等于让 Codex 全瞎;「两边各存一份」则必然漂移——这不是推论,是查出来的。三个仓库的 AGENTS.md 还在教一套早就废弃的部署方式;还有一个仓库的两份文件在生产数据库迁移方式上互相矛盾,一份写着用 push 模式,另一份写着「不要恢复 push 模式」。
我去代码里对了一遍,写着 push 的那份是过期且危险的。它描述的正好是我自己定的硬约束里明令禁止的做法。
一份没人读的文档只是浪费;两份互相矛盾的文档是会伤人的。
二、散文规则会死,闸门不会
我的项目说明里早就写着一条「验证按影响面选,不要机械跑全仓最重的命令」。
然后这周有一次会话,四十四分钟里有二十五分钟纯粹在空转:
- 只改了两个文件,却去跑全仓 742 个测试文件,四十一分钟没跑完被掐掉。而相关的那两个目录,33 秒跑完 210 个用例,全绿。
- 起了个后台命令,又写了个循环去轮询它,连撞两次工具超时——其实后台任务跑完本来就会主动通知。
规则白纸黑字写在那儿,还是死了。散文规则就是会死。
所以我没有再去把那条规则加粗一遍,而是把这二十五分钟做成了一个 hook:命中就直接拦下来,并且告诉它应该怎么改写。确实需要跑全量的,加个注释放行。
顺带修了个更隐蔽的:之前拦截规则触发时只发了一行「denied」,规则文件里辛辛苦苦写的「你应该这么做」一个字都传不过去。于是同一次会话里同一个坑空转了三次。
拦住一个错误动作只完成了一半,把正确动作递过去才算完。
三、「有点慢」不是形容词,是个要量的数
用户报了三个页面慢。我按记忆和直觉排了一轮,全部排错。
后来老老实实拿生产库的副本,写了个脚本逐个能力计时,报四个数:总耗时、其中 SQL 占多少、其余 CPU 占多少、第二次调用有没有变快。
数一出来,事情就非常清楚了:
- 异常中心 649 毫秒,其中 SQL 是 0 毫秒。全是 CPU。根因是一张 9277 个节点、26567 条边的图,每查一个对象的关联都在做全量线性扫描,3188 个对象各扫两遍。建图时把索引建好,649 毫秒变 6 毫秒。
- 企业体征页 722 毫秒变 6 毫秒。但真正值钱的不是这个数,是顺手发现的另一件事:这个页面每 10 秒轮询一次,而每次轮询都会把全组织所有人的读缓存清空一次。也就是说,只要有一个人开着这个页面,别人所有页面都在冷启动。
- 另外两个页面量完的结论是「不动」。一个热态 1 毫秒,我记忆里那个「一百多到三百毫秒」是冷启动数;另一个 41 毫秒里有 38 毫秒是一条必须扫完 16.5 万行的聚合,加索引无解,不值得为它新造一张物化表。
三个页面,两个改,一个明确不改,全都有数撑着。
还有一步不能省:改完之后,拿 3188 个对象逐个跑新旧两条路径对答案,确认零处不一致。因为这类改动一旦索引方向搞反,页面上只会是数字不一样,不报错。
最后
回头看,这周省下时间的三件事:一件是挪了几个 markdown 文件的位置,一件是写了个几十行的拦截脚本,一件是写了个计时脚本。
没有一件需要装新工具。
我不觉得 superset 和 multica 没价值。恰恰相反,它们要解决的问题是真的——多个 agent 并行、任务分派、经验复用,这三件事我每天都在做。只是我发现,在你被具体的坑打出自己那套办法之前,管理层工具替你管的是一套你还没有的东西;而在你被打出来之后,你已经不那么需要它了。
中间那个窗口有多宽,我不知道。也许我只是错过了。
我缺的从来不是一个更好的面板,是把自己那套土办法写下来、并且让它真的生效。
踏破凌霄,直面天命。
