Skip to content

1. 失败到行为改变的六步 ​

一个查询工单状态的工具,接口返回结构从"状态加摘要"改成了"状态码加消息数组"。模型的旧理解没变,连续三次把状态码当状态文本读,任务三次失败。

拆开看这条失败接下来会发生什么。

记录。 三次运行的轨迹被存下来:每次调了什么、参数是什么、返回是什么、模型据此做了什么。

判定。 每条轨迹被判定为失败,并带上证据位置——第几步、哪次调用、返回的哪一段与预期不符。

提炼。 三条轨迹放在一起,共性浮出来:不是模型不会读,是返回结构变了而它不知道。这是一个可以复用的判断:调用该工具前先核对返回结构。

选载体。 这条判断放哪?它不是硬约束(拦不住也不需要拦),不依赖每次都要查证的事实(结构变动本身是事实,但"要核对"是原则)。所以进知识文档一条"该工具返回结构在某日变更",同时进 Skill 的一条例外条款。

发布。 提案过检查:在一批未参与提炼的任务上验证,保留集没有回退。

下次命中。 下一次遇到这个工具,模型先核对结构,然后才读。

六步里,第 6 步最难验证——产物写出来了、分数也可能涨了,但涨的原因未必是它。这一步是整个闭环里最容易被当成"已经成立"的一步。


2. 闭环的四个环节与缺失后果 ​

把上面六步收一下,会看到四个必要环节。

持续进化(Recursive Self-Improvement,下称 RSI)不是「让模型改自己」,它是一个闭环。闭环由四个环节构成,缺任何一环都会退化成一种可识别的失效形态。

环节做什么缺了会退化成
信号判断这次运行成功还是失败、为什么盲改:不知道改什么,只能凭感觉调
判断决定改什么载体、改动多大乱改:改动落在错的层,修一处坏三处
动作生成提案并发布只记录:有结论但没有行为改变
验证用未参与提炼的任务检验自我强化:越改越自信,越改越偏

四个环节的顺序也重要。信号不成立时,后面三环全部无效——这一点在实践中经常被忽略,团队往往直接从「判断」开始(讨论该改提示词还是改工具),而前提「我们知道这次为什么失败」根本没建立。


3. 信号环节:三层验证与七维展开 ​

三层验证说明「从哪一层拿信号」。具体到一次运行,还要决定评哪些维度。

判断一次运行为什么成功或失败,要依次回答三个问题。

事情是否办成了。 结果验证读测试结果、数据库状态、接口返回。Coding Agent 可以跑测试、类型检查、基准;替用户办退款的 Agent 可以查订单状态与实际退款金额。这类信号来自环境的真实状态,比模型对自己行为的描述可靠,应优先建立。

是否以允许的方式办成。 过程验证检查业务规则、权限、动作序列。删掉失败的测试也能让测试通过;口头承诺「七天内退款」也可能得到暂时满意的反馈。这一层区分「结果达成」与「结果以允许的路径达成」。

是否让用户舒服。 质量验证评表达、耐心、是否抓住重点。这些维度不影响事情办成与否,但影响体验。可用量表加模型评分,要求逐项给分并引用轨迹证据。

三层的可靠性与成本都递增。第一层可以用代码判定,第二层需要策略库,第三层只能靠评分模型。工程上的顺序应当是从下往上建,因为上层依赖下层的结论——如果结果层没建好,质量层的分数没有解释力。

七层展开成七个可逐项评分的维度:

维度所属层验证问题
任务结果结果层核心诉求是否解决
规则遵从过程层是否违反政策、权限或必要流程
隐私范围过程层是否泄露不应提供的信息
事实可靠性跨两层陈述是否有知识或工具结果支持
承诺与行动一致过程层声称完成的操作是否真实发生
表达质量质量层是否自然简洁,避免模板化
合规变通质量层原方案不可行时是否找到允许的替代

事实可靠性横跨两层,原因是它能被拆开:能与工具返回逐一比对的部分由代码核验,其余交给量表。这个拆分避免了「整项都由模型判」的偏差。

