将Autoresearch转化为通用技能
在 Karpathy 的仓库公开几天后,我偶然发现了一个 YouTube 视频,改变了我对它的看法。
微信 ezpoda免费咨询:AI编程 | AI模型微调| AI私有化部署
AI工具导航 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo
我是一名技术作家。我每天在文档仓库、Markdown 文件、API 参考、风格指南和 SEO 审计中度过。我不训练语言模型。我不写 CUDA 内核。但当 Andrej Karpathy 发布了他的 autoresearch 时,我无法停止思考它。
这个想法太简单了,事后看来似乎很明显:
让 AI 智能体自己运行实验,测量结果,保留有效的,丢弃无效的,重复直到它足够好。Karpathy 用它来训练一个小型 GPT 模型。智能体会修改训练代码,运行 5 分钟,检查模型是否变好,然后决定 —— 保留或回滚。然后尝试其他东西。一遍又一遍,自主地,在他睡觉的时候。
我记得读这个仓库时想:这不是给我的。
我不知道如何将它应用到我的世界。当时还不知道。
btw: Andrej Karpathy 大约在 2026 年 3 月 8-9 日 发布了他的开源项目 autoresearch
1、启发我的 YouTuber
在 Karpathy 的仓库公开几天后,我偶然发现了一个 YouTube 视频,改变了我对它的看法。创作者(Nick Saraev)采用了 Karpathy 的确切模式,并将其应用于完全不同的东西:优化用于生成白板风格图表的文本转图像提示词。
他的设置很优雅:
- 被优化的东西:发送到 Gemini 图像生成模型的提示词
- 测量:Claude 的视觉 API 根据 4 个二元标准评估每个生成的图表
- 循环:生成 10 个图表,给它们评分,如果分数更高则保留提示词,变异以修复失败,每 2 分钟重复一次
他的 4 个标准非常简单:
- 所有文本是否清晰且语法正确?是/否
- 颜色是柔和的粉彩吗?是/否
- 布局是线性的(从左到右或从上到下)吗?是/否
- 有任何数字或序数吗?是/否
10 个图表,每个 4 个问题,最高分 40 分。他从 32/40 开始。到第 6 轮 —— 大约 12 分钟后 —— 他达到了 40/40。完美分数。
让我震惊的不是图表。而是意识到所需的三个要素 —— 客观指标、自动化测量工具和可改变的东西 —— 完美映射到提示词:
| Karpathy 的 Autoresearch | 提示词优化 |
|---|---|
| train.py(被修改的代码) | prompt.txt(被修改的提示词) |
| val_bpb(客观数字) | 40 分中的评估分数(客观数字) |
| evaluate_bpb()(自动化测试) | Claude 视觉根据是/否标准评分 |
| Git keep/revert | 保留最佳提示词/回滚到最佳 |
映射是完美的。如果它对图表有效,它就可以对任何具有可测量输出的东西有效。包括文档。
2、将其编码为 Skill.md
我决定构建它。不仅仅是为了图表 —— 为了所有东西。一个可以适应任何仓库、任何技术栈、任何优化目标的通用 autoresearch 技能。
我打开 Cursor,调出 Karpathy 仓库,阅读重要的三个文件(program.md、train.py、prepare.py),重新观看视频,然后开始提示。 我世界。当时还不知道。 我让 AI 做的第一件事是深入理解这个模式。不仅仅是"仓库里有什么文件",而是实际的机制 —— 循环、保留/丢弃逻辑、变异步骤、为什么二元评估重要、为什么从最佳提示词而不是最新的失败提示词变异. 然后我说:为我构建一个对任何仓库都有效的技能.
版本 1.1
v1 技能有 5 个阶段:
- 仓库发现 —— 扫描代码库,识别语言、框架、目的
- 目标建议 —— 基于扫描,建议可以优化的内容(测试质量、文档完整性、可访问性、SQL 模式 —— 任何适合仓库的东西)
- 指标定义 —— 从行业最佳实践自动生成 4-6 个二元是/否评估标准
- 基线 —— 运行一次提示词以建立起始分数
- Autoresearch 循环 —— 生成、评估、评分、保留/丢弃、变异、自主重复
它有效。但有差距.
我用另一个 AI 来批评 skill.md
我将 v1 技能通过了严格的分析.这些是我在 v1 中遗漏的:
"变异策略未明确指定。" 告诉智能体"分析失败并重写提示词"太模糊了.修复:定义 6 个显式变异算子 —— 添加约束、添加负面示例、重构提示词、收紧模糊语言、删除冗余、添加反例.轮换使用它们,以便每个都得到尝试.记录使用了哪一个,以便你可以看到哪些变异类型最有效.
"没有验证集." 如果你每个循环选择不同的项目,分数差异可能反映项目难度而不是提示词质量.修复:指定 3-5 个固定项目,在每个循环中都出现.在这个固定集上比较分数,以便进行同类比较.轮换其余项目以获得覆盖率.
"评估步骤混淆了生成器和评判者." Claude 编写提示词、从中生成输出,然后评判这些输出 —— 都在同一个对话中.当它评估时,它知道输出 试图 做什么,并宽容地评分.修复:隔离评估.只呈现原始输出和标准文本.没有提示词上下文.像第一次看到一样评判.
"没有处理上下文窗口限制." 在 20 多个循环中,对话变得巨大.早期循环的细节会丢失.变异步骤 —— 依赖于理解失败模式 —— 会静默退化.修复:在每个循环开始时从磁盘重新读取所有状态.文件是事实来源,而不是对话记忆. "
样本方差未被跟踪." "改变样本"而不记住已经采样过的内容意味着你可能运行 20 个循环却意外地从未触及特定文件.修复:在 state.json 中跟踪已采样的项目,并进行覆盖率优先选择 —— 优先选择未测试的项目,只有在完全覆盖后才重复.
每个批评都导致了具体的、有针对性的修复.技能在每一轮中变得更加紧凑.
3、现在版本包含的内容
从这个过程中产生的技能具有原始图表技能从未有过的功能:
- 评估隔离 —— 在不知道生成它们的提示词的情况下评判输出
- 验证集 —— 用于一致比较的固定项目,用于覆盖率的轮换项目
- 结构化变异算子 —— 6 个命名策略,轮换并记录
- 样本跟踪 —— 覆盖率优先选择,没有意外缺口
- 上下文窗口管理 —— 每个循环从磁盘重新读取状态
- 命令评估 —— 用于确定性检查的 shell 命令(linting、编译、grep)与 LLM 评判一起
- 项目级失败检测 —— 标记总是失败的项目(损坏的项目,而不是糟糕的提示词)
- 对抗性重新评估 —— 每个循环,用怀疑性提示重新检查通过的输出
- 标准健康检查 —— 在第 10 轮,标记太容易或太难的标准
- 平台突破器 —— 在 5 个停滞运行后,丢弃提示词结构,仅使用标准和失败历史从头编写一个新的
- 置信度边际 —— 防止噪音在小批量中被误认为进步
- 计划模式启动 —— 在接触任何东西之前扫描和计划只读
4、文档示例:技术文档的 SEO
既然我是一名技术作家,让我演示这个技能如何应用于文档仓库.假设我有一个用 Docusaurus 构建的文档网站,我想改善我页面上的 SEO 合规性.
我打开仓库说:
运行 autoresearch 来优化我文档的 SEO
阶段 1 —— 智能体扫描:
仓库: my-product-docs
技术栈: Markdown, MDX, Docusaurus, Node.js
目的: SaaS API 产品技术文档网站
发现的质量工具: markdownlint, broken-link-checker, Docusaurus build
阶段 2 —— 跳过(我已经陈述了我的目标)
阶段 3 —— 智能体定义评估标准:
文档 SEO 合规性的评估标准(8 页 x 5 标准 = 最高 40):
1. 页面是否有唯一、描述性的 <title> 且在 60 个字符以下?
— 是/否 — 命令: grep -q "title:" [file]
2. 页面是否有 120-160 个字符之间的元描述?
— 是/否 — 命令: grep -q "description:" [file]
3. 页面是否恰好使用一个 H1 标题?
— 是/否 — 命令: grep -c "^# " [file] | grep -q "^1$"
4. 所有图像是否都有描述性的替代文本(不为空、不是"image"、不是"screenshot")?
— 是/否 — llm-judge
5. 页面是否至少有 2 个指向其他文档页面的内部链接?
— 是/否 — llm-judge
我审查.看起来不错.我切换到智能体模式.
阶段 4 —— 基线:
智能体创建 .autoresearch/ 并编写初始提示词:
为以下文档页面生成 SEO 优化的前置内容和结构改进。确保标题具有描述性且在 60 个字符以下.
包含 120-160 个字符的元描述,总结页面内容.
页面应该恰好有一个 H1 标题.所有图像必须有描述性的替代文本.
包含指向相关文档页面的内部链接.
基线分数: 24/40
分解:
- 60 个字符以下的标题: 7/8
- 元描述: 4/8(许多页面缺失或太短)
- 单个 H1: 8/8
- 替代文本: 3/8(大多数图像上是通用的"screenshot")
- 内部链接: 2/8(大多数页面是孤岛)
5、循环运行
第 2 轮 —— 变异: 添加约束. 添加了"元描述必须在 120-160 个字符之间.如果页面讨论 API 端点,描述必须包含 HTTP 方法和路径." 分数: 28/40. 保留.
第 4 轮 —— 变异: 添加负面示例. 添加了"不要使用通用的替代文本,如'image'、'screenshot'、'diagram'或'figure'.而是描述图像显示的内容:'显示客户端和服务器之间 JWT 令牌交换的身份验证流程'." 分数: 31/40. 保留.
第 6 轮 —— 变异: 收紧语言. 将"包含指向相关页面的内部链接"更改为"必须包含至少 2 个指向其他文档页面的内部链接.链接文本必须具有描述性(不是'click here'或'see more')." 分数: 35/40. 保留.
第 9 轮 —— 变异: 添加反例. 添加了前后对比示例: 分数: 38/40. 保留. 第 12 轮 —— 分数: 40/40. 保留. 完美分数. 第 13-14 轮 —— 40/40. 第 14 轮 —— 40/40. 三个连续的完美分数. 循环停止.
6、最终结果:
AUTORESEARCH 完成
运行次数: 14
起始分数: 24/40
最终最佳分数: 40/40
改进: 66.7%
保留的运行: 6
最有效的变异算子:
1. add_counterexample (2/2 保留 — 100%)
2. tighten_language (2/3 保留 — 67%)
3. add_constraint (1/2 保留 — 50%)
4. add_negative_example (1/2 保留 — 50%)
5. restructure (0/2 保留 — 0%)
6. remove_bloat (0/1 保留 — 0%)
最佳提示词保存到: .autoresearch/best_prompt.txt
完整历史: .autoresearch/results.jsonl
.autoresearch/best_prompt.txt 中的最佳提示词现在是一组经过实战测试的、优化的指令,用于生成 SEO 合规的文档.
我可以将其用作模板、将其提供给其他工具,或将其应用于我的整个文档网站. 而我在初始设置后什么都没做就到了这里.智能体自主运行了 14 个循环,找出有效的方法,丢弃无效的方法,并将获胜者交给我.
7、我的方向对吗?
我是一名 技术作家.我没有构建创业公司.我没有训练模型.我从当今最受尊敬的 AI 研究人员之一那里获取了一个想法,观看了一位 YouTuber 将其从 ML 训练转化为提示词优化,并将其编码成我可以在自己的工作中使用的东西 —— 文档 SEO、风格指南合规性、内容质量、API 参考完整性.
技能可能不完美.它会进化.评估隔离可以更强.变异算子可以更智能.未来的模型将使循环更快、判断更准确.但架构是健全的:扫描、建议、定义指标、运行循环、保留获胜者、丢弃失败者.
如果你在读这篇文章时想"我可以把这个用于 [我的东西]" —— 你是对的.这就是重点.技能是通用的,因为模式是通用的.生成、评估、保留最好的、再试一次.
8、自己试试
技能文件在这个文件夹中:
- Cursor: 将
cursor/SKILL.md复制到~/.cursor/skills/autoresearch-universal/SKILL.md - Claude Code: 将
claude-code/SKILL.md复制到~/.claude/skills/autoresearch-universal/SKILL.md打开任何仓库.切换到计划模式.说"运行 autoresearch"看看会发生什么. 如果你想深入了解,阅读SKILL.md本身 —— 它是 400 行纯英语,一步步告诉智能体确切要做什么. 如果你像我一样是技术作家,从文档 SEO 开始.如果你是前端开发人员,从可访问性开始.如果你是后端工程师,从测试用例质量开始.如果你是 DBA,从查询模式开始. 技能不在乎你优化什么.它只在乎你能用是或否来测量它.
这是我的 仓库
原文链接:I Turned Andrej Karpathy's Autoresearch Into a Universal Skill
汇智网翻译整理,转载请标明出处