liulilittle头像
把“反思“写进提示词:廉价模型上的内省工程封面图

把“反思“写进提示词:廉价模型上的内省工程

把"反思"写进提示词:廉价模型上的内省工程

结论先行:廉价模型不会自发内省,但可以被"条款 + 近因注入 + 可核查记录"逼出可用的检查行为。它不等于诚实,也不等于真实思维链;它是一副注意力的脚手架。

1. 为什么要把反思外化

便宜模型最常见的失败不是"不会做",而是"做得太快":

  • 读到最后一个工具输出,就把它当成最终结论;
  • 检查了当前这一步,就宣称整个任务通过;
  • 发现了偏差,先写一句"已修正",再继续往下走;
  • 把"复述一遍要求"当成"已经核对过"。

这些行为的共同点是:缺少一个先于结论的检查回路。对强模型,这个回路可能来自模型侧更长的思考;对廉价模型,只能由外部提示词强制。

反思回路

是

否

重述要求

复核中间结论

枚举替代路径

证伪当前结论

有偏差?

纠正并复验

记录并报告

单遍直答

读最后一条证据

下结论

2. Claude 的扩展思考,与廉价模型的差距

Claude 的扩展思考发生在模型侧;外部看到的是摘要与结果,不是可审计的推理链。它带来的一个副作用是:模型在给出结论前,已经"想过一遍"。

更小、更便宜的模型没有稳定的这一层。它们更倾向于直答、就近取证据、把最后一次工具输出当结论。所以工程上的选择不是"让廉价模型学会内省",而是把内省拆成外部可执行的动作,写进提示词,并在每轮结尾提醒。

这里必须先划清边界:以下全部是设计假设与工程经验,不是对某个具体模型内部机制的断言。

3. 条款化:把内省拆成可执行动作

现行条款(节选,src/prompts.ts:55):

二、反思:声称完成、通过或修复之前,必须执行反思,反思必须先于结论输出;反思必须覆盖任务全程,覆盖范围包括此前轮次、当前轮次、中间结论、工具调用、外部证据;禁止仅审视当前轮次而忽略此前轮次;反思必须包含重述要求、复核中间结论、枚举替代路径、证伪当前结论、指出不足、总结教训、识别偏差与纠正措施。

拆开看,它规定了四件事:

  • 时点:先于结论,不是事后解释。
  • 范围:跨轮,含工具调用与外部证据。
  • 动作:重述、复核、枚举、证伪、不足、教训、纠偏。
  • 收口:偏差未纠正前禁止报完成,禁止隐瞒。

否

是

否

是

否

是

准备声称完成/通过/修复

反思是否先于结论?

禁止输出结论

覆盖全程:此前轮次/当前轮次/中间结论/工具/外部证据

七项动作:重述、复核、枚举、证伪、不足、教训、纠偏

发现偏差?

形成过程记录(五字段)

立即纠正

偏差已纠正?

禁止报告完成/通过/修复

记录接受核查

附实质证据后报告

4. 反作弊:三个禁止、一个记录

最容易被跳过的动作是"证伪"和"指出不足";最容易造假的是"重述要求"。所以条款还有三句反作弊:

  • 禁止以复述要求、复述过程、复述结论代替偏差识别、证伪与纠正;
  • 偏差未纠正前,禁止报告完成/通过/修复,禁止隐瞒未纠正状态;
  • 过程记录必须含检查项、结论、偏差、纠正措施、证据位置,且必须接受核查;
  • 但记录不能替代证据。

最后一句很关键:反思记录是"检查过程的账",不是"结论为真的证明"。证据仍然要 [READ:path:line] 或 [BASH:cmd:output]。

5. 近因注入:让最后一眼看到反思

主清单与子清单都把反思放在最后一项(src/prompts.ts:252、:266),清单由 force_suffix 追加到每条插件注入消息的末尾(src/prompts.ts:277)。原因见第二篇:模型对结尾的注意力更高。

清单不复述全部细则,只保留四个高风险触发器:

  • 反思必须先于结论输出;
  • 禁止只审视当前轮次;
  • 禁止以复述代替反思;
  • 过程记录必须含五字段并接受核查,且不得替代实质证据。

6. 提示词也要做变异测试

条款不是写完就算。tests/test-prompts.mjs 对条款做结构断言,再用变异验证断言是否真的有效:

变异预期
删掉"反思"款测试红
把"必须"改成"应当"测试红
删掉"未纠正禁止报告"测试红
删掉清单末款测试红
把反思款从末位移走测试红
给清单加回冗余边界句测试红

当前结果:test-prompts 569 项通过、0 失败;条款级与清单级变异分别验证,最近一次清单级 15 项全部变红。改坏仍绿就是假测试,必须重写——这条规则同样适用于提示词。

7. 优点

  1. 跨轮:把"最后一步对不对"扩展成"整条链路对不对"。
  2. 可执行:七个动作都是动词,不需要模型理解"内省"这种抽象词。
  3. 可核查:记录有固定字段,能被人和工具复核。
  4. 便宜:一段文本,不需要额外模型调用或第二遍推理。
  5. 可测试:条款本身可以被断言与变异锁定,防止后续改动把它软化。

8. 局限

  1. 不是真内省。模型看不到自己的权重和完整思维链;记录是事后重构,可能自洽但错误。
  2. 可以表演。写出漂亮的"检查项/结论/偏差"不等于真的发现了偏差;门只能查形式与证据,查不了诚实。
  3. 注意力竞争。条款越长,中间部分越容易被忽略;所以才需要近因注入与去重。
  4. 未知的未知。"枚举替代路径"仍受模型想象力限制。
  5. 同刻歧义要靠外部判据。时间戳无法区分的同刻事件,只能 fail-closed。
  6. 遵循度波动。同一模型在不同上下文长度、不同任务下表现不同;条款降低方差,但不消除。

9. 工程清单

  • 用命令式,不用建议式;只用"必须/禁止"。
  • 时点写死:先于结论。
  • 范围写死:跨轮,含工具与外部证据。
  • 反作弊三件套:禁止复述、未纠正禁报、记录可核查。
  • 记录字段固定五元组:检查项、结论、偏差、纠正措施、证据位置。
  • 近因位置:清单末项。
  • 用测试锁条款,用变异证明测试不是假绿。
  • 记录不替代证据。

10. 结语

反思条款不是让廉价模型变成 Claude,而是给它一副拐杖:在它最想直接下结论的时候,逼它先回答七个问题。拐杖不能保证它不摔,但能让它摔得可复现、可纠正、可审计。


证据与边界

  • 条款原文:src/prompts.ts:55;清单末款:src/prompts.ts:252、:266;注入函数:src/prompts.ts:277。
  • 验证命令:node tests/test-prompts.mjs(569/0)。
  • 变异脚本:%TEMP%/opencode/mut-reflect3.mjs(条款级与清单级两批)。
  • 边界:本文把"廉价模型缺少自发内省"作为工程假设,未做跨模型对照实验;"位置效应"的证据见第二篇。
  • 行号以本文写作时的 main = bdffa37 为准。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/liulilittle/article/details/170132409

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--