multi 多模型评审
把同一个任务同时交给多个 AI 模型,并排呈现它们的一致与分歧,让你自己下判断。
- Star 数
- ★ 23
- 最近更新
- 11 天前
- License
- MIT
- 主语言
- Shell
- FA 评分
- 41/100 · 缺口较多
30 秒速览
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code · Claude APIChatGPT · OpenAI API(部分支持)
- 开始前需要
- 典型场景
- 提交 PR 前用多个模型交叉评审一个分支或 diff,希望拿到比内置评审更多的真实缺陷。
- 主要局限
- 依赖多个外部 CLI 与 API 密钥,任一后端缺失都会以
FAILED出现,配置面比单模型工具更宽。
这个 Agent 能做什么,适合哪些场景?
multi 是一个面向编码代理的插件(Claude Code 与 Codex CLI 均可安装),核心用途是把一次代码评审、任务完成度核查或提问同时分发给多个模型。它通过 config.toml 定义后端(backend)与配置档(profile):后端类型包括 codex、opencode、kilo、claude-headless 和 gemini,其中 claude-headless 可指向任何 Anthropic 兼容端点,例如 OpenRouter、z.ai、9router/OmniRouter。执行时每个后端与 Claude 子代理读取同一份代码快照(而非工作区实时文件),并行评审,再汇总成一份报告:经两个模型族相互印证的 corroborated、仅单一来源且已对代码核实的 single-source、互相矛盾的 disagreed,以及带原因的 dropped。可选的 depth 旋钮(lite/normal/ultra)与 model 旋钮(haiku/sonnet/opus/fable)控制评审角度与 Claude 子代理所用模型;loop 模式是唯一会修改工作区的模式。它还支持 /multi:check-if-done、/multi:ask、/multi:skill、/multi:adhd 等命令,并对每个模型标注是否可能将提示用于训练。
运行 multi 时,插件按当前 profile 取出一批后端,每类后端(如 codex、opencode、kilo、gemini、claude-headless)以对应 CLI 或 API 调用模型,同时读取同一份代码快照。评审流程中另有一个 ponytail 视角专门排查过度设计。结果被归类为 corroborated(两个模型族都发现)、single-source(单一来源,先对代码核实再呈现)、disagreed(分歧点)和 dropped(附丢弃原因),失败的端点在报告中显示为 FAILED: <why>。depth 控制 Claude 子代理的评审角度数量(正确性 / 加安全与设计 / 加“任务是否真的完成”、对抗式二次 codex 复核与逐条单源发现验证)。训练数据策略通过每个 runner 追加的 <answer>.trains 行记录 yes|no|unknown <model>,并以最差结果计入报告;可用 no_train = true、--no-train 或后端级 trains = false/true 覆盖。其他命令包括 /multi:check-if-done(要求提供能证明完成的命令执行结果)、/multi:ask(同一问题并排作答,不合并)、/multi:skill(对每个模型执行同一技能)、/multi:adhd(给每个模型分配不同认知框架做规划)和 /multi:setup。
- 提交 PR 前用多个模型交叉评审一个分支或 diff,希望拿到比内置评审更多的真实缺陷。
- 团队想验证“任务是否真的完成”,要求由没有写这段代码的模型来判断,并附上可复现的验证命令。
- 预算有限的个人开发者使用 Codex 免费额度 + OpenCode 免费模型 + OpenRouter
:free模型组成零成本评审团队。 - 已持有 z.ai、Qwen、DeepSeek 或 9router/OmniRouter 的 Anthropic 兼容端点,希望把这些模型并入同一次评审。
- 对合规敏感的用户需要按模型标注是否会用于训练,并用
--no-train排除有训练风险的模型。 - 想对同一问题或同一技能获得多个模型并列答案,而不是被合并成一个结论。
如何安装或部署这个 Agent?
在 Claude Code 中安装:
claude plugin marketplace add szarkans/multi
claude plugin install multi@szkills在 Codex CLI 中安装:
codex plugin marketplace add szarkans/multi
codex plugin add multi@szkills其他宿主可让代理抓取并执行安装说明:
Fetch and follow instructions from https://raw.githubusercontent.com/szarkans/multi/main/INSTALL.md运行环境需要 python3,以及你所配置后端对应的 CLI(codex、opencode、kilo、gemini)。
如何使用这个 Agent?
首次运行 /multi:setup(Codex 中为 $multi:setup 等宿主注册形式),它会生成 ~/.config/multi/config.toml 与 ~/.config/multi/providers.env。一个最小配置示例:
default_profile = "normal"
[backends.codex]
type = "codex" # Free or Go plan
[backends.opencode]
type = "opencode" # no `models` = using free models
[backends.openrouter] # key defaults to OPENROUTER_API_KEY
type = "claude-headless"
base_url = "https://openrouter.ai/api"
models = ["qwen/qwen3.8-27b:free", "nvidia/nemotron-3-ultra-550b-a55b:free"]
[profiles]
normal = ["codex", "opencode", "openrouter"]之后直接用自然语言下达指令,例如“review this branch, ultra, profile free”或“only codex and glm”,代理会把 profile 转成 --backend 参数。也可调用 /multi:check-if-done、/multi:ask、/multi:skill、/multi:adhd。若想整轮排除可能用于训练的模型,在 config.toml 顶部加入 no_train = true,或在单次调用时传入 --no-train。所有字段说明见仓库中的 config.example.toml。
这个 Agent 有哪些优点和局限?
- 多后端可插拔:同一套配置里可混用 codex、opencode、kilo、gemini 和任意 Anthropic 兼容端点(OpenRouter、z.ai、9router 等)。
- 输出结构有明确分类:corroborated / single-source / disagreed / dropped,并保留丢弃原因,分歧部分可直接阅读。
- 内置评测对比:同一批真实缺陷上 multi 找到 29 个真实缺陷、其中 16 个为独有,而内置
/code-review high为 14 个和 1 个,Claude 成本接近(约 $3.5 对 $3.4)。 - 无外部评审模型时拒绝运行,避免“单模型评审伪装成多模型”。
- 训练数据策略可查询并按模型标注,支持
--no-train与后端级trains覆盖。
- 依赖多个外部 CLI 与 API 密钥,任一后端缺失都会以
FAILED出现,配置面比单模型工具更宽。 - 耗时更长:评测中每个用例约 19 分钟,而内置
/code-review high约 10 分钟。 - 评测中的成本数字只覆盖 Claude 使用量,第三方模型费用另计,小额但并非为零。
- 训练标注基于各提供方公开规则与 Kilo 目录缓存,作者明确说明
no并不等于零保留。 loop模式会改写工作区,其余模式只读快照,使用前需清楚区分。
这个 Agent 与同类方案有什么区别?
仓库在评测中直接对比了 Claude Code 内置的 /code-review high:真实缺陷 14 对 29,独有缺陷 1 对 16,Claude 成本约 $3.4 对 $3.5,单用例耗时约 10 分钟对 19 分钟。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| multi 多模型评审 当前 | 41 · 缺口较多 | — | ★ 23 | 11 天前 | Shell | Codex · Claude Code · Claude API |
| Plannotator | 78 · 表现良好 | 命令行工具免费版 + 付费版 | ★ 9.5k | 今天 | TypeScript | Codex · Claude Code |
| Claudexor | 76 · 表现良好 | 命令行工具免费 + 模型费 | ★ 515 | 今天 | TypeScript | Codex · Claude Code |
| MCO | 73 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 538 | 12 天前 | Python | Codex · Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README 声称代码审查读取的是快照而非实时工作树,且 loop 模式是唯一会修改工作树的模式,这体现了最小权限意识,但仅停留在文字层面,未见代码或权限清单佐证,故 least_privilege 仅 1。用户确认方面,loop 会编辑代码树却未描述逐次确认或 diff 预览机制,仅 1。数据流透明度相对较好:README 明确列出各后端训练数据判定表、trains 标记文件与 no-train 开关,得 2。敏感数据处理仅提到 providers.env 存放 API key,未说明权限、加密或泄露防护,得 1。依赖安全完全无证据(无锁文件、无依赖审计),得 0。外部副作用方面,除 loop 外声称只读,但无代码验证,得 1。回滚仅提到 loop 最多 3 轮,未描述失败回滚或备份,得 1。来源归属仅 LICENSE 署名作者,无发布者验证,得 1。
自洽性:README 中模型名(如 qwen3.8、GLM-5.3、gemini-3.8)与日期(30.09.2026)明显异常,疑似虚构或未来化,削弱可信度,得 1。依赖可用性:仅声明需要 python3,未固定版本或列出依赖清单,得 1。失败信息:明确说明后端失败会以 FAILED: <why> 呈现而非静默,且无第二模型家族时拒绝运行,得 2。
受众与场景:清晰面向代码审查、check-if-done、提问、规划等场景,得 2。能力边界:描述了 depth/profile 等旋钮,但未系统列出不支持的情形,得 1。触发精度:依赖自然语言触发(如“review this branch, ultra”),无严格语法定义,得 1。环境适配:支持 claude/codex 插件市场及“其他宿主自行安装”,但安装依赖外部 INSTALL.md 未提供,得 1。
信息架构:README 较长但结构松散、口语化,得 1。安装说明:给出 claude 与 codex 的具体命令,得 2。命名稳定性:无版本化命名约定,得 1。示例与 FAQ:配置示例丰富,含 clown 完整示例,得 2。已知限制:仅零散提及耗时更长、成本,未系统列出,得 1。许可证:MIT 完整,得 2。版本与变更日志:完全缺失,得 0。维护责任:仅个人署名,无 issue 流程或维护承诺,得 1。
输出可用性:报告分为 corroborated/single-source/disagreed/dropped 并附理由,结构清晰,得 2。边际价值:多模型交叉验证确有价值,但评测数据自述且模型名可疑,价值主张支撑不足,得 1。成本效益:自述成本相近但耗时翻倍,且评测不可独立验证,得 1。
主张可追溯:引用 evals/RESULTS.md 但该文件未在证据中提供,得 1。跨源印证:仅 README 与 LICENSE 两个文件,无代码或测试佐证,得 1。事实与推断分离:README 区分了“measured”与主观推荐,但模型名与日期异常使事实性存疑,得 1。
- 源码中未见:依赖安全审查安装前固定版本并做一次依赖扫描(如 npm audit、pip-audit);优先放在容器里运行。
- README 中出现的模型名(qwen3.8、GLM-5.3、gemini-3.8 等)与日期(30.09.2026)明显异常,可能为虚构或未来化内容,评测数据不可轻信。
- 评测结果引用 evals/RESULTS.md,但该文件未包含在证据中,无法独立核验其“多找到 29 个 bug”等主张。
- loop 模式会直接修改工作树,README 未描述逐次确认、diff 预览或失败回滚机制,存在误改风险。
- API key 存放于 providers.env,未说明文件权限或泄露防护。
- 无依赖锁定、无版本与变更日志,安装依赖外部 INSTALL.md,供应链与可复现性证据不足。
- 发布者身份未经 FollowAgents 验证,属未知,不应据此推断安全性。
常见问题
完全不花钱能用吗?
:free 模型即可组成 profile;README 的“no money”示例就是这种组合。但训练数据标注会更严格,no_train = true 时可能只剩少数可用模型。评审会修改我的代码吗?
loop 模式,它会修复、重新评审并最多重复三轮。某个后端跑不起来会怎样?
FAILED: <why>,不会被静默忽略。如果一个非 Claude 评审模型都没有配置成功,插件会直接拒绝运行,而不是给出伪多模型结果。怎么知道模型会不会用我的代码训练?
<answer>.trains 追加 yes|no|unknown <model>,报告取最差结果。可用 no_train = true 或单次 --no-train 排除,只有 no 的模型参与;如果账号本身不训练,可在 [backends.<name>] 下设置 trains = false。作者也说明 no 不承诺零保留。