May 2026
Prompt Engineering 没死,它被重新归位了
从模型偏好到 Context Engineering 与 Harness Engineering
前几天我在看一个现象:有些用户并不总是追最新、最强的模型。
GPT-4o 下线后,很多人怀念它。DeepSeek R1 后续明明有新版本,仍然有不少用户继续用旧版本或特定版本。站在工程师视角,这件事一开始有点反直觉:如果新模型能力更强,为什么用户不直接换过去?
后来我发现,这不是“用户不懂模型”,也不是“大多数用户需求太低”。更准确的说法是:不同用户在优化不同的评价函数。
工程师更容易把模型当生产力工具,优先看任务完成率:能不能读懂代码、改对文件、跑通测试、处理长上下文、少犯低级错误。但很多聊天、创作、陪伴、角色扮演用户,并不只是在评估能力。他们还在评估语气、节奏、风格、连续性、控制权,以及那个模型是不是“像自己习惯的那个”。
这件事把我带回到另一个问题:AI 产品的体验到底由什么决定?
如果答案只是“接入最强模型”,那模型升级应该天然是体验升级。但现实不是这样。模型能力当然重要,可一旦能力跨过某个可用阈值,用户开始在意的东西会变多:风格、稳定性、成本、速度、是否保留选择权、是否能迁移原来的 persona 和写作习惯。
这也是我想写这篇文章的原因。它不是一篇“提示词技巧教程”,也不是一篇模型测评。它想回答的是:
当模型越来越强以后,Prompt Engineering 还重要吗?Context Engineering 和 Harness 又到底在解决什么?
我的答案是:Prompt Engineering 没有死,它被重新归位了。
它不再是“提示词咒语”,而是模型可见接口设计。Context Engineering 决定模型这一轮看见什么;Harness 决定工具、状态、失败、评估、运行环境怎么组织;Prompt Engineering 则负责把这些模型可见信息表达成模型能稳定理解和执行的形式。
不是所有体验问题都能靠更强模型解决
工程师很容易有一个默认假设:模型越强,产品越好。
这个假设在 coding agent、复杂工程任务、长链推理、科研分析里大体成立。模型能力还没完全越过阈值时,更强模型往往直接决定任务能不能做成。一个模型能稳定修改大型代码库,另一个模型连文件都读不明白,用户当然选前者。
但不是所有 AI 使用场景都处在这个阶段。
日常写作、总结、翻译、普通问答、轻办公、聊天陪伴、角色扮演、轻量创作,这些场景里,很多模型已经足够可用。模型过了“能用”的线以后,用户不再只问“哪个最聪明”,而会开始问:
- 哪个更顺手?
- 哪个更快、更便宜?
- 哪个更像我原来用惯的风格?
- 哪个更少说教、更少打断沉浸感?
- 哪个能保留我的角色卡、语气和长期偏好?
- 哪个让我觉得自己仍然有控制权?
GPT-4o 的怀念潮,本质上不是 benchmark 争议。很多用户怀念的是一种交互质感:它更会接住情绪,更愿意停留在对话里,更像一个稳定的对话对象,而不是一个急着完成任务的系统。
DeepSeek R1 的持续使用也是类似信号。技术用户在意开放、便宜、可部署、可替换;创作用户未必关心这些。他们更关心它是否“够用且顺手”,是否能写出自己想要的味道。
这对 AI 产品工程师有一个很直接的启发:模型行为不是后端实现细节,它本身就是产品界面。
语气、拒绝方式、是否先承接情绪、是否保留风格、是否迁移用户习惯,这些都不是“模型接入完成以后顺手调一下”的小事。它们和按钮位置、页面布局、加载速度一样,都是体验的一部分。
Prompt Engineering 降温了,但问题没有消失
这几年 Prompt Engineering 的热度确实下降了。
2023 年那种“提示词秘籍”“万能咒语”“Act as an expert”“超级 CoT 模板”的时代过去了。模型基础能力变强以后,普通用户直接说需求也能得到不错结果,“提示词技巧”的稀缺性自然下降。
与此同时,大家开始谈 Context Engineering、Memory、Tool Use、Eval、Agent Workflow,最近又开始谈 Harness。这不是概念炒作,而是应用形态变化后的自然结果。
早期很多 LLM 应用就是一次调用:把用户输入、系统 prompt 和少量上下文拼起来,送进模型,拿回结果。那时候 prompt 几乎就是应用能力的主要控制面。
现在越来越多应用不是一次调用了。一个 Agent 系统可能要检索 memory,读取文件,调用工具,维护状态,处理失败,多轮执行,再把中间结果压回上下文。问题自然从“这句话怎么写”扩大成:
- 模型这一轮应该看到什么?
- 工具返回结果怎么压缩?
- 哪些上下文会污染判断?
- 失败后是重试、回滚,还是交给另一个节点?
- 哪些约束应该写进 prompt,哪些应该交给 schema、validator 或测试?
所以 Prompt Engineering 不是被 Context Engineering 和 Harness 取代了,而是被放回了它真正应该在的位置。
它不再是全部控制面,但仍然是模型行为控制里很靠前的一层。
三个词其实是一条控制链
我现在更愿意把 Prompt、Context、Harness 看成同一条控制链上的三层。
Prompt Engineering 关注模型直接看到的信息如何表达。它处理的是指令、示例、字段名、schema description、工具描述、输出格式、分隔符、推理字段、语气约束。
Context Engineering 关注模型这一轮到底看到什么。它处理的是上下文选择、排序、压缩、检索、过滤、memory 注入、工具结果摘要。
Harness 关注模型运行环境如何组织。它处理的是工具、状态、失败恢复、评估、观测、回滚、多节点协作、模型路由和外部校验。
可以粗略写成这样:
Harness:整个运行环境怎么组织
Context:这一轮模型应该看到什么
Prompt:这些信息如何表达给模型
对开放式 agent 来说,Context 往往先决定上限。如果相关文件没进上下文,再好的 prompt 也救不了。如果工具返回结果被错误压缩,模型也很难稳定推理。
但对用户直接可见的 C 端流程,Prompt 仍然非常关键。因为很多时候,正确材料已经给了模型,问题变成:它能不能第一次就按正确方式理解和输出。
用户点一下按钮,期望看到的是一次顺滑完成的体验,不是模型调用三次、校验两次、失败重试以后才勉强生成。多一次模型调用就多一份延迟和成本,多一次重试就多一份体验风险。
这就是 Prompt Engineering 在今天的位置:提高首轮命中率。
今天有效的 PE,不是写一句漂亮提示词
如果把 Prompt Engineering 理解成“写一句神奇提示词”,那它确实越来越弱。
但如果把它理解成“模型可见接口设计”,它仍然很重要,而且很多有效手段并不长得像传统 prompt。
1. Few-shot 不是例子,是行为范式
Few-shot 的作用不只是“给模型看几个例子”。它会告诉模型输出格式、字段边界、任务分布、标签空间和产品希望的语气。
很多时候,模型不是因为看懂了一句抽象规则而稳定输出,而是因为它看到了“这种情况应该长这样”。
这在结构化输出、路由、字段选择、工具调用里尤其明显。示例越接近真实产品路径,模型越容易按那个局部分布工作。
但 few-shot 也有副作用。旧例子会锁住旧行为。如果 schema 改了,example 还保留旧字段,模型很可能继续沿用旧字段。Few-shot 很强,所以它必须和 schema、prompt、测试一起版本化维护。
2. Schema 不只是格式约束,也是 prompt
Structured Outputs 和 constrained decoding 让 JSON 合法性更可靠,但它们只解决“形状合法”,不解决“语义一定对”。
只要 schema 里有多个合法值,模型仍然要在合法空间里做选择。它怎么选,受到字段名、字段描述、枚举值、字段顺序的影响。
这意味着 schema description 不是给工程师看的注释,它也是模型可见信息。很多时候,同一个要求写在全局 prompt 里不稳定,写进字段描述里反而更稳定,因为字段描述离模型即将生成的槽位更近。
所以 schema 有两层作用:
- constrained decoding 保证输出结构合法;
- schema text 影响模型在合法结构里怎么选择。
3. 推理提示应该变成任务相关字段
我越来越少相信空泛的“请仔细思考”。
更稳的做法不是让模型自由写一段长推理,而是把产品关心的中间判断写成输出结构的一部分。
例如,不是只写“think step by step”,而是让模型先判断:
- 输入属于什么类型?
- 哪些元素必须保留?
- 当前上下文是否足够?
- 哪个对象是核心对象?
- 后续生成必须避免什么?
这类 question-driven reasoning 比泛泛 CoT 更可控。它不是让模型随便想,而是让模型按产品需要回答几个具体问题。错误也更容易定位:最终结果错了,到底是输入理解错、条件判断错,还是最后生成偏了,可以更快看出来。
4. 控制信息不要混进生成内容
有些内部 marker、路由标签、控制信息,如果混进自然语言生成通道,模型可能会把它原样输出,甚至让它出现在用户可见内容里。
这不是模型“不听话”,而是接口设计不干净。
如果一个信息只是给系统控制流程用,不应该被用户看到,就不要放进会被生成的文本里。更好的方式是放进结构化 metadata、代码侧字段或下游不可见的控制层。
Prompt 可以告诉模型“不要输出这个 marker”,但更好的设计是:一开始就不要让它进入用户可见的生成通道。
5. 给模型语义标签,不要让它做脆弱索引计算
LLM 不擅长维护脆弱的 index 算术,尤其是在长上下文、多对象、多轮编辑里。
让模型输出“第 0 页”“第 1 页”“before_index = 3”,很容易遇到 0/1-based 混乱、越界、引用错对象。
更稳的方式是给对象一个可复制的语义标签,让模型直接匹配文本 handle。
原则很简单:让模型做它擅长的匹配,不要让它做它不擅长的算术。
换模型,也是在迁移一套产品接口
很多产品把模型升级当成后端替换:把 model name 改掉,跑通接口,就算完成。
这通常不够。
不同模型对 verbosity、few-shot、schema、reasoning instruction、工具描述、system/user 位置、temperature 的敏感度都不一样。一个 prompt 在 Claude 上刚刚好,换到 Gemini 可能变啰嗦;在 OpenAI reasoning model 上清晰直接,换到另一个模型可能需要更多示例;DeepSeek R1 这类模型甚至有自己的提示和采样习惯。
所以 prompt 不是完全模型无关的资产。它更像和模型、schema、上下文格式、解码参数绑定在一起的一套产品接口。
模型切换不应该被当成简单替换,而应该被当成一次 prompt migration:
- 保留关键 case;
- 观察行为差异;
- 调整 prompt、schema description、few-shot 和参数;
- 看首轮成功率、风格一致性和失败边界有没有变化。
这也解释了为什么用户会怀念旧模型。模型变强了,但原来的交互接口、风格习惯和情绪节奏不一定迁移过去。对用户来说,这不是“后端升级”,而是产品界面被换掉了。
PE 的边界:它提高概率,不提供硬保证
强调 Prompt Engineering 仍然重要,不等于所有问题都交给 prompt。
Prompt 的本质是软控制。它能提高某个行为发生的概率,但不能提供硬保证。
对高风险要求,必须下沉到更确定的层:
- 输出形状交给 structured output / schema;
- 业务红线交给 validator;
- 稳定引用交给结构化 ID 或语义 handle;
- 不该暴露的信息交给代码侧隔离;
- 关键流程交给测试和监控;
- 复杂 agent 行为交给 harness、eval、trace 和 fallback。
这也是成熟 AI 工程和“写提示词”的差别。
真正有经验的工程师不是把所有要求都塞进 prompt,而是判断某个要求应该放在哪一层:
- 偏好、语气、轻量约束,可以先放 prompt;
- 格式、字段、局部语义,应该靠 schema 和 examples;
- 硬规则、不可接受的错误,要靠 validator、代码逻辑和测试兜底;
- 长期稳定风格或模型级偏好,可能最终要进入数据、微调或更深的学习层。
这是一条从浅到深的控制链。
结论:PE 没死,它成了产品稳定性工程的一部分
Prompt Engineering 没有死。
死掉的是把 prompt 当咒语的想象。
在真实应用里,它正在变成一种更朴素、更工程化的能力:设计模型可见信息的表达方式、结构和约束。
Context Engineering 和 Harness 的上升是必然的。应用越复杂,模型看到什么、工具怎么用、状态怎么维护、失败怎么恢复,就越重要。
但只要模型还需要根据一段可见输入产生行为,Prompt Engineering 就不会消失。
特别是在高稳定性 C 端 AI 应用里,prompt 仍然直接影响用户体验。它不一定是最外显的技术壁垒,也不一定能单独构成护城河。但真正有价值的经验,往往藏在持续调优里:
- 理解用户场景;
- 理解模型脾气;
- 理解输出结构;
- 理解失败边界;
- 知道哪些东西应该写进 prompt;
- 知道哪些应该放进 schema;
- 知道哪些必须交给代码和 validator。
所以我现在对 Prompt Engineering 的看法是:
它不再是提示词秘籍,而是模型可见接口设计。
对高稳定性 AI 产品来说,它仍然是产品稳定性工程的一部分。
也因此,AI 产品不是换最强模型就完了。真正的产品能力,是把模型能力、上下文、工具、约束、风格、成本和用户控制权组合成一套用户愿意长期使用的体验。
参考资料
市场趋势与 Context / Harness:
- Simon Willison: Context engineering (accessed: 2026-04-30)
- LangChain: The rise of context engineering (accessed: 2026-04-30)
- Anthropic: Effective context engineering for AI agents (accessed: 2026-04-30)
- Anthropic: Effective harnesses for long-running agents (accessed: 2026-04-30)
- Anthropic: Harness design for long-running application development (accessed: 2026-04-30)
Prompt Engineering 与结构化输出:
- The Prompt Report: A Systematic Survey of Prompt Engineering Techniques (accessed: 2026-04-30)
- Rethinking the Role of Demonstrations: What Makes In-Context Learning Work? (accessed: 2026-04-30)
- Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (accessed: 2026-04-30)
- Least-to-Most Prompting Enables Complex Reasoning in Large Language Models (accessed: 2026-04-30)
- OpenAI: Introducing Structured Outputs in the API (accessed: 2026-04-30)
- JSONSchemaBench: A Benchmark for Evaluating Constrained Decoding for JSON Schema (accessed: 2026-04-30)
- Google Gemini: Structured output (accessed: 2026-04-30)