원클릭으로
skillopt-trainer
用 DeepSeek API 训练 SkillOpt agent skill,从零到 best_skill.md
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
用 DeepSeek API 训练 SkillOpt agent skill,从零到 best_skill.md
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | skillopt-trainer |
| description | 用 DeepSeek API 训练 SkillOpt agent skill,从零到 best_skill.md |
| version | 2.3.0 |
| author | naipi11 |
| license | MIT |
| metadata | {"tags":["skillopt","prompt-optimization","deepseek","skill-learning","agent-training"],"platforms":["linux","macos","windows"]} |
用微软 SkillOpt 框架 + DeepSeek API 训练可部署的自然语言 skill 文档。 不需要 Azure、不需要 GPU、不需要本地模型——纯 API 调用。
加载此 Skill 后,必须进入交互流程,不要直接跑命令。按以下顺序引导用户:
检查本地是否已有 SkillOpt 仓库和 venv。如果没有,引导用户克隆安装。
1. SearchQA — 阅读理解(已有数据模板,最快上手)
2. 其他内置 benchmark — DocVQA / SpreadsheetBench / ALFWorld 等
3. 自定义任务 — 我自己的场景(客服/代码审查/SQL/翻译/...)
根据用户选择,进入对应分支。
convert_searchqa.py 转换。关键:取至少 5000 条,否则 train 太少 Optimizer 吃不饱env_template 写 adapter(rollout() + loader)根据数据量推荐(train 量是关键):
| train 量 | batch_size | learning_rate | 预期 steps/epoch |
|---|---|---|---|
| < 200 | 数据的 ~10% | 3~4 | 8~12 |
| 200~500 | 20~50 | 4~5 | 10~15 |
| 500~2000 | 50~100 | 5~6 | 10~20 |
| 2000+ | 100~200 | 6~8 | 10~20 |
通用:epochs=3, lr_scheduler=cosine, analyst_workers=8。
数据量红线:train < 200 条时 Optimizer 很难从有限样本中提炼可泛化规则。如果能扩大数据,优先扩大而非调参。
# CLI
python scripts/train.py --config configs/searchqa/deepseek.yaml --num_epochs 3
# WebUI
pip install gradio && python -m skillopt_webui.app --port 7860
训练中查看进度:
cat outputs/<run>/runtime_state.json | python3 -m json.tool
# 看 last_completed_step
训练结束后读 summary.json。建议重命名 skill 避免多任务混淆:
cp outputs/<run>/best_skill.md outputs/searchqa-v1.md
python3 -c "
import json
s=json.load(open('outputs/<run>/summary.json'))
print(f'Best val: {s[\"best_selection_hard\"]:.4f}')
print(f'Test: {s[\"test_hard\"]:.4f}')
print(f'Baseline: {s[\"baseline_test_hard\"]:.4f}')
print(f'Delta: {s[\"test_delta_hard\"]:+.4f}')
print(f'Steps: {s[\"total_steps\"]} Accepts: {s[\"total_accepts\"]} Rejects: {s[\"total_rejects\"]}')
"
判断成功:test_hard > baseline_test_hard,delta 正数且 > 2%。如果 delta < 2% 或 Accept < 2 次,大概率是 train 数据量不足。
best_skill.md 是纯 Markdown。一句命令:
# Hermes
git clone https://github.com/naipi11/SKILL-SkillOpt.git ~/.hermes/skills/skillopt-trainer
# Claude Code
git clone https://github.com/naipi11/SKILL-SkillOpt.git ~/.claude/skills/skillopt-trainer
# Codex / OpenClaw / OpenCode
git clone https://github.com/naipi11/SKILL-SkillOpt.git ~/.<agent>/skills/skillopt-trainer
git clone https://github.com/microsoft/SkillOpt.git && cd SkillOpt
python3 -m venv venv && source venv/bin/activate && pip install -e .
export OPENAI_API_KEY=*** export OPENAI_BASE_URL="https://api.deepseek.com"
打代码补丁(必需): skillopt/model/azure_openai.py 的 _make_client()——endpoint 为空时回退到 OpenAI()。共需改 4 处类型标注。
# 下载
curl -L -o data/searchqa_raw/train.zip \
"https://huggingface.co/datasets/kyunghyuncho/search_qa/resolve/main/data/train_test_val/train.zip"
# 转换(≥5000 条,保证 train 足够大)
python scripts/convert_searchqa.py data/searchqa_raw/train.zip data/split 5000 "2:1:7"
configs/searchqa/deepseek.yaml:
_base_: ../_base_/default.yaml
model:
backend: openai_chat
optimizer: deepseek-v4-pro
target: deepseek-v4-flash
reasoning_effort: high
azure_openai_endpoint: ""
train:
train_size: 0
batch_size: 80
gradient:
minibatch_size: 4
merge_batch_size: 4
analyst_workers: 8
optimizer:
learning_rate: 5
lr_scheduler: cosine
env:
name: searchqa
split_mode: split_dir
split_dir: data/split
workers: 4
复制 skillopt/envs/_template,实现 env.py(rollout + evaluate)和 loader.py(load_raw_items),注册即可。适用于任何「输入 → LLM → 评分」的任务。
deepseek-chat/deepseek-reasoner 将于 2026/07 弃用,用 deepseek-v4-pro/deepseek-v4-flash