AI-Workshop 文献分享 2026-08-29 22:15

AI-Workshop 文献分享 #22 — Hierarchical Self-Improvement:Harness 自进化框架

qyr 介绍 HSI 框架:在冻结模型参数的前提下,按任务家族独立地让 Agent 自动修改 Harness 代码——Evolver 负责选择父本、生成候选与沙箱评估,Meta-Evolver 负责总结「怎样改更有效」并更新进化策略,配合版本树与回滚机制控制风险;文中也说明了进化不保证单调提升、最终版本按验证集泛化能力选取等关键结论。

AI-Workshop 文献分享 Harness 自进化 元进化 Agent HSI

AI-Workshop 文献分享 #22 — Hierarchical Self-Improvement:Harness 自进化框架

分享人:qyr | 日期:2026-08-29 22:15

论文:Hierarchical Self-Improvement(HSI)Harness 自进化框架 作者:香港科技大学博士生(独立完成,实验规模有限,解读需审慎)

主题:HSI(Hierarchical Self-Improvement)—— training-free 的 Harness 代码级与策略级自进化


论文定位:本文介绍一套名为 HSI(Hierarchical Self-Improvement)的 Harness 自进化框架。论文由香港科技大学一名博士生独立完成,因此在解读实验结果时,应结合作者背景、实验规模和论文复现情况保持审慎。

核心问题:如何让 Agent 自动修改自身的 Harness 代码,并根据任务结果持续改进后续的修改策略?


1. Harness 回顾

1.1 什么是 Harness?

Harness 可以理解为围绕 LLM 构建的任务执行系统:它负责组织模型、记忆、工具、监控、安全和任务编排,使 LLM 能够稳定地完成复杂任务。

目前业界对 Harness 尚无完全统一的定义。根据相关工作对大量 Agent 系统的归纳,一个较完整的 Harness 至少应包含以下能力:

能力模块 主要职责
记忆与上下文 管理当前对话、历史对话和长期记忆,并构造模型所需的上下文。
外部工具协议 以标准化方式发现、调用和管理外部工具。
运行监控 监控进程状态、Token 用量、时间和其他资源开销。
安全审计 防止执行危险代码、写入危险文件或泄露密钥等敏感内容。
沙箱 在隔离环境中执行代码,降低对宿主机产生越权影响的风险。
评估与进化 评估任务结果,并据此更新记忆、Skill 或其他策略。
主进程编排 将上述模块整合到完整的对话与任务执行流程中。

从实现角度看,Harness 通常由一组代码文件组成。例如,可以将 Codex、Hermes 等 Agent 理解为由多类 Python 模块共同构成的任务执行 Harness。

参考:Hermes-Agent 源码

1.2 Harness 进化的含义

Harness 进化,指的是根据任务反馈自动修改 Harness 的代码或策略。

这项工作具有较高风险,原因包括:

  • Harness 通常包含复杂的主循环、工具调用和状态管理逻辑;
  • 局部修改可能破坏其他模块的接口或运行假设;
  • 代码错误可能导致整个任务执行失败;
  • 直接修改生产环境中的 Harness,可能影响宿主系统的安全性与稳定性。

因此,已有思路往往优先优化多个 Harness 之间的协作方式,而不是直接修改底层 Harness 代码。HSI 则进一步尝试让 Harness 代码本身参与自进化。


2. HSI 的总体设计

2.1 优化目标

HSI 是一种 training-free 框架:整个过程不更新模型参数,只使用冻结的 LLM 对 Harness 进行代码级和策略级修改。

HSI 同时优化两个对象:

  1. 任务 Harness \(H\):负责完成具体任务的代码系统;
  2. 进化策略 \(\Sigma\):负责指导如何选择父版本、生成候选、选择提交版本和导出最终版本的策略。

外层负责运行整个实验的 Harness 和提示词保持固定。可以将其抽象为一个不会被修改的“外部监督者”:

  • 为每个任务家族选择和修改任务 Harness;
  • 使用新的 Harness 执行实验;
  • 根据评估结果调整进化策略;
  • 最终从历史版本中选择要部署的 Harness。

2.2 面向任务家族的专用 Harness

HSI 的目标不是从通用 Harness 中训练出一个适用于所有任务的“超级 Harness”,而是为每个任务家族(task family)分别定制一个专用 Harness。

例如:

  • 以通用的 deepseek-harness 作为每个任务家族的共同起点;
  • 分别针对 Crafter、BabyAI、TextWorld 等任务家族进行独立优化;
  • 优化结束后得到多个任务专用 Harness;
  • 不进行跨任务家族的联合进化,也不在进化过程中共享各家族的历史信息。

这一设计基于前人工作的经验:试图直接构建一个适用于所有任务的通用 Harness,可能比针对单一任务家族进行定制更困难。

2.3 安全约束:沙箱与版本树

为降低代码自修改的风险,HSI 对候选 Harness 设置了两项基本约束:

  • 隔离执行:所有待评估 Harness 都在代码沙箱中运行,并通过固定接口 use_harness(harness_idx, task) 注入任务。即使某个候选版本崩溃,也不会影响其他版本或进化宿主。
  • 版本留存:每次修改都记录为新版本并保存快照,形成版本树。出现错误或性能退化时,可以回滚或重新选择历史版本。

