hexo-ai/sia

GitHub: hexo-ai/sia

SIA 是一个自我改进型 AI 框架,通过多 Agent 协作的迭代循环自动提升任意模型或 Agent 在基准任务上的表现。

Stars: 1721 | Forks: 199

# SIA (Self-Improving AI) [![arXiv](https://img.shields.io/badge/arXiv-2605.27276-b31b1b.svg)](https://arxiv.org/abs/2605.27276) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![PyPI version](https://img.shields.io/pypi/v/sia-agent.svg)](https://pypi.org/project/sia-agent/)

SIA Star History Chart

[**SIA: Self Improving AI with Harness & Weight Updates**](https://arxiv.org/abs/2605.27276)(Hebbar 等,2026)的官方实现——这是一个自我改进的循环,其中语言模型 agent 会同时更新特定任务 agent 的 harness 和权重。论文报告显示,在 LawBench 上提升了 56.6%,在 GPU kernel 上运行时间减少了 91.9%,在单细胞 RNA 去噪任务上较基线提升了 502%。 SIA 是一个自我改进的 AI 框架,旨在自主提升任何 AI 系统(模型 / Agent)在基准测试任务上的性能。 ## 介绍视频 - [SIA 配置](https://www.loom.com/share/be0534bc818d408bab937033c6457ec9) - [SIA 运行可视化工具](https://www.loom.com/share/5b1dc2dc858b4493b4b348f0b88d5b9e) ### 架构

SIA orchestration flow

Control flow between Meta, Target, and Feedback agents over successive generations.

SIA 通过协调三种主要类型的 AI agent 协同工作,以不断提升任务表现: ### 术语表 1. **Meta-Agent**:读取任务描述并生成针对该任务量身定制的初始 Target Agent。 2. **Target / 任务专用 Agent**:尝试完成任务,并记录其操作和结果。 3. **Feedback/Improvement Agent**:审查 Target Agent 的性能日志,寻找改进空间,并相应地更新 Target Agent。 这种迭代过程使系统能够自主地完善和增强其解决科学任务的能力。 ### 基准测试结果

MLE Bench Results
OpenAI MLE-Bench Hard: a gauntlet of real Kaggle ML competitions where agents must write, run, and iterate full ML pipelines. SIA ranks #1 across all generations tested.

LawBench Results
LawBench: predict the criminal charge from Chinese court case descriptions across 191 charge categories. SIA-W+H reaches 70.1% Top-1 accuracy, beating the prior SOTA of 45%.

TriMul CUDA Results
AlphaFold-3 TriMul Triton Kernel: implement and optimize the Triangle Multiplicative Update as a Triton kernel, preserving correctness while hitting H100 latency targets. SIA-W+H achieves 14x speedup over baseline.

Denoising Results
scRNA-seq Denoising: impute missing gene expression values in single-cell RNA sequencing data. SIA-W+H scores 0.289 MSEnorm, surpassing the prior SOTA of 0.220.

## 在本地使用内置任务运行 SIA SIA 自带四个内置任务:`gpqa`、`lawbench`、`longcot-chess`、`spaceship-titanic`。 ### 安装 选择与你要运行的 LLM 相匹配的 agent 实现。 **Claude agent 实现**(Claude Agent SDK,仅限 Claude 模型): ``` python3 -m venv .venv && source .venv/bin/activate pip install 'sia-agent[claude]' export ANTHROPIC_API_KEY="..." ``` **OpenHands agent 实现**(多 provider — Gemini、OpenAI、Anthropic 等): ``` python3 -m venv .venv && source .venv/bin/activate pip install 'sia-agent[openhands]' # 导出你将要使用的 provider(s) 的 key(s): export ANTHROPIC_API_KEY="..." # for anthropic/* models export GEMINI_API_KEY="..." # for gemini/* models (or GOOGLE_API_KEY) export OPENAI_API_KEY="..." # for openai/* models ``` 完整的 provider/model 参考:[docs/configuration.md](docs/configuration.md#api-keys)。 ### 运行 CLI 包含两个子命令:**`sia run`**(自我改进循环)和 **`sia web`**(运行可视化工具,见[运行可视化](#visualize-runs))。 ``` sia run --task gpqa --max_gen 5 --run_id 1 ``` 将 `--task` 替换为四个内置任务中的任意一个。(不带 `run` 子命令的 `sia --task ...` 依然有效,会被视为 `sia run ...`)。 产物文件将存放在 `runs/run_{run_id}/gen_{n}/` 目录下: - `target_agent.py` — 该世代的 agent - `agent_execution.json` — 执行日志 - `improvement.md` — 差异说明(第 2 代及以后) 在运行期间,一个**实时仪表板**会自动启动于 `http://127.0.0.1:8000`(需要安装 `web` 扩展依赖;使用 `--no-web` 可禁用)。 ### 常用参数 (`sia run`) | 参数 | 默认值 | 描述 | |---|---|---| | `--task` | — | 内置任务名称(与 `--task_dir` 互斥) | | `--task_dir` | — | 外部任务目录的路径 | | `--max_gen` | 3 | 自我改进的世代数 | | `--run_id` | 1 | 唯一的运行标识符 | | `--meta-agent-profile` | `default-meta` | meta/feedback agent 的配置文件(名称或 `.json` 的路径) | | `--target-agent-profile` | `default-target` | target agent 的配置文件(名称或 `.json` 的路径) | | `--no-web` | off | 在运行期间不自动启动实时仪表板 | | `--web-port` | 8000 | 实时仪表板的端口(使用 `--web-host` 更改绑定主机) | 每个 agent 的模型、agent 实现和 provider 均来自一份**配置文件**(见下文)。例如, 若要将 Nebius 上的 Kimi-K2.6 作为目标模型进行评估: ``` export NEBIUS_API_KEY="..." # + ANTHROPIC_API_KEY for the default meta agent sia run --task gpqa --target-agent-profile kimi-nebius-target --max_gen 5 --run_id 2 ``` 完整的 agent 实现、模型和 API key 参考:[docs/configuration.md](docs/configuration.md)。遇到问题?请查阅 [docs/troubleshooting.md](docs/troubleshooting.md)。 ### 运行可视化 一个内置的 Web 仪表板会渲染 `runs/` 目录下的所有内容:包括每个世代的 target agent 代码(带语法高亮)、meta/feedback 提示词、改进 计划、评估得分(包含跨世代准确率图表以及 按领域划分的明细)、执行轨迹和日志。 ``` sia web # serve ./runs at http://127.0.0.1:8000 sia web --runs-dir ./runs --port 8080 ``` 它也会随 `sia run` 自动启动(使用 `--no-web` 可禁用),因此 你可以实时观察每个世代的产生过程。 | 参数 | 默认值 | 描述 | |---|---|---| | `--runs-dir` | `./runs` | 要可视化的运行目录 | | `--host` | `127.0.0.1` | 绑定主机 | | `--port` | 8000 | 绑定端口 | | `--no-browser` | off | 不自动打开浏览器窗口 | ### 编写自定义配置文件 **provider** 是一个 endpoint + 凭证;而**配置文件** (profile) 用于配置一个 agent 角色。一个 meta-agent 配置文件捆绑了 `(agent_impl, model, provider)`;一个 target-agent 配置文件捆绑了 `(model, provider, agent_reference)`。它们都是 JSON 文件——内置的默认文件位于 `sia/defaults/{providers,profiles}/`, 你可以将自己的文件放在 `./providers/` 和 `./profiles/` 下(或设置 `$SIA_PROVIDERS_DIR` / `$SIA_PROFILES_DIR`)。无需修改代码。 ``` mkdir -p providers profiles ``` ``` // providers/my-endpoint.json — an OpenAI-compatible provider { "provider_id": "my-endpoint", "name": "My Endpoint", "client_kind": "openai", // anthropic | openai | google "base_url": "https://api.example.com/v1", "api_key_env": "MY_ENDPOINT_API_KEY" } ``` ``` // profiles/my-target.json — the target agent's model + provider + reference { "profile_id": "my-target", "name": "My model on My Endpoint", "model": "vendor/my-model", "provider_id": "my-endpoint", // references the provider above "agent_reference": "default" // "default" = the task package's reference; // or { "source": "./my_agent_dir/", "entrypoint": "main.py" } } ``` ``` export MY_ENDPOINT_API_KEY="..." sia run --task gpqa --target-agent-profile my-target # by name (resolves ./profiles/my-target.json) sia run --task gpqa --target-agent-profile ./profiles/my-target.json # or by explicit path ``` `agent_reference` 是 meta-agent 启动及 feedback agent 进行改进的初始种子: `"default"` 使用任务包自带的参考,或者使用 `{ "source": "./my_agent.py" }`(单文件)或 `{ "source": "./dir/", "entrypoint": "main.py" }` (agent 使用其工具读取的多文件目录)提供你自己的参考。目录 参考中的 `requirements.txt` 会在每个世代中被安装。 要在其他地方运行 **meta/feedback** agent,请给 meta 配置文件提供一个不同的 `agent_impl` (`openhands` 或 `pydantic-ai`),并使用 `--meta-agent-profile` 传入。`claude` agent 实现仅限 Anthropic 使用。有关完整的 schema 和更多示例,请参阅 [docs/configuration.md](docs/configuration.md)。 ## 引入自定义任务 准备一个具有以下布局的任务目录,并使用 `--task_dir` 指向它: ``` my-task/ ├── data/ │ ├── public/ │ │ ├── task.md # Task description — SIA reads this │ │ └── ... # Inputs the agent is allowed to see │ └── private/ # Held-out eval data; never exposed to the agent └── reference/ ├── reference_target_agent.py # Template; copy from sia/tasks/_shared/ └── SAMPLE_TASK_DESCRIPTIONS.md # Optional: example tasks for the meta-agent ``` ``` sia run --task_dir ./my-task --max_gen 5 --run_id 1 ``` **或者引入一个 MLE-Bench 比赛。** SIA 可以直接从任何 [MLE-Bench](https://github.com/openai/mle-bench) 比赛中生成一个任务目录——它会通过 Kaggle API 拉取数据集,设置公开/私下的划分,并放入参考 agent 模板: ``` python -m sia.prepare_mlebench_dataset -c "spaceship-titanic" sia run --task_dir ./tasks/spaceship-titanic --max_gen 5 --run_id 1 ``` 这两种路径的完整分步指南:[docs/walkthrough.md](docs/walkthrough.md)。 ## 评估 在每个世代之后,orchestrator 会自动对 target agent 进行评分,并 将结果输入到下一个世代的 feedback 提示词中——这就是自我改进 循环所依据的优化信号。 1. target agent 将其输出写入到世代目录中(例如 `gen_1/submission.csv`)。 2. orchestrator 运行任务的评估器:`python evaluate.py --gen-dir gen_1/`。 3. `evaluate.py` 将输出与 `data/private/` 中保留的真实结果进行比对评分, 并写入 `gen_1/results.json`(或 `evaluation_results.json`)。 4. 这些指标会被注入到 feedback 提示词中,并显示在 `context.md` 和 [Web 仪表板](#visualize-runs)中(跨世代准确率图表、按领域划分的明细)。 四个内置任务已经附带了评估器。对于**自定义任务**,请放入一个 包含 `evaluate()` 函数的 `evaluate.py` 到 `data/public/` 中——由它决定 提交格式,与 `data/private/` 进行比对,并返回一个指标字典。 在正式运行之前,请单独测试它: ``` python my-task/data/public/evaluate.py --gen-dir runs/run_1/gen_1 # should write results.json ``` 完整的契约、返回格式规则和完整示例:[EVALUATION_GUIDE.md](EVALUATION_GUIDE.md)。 ## 延伸阅读 - [docs/architecture.md](docs/architecture.md) — 目录布局、世代流程、提示词自定义 - [docs/walkthrough.md](docs/walkthrough.md) — 详细的自定义任务演练 - [docs/configuration.md](docs/configuration.md) — agent 实现、模型、API key、CLI 参考 - [EVALUATION_GUIDE.md](EVALUATION_GUIDE.md) — 为自定义任务编写 `evaluate.py` - [docs/troubleshooting.md](docs/troubleshooting.md) — 常见错误与修复 ## 引用 如果您在研究中使用了 SIA,请引用: ``` @article{hebbar2026sia, title = {SIA: Self Improving AI with Harness \& Weight Updates}, author = {Hebbar, Prannay and Manawat, Yogendra and Verboomen, Samuel and Ivanova, Alesia and Palanimalai, Selvam and Bhatia, Kunal and Baskaran, Vignesh}, journal = {arXiv preprint arXiv:2605.27276}, year = {2026}, url = {https://arxiv.org/abs/2605.27276} } ```
标签:AI智能体, Python, 人工智能, 无后门, 模型优化, 用户模式Hook绕过, 自动化机器学习, 论文实现, 逆向工具