Context 工程:怎样把精确的上下文喂给 AI

[复制链接]
发表于 2026-4-8 12:36:43 | 显示全部楼层 |阅读模式
我们在项目中肯定都遇到过,AI 明显很"聪明",工具也都接好了,效果你让它改个 bug,它改的完全不是你想要的文件;你让它写个组件,它天生了一套跟项目风格完全不搭的代码。
这不是 AI 笨,也不是工具不可,「而是你"喂"给它的上下文不对。」
你可以把 AI 想象成一个长途结对编程的同事——他程度很高,但「他只能看到你屏幕共享的那部分内容」。你共享的窗口太小,他看不全;你共享了整个桌面,他又被一堆无关的东西干扰。
「Context 工程,就是"学会精准地给 AI 共享屏幕"。」

什么是 Context 工程?和 Prompt 工程有啥区别?

很多人把"写好 Prompt"和"管好 Context"等量齐观。着实它们办理的是两个完全差异的标题:

  • 「Prompt 工程」:研究"怎么问标题"——说话、格式、脚色设定、头脑链……让 AI 更精确地明确你的意图
  • 「Context 工程」:研究"给 AI 看什么"——哪些文件、哪些代码、哪些规范应该在 AI 的"视野"里
打个比方:Prompt 工程是你"怎么跟同事语言",Context 工程是你"把哪些文档放到同事桌上"。
说得再直白一点:「Prompt 写得再好,如果 AI 看不到精确的代码和配景信息,它还是写出离谱的东西。」
以是在实际 AI 编码中,Context 工程比 Prompt 工程更紧张,也更容易被忽略。
AI 须要哪两类上下文?

不管你用 Cursor、Claude Code 照旧 Continue,AI 每次干活时须要的上下文,本质上就两类:

「1)意图上下文(Intent Context)—— "你想让我干嘛"」
就是你的指令、目标、束缚条件。好比:

  • "帮我修复登录页面的 bug,用户点击登录按钮没反应"
  • "写一个新的 UserCard 组件,用 CSS Modules,不要用 Tailwind"
  • "重构这个函数,但不要改变外部接口"
这些信息告诉 AI"方向在哪"。
「2)状态上下文(State Context)—— "现在是什么情况"」
就是当前项目标实际状态。好比:

  • 当前文件的代码内容
  • 报错信息和堆栈
  • 项目标目次布局和技能栈
  • Git 分支和近来的提交记载
  • 相干文件的依靠关系
这些信息告诉 AI"现场长什么样"。
「AI 输出的质量 = 意图上下文 × 状态上下文。」
缺了意图,AI 不知道该往哪个方向走。缺了状态,AI 只能靠猜——猜你的项目布局、猜你的技能栈、猜你的代码风格,猜来猜去就跑偏了。
很多时间你以为 AI "欠好用",过细想想,是不是着实你只给了意图("帮我写个组件"),但没给状态("我的项目用的什么框架、组件放在哪、样式方案是啥")?
上下文窗口:AI 的"工作影象"有上限

这里要讲一个很关键但很多人不太清晰的事儿:「AI 的上下文窗口是有容量上限的。」
你可以把它想象成 AI 的"工作台桌面"。桌面就这么大,你堆的文件越多,它越容易手忙脚乱、找不到重点。
现在主流 AI 模子的上下文窗口大概在 128K~200K token 左右。听起来很大,但一个中等规模的前端项目,光 src/ 目次下的代码就大概凌驾这个数。「你不大概把全部代码都"放到桌上"。」

以是就有了一个"甜蜜区间"的概念:

  • 「上下文占用 < 40%」:AI 缺信息,容易瞎猜、编造不存在的函数或文件
  • 「上下文占用 40%~60%」:信息刚刚好,AI 既有充足的配景,又不会被无关内容干扰
  • 「上下文占用 > 60%」:信息过载,AI 开始"迷路"——大概忽略紧张信息,大概前后抵牾
「Context 工程的核心目标,就是把上下文控制在谁人甜蜜区间里。」
上下文的四个条理

在 Cursor、Claude Code 这类 AI 编辑器里,上下文着实是分层的,从自动得手动,从低到高:

第一层:自动上下文(AI 自己网络的)

你什么都不消做,AI 编辑器就会自动网络一些信息:

  • 「当前打开的文件」:你正在看的代码,AI 天然也能看到
  • 「打开的标签页」:Cursor 会参考你 IDE 里打开的其他文件
  • 「代码库索引」:AI 编辑器会在配景给你整个项目建索引,用语义搜刮找相干代码
