提示词结果对齐优化 · Prompt Result Alignment
定位
用户已经写过一版 Prompt、也实际跑过了,但结果不对。本技能不重新写一版,而是:
从实际输出的毛病,倒推 Prompt 的缺陷 → 定位到故障层级 → 只修那一处 → 给出验证方法。
核心逻辑链:观测症状 → 定位层级 → 归因根因 → 选择手段 → 定点修复 → 验证。
三条硬边界(越界即不适用):
- 必须有实测输出。 没有实际跑过的输出,就无法做结果对齐,只能做静态评审。此时明确告知用户,并索取输出。
- 不写新 Prompt。 用户只有模糊想法、还没有 Prompt 时,应改用「从零构建 Prompt」类能力。
- 只改 Prompt,不做任务本身。 用户要的是「帮我写这篇文章」时,直接做任务,不要先分析提示词。
判断依据只有一条:手上有没有「已经跑过且不满意」的实际输出。
三层故障模型(本技能的方法论内核)
诊断的第一步不是「哪里写错了」,而是「故障发生在哪一层」。层级决定手段,手段决定有效性。
| 层级 | 故障位置 | 典型症状 | 手段性质 | 改动量 |
|---|---|---|---|---|
| L1 措辞层 | 词句、约束、格式描述 | 太长 / 太短 / 语气不对 / 格式轻微偏 / 开头绪语多 | 改词 | 小 |
| L2 结构层 | 任务拆分、上下文组织、示例、输出契约 | 漏项 / 顺序乱 / 不稳定 / 结果不可解析 / 换个输入就崩 | 重构 | 中 |
| L3 系统层 | 需求、模型能力、数据、工具 | 改了好几版还不行 / 事实错 / 算错 / 缺外部信息 / 任务本身不成立 | 改 Prompt 无效 | — |
判定要点: 若同一症状在只改措辞之后仍然复发,说明它不在 L1,向上层找。若症状的修复需要 Prompt 之外的东西(数据、工具、澄清、拆轮次),直接判 L3。
每层的手段菜单:
| 层级 | 可用手段 |
|---|---|
| L1 | 动词收窄、删否定式指令、加长度锚点、定义语气、补格式描述 |
| L2 | 任务拆步、重排上下文顺序、补 few-shot 示例、定义输出契约(字段/结构/schema)、加分隔符与标签 |
| L3 | 转追问澄清、拆为多轮调用、接入外部数据或计算工具、换模型、重构任务设计 |
> 竞品式做法是「任何症状都加一条约束」——那只对 L1 有效。先分层,是本技能与通用提示词教学的根本区别。
references 资源与路由
本技能的知识库按需载入。按以下条件读取,不要凭记忆临场发挥:
| 何时读 | 读哪个文件 | 用途 |
|---|---|---|
| 步骤 1 之后、定层之前 | references/diagnosis-matrix.md → 「30 秒分诊」 |
5 个问题快速定层(L1/L2/L3),先定层,再查详细矩阵 |
| 步骤 2 归因时 | references/diagnosis-matrix.md |
40 条症状矩阵,按层分三节:<br>· L1(12) / L2(18):四列「症状 / 多发根因(按概率降序)/ 判定线索 / 修复动作」<br>· L3(10):四列「症状 / 根因 / 判定线索 / 转向手段」——L3 无「多发根因」列,因其根因不由 Prompt 决定 |
| 步骤 4 改写落地时 | references/diagnosis-matrix.md → 「修复句式库」 |
24 条可直接粘贴的约束句式(F-01~F-24),按需取用;不要自行重造句式 |
| 写归因前、动笔前 | references/diagnosis-matrix.md → 「高频误诊清单」「不可修情形」 |
7 组常见误诊对照 + 7 条不可修判定,用于自查与止损 |
| 症状涉及格式、结构、字段、可解析性时 | references/output-contracts.md |
5 类输出契约模板:JSON / 表格 / 分节长文 / 分类枚举 / 逐项应答 |
| 步骤 4 改写前,或怀疑原 Prompt 有典型错误时 | references/anti-patterns.md |
14 条写法反模式:错误实例 + 为何错 + 正确写法 |
| 需要示范或用户要求举例时 | references/worked-examples.md |
5 个完整推理链示例,含被排除的错误归因 |
输入契约
三段素材,按重要性排序:
- 原 Prompt——用户写的那段指令
- 实际输出——AI 跑出来的结果(最关键,没有它就无法「反推」)
- 不满意点——用户觉得哪里不对
缺失处理:
| 缺失情况 | 处理方式 |
|---|---|
| 三段齐全 | 直接进入工作流 |
| 缺「不满意点」 | 自主比对原 Prompt 的显式要求与实际输出的偏差,推导症状,并在开头声明「症状由我推断」 |
| 缺「原 Prompt」 | 索取一次;若用户拿不到,转入假设诊断模式,声明「无原 Prompt,结论为假设」,给出 2~3 个根因假设及各自的排查问题 |
| 缺「实际输出」 | 判定为无实测证据,不可伪装成结果对齐诊断。按下方「静态评审形态」输出——不套用四套模板 |
| 只有一句「效果不好」 | 只问一个最关键的问题:「把原 Prompt 和 AI 实际输出贴一下」。禁止连环追问 |
追问上限:一轮不超过 3 个问题,优先只问 1 个。
静态评审形态(缺实测输出时专用,三节,简短):
- 说明:本次是静态评审,不是结果对齐诊断——没有实测输出,就无法做「从结果反推」这一步。
- 可疑写法(仅当用户提供了原 Prompt 时给):指出原 Prompt 中最可能引发该症状的 1–2 处写法(引用
references/anti-patterns.md或矩阵的判定线索),并明确标注这是推断,不是诊断。 - 索取:请用户提供 AI 的实际输出(哪怕只截一段),并说明——拿到输出即可转为完整的结果对齐诊断。
工作流
按 步骤 0 → 8 顺序执行。四个模式共用同一入口,但适用的步骤不同——先定模式,再依下表执行,不要机械跑完全部步骤。
模式确定规则(两条来源,有优先级):
- 先看步骤 0 闸门:命中任一条 → 走「澄清模式」或「系统层转介模式」。
- 闸门未命中,再看输入契约:缺原 Prompt 且用户拿不到 → 走「假设诊断模式」。
- 两者都不触发 → 走「改写模式」。
> 优先级:闸门 > 输入契约。 若同时缺原 Prompt 且命中闸门,一律按闸门走澄清 / 转介——因为闸门判定的是 L3 类问题(数据、工具、需求自相矛盾),这类判定不依赖原 Prompt 是否存在,此时套用「假设诊断模式」等于在错误的方向上继续分析。
模式 × 步骤适用表
| 步骤 | 改写模式 | 澄清模式 | 假设诊断模式 | 系统层转介模式 |
|---|---|---|---|---|
| 0 前置闸门 | ✔ | ✔(判定入口) | ✔ | ✔(判定入口) |
| 1 症状抽取 | ✔ | ✔ | ✔ | ✔ |
| 2 层级定位与归因 | ✔(完整归因) | ✔(仅判定层级,不展开完整归因) | ✔(以「根因假设」形式) | ✔(确认属 L3) |
| 3 手段选择 | ✔ | ✔(产出即「替代路径」) | — | ✔(产出即「替代路径」) |
| 4 定点重写 | ✔ | ✘ 禁止 | ✘ 禁止 | ✘ 禁止 |
| 5 修改对照 | ✔ | — | — | — |
| 6 可复制终版 | ✔ | — | — | — |
| 7 验证协议 | ✔ | — | ✔(说明如何锁定根因) | — |
| 8 残余风险 | ✔(完整三项:次根因 / 新风险 / 不确定项) | ✔(产出即模板「六、不确定项」) | ✔(已由模板「二、确定性等级」承载,不另设节) | ✔(产出即模板「六、不确定项」) |
> 符号定义: ✔ = 执行该步骤;✘ = 禁止执行(做了就是错的);— = 本模式不需要该步骤,直接跳过——不执行、不解释、不必说明为何跳过。
> 一句话记法:只有「改写模式」会产出改写版 Prompt。其余三个模式的交付物是判断、问题清单或替代路径。
步骤 0 · 前置闸门(静默执行)
在动手归因之前,先判断本轮该不该改。命中以下任一条,立即停止改写:
| # | 命中条件 | 转向 |
|---|---|---|
| 1 | 实际输出基本符合原 Prompt 的字面要求,且用户从未说出期望的产出物,只是「感觉不对」 | 澄清模式 |
| 2 | 用户说不出具体哪里不对,且无法提供任何证据 | 澄清模式 |
| 3 | 同类症状在用户多个不同 Prompt 上反复出现 | 澄清模式 |
| 4 | 用户的要求本身自相矛盾,或存在未定义的取舍(如既要极简又要覆盖全部细节) | 澄清模式 |
| 5 | 症状属事实性错误、计算错误,或需实时信息、需访问私有文件与工具——即 Prompt 无法携带的东西 | 见下方「条件 5 的两条分支」 |
| 6 | 原 Prompt 已完整且无明显缺陷——问题在模型能力、任务需拆步或需换手段 | 澄清模式(同上) |
条件 1 的判定线索(关键,用于防止过度保守):
若用户已在抱怨里说出期望的产出物(如「我要的是该怎么做,不是复述一遍」「我要能直接发给团队的」),说明期望已被表达,不属于「隐含期望」——不命中本条件。此时直接按 L2 补上产出物定义即可改写,不要反过来问用户「你想要什么」。只有当用户仅表达「感觉不对」而说不出要什么时,才命中本条件。
条件 5 的两条分支(按解决方向选):
- 用户能自行提供所需数据或工具(如「我把财报原文给你」「我已接入搜索」)→ 澄清模式:列明需要补什么,补齐后仍可回到改写路径。
- 必须引入 Prompt 之外的手段才能解决(联网检索、计算器、数据库、私有系统)→ 系统层转介模式:给出替代路径。
- 无法判断时默认走系统层转介模式(更保守、更诚实的一侧)。
- 静默通过:未命中任一条时,直接进入步骤 1,不输出闸门判定过程,避免赘述。
- 命中时跳到「澄清模式」或「系统层转介模式」模板,不要产出任何改写版——写了也是错的。
- 两套清单的对应关系:上表 6 条是合并归纳后的快速判据;
references/diagnosis-matrix.md的「不可修情形」是完整清单(7 条),两者的映射为 1→1、2→2、3→6、4→3、5→4 与 7、6→5。归因时以矩阵的 7 条为准,闸门表只负责「快速止损」。
步骤 1 · 症状抽取
把笼统抱怨翻译成可观测的症状,每条附证据——引用实际输出中的具体句子或段落。
- 禁止把「不好」「奇怪」「一般」「不太行」当作症状直接使用。
- 一条症状只描述一个维度,不把「又啰嗦又格式错」揉成一条。
- 严重度取值:高 = 输出不可用必须重做;中 = 可用但需人工返工;低 = 不影响可用性,仅影响体验。
- 本步不判层级。 症状清单表里的「层级」列留到步骤 2 回填——先分层再归因,顺序不能颠倒。若症状本身还说不清,说明材料不足,回步骤 0 走澄清模式。
步骤 2 · 层级定位与根因归因
先分层,再归因。 对每条症状:
- 先按三层模型判定它属于 L1 / L2 / L3;
- 查阅
references/diagnosis-matrix.md,匹配根因(按概率从高到低看); - 用矩阵的「判定线索」列排除相邻的错误归因——这一步必须做,否则会改错地方;
- 输出一条主根因(决定本轮改什么)与零到多条次根因。
多主根因裁决: 若多条症状指向互不相关、影响相当的根因,取修复成本最低且影响面最大的一条作为本轮主根因,其余列为次根因留待下一轮——这是为了保证单轮改动的可归因性。
每条归因必须说明判定线索,即「为什么判定是这条而不是别的」。矩阵中无匹配项时,按矩阵的分类维度自行归因,并标注「矩阵外归因」。
步骤 3 · 手段选择
按层级选手段(见「三层故障模型」的手段菜单),并显式声明本轮用的是哪一层的手段。
- 判为 L3 时,不再走改写路径,改用「系统层转介模板」,给出替代路径。
- 判为 L2 时,改动必然大于 L1——需要在对照表中说明重构了哪一处结构,以及为什么不能靠改词解决。
步骤 4 · 定点重写
- 保留原意,保留原 Prompt 中已经有效的部分,不要推倒重来。
- 单轮只修改与主根因直接相关的部分。 次根因若修复成本极低且不冲突,可一并修,但必须在对照表中标注。
- 新增内容前先查
references/anti-patterns.md,避免引入新的典型错误(尤其是否定式指令与无信息量的强调语)。 - 不新增用户没有提供过的业务事实、数据或背景。
- 不擅自扩展任务范围、不加用户没要求的章节或角色设定。
- 若核查后确认本轮无需改动,如实说明并不输出改写版。「本轮不改」是合格交付,不要为了有产出而硬凑修改点。
步骤 5 · 修改对照
逐处列出:改了什么 → 对应哪条症状 → 属于哪一层 → 为什么这样改。让用户看懂因果,而不是拿到一版不知所以的新 Prompt。
步骤 6 · 可复制终版
把改写后的 Prompt 放进独立代码块,只放 Prompt 正文,不加任何解释性前后缀。
步骤 7 · 验证协议(单变量对照)
输出一段可执行的验证步骤,让用户能判断本轮改动到底有没有效:
- 保留 baseline:记下本轮改动前的输出(用户已有,提醒别丢)。
- 只改一处:确认本轮只动了主根因相关内容(次根因若一并修,需列为独立变量)。
- 同输入重跑:用完全相同的输入重跑一遍,不要换素材。
- 双向对比:目标症状是否消失(正向);是否出现新增副作用(反向)——例如加了长度约束后是否丢了细节。
- 反证:若目标症状未消失,说明该根因判定有误或层级判低了,下一轮应上移一层,而不是在同一句措辞上加码。
步骤 8 · 残余风险与下一轮验证点
与步骤 7 的分工:步骤 7 讲「怎么验证本轮改动」,步骤 8 讲「本轮改动的边界在哪」。 本步负责三件事,不要与步骤 7 重复:
- 未解决的症状——本轮按单变量原则故意没动的次根因,明确列出并说明留到下一轮。
- 可能引入的新风险——本轮改动最可能带来什么副作用,提前预警(例:加了长度上限后可能丢细节)。
- 不确定项——哪些结论是基于推断而非证据得出的,标明确定性等级。
多轮迭代
第一步:判断这是不是新一轮。 命中任一条即算新一轮(而非全新的诊断):
- 用户在同一会话内带着新的输出再次求助;
- 用户话里含迭代语义:「还是不行」「改了之后又出现别的问题」「已经第四版了」「换个说法试试」;
- 用户贴出的原 Prompt,与本技能上一轮给出的改写版一致或高度相似。
命中后先做三件事,再进入下面的流程:① 声明这是第 N 轮,复述上一轮的主根因与所用手段;② 指出上一轮的预测与实际结果的差异;③ 说明本轮准备动哪一处、为什么。跳过这三件事直接从步骤 0 重跑,是本技能最常见的失败模式。
若拿不到上一轮结论(最常见的情况:用户在新会话里说「还是不行」)——不要假装记得,也不要重做一遍完整诊断。先向用户索取上一轮的改写版 Prompt,或让他用一句话说明「上次改了什么、这次和上次差在哪」。拿到后再执行上面三件事。这一步不可省:没有上一轮的基准,就无法判断是「同一根因未修复」还是「换了个新问题」。
用户带着新一轮的实际输出回来时,重复 步骤 0 起的工作流,并遵守:
- 复用上一轮结论,避免对同一根因重复归因。
- 若同一根因再次出现,说明上一轮修复未生效——换手段,不要加码同一句措辞;若手段已换仍未生效,上移一层(L1 → L2 → L3)。
- 每轮仍只动一个主根因。
- 止损线:若本技能介入后连续三轮不达标,判为任务或模型层面的问题,给出替代路径(拆步、换工具、补数据、换模型),并明确告知继续改词收益趋零。注意用户自述的「改了四版」不计入本技能的轮次——那些版本往往都在同一层加码,正是需要重新分层的原因。
六条执行纪律
> 与 references/anti-patterns.md 的分工:那份文件里的 14 条「反模式」讲的是提示词该怎么写(禁止的写法,如否定式指令);本节六条讲的是你该怎么干活(禁止的行为)。为避免同名不同义,本节一律称「纪律」,不称「反模式」。
交付前逐条自查。这六条是本技能最容易翻车的地方。
- 不无中生有。 原 Prompt 没毛病就说没毛病,不许为了「看起来有产出」而虚构缺陷。
- 不一次改太多。 单轮只动主根因。一次改十处,下一轮效果变化就无法归因。
- 不替用户编业务事实。 缺失的领域信息、数据、背景,问用户或留占位符。
- 不把「改词」当万能药。 症状根源在模型能力、数据缺失或任务设计时,直说并给替代路径。
- 不错层。 不得用 L1 手段(改词)去修 L2/L3 症状。若发现自己在给一个结构性缺陷「加一句约束」,立即退回步骤 3 重判层级。
- 不跳过判定线索。 每条归因都要说清「为什么是这条而不是相邻的那条」,否则是猜,不是诊断。
输出模板
改写模式(L1 或 L2):
## 一、症状清单
| # | 观测到的症状 | 证据(引自实际输出) | 严重度 | 层级 |
|---|---|---|---|---|
## 二、根因归因
- 主根因:……(L?)
- 次根因:……
- 判定线索:……(为什么是这条,而不是相邻的那条)
- 排除的错误归因:……(及排除理由)
## 三、修改对照
| # | 原写法 | 改后写法 | 对应症状 | 层级 | 改动理由 |
|---|---|---|---|---|---|
## 四、改写版 Prompt(可复制)
```
(纯 Prompt 正文)
```
## 五、验证步骤
1. 保留本轮改动前的输出作为 baseline
2. 用完全相同的输入重跑
3. 检查:目标症状是否消失 / 是否出现新增副作用
## 六、残余风险与下一轮验证点
- ……
澄清模式(闸门命中,不建议改写):
## 一、症状清单
(同上)
## 二、判断结论
本轮不建议改写 Prompt。原因:……(属 L3,或命中闸门第 N 条)
## 三、需要先确认的问题
1. ……
2. ……
## 四、为什么继续改词无效
……
## 五、替代路径
(拆步 / 换工具 / 补数据 / 换模型 / 先澄清需求——按实际情况选)
## 六、不确定项
(本次判断基于你提供的材料。哪些结论属推断而非确证、若补上什么信息可能改变结论,如实说明)
假设诊断模式(缺原 Prompt):
## 一、症状清单
| # | 观测到的症状 | 证据(引自实际输出) | 严重度 | 层级 |
|---|---|---|---|---|
## 二、确定性等级
低 / 中 / 高 —— 原因:无原 Prompt,仅凭输出反向推断
## 三、根因假设(按可能性降序)
| # | 根因假设 | 层级 | 支持证据 | 需要我确认的问题 |
|---|---|---|---|---|
## 四、如何锁定根因
(说明提供哪一项信息即可把假设收敛为确定结论)
系统层转介模式(判为 L3):
## 一、症状清单
(同上)
## 二、判断结论
本轮症状不在 Prompt 层,改写无法解决。具体属于 L3:……
## 三、真正的根因
……
## 四、替代路径(按优先级)
| # | 手段 | 具体怎么做 | 预期效果 |
|---|---|---|---|
## 五、如果仍需从 Prompt 侧缓解
(说明能改善到什么程度、不能解决什么——不得夸大。
**本节是风险提示,不是改写版**——可以给出**单句**缓解措施,但**不得给出完整的新 Prompt**,
且必须说明它只能缓解、不能解决根因。)
## 六、不确定项
(替代路径各自的前提与代价:哪一条可能不适用、取决于什么条件)
交付前自检
- [ ] 步骤 0 已执行;未命中闸门时未输出多余的判定过程
- [ ] 模式判定按「闸门 > 输入契约」的优先级执行(同时缺原 Prompt 且命中闸门时,按闸门走)
- [ ] 每条症状都有引自实际输出的证据,且标注了层级(L1/L2/L3)
- [ ] 严重度取值在 高 / 中 / 低 三档内
- [ ] 只标了一条主根因,且本轮改动围绕它
- [ ] 每条归因都写了判定线索,并排除了相邻的错误归因(已对照矩阵「高频误诊清单」)
- [ ] 手段与层级匹配(未用 L1 手段修 L2/L3 症状)
- [ ] 未把「用户已明说的期望」当成「隐含期望」转澄清(条件 1 的反例已排除)
- [ ] 没有新增用户未提供的业务事实
- [ ] 若原 Prompt 无缺陷,已直说而非硬凑
- [ ] 可复制终版是纯 Prompt 正文,无多余前后缀
- [ ] 已给出可执行的验证步骤(baseline / 单变量 / 同输入重跑 / 双向对比)
- [ ] 所选输出模板与所处模式一致(改写 / 澄清 / 假设诊断 / 系统层转介)
- [ ] 若因缺实测输出而退化,已按「静态评审形态」输出,未套用四套模板
输出语言
跟随用户当轮使用的语言。用户用中文提问则全程中文,保留 Prompt 中已有的英文专业术语原文。