第十九章 进化不是自我修改:目标函数、证据与边界
证据地位:本章综合截至 2026-09-19 已核验的公开研究与作者工程推导;近期研究多为预印本,不等同于长期生产复现。统计例与发布规则是本书的教学设计。
“Agent 会修改自己”是个吸引人的叙事,却不是可执行定义。一次反思、写入经验、发布新提示和微调参数,改变的对象并不相同。本书把工程进化定义为:根据可追溯反馈生成有限候选,按事先约定的规则评价和选择,再通过受控发布改变后续行为。生成出候选只完成了第一步,候选有效、选对版本和长期保持收益还要分别取证。
1. 四类可变对象,不是升级阶梯
| 分类 | 主要发布或保存对象 | 生效范围 | 常见时标 | 默认回退粒度 |
|---|---|---|---|---|
| L1 任务内适应 | 当前计划、分支候选、临时摘要 | 当前任务或运行 | 秒至小时 | 分支、检查点 |
| L2 跨任务经验 | 记忆条目、技能包、经验库快照 | 符合适用条件的后续任务 | 天至月 | 条目或经验库版本 |
| L3 Harness 版本 | 提示、工具视图、检索算法、上下文与执行规则 | 一个配置或流量切片 | 天至周 | 完整配置包 |
| L4 模型参数 | 执行模型或生成器的权重、可学习适配参数 | 使用该参数版本的调用 | 天至月 | 模型检查点及兼容配置 |
分类按本次主要变更对象确定。发布一条检索经验是 L2,改检索排序代码是 L3,训练检索模型参数是 L4;一项技能既含说明又含脚本,不因此自动归入两层。同时修改经验库、执行规则和参数时,应登记为复合变更,分别记录版本,不能把同一份收益重复归给三层。“adapter”也应说明是工具适配代码还是可学习参数。
影响面和费用不能按层号排序。一次全局技能发布可能比小范围参数适配更危险;明确的工具单位缺陷可以直接修 L3,不必先经历 L1 重试和 L2 提醒。选择依据是故障机制、可验证性、影响面和全生命周期成本。反过来,蒸馏可能仅为了降低部署成本,并不要求先证明所有接口修复都无效。