这一层是"基线",不须要你费心,但也「不要过分依靠」。由于自动上下文的选择经常不敷精准——特别是大型项目,AI 自动找到的文件大概跟你当前任务关系不大。
第二层:手动上下文(你自动"喂"给 AI 的)

这是提拔 AI 输出质量最立竿见影的方法——「直接告诉 AI 应该看哪些文件。」
在 Cursor 里,你可以用 @ 符号来精准引用:

  • @Files —— 指定某个具体文件:"看一下 @src/hooks/useAuth.ts"
  • @Folders —— 指定某个目次:"参考 @src/components/ 下的组件风格"
  • @Code —— 指定某段代码:选中代码后引用
  • @Docs —— 引用文档:让 AI 参考外部文档
  • @Git —— 引用 Git 信息:近来的 commit、diff 等
在 Claude Code 里也有类似的机制,你可以在对话中直接粘贴文件内容或路径。
「我的履历:养成风俗,每次给 AI 派任务前,先花 10 秒想一想"它须要看到哪几个文件",然后用 @ 手动引用。」 这 10 秒的投入,能省你背面 10 分钟的返工。
举个真实例子:
  1. ❌ 差的做法:
  2. "帮我写一个用户列表页面"
  3. → AI 不知道你的路由怎么配、组件怎么写、请求怎么发,只能按它自己的理解来
  4. ✅ 好的做法:
  5. "帮我写一个用户列表页面,
  6. 参考 @src/pages/OrderList/index.tsx 的页面结构,
  7. 用 @src/hooks/useRequest.ts 里封装的请求方法,
  8. 样式参考 @src/pages/OrderList/index.module.css"
  9. → AI 有了三个"参照物",写出来的代码跟项目风格一致
复制代码
你看,区别就在于你有没有把"参照物"给到位。
第三层:规则上下文(长期收效的"项目影象")

