从提示工程到上下文工程:AI编程的进化之路

乐云一
  • 笔记
  • note
About 3074 wordsAbout 10 min

从提示工程到上下文工程:AI编程的进化之路

一年前,技术圈最火的词是"提示工程"(Prompt Engineering)。各类教程满天飞:"学会这10个提示词技巧,让AI效率翻倍"、"高阶Prompt模板,价值万元"。大家都在卷谁的提示词写得更花哨。

一年后的今天,风向变了。圈子里的讨论重点从"怎么写好提示词"悄悄转向了"上下文工程"(Context Engineering)。

发生了什么?

第一阶段:提示工程时代(2023-2024)

核心思路:把话说清楚

提示工程时代的逻辑很简单粗暴——你说得越清楚,AI回答得越准确

这个阶段,我们做的事情本质上就是:把需求从脑子里翻译成AI能理解的文字。像教一个刚入职的新人,你告诉他用什么技术栈、要实现什么功能、有什么约束条件、按照什么规范输出,他就照着做。

在上一篇文章里,我总结过一个提示词公式:

[场景定位] + [技术栈约束] + [功能需求] + [输出规范] + [示例参考]

这五要素在当时确实好用。以"监控预警模块"为例,当你把技术栈(Java8 + SpringBoot + MyBatis-Plus)、功能需求(指标上报、预警判定、多渠道通知)、输出规范(分层输出、驼峰命名)一股脑写清楚之后,AI的输出质量确实会有质的飞跃。

那个时期的几个关键技巧

  1. 约束前置:技术栈、性能要求等"不可协商"的条件放最前面,避免AI走偏
  2. 任务拆解:把复杂需求拆成编号明确的子任务,AI逐个落地
  3. 示例锚定:用项目中已有代码结构(如BaseEntity、Result封装)作为参考,让生成代码无缝融入
  4. 迭代开发:不要指望一次到位,分步骤推进,每步及时反馈纠偏
  5. 项目约定:在.github/copilot-instructions.md里写好规则,AI每次对话自动加载

这套路用了一年多,说实话,效果确实比"帮我写个监控模块"这种模糊提示好太多了。

但问题也来了

提示工程有个致命的局限——所有的上下文都是静态的,都得你手动提供

打个比方,提示工程像是你每次跟AI聊天都得先自我介绍:"你好,我是做Java后端的,项目用的是SpringBoot,数据库是MySQL,前端用Vue..." 每次开新对话都要重复一遍,遗漏了什么AI就给你整出幺蛾子。

更崩溃的是续接开发。隔两天想接着干活,AI完全不记得之前写了什么,你又得把之前的代码贴一遍、逻辑说一遍。上下文窗口一满,它还能把前面的内容忘了,直接给你来个"从零开始"。

你花在"给AI提供上下文"上的时间,有时候比写代码还多。

这就像你带了个实习生,能力是有的,但没有记忆。每天上班你都得把项目背景、代码规范、已完成的模块重新交代一遍,你说累不累?

第二阶段:上下文工程时代(2025)

核心思路:让系统自动管理上下文

2025年,随着AI编程工具的进化(Cursor、Windsurf、Copilot Workspace等),一个新概念浮出水面——上下文工程

如果说提示工程是"教你怎么跟AI说话",那上下文工程就是"构建一套系统,让AI在正确的时间看到正确的信息"。

不是"我该怎么说",而是"我该怎么组织"。

这就像从"手工作坊"进化到了"流水线"。以前你手动把每一份材料递给AI,现在你搭好流水线,材料自动传到AI面前。

三种上下文类型

上下文工程把AI需要的信息分成了三类:

1. Instructions(指令)——告诉AI怎么干活

这就是之前的copilot-instructions.md思路的升级版。不只是写规则,而是构建一套完整的指令体系:

  • 代码规范和项目约定
  • 工作流程和思考链路
  • 禁止事项和安全红线
  • 分层架构和数据流向

2. Knowledge(知识)——告诉AI知道什么

这一层是提示工程时代最缺失的。以前你得手动把项目文档、技术规范、业务逻辑一股脑贴给AI。现在:

  • RAG检索:AI自动从知识库中检索相关文档
  • 代码库索引:AI能理解整个项目的代码结构
  • 结构化数据:数据库Schema、API文档自动纳入上下文

3. Tools(工具)——让AI能干什么

AI不再只是"嘴上说",它能动手了:

  • 读取文件系统,自动获取项目代码
  • 执行命令,运行测试、检查编译
  • 调用API,查询数据库、操作云服务
  • 联网搜索,获取最新文档和解决方案

读写上下文的双向管理

上下文工程不只是"给AI看什么",还包括"AI记住什么"。

读上下文(Reading Context)——AI获取信息的方式:

  • 工具调用结果:通过MCP等协议自动获取项目信息
  • RAG检索:从知识库中自动检索相关文档片段
  • 代码分析:自动扫描和理解项目代码结构
  • 结构化数据:数据库Schema、配置文件等自动加载

