导语:用 AI 编程智能体写代码时,你有没有遇到过这种情况:让它“加一个登录接口”,结果它用了你项目里根本没有的认证库,目录结构和错误格式也跟现有代码对不上?问题往往不在模型,而在上下文。IBM Technology 这节课讲的就是“上下文感知编程”:怎样给智能体相关的上下文,而不是全部的上下文,并且让你自己始终掌控决策。
一、为什么一句提示词不够
一句话的需求,面对的是成千上万个文件和多年积累的技术决策。提示词本身解释不了这些。所以同样是“加登录接口”,在一个仓库里应该写成带 Pydantic 模型的 FastAPI 路由,在另一个仓库里可能是 Go 的处理函数。好代码取决于代码库本身。
二、智能体需要的六类输入
- 现有代码与文件:好的智能体会自己搜索和打开文件,你要做的是指方向,例如“参照 README 里的写法”。
- 仓库结构:测试放哪、模块怎么分。用工具生成一份精简的“仓库地图”(repo map),模型不用逐行读也能看清项目形状。
- 依赖及其版本:只知道用了某个库不够。锁文件(lock file)记录了每个依赖的精确版本,决定哪些 API 真实存在。很多“幻觉函数”其实是版本对不上。
- 能跑的测试:形成“写代码—跑测试—修复”的反馈循环,让智能体知道什么叫“做对了”。
- 文档与约定:构建命令、命名规范、“别动这个目录”之类的规则,可以写进仓库里的 agents.md,这是正在兴起的开放约定。
- 开发者意图:完成标准是什么、有哪些约束、什么不能做。这一项智能体读遍仓库也发现不了,只有你知道。
三、不知道该问什么?让智能体反过来问你
新手常常不清楚认证库、锁文件是什么,更不知道该给什么上下文。课程给了三招:
- 写代码前先说:“采访我,一直提问,直到你掌握需要的信息。”
- 让它先探索仓库,用大白话解释项目由哪些部分组成,你们俩就有了同一张地图。
- 让它先出计划并列出自己的假设,你原本想不到的问题会自己浮出来。
做完后让它把学到的东西写回 agents.md,下次直接复用。理想状态是:智能体负责挖掘信息,决定权留在你手里。
四、上下文不是越多越好
很多人的直觉是把整个仓库都塞进去。课程明确反对:模型对长输入的注意力并不均匀,开头和结尾处理得最好,埋在中间的信息容易被忽略。每多一个无关文件,就多一个和关键文件抢注意力的对手。改登录流程,需要的是认证模块、它的测试和你的约定,而不是计费服务或三周前的构建日志。实用做法:每个新任务开一个新会话,直接指向相关文件;会话变长了就清理噪音。
术语表
- Agentic Coding(智能体编程):由能自主搜索、编写、运行代码的 AI 智能体协助编程。
- Repo Map(仓库地图):列出文件与符号的精简概览。
- Lock File(锁文件):记录每个依赖(含传递依赖)精确版本的机器生成文件。
- Feedback Loop(反馈循环):写代码、跑测试、按失败结果修复的迭代过程。
- agents.md:放在仓库里、写给智能体看的约定与禁止事项说明。
- Developer Intent(开发者意图):完成标准、约束和禁止事项,只有开发者本人知道。
自测题
在六类输入中,哪一类是智能体无论怎么读仓库都无法自己发现的?
A. 仓库结构 B. 依赖版本 C. 开发者意图 D. 现有代码文件
(答案见文末)
和求职面试有什么关系
现在越来越多的开发岗位会问到“你怎么用 AI 辅助编程”。面试官想听的不是“我会用 Copilot”,而是你能否说清楚:怎样给 AI 正确的上下文、为什么锁文件能减少幻觉、怎样用测试验证 AI 生成的代码、为什么不把整个仓库丢给模型。可以准备的问题包括:“AI 生成的代码调用了一个不存在的函数,你会怎么排查?”“团队里怎样让 AI 遵守项目规范?”用本文的六类输入和 agents.md 来回答,会显得既懂工具也懂工程。
来源
本文内容源自 IBM Technology 的视频《Context-Aware Coding: Give AI Agents the Right Context》,由本博客整理并用中文重新讲解。
原视频(IBM Technology):https://www.youtube.com/watch?v=EkdIZXDnRK8
课程页(含测验):https://liaoyanxin.acrossthegreatwall1984.us.ci/ibm/2026-11-02-ekdizxdnrk8/
自测题答案:C。开发者意图只有你知道,智能体读再多代码也推断不出来。