当 agent 遇到一个从未见过的 500 文件代码库时,读每个文件是浪费。高效的做法:搜索入口点、读关键文件、然后沿着 import 向外追踪。从高层结构到具体细节,增量式地构建理解。
增量策略
- Grep 搜入口点:
main、app.listen、路由定义、export default、顶层配置 - Read 识别出的入口文件来理解高层架构
- 追踪 import:Grep 被导入的模块,Read 那些文件来理解依赖
- 按需扩展:根据任务需要继续追踪依赖图
这从上往下构建代码库的心理地图,只在相关文件上使用上下文。
为什么不全读?
500 个文件塞不进上下文。即使塞得进,lost-in-the-middle 效应让大部分内容不可靠。全读也浪费上下文在无关文件上(工具函数、配置模板、样板代码)。
增量方法高效使用上下文:只加载相关文件,每次读取都基于之前搜索中发现的信息。
为什么不问用户?
用户可能不了解所有代码库细节,或描述的可能是过时的架构。Agent 应该从实际代码中构建自己的理解。用户的描述可以补充但不能替代代码级探索。
工具序列
Grep 找到重要的文件。Read 加载它们的内容。Glob 按需要按模式找相关文件(所有测试文件、所有配置文件)。这个 Grep→Read→Glob 工作流是标准的代码库探索模式。
一句话总结: 增量式探索不熟悉的代码库:Grep 搜入口点 → Read 关键文件 → 沿 import 向外追踪。绝不要试图一次加载整个代码库。