写上下文(Writing Context)——AI保存信息的方式:

  • Notepad机制:在对话窗口之外保存信息,不受上下文长度限制
  • Memory机制:跨会话持久化,上次聊的内容下次还记得
  • copilot-context.md模式:自动记录开发进度和关键逻辑

实战对比:以监控模块为例

还是拿监控预警模块来举例,对比两种方式的差异。

提示工程的做法:

第一步:写一个超长的提示词,把所有需求、约束、规范全塞进去
第二步:AI生成代码,你检查发现一堆问题
第三步:反复修改提示词,重新生成
第四步:终于差不多了,但是隔两天要续接开发
第五步:把之前的代码再贴一遍,重新描述需求
第六步:又回到第二步...

这个过程中,你像个"提示词打字员",主要工作就是不断地给AI喂信息。

上下文工程的做法:

第一步:在项目里建好 instructions 文件(一次性)
第二步:创建 copilot-context.md 记录进度锚点
第三步:把参考代码和样板文件放在AI能自动读取的位置
第四步:启动开发,AI自动加载指令、自动检索知识库
第五步:每完成一个阶段,自动记录进度到context文件
第六步:下次续接时,AI自动读取context,无缝继续

结果就是:返工少了,连续性强了,AI对你的项目理解越来越深。

效率对比

用一组数据说话。同样是开发一个中等复杂度的功能模块:

维度传统团队AI辅助(提示工程)AI Agent全栈(上下文工程)
人员3人(Android + 后端 + 前端)1人1人
周期4-6周2-3周1-2周
沟通成本高(跨角色协调)中(与AI反复沟通)低(系统自动管理)
返工率
开发者角色实现者提示词工程师设计者+审核者

注意看最后一行——开发者的角色发生了根本性转变

在上下文工程时代,你的核心工作不再是"一行一行写代码",而是:

  • 理解问题:搞清楚到底要做什么
  • 设计架构:决定技术方案和数据流向
  • 编排AI:搭建上下文系统,让AI高效工作
  • 审核代码:AI写完了,你把关质量

从"搬砖工"变成了"包工头",这感觉其实还不错。

我的实战心得

用了一段时间的上下文工程后,几个比较深的感触:

1. 前期投入是值得的

刚接触上下文工程时,建instructions文件、整理知识库、配置工具链——这些前期工作确实要花时间。但这就跟搭建CI/CD流水线一样,一次性投入,后面每次开发都在受益。

我现在每接手一个新项目,第一件事就是搭好这套上下文体系。磨刀不误砍柴工,古人诚不欺我。

2. 信任AI,但必须审核

AI在上下文工程时代确实变强了,但"变强"不等于"可靠"。

它能自动检索你的项目代码,但可能理解错了某个工具类的用途。它能自动获取数据库Schema,但生成的SQL可能漏了索引。它能跨会话记住开发进度,但可能在续接时悄悄改了之前的设计。

AI是效率工具,不是信任对象。 它写的每一行代码,你都得过一遍。不过审代码总比写代码轻松,这个账算下来还是赚的。

3. 记录AI协作过程

我现在养成了一个习惯:每次跟AI协作完成一个模块,就把关键信息记录下来——用了什么提示词策略、踩了什么坑、怎么解决的。

这些记录慢慢积累成了一套可复用的方法论库。下次遇到类似的模块开发,直接套用,不用从零摸索。

4. 在团队中分享经验

上下文工程不是一个人的事。在团队里推广最佳实践,统一instructions文件模板,共建知识库和样板代码——这些做好了,整个团队的AI编程效率都能上一个台阶。

一个人用AI是加分项,一个团队用好AI是乘号。

未来核心竞争力在哪

说了这么多,一个很现实的问题:在AI编程越来越强的时代,开发者的核心竞争力到底是什么?

我的答案是四个能力:

1. 问题理解力——搞清楚用户到底要什么,这永远是第一步。AI再强,它也只能理解你表达出来的需求。而你连需求都没理解透,给AI的输入就是垃圾,出来的自然是垃圾。

2. 架构设计力——AI擅长实现细节,但不擅长做系统级的设计决策。选什么技术栈、怎么划分模块、数据怎么流转——这些是架构师的大脑该干的事。

3. AI协作力——就是这篇文章说的上下文工程能力。怎么搭建上下文体系、怎么编排AI的工作流、怎么让AI和项目深度融合。

4. 代码审核力——AI写代码越来越快,但质量把控还得靠人。能快速理解AI生成的代码、发现潜在问题、做出改进决策,这个能力会越来越值钱。

写在最后

从提示工程到上下文工程,本质是从"手工作坊"到"工业化生产"的转变。

提示工程教你"怎么跟AI说话",上下文工程教你"怎么让AI系统性地帮你干活"。前者是沟通技巧,后者是工程能力。

想起一句话:"AI不会取代开发者,但不会用AI的开发者,会被会用AI的开发者取代。"

这话虽然有点老套,但确实是这么个理。

工具在进化,用工具的方式也得进化。提示工程已经够用了?不,上下文工程才刚刚开始。

Last update:
Contributors: LeYunone
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.14.7