3. 实验设置与总体流程

HSI 针对每个任务家族独立运行。以 Crafter 为例,系统从手工编写的初始 Harness \(H_0\) 开始,在固定的实验框架内迭代优化。

3.1 基本设置

  • 执行模型 \(M\) 在整个过程中保持冻结;
  • 任务执行阶段关闭深度推理,Evolver 与 Meta-Evolver 阶段开启深度推理;
  • 每个任务家族分别维护自己的进化图 \(\mathcal{G}\)、进化策略 \(\Sigma\) 和 BOOTSTRAP.md;
  • 实验固定进行 \(T=5\) 轮外层迭代;
  • 所有候选 Harness 都在沙箱中评估,并通过固定的 using_harness() 接口运行;
  • 外层 Meta-Evolver 的执行模板保持冻结,不能被修改。

3.2 初始化

在 \(t=0\) 时,将初始 Harness \(H_0\) 加入进化图 \(\mathcal{G}_0\),加载默认策略 \(\Sigma_0\),并初始化空的 BOOTSTRAP.md。随后记录初始任务分数,开始外层迭代。


4. HSI 的迭代机制

每轮迭代围绕“选择—修改—评估—总结”展开,前三个阶段主要优化任务 Harness,最后一个阶段优化进化策略。

4.1 选择与修改 Harness

Evolver 根据当前任务家族的进化图、历史分数和经验库,选择一个可靠的历史版本作为父本,并提出本轮进化假设。随后,基于该父本生成若干独立的候选 Harness。

候选版本可以修改 Prompt 编排、记忆逻辑、工具处理、重试审计和 Agent 主循环等业务代码,但必须保持 using_harness() 接口契约不变,也不能直接覆盖父本文件。

4.2 沙箱评估与提交

每个候选版本都会在隔离沙箱中执行任务,并根据任务进度计算奖励。代码崩溃或执行失败的版本会获得较低奖励,但不会影响进化宿主。

评估完成后,HSI 不会简单地只保留最高分版本,而是综合考虑分数与改动方向,保留具有一定多样性的候选,并将其快照、分数、修改理由及父子关系加入进化图。

设计重点:进化图保留多条分支,既可以避免过早收敛,也能为后续迭代提供更多候选种子。

4.3 元进化

Meta-Evolver 读取本轮的执行轨迹和评估结果,总结哪些种子选择、修改方向和提交策略更有效,并据此更新进化策略:

\[ \Sigma_t \longrightarrow \Sigma_{t+1}. \]

同时,具有长期价值的经验会写入 BOOTSTRAP.md。需要注意,Meta-Evolver 只能修改进化策略 \(\Sigma\),不能修改自身的外层执行模板。


4.4 最终版本选择与泛化评估

完成全部 \(T=5\) 轮迭代后,HSI 扫描进化图中的历史提交版本,并在验证集上选择表现最好的 Harness \(H^*\)。

这一阶段与中间的提交选择有所不同:

  • 中间提交选择重视候选多样性,保留不同的探索方向;
  • 最终版本选择重视验证集性能与泛化能力,不只看开发任务中的最高分。

选出 \(H^*\) 后,再使用完全未见过的测试集进行最终评估。例如在 Setup-B(BabaIsAI)中,20% 的留出测试集在整个进化过程中保持不可见,只在最终版本导出后评估一次。

重要结论:进化过程不保证分数单调提升。某一轮可能产生性能退化的版本,但该版本仍可作为历史节点保留,供后续分析和回滚使用。


4.5 Crafter 示例:进化并不总是单调提升

以 Crafter 为例,系统可能经历如下过程:

  1. 初始版本没有显式提供库存信息,模型规划能力有限;
  2. 某轮迭代将库存和环境状态结构化加入上下文,任务分数提升;
  3. 后续迭代围绕资源采集等方向继续探索,并保留多个候选分支;
  4. 某次新修改引入 Bug 或导致性能下降,但该版本仍会被记录到进化图;
  5. 最终从全部历史版本中,根据验证集表现选择较优版本作为 \(H^*\)。

这个例子说明,HSI 的进化图不仅保存“当前最好版本”,也保存探索过程中的有效经验和失败案例。


5. 关键结论

  1. 每个任务家族独立执行完整的 \(T=5\) 轮循环;Crafter 的进化图、策略 \(\Sigma\) 与经验库不会被 BabyAI 等其他家族访问。
  2. 每轮迭代的前 3 个阶段修改任务 Harness \(H\),第 4 个阶段修改进化策略 \(\Sigma\);外层 Meta-Evolver 锚点始终冻结。
  3. 每个候选 Harness 都必须在沙箱中评估;评估只使用当前任务家族的数据,其他家族的分数不参与筛选。
  4. 中间 Commit Selection 保留候选多样性;最终 Best-Version Selection 才以验证集泛化性能为主要标准。
  5. 进化过程不保证单调提升,退化版本也会被保存到进化图中,作为后续迭代的反面参考。
  6. 结果表中的 Avg 列是事后算术汇总指标,不属于进化循环内部的优化信号。