显示标签为“编程”的博文。显示所有博文
显示标签为“编程”的博文。显示所有博文

2026年11月2日星期一

上下文感知编程:给 AI 编程智能体正确的上下文|Agentic Coding、agents.md、锁文件详解

导语:用 AI 编程智能体写代码时,你有没有遇到过这种情况:让它“加一个登录接口”,结果它用了你项目里根本没有的认证库,目录结构和错误格式也跟现有代码对不上?问题往往不在模型,而在上下文。IBM Technology 这节课讲的就是“上下文感知编程”:怎样给智能体相关的上下文,而不是全部的上下文,并且让你自己始终掌控决策。

一、为什么一句提示词不够

一句话的需求,面对的是成千上万个文件和多年积累的技术决策。提示词本身解释不了这些。所以同样是“加登录接口”,在一个仓库里应该写成带 Pydantic 模型的 FastAPI 路由,在另一个仓库里可能是 Go 的处理函数。好代码取决于代码库本身。

二、智能体需要的六类输入

  1. 现有代码与文件:好的智能体会自己搜索和打开文件,你要做的是指方向,例如“参照 README 里的写法”。
  2. 仓库结构:测试放哪、模块怎么分。用工具生成一份精简的“仓库地图”(repo map),模型不用逐行读也能看清项目形状。
  3. 依赖及其版本:只知道用了某个库不够。锁文件(lock file)记录了每个依赖的精确版本,决定哪些 API 真实存在。很多“幻觉函数”其实是版本对不上。
  4. 能跑的测试:形成“写代码—跑测试—修复”的反馈循环,让智能体知道什么叫“做对了”。
  5. 文档与约定:构建命令、命名规范、“别动这个目录”之类的规则,可以写进仓库里的 agents.md,这是正在兴起的开放约定。
  6. 开发者意图:完成标准是什么、有哪些约束、什么不能做。这一项智能体读遍仓库也发现不了,只有你知道。

三、不知道该问什么?让智能体反过来问你

新手常常不清楚认证库、锁文件是什么,更不知道该给什么上下文。课程给了三招:

  • 写代码前先说:“采访我,一直提问,直到你掌握需要的信息。”
  • 让它先探索仓库,用大白话解释项目由哪些部分组成,你们俩就有了同一张地图。
  • 让它先出计划并列出自己的假设,你原本想不到的问题会自己浮出来。

做完后让它把学到的东西写回 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。开发者意图只有你知道,智能体读再多代码也推断不出来。

AI 能安全使用敏感数据吗?5 项必备能力(IBM Technology 学习笔记)

  AI 最有用的数据(客户个人信息、健康、财务)往往也最敏感。IBM Technology 的这节课讲了一个思路:先打好五项基础控制,再让 AI 接触敏感数据。下面是我的学习笔记。 为什么要"机器速度"的控制 过去几十年,我们建立控制手段防止"...