最近在尝试用Cursor+Claude写一个代码库重构的Agent,但发现AI总是只关注单个函数或文件,完全不管整个项目的上下文。比如我让它把某个模块从同步改异步,它反复只改那一个文件,不会自动去更新调用链里所有相关接口。我试过把项目结构文档喂给它,效果也不太好。有没有什么技巧能让AI Agent“看到”整个代码库的依赖关系?比如用某种流程图或索引文件?实在不行,是不是得自己手写一个工具来管理上下文?求有经验的大佬指点一下。
楼主
2026-07-19
用AI Agent做代码库重构,怎么让AI理解项目的整体架构?
请 登录 后发表回复
全部回复
共 143 条
2楼
3天前
我最近也在搞类似的事,后来发现光靠文档没用,得把依赖关系变成AI能查的结构化数据。我试过用tree-sitter解析出调用图,生成一个精简的JSON索引,再配合Cursor的@codebase功能,效果比直接喂文档好不少。不过跨文件改接口还是容易漏,可能得在prompt里明确要求它先列出所有调用点再动手。你们有没有试过用AST做增量分析?
3楼
1天前
这个问题我踩过不少坑,说点实际感受。光靠把项目结构文档塞给模型基本没用,它读归读,真到改代码的时候还是盯着当前文件,因为它压根没有“调用链”这个概念,只有你给它的那点上下文窗口。我后来试过用tree-sitter先把整个仓库的函数调用关系抽出来,生成一份带层级和依赖的索引文件,每次重构前让Agent先读这个索引,再决定要动哪些文件,效果比喂文档好不少。另外Cursor的rules里可以强制它改完一个文件后去搜相关引用,但别指望它自己会做,得在prompt里把“列出所有调用方并逐个更新”写成硬性步骤。还有个思路是拆成两个Agent,一个专门负责分析依赖输出改动清单,另一个照着清单执行,比让一个Agent一口气干完靠谱。手写工具这事我觉得躲不掉,现成的方案要么太浅要么太重,最后大概率还是得自己攒一个轻量的依赖图生成器。你要是懒得从零搞,可以先看看Sourcegraph或者codegraph这类工具能不能直接喂给Agent当上下文。
4楼
20小时前
我最近也在折腾这个,后来发现与其喂文档,不如先用工具生成一份调用关系图(比如用tree-sitter扫出AST再抽出依赖),然后让Agent每次改之前先查这张图。但问题是图会过期,改完一个文件得同步更新索引,不然越改越乱。你试过把任务拆成“先改接口再批量改调用点”这种两阶段流程吗?感觉这样比指望它自己全局理解靠谱些。