承诺与行动一致单独成维,因为它与任务结果是两件事。环境状态全对、但告诉用户的金额错了,结果这一维通过,这一维失败。不分开就发现不了这类失败。

3.1 验证结论的四项必需内容 ​

只给一个总分的验证器无法指导更新。它说不清该改知识、改提示词、改程序还是改参数。

项内容缺了会怎样
结论成功、部分成功、失败只有二分时,部分成功案例被误判
逐维度判断每个检查项各自的结论无法定位该改哪一层
证据位置第几轮、哪次工具调用无法复核,也无法做失败归因
失败类型分类标签无法聚合同类失败,只能逐条看

还要允许一件事:证据不足时拒绝评分。与其把低置信度结论当作事实固化,不如把该案例排除在学习集之外。


4. 判断环节:四种更新载体 ​

信号说明「应当改变」,没说明「改在哪里」。四种载体的适用面不同。

知识文档承载事实、经验规律、例外与来源。更新快、可追溯、可按需检索。失效模式是依赖检索命中——写进去了但没被取回,等于没写。

提示词与 Skill承载能用自然语言说清的判断原则,含例外与优先级。可解释、作用范围可控。失效模式是膨胀与互相冲突——规则越多越难同时满足。

程序与框架承载可解析、可验证的硬约束:权限、路径、格式、必须成对的操作。可测试、执行稳定、成本低。失效模式是开发维护成本高,且僵化——把需要判断的事写成代码,模型失去变通空间。

模型参数承载高维感知、生成风格、隐式策略。泛化强、推理开销低。失效模式是更新与回归成本最高,且容易灾难性遗忘。

选错载体的两种典型表现:把硬约束写成原则(拦不住),把判断原则写成代码(僵化)。

判据是「这条改动能否用一句话说清,且能被代码验证」。能被代码验证的进程序层;只能靠判断的进提示词层;需要查证的进知识层。

同一能力常常要拆到多个载体。以「遇到测试失败时先查环境再重试」为例:判断「这次是不是环境问题」需要领域知识(进知识文档),需要判断原则(进 Skill 的例外条款),而「必须按这个顺序」如果可以被代码强制,就写进工具的执行顺序。

4.1 拆分的判断过程 ​

拆到多个载体不是随意切分,有一个可执行的顺序。

第一步,问这条改动能否被代码验证。 能,进程序层。例如「提交前必须跑测试」可以被钩子强制,「写入只能落在某个目录」可以被路径检查强制。这类内容放进提示词是浪费——提示词只能劝阻,代码能拦住。

第二步,问它是否需要查证具体事实。 需要,进知识层。例如「这个接口在测试环境超时」是一条事实,它的有效期取决于环境,只能存在知识文档里并带采集时间。

第三步,剩下的是判断原则。 进提示词或 Skill。这一类的特征是:它不能被机械验证,但能用语言说清,且需要模型在具体情境里判断适用与否。

三步之后还有一类漏网:既不能被代码验证、也不依赖具体事实、又说不清的原则。这类内容的正确归宿是暂时不写——它还没有被理解到可以固化的程度。强行写下来会变成一条无法执行也无法反驳的规则,后续没人敢删。

4.2 载体选择的错误代价 ​

选错载体的代价不对称。

错误后果可恢复性
硬约束写成原则拦不住,事故照常发生低——事故已经发生
判断原则写成代码模型失去变通空间,遇到例外就卡住中——能改但要发版
事实写成原则事实变化后规则变成错的中——要有人发现
原则写成事实被当成不可讨论的定论低——后续没人敢改

第一行与第四行后果最重,因为它们的错误会在事后才显现,且已经造成了损害。

第一行的典型例子:把「不许删除生产数据库」写成一条提示词。它挡不住一次错误的工具调用。正确位置是权限层。

第四行的典型例子:把「我们倾向于用短函数」这个偏好写成「函数不得超过 20 行」。它从一条可讨论的倾向变成了硬规则,遇到确实需要长函数的场景时会引发无意义的返工。


