科学工具
科学工具让世界更美好
让世界更美好

pi-autoresearch:pi自动化实验优化循环

pi-autoresearch 是为 pi 打造的自动化实验循环工具,可适配多种优化目标,包括测试速度、包体积、LLM 训练效果、构建时间、Lighthouse 评分等场景。

类型 具体内容
扩展(Extension) 工具集 + 实时组件 + /autoresearch 仪表盘
技能(Skill) 明确优化目标、生成会话文件、启动实验循环
工具 功能描述
init_experiment 一次性会话配置,设置实验名称、指标、单位、优化方向
run_experiment 执行任意命令,统计墙钟时间,捕获输出结果
log_experiment 记录实验结果,自动提交代码,更新组件和仪表盘

状态组件

编辑器顶部始终显示状态组件,格式示例:🔬 autoresearch 12 runs 8 kept │ best: 42.3s,直观展示实验运行次数、保留次数和最佳结果。

完整结果仪表盘

输入 /autoresearch 可打开全功能结果仪表盘,支持 Ctrl+X 切换显示状态,Escape 键关闭,集中查看所有实验数据。

技能(Skill)核心功能

调用 autoresearch-create 技能后,工具会通过提问(或从上下文推断)获取目标、命令、指标和相关文件范围,随后自动生成两个核心文件并立即启动实验循环,可选生成检查脚本:

文件 用途
autoresearch.md 会话文档,记录目标、指标、相关文件范围、已尝试方案,新的智能体可仅凭此文件恢复会话
autoresearch.sh 基准测试脚本,包含前置检查、任务执行逻辑,输出 METRIC name=number 格式的指标数据
autoresearch.checks.sh (可选)反向压力检查脚本,包含测试、类型校验、代码检查等逻辑,在每次基准测试通过后运行,失败将阻止“保留”操作

安装 pi-autoresearch

快速安装

执行以下命令即可完成安装:

pi install https://github.com/davebcn87/pi-autoresearch

手动安装

1、复制扩展和技能文件到对应目录:

cp -r extensions/pi-autoresearch ~/.pi/agent/extensions/
cp -r skills/autoresearch-create ~/.pi/agent/skills/

2、在 pi 中执行 /reload 命令,加载新增扩展和技能。

使用 pi-autoresearch

1、启动自动化研究

输入以下命令启动技能:

/skill:autoresearch-create

智能体会询问优化目标、执行命令、核心指标和相关文件范围(或从上下文自动推断),随后创建分支、生成 autoresearch.mdautoresearch.sh 文件、运行基准测试,立即启动实验循环。

2、自动化实验循环

智能体将自主执行循环流程:编辑代码 → 提交更改 → 运行 run_experiment → 执行 log_experiment → 保留有效更改或回滚无效更改 → 重复循环。除非主动中断,否则循环将持续进行。

每次实验结果都会追加到项目中的 autoresearch.jsonl 文件,每行记录一次运行数据,具备以下特性:

• 支持重启恢复:智能体可通过读取该文件恢复中断的会话

• 支持上下文重置:autoresearch.md 记录所有已尝试方案,新智能体可获取完整上下文

• 人类可读:随时打开文件即可查看完整实验历史

• 分支感知:每个分支拥有独立的实验会话

3、监控实验进度

• 状态组件:编辑器顶部实时显示核心数据

• 仪表盘:输入 /autoresearch 打开完整仪表盘,查看结果表格和最佳运行记录

• 中断总结:按 Escape 键可随时中断循环,智能体将提供实验总结报告

适用场景示例

应用场景 优化指标 执行命令
测试速度优化 秒(越低越好) pnpm test
包体积优化 千字节(越低越好) pnpm build && du -sb dist
LLM 训练优化 验证集每字节比特数(越低越好) uv run train.py
构建速度优化 秒(越低越好) pnpm build
Lighthouse 评分优化 性能分数(越高越好) lighthouse http://localhost:3000 --output=json

工作原理

扩展部分提供与领域无关的基础架构,技能部分承载具体领域知识,这种分离设计让一个扩展可支持无限个应用领域。

┌──────────────────────┐     ┌──────────────────────────┐
│  扩展(全局)        │     │  技能(按领域区分)       │
│                      │     │                           │
│  run_experiment      │◄────│  命令:pnpm test         │
│  log_experiment      │     │  指标:秒(越低越好)     │
│  组件 + 仪表盘       │     │  范围:vitest 配置文件    │
│                      │     │  思路:池化、并行化等     │
└──────────────────────┘     └──────────────────────────┘

两个核心文件保障会话在重启和上下文重置后仍能继续:

autoresearch.jsonl:追加式日志文件,记录每次运行的指标、状态、提交记录、描述信息

autoresearch.md:动态更新的文档,包含目标、已尝试方案、无效路径、关键成果

可选反向压力检查

创建 autoresearch.checks.sh 文件可添加正确性检查逻辑(如测试、类型校验、代码检查),确保优化不会破坏原有功能,示例脚本如下:

#!/bin/bash
set -euo pipefail
pnpm test --run
pnpm typecheck

检查逻辑说明

• 若未创建该文件,实验循环运行方式不变,无额外影响。

• 若文件存在,将在每次基准测试成功(退出码 0)后自动运行。

• 检查执行时间不影响核心指标统计。

• 检查失败时,实验将标记为 checks_failed(与崩溃行为一致,不提交代码,回滚更改)。

• 仪表盘会单独显示 checks_failed 状态,区分正确性失败和基准测试崩溃。

• 检查有独立超时时间(默认 300 秒,可通过 run_experiment 中的 checks_timeout_seconds 配置)。