自主技能优化系统

# Auto Skill
Optimizer

评估 → 改进 → 实测验证 → 人类确认 → 保留或回滚

「autoresearch 的核心想法很简单：让系统自主运行实验，评估结果，只保留有效的改进。一个只能向前转的棘轮。」

Andrej Karpathy — 谈自主实验循环
01

## 核心原则

五条规则，防止优化器偏移方向、自我刷分或引入退化。

01

### 单一可编辑资产

每轮优化只针对一个 SKILL.md 文件。一次修改，一次测量，一次决策。不做跨文件编辑，避免归因模糊。

02

### 双重评估

静态结构分析捕捉格式和完整性问题。实测执行捕捉行为退化。两者缺一不可。

03

### 棘轮机制

提升总分的改进被 commit。降低分数的修改自动 revert。分数只能上升或持平，永远不会下降。

04

### 独立评分

编辑 Skill 的 Agent 永远不为自己打分。由独立的子 Agent 评估输出质量，防止自我表扬偏差。

05

### 人在回路

每个 Skill 的优化循环完成后，系统暂停。向人类展示 diff 摘要、分数变化和测试输出对比。没有明确确认，任何改动都不会生效。

02

## 8维度
评估体系

100分评估体系。结构维度捕捉你能看到的问题，效果维度捕捉只有运行时才能感知的问题。

60
结构
分值
40
效果
分值

结构维度 — 静态分析
# | 维度 | 权重 | 评分标准
--- | --- | --- | ---
1 | Frontmatter质量 | 8 | 名称正确，描述包含功能/触发条件/使用场景，不超过1024字符
2 | 工作流清晰度 | 15 | 步骤有编号、可执行，每步都有明确的输入/输出
3 | 边界条件覆盖 | 10 | 错误处理、降级方案、常见故障恢复
4 | 检查点设计 | 7 | 关键决策前需用户确认，防止自主失控
5 | 指令具体性 | 15 | 无歧义，具体的参数/格式/示例，可直接执行
6 | 资源整合度 | 5 | 所有引用的脚本/资产路径存在且可访问

效果维度 — 需要实测
# | 维度 | 权重 | 评分标准
--- | --- | --- | ---
7 | 整体架构 | 15 | 层次清晰，无冗余或遗漏，符合生态系统约定
8 | 实测表现 | 25 | 运行2-3个测试提示词，对比启用 Skill 和 baseline 的输出质量

03

## 优化循环

从初始化到最终报告的五个阶段。系统在每个阶段内自主运行，但在阶段之间暂停等待人类审查。

0 初始化

### 范围与分支设置

确定优化范围，创建版本控制基础设施，加载历史记录。

1. 确认范围：全部 Skill 还是用户指定子集
2. 扫描 .claude/skills/*/SKILL.md 获取目标列表
3. 创建 git 分支：auto-optimize/YYYYMMDD-HHMM
4. 初始化或加载 results.tsv 用于历史追踪

0.5 设计

### 测试提示词工程

在任何评分之前，先设计用于衡量效果的测试提示词。没有好的测试，优化器就是盲飞。

1. 阅读每个 SKILL.md，理解其声明的能力
2. 为每个 Skill 设计2-3个提示词：一个正常路径，一个模糊场景
3. 保存到每个 Skill 目录下的 test-prompts.json
4. 在继续之前，将所有测试提示词提交人类审批

1 基线

### 全维度评分

为每个 Skill 建立起始分数。结构评分由主 Agent 完成，效果评分由独立子 Agent 完成。

1. 阅读 SKILL.md，为维度1-7评分并附理由
2. 启动子 Agent：分别在启用和未启用 Skill 的情况下运行测试提示词
3. 对比输出，为维度8评分（如子 Agent 不可用则标记 dry_run）
4. 计算加权总分，记录到 results.tsv
5. 展示评分卡，暂停等待人类确认

2 优化

### Hill-Climbing 循环

按分数从低到高处理 Skill。每轮：诊断最弱维度，提出一个针对性修复，执行，重新评分，做出决定。

1. 找出该 Skill 得分最低的维度
2. 生成一项具体改进（改什么，为什么改，预期分数变化）
3. 编辑 SKILL.md，用结构化消息 git commit
4. 重新评分：结构由主 Agent，效果由独立子 Agent
5. 新分 > 旧分：保留。否则：git revert，进入下一个 Skill
6. 每个 Skill 完成后：展示 diff + 分数变化，等待人类确认

3 报告

### 总结与指标

将所有结果汇总为最终优化报告，包含优化前后分数、实验次数和关键改进。

1. 统计总实验次数、保留次数、回滚次数和测试模式
2. 生成每个 Skill 的优化前后分数对比表
3. 列出影响最大的改进及其对应维度
4. 归档 results.tsv 供未来 baseline 参考

04

## 棘轮机制

分数只能上升。每轮要么改进 Skill，要么干净地回滚。不会随时间积累局部退化。

72
基线
轮次 0
78
保留
轮次 1
75
回滚
轮次 2
84
Keep
轮次 3
87
Keep
轮次 4
05

## 为什么需要
双重评估

单看结构无法判断 Skill 是否真正好用。单看效果无法判断它为何失败。

传统方法

### 纯结构审查

- 检查 frontmatter 是否存在且格式正确
- 验证步骤是否有编号和描述
- 确认文件路径和引用是否有效
- 无法检测 Skill 是否真正提升了输出质量
- 无法检测看似正确实则产生差结果的误导性指令
- 无法检测弊大于利的过度约束

Auto Skill Optimizer

### 双重评估

- 结构评分捕捉格式、完整性和可读性问题
- 实测执行揭示真实场景下的行为影响
- 基线对比衡量 Skill 是增值还是减值
- 独立子 Agent防止自我表扬的评分偏差
- 测试提示词设计确保评估针对真实用户场景
- Dry-run 降级在实测不可用时提供覆盖

06

## 概念映射

autoresearch 的核心抽象如何转化为 Skill 优化。同一台机器，不同的领域。

Autoresearch | Skill Optimizer | 实现细节
--- | --- | ---
研究论文草稿 | SKILL.md 文件 | 唯一的可编辑产物。所有改进都表现为对这一个文件的编辑。
评估指标 | 8维度评估体系 | 跨结构（60分）和效果（40分）的加权评分，总计100分。
实验循环 | 阶段2 hill-climbing | 诊断最弱维度，提出修复，执行，重新评分，保留或回滚。每个 Skill 最多3轮。
版本控制 | Git 分支 + revert | 每次编辑都是一次 commit。退化通过 revert（新 commit）回滚。完整审计记录。
自动化评估 | 子 Agent 测试执行 | 独立 Agent 分别在启用和未启用 Skill 的情况下运行测试提示词，对比输出质量。
人类审查关卡 | 阶段转换暂停 | 系统在基线评分后和每个 Skill 优化后暂停。展示 diff + 分数变化。
探索 vs 利用 | 阶段2.5探索性重写 | 当 hill-climbing 停滞（连续2次在第1轮就中断），提出完整的结构重写。
实验日志 | results.tsv | 带时间戳的记录：commit 哈希、Skill 名称、新旧分数、保留/回滚状态、评估模式。