Skip to content
汉松札记
Go back

从软件工程到上下文工程:AI时代的开发者新范式

技术笔记

前言

或许你也有过这样的时刻:在代码评审会议上,同事用 AI 助手几分钟就重构了一个你花了几天才完成的微服务架构;又或者,在日常开发中,你发现团队里的新人正在用 AI 编程助手,轻松地处理那些曾经需要反复查阅文档和调试的复杂任务。我们曾经坚信的“代码即真理”的世界,正在被一种更模糊、更接近对话的逻辑所渗透。我们还没来得及完全掌握“提示工程”的要领,**“上下文工程”**这个更宏大的概念,已经开始在 AI 的社区里引发讨论。

然而,当一个新概念如潮水般涌来,将旧的拍在沙滩上时,我们心中难免会升起一丝疑虑与不安。这究竟是一场由少数精英设计的“新瓶装旧酒”的文字游戏,还是一场真正触及我们工作核心的根本性变革?对于习惯了代码的确定性与逻辑的工程师而言,这种转变尤为深刻。软件工程师的角色,正在从用精确指令建造系统的建筑师,转变为用启发式信息引导不确定性智能的乐队指挥。这种从控制到引导的转变,不仅是技能的更迭,更是思维方式的巨大挑战。

所以,面对这个新物种,你我这样的工程师,该如何看清它与我们熟悉的软件工程之间那若即若离的血缘关系?我们该如何校准自己的位置,才不至于被这场智能革命甩下车?

焦虑解决不了问题,让我们一起拨开上下文工程的层层迷雾,并在此过程中重新审视“创造”的定义。如果一个系统的大部分行为不是由我们的精确指令决定,而是由我们提供的“环境”所“涌现”,那么,我们的价值是什么?

究竟什么是上下文工程?

我们先来看看这个概念是怎么出现的。一切始于 Shopify CEO Tobi Lütke 的一条推文:

我真的很喜欢“上下文工程”这个术语,而不是提示工程。 它更好地描述了核心技能:为 LLM 能够合理解决的任务提供所有背景的艺术。

Andrej Karpathy 紧接着转发并给出了更详尽的解读:

“上下文工程”优于”提示工程”+1。 人们通常会把提示工程理解为在日常使用中给 LLM 的简短任务描述。而在每个工业级的 LLM 应用中,上下文工程是一门精妙的艺术和科学,它需要用恰到好处的信息填充上下文窗口,为下一步操作做准备。之所以说是科学,是因为要正确地做到这一点,需要任务描述和解释、少量样例(few shot)、RAG、相关的(可能是多模态的)数据、工具、状态和历史记录、压缩等等。如果信息太少或形式不对,LLM 就无法获得最佳性能所需的正确上下文;如果信息太多或太不相关,LLM 的成本可能会上升,性能可能会下降。要做好这件事绝非易事。之所以说是艺术,是因为它需要对 LLM 的”心理学”有直观的理解。 除了上下文工程本身,LLM 应用还必须: 将问题恰当地分解为控制流 恰当地打包上下文窗口 向合适类型和能力的 LLM 发出调用 处理生成-验证的用户界面流程 更多其他方面 - 包括护栏、安全、评估、并行处理、预取等等 因此,上下文工程只是新兴的、重要的软件层中的一小部分,这个软件层负责将单个 LLM 调用(以及更多功能)协调成完整的 LLM 应用。把这些简单地称为”ChatGPT 包装器”是过时且完全错误的说法。

Karpathy 的话点明了核心:上下文工程远不止是写提示词,它是为 AI 构建一个完整、高效的信息环境。

其实,这个观念的转变几乎是水到渠成的。自从 ChatGPT 出现,我们就意识到,面对无状态的模型,上下文就是一切。我们一路走来,从最初钻研提示词的“提示工程”,到后来借助各类工具探索人机协作的“氛围编程”(vibe coding),再到今天,我们终于为这套系统性的实践找到了一个精准的名字:上下文工程。

它不是一个新造的词,而是对我们当前最佳实践的总结。它要求我们用系统化思维,将以下几个方面整合起来:

  1. 动态信息检索:AI 不能只靠自带的知识,它需要像人一样能随时“查资料”。我们得教会它从知识库、API 或实时数据中精准地调取信息。
  2. 记忆管理:为了让对话能持续,我们需要为 AI 设计记忆机制,帮它记住用户偏好、总结历史对话,并在恰当的时候回忆起来。
  3. 工具集成:AI 也需要“双手”来执行任务。我们要确保它能熟练地使用代码执行、数据库查询等外部工具。
  4. 指令编排:在复杂的工作流中,如何组织指令、范例和上下文的呈现顺序,直接决定了 AI 能否理解并完成任务。

简单来说,上下文工程就是一门为 AI “营造情境”的学问,一门精妙的艺术与科学。

继承与演进:从软件工程到上下文工程

你可能会觉得这听起来有些颠覆,但如果我告诉你,上下文工程的内核其实与你熟悉的软件工程一脉相承,你会怎么想?

所有工程学的本质,都是通过可控的输入(信息),在一个我们不完全理解的复杂实体(系统)中,换取期望的输出(行为)。无论是用代码构建软件,还是用上下文引导 AI,我们都在做同一件事。

不信?你看这几个相似之处:

看到这里,你应该明白了:上下文工程并非颠覆,而是软件工程的自然演进。 它将我们早已熟知的工程原则,应用到了一个以 AI 为核心的新场景。其最显著的特征,就是将“为 AI 构建和优化信息环境”作为了新的核心任务。

过去,我们为人类设计 GUI,是“人类的翻译”,把机器逻辑翻译成直观的视觉语言。如今,我们为 AI 准备 CLI,因为文本才是 AI 的母语,清晰、结构化的文本是与它最高效的沟通方式。我们成了“AI 的编剧”。

根本区别:建筑师 vs. 乐队指挥

尽管有千丝万缕的联系,但两者面对的“智能”截然不同,这也导致了它们在实践中的根本差异。

软件工程面对的是确定性的“机械智能”,由我们从零构建,完全按代码逻辑运转。而上下文工程面对的是概率性的“涌现智能”,其内部运作对我们来说仍是黑箱。

这个差异,带来了工程师角色的转变:

总结

所以,回到我们最初的问题。上下文工程与软件工程之间那若即若离的血缘关系,现在已经清晰:它不是颠覆,而是我们工程思维在AI时代的自然演进与升华。我们工程师的定位,也不再是代码的堆砌者,而是智能的引导者。

我们不再仅仅是那个用精确指令建造系统、追求确定性的建筑师。如今,我们手握的不再只是键盘,更是一根无形的指挥棒。我们成为了用启发式信息引导不确定性智能的乐队指挥,在人与AI的协同演奏中,去交付“被唤醒”的智能,而不是“被完成”的软件。这不是对工程师价值的挑战,而是我们价值升维的机遇。

在不远的未来,我们的技术方案将不再是“这个功能应该用什么架构和算法来实现?”,而是“为了让 AI 实现这个功能,你会为AI设计一个怎样的信息供给策略?”


订阅 技术笔记

RSS 邮件订阅待配置
Share this post on:

Previous Post
AI 编程:找轮子,别造轮子
Next Post
DeepSeek新论文SPCT:让奖励模型学会“先定规则后点评,再打分”