5. 判断环节:五个搜索尺度 ​

除了「改哪个载体」,还有一条正交的轴:优化的对象是产物本身,还是产生产物的方法。

从内到外:单条规则或记忆、结构化上下文、工作流、框架代码、优化器代码。

尺度改什么验证成本可归因性
单条规则一句话一次回放高
结构化上下文条目组织一组回放高
工作流节点与分支一个任务族中
框架代码存储与检索全量回归低
优化器代码探索策略元评估最低

越往外,单次验证越贵,可归因性越差,但改进的杠杆越大。

一条实用的判断:如果内层改得动,就不要往外走。外层搜索的收益通常被它的验证成本吃掉。

5.1 五个尺度的验证成本怎么算 ​

验证成本可以用「需要跑多少次」来估。

尺度单次验证要跑一组候选的规模总运行数
单条规则1 条回放十到几十条规则十到几十
结构化上下文5 到 10 条回放三到五种组织方式几十
工作流一个任务族(20 到 50 条)三到五个变体百级
框架代码全量回归(200 条以上)每次一到两个变体千级
优化器代码元评估(要跑前面所有层)每个策略都要跑一遍万级

这张表解释了为什么外层搜索在实践中很少做:不是不值得,是跑不起。

第三行开始出现一个新问题:任务族内部有方差。20 条任务上提升 5 个百分点,可能全来自其中 2 条难任务的偶然通过。要区分,需要重复多次,成本再乘三到五倍。

第五行更麻烦:优化器的好坏要经过「生成候选、验证候选、发布」这一整条链才显现。一次评估的周期可能是几小时到几天。

这也是回放机制的价值所在——它把前四行的成本降到接近零,只留下第五行的成本。

外层搜索绕不开一个问题:每个候选策略都要重新跑 Agent 与评估器。一个缓解办法是把已完成的发现过程保存成可回放的树。根节点是初始状态,每个子节点保存从某个历史状态继续尝试后的工作区快照、候选产物、评估诊断与分数。候选策略与在线时用同一套接口,逐步选择要展开的叶节点或从根节点开新分支;离线阶段只揭示已记录的结果,不必重跑。

这条机制成立需要两个条件:在线与离线使用相同的决策接口;只向策略揭示当前已展开的子树,不能偷看未来。它能比较分支、顺序、并行批次与停止时机,但不能证明在旧树上得分更高的策略能迁移到新任务。


6. 动作环节:为什么必须双循环 ​

四种载体与五个尺度只有进入同一个循环才成为持续进化。稳妥的结构是两个循环。

在线循环只完成任务并记录证据,不直接改写正式版本。这是硬约束:一次偶发成功、一次网络故障、一次恶意输入,都不应该立刻改变长期能力。

离线循环聚合轨迹、诊断根因、生成提案、过发布检查、发布新版本。

两个循环通过版本化的经验库与评估集连接。评估集在这里承担发布检查的职责——没有它,离线循环无法判断一个提案是否值得上线。

把记录与整理分开还有一层好处:离线可以用更大的批量与更便宜的模型,因为它不在关键路径上。

一个直接的量化:一个团队每天产生 200 条任务轨迹,其中约 15% 失败(30 条)。如果在线上每次失败都触发一次提炼,就是每天 30 次额外的模型调用;如果改成每天一次批量提炼,成本降到个位数调用,且能看到同类失败的共性——单条失败看不出模式,30 条一起看就能看出「这一类都在同一个工具上出错」。

6.1 离线循环的五步 ​

离线循环不是一个整体动作,它有五个可分离的步骤。

触发。 四种条件任一满足:时间间隔到达、新增已评价轨迹数量到达阈值、存储容量接近上限、错误频率上升。前置条件是确认当前没有高优先级在线任务——整理不能占用服务用户的资源。

定向。 读取正式知识、提示词、Skill 目录及其版本,了解已有能力,以及哪些部分不可修改。

定向常被省略,代价很大:不定向的整理会重复提炼已有内容,同一个结论被写成第二条规则,两条并存,后续无法判断哪条有效。

