返回 FEED
AGENT2026-06-13

SIA 自改进循环:3-Agent 架构 + LoRA 权重更新,LawBench 70.1% 刷新 SOTA

@AlphaSignalAI · 2026-06-13 · ❤ 54

原文:How SIA's Self-Improving Loop Works, And How to Actually Run It

SIA(Self-Improving AI)刚刚在 LawBench 的 191 类中文法律基准上达到 70.1% Top-1 准确率,此前最佳为 45.0%。

Hexo Labs 于 5 月 28 日将其作为 MIT 许可的开源 repo 发布,同时有一篇与牛津大学合作的 arXiv 论文《SIA: Self Improving AI with Harness & Weight Updates》。

核心卖点: 一个循环中,AI 同时改写 agent 的 scaffold 和重新训练模型权重——此前研究只分别拉动这两个杠杆。

关键提醒: 论文版本自动选择杠杆,而公开可运行的版本需要你自己手动选择。


SIA 到底是什么

每个 agent 都是两部分粘合在一起:harness(系统提示、工具、解析器、重试逻辑)决定模型如何解题,weights 决定模型知道什么。

自改进研究沿这条缝分裂。一派让 meta-agent 改写 scaffold 而权重冻结,另一派在测试时训练权重而 scaffold 冻结。

SIA 在单个循环中同时运行两个杠杆。 当 scaffold 编辑不再见效时,它转而训练模型,使用任务自身的评分函数作为奖励。


三个基准,一个干净的消融

论文隔离了每个杠杆的贡献。SIA-H 仅 harness 更新,SIA-W+H 在 harness 之上增加权重更新。

任务指标SIA-HSIA-W+H提升
LawBenchTop-150.0%70.1%+20.1
TriMul时间 (μs)12,4831,017-91.9%
Denoising准确率关键检查点

TriMul 行翻译为:1,017 μs 对比此前 SOTA 的 1,161 μs,相比 SIA 自身基线 14.02 倍加速。权重更新在 harness 峰值 12,483 μs 后削减了 91.9%。

最可引用的结果是两行 NumPy。在 denoising 任务上,第一个权重更新检查点添加了 np.clip + np.rint 步骤,将插补基因计数四舍五入为非负整数——一个生物学约束,harness 编辑在所有迭代中从未产生。

一个注意事项:所有数字来自作者自己的 verifier 设置(论文表 3),尚无第三方复现。


循环如何工作

Meta-Agent

读取任务规范和参考代码,然后编写任务 agent 的第一个版本。论文中此角色运行在 Claude Sonnet 4.6 上。

Target Agent

运行任务并记录一切:每个提示、工具调用、结果和提取的答案。论文的目标模型是 gpt-oss-120b,在沙箱中执行(repo 默认跳过隔离,见步骤 5)。

Feedback-Agent

读取 agent 源码、完整轨迹和分数,然后输出两个产物:一份改进报告和下一代 agent。这是让循环「自改进」而非仅仅「迭代」的部分。

杠杆 1:harness 更新

软件工程层面的改动。在 LawBench 上,循环构建了一个 SVC 重排序器;在 TriMul 上,一个编译错误解析器将 CUDA 诊断反馈为上下文;在 denoising 上,一个批处理配置驱动器。

杠杆 2:权重更新

LoRA 适配器(rank 32,学习率 4e-5)在 H100 上训练,RL 算法匹配任务的奖励形状。论文报告 LawBench 使用 PPO + GAE,TriMul 的稀疏奖励使用熵优势加权,denoising 使用 GRPO。

哪个杠杆起了作用

取决于任务。 Harness 编辑将 LawBench 从 13.5% 带到 50.0%,然后权重增加了 scaffold 永远无法触及的 20.1 个百分点。在 TriMul 上,harness 几乎没动数字(0.105 → 0.120),权重做了几乎所有工作。规律是:scaffold 编辑购买执行卫生,权重更新购买领域直觉。


如何今天运行

Harness 循环在笔记本电脑上用一个 API key 就能跑。以下是完整路径,包括陷阱。

步骤 1:安装

截至 6 月 13 日,PyPI 最新版本为 sia-agent 0.5.1,wheel 包含所有四个捆绑任务。仅当你想阅读或修改代码时才需要 clone repo。

python3 -m venv .venv && source .venv/bin/activate
pip install 'sia-agent[claude]'
export ANTHROPIC_API_KEY="..."

成本提醒:默认配置每个角色都运行 Claude Haiku,而非论文的 Sonnet 4.6 + gpt-oss-120b 栈。按 generation 付费,所以先用低 --max_gen 开始。

步骤 2:运行捆绑任务

sia run --task gpqa --max_gen 5 --run_id 1

四个捆绑任务:gpqalawbenchlongcot-chessspaceship-titanic。Harness 模式是默认焦点,--max_gen 默认 3。

步骤 3:观察它自我编辑

实时 dashboard 自动在 http://127.0.0.1:8000 启动(--no-web 禁用)。每代结果落在 runs/run_1/gen_{n}/ 中,包含 target_agent.pyagent_execution.json 和从第 2 代起的 improvement.md

