For the complete documentation index, see llms.txt. This page is also available as Markdown.

Agent 上下文工程

Agent 上下文工程关注如何给 AI 提供正确、充分、可验证的代码上下文。它不是简单扩大上下文窗口,而是围绕任务选择、组织和约束信息。

如果没有上下文工程,Agent 很容易变成“会写代码的搜索器”:它能读文件、改文件,但不一定知道哪些文件重要、哪些边界不能跨、哪些测试需要运行。上下文工程要解决的就是这个问题。

后续 AI 配图备注:可生成一张“Agent 在修改前先查询代码图谱”的流程插画,表现任务、检索、图谱查询、上下文包、修改、验证报告的闭环。

上下文窗口不等于代码理解

把更多文件塞进上下文,并不等于更好的理解。上下文太少会遗漏关键关系,上下文太多会引入噪声,让 Agent 注意力分散。

有效上下文应该满足三个条件:

  1. 相关:与当前任务有明确关系。

  2. 结构化:说明文件、符号、调用、测试之间的关系。

  3. 可验证:每个结论能追溯到代码或数据来源。

因此,Agent 上下文工程更像“检索 + 图谱查询 + 任务裁剪 + 证据组织”,而不是单纯拼接文本。

任务理解与意图边界

上下文构建首先要理解任务意图。不同任务需要不同上下文。

例如:

  • 修复一个接口 bug:需要入口、调用路径、相关测试、异常日志。

  • 修改一个数据字段:需要读写关系、数据库迁移、消费者和 API。

  • 重构一个模块:需要依赖边界、变更历史、测试覆盖和 owner。

  • 补充测试:需要目标行为、覆盖缺口和历史失败。

任务边界也很重要。系统应该尽量明确:哪些文件是主要修改范围,哪些文件只读参考,哪些模块不应修改。对 Agent 来说,边界本身就是约束。

相关文件选择

相关文件可以来自多个信号:

  • 关键词和语义检索。

  • 同目录和同模块。

  • 符号定义与引用。

  • 调用方和被调用方。

  • 相关测试。

  • 历史共同变更。

  • 运行时 Trace 路径。

  • PR 或 Issue 中提到的文件。

这些信号应该组合使用。全文检索能找到候选文件,符号和调用关系能确认结构相关性,变更历史能发现隐性耦合,Coverage 能找到验证入口。

一个实用策略是把文件分层:

  • 必读文件:任务直接修改或直接依赖。

  • 相关文件:调用链、测试、配置、历史共同变更。

  • 背景文件:架构规则、接口定义、文档。

这样 Agent 可以先读必读文件,再按需要扩展。

符号查询

符号查询比文本搜索更稳定。它能回答:

  • 这个类或方法在哪里定义。

  • 这个符号在哪里被引用。

  • 这个接口有哪些实现。

  • 这个方法属于哪个类型。

  • 这个字段在哪些地方读写。

Agent 修改代码前,应该优先查询目标符号,而不是只搜索字符串。否则它可能混淆同名方法、忽略重载、漏掉实现类。

调用方和被调用方查询

调用关系是上下文工程的核心。修改一个方法前,Agent 至少需要知道:

  • 谁调用它。

  • 它调用谁。

  • 是否处于业务入口路径。

  • 是否被多个模块共享。

  • 是否有运行时高频路径。

调用方查询用于判断影响面,被调用方查询用于理解实现依赖。两者结合,才能避免只看局部实现。

相关测试查询

Agent 经常需要补测试或运行测试,但它必须知道哪些测试相关。

相关测试可以来自:

  • Coverage。

  • 测试命名和目录。

  • 测试调用路径。

  • 历史共同变更。

  • CI 失败记录。

测试上下文不应该只给文件名,还应该说明推荐依据。例如“该测试覆盖了目标方法”“该测试历史上因相关模块变更失败”“该测试覆盖业务入口但未覆盖异常分支”。

架构约束查询

Agent 需要知道哪些事情不能做:

  • 哪些模块不能依赖。

  • 哪些接口是稳定边界。

  • 哪些资源只能通过指定服务访问。

  • 哪些目录不能新增业务逻辑。

  • 哪些变更必须同步测试或文档。

这些约束可以来自架构规则、CODEOWNERS、文档、CI 检查和历史 Review。把约束明确放进上下文,可以减少 AI 的边界误改。

上下文包结构

一个面向 Agent 的上下文包可以包含:

上下文包最好是结构化的,而不是一大段自然语言。结构化上下文便于 Agent 执行,也便于 Reviewer 审计。

查询轨迹和审计

Agent 查过什么,也应该被记录。查询轨迹可以帮助 Reviewer 判断:

  • Agent 是否查过目标方法的调用方。

  • 是否查看了相关测试。

  • 是否检查了架构规则。

  • 是否只读了一个局部文件就开始修改。

查询轨迹本身也是 Review 证据。它让 AI 的工作过程不再是黑盒。

小结

Agent 上下文工程的目标,是让 AI 在正确边界内获得足够证据。它需要结合语义检索、符号查询、代码图谱、变更历史、测试覆盖和架构规则。

下一章会进一步讨论:代码图谱如何成为 Agent 查询上下文的核心基础设施。

延伸阅读与参考资料

Last updated