oni-devops-traces
收藏数据集概述:oni-devops-traces
数据集简介
oni-devops-traces 是一个开源的多轮 DevOps Agent 追踪数据集,采用 Thought → Code → Observation 格式,通过本地 31B 教师大语言模型从现有指令数据集中提取蒸馏而成。支持在 24GB 显存上训练,在任意 16GB GPU(如 RTX 4080、4070 Ti、5060 Ti、Apple Silicon)上部署。
数据规模与构成
- 总子集数量:15 个
- 原始条目数:4,110 条
- 接受条目数:3,042 条(接受率约 74%)
- 教师模型:gemma4:31b
- 最低格式合规分数:84.8/100
子集详情
| 子集名称 | 来源 | 原始→接受条目数 | 领域 |
|---|---|---|---|
bash_pipes |
Magicoder-Evol 过滤 grep/awk/sed/find/xargs/jq | 300 → 243 | Linux CLI 管道链 |
ci_cd_specific |
Magicoder-Evol 过滤 GitLab CI / GitHub Actions / Jenkins | 250 → 215 | CI/CD 流水线 |
design_patterns |
Magicoder-Evol 过滤 GoF 设计模式 | 250 → 182 | 架构设计推理 |
django |
Magicoder-Evol 过滤 Django 生态 | 300 → 199 | Django 脚手架 |
docker_advanced |
Magicoder-Evol 过滤 Docker 高级用法 | 300 → 248 | 多阶段构建、健康检查、网络、Compose 模式 |
eslint |
Magicoder-Evol 过滤 ESLint | 10 → 8 | ESLint 配置与规则 |
express |
Magicoder-Evol 过滤 Express.js | 250 → 199 | Node.js 后端路由与中间件 |
frontend_fullstack |
Magicoder-Evol 过滤 JS/TS/Node/HTML/CSS | 400 → 310 | 前端全栈工具链 |
js_only |
Magicoder-Evol 过滤纯 JavaScript | 400 → 351 | 纯 JavaScript |
kubernetes |
Magicoder-Evol 过滤 Kubernetes | 200 → 79 | K8s 清单与 kubectl 工作流 |
microservices |
Magicoder-Evol 过滤分布式/消息队列 | 250 → 133 | 消息队列、服务发现 |
postgres_advanced |
Magicoder-Evol 过滤 PostgreSQL 高级特性 | 250 → 150 | 窗口函数、索引、EXPLAIN、vacuum |
solid |
Magicoder-Evol 过滤 SOLID/重构 | 250 → 192 | 代码改进而非编写 |
ssh |
Magicoder-Evol 过滤 SSH 工作流 | 300 → 225 | SSH 密钥、scp/rsync、端口转发 |
ts_only |
Magicoder-Evol 过滤 TypeScript | 400 → 308 | 接口/类型/泛型/tsconfig |
数据格式
- 格式类型:JSONL(每行一个 JSON 对象)
- 每条数据结构:
{"messages": [...], "meta": {...}} - 对话轮次:最少 4 轮(system + user + assistant + user),通常 6-15 轮
- 助手回复规范:每个助手回合 =
Thought + <code>tool_call(...)</code> - 用户回复规范:助手回合后的用户回合 =
Observation: ... - 结尾规范:最后一个助手回合 =
<code>final_answer("...")</code>
示例片段
json {"messages": [ {"role": "system", "content": "You are a DevOps agent..."}, {"role": "user", "content": "Set up nginx reverse proxy..."}, {"role": "assistant", "content": "Thought: First write the config. <code>write_file(...)</code>"}, {"role": "user", "content": "Observation: wrote 245 chars to /etc/nginx/sites-available/app"}, {"role": "assistant", "content": "Thought: Now test it. <code>bash(command=nginx -t)</code>"}, {"role": "user", "content": "Observation: $ nginx -t [exit 0] syntax is ok"}, {"role": "assistant", "content": "<code>final_answer(nginx config OK, reloaded)</code>"} ]}
构建方法
教师模型选择
经过 20 次测试集评估,gemma4:31b 胜出,平均分 92.0/100,零灾难性失败。
蒸馏参数
- 量化方式:Q4(默认)
- 上下文窗口:16,384
- 最大预测长度:4,000
- 温度:0.7
- 重复惩罚:1.15
- 最低格式合规分数:84.8
复合评分指标(8 项)
| 指标 | 权重 | 检查内容 |
|---|---|---|
json_parses |
1.0 | 有效 JSON 格式 |
has_messages |
1.0 | ≥4 条消息 |
system_present |
0.5 | 包含 system 角色 |
assistant_has_thought_and_code |
1.0 | 每个助手回合含 Thought + <code> |
tool_call_present |
0.8 | 至少调用 5 种工具之一 |
final_answer_present |
1.0 | 最后调用 final_answer |
verification_before_final |
0.7 | 最终答案前有验证步骤 |
step_count_in_range |
0.3 | 3-15 个助手回合 |
许可证
- 代码(scripts/):Apache 2.0
data/own_anchors/:Apache 2.0data/distilled_*/:MIT(继承自 Magicoder 家族)- 教师模型贡献:Apache 2.0(gemma4 输出免费)
使用方式
python from datasets import load_dataset
ds = load_dataset("path/to/this/repo", data_dir="data/distilled_bash_pipes")
Each item: {"messages": [...], "meta": {...}}
局限性
- 来自 Magicoder-OSS-Instruct-75K 的完整源桶未发布(gemma4:31b 在最低分 84.8 下拒绝了所有 200 个采样项目,噪音过高)




