06 · 模型选择策略4 个高能力模型的分工,reviewer 随机选但不与 developer 重复

模型库

模型完整路径能力定位成本(估)
DeepSeek V4 Pro opencode-go/deepseek-v4-pro 主力写代码,逻辑严密 $$(中)
GLM 5.2 opencode-go/glm-5.2 中文友好,文档/UI 写得好 $$(中)
MiniMax M3 opencode-go/minimax-m3 代码风格细致,review 严 $$(中)
Kimi K2.7 opencode-go/kimi-k2.7-code 长上下文,看大 PR 时不累 $$(中)

Developer 模型选择

Developer 默认用 deepseek-v4-pro。原因:

PM 在以下情况可临时换 model:

Reviewer 模型选择(随机 + 不重复)

规则 每次需要 reviewer 时,PM 从 {glm-5.2, minimax-m3, kimi-k2.7-code} 三个里随机选 1 个,且不与 developer 用的 model 相同

为什么不从 4 个里选(含 deepseek)?

伪代码

REVIEWER_POOL = ["opencode-go/glm-5.2",
                 "opencode-go/minimax-m3",
                 "opencode-go/kimi-k2.7-code"]

def pick_reviewer(developer_model: str) -> str:
    pool = [m for m in REVIEWER_POOL if m != developer_model]
    return random.choice(pool)

为什么是"不重复"而不是"差异化"?

Merger 模型选择

Merger 默认用 deepseek-v4-pro(它只跑几个 git 命令,model 能力要求不高,沿用主力即可)。

实际上 merger 的"智能需求"很低(只解释 merge 策略),以后甚至可以用 deepseek-v4-flash 省钱。

模型 fallback 链

如果某个 model 失败(限流、报错),PM 的 fallback 顺序:

deepseek-v4-pro
  → deepseek-v4-flash          (同 provider 的轻量版,省钱)
    → glm-5.2                   (换 provider)
      → minimax-m3              (再换)
        → kimi-k2.7-code        (最后备选)
          → 报用户              (都失败)

模型成本监控

PM 在每次 session 结束时记录:

写入 .pm/iterations.json 对应 iteration 的 cost_usd 字段。

每日汇总成一行(写入 ~/agent-workspace/logs/daily-cost.jsonl),PM 在预算快超限时主动告知用户。

模型升级路径(未来)

未来优化怎么用
差异化选 reviewer积累数据后,按 task 类型选最适合的 model(逻辑/UI/性能优化等)
Reasoning 模式复杂任务用 --variant high/max 增强推理
轻量任务用 flashMerger / Reviewer 部分场景可换 flash 省成本
本地小模型部分"是否合并 / 简单 review"用本地 7B 模型兜底(等机器升配再考虑)