awesome-copilot autoresearch Skill 实战:构建可度量的自主迭代实验循环
awesome-copilot autoresearch Skill 实战构建可度量的自主迭代实验循环【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot导读autoresearch是 awesome-copilot 仓库中一个面向任意编程任务的自主迭代实验 Skill你只需定义优化目标与衡量指标Agent 便会进入改代码 → 跑实验 → 测量 → 保留或回退的自动化循环直到达到实验预算或被你手动中断。本文以 skills/autoresearch/SKILL.md 为骨架完整讲解其交互式 Setup、分支与基线、实验循环、结果汇报四个阶段的运作细节并结合仓库内的 Skill 校验脚本说明如何正确安装、触发与落地这套自动化爬山式优化流程。一、Skill 定位从机器学习训练到任意可度量任务1.1 核心思想autoresearch的灵感来自 Karpathy 的 autoresearch 项目见该 Skill frontmatter 的metadata.inspired-by字段但其适用范围从模型训练被泛化到了任何具有可度量产出的编程任务。它的工作方式可以用一句话概括你定义目标和度量方式Agent 自主迭代——修改代码、运行实验、测量结果、保留或丢弃变更——直到被中断为止。1.2 适用场景USE FOR根据 SKILL.md frontmatter 的description声明本 Skill 面向以下场景自主改进autonomous improvement迭代优化iterative optimization实验循环experiment loop自动研究auto research性能调优performance tuning自动化实验automated experimentation爬山式搜索hill climbing自动尝试try things automatically优化代码optimize code自主编码循环autonomous coding loop1.3 明确不适用的场景DO NOT USE FOR同样在description中Skill 明确声明不要用于一次性任务one-shot tasks简单 bug 修复simple bug fixes代码评审code review没有可度量指标的任务tasks without a measurable metric这条边界非常重要如果任务无法用数字指标衡量成败实验循环就失去了决策依据autoresearch便不适用。1.4 运行前提frontmatter 的compatibility字段写明了硬性依赖要求使用 git项目必须是 git 仓库git repository要求终端访问需要能够执行命令terminal accessgit 之所以是前提是因为整个循环的可回退性完全建立在 commit 与 reset 之上——每次实验先提交、失败则git reset --hard回退这是后面 Phase 2/3 的基石。二、安装与加载Skill 在仓库中的组织方式2.1 Skill 是什么在 awesome-copilot 中Skill 是包含指令与捆绑资源的自包含文件夹遵循 Agent Skills 规范每个 Skill 内有一个SKILL.md指令文件Agent 按需加载渐进式披露progressive disclosure详见 docs/README.skills.md。autoresearch文件夹当前只包含一个SKILL.md没有捆绑脚本或参考数据——整个流程完全由指令驱动。2.2 两种安装方式方式一通过 GitHub CLI 安装gh skills install github/awesome-copilot autoresearch该命令需要 GitHub CLI v2.90.0在交互式 Copilot 会话中引用 Skill 名称即可触发。方式二手动复制将 skills/autoresearch 文件夹整体复制到本地 skills 目录然后在提示词中引用该 Skill或让 Agent 自动发现。2.3 从仓库校验脚本看 SKILL.md 的结构约束autoresearch能被仓库正常收录其 frontmatter 必须通过 eng/validate-skills.mjs 的严格校验。从校验逻辑可以反推出该 Skill 文件的设计约束必须存在SKILL.md文件validateSkillFolder的第一步检查缺失直接报错name必须合法只能包含小写字母、数字与连字符长度在 1–64 字符之间SKILL_NAME_MIN_LENGTH/SKILL_NAME_MAX_LENGTH定义于 eng/constants.mjs且文件夹名必须与name一致——这正是autoresearch文件夹与name: autoresearch匹配的原因description必须有足够信息量长度需在 10–1024 字符之间这也是该 Skill 用大段文字同时描述适用场景与不适用场景的原因frontmatter 由 eng/yaml-parser.mjs 中的parseSkillMetadata解析name、description缺失会被判定为无效 Skill。对照实际文件autoresearch的 frontmatter 字段包括name、description、license: MIT、compatibilitygit 与终端前提、metadata.author: luiscantero、metadata.inspired-by灵感来源标注。三、Agent 行为规则循环的宪法在进入具体阶段之前SKILL.md 用 10 条行为规则约束 Agent 在整个流程中的边界。这些规则可以分为必须做与禁止做两类DO必须在开始循环前交互式引导用户完成 Setup 阶段在做出任何修改前先建立基线测量baseline每次实验运行前先提交以便干净地回退维护一个结果日志TSV记录每一次实验回退未改善指标的变化git reset到最近一次已知良好状态循环一旦开始就自主运行——绝不中途停下问我该继续吗。DO NOT禁止不修改用户标记为**超范围out-of-scope**的文件不跳过测量步骤——每个实验都必须被测量不保留使指标回退的变更除非用户明确允许权衡取舍未经用户批准不安装新依赖或改动环境。这十条规则构成了整个循环的纪律基础可回退、可测量、自主、克制。四、Phase 1交互式 Setup实验参数定义在任何实验开始之前Agent 必须与用户逐项确认以下参数不得假设或跳过任何一项。这是整个流程中唯一强交互的阶段。4.1 定义目标GoalAgent 会直接询问用户你想改进或优化什么并给出典型示例执行时间、内存占用、二进制体积、测试通过率、代码覆盖率、API 响应延迟、吞吐量、错误率、基准分数、构建时间、打包体积、代码行数、圈复杂度等。4.2 定义指标Metric这是循环能否成立的关键。用户必须提供三样东西度量命令METRIC_COMMAND例如dotnet test、npm run benchmark、time ./build.sh、pytest --tbshort指标提取方式METRIC_EXTRACTION从输出中如何提取数值——一个正则、特定一行、或某个 JSON 字段方向METRIC_DIRECTIONlower_is_better越低越好或higher_is_better越高越好。文档给出的两个完整示例示例运行dotnet test --logger trx统计通过的测试数量。越高越好。 示例运行hyperfine ./my-program提取平均耗时。越低越好。三个参数METRIC_COMMAND、METRIC_EXTRACTION、METRIC_DIRECTION会被记录并在后续循环中反复使用。4.3 定义范围ScopeAgent 会询问哪些文件或目录允许我修改哪些文件是禁区只读分别记录为IN_SCOPE_FILESAgent 可编辑的文件/目录OUT_OF_SCOPE_FILES绝不允许修改的文件/目录。4.4 定义约束ConstraintsAgent 会询问用户希望遵守哪些约束典型示例包括每次实验的时间预算如每次运行应 2 分钟不允许新增依赖必须保持所有现有测试通过不得更改公共 API必须保持向后兼容VRAM/内存限制代码复杂度限制倾向更简单的方案统一记录为CONSTRAINTS。4.5 定义实验预算可选我应该运行多少个实验还是持续进行直到你叫停用户可以给出一个数字如尝试 20 个实验或选择unlimited无限直到用户中断。记录为MAX_EXPERIMENTS。4.6 简洁性标准Simplicity CriterionAgent 会告知用户默认的简洁性策略简洁性策略默认在其他条件相同的情况下更简单更好。带来丑陋复杂度的小改进不值得。在维持或改善指标的前提下删除代码是极好的结果。我会权衡复杂度成本与改进幅度。这个策略适用于你吗还是需要调整任何调整记录为SIMPLICITY_POLICY。这一条把代码质量纳入了实验的评价体系防止为了一点指标增益而堆砌复杂度。4.7 确认设置Confirm SetupAgent 会把所有参数汇总成一张清晰表格要求用户确认后方可进入下一阶段参数值目标Goal...度量命令Metric command...指标提取Metric extraction...方向Direction越低越好 / 越高越好范围内文件In-scope files...范围外文件Out-of-scope files...约束Constraints...最大实验数Max experiments...简洁性策略Simplicity policy...未经用户确认不得开始实验。五、Phase 2分支与基线Branch Baseline用户确认参数后进入实验准备阶段共 5 步5.1 创建分支基于当天日期提议标签如autoresearch/mar17并创建分支git checkout -b autoresearch/tag所有实验都发生在autoresearch/tag分支上保证主线不受影响。5.2 读取范围内文件读取所有 in-scope 文件建立对当前状态的完整上下文。5.3 初始化 results.tsv在仓库根目录创建results.tsv首行为表头experiment commit metric status description注意各列之间是**制表符tab**而非空格。随后把results.tsv和run.log追加到.git/info/exclude若已存在则追加而非覆盖使这两个文件保持 untracked 状态不修改任何已跟踪文件。5.4 运行基线在未修改的当前代码上执行度量命令将结果记录为实验编号0、状态baseline写入results.tsv。5.5 汇报基线向用户报告基线已建立[指标名] [数值]开始自主实验循环。至此Agent 取得了解答变化是否有收益的参照系。六、Phase 3实验循环Experiment Loop这是 Skill 的核心引擎。循环将持续运行直到达到MAX_EXPERIMENTS或用户手动中断期间不停下来询问用户。6.1 循环伪代码LOOP: 1. THINK - 分析此前结果与当前代码。 生成一个实验假设。 思考什么有效、什么无效、还有什么没试过。 2. EDIT - 修改 in-scope 文件以落地该想法。 保持每次实验的变更聚焦、最小化。 3. COMMIT - git add git commit附简短描述性消息。 格式experiment: 变更的简短描述 4. RUN - 执行度量命令。 将输出重定向到 run.log避免淹没上下文窗口。 使用适合当前 shell 的重定向 - Bash/Zsh: command run.log 21 - PowerShell: command * run.log 5. MEASURE - 从 run.log 中提取指标。 若提取失败崩溃/报错读取 run.log 最后 50 行定位错误。 6. DECIDE - 与当前最优值比较 - 改进IMPROVED保留该提交更新最优基线。 日志状态记为 keep。 - 持平或更差SAME OR WORSE回退。git reset --hard HEAD~1。 日志状态记为 discard。 - 崩溃CRASH尝试快速修复拼写、导入、简单错误。 用 git commit --amend 修正实验提交后重跑 实验保持原编号。 若两次尝试仍无法修复回退整个实验 git reset --hard HEAD~1日志状态记为 crash。 7. LOG - 向 results.tsv 追加一行 experiment_number commit_hash metric_value status description 8. CONTINUE - 回到步骤 1。6.2 逐步拆解THINK循环的大脑。Agent 综合前几轮结果生成假设方向包括什么有效继续深挖、什么无效放弃该方向、什么还没试过开辟新路。EDIT强调聚焦与最小化——每次实验只做一个改动否则无法归因指标变化。COMMIT实验在运行前必须先提交commit message 统一以experiment:前缀开头。这是回退机制的前提git reset --hard HEAD~1能精确撤销刚提交的这个实验。RUN将命令输出重定向到run.log run.log 21PowerShell 用* run.log避免大量输出占用上下文窗口——这对长时间循环至关重要。MEASURE从run.log提取数值指标。提取失败通常意味着程序崩溃此时读最后 50 行日志定位错误。DECIDE三种结局的分岔口。keep改进分支前进一步discard持平或回退git reset --hard HEAD~1crash允许一次快速修复并用git commit --amend修正原提交、保持实验编号但最多两次尝试否则整体回退并记为 crash。这个最多两次快速修复的限制防止循环在单个坏实验上无限卡死。LOG追加一行到results.tsv——实验编号、commit 哈希、指标值、状态、描述。这是研究日志也是最终汇报的数据源。6.3 实验策略想法生成优先级当 Agent 生成实验想法时按以下优先级顺序先摘低垂果实简单的参数调整、明显的低效点跟随结果某个方向表现出潜力就沿该方向继续探索平台期后多元化如果最近 3–5 个实验全部失败换一种完全不同的思路组合胜者若实验 A 和 B 各自独立带来改进尝试将二者组合定期做减法周期性尝试删代码/降复杂度验证指标是否保持激进重构增量想法穷尽后尝试更大的架构级变更。这是一套经典的爬山hill climbing搜索策略先局部贪心遇到平台期就跳出局部最优最后才动用大动作。6.4 约束处理时间预算如果某次运行超过预期时长 2 倍终止它并按 crash 处理现有测试若约束要求测试通过则在改动前后运行测试破坏即回退内存/资源持续监控资源占用超出约定上限即回退。七、Phase 4结果汇报Reporting循环结束时达到预算或被用户中断Agent 执行四项收尾动作7.1 打印完整 results.tsv将整个实验结果表以格式化表格输出——这是实验的完整履历。7.2 总结汇报内容包括运行的总实验数保留 / 丢弃 / 崩溃的实验数起始指标基线vs 最终指标改进百分比影响最大的 3 个变更7.3 展示保留实验的累计提交历史git log --oneline start_commit..HEAD这条命令清晰地展示分支上被保留的实验序列——每个提交都是一个有净收益的改进。7.4 推荐下一步基于结果向人类研究者建议可尝试的方向——那些对自动化实验来说太冒险或太复杂的想法例如需要人工判断的架构决策、涉及业务语义的权衡。八、快速参考Quick Reference8.1 results.tsv 格式制表符分隔5 列experiment commit metric status description 0 a1b2c3d 0.997900 baseline unmodified code 1 b2c3d4e 0.993200 keep increase learning rate to 0.04 2 c3d4e5f 1.005000 discard switch to GeLU activation 3 d4e5f6g 0.000000 crash double model width (OOM)解读示例实验0是基线实验1指标优于基线0.9932 0.9979假设 lower is better被保留实验2指标回退被丢弃实验3因内存溢出OOM崩溃、指标记为 0。该示例同时说明autoresearch并不限于特定领域——调学习率、换激活函数是 ML 场景但同样的表结构完全可以承载 API 延迟、构建时间等工程指标。8.2 Git 工作流要点所有实验发生在autoresearch/tag分支上每个实验在运行前先提交失败实验用git reset --hard HEAD~1回退成功实验推进分支results.tsv与run.log保持 untracked已加入.git/info/exclude。8.3 关键原则一切皆可测量没有测量的实验不存在失败即回退分支只因改进而前进保持自主绝不中途停下提问卡住就多想保持简单复杂度是成本要与收益权衡全程记录TSV 就是研究日志。九、使用建议何时启用、如何发挥最大价值9.1 触发时机在 Copilot 会话中提及以下意图时即可触发该 Skillautonomous improvement、iterative optimization、experiment loop、auto research、performance tuning、automated experimentation、hill climbing、try things automatically、optimize code、run experiments、autonomous coding loop。反之若任务是一次性编码、简单 bug 修复或代码评审应主动避免触发。9.2 使用前提自查清单启用前请确认项目是 git 仓库Skill 的compatibility硬性要求有可执行、可解析、方向明确的度量命令已明确 in-scope / out-of-scope 文件边界已与 Agent 确认参数汇总表。9.3 发挥价值的要点指标要快每次循环都要跑一次度量命令命令越慢相同时间内能尝试的实验越少文档也通过时间预算约束超时 2 倍按 crash 处理隐含了这一要求约束要准不装新依赖、不动公共 API、保持测试通过等约束能防止自动化优化在真实约束之外空转区分 keep/discard/crash三者分别代表净收益无收益执行失败是汇报阶段区分质量信号与执行噪声的关键重视简洁性策略默认同样收益下更简单更好的取向让循环不仅追指标也抑制复杂度膨胀。autoresearch的本质是把研究者手动尝试、测量、决定去留的科研闭环压缩进一个 git 驱动的自动化循环定义好目标与度量之后剩下的爬山交给 Agent而results.tsv与提交历史则完整保留了每一次尝试的足迹可供事后复盘与继续探索。【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考