注:本文包含 AI 辅助创作
Blog Summary
- Lilian Weng 关于 RSI 的文章
RSI 基本概念
- Recursive Self-Improvement(RSI) 的基本概念(非标准):一个“超智能机器(ultraintelligent machine)” 能够设计出更好的机器来改进自身
- 这个定义最早可以追溯到 1995 年的论文
- 简单总结: RSI 指 AI 利用其当前的智能来改进产生其智能的认知机制(1965; 2008)
- 注:在现代 AI 语境中,这既可能指模型直接重写自身权重,更广泛地指模型改进训练 Pipeline 和部署系统(即 Harness),从而催生性能更强的后继模型
- Harness 定义:围绕基础 Base Model 的系统层 ,负责编排执行、决定模型的思考与规划方式、调用工具、感知和管理上下文、状态存储和评估结果
- Lilian Weng 在博客中强调了 Harness 的关键地位:
- 文章强调,Harness 的重要性不亚于模型本身的原始智能(如预训练后的 Eval 成绩)
- 比如 Claude Code 和 Codex 等成功的 Coding Agent 产品证明了这一点
- Lilian Weng 在博客中强调了 Harness 的关键地位:
Harness Design Patterns
- 早期传统 Agent 框架:Agent = LLM + 记忆 + 工具 + 规划 + 行动
- 现在 Harness 比传统 Agent 框架多了 工作流设计(如 Loop 工程)、评估(Evaluation)、权限控制(Permission Controls)和持久状态管理(Persistent State Management) 等
- 超越了传统框架,更接近一个 Runtime 和软件操作系统的设计
- 文章总结了构建 Harness 的三种核心设计模式,Harness 与操作系统(OS)有很强的相似性
- Harness 它应封装复杂逻辑,同时保持接口简单
- 本文预测,Configs、Tool Interfaces 和其他协议将逐渐在行业内标准化
- 模式 1: 工作流自动化 (Workflow Automation)
- 思路:Harness 应定义一个目标导向的循环:Plan(规划)→ Execute(执行)→ Observe/Test(观察/测试)→ Improve(改进)→ Execute Again(再次执行) ,直至达成目标
- 动态迭代:Agent 会在上述循环中主动分析自身轨迹和失败案例,并在 “Agent Runtime” 中迭代进步,而非仅依赖静态的 Prompt 模板
- 注:可参考 Karpathy 的
autoresearch项目,构建一个清晰、通用且可泛化的工作流图
- 模式 2: 文件系统作为持久记忆 (File System as Persistent Memory)
- 思路 :对于长周期(Long-horizon)的 Agent 系统,Harness 不应将所有工作流和日志都塞入上下文窗口,而应将持久状态(Durable State,如实验日志、代码差异、错误轨迹)存储在文件系统中
- 注:因为实验日志、代码差异、错误追踪等工件(Artifacts)很容易超出模型的 Context Window
- 具体做法 :利用 LLM 读写和编辑文件系统(如通过 Bash 命令)的基础能力,将文件作为简单、可靠且可扩展的持久记忆载体
- LLM 需要学习如何通过 Bash 命令读写和编辑文件系统是 LLM 的基础技能,因此将持久性内存以文件形式管理,自然会受益于核心模型能力的提升
- 思路 :对于长周期(Long-horizon)的 Agent 系统,Harness 不应将所有工作流和日志都塞入上下文窗口,而应将持久状态(Durable State,如实验日志、代码差异、错误轨迹)存储在文件系统中
- 模式 3: 子 Agent 与后台作业 (Sub-agent and Backend Jobs)
- 并行与隔离 :主 Agent 可以生成多个 Sub-agent 并行执行任务,或监控后台作业,用于并行搜索假设或委派独立子任务,避免污染主上下文
- 具体做法 :设计一个轻量级的进程管理器来启动、检查、取消和合并作业结果
- 关键设计是 使并行性显式且可检查(Inspectability) ,即 Sub-agent 的输出应存储为文件、日志和状态记录,而非仅存在于瞬态的聊天上下文中(若不持久化则会快速消失)
- 存储为文件、日志和状态记录可以方便模型在中断后能恢复并推理自身的执行历史
Harness Optimization
- 优化是 Harness 工程迈向自我提升的核心
- 文章指出,被优化的对象正从 “指令 Prompt” 向 “结构化上下文”、“工作流”、“Harness 代码” 乃至 “优化器代码” 演进
- 优化对象的递进层次 :在 Harness 系统中,被优化对象的演进路径大致为:Instruction Prompts → Structured Context → Workflow → Harness Code → Optimizer Code
- 随着模型变得更加智能,作者正转向更复杂的目标和更通用的方法
Context Engineering
Agentic Context Engineering (ACE)
- ACE 将上下文视为一个不断演进的“剧本”(evolving playbook)而非不断增长的 Prompt(increasingly lengthening prompt),ACE 它包含三个组件:
- 1)Generator :参考 “剧本” 要点生成任务轨迹
- 2)Reflector :从成功和失败轨迹中提炼洞察
- 3)Curator :以增量的、项目化的条目(标识符+描述)更新上下文,而非重写整个 Prompt,以防止上下文塌缩和简洁性偏见
- 关键防崩坏设计 :为防止迭代重写过程中的“上下文崩溃(Context Collapse)”和“简洁性偏差(Brevity Bias)”,Curator 不会重写完整的 Prompt 块 ,而是输出一组结构化的、逐项的要点(形式为
(identifier, description)),并通过确定性逻辑合并到结构化的上下文日志中 - 局限性 :ACE 从 Rollout 中学习洞见,有助于实现自我管理的内存,但其更新规则和整体工作流仍然是手工设计的(Handcrafted)
Meta Context Engineering (MCE)
- 双层优化(Bi-level Optimization) :MCE 将机制(Mechanism,如何管理上下文)与 工件内容(Artifact Content,上下文里有什么)分离
- MCE 将 “如何管理上下文” 的机制(Skills \( s \))与 “上下文内有什么” 的内容(工件 \( c \))分离,进行双层优化
- 技能定义 :一个技能 \(s \in \mathcal{S}\) 定义了一个上下文函数 \(c_s = (\rho_s, F_s)\),将输入 \(x\) 映射到上下文 \(c = F_s(x; \rho_s)\),其中:
- \(\rho_s = \{\rho_1, \ldots , \rho_m\}\) 是静态组件(如 Prompts、知识库、代码库)
- \(F_s = \{F_1, \ldots , F_k\}\) 是动态算子(如搜索、选择、过滤、格式化)
- 优化公式 :
- 内层(Inner,找到给定技能下的最佳上下文):
$$c_s^* = \arg \max_{c_s}J_{\text{train} }(c_s;s)$$ - 外层(Outer,找到在验证集上表现最佳的技能):
$$s^* = \arg \max_{s\in \mathcal{S} }J_{\text{val} }(c_s^*)$$
- 内层(Inner,找到给定技能下的最佳上下文):
- Meta-level 进化 :元层级 Agent 对先前的技能执行 Agentic Crossover,生成新技能
- MCE 不强制执行 ACE 那样的启发式结构规则 ,而是使用自由形式的技能(Free-form Skills),并将上下文函数 \(c\) 实例化为专用目录中的文件集合(包括静态的
skill.md和动态的 Rollouts)
- MCE 不强制执行 ACE 那样的启发式结构规则 ,而是使用自由形式的技能(Free-form Skills),并将上下文函数 \(c\) 实例化为专用目录中的文件集合(包括静态的
Meta-Harness
- 更深层次的优化 :
- Meta-Harness 将优化目标推向更深一层: 优化用于决定存储、检索和呈现什么信息的代码
- 即 “用于优化 Harness 的 Harness”
- 算法机制 :
- 整个执行历史通过文件系统访问(Coding Agent 使用
grep或cat读取,而非一次性塞入 Prompt) - 候选 Harness 是文件系统中的字典,包含源代码、分数、Rollout 轨迹和状态更新
- 只有通过接口验证的 Harness 才会被保留,最终返回 Pareto 前沿(Pareto Frontier)的候选集
- 整个执行历史通过文件系统访问(Coding Agent 使用
- 关键 Insight :将 Harness 设计成为一个可执行的搜索空间(Executable Search Space) 后,强大的 Coding Agent 就可以像人类工程师一样利用这个设计空间,从而实现进化
Workflow Design
- AI Scientist 与 ScientistOne :AI Scientist 系列工作是专家设计的 Harness 能够协调大部分自动研究循环的有力证明
- 但作者强调,论文生产不等同于科学发现 (系统可以写出看似合理的稿件,但仍存在捏造引用、实现漂移或实验薄弱的问题)
- ScientistOne 将可验证性(Verifiability)作为核心设计约束,要求每个主张都必须追溯至证据源,并通过证据链(Chain-of-Evidence)审计
- Autodata Agent :设计为数据科学家,通过 Challenger(提出难题)、Weak Solver(弱求解器)、Strong Solver(强求解器)和 Verifier(验证者)的循环,生成“难度恰到好处”的数据(强模型成功但弱模型失败)
- 局限性 :生成的任务仅用于微调 Weak Solver 而非 Strong Solver
- 如果循环无法迭代式地改进强模型,那么它更像是间接的蒸馏(Distillation),RSI 的味道较淡
- 局限性 :生成的任务仅用于微调 Weak Solver 而非 Strong Solver
- 自动化 Agent 系统设计 (Automated Design of Agentic Systems,ADAS) :将 Agent 设计本身视为一个优化问题
- 核心 Insight:工作流设计空间巨大,将其视为搜索问题(Search Problem) ,而非仅靠手工设计
- 机制为:Meta-Agent 以代码形式编程新的 Agentic Workflow,并经过 Self-Refine 步骤检查新颖性,评估后加入存档
- 流程为:
- 初始化存档 ->
- 元 Agent 受存档启发生成新工作流的高层描述并实现代码 ->
- 经 Self-Refine 后评估 ->
- 将成功的候选加入存档并迭代
- AFlow :将 Agent 工作流表示为一个Graph ,节点是调用 LLM 的动作,边是代码中的逻辑操作
- 工作流优化依赖 蒙特卡洛树搜索 (MCTS) 进行优化(选择→扩展→评估→回传)
- 流程 :
- 初始化起始工作流 ->
- 使用得分和均匀探索的软混合选择节点 ->
- 由 LLM 基于评估表现生成修改后的工作流 ->
- 执行并评估新工作流 ->
- 若有改进则加入树中并迭代,直至性能饱和或达到预算
- 实验表明 AFlow 在 QA、代码和数学任务上显著优于手工设计的工作流和 ADAS
Self-Improving Harness
Self-Taught Optimizer,STOP
- STOP 的目标不是直接改进解决方案 \(s\),而是改进 “改进器(Improver)” 本身
- 元效用(Meta-utility)函数定义: 给定改进函数 \( \hat{u} (I) \) 为改进器 \( I \) 在一组下游任务 \( D \) 上的平均效用:
$$ \hat{u} (I) \triangleq \frac{1}{|D|} \mathbb{E}_{(u,s) \sim D} [u(I(u, s; M))] $$- \(u\) 是效用函数,\(s\) 是初始方案,\(M\) 是语言模型
- 递归更新 :基于元效用度量的性能,递归得到新版本的 Improver:
$$
I_t = I_{t - 1}(\hat{u}, I_{t - 1}; M)
$$ - 特别说明 :
- 观察:STOP 在 GPT-4 上提升了平均下游性能,但在较弱的模型(如 GPT-3.5 和 Mixtral)上性能下降
- 说明:递归结构本身是不够的,基础模型必须足够强大才能改进自身机制
- 这暗示了 Harness 改进能提升模型部署,但智力(Intelligence)仍然是核心
Self-Harness
- 通过一个 提出-评估-接受循环(Propose-Evaluate-Accept Loop) 来改进 Harness 本身
- 1)弱点挖掘(Weakness mining) :将失败案例聚类为“可被验证器证实的失败模式”,记录包括终端验证器原因、Agent 行为因果状态和抽象机制在内的丰富失败记录
- 将失败聚类为 Verifier-grounded 失败模式
- 需区分表面原因(如超时)和因果机制(Causal Mechanisms)
- 2)Harness proposal :在“有界提议上下文”(包括当前 Harness 的可编辑表面(editable surfaces)、验证器证实的失败模式、需保留的成功行为和过往编辑摘要)中,让模型提出针对可寻址(Addressable)错误模式的多样化编辑候选
- Harness edit candidates should be distinct and diverse
- 3)Harness Validation :在保留集 (held-in) 和留出集 (held-out) 上进行回归测试
- 仅在两组上均无回归的(No Regression)候选才被接受并合并,更新至 \( h_{t+1} \)
- 注:不被接受的 Candidates 不会对已有 Harness 造成任何影响
- Edit candidates 必须妥善设计,权限控制和安全层必须位于此循环之外,且Reward Hacking 的挑战依然存在
- 仅在两组上均无回归的(No Regression)候选才被接受并合并,更新至 \( h_{t+1} \)
- 1)弱点挖掘(Weakness mining) :将失败案例聚类为“可被验证器证实的失败模式”,记录包括终端验证器原因、Agent 行为因果状态和抽象机制在内的丰富失败记录
Evolutionary Search
- 适用场景 :进化搜索在以下情况派上用场:
- (1) 搜索空间巨大或形状怪异
- (2) 难以通过梯度直接优化,但容易评估解决方案
- AlphaEvolve :存储候选程序池,Prompt 冻结的 LLM 生成 Diff 进行改进
- 具体实现:一个 Coding Agent 进化搜索系统,维护一个候选程序池,并 Prompt 冻结的 LLM 生成差异(diff)来改进程序
- 代码中改进区域显式标记
# EVOLVE-BLOCK - Meta-Prompt 随指令和上下文共同进化
- 达尔文哥德尔机 (Darwin Gödel Machine, DGM) 与 Hyperagents :
- DGM 明确针对可编辑的 Harness 代码仓库为进化目标,允许 Coding Agent 修改自身的 Harness
- 流程 :
- 池中初始有一个 Agent ->
- 根据性能(正比)和子代数量(反比)作为概率选择父代 ->
- 理解:性能越好,选中概率越大(鼓励利用);子代数量越多,选中概率越小(鼓励探索)
- 父代检查自身评估日志,使用 Bash 和编辑器工具对自身 Harness 代码库提出改进,生成新版本 ->
- 评估后,只有高性能的新 Agent 才被加回池中 ->
- 迭代
- 实验表明,在 Claude 3.5 Sonnet 作为基础模型、初始 Harness 配置简单的情况下,DGM 在 SWE-bench Verified 上从 20% 提升到 50%,在 Polyglot 上从 14.2% 提升到 30.7%
- 局限性 Insight :
- 这类方法在对目标量化要求较高
- 在候选方案可自动评估且适应度(Fitness)易于量化(如矩阵乘法、GPU 内核优化、算法竞赛)时表现良好
- 在评估速度慢、模糊或主要基于启发式的领域 效果不佳
- 此外,计算效率和进化效果 也可能是隐含的问题
- 这类方法在对目标量化要求较高
Joint Optimization with Model Weights
- SIA (Self Improving AI, 2026) :尝试将 Harness 改进与模型参数更新结合在同一循环中
- SIA with Harness & Weight Updates :结合了 Harness 改进和模型参数更新的早期尝试,包含 Meta-Agent、Task-Specific Agent 和 Feedback-Agent(决定下一步是更新 Harness 还是模型权重)
- 包含三个组件:
- Meta-Agent :proposes the initial harness
- Task-Specific Agent :执行任务
- Feedback-Agent :根据近期轨迹决定下一步是更新 Harness 还是模型权重
- 博客中,作者认为此方向有趣,但实验结论不充分,且训练稳定性 和古德哈特效应 等问题依然存在
- 古德哈特效应:即古德哈特定律(Goodhart’s Law),可简单概括为:当一项量化指标被定为硬性考核 / 管控目标时,这个指标就不再能真实反映它原本要衡量的事物(人会理性钻规则漏洞,只美化数字而没有真正提升本质能力)
- 注:坎贝尔定律和古德哈特效应几乎同义
- 解决古德哈特效应造成的问题:
- 不用单一指标,建立多维度复合考核
- 区分观测指标和硬性考核目标,不把代理指标直接绑定强奖惩
- 定期轮换评估维度,避免长期固定单一量化标准
- 保留定性评估、人工抽检,对冲数字造假
- 考核最终真实产出,而非中间代理数字
- PS:盯着数字,就会失去数字背后的真实;把指标当目标,指标就会失效
- 古德哈特效应:即古德哈特定律(Goodhart’s Law),可简单概括为:当一项量化指标被定为硬性考核 / 管控目标时,这个指标就不再能真实反映它原本要衡量的事物(人会理性钻规则漏洞,只美化数字而没有真正提升本质能力)
Future Challenges
- 文章在最后通过 Trehan & Chopra 的实验(仅 4 个想法进入全流程,1 个完成论文)观察到的失败模式,归纳出通向完全 RSI 的七大挑战
- 1)Weak and Fuzzy Evaluators :
- 当前自我改进循环在评估指标可测量且客观的任务上效果最好(类似 RL)
- 许多研究主张(如新颖性、科学品味)缺乏快速、精确的验证器
- 研究品味(Research Taste)、新颖性(Novelty)和长期科学价值极难衡量
- 研究品味往往混杂了问题框架、实验设计以及对意外结果是否值得深究的判断
- 2)Context and Memory Lifecycle :
- 随着 Agent 自主性增强,记忆会无限增长
- Harness 需要更高级的上下文和记忆管理能力,这甚至可能成为智能的核心部分
- 注:人类能够终身维持记忆,因此 上下文工程应当且必将成为智能的核心部分(Core Part of Intelligence),而不仅仅是停留在软件系统层面
- 3)Negative Results :
- 文献偏向于成功结果,而 LLM 训练数据(大部分由人类创造)中成功与失败的案例严重失衡,导致模型不擅长决定何时放弃假设、报告负面结果或承认失败
- 理解:训练数据(如论文中给出的)偏向于成功,导致模型不擅长决定放弃假设或报告失败
- 一个良好的研究 Harness 应易于保存失败尝试,以便从中学习
- 文献偏向于成功结果,而 LLM 训练数据(大部分由人类创造)中成功与失败的案例严重失衡,导致模型不擅长决定何时放弃假设、报告负面结果或承认失败
- 4)Diversity Collapse :
- 进化和强化学习循环倾向于利用已知的高奖励模式,需要机制来防止种群多样性崩溃,确保探索的持续性
- 5)Reward Hacking :
- 自我提升循环会过度优化所给定的任何信号(如单元测试、评判模型),导致过拟合
- 若奖励来自单元测试,Agent 会过拟合测试
- 若来自 Judge Model,它会学习针对该 Judge 的取巧技巧
- 若来自基准分数,它会利用基准的伪影
- 观点:评估器和权限控制必须位于进化 Harness 的循环之外 ,并配合 Held-out 测试、轨迹审计和关键决策点的人工审查
- 能多大程度扩展和自动化这些监督仍是开放问题
- 自我提升循环会过度优化所给定的任何信号(如单元测试、评判模型),导致过拟合
- 6)Long-term Success :当前优化目标过于短视
- 以 Coding Agent 为例,它优化短期任务完成度,但不清楚如何保护由成百上千工程师共同维护的仓库的长期健康(如可维护性、所有权边界、迁移成本、向后兼容性、未来的调试负担)
- 注:目前标准的沙盒 RLVR 训练几乎无法捕捉这些
- 以 Coding Agent 为例,它优化短期任务完成度,但不清楚如何保护由成百上千工程师共同维护的仓库的长期健康(如可维护性、所有权边界、迁移成本、向后兼容性、未来的调试负担)
- 7)The Role of Humans :
- 人类不应被移除循环,而应 Move up the stack,在正确的时间和抽象层级提供监督
- 注:Move up the stack 指从底层、基础设施层的工作,转向上层、应用/业务逻辑层的工作
- 技术应为人类更美好的未来服务
- 人类不应被移除循环,而应 Move up the stack,在正确的时间和抽象层级提供监督
原文附录:Some useful benchmarks
- 文章最后列举了一系列用于评估 AI 研究工程能力的基准,可用于评估 Harness 工程的优劣
- PaperBench :从头开始复现 20 篇 ICML 2024 Spotlight 和 Oral 论文,包括理解论文贡献、开发代码库和成功执行实验
- 每个复现任务被分解为更小的、可单独评分的任务
- 总共 8,316 个评分标准 (rubrics),与 ICML 的论文作者共同开发
- 当时最好的模型(Claude 3.5 Sonnet,\(\sim 21%\))未能超越 ML 博士
- 包括 PaperBench、PaperBench Code-Dev(一个更轻量的版本)和 JudgeEval
- CORE-Bench :评估已发表研究的计算可复现性
- 基于计算机科学、社会科学和医学领域的 90 篇科学论文的 270 个任务
- 任务涉及从提供的代码和数据中复现结果
- 包括多个难度级别以及纯语言和多模态任务
- 当时报告的最佳 Agent(GPT-4o 和 GPT-4o-mini)在最难任务上仅达到 \(21%\) 的准确率
- ScienceAgentBench :评估用于数据驱动科学发现的 LLM Agent
- 从四个学科(数学、化学、生物学、地理学)的 44 篇同行评审出版物中提取了 102 个任务
- 涵盖这些领域的基础数据科学任务:数据处理、模型开发、数据分析和信息可视化
- RE-Bench :在现实的 ML 研究工程环境中,评估前沿 AI Agent 与人类专家的对比
- 7 个具有挑战性的、开放式的 ML 研究工程环境
- 每个环境 =(评分函数,起始解决方案,参考解决方案)
- 每个环境可以在 8 个或更少的 H100 GPU 上运行
- 示例:优化内核、运行规模法则实验、修复嵌入、微调 GPT-2 用于 QA 等
- 包括来自 61 位不同人类专家的 71 次 8 小时尝试的数据
- 人类专家在 82% 的 8 小时尝试中获得了非零分数;24% 达到或超过了强参考解决方案
- 最佳 AI Agent 在 2 小时预算下得分比人类高 \(4\times\),但人类在更长的预算下有更好的回报,并在 8 小时和 32 小时设置下超过了 Agent
- MLE-bench :在离线 Kaggle 竞赛中评估 ML 工程 Agent
- 包含从 Kaggle 精选的 75 个 ML 工程竞赛
- 测试训练模型、准备数据集、运行实验和提交预测给评分脚本
- 使用 Kaggle 公开排行榜作为人类基线
- 论文中最佳设置,o1-preview 配合 AIDE 脚手架,在 \(16.9%\) 的竞赛中至少达到 Kaggle 铜牌水平
- 包括资源扩展和污染分析
- KernelBench :评估生成的 GPU 内核的正确性和速度
- 250 个 PyTorch 任务,用于评估 LLM 能否编写快速且正确的内核
- 评估指标 fast_p = 生成的内核中正确且比基线快的百分比