采集与整合。 从近期已评价轨迹中找新信号,合并重复,标记冲突与适用条件,优先生成局部补丁。

「优先局部补丁」的意思是:能改一句话就不重写一整条,能改一条就不重排整个目录。局部补丁的验证成本低、回滚容易、审阅快。

验证与审批。 在迁移集、保留集与安全集上评估待验证版本,高风险写入等待人工批准。

三个集合的分工:迁移集检验「新规则能否用在类似但不完全相同的场景」;保留集检验「有没有把原来能做的做坏」;安全集检验「有没有引入新的风险行为」。三者都要,因为失效方向不同——只跑保留集会漏掉「新规则根本没用」,只跑迁移集会漏掉「修了这个坏了那个」。

修剪与索引。 更新检索索引,把长期不用或被推翻的能力标记过期、归档或删除,保留来源与回滚版本。

这一步是唯一会减少内容的步骤。缺了它,知识量单调增长而检索准确率单调下降。


7. 动作环节的隔离:三项 ​

收益判定处理「这个提案该不该上线」。还有一类问题处理「一次错误的输入如何变成长期能力」:网页、邮件与工具输出里的注入内容若被提炼成经验,会跨会话反复生效;自动搜索到的恶意依赖若被封装成工具,影响会从一次沙盒运行扩散到所有后续任务。

三项隔离分别对应三条路径。

证据与指令隔离。 原始网页、工具输出及其模型摘要都属于不可信证据,不能当作指令执行,也不能直接纳入长期能力。

有一点要划清:模型归纳只是把输入转成便于处理的形状,它达不到净化的效果。一段被归纳过的注入文本仍然是注入。

可执行的规则有三条:按固定结构提取主张、原文位置与采集时间;保留原文与来源;提取出的字符串绝不作为指令执行。模型给出的置信度只是未经验证的估计,不能作为批准依据——把它当依据等于让被审查者自己决定是否通过审查。

待验证与正式能力隔离。 新知识、提示词、Skill、程序与参数都先进入不可服务真实流量的待验证区。新生成的代码与外部依赖还要额外经过沙盒、权限检查、供应链扫描与行为测试。

这道隔离的价值在于它把验证变成了物理约束,不再依赖流程约定。只要待验证区不可服务真实流量,验证不通过的东西就不可能生效——不需要任何人记得去检查。

安全机制不可自我修改。 业务 Agent 可以改提示词、Skill、知识库、工具,但不能改批准自身更新的验证器、测试用例、发布判据、审计日志与稳定版本备份。

理由很直接:如果它可以改,那么只需降低判据或删除失败用例,就能把退化伪装成进步。判定「什么算安全机制」的标准是:任何参与判断「这次更新能不能上线」的东西,包括判据本身、判据用的数据、判据产生的记录。

三项里第三项最重要。前两项防止外部内容进入,这一项防止系统自己拆掉防线。


8. 验证环节与收益判定 ​

一个提案值不值得上线,可以写成一个判定:

\[g = \Delta_{\mathrm{r}} - c_{\mathrm{u}} - c_{\mathrm{g}} \]

其中 \(\Delta_{\mathrm{r}}\) 是保留集上的增益,\(c_{\mathrm{u}}\) 是更新成本(一次额外的模型调用、一次人工审核),\(c_{\mathrm{g}}\) 是回退风险的折算成本。

只接受 \(g > 0\) 且保留集无回退的提案。

三个算例。

算例一,正增益正成本。 一条新规则让保留集通过率从 61% 升到 63%(\(\Delta_r = 0.02\)),代价是每次任务多一次检索调用(\(c_u \approx 0.005\) 折算),回退风险低(\(c_g \approx 0.002\))。\(g = 0.013 > 0\),接受。

算例二,零增益负成本。 把一段提示词从恒定类移到匹配类,保留集通过率不变(\(\Delta_r = 0\)),但每轮省下 3 KB(\(c_u\) 为负,约 \(-0.004\))。\(g = 0.006 > 0\),接受。

