把agent缩减到9个,给CLAUDE.md瘦身之后,Compacting conversation...出现的间隔明显变长了。同样的任务,比以前撑得久多了。开心。
然后我在请求新功能,看着控制台。测试跑了。30个case,全部通过。但Claude又在提成功的测试。有种说不出的怪异感。
问了Claude。“刚才成功的测试你为什么又提?“Claude解释了工具这个概念。Claude执行终端命令或读文件时,那些都是"工具调用”。而每次执行工具,其结果会整个堆进对话上下文。npm test结果30行、Hugo构建日志180行,全部。测试全通过了没什么好看的,却读了全部30个。修构建错误时需要的只是最后5行,却加载了全部180行。
漏水的桶不止一个。
曰:当遵循hooks
搜索中发现了Claude Code的hooks。PreToolUse——在Claude执行工具之前介入的脚本。可以在Bash命令执行前加工输出,也可以在读取工具调用前拦截。
可以为守护my precious立戒律了。
第一戒:成功之物不可观
30个测试全部通过,没必要再读一遍。做了一个hook,只筛选失败的case显示,其余丢弃。(让Claude做的。)
| |
之前Claude看了全部30个测试结果,现在只看失败的。全部通过的话读取量为0。消除了100%的无用读取。
第二戒:非错误不可上传
Hugo构建日志180行、Docker构建80行——找错误不需要全部上传。同样的逻辑,做了只筛选ERROR、WARN、failed的hook。
| |
180行变成了5行。削减了97%。Docker也从80行变成了10行左右。
第三戒:无用之物不可读
有个不再使用的archive文件夹。Claude在文件探索中没有理由打开这个文件夹。做了一个hook拦截Read工具调用,路径包含_archive就拒绝。
| |
简单但有效。
不过话说回来
体感确实有了。Compacting conversation...出现的频率降低了。跑一次构建上下文也轻了很多。3个hook挡住了Claude读无用信息。
但那是"体感”。不知道具体减少了多少。感觉今天比昨天好,但没法吹自己减了多少!跟EP.1中"拆agent应该能减少"的无根据信仰有什么区别?
不测量就不算改善。是时候做定量测量了。
本系列其他文章
参考