还要分开两个问题:谁控制改进决策,以及谁提供确认收益的证据。RSI 路线图按执行改进、选择策略、获取经验、适应环境和递归改进等自主性展开;它与本书的对象分类是不同轴,不能把两套层号相互替换。RSI 路线图 v2
| 方案 | 改了什么 | 改进由谁控制 | 还需什么证据 |
|---|---|---|---|
| 人工修工具接口 | L3 | 人选择变更 | 固定任务与模型的对照 |
| 自动更新经验库 | L2 | 代理提案,策略批准 | 新任务复用与撤销测试 |
| 训练 Harness 生成器 | L4;部署产物涉及 L3 | 训练流程与部署选择器 | 参数、生成配置、执行模型分别冻结的比较 |
2. 一份能复查的证据合同
第二十至二十三章沿用同一模板,但填满字段只是记录完整,不代表结论成立:
EvolutionEvidence:
可变对象: 允许修改的对象及父版本
观测信号: 成功、失败、成本、安全与后续事故
归因方法: 对照、条件差值及尚未排除的解释
候选生成: 提案者、搜索空间、候选数和预算
评价隔离方式: 数据用途、可见主体、反馈和查询限额
门禁判据: 指标分母、差值区间、非劣界和硬约束
发布方式: 目标任务、模型、租户与流量范围
回滚粒度: 一致版本组合、在途处置和外部动作对账
失败模式: 污染、投机、负迁移与未消除风险版本记录还应区分创建者模型、任务执行模型、评价器和经验库。JIT-Agent 就训练了 Harness 生成器,任务执行模型则冻结;部署时生成器参数冻结,也不妨碍经验库继续按协议更新。只记一个“模型版本”,无法解释这种复合系统的收益。JIT-Agent v2
3. 评价权与可变表面分离
候选只能修改已声明的表面。身份根、权限策略、评价代码、封存测试服务、审计和发布控制器不属于同一候选的写权限。候选可以提出治理改进建议,但不能一边接受评分,一边修改评分规则。
这里的分离既要防写,也要防读。把测试目录挂成只读,仍会让候选代码读到答案。生成代理、运行候选代码的沙箱、评价器和训练作业应使用不同的访问权限。治理代码本身可以更新,但要走独立的版本、验收和批准流程;“候选不可改”不等于“组织永远不能改”。
数据同样按用途分开:开发集允许诊断;留出验证集没有用于本轮拟合,却会参与选型;封存终测集只确认预先冻结的版本。反馈一旦进入修复、选择或经验提炼,该数据就已经影响系统,不能继续称为未见证据。跨轮访问预算和派生污染规则见第二十四章。
4. 先定义估计对象,再谈晋级
设每个合格任务在固定预算内的效用为 U,主要比较候选相对基线的配对差 ΔU。随机交错运行两组,在同一任务、环境快照和重复编号上配对。若同一任务重复多次,先形成任务内差值,再按独立任务或同源任务簇估计置信区间;不能把同一题的十次运行算成十个独立任务。
下面是一份教学合同,阈值仅用于解释判定方法:
| 字段 | 预先约定 |
|---|---|
| 实验单位 | 120 个相互独立的任务,每组每任务重复 2 次,共 240 次运行 |
| 主要效用 | 全部已分配合格运行中的可信完成比例,差值用百分点 |
| 最小有意义增益 | 候选减基线的差值区间下界高于 +2 个百分点 |
| 关键切片非劣界 | 各预注册切片差值下界高于 −3 个百分点 |
| 不确定性 | 按任务整体重采样,保留任务内重复及两组配对;报告双侧 95% 差值区间 |
| 多重选择 | 验证集最多比较 8 个候选,终测只确认预先选定的 1 个;关键切片用同时区间或预注册校正 |
| 停止规则 | 固定样本数;只因预算、完整性或严重安全事件提前停止,不因分数暂时好看而结束 |
这张表不承诺 120 个任务有足够统计功效;正式实验还须用预期效应、方差和切片规模估算所需样本。任务簇有相关性时,独立单位数会更少。逐步查看结果或反复换候选,需要顺序检验或独立确认,不能继续使用一次固定检验的错误率解释。
“有显著差异”“有业务价值”和“非劣”是三种判据。差值区间为 [+0.2, +1.4] 个百分点,虽排除零,仍未达到本例的 +2;关键切片为 [−4, +1],虽不能判定下降,却不能通过 −3 的非劣界。非劣必须预先声明允许损失的边界,并直接检查差值下界。
5. 零观测违规与全部费用
严重违规一经观察即拒绝,可以是硬门;H_observed=0 只表示本样本没有发现,不表示真实风险为零。纯数学例:若 240 次暴露确为独立同分布的二项试验,零违规的单侧 95% 风险上界为 1−0.05^(1/240)≈1.24%。上节同题重复的 240 次运行不自动满足这个假设,更不能直接套用该数作为生产安全保证。报告应列暴露定义、数量、聚类方式和能支持的风险界。
单位可信完成成本写作 C_success = 总费用 / 可信完成数。总费用包括生成与搜索、任务执行、验证和裁判、失败重试、环境计算及人工接管;训练和经验维护等固定投入单列,并说明按什么任务量摊销。执行 token、账单金额和人工分钟应分别保留,不能在没有价格与计量窗口时混加。可信完成数为零时,明确写不可估计或无穷,不让候选从成本表消失。
节省资源也可以是主要目标,但必须同时通过预注册质量容忍界。SoL-Pi 的效率配置在 GPT-5.6 Sol 的 EdgeBench 报告中,由 Pi 的 44.8 分变为 42.0 分。它提供了质量与费用取舍的实例,不能写成“无损省 token”;这些评分也不能换称任务成功率。SoL-Pi v1
6. 研究信号应拆成创建、维护与选择
Self-Harness 从弱点挖掘、最小提案和验证组织修改;Living-Harness 将交互经验保存为程序记忆与修复状态图。它们为不同可变对象提供研究路线,收益仍受模型、任务和反馈条件约束。Self-Harness v3、Living-Harness v2
本书采用 HarnessBank 的 v2。该工作在 v1 以 GSME 描述门控语义质量—多样性搜索,v2 保留提案与确定性计量分离,进一步突出基因库、机制重组和分阶段筛选。不同版次的数字不能混用。v2 的 SWE-bench 小样本结果仍属初步信号,并未通过作者的统计门槛,不能把所有领域统称为已确认改善。GSME v1 历史版本、HarnessBank v2
HarnessDev 则把创建 Harness 与持续修订分开评估。创建阶段有独立生成的多份产物,进化阶段每个创建者—执行者组合只有一条轨迹,后续未见任务评价仅覆盖 SWE-Pro。反馈集上升与留出结果并不总同向,换执行模型也可能退化。因此应分别测量:能否造出可运行系统,能否通过修改改善,以及选择器能否在看不到终测结果时选对版本。论文中的执行 token 还排除了创建者、裁判和诊断探针,不能直接代表总费用。HarnessDev v1
7. 从失败到可检验假设
生产轨迹混合真实成功、偶然成功、用户妥协、攻击与环境故障。被合并的补丁不天然是正确样本,用户没有追问也不天然表示满意。应同时保留经授权的候选记录、拒绝原因、验证结果和后续事故;人工接受只是一个标签。
一个可检验假设应说清机制、适用条件和对照。例如:“当工具目录超过该模型的可靠选择范围时,按需发现能否在关键任务非劣的条件下降低选错工具率?”它比“工具太多,优化提示”更容易验证。
时间相关只说明同时发生;轨迹对齐能定位分歧;消融估计指定组合下移除组件的影响,可能混有接口破坏和交互,不能证明普遍必要性。随机对照、配对差值与跨切片复现提供更强的归因证据,仍须明确实验假设。第二十三章给出模型与 Harness 的条件效应、平均主效应和交互公式。
8. 预算、停止与保持现状
候选生成、确认试验和生产灰度使用不同预算。探索可快速淘汰;确认要保留固定协议和足够样本;灰度还要限制用户、数据和外部动作暴露。多找出几个反例可能比再发布一个版本更有价值,不能把上线次数当作学习速度。
立项前先判断新增信息是否值得实验费用:记录基线损失、预期改善、确认成本、可接受风险和停止日期。故障少、根因明确、人工修复便宜时,直接修确定性流程可能更合适。风险或收益尚不清楚时,先做探索,不承诺生产回报。
每个失败簇都应保留“暂不改变”的选项。持续否决有回归风险的候选可以产生有价值的负面知识;重复提出已证伪方案才值得追查。基线也要冻结并保留人工补救成本,防止任务变简单、供应商升级或更多人工支持伪装成进化收益。基线改变后,另开实验,不把不兼容样本继续累计到旧结论中。