这个算例说明第二项常被忽略:一个提案即使增益为零,如果它降低了长期成本,同样有意义。

算例三,正增益但保留集回退。 总分提升 2 个百分点,但某一任务族下降 8 个百分点。\(\Delta_r\) 为正,但硬规则拒绝——保留集上任何一项指标退化的一律拒绝,不管总增益多少。

这条规则牺牲了「用一项退化换两项提升」的可能性,但它把回退风险压到零。第 3 个算例在实际评审里最难坚持,因为总分是正的,拒绝它需要额外解释。


9. 闭环成立的四项能力 ​

「持续进化」常被当成一个整体判断。拆开看,它至少包含四个能力,缺任何一个都不成立。

能力含义失效表现
记住把这次的经验留下来每次任务从零开始
迁移把经验用到相似但不同的场景只在完全相同的任务上有效
更新用新规则覆盖或淘汰旧规则继续使用已废止的规则
保持更新后不破坏原有能力修了一处坏了三处

四种失效的检测方式不同:第一种看有没有写入;第二种看跨场景表现;第三种要读内容,看是否还引用已被推翻的东西;第四种看保留集。

第三种最容易被跳过,因为它不看分数看不出来。一条可操作的做法:定期抽一条已废止的规则,看系统是否还会引用它。

第四种只在有更新时才需要看。一个从不更新的系统不会有保持问题,因为它没有变化。


10. 闭环的三种失效 ​

三种失效对应四个环节的不同缺法。

只追加不淘汰。 对应「判断」环节只看增益、不看替代关系。症状是规则越来越多、互相冲突,模型在不同规则间摇摆。

一个可识别的信号:规则总数单调上升,但通过率趋于平台。这说明新增规则带来的增益被规则冲突吃掉了。修法:每次提案必须声明它替代或废除了哪些旧内容。

摘要代际漂移。 对应「信号」环节只读摘要、不读原始证据。症状是几轮整理后,早期的重要限定条件消失。

识别方式是抽一条三个月前的规则,追它的来源:如果能追到原始轨迹,说明没有漂移;如果只能追到上一版摘要,说明已经漂了。修法:定期整理必须读原始材料。

把探索性讨论固化为规则。 对应「判断」环节没有区分「讨论过」与「验证过」。症状是某次对话里的方案比较被写成「必须这样做」。

识别方式看证据类型标签。修法:提案必须带证据类型,只有「验证过」的才能进正式规则。


11. 闭环不成立的条件 ​

三条判据,任何一条成立就应当放弃自动进化。

评价信号来得很慢或不唯一。 开放式研究、战略规划、复杂产品设计属于这一类。此时 Agent 可能把流程执行得很完整,却只是稳定地产出「像成果的东西」。自动进化会把这种稳定当成进步。

没有可回滚的发布机制。 如果一次错误的更新无法撤销,自动化的收益不值得承担风险。回滚能力的缺失通常意味着整个发布流程需要先建。

失败案例无法被稳定记录。 如果系统只记得成功,归纳必然有偏。这一条对应的正是「认识论过度乐观」的成因。

三条之外还有一条弱判据:如果改动的实际执行者是人(例如每次更新都要人工改一段提示词),那么「自进化」只是把人的工作换了个说法。此时更值得优化的是人的工作效率,建一套自动管线的收益有限。


12. 四个环节的检查顺序 ​

给一套 RSI 系统做体检,按环节顺序查。

第一,信号是否成立。 查失败案例有没有被记录。这一项不过,后面都不用做。

第二,判断是否有依据。 查每个提案是否带证据类型与影响面。没有依据的提案等于随机改动。

第三,动作是否闭环。 查提案到发布的路径是否完整,有没有「生成了但没人审」的堆积。

第四,验证是否独立。 查保留集有多久没被用于决策。被用了就不再独立。

四项的顺序不能换。跳过第一项直接看第四项,会得到「指标很好」但实际无效的结论——因为进化的方向从一开始就是错的。