用 Skill 和 Agent 攻克老旧历史项目的学习与分析难题
接手一个有年头的项目,最令人头疼的从来不是代码本身,而是代码背后那些无处可查的决策脉络。文档年久失修甚至不存在,当年的设计者早已离职,模块之间的耦合关系像一团纠缠的毛线——拉一根就牵动一片。Infosys 的研究数据显示,开发者 35% 的工作时间花在理解已有系统上,而非编写新功能。ThoughtWorks 技术雷达也明确推荐用 GenAI 理解那些"低自描述性、低凝聚力"的遗留代码库。
2025-2026 年间,AI 编码工具从补全助手演变为自主 Agent,Skill 机制又让这些 Agent 的行为变得可编排、可复用、可版本控制。这两者的结合,正在从根本上改变"读懂老项目"这件事的效率天花板。
老项目学习的四重困境
Martin Fowler 团队在一篇关于 AI 辅助入职的文章中,把遗留代码库的学习困境归纳得相当准确。结合多个来源的观察,核心痛点可以归结为四类。
文档与代码的脱节。入职文档、wiki 页面、README 里描述的往往是项目建立之初的架构,经过数年迭代后与实际代码面目全非。新人按照文档理解出来的心智模型,在实际调试时处处碰壁。
依赖关系的黑箱化。模块间调用链、隐式依赖、配置驱动的运行时绑定——这些信息分散在代码、配置文件、部署脚本甚至 DBA 的脑子里。改一行代码可能触发连锁反应,但没人能准确说清影响范围。
业务语义到代码位置的映射断裂。产品经理说"退款流程",开发者面对的可能是散落在十几个类里的逻辑片段。把业务需求翻译成具体要改哪些文件、哪些方法,在缺乏领域知识的情况下极其困难。
测试缺失带来的恐惧循环。遗留项目通常测试覆盖率低,开发者不敢改代码是因为改了没有回归手段,不改又无法推进需求。恐惧导致绕行、打补丁,系统复杂度进一步恶化。
Agent 带来的范式转变
传统的代码阅读是线性的——打开文件、读函数、跳转引用、画调用图。这个过程严重依赖读者的工作记忆容量,面对几十万行代码时认知负荷很快溢出。
AI Agent 改变的不是"读代码"这个动作,而是"探索代码"的方式。2026 年的主流 Agent(Claude Code、Cursor、GitHub Copilot)已经具备以下关键能力:
自主导航与语义搜索。Agent 不需要人告诉它"去看某个文件",它能根据自然语言问题自行定位相关代码。Cursor 的 agentic search 机制甚至支持 subagent 对代码库做深度探索——一个 agent 负责搜索,另一个负责阅读和总结。
调用链追踪与影响范围分析。给 Agent 一个方法名,它能沿着调用链上下游追溯,识别出直接和间接的依赖关系。这项能力在知识图谱技术的加持下效果更好——Graham Brooks 在其 codegraph 项目中展示了如何用图数据库为 AI Agent 提供代码库的语义地图。
逆向提取业务意图。arXiv 上一篇 2025 年的论文验证了用 LLM 从代码逆向工程用户故事的可行性。Agent 能从一段看起来晦涩的遗留代码中推导出"这段代码处理的是用户取消订单后的库存回补逻辑"这样的业务解释,极大缩短了"猜这段代码在干什么"的时间。SoftwareSeni 的实践数据显示,AI 辅助的逆向工程可以将理解遗留代码的时间缩短约 66%。
自动生成文档与测试。Agent 能为缺乏注释的代码生成方法级文档,也能根据已有代码的行为特征生成基线测试。Coder.com 的工程师将这种模式称为 behavior baselining——先用 AI 建立行为基线,再在基线保护下做增量重构。
Skill 机制:从一次性对话到可编排的工作流
单纯用 Agent 对话式地问答老项目问题,效果是有的但不稳定。同一个问题换个问法可能得到不同深度的回答,关键步骤容易遗漏,分析过程不可复现。
Skill 机制解决的正是这个问题。以 Claude Code 为例,Skill 是一组 Markdown 格式的指令文件,定义了 Agent 在特定场景下应该执行的步骤、使用的工具、遵循的约束和输出的格式。它的价值在于:
流程固化。把"分析一个遗留项目"这件事拆解为确定性的步骤——先扫描项目结构,再识别核心入口点,然后追踪关键调用链,最后生成架构概览文档。每一步的输入输出都有明确定义,不会因为 LLM 的随机性而跳过关键环节。
上下文管理。Skill 可以分层加载——全局层放通用的编码规范,项目层放特定仓库的架构约定,任务层放当前分析目标。这种三层架构确保 Agent 在不同上下文中都能获得足够的背景信息,避免"每次对话都要重新解释一遍项目背景"的问题。
可版本控制。Skill 文件随代码仓库一起进版本管理,团队成员可以迭代改进分析流程,新人直接复用前人总结出来的最佳实践。
多 Agent 编排。复杂的分析任务可以拆分给多个 sub-agent 并行执行。比如分析一个微服务架构,可以同时派出五个 agent 分别梳理五个服务的内部逻辑,再由一个汇总 agent 整合跨服务的调用关系。
AGENTS.md:项目级知识库的兴起
2025-2026 年间,AGENTS.md 和 CLAUDE.md 从个别团队的实验迅速演变为行业共识。专门推广这一概念的 agents.md 网站将其定位为"Agent 的 README"——一个专门为 AI 编码助手准备的、提供项目上下文和指令的标准位置。
一个有效的 AGENTS.md 通常包含以下信息:
- 项目的技术栈概述和目录结构说明
- 关键模块的职责划分和模块间交互方式
- 项目特有的编码约定和命名规范
- 常见的陷阱和反模式(“不要直接改这个表”“这个配置只在生产环境生效”)
- 构建、测试和部署的标准命令
AI Hero 平台的完整指南中提出了一个关键概念——渐进式披露(progressive disclosure):不要把所有信息一次性塞给 Agent,而是根据任务类型按需加载相关章节,保持指令聚焦。
对于老旧项目来说,AGENTS.md 的价值更加突出。即使原始开发者已经不在,只要有人花半天时间把项目的核心架构、关键决策和历史坑点写进这个文件,后续所有使用 AI Agent 分析这个项目的人都能受益。这本质上是把散落在个人脑子里的隐性知识,转化为 Agent 可消费的结构化上下文。
一套可落地的实践工作流
综合上述能力,面对一个陌生的老旧项目,以下工作流经过多个来源的实践验证:
第一步:建立项目地图。让 Agent 扫描项目的目录结构、依赖配置、入口文件,生成一份项目概览文档。如果已有 AGENTS.md,Agent 会自动加载;如果没有,这一步的产出本身就可以作为 AGENTS.md 的初稿。
第二步:识别核心模块。基于项目地图,让 Agent 找到被引用次数最多的类或模块——这些通常是系统的核心骨架。按照 top-down exploration 的原则,先理解架构轮廓,再逐步深入具体实现。
第三步:追踪关键业务流程。选择 2-3 个最重要的业务场景(比如"用户下单"“支付回调”),让 Agent 从 API 入口开始追踪完整的调用链。这一步产出的调用关系图和业务逻辑说明,往往比任何文档都更准确。
第四步:生成行为基线测试。对核心模块和关键路径,让 Agent 根据现有代码的行为特征生成测试用例。这些测试不追求覆盖率,而是在后续修改时提供回归保障——有了安全网,开发者才敢动手。
第五步:持续更新项目知识库。每次通过 Agent 分析得到的新认知,都应该回写到 AGENTS.md 或项目文档中。知识库不是一次性工程,而是随着对项目理解的加深持续演化的。
这五步中的每一步都可以封装为一个独立的 Skill,再通过一个顶层 Skill 编排串联。团队中任何人拿到这套 Skill,都能以一致的方式和深度去分析这个项目。
工具选择的务实建议
2026 年 4 月的实测排名中(nxcode.io),Claude Code 在代码理解能力上排名第一(CursorBench 得分 70%),Cursor 紧随其后,Codex 排名第三。但排名不等于适用性——选择工具时应考虑几个实际因素:
如果项目以 Java/Python 等主流语言为主,且分析目标集中在代码理解和文档生成上,Claude Code 的长上下文窗口和 Skill 生态是最大优势。如果团队日常开发用 VS Code/JetBrains 系列 IDE,Cursor 的原生集成体验更顺畅。如果企业已有 GitHub 生态且看重多文件重构能力,Copilot Workspace 值得关注。
更务实的做法是不绑定单一工具。AGENTS.md 的格式足够通用,Claude Code、Cursor、Copilot 都能消费。把项目知识沉淀在标准化的 Markdown 文件中,工具可以换,知识不会丢。
局限性与清醒认知
AI Agent 在遗留代码理解上已经非常有用,但几个局限仍然存在。
Agent 的理解是基于代码文本的,对于配置驱动、反射调用、动态代理等运行时行为,静态分析能力有限。对于高度依赖运行时状态的系统,仍然需要结合实际运行和日志分析。
Agent 目前在跨文件全局理解上仍有短板。AlgoMaster 的一篇深度分析指出,AI 工具缺乏对代码库作为"互联系统"的整体理解,本质上仍然是基于局部上下文在操作。知识图谱技术(如 arXiv 2025 年的论文所提出的方案)在弥补这一缺陷,但尚未成为标配。
最根本的一点:AI Agent 不理解业务。它能告诉你"这段代码在做什么",但无法判断"这段代码该不该这样做"。架构决策、业务优先级、技术选型的权衡,仍然需要有经验的工程师来把关。Deloitte 和 Centric Consulting 的分析都强调同一个结论——Agent 是增强工具,不是替代品。
在这些边界之内,Skill + Agent 的组合已经把"读懂一个老项目"从以往的数周甚至数月,压缩到了数天甚至数小时。对于背负大量历史项目的团队来说,这不只是效率工具,而是一种新的知识管理范式。
参考资料
- Onboarding to a ‘legacy’ codebase with the help of AI — Martin Fowler
- Using GenAI to understand legacy codebases — ThoughtWorks Technology Radar
- Reimagining Code Understanding with Graph Intelligence and AI — Infosys
- Reverse Engineering User Stories from Code using LLMs — arXiv
- Knowledge Graph Based Repository-Level Code Generation — arXiv
- Cutting Legacy Reverse Engineering Time by 66% with AI — SoftwareSeni
- AI-Assisted Legacy Code Modernization: A Developer’s Guide — Coder.com
- Understanding Your Codebase — Cursor Learn
- Modernizing legacy code with GitHub Copilot — GitHub Docs
- A Complete Guide To AGENTS.md — AI Hero
- AGENTS.md Official
- Best AI for Coding 2026: Complete Ranking — nxcode.io
- AI Agents and the 7 Rs of Legacy System Modernization — Centric Consulting
- Three ways to approach legacy tech modernization with AI — Deloitte
- Configuring Agentic AI Coding Tools: An Exploratory Study — arXiv
- How to Use AI Effectively in Large Codebases — AlgoMaster