手动 @ 每次都要重复,有没有什么办法让 AI 自动就知道一些规则?有,就是通过设置文件来实现"长期化影象":
工具设置文件作用Cursor.cursor/rules/*.mdc项目级规则,支持 glob 匹配特定文件范例Claude CodeCLAUDE.md项目根目次放一个文件,永世收效GitHub Copilot.github/copilot-instructions.mdCopilot 全局指令通用AGENTS.md跨工具通用的 Agent 指令文件这一层的利益是"一次设置,每次收效"。你把团队的编码规范、技能栈偏好、目次约定写进去,AI 每次对话都能自动读取。
前面 Skills 那篇文章里讲的 .cursor/rules/ 就属于这一层。如果你还没配过,猛烈发起先去配一个最根本的——至少告诉 AI 你们用什么框架、什么样式方案、组件放在哪个目次。
第四层:会话上下文(当前对话的"短期影象")

就是你和 AI 在当前这轮对话中的全部谈天记载。AI 会记取你前面说了啥、它前面改了啥。
但这里有个坑:「对话越长,AI 越容易"忘事"。」
由于上下文窗口是有限的,谈天记载越长,早期的内容就越容易被"挤掉"或"淡化"。这在 AI 研究里叫"lost in the middle"——中央的信息最容易被忽略。
「以是我的发起:一个任务一轮对话,做完就开新的。」 别在一个对话里又改 bug、又写新功能、又做重构,那样后期的输出质量肯定会降落。
实操:8 个立即能用的 Context 管理本事

原理讲完了,接下来说具体怎么做。这 8 个本事是我自己用下来最有效的,从简到难分列,你可以一个一个试:
本事一:用 @ 引用代替"你去看看"

不要说"帮我参考项目里类似的页面",AI 不肯定能找到你想要的。直接 @ 具体文件:
  1. ❌ "参考项目里其他页面的写法"
  2. ✅ "参考 @src/pages/Dashboard/index.tsx 的写法"
复制代码
精准引用,永久比让 AI 自己"搜"靠谱。
本事二:大项目用 .cursorignore 减负

就像 .gitignore 一样,.cursorignore 告诉 AI 编辑器"这些文件你不消管"
  1. # .cursorignore
  2. node_modules/
  3. dist/
  4. build/
  5. .next/
  6. coverage/
  7. *.lock
  8. *.map
复制代码
利益很直接:索引更快、搜刮更准、AI 不会被 node_modules 里几万个文件干扰。
「但注意:万万别把 src/、test/、设置文件这些清撤除。」 它们是 AI 明确你项目标关键信息。
本事三:Monorepo 只打开你在做的谁人包

如果你的项目是 Monorepo,别直接打开整个堆栈根目次。
  1. ❌ 打开 /my-monorepo(包含 20 个子包,AI 疯狂索引)
  2. ✅ 打开 /my-monorepo/packages/web-app(只有你在做的那个包)
复制代码
上下文窗口就这么大,只打开你正在开发的部分,AI 的"注意力"才华会合在精确的地方。
如果确实须要跨包引用,可以用 VS Code 的多根工作区(Multi-root Workspace),只挂载你须要的几个包。
本事四:写好 Rules 文件,让 AI 自动"懂规矩"

这个在 Skills 那篇具体讲过了,这里快速给个模板。在 .cursor/rules/ 下创建一个 project-context.mdc:
  1. ---
  2. description: Project context and conventions
  3. alwaysApply: true
  4. ---
  5. ## 技术栈
  6. - React 18 + TypeScript 5
  7. - 样式:CSS Modules
  8. - 状态管理:Zustand
  9. - 请求:封装在 src/api/request.ts
  10. ## 目录约定
  11. - 页面:src/pages/[PageName]/index.tsx
  12. - 组件:src/components/[Name]/index.tsx
  13. - Hooks:src/hooks/use[Name].ts
  14. ## 编码规范
  15. - 组件用 named export,不用 default export
  16. - Props 用 interface 定义,命名为 [组件名]Props
  17. - 日期处理用 dayjs,不要用 moment
复制代码
这些信息 AI 每次对话都会自动读取,相当于你给 AI 安了一个"项目影象芯片"。
本事五:用 Notepads 管理高频上下文片断

Cursor 有个很好用但很多人不知道的功能——「Notepads」。
你可以把一些经常要引用的上下文片断生存为 Notepad,好比:

  • API 接口的范例界说
  • 团队的 code review 尺度
  • 某个复杂业务逻辑的分析
须要的时间 @Notepads 一下就能引用,不消每次都重新粘贴。
本事六:一个任务一个对话,及时"翻篇"

前面说了,对话越长上下文质量越差。以是:

  • 修一个 bug → 新对话
  • 写一个新功能 → 新对话
  • 做一次重构 → 新对话
在 Claude Code 里有个 /clear 下令可以清空当前上下文重新开始。Cursor 里直接新建一个 Composer 就行。
「别舍不得"之前聊了那么多"。」 带着一堆过期的上下文继承聊,不如干干净净地重新开始。AI 不须要"预热",但它须要"干净的视野"。
本事七:长输出让 AI 写文件,别塞对话里

如果你让 AI 天生了一大段代码大概分析陈诉,别让它直接输出到对话里——那会严肃挤占上下文窗口。
更好的做法是让 AI 把效果写到文件里:
  1. ❌ "帮我分析所有组件的依赖关系,列出来"
  2. → AI 输出 500 行分析结果,塞满了上下文窗口
  3. ✅ "帮我分析所有组件的依赖关系,结果写到 docs/dependency-analysis.md 里"
  4. → 上下文窗口保持干净,结果保存在文件里随时查看
复制代码
本事八:定期审计你的 alwaysApply 规则

如果你在 .cursor/rules/ 里配了很多 alwaysApply: true 的规则,它们「每次对话都会被加载」。随着规则越来越多,光是规则自己就大概吃掉不少上下文窗口。
发起定期审计:

  • 真正须要"每次都看"的规则才设 alwaysApply: true
  • 只跟特定文件范例相干的规则,用 globs 匹配,按需加载
  • 过期的规则及时删掉
  1. # ✅ 只在写 React 组件时加载
  2. ---
  3. description:Reactcomponentconventions
  4. globs:src/components/**/*.tsx
  5. alwaysApply:false
  6. ---
  7. # ❌ 不需要每次都加载的规则硬设成 alwaysApply
  8. ---
  9. description:Reactcomponentconventions
  10. alwaysApply:true
  11. ---
复制代码
三大主流工具的 Context 机制对比

