AI会话数据微调工具

eden-flywheel是一个独立的MCP服务器,用于捕获Claude Code的编码会话作为微调数据,支持本地模型的训练和部署。

  • by alex-rentel
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 alex-rentel/eden-flywheel

使用说明

伊甸园飞轮

Claude Code的独立MCP服务器,可捕获您的编码会话作为本地模型的微调数据。

闭环:使用AI→ 捕捉→ 对…微调→ 部署→ 重复。

它做什么

与AI代理的每次对话都是一个潜在的训练示例。eden飞轮捕获这些交互,对其质量进行评分,消除重复,将其格式化为SFT训练数据,并触发微调运行——所有这些都是通过模型上下文协议完成的。

You use Claude Code daily
    │
    ▼
flywheel captures the session (manual or auto)
    │
    ▼
Quality scoring: tool usage, error rate, turn depth
    │
    ▼
Deduplication via SHA-256 fingerprinting
    │
    ▼
Export as SFT training data (ChatML / Alpaca / ShareGPT / Raw)
    │                                      │
    ▼                                      ▼
Generate synthetic data             10% held-out eval split
(Qwen 3.6 Plus via OpenRouter)
    │
    ▼
Fine-tune via local MLX LoRA
    │
    ▼
Evaluate on held-out eval set
    │
    ▼
Promote & deploy to Ollama
    │
    ▼
You use the BETTER model tomorrow

安装

添加到克劳德代码

添加到MCP配置(~/.claude/mcp.json 或同等):

{
  "mcpServers": {
    "eden-flywheel": {
      "command": "npx",
      "args": ["-y", "eden-flywheel"],
      "env": {
        "FLYWHEEL_DB": "~/.config/eden-flywheel/flywheel.db",
        "OPENROUTER_API_KEY": "your-key-here"
      }
    }
  }
}

或在本地安装:

git clone https://github.com/alex-rentel/eden-flywheel.git
cd eden-flywheel
npm install && npm run build

然后将MCP指向已构建的入口:

{
  "mcpServers": {
    "eden-flywheel": {
      "command": "node",
      "args": ["/path/to/eden-flywheel/dist/index.js"]
    }
  }
}

用法:全循环

1.捕获会话

flywheel_autocapture { enabled: true }   // auto-capture all messages
flywheel_record_start {}                 // or manual recording

2.导出培训数据

flywheel_export { evalSplit: true, outputPath: "/tmp/train.jsonl" }
// Writes train.jsonl + train.eval.jsonl (10% held-out)

3.生成合成数据(可选)

flywheel_generate { count: 50, difficulty: "medium" }
// Uses Qwen 3.6 Plus (free on OpenRouter) to create more training examples

4.训练LoRA适配器

flywheel_train {
  baseModel: "mlx-community/Qwen2.5-Coder-3B-Instruct-4bit",
  trainData: "/tmp/train.jsonl"
}

5.评估

flywheel_eval {
  baseModel: "mlx-community/Qwen2.5-Coder-3B-Instruct-4bit",
  adapterPath: "~/.config/eden-flywheel/models/adapters/lora-...",
  testData: "/tmp/train.eval.jsonl"
}

6.推广和部署

flywheel_promote { adapterPath: "..." }
// GGUF adapters auto-deploy to Ollama
// MLX adapters use mlx-lm directly

MCP工具(14)

会话录制

工具 说明
flywheel_record_start 使用可选元数据开始录制会话
flywheel_record_stop 停止记录并计算质量分数
flywheel_list 列出所有记录的会话及其统计数据

自动捕获(克劳德代码)

工具 说明
flywheel_autocapture 启用/禁用自动会话捕获
flywheel_ingest 将原始消息摄入活动的自动捕获会话
flywheel_cost 估计会话的API成本

出口与质量

工具 说明
flywheel_export 将会话导出为训练JSONL,可选10%eval分割
flywheel_filter 按质量、工具使用情况、错误导出过滤后的数据
flywheel_status 显示捕获统计数据、质量分布、数据健康状况

合成数据

工具 说明
flywheel_generate 通过Qwen 3.6 Plus(免费OpenRouter)生成合成训练数据
flywheel_validate 使用Claude对合成数据质量进行评分

培训管道

工具 说明
flywheel_train 触发MLX LoRA微调
flywheel_eval 根据保留的测试数据评估适配器
flywheel_promote 将适配器部署到Ollama或活动插槽

MCP资源(4)

URI 描述
flywheel://status 当前捕获状态和统计数据
flywheel://sessions 所有录制的会话
flywheel://latest-export 最近的ChatML JSONL导出
flywheel://training-history 训练跑和主动适配器

支持的培训后端

后端 硬件 用例
当地MLX LoRA (mlx-lm) Mac M1+ 快速迭代,小型适配器
本地纳米帽 (mlx纳米帽) Mac M1+ mlx全SFT
远程HPC (伊甸园模型+Slurm) GPU集群 大规模微调

支持的部署目标

目标 注释
奥拉玛 通过模型文件自动部署GGUF适配器
mlx lm 使用MLX安全张量适配器进行直接推理

配置

配置文件位于 ~/.config/eden-flywheel/config.json:

{
  "logLevel": "info",
  "dbPath": "~/.config/eden-flywheel/flywheel.db",
  "autoCapture": true,
  "defaultExportFormat": "chatml"
}

CLI标志

eden-flywheel --verbose            # Debug logging
eden-flywheel --quiet              # Error-only logging
eden-flywheel --log-level warn     # Specific log level
eden-flywheel --db-path /tmp/f.db  # Custom database path

环境变量

变量 描述
OPENROUTER_API_KEY 需要 flywheel_generate (合成数据)
ANTHROPIC_API_KEY 需要 flywheel_validate (质量评分)
FLYWHEEL_DB 覆盖数据库路径

质量评分

根据以下因素,会话得分为0-1:

信号 重量 描述
工具调用存在 +0.15 使用工具的会话更有价值
存在错误 -0.15 错误严重的会话将受到惩罚
多回合(4+) +0.10 更深入的对话是首选
成功的工具模式 每次+0.05 工具调用→ 结果→ 响应链
长度好 +0.05 不要太短,也不要太长
角色多样性(3+个角色) +0.05 用户+助手+工具多样性

导出格式

  • 聊天ML (默认):标准SFT格式,系统提示+工具调用为XML
  • 羊驼:用于简单微调的指令/输入/输出
  • 分享GPT:多回合人工/gpt对话格式
  • 原始:保留所有角色,包括工具消息

相关项目

许可证

Apache 2.0