mini-SWE-agent 和 Claude Code 不是同一产品的两个版本:mini 是一个免费的 MIT 许可 Python agent,只有一个工具——bash——并通过 LiteLLM 访问任意模型;Claude Code 则是 Anthropic 的专有 agent,只支持 Anthropic 形状的协议。 这一点差异决定了大多数迁移,因为它是协议边界,而不是偏好。想要足够小、便于阅读的执行框架以及自由选择提供商时,选择 mini;想要编辑器、桌面端和 CI 界面、权限模式及订阅路径,并且会继续使用 Claude 模型时,选择 Claude Code。
mini-SWE-agent 由 SWE-agent GitHub 组织维护,并将自身描述为“由 Princeton & Stanford 团队构建,该团队也是 SWE-bench、SWE-agent 等项目的幕后团队”。首先需要更正一点,因为关于它被引用最多的事实已经过时。其 v2 迁移指南说明“v2.0 默认使用原生工具调用(而不是基于正则表达式的文本解析)”,而项目自己的 FAQ 仍表示“它甚至不使用 LMs 的工具调用接口”,并称“操作会从三个反引号代码块中解析”。这两个页面均于 2026 年 9 月 19 日阅读。迁移指南和随附配置应优先采信:mini.yaml 告诉模型,“每个响应都必须至少使用一次‘bash’工具来执行命令。”任何基于不调用工具的说法,或基于已移除的 MSWEA_MODEL_API_KEY 变量的教程,都早于 v2。
应该选哪一个
如果你的工作具有批处理或提供商导向的特点,请选择 mini-SWE-agent:例如对许多问题运行相同提示、比较模型,或在沙箱中工作,在这种场景下,一个小到可以审计的 agent 比无法检查的功能集更有价值。其执行模型是决定性特征:mini 的 FAQ 说明操作通过 subprocess.run 执行,“每个操作都完全独立(而不是保持一个有状态的 shell 会话运行)”,因此“agent 无法切换目录或导出环境变量;不过可以为每个操作设置环境变量”。随附的 mini.yaml 也向模型说明了同一点——“目录或环境变量更改不会持久化。每个操作都会在新的子 shell 中执行”——并要求使用带前缀的命令。这使运行可复现,也能轻松容器化,但会让长时间的有状态 shell 工作变得不便。迁移成本只需一个下午:pip install mini-swe-agent、一个 YAML 文件和一个密钥。
如果价值在于界面和防护机制,请选择 Claude Code。Anthropic 将其描述为可在“终端、IDE、桌面应用和浏览器中”使用,并指出“Terminal CLI、VS Code 和 JetBrains 也支持第三方提供商”——因此网关路由只存在于其中一部分界面。它提供权限模式、子 agent、MCP 服务器、钩子和计划模式;使用 Pro 或 Max 订阅时,消耗的是套餐额度,而不是按 token 计费。代价是特定类型的锁定:你不能让它脱离 Claude 模型,且 Anthropic 的网关文档说明它“不支持通过任何网关将 Claude Code 路由到非 Claude 模型”。
从 Claude Code 切换到 mini意味着放弃权限系统,换取 mini 的三种模式;完全放弃 IDE 和桌面端界面;并自行负责支出核算——mini 的每次运行预算只有在 LiteLLM 能为你的模型 ID 定价时才有效。从 mini 切换到 Claude Code意味着放弃自由选择模型,并从一个可以阅读的执行框架转向打包的二进制文件:claude-code 仓库是一个分发点,其许可证文件只有一行声明——“© Anthropic PBC. All rights reserved”——且使用受 Anthropic《商业服务条款》约束。
两个 agent 并列比较
| 属性 | mini-SWE-agent | Claude Code |
|---|---|---|
| 许可证 | MIT,© Kilian A. Lieret 和 Carlos E. Jimenez | 专有——“保留所有权利”,受 Anthropic《商业条款》约束 |
| 当前版本 | 2.4.6,于 2026 年 7 月 23 日上传(PyPI) | 最新标签为 2.1.277,读取 npm dist-tags 时 stable 为 2.1.267;latest 标签大多数日子都会变动 |
| 运行时 | Python 3.10 或更高版本 | npm 包需要 Node 22 或更高版本 |
| 使用界面 | 终端 mini REPL,以及配套命令 mini-extra | 终端、IDE 扩展、桌面应用和浏览器 |
| 模型可用的工具 | bash,仅此而已 | 文件编辑、搜索、命令执行、子 agent、MCP 服务器、钩子 |
| 执行模型 | 每个操作执行一次独立的 subprocess.run;shell 状态不会延续 | 带权限模式的有状态会话 |
| 审批流程 | 从 confirm 开始;运行中切换到 yolo(/y)或 human(/u);-y 启动时不需要确认 | 权限模式,包括实现前的计划模式 |
| 模型访问 | LiteLLM 能访问的任何提供商,包括 OpenAI 兼容网关 | 仅支持通过 Anthropic Messages、Bedrock 或 Agent Platform 格式访问 Claude 模型 |
| 每次运行的支出上限 | 随附配置中的 cost_limit: 3.;-l/--cost-limit,0 表示禁用 | --max-budget-usd,仅打印模式 |
| 轮次上限 | step_limit: 0——默认不设上限 | --max-turns,仅打印模式 |
于 2026 年 9 月 19 日阅读的来源:mini 的 PyPI 元数据、Claude Code 的 npm 注册表文档、mini 的 CLI 页面、mini 随附的 mini.yaml,以及 Anthropic 的 CLI 参考和概览。
为什么“mini 击败 Claude Code”并不是结论
mini 的主页上有一条新闻写着“mini-swe-agent 在 DeepSWE 上击败 Claude Code 和 Codex”,值得看看 DeepSWE 实际测量了什么。其说明写道:“每次运行都使用 mini-swe-agent,即 SWE-bench 作者构建的执行框架。我们在每个模型上保持它不变,因此排行榜反映的是模型能力,而不是周围的脚手架。”因此,该排行榜是 mini 内部模型的排名,而不是 mini 与其他 agent 之间的排名。
该工作中唯一的执行框架对执行框架比较,是针对“相同的 10 个 SWE-Bench Pro 任务”进行的试点;在相近 token 成本下,标准化执行框架与原生执行框架持平或更优——作者还立即提醒:“其中一部分差距很可能来自提示调优,而不是能力。”在少数模型上测试 10 个任务,不足以对两个 agent 进行排名;研究本页面时也没有找到其他规模可用且可信的正面对比。因此,本指南不为它们评分,而是比较可核查的内容:协议、权限、支出控制和迁移成本。
关键问题:它们各自能访问哪些端点
这是两者差异最大的地方,也是决定网关是否可用的部分。
Claude Code 受协议锁定。 Anthropic 的网关兼容性指南列出了三种格式:由 ANTHROPIC_BASE_URL 选择并调用 /v1/messages 以及可选的 /v1/messages/count_tokens 的 Anthropic Messages;Amazon Bedrock InvokeModel;以及 Google Cloud 的 Agent Platform rawPredict。没有 chat-completions 模式。基础 URL 是 origin,因为 Claude Code 会追加路由——Kunavo 自己的 ANTHROPIC_BASE_URL 页面也遵循同一规则。
# Claude Code speaks the Anthropic Messages format and appends the route
# itself, so the variable is the ORIGIN — not the /v1 URL mini wants.
export ANTHROPIC_BASE_URL=https://api.kunavo.com # origin, no /v1
export ANTHROPIC_AUTH_TOKEN=sk-kn-... # sent as Authorization: Bearer
# Pin models Kunavo serves. Claude Code's default and its opus alias are the
# newest Opus — pinned here to Opus 5.5, which needs Claude Code v2.1.280 or
# later (run `claude update`). The sonnet alias asks for Sonnet 5.5, which
# Kunavo does not serve: unpinned, /model sonnet, opusplan's execution phase
# and sonnet subagents 404.
export ANTHROPIC_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5-5
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5
claude有三个后果值得纳入预算。凭据变量决定请求头:Anthropic 的连接页面说明,“ANTHROPIC_AUTH_TOKEN 位于 Authorization: Bearer 中,ANTHROPIC_API_KEY 位于 x-api-key 中,而 apiKeyHelper 位于二者中”,并且错误变量中的凭据“会以网关不读取的请求头到达网关,导致请求以 401 失败”。提示缓存没有 beta 配对,会静默失败:Anthropic 的指南称,网关丢弃 cache_control 后会产生“没有错误:每一轮对话都会按未缓存输入计费”。除非设置 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1,否则模型发现处于关闭状态;设置后,Claude Code 只保留包含“claude”或“anthropic”的 ID。
mini 不受协议限制,但配置较为繁琐。 它完全没有基础 URL 环境变量;其本地模型页面说明,model_kwargs 会直接作为 litellm.completion(model=model_name, messages=messages, **model_kwargs) 传入。这里要保留 /v1 后缀——这与上文 Claude Code 的规则相反。同一页面的示例在未加前缀的模型名称上设置了 custom_llm_provider: "openai",因此下面的 openai/ 前缀属于稳妥做法而非要求;页面明确要求的是,如果使用其中任一项,“它还必须与配置中的 litellm_provider 匹配”。
# mini has no base-URL environment variable. The endpoint goes in a config
# file, because model_kwargs is splatted straight into litellm.completion().
model:
model_name: "openai/claude-sonnet-5" # prefix and provider must agree
model_kwargs:
custom_llm_provider: "openai"
api_base: "https://api.kunavo.com/v1" # keep /v1 here
drop_params: true # the shipped mini.yaml sets this too
# set_cache_control is already "default_end" for a name containing "claude"将密钥作为 OPENAI_API_KEY 提供,可以通过环境变量提供,也可以通过 mini-extra config set 提供;后者会写入 mini 的 .env。mini 的全局配置页面指出,“环境变量优先于 .env 文件中设置的变量。”使用 mini -c kunavo.yaml 选择文件,或使用 MSWEA_MINI_CONFIG_PATH 将其设为默认文件。
有一种不易察觉的失败模式值得单独修复。mini 的每次运行预算依赖 LiteLLM 的费用跟踪,而费用跟踪需要识别模型 ID——本页面未检查 Kunavo 的 ID 是否已在 LiteLLM 注册表中定价。请假定它们没有,并自行提供费率,而不是使用 MSWEA_COST_TRACKING="ignore_errors";后者会移除保护,而不是修复问题。将 LITELLM_MODEL_REGISTRY_PATH 指向 LiteLLM 模型价格格式的文件。mini 的工作示例以不含提供商前缀的模型名称作为条目键,并通过 litellm_provider 声明提供商;这里复制的就是这种格式:
{
"claude-sonnet-5": {
"input_cost_per_token": 0.0000014000,
"output_cost_per_token": 0.0000070000,
"litellm_provider": "openai",
"mode": "chat"
}
}有两个需要如实说明的空白点。Kunavo 尚未针对其端点对任一客户端进行运行时测试,而发布配置参考并不等于兼容性测试。具体尚未验证的是:LiteLLM 的 openai/ 路径是否会针对 Kunavo 的 chat-completions 端点协商原生工具调用——这是 mini v2 的默认行为。如果不行,mini 仍会通过 model_class: litellm_textbased 提供旧版文本解析路径,并随默认配置附带 mini_textbased.yaml 配置。尝试任一客户端时,请保留一条可用路由,并查看账户对受限任务实际记录的内容。
运行它们各自需要多少费用
软件价格无法比较,因为只有其中一个有价格。
| 项目 | 公布价格 | 来源,检查于 2026 年 9 月 19 日 |
|---|---|---|
| mini-SWE-agent,软件本身 | 0 美元,MIT | PyPI 包元数据;其网站或页面未提供套餐或托管层级 |
| Claude Free | $0——不包含 Claude Code | claude.com/pricing |
| Claude Pro | 按年计费时每月 $17(预付 $200),按月计费为 $20——包含 Claude Code | claude.com/pricing |
| Claude Max | 价格卡显示“每月 $100 起”;支持文章给出的 Max 5x 为 $100/月,Max 20x 为 $200/月 | Max 套餐支持文章——仅支持按月计费 |
| 任一 agent 按用量计费的 token | 你的提供商按 token 收取的费率 | 你自己的账户 |
价格卡和支持文章对 Max 层级的描述不同——前者将其合并为一个“起始价”,后者则分别列出两个层级。制定预算前,请在结账时确认层级和总额。这里有意省略 Team 和 Enterprise 席位价格:它们是组织的席位决策,而不是本页面所讨论的单个开发者选择。
对于按用量计费的使用,Anthropic 发布的是一个范围,而不是每项任务的数字:“在企业部署中,平均成本约为每位开发者每个活跃日 $13、每位开发者每月 $150-250,并且 90% 的用户每个活跃日的成本低于 $30”(成本管理文档)。这是 Anthropic 自有部署的汇总数据,不是对任一 agent 进行相互比较的测量;mini 没有对应数据。
一个令牌估算示例
这是用于说明的 token 计算,不是经过测量的任务成本,也不是账单上限。两个 agent 都会在每一轮重新发送对话——Anthropic 自己的文档说明,“Claude Code 会在每次请求中发送完整对话,而每次 Claude 使用工具时,它还会发送一个携带该批工具结果的新请求”——因此输入占主导。假设一个受限任务在各轮中总计包含 600k 个未缓存输入 token,以及 25k 个输出 token。费率是实时的、按每百万 token 计价的 Kunavo 目录价格。
| 模型 | 每 1M 个令牌的输入 / 输出 | 假设任务的估算成本 | 可访问自 |
|---|---|---|---|
| Claude Haiku 4.5 | $0.70 / $3.50 | $0.51 | 两个客户端 |
| Claude Sonnet 5 | $1.40 / $7.00 | $1.01 | 两个客户端 |
| Claude Opus 5 | $3.50 / $17.50 | $2.54 | 两个客户端 |
| GPT-5.6 Terra | $0.70 / $4.20 | $0.53 | 仅 mini——Claude Code 没有 chat-completions 模式 |
请将其视为比率,而不是预测。在这些假设下,Claude Haiku 4.5 与 Claude Opus 5 之间的差距约为 5.0×,这比客户端选择更具影响力。还要注意,列出的最低费率与完成任务的最低成本是不同的说法:需要三次尝试的更便宜模型,成本可能高于一次成功的模型;而 mini 的独立子进程循环会在步骤失败时重新发送更多上下文。缓存会再次改变结果,而且方向并不像大多数文章假设的那样。Claude Code 会自行附加 cache_control 标记。mini 也会自行设置 set_cache_control: "default_end",但只针对部分模型名称:其模型选择代码会在解析后的模型名称包含 anthropic、claude、sonnet 或 opus,且配置尚未设置该键时应用默认值。因此,Claude 名称的 ID——包括上文带前缀的 openai/claude-sonnet-5——无需请求即可获得标记;Gemini 名称的 ID 则不会。chat-completions 端点是否会处理这些标记,本页面未进行测试。参见提示缓存。
Kunavo 目录中的金额是计费下限而不是上限:上游报告费用后,账单取目录成本与上游成本乘以适用加价二者中的较高者。缓存费用和外部工具不包含在此示例中。最低充值额是预付额度中的 $10——这是资金最低要求,而不是任务费用或订阅费用。参见计费详情;另请注意,Claude Code 自己的 /usage 数值“根据 token 数量和标价在本地计算”,并明确是“估算值”,因此应与提供商的账本核对,而不是依赖客户端读数。
还需要澄清一点:SWE-agent 不等于 mini-SWE-agent
这个较早的兄弟项目仍会出现在这些查询的排名中,也共享一个组织、README 系列和基准测试渊源——但它的配置语法、文档都不同,也不属于 mini 教程。其维护者已经转向其他方向:SWE-agent README说明,“我们当前的大部分开发工作都集中在 mini-swe-agent 上,后者已经取代了 SWE-agent”,并建议今后使用 mini(阅读于 2026 年 9 月 19 日)。它并未归档,项目也采用 MIT 许可证,因此应将其视为“仍在维护但已被取代”,而不是已停止的项目——新工作应从 mini 开始。
设置其中任一个
Kunavo 为 Claude Code 发布了配置参考,但没有为 mini-SWE-agent 发布;这里没有对任一客户端进行运行时测试,而发布设置页面并不等于兼容性测试。如果 Claude Code 是你的客户端,请从 Claude Code 集成指南开始,并在准备为密钥充值时创建 Kunavo 账户。如果你要先在订阅和按量计费 token 之间做选择,Claude Code 价格和无订阅使用 Claude Code会介绍这一决策,适用于 Claude Code 的最佳 API则比较不同路由。对于 mini,模式就是 OpenAI 兼容 API中介绍的通用模式。要比较其他终端 agent?OpenCode 与 Claude Code 对比和Aider 价格还介绍了另外两个客户端,它们同样将免费执行框架与按量计费的模型账单分开。
常见问题
mini-SWE-agent 比 Claude Code 更好吗?
没有已发布的证据能够确定这一点,而且人们引用的标题也没有这样说。mini 的网站在“mini-swe-agent beats Claude Code and Codex on DeepSWE”这句话下方链接了 DeepSWE 结果,但 DeepSWE 声明:“每次运行都使用 mini-swe-agent,即 SWE-bench 作者构建的 harness。我们在每个模型上保持它不变,因此排行榜反映的是模型能力,而不是周围的脚手架。”该工作中唯一的 harness 对比,是在相同的 10 个 SWE-Bench Pro 任务上进行的一次试点,其作者写道,其中一部分差距“很可能来自提示词调优,而不是能力”。十个任务无法对两个 agent 排名。应改为根据工作流、协议和成本路径作出决定。
mini-SWE-agent 可以通过 Kunavo 这样的网关使用 Claude 模型吗?
可以,但需要通过配置,而不是环境变量:mini 没有基础 URL 变量,其文档称 model_kwargs“会直接传递给 litellm.completion”。在 YAML 文件的 model.model_kwargs 下加入 custom_llm_provider: "openai" 和 api_base: "https://api.kunavo.com/v1",保留 /v1 后缀,提供 OPENAI_API_KEY,并使用 mini -c 选择该文件。模型名称可以选择性地添加 provider 前缀——mini 自己的示例在未加前缀的名称上设置了 custom_llm_provider——但无论采用哪种方式,都必须与 litellm_provider 匹配。在依赖它之前,需要了解两点:mini 的默认配置使用原生工具调用,这条路径尚未针对 Kunavo 进行运行时测试;并且 litellm 必须识别该模型 ID,才能让成本跟踪机制正常工作,该机制正是 mini 默认每次运行 $3 预算的基础。
Claude Code 能否与 OpenAI 兼容端点通信?
不能。Anthropic 的网关兼容性指南列出了网关可向 Claude Code 提供的三种 API 格式:通过 ANTHROPIC_BASE_URL 使用 Anthropic Messages(调用 /v1/messages,并可选调用 /v1/messages/count_tokens);通过 ANTHROPIC_BEDROCK_BASE_URL 使用 Amazon Bedrock InvokeModel,并设置 CLAUDE_CODE_USE_BEDROCK=1;以及通过 ANTHROPIC_VERTEX_BASE_URL 使用 Google Cloud 的 Agent Platform rawPredict,并设置 CLAUDE_CODE_USE_VERTEX=1。该页面还为 Microsoft Foundry 和 AWS 上的 Claude Platform 列出了各自的变量,但指南说明二者都实现了相同的 Anthropic Messages 格式。列表中没有 /v1/chat/completions 模式,因此 Claude Code 无法访问 OpenAI 形状的端点。Anthropic 的“Other LLM gateways”页面还明确表示,它“不支持通过任何网关将 Claude Code 路由到非 Claude 模型”。
mini-SWE-agent 的费用是多少?
软件本身免费。mini-swe-agent 采用 MIT 许可证,版权归 Kilian A. Lieret 和 Carlos E. Jimenez 所有;其文档和 PyPI 页面都没有提供可购买的托管层级、套餐、席位或账户——PyPI 上的当前版本是 2.4.6,于 2026 年 7 月 23 日上传,要求 Python 3.10 或更高版本。你支付的是所指定提供商收取的模型费用。默认配置中唯一随附的支出保护是每次运行的 cost_limit: 3.,以及 MSWEA_GLOBAL_COST_LIMIT 和 MSWEA_GLOBAL_CALL_LIMIT;二者默认值均为 0,表示不设限制。请将这些视为配置的上限,而不是实际观测到的费用。
mini-SWE-agent 现在仍然避免调用工具并解析三个反引号代码块吗?
默认不会,而这是大多数第三方文章弄错的事实。v2 迁移指南说明,“v2.0 默认使用原生工具调用(而不是基于正则表达式的文本解析)”,随附的 mini.yaml 也采用工具调用形式——其错误模板告诉模型,“每个响应都必须至少使用一次‘bash’工具来执行命令。”项目自己的 FAQ 仍保留较早的说法:“它甚至不使用 LMs 的工具调用接口”,因此两个页面存在矛盾;迁移指南和随附配置代表当前行为。文本解析仍可通过 litellm_textbased 模型类以及与 mini.yaml 一同发布的 mini_textbased.yaml 配置选择启用。
当 Claude Code 指向第三方端点时,会失去什么?
Anthropic 在其“Other LLM gateways”页面和网关兼容性指南中记录了多项限制。当网关凭据变量或 apiKeyHelper 处于启用状态时,“开发者的 claude.ai 订阅不会被使用:该凭据会替代本次会话的订阅登录”,流量费用则按 token 向该凭据的所有者收取。除非设置 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1,否则不会进行网关模型发现;启用后只保留包含“claude”或“anthropic”的 ID。通过自定义基础 URL 时,细粒度工具流式传输默认关闭。仅设置 ANTHROPIC_BASE_URL 而不设置凭据变量,不会替代订阅——已保存的登录仍处于活动状态,其限制仍然适用。
于 2026 年 9 月 19 日直接获取并检查每个来源:mini-SWE-agent 的 PyPI 元数据、主页、v2 迁移指南、FAQ、CLI、全局配置和本地模型页面,主分支上的随附 mini.yaml、run/mini.py 和 models/__init__.py;Claude Code 的 npm 注册表文档、仓库许可证文件,以及其概览、网关、网关协议、网关连接、成本和 CLI 参考文档;claude.com/pricing 和 Max 套餐支持文章;SWE-agent README;以及 DeepSWE 说明。未对任一客户端针对 Kunavo 执行运行时测试,也未复现本页面中的任何基准测试结果。Kunavo token 费率来自实时目录,本页面的所有美元示例均为说明性的 token 计算。