大家好, 这里是 CodeAgent
最近看到一句话
Context Engineering is the New Vibe Coding
当然,你不禁想知道,"Vibe Coding" 是什么?
想象一下:
在一个周末下午, 阳光明媚, 你打开 IDE,放着抒情的音乐,没有特别强的目标,只是突然想写一个小游戏,想看看它 "长什么样"
这种享受编程过程中的氛围与感觉,而不仅是关注功能的实现或者效率,就可以称作是 "Vibe Coding".
它通常指一种 "沉浸式" 的编程状态, 注重创作过程的 "感觉".
当然,我在写这篇文章的时候,一边放着音乐, 也可以称作是 "Vibe Writing".
那么,什么是 Context Engineering 呢?
还记得刚用各种Agent时候,比如 Copilot, ChatGPT等等,我们精心设计提示词(prompt), 比如:
"你是某领域的专家,请使用 A 和 B 工具,参考 Z 的方式,完成 Y 任务"
目的是能够清晰表达请求,喂给模型明确的指令,以此引导模型产生理想输出. 它通常是一次性的, 关注的是 "在某个时间点应该对模型说什么".
对于这种偏向单条Prompt的方式,我们可以称之为 "Prompt Engineering".
随着 LLM 应用变得复杂, 走向生产环境,仅靠 "聪明的提问" (Prompt)已难以满足需求. 更多需要关注模型在生成回答时所感知的全部上下文信息,而不仅是单条 prompt, 也就是 "Context Engineering".
下面是 LangChain 给出的定义
Context engineering is building dynamic systems to provide the right information and tools in the right format such that the LLM can plausibly accomplish the task.
- Context Engineering 是一个系统
复杂的 Agent 通常需要从多个来源获取上下文, 这些上下文可能来自应用开发者、用户、之前的交互、工具调用,或其他外部数据.
- 这个系统是动态的
许多上下文信息是动态生成的, 而不只是静态的一段 prompt
- 需要提供正确的信息和合适的工具
Agent 能够正常工作的很大原因,就是需要正确有用的信息,并且需要给 LLM 提供合适的工具.
- 有效的表达方式
和 LLM 沟通时,表达的方式也很关键, 简洁并且描述清晰的信息比冗杂的信息会更加有效
下图是来自X上的一个帖子:
可以看到, Context Engineering 和 Prompt Engineering 并不是割裂的两个定义.
相反, Context Engineering 是 Prompt Engineering 的超集.
它是一种系统设计方法:
- 目的是为 LLM 提供完成任务所需的全部上下文信息,不仅仅是单条提示词。当然, "Prompt" 不再只是文字输入, 而是一个完整的上下文窗口(context window),模型基于此生成响应。
完整上下文可能包含以下元素:
- 系统消息(设定角色与规则)用户提问或指令对话历史或当前状态摘要长期记忆 / 已知事实外部检索到的文档或数据AI 可调用的工具或函数的输出
也就是, 模型看到的一切都是关键输入, 决定其响应质量与行为表现
上下文工程涉及将多种组件组合在一起, 包括基础提示词(prompt), memory, RAG流程的输出, 工具调用的结果, 有结构的输出格式,以及行为约束(guardrails)
相比 Prompt Engineering
- 上下文工程的思维方式,不再只是写好一个 "Prompt",而是设计一个完整的系统.
提示词只是整个系统的一部分,并且需要知道如何组织和管理所有的辅助信息, 包括对格式的精心设计,以及对上下文窗口限制的管理
- 由于 LLM 的输入有固定的 token 上限,Context Engineering需要决定哪些信息最重要,以及如何压缩或截断不那么关键的内容本质上,Context Engineering 是一种整体性方法,旨在每次调用模型时,精心策划并优化它的短期 "工作记忆"而 Prompt Engineering 往往依赖反复试验, 需要不断微调措辞然后一直重复, 这种方式可能对某个输入有效,但一旦换一个稍微不同的场景,又需要重新调整
换句话说,和 LLM 沟通的角色逐渐从:
入门完成一个个单点功能 -> 设计可复用可扩展的系统性架构
顺便回到最开始的那句话, 为什么 "Context Engineering is the New Vibe Coding" ?
- Vibe Coding 强调氛围和随感,但比较不可控,一旦任务复杂就容易失效Context Engineering 则是系统化的工程设计,适合生产、团队协作和企业级应用
相比之下,很明显, Context Engineering 会成为主流的工程能力. Vibe coding不会消失,但会成为探索阶段的补充,也会一直存在.
好了,今天就到这里,下次来一起探索更多 Context Engineering 的内容
推荐阅读:
还有来自 Langhian 的视频,讲解了什么是 Context Engineering, 也推荐一看: