ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

SkillOpt 深度解析:把 Agent 技能文档当作可训练参数,像训练神经网络一样训练技能

SkillOpt 深度解析:把 Agent 技能文档当作可训练参数,像训练神经网络一样训练技能 人工智能大模型AI Agent提示工程【免费下载链接】SkillOptSkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.项目地址https://gitcode.com/gh_mirrors/sk/SkillOpt点击查看免费下载SkillOpt 是微软研究院开源的一个文本空间优化器它把一份自然语言技能文档Markdown视为冻结 LLM Agent 的可训练状态通过轨迹驱动的有界文本编辑、验证门控更新和多轮训练循环产出可直接部署的best_skill.md技能产物全程不修改任何模型权重。本文基于仓库 README.md 与核心源码 skillopt/engine/trainer.py完整讲解其六阶段训练循环、深度学习类比、安装配置、六个内置 Benchmark、多后端体系与扩展方式读完即可上手跑通一个端到端技能优化实验。核心思想技能文档是冻结 Agent 的可训练状态现代 Agent 技能的来源通常是三类人工手写、由强 LLM 一次性生成、或通过松散的自我修订演化。SkillOpt 指出这三条路都不像深度学习的优化器那样对待技能本身也都无法在反馈下稳定地超越起点。SkillOpt 的基本主张见 README.md Overview 一节是把技能文档当作冻结 Agent 的可训练状态trainable state。训练时被优化的对象不是模型权重而是一份几百到几千 token 的 Markdown 技能文档它在部署时作为提示词注入目标模型。由独立的优化器optimizer模型将带评分的 rollout 轨迹转化为有界的 add / delete / replace 编辑作用于单一技能文档。默认论文路径采用严格门控一个候选编辑只有当其在 held-out 验证集selection split上的分数严格高于当前技能时才被接受这与神经网络训练中基于验证集的 early stopping / 模型选择在思想上一致。训练稳定性来自三个机制文本学习率预算限制每步最多应用多少条编辑、被拒编辑缓冲区把失败模式和被拒编辑的历史上下文喂给优化器避免重复无效修改、以及epoch 级的 slow / meta 更新跨 epoch 的纵向比较与优化器记忆对抗跨 epoch 遗忘。部署时零推理期额外模型调用best_skill.md只是运行在未改动目标模型上的提示词通常为 300–2,000 token。按 README 报告的实验规模SkillOpt 在6 个 Benchmark、7 个目标模型、3 种执行环境直接对话、Codex CLI、Claude Code CLI共52 个 (模型, 基准, 执行环境) 评测单元上全部取得最优或并列最优在 GPT-5.5 上平均无技能准确率在直接对话中提升23.5 个点、在 Codex agentic 循环中提升24.8 个点、在 Claude Code 中提升19.1 个点。优化后的技能产物还可以跨模型规模、跨执行环境Codex ↔ Claude Code乃至迁移到邻近基准而无需重新优化。六阶段训练循环从 Rollout 到 GateREADME 将训练流程概括为像训练神经网络一样训练技能。仓库里真正驱动这一流程的是 skillopt/engine/trainer.py 中的ReflACTTrainer类训练入口在 scripts/train.py通过ReflACTTrainer(cfg, adapter).train()调用其 docstring 明确给出了六阶段管线阶段名称深度学习的对应物源码中的实际动作1Rollout前向传播目标模型target用当前技能文档作为系统提示执行任务产生轨迹与 hard/soft 分数2Reflect反向传播 / 梯度优化器模型optimizer分析轨迹 minibatch产出结构化编辑补丁patch3Aggregate梯度累积与归并merge_patches对语义相似的补丁做层次化合并避免冗余编辑4Select梯度裁剪rank_and_select按相关度排序learning_rate即编辑预算 edit budget限制每步应用条数5Update参数更新apply_patch_with_report把选中的编辑应用到技能文档生成候选版本6Gate验证 / 早停在 selection split 上 rollout 候选技能evaluate_gate决定 accept / reject1. Rollout前向传播训练循环最内层对每个 accumulation batch 调用adapter.rollout(train_env, current_skill, rollout_dir, use_eval_feedbackTrue)由目标后端执行任务并计算hard精确匹配与softF1 / 部分得分分数。环境无关的设计由 skillopt/envs/base.py 的抽象基类EnvAdapter保证——它只定义build_*_env、rollout、reflect、get_task_types等生命周期接口所有环境特异性逻辑都委托给具体适配器。2. Reflect反向传播优化器把 rollout 结果按gradient.minibatch_size分片用gradient.analyst_workers个并发 worker 并行分析产出失败/成功两种来源的补丁。默认失败样本和成功轨迹都会分析除非开启gradient.failure_only。从源码看补丁会经过_normalise_patches归一化并附上source_typefailure / success与support_count支撑该编辑的样本数供后续排序使用。3. Aggregate层次化合并merge_patches(current_skill, all_failure_patches, all_success_patches, batch_sizemerge_bs, ...)在 skillopt/gradient/aggregate.py 中实现将多个分析器的编辑补丁合并为一份统一的merged_patch。4. Select梯度裁剪 / 学习率合并后的编辑按相关度排序然后用编辑预算截断optimizer.learning_rate配置别名edit_budget即每步最多应用的编辑数lr_scheduler支持constant/linear/cosine由 skillopt/optimizer/scheduler.py 的build_scheduler驱动此外还有autonomous由优化器自主决策学习率见decide_autonomous_learning_ratelr_control_mode可设为fixed/autonomous/none。源码中每步会把ranked_edits.json、lr_decision.jsonautonomous 模式持久化到步骤目录方便事后审计。5. Update参数更新默认skill_update_mode: patch走apply_patch_with_report逐条应用编辑并返回应用报告applied / skipped / error 统计此外还有rewrite_from_suggestions整文档重写与full_rewrite_minibatchminibatch 级全量重写模式。候选技能会写入candidate_skill.md。6. Gate验证门控这是 SkillOpt 与盲目自我修订的关键区别。skillopt/evaluation/gate.py 是纯决策函数它把候选技能在valid_seen选择集上的得分与当前技能、历史最优技能比较返回accept_new_best/accept/reject三种动作。门控指标可配置hard默认用精确匹配准确率比较soft用逐样本软得分比较适合选择集样本太少、hard 不敏感的场景mixed加权平均(1 - w) * hard w * softw由gate_mixed_weight配置默认 0.5另有可选的use_semantic_density指令密度加分项。从 trainer 源码看每个候选的 (hard, soft) 会按技能哈希缓存sel_cache相同候选不重复 rollout被拒步的编辑摘要会进入步缓冲区step buffer以之前尝试过什么编辑、分数如何下降的形式作为后续 Reflect 的上下文这正是 README 提到的被拒编辑缓冲区。每个 epoch 结束后还有两个 epoch 级机制Slow Update用上一 epoch 与当前 epoch 的技能在同一批样本上做纵向对比将结果分类为 improved / regressed / persistent-fail / stable-success生成高层指导注入技能文档可配optimizer.slow_update_gate_with_selection选择门控或无条件注入用于对抗跨 epoch 遗忘与Meta Skill跨 epoch 的优化器侧记忆从 epoch 2 开始把前一 epoch 的记忆作为后续 Reflect / Update 的上下文。这些对应 skillopt/optimizer/slow_update.py 与 skillopt/optimizer/meta_skill.py。训练结束后trainer 会在测试集valid_unseen上分别评测初始技能 S₀、验证集最优技能 best-on-val、最终技能 final三个版本并把全部指标与 token 统计写入summary.json。深度学习类比速查表README 与 docs/guide/training-loop.md 共同给出如下映射完整表格见 docs/guide/dl-analogy.md深度学习SkillOpt模型权重技能文档Markdown前向传播Rollout目标模型执行任务损失 / 梯度Reflect优化器产出编辑补丁梯度裁剪编辑选择learning_rate 最大编辑数SGD 步补丁应用到技能文档验证集选择集selection split上的门控评测学习率调度lr_schedulercosine / linear / constantEpoch多 epoch slow update 与 meta skill 记忆安装与运行环境要求Python ≥ 3.10训练/评估需要至少一个可用的模型后端托管 API、本地服务或已安装的执行 CLI。完整步骤见 docs/guide/installation.md。PyPI 安装获得skillopt-train、skillopt-eval、skillopt-sleep三个命令wheel 不含仓库的基准配置、数据物化脚本与 Agent 集成外壳这些需要源码检出python -m pip install skillopt skillopt-sleep --help源码检出用于论文复现、内置基准配置与二次开发git clone https://gitcode.com/gh_mirrors/sk/SkillOpt cd SkillOpt python -m pip install -e .可选依赖 extras.[alfworld]、.[claude]Claude Agent SDK注意claude_chat后端仍需要单独安装并认证 Claude Code CLI、.[qwen]、.[searchqa]SearchQA 数据、.[webui]监控面板、.[dev]开发测试、全量.[alfworld,claude,qwen,searchqa,webui,docs,dev]。环境变量SkillOpt 不会自动加载.env需要手动导出cp .env.example .env set -a; source .env; set aAzure OpenAI API-key 认证的最简配置AZURE_OPENAI_ENDPOINThttps://your-resource.openai.azure.com/ AZURE_OPENAI_API_VERSION2024-12-01-preview AZURE_OPENAI_API_KEYyour-key AZURE_OPENAI_AUTH_MODEapi_key验证安装python -c import skillopt; print(SkillOpt ready!)再检查skillopt-train --help/skillopt-eval --help/skillopt-sleep --help。配置体系分层 YAML 与关键参数SkillOpt 使用带_base_继承的 YAML 配置基准配置继承 configs/base/default.yaml 并覆盖各自取值目录结构为configs/benchmark/default.yaml。详细说明见 docs/guide/configuration.md完整参数清单见 docs/reference/config.md。模型后端优化器角色与目标角色分离optimizer_backend控制反思与技能编辑对应训练器target_backend控制任务 rollout对应被训练冻结 Agent旧式backend字段保留兼容。训练入口scripts/train.py会按--backend的语义把角色后端解析到位例如--backend claude_code_exec只把 target 默认成 Claude Codeoptimizer 保持openai_chat。后端OptimizerTarget配置方式openai_chat✓✓Azure OpenAI或其openai_compatible认证模式openai_compatible✓✓通用 OpenAI Chat Completions 端点claude_chat✓✓Claude Code CLIclaude -p非直接 Anthropic API 客户端qwen_chat✓✓通过 OpenAI 兼容端点托管的 Qwen自托管 vLLM/SGLang 或托管网关minimax_chat✓✓MiniMax APIminimax_region:global_en/cn_zhcopilot_chat✓✓GitHub Copilot CLIcopilot -p别名copilotcodex_exec—✓Codex CLI 执行 harnessclaude_code_exec—✓Claude Code CLI 执行 harnesscursor_exec—✓Cursor Agent CLI 执行 harnesscopilot_exec—✓GitHub Copilot CLI 执行 harness值得注意的是copilot_chat通过本地已认证的 CLI 同时填满两个角色--backend copilot即可完成完整训练而无需单独配置 provider API keyclaude_chat尽管名字像 API 客户端实际是拉起claude -p命令行。若提供商实现了 OpenAI Chat Completions 协议优先使用内置的openai_compatible后端而不是新写集成见 docs/guide/new-backend.md。关键训练参数来自 configs/base/default.yamlmodel: backend: azure_openai # 高层兼容标签 optimizer_backend: openai_chat # 优化器角色 target_backend: openai_chat # 目标角色 optimizer: gpt-5.5 # 优化器部署/模型 target: gpt-5.5 # 目标部署/模型 train: num_epochs: 4 # epoch 数 batch_size: 40 # 每步任务数batch size accumulation: 1 # 梯度累积 seed: 42 gradient: minibatch_size: 8 # 反思 minibatch 大小 merge_batch_size: 8 # 补丁合并 batch 大小 analyst_workers: 16 # 并行反思 worker 数 failure_only: false # 是否只反思失败轨迹 optimizer: learning_rate: 4 # 每步最大编辑数edit_budget min_learning_rate: 2 # 衰减调度器的最低编辑数 lr_scheduler: cosine # constant / linear / cosine / autonomous lr_control_mode: fixed # fixed / autonomous / none skill_update_mode: patch # patch / rewrite_from_suggestions / full_rewrite_minibatch use_slow_update: true # epoch 边界 slow update slow_update_samples: 20 # slow update 采样数 use_meta_skill: true # 跨 epoch 优化器记忆 evaluation: use_gate: true # 验证门控默认与论文一致 gate_metric: hard # hard / soft / mixed gate_mixed_weight: 0.5 # metricmixed 时的 soft 权重 eval_test: true # 训练结束后跑测试集评估 env: name: # 基准名 split_mode: ratio # ratio / split_dir exec_timeout: 120 # 单任务超时秒README 与配置文档特别强调use_gate: true是默认且符合论文的设置置为false时仍记录选择集分数但强制接受所有候选这会改变优化语义应在报告中显式声明。Skill-Aware Reflection可选默认关闭配置文档还描述了EmbodiSkill 风格的失败路由失败分析器把每个失败模式分类为SKILL_DEFECT规则错误或缺失 → 常规门控主体编辑或EXECUTION_LAPSE规则存在但未被执行 → 向技能内受保护附录区追加短提醒步级编辑永不触碰该区域。相关开关为optimizer.use_skill_aware_reflection默认 false保证与基线一致、skill_aware_appendix_sourceboth/failure_only、skill_aware_consolidate_threshold0 时附录超过 N 条后用一次优化器调用做 LLM 压缩。该开关由configure_skill_aware_reflection进程级生效对所有基准通用且与整文档重写模式互斥。CLI 覆盖任何配置项都可通过--cfg-options从命令行覆盖python scripts/train.py \ --config configs/searchqa/default.yaml \ --cfg-options \ optimizer.learning_rate16 \ optimizer.lr_schedulerlinear \ gradient.analyst_workers8旧式扁平参数--batch_size、--num_epochs、--seed等仍被接受会按 scripts/train.py 中的_LEGACY_TO_STRUCTURED映射到结构化配置凭据类参数--azure_openai_api_key等会触发弃用警告推荐改用环境变量或托管身份认证。快速上手SearchQA 端到端实验README 提供了六个内置基准DocVQA文档问答、ALFWorld具身 AI、OfficeQA企业问答、SearchQA开放域问答、LiveMathematicianBench数学推理、SpreadsheetBench电子表格编辑对应配置分别在 configs/docvqa/、configs/alfworld/、configs/officeqa/、configs/searchqa/、configs/livemathematicianbench/、configs/spreadsheetbench/。完整演练见 docs/guide/first-experiment.md。SearchQA 是最简单的纯文本入门基准。仓库只包含稳定的 SearchQA ID 清单而非完整可运行样本需先安装数据 extra 并物化一次脚本见 scripts/materialize_searchqa.py# 克隆并安装研究版 checkout SearchQA 数据 extra git clone https://gitcode.com/gh_mirrors/sk/SkillOpt cd SkillOpt python -m pip install -e .[searchqa] # 配置凭据在 .env 中选择一种认证模式 cp .env.example .env set -a; source .env; set a # 从仓库内 ID 清单物化可运行 split python scripts/materialize_searchqa.py # 在 SearchQA 上训练输出到可预测的目录 python scripts/train.py \ --config configs/searchqa/default.yaml \ --out_root outputs/searchqa_quickstart # 评估最优技能 python scripts/eval_only.py \ --config configs/searchqa/default.yaml \ --skill outputs/searchqa_quickstart/best_skill.md \ --split valid_unseentrain.py启动时会打印解析后的后端/数据配置、每步 rollout 与门控进度、学习率调度与输出目录eval_only.py会把eval_summary.json写入自己的时间戳目录不会覆盖训练产物。输出目录结构与监控指定--out_root后生成的运行目录结构如下详见 docs/guide/first-experiment.mdoutputs/searchqa_first_run/ ├── config.json # 解析后的运行配置凭据已脱敏 ├── runtime_state.json # 断点续训状态 ├── history.json # 每步历史记录 ├── best_skill.md # 最终部署产物 ├── skills/ │ └── skill_vXXXX.md # 每一步的技能快照 ├── steps/ │ └── step_XXXX/ │ ├── candidate_skill.md # 候选技能 │ ├── merged_patch.json # 合并补丁 │ ├── ranked_edits.json # 排序后编辑 │ ├── step_record.json # 步级记录 │ └── trajectory_digest.json ├── slow_update/ # epoch 边界纵向对比 └── meta_skill/ # 跨 epoch 优化器记忆训练支持断点续训trainer 会依据runtime_state.json/history.json自动从最后完成的步骤恢复源码见 skillopt/engine/trainer.py 的 resume 逻辑。WebUI 监控面板README 提供了一个可选的 Gradio 监控面板pip install -e .[webui] python -m skillopt_webui.appFlag默认值说明--port7860服务端口--host0.0.0.0绑定地址--share关闭创建公开 Gradio 分享链接默认绑定所有网络接口本机使用请加--host 127.0.0.1。浏览器打开http://localhost:7860即可配置参数并启动训练。扩展性新增后端与新增基准添加一个新后端一个后端 一个 chat / exec 目标如openai_chat、claude_chat、qwen_chat、minimax_chat、copilot_chat、openai_compatible、codex_exec、claude_code_exec、cursor_exec、copilot_exec。如果提供商实现了 OpenAI Chat Completions 协议先试内置的openai_compatible后端再考虑加代码。完整契约见 docs/guide/new-backend.mdchat 后端在 skillopt/model/ 下新增name_backend.py模块仅作 target 的 exec 后端复用 skillopt/model/codex_harness.py 中的共享 harness两者都要通过common.py、backend_config.py与skillopt/model/__init__.py注册。添加一个新基准一个基准 一个skillopt/envs/name/包包含适配器adapter、数据加载器dataloader、带评分的 rollout 辅助、一份 YAML 配置可选一份初始种子技能。最简单的参考实现是 skillopt/envs/searchqa/。按 docs/guide/new-benchmark.md 的约定需要实现四件事SplitDataLoader子类—— 负责从磁盘加载 train / val / test 条目最小只需实现load_split_items()rollout 辅助—— 在批次上运行目标模型、逐条打分并把共享反思阶段消费的逐项对话持久化EnvAdapter子类—— 把 loader rollout 接入 skillopt/envs/base.py 定义的生命周期build_*_env、rollout、get_task_typesreflect()默认继承共享实现YAML 配置—— 引用 env 名称及标准 train / optimizer / gradient 旋钮。然后通过训练/评估脚本中的懒注册lazy registration使其可被发现无需在启动时导入可选依赖。SkillOpt-Sleep夜间离线自进化引擎README 还介绍了配套的SkillOpt-Sleeppreview / v0.2.0 起以skillopt-sleepCLI 发布一个面向本地编码 AgentClaude Code / Codex / Copilot / Cursor 等的夜间离线自进化引擎流程为harvest回顾会话→ mine挖掘可复用技能→ replay重放重复任务→ consolidate在 held-out 验证门控后整合并为 Claude Code、Codex、Copilot、Devin 提供了集成外壳另有 OpenClaw 参考适配这些插件/MCP 文件存放在仓库的 plugins/ 目录不在 PyPI wheel 内。它与研究引擎共享有界文本更新 验证的思想但是独立的入口、独立配置与独立的安全边界。详见 docs/sleep/README.md。版本与引用v0.1.0PyPI 首发完整训练循环、多后端支持、六个内置基准与 WebUIv0.2.0PyPISkillOpt-Sleep、多目标/replay/dream-rollout 实验控制、SearchQA split 物化、Windows 鲁棒性与 JSON 解析加固后续的openai_compatible通用后端、Sleep handoff 等特性已在main分支落地需源码安装见 CHANGELOG.md 与 docs/guide/installation.md 的说明。引用格式README 提供的 bibtexarticle{yang2026skillopt, title{Skillopt: Executive strategy for self-evolving agent skills}, author{Yang, Yifan and Gong, Ziyang and Huang, Weiquan and Yang, Qihao and Zhou, Ziwei and Huang, Zisu and Li, Yan and Gao, Xuemei and Dai, Qi and Liu, Bei and others}, journal{arXiv preprint arXiv:2605.23904}, year{2026} }更深入的资料可继续阅读仓库文档docs/index.md文档入口、docs/guide/training-loop.md训练循环、docs/guide/configuration.md配置指南、docs/guide/skill-document.md技能文档规范、docs/reference/config.md配置全量参考与 docs/reference/cli.mdCLI 参考。赞分享人工智能大模型AI Agent提示工程【免费下载链接】SkillOptSkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.项目地址https://gitcode.com/gh_mirrors/sk/SkillOpt点击查看免费下载相关推荐gbrain skillopt 完全指南把 SKILL.md 当参数训练的自进化技能优化器gbrain skillopt 完全指南把 SKILL.md 当参数训练的自进化技能优化器 gbrain skillopt 是 gbrain 仓库中自我进化人工智能RAGAgent 记忆MCP 服务知识管理gbrain skillopt 实战指南把 SKILL.md 当作可训练参数实现验证门控的自进化技能优化gbrain skillopt 实战指南把 SKILL.md 当作可训练参数实现验证门控的自进化技能优化 导读 skill optimizer 是 gbra人工智能RAGAgent 记忆MCP 服务知识管理CVAT 标注平台从原始视频到 COCO 数据集的 15 分钟完整路径CVAT 标注平台从原始视频到 COCO 数据集的 15 分钟完整路径 训练检测模型前最耗时的环节往往是手动框图一两千张图、几个类别纯人工要干好几天。C数据标注计算机视觉数据集AI 应用后端前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表