你大概同时在用大概思量用差异的 AI 编码工具,这里做个横向对比,帮你相识各家的上下文机制有什么差异:
特性CursorClaude CodeContinue(开源)自动索引语义嵌入索引,配景自动建基于项目布局分析支持多种索引方式,可设置手动引用@Files@Folders@Docs@Code@Git对话中引用文件路径@ 符号 + 自界说 context provider长期化规则.cursor/rules/*.mdcCLAUDE.md.continue/ 目次设置上下文清除.cursorignore项目级设置.continueignore会话管理新建 Composer / Chat/clear 清空新建会话Notepads支持不支持(用 CLAUDE.md 更换)不支持动态发现语义搜刮自动查找Agent 自主决定读取哪些文件依靠设置的 context provider「如果你只用 Cursor」:重点把握 @ 引用、.cursor/rules/、.cursorignore 和 Notepads。
「如果你用 Claude Code」:重点把握 CLAUDE.md 的写法和 /clear 的使用机遇。
「如果你用 Continue」:重点研究 context provider 的设置,它的机动性最高但上手门槛也最高。
一个完备的实战例子

来看一个真实场景,把上面讲的东西串起来。
「场景:你要在项目里新增一个"用户详情"页面。」
「第一步:确保规则上下文到位」
查抄 .cursor/rules/ 里有没有项目级规则文件。如果还没有,先写一个根本的(见前面本事四的模板)。
「第二步:手动引用"参照物"」
打开 Composer,输入任务时带上具体的参考文件:
  1. 帮我新增一个用户详情页面 UserDetail,需求:
  2. - 路由 /user/:id
  3. - 根据 id 请求用户信息并展示
  4. 请参考:
  5. -@src/pages/OrderDetail/index.tsx(页面结构参考)
  6. -@src/hooks/useRequest.ts(请求方法)
  7. -@src/router/config.ts(路由注册方式)
  8. -@src/types/user.ts(用户类型定义)
复制代码
「第三步:控制对话粒度」
不要说"帮我把这个页面重新到尾做完"。拆成几步:

  • 先让 AI 创建页面文件和注册路由
  • 确认路由没标题后,再让 AI 写页面主体逻辑
  • 末了让 AI 补测试
每一步做完确认一下,再继承下一步。如许每次 AI 须要处理惩罚的上下文更小、更精准。
「第四步:做完这个任务,开新对话」
用户详情页做完了,接下来要做另一个功能?别继承在这个对话里聊,新建一个 Composer,让 AI 带着"干净的视野"开始新任务。
避坑指南

末了说几个常见的坑,都是容易踩的:
1. 别把全部文件都 @ 进去

有人以为"给的越多越好",一口吻 @ 了 20 个文件。效果 AI 被信息沉没了,输出质量反而降落。
「原则:每次只引用跟当前任务直接相干的 3~5 个文件。」
2. 别忽略报错信息

当你让 AI 修 bug 时,「肯定要把完备的报错信息贴上去」。很多人只说"这里报错了",AI 就只能靠猜。把 error stack 贴全,AI 的诊断精确率会高很多。
3. 别在一个超长对话里"万事包办"

前面说了好几遍了:一个任务一个对话。对话长了,AI 会"忘事",会前后抵牾,会把前面的要求和背面的要求混在一起。
4. 别让自动上下文替你思索

AI 编辑器的自动索引和语义搜刮确实能帮你找到一些相干文件,但它的判定不总是对的。「特别是大型项目大概 Monorepo,自动上下文经常"找错重点"。」
花 10 秒手动 @ 几个关键文件,永久比等候 AI 自己找对要靠谱。
5. 别忘了"负面束缚"

不光要告诉 AI "做什么",也要告诉它 "不做什么":
  1. ✅ "用 CSS Modules,不要用 Tailwind"
  2. ✅ "用 dayjs,不要用 moment"
  3. ✅ "只改 UserDetail 组件,不要动其他文件"
复制代码
负面束缚能有效防止 AI "自作主张"。
总结

Context 工程的核心就一句话:「让 AI 在精确的时间看到精确的信息。」
不多也不少,不早也不晚。太少了 AI 瞎猜,太多了 AI 迷路。
如果你本日只能记取三件事,那就是:

  • 「每次 @ 3~5 个相干文件」,比什么都不给好 10 倍
  • 「写一个 Rules 文件」,把项目标技能栈和目次规范告诉 AI
  • 「一个任务一个对话」,别在长对话里"万事包办"
这三个风俗养成之后,你用 AI 编码的服从和质量会有一个显着的提拔。
想要进一步相识,保举这些资源:

  • 「Cursor 动态上下文发现」:https://cursor.com/blog/dynamic-context-discovery
  • 「Claude Code Context 工程」:https://claudefa.st/blog/guide/mechanics/context-engineering
  • 「Developer Toolkit 上下文管理指南」:https://developertoolkit.ai/en/shared-workflows/context-management/
  • 「Continue 开源项目」:https://github.com/continuedev/continue
 
原文链接:https://mp.weixin.qq.com/s/8dXjVDH9ixpTPcjWo0pFPg

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表