最有启发性的 5 分钟:

diff runs/run_1/gen_1/target_agent.py runs/run_1/gen_2/target_agent.py
cat runs/run_1/gen_2/improvement.md

步骤 4:指向你自己的任务

这是真正的回报。SIA 需要你提供三样东西:任务描述、数据和 verifier。

my-task/
├── data/
│   ├── public/
│   │   ├── task.md          # SIA 读取的规范
│   │   ├── evaluate.py      # 你的 verifier
│   │   └── ...              # agent 可能看到的输入
│   └── private/             # 保留答案,永不展示给 agent
└── reference/
    └── reference_target_agent.py   # 从 sia/tasks/_shared/ 复制

Verifier 是契约:evaluate.py 暴露 evaluate() 函数,对 data/private/ 评分输出,并写入 results.json。文件名很重要,编排器只读 results.json,即使捆绑的 GPQA evaluator 默认写入 evaluation_results.json

在烧 API credits 之前先独立测试:

python my-task/data/public/evaluate.py --gen-dir runs/run_1/gen_1
sia run --task_dir ./my-task --max_gen 5 --run_id 2

任何 MLE-Bench 竞赛都可以通过 python -m sia.prepare_mlebench_dataset -c "spaceship-titanic" 引导到此布局。该路径需要 mlebench extra、从 GitHub 安装的 mle-bench、Kaggle API 凭证(KAGGLE_USERNAMEKAGGLE_KEY),以及先在 Kaggle 接受竞赛规则。

步骤 5:沙箱隔离再信任

SIA 执行模型生成的代码,默认 --sandbox none 直接在你的机器上运行,并绕过 Claude SDK 的权限提示。Repo 自身的 SECURITY.md 将此评为高风险。

sia run --task gpqa --max_gen 5 --run_id 3 --sandbox docker

Docker 模式以只读方式挂载数据集、禁用网络、限制容器 2GB 内存、2 CPU、3600 秒。

步骤 6:weights 模式实际需要什么

--focus weights 将循环输出从 target_agent.py 翻转为基于 tinker-cookbook 组件构建的 train.py。它需要 TINKER_API_KEY 加上训练沙箱:默认 --training_sandbox modal,也需要 MODAL_TOKEN_IDMODAL_TOKEN_SECRET,或 sandboxfusion

所以预算 accordingly。Harness 模式是 10 分钟运行,weights 模式是一个基础设施项目,而 weights 是将每个结果推过其 harness-only 天花板的杠杆。


AlphaSignal 评测要点

消融是本次发布最强的部分。在三个无关领域隔离 SIA-H 与 SIA-W+H 正是这场辩论需要的实验,而 np.rint 检查点是我们见过的权重更新到达 scaffold 编辑无法触及之处的最干净证据。

但公告没提到的是:论文描述的 Feedback-Agent 自动决定何时改写 scaffold、何时训练,但在公开 repo 的 commit 01939270 中,这个决定是你的 --focus 标志,编排器中不存在自动选择器。

启动宣传也跳过了栈差距:默认运行 Claude Haiku 而非论文的 Sonnet 4.6 和 gpt-oss-120b,weights 模式在做事之前需要付费第三方训练基础设施。这些都没有隐藏,但也没有出现在病毒式传播帖子中。

最深的风险是作者自己标记的:耦合共进化 Goodhart。两个杠杆优化同一固定 verifier,所以循环可能收敛到在 evaluate.py 上拿高分但在其他地方脆弱的东西。

最佳建议: 今天在信任 verifier 的任务上采用 harness 循环,将自动 harness-to-weights 切换视为论文结果直到它正式发布。论文将完整算法选择处理推迟到 SIA v2,而那个选择器——而非当前 repo——才是让「自改进」自动化的东西。


常见问题

Q: SIA 是什么?
A: Hexo Labs 的开源系统,Feedback-Agent 通过两个杠杆改进任务 agent:改写 scaffold 和针对任务 verifier 训练 LoRA 权重更新。论文报告 LawBench 70.1% 对比此前最佳 45.0%。

Q: 公开 SIA repo 更新模型权重还是仅 scaffold?
A: 两条路径都在代码中,但每次运行只能选一个:--focus harness--focus weights。论文的自动切换不在公开编排器中。

Q: 本地运行 SIA 需要什么?
A: Python 3.11+,pip install 'sia-agent[claude]'ANTHROPIC_API_KEY。默认配置运行 Claude Haiku,weights 模式还需要 TINKER_API_KEY 加 Modal 或 SandboxFusion 凭证。

Q: 如何在自有任务上运行 SIA?
A: 构建任务目录,包含 data/public/task.md、输入、保留的 data/private/ 文件夹、参考 agent 模板和写入 results.jsonevaluate.py。然后 sia run --task_dir ./my-task

Q: SIA 在机器上运行安全吗?
A: 它执行模型生成的代码,默认模式无隔离。使用 --sandbox docker,阻断网络访问、只读挂载数据、限制容器 2GB 内存和 2 CPU。


→ 原推