返回指南
比较·2026年9月21日·更新于 2026年10月9日·阅读约 8 分钟

Crush 与 OpenCode:工作流、模型与总成本

归档的 Go OpenCode 变成了 Crush。如今可以安装的 OpenCode 使用不同的代码库——真正的选择是许可证、权限默认值,以及你要为哪一个充值。

最后审核于 。

Crush 和 OpenCode 都是免费的终端编码代理,不向你收取任何费用,并且都允许你指向自己的 OpenAI 或 Anthropic 兼容端点,因此选择并不取决于客户端价格,而取决于许可证、默认权限、配置执行模型,以及每个项目会引导你使用哪个钱包。 Crush 是 Charm 推出的 AI 编码代理——不是同名的 Rust shell——使用 Go 编写,并以 FSL-1.1-MIT 发布。OpenCode 是 opencode.ai 上的 TypeScript 代理,由 Anomaly 维护,采用 MIT 许可证。

在其余内容可以安全阅读之前,必须先厘清两个名称陷阱。“Crush CLI”也是一个无关项目的名称——liljencrantz/crush,其自称是“一个同时也是强大的现代编程语言的命令行 shell”,使用 Rust 编写,与 AI 编码毫无关系。此外,还有两个名为 opencode 的仓库,其中一个是 Crush 的旧名称。下面紧接着就是这一节,因为弄错它会使后续所有比较失去意义。

三个项目,其中两个名为 OpenCode

这个已归档的 Go CLI 不是本次比较中的第三个选项。它是 Crush 的前身,仓库也用自己的话说明了这一点:“此仓库已不再维护,并已归档以保留其来源信息。该项目已沿用 Crush 这一名称继续发展,由原作者和 Charm 团队开发。”

项目当前状态编程语言许可证最新版本
charmbracelet/crush活跃。Charm 的 AI 编码代理。已归档 Go OpenCode 的延续版本GoFSL-1.1-MIT(GitHub 报告为 NOASSERTION)v0.95.0,2026 年 9 月 16 日
anomalyco/opencode活跃。在 opencode.ai 发布的 OpenCode。于 2025 年 4 月 30 日创建的独立代码库TypeScriptMITv1.18.31,2026 年 9 月 14 日
opencode-ai/opencode已归档。Crush 的旧名称。不要从中获取配置、提供商或价格信息GoMITv0.0.55,2025 年 6 月 27 日

仓库元数据于 2026 年 9 月 19 日从 GitHub API 读取;软件包版本根据 npm 确认,其中 @charmland/crush 为 0.95.0,采用 FSL-1.1-MIT,opencode-ai 为 1.18.31,采用 MIT。请注意,npm 软件包名称 opencode-ai 属于 Anomaly 的活跃项目,而 opencode-ai 也是已归档项目的 GitHub 组织;仅检查 npm 无法区分二者,因此应检查 GitHub 组织。本页面无法确认的一点是:GitHub 没有返回旧仓库的归档日期,因此没有为其声称日期。同样,github.com/sst/opencode 现在会重定向到 anomalyco/opencode,且 opencode.ai 的页脚显示“© Anomaly”,但没有找到项目方发布的带日期的更名公告,因此这里只描述交接,不标注日期。

应该选择哪一款

如果这描述的是你选择具体原因
你的组织要求开发者工具采用 OSI 批准的许可证OpenCodeGitHub 和 npm 上均为 MIT。Crush 采用 FSL-1.1-MIT,该许可证限制竞争性使用,并且只有在每个版本发布两周年时才转换为 MIT
你希望代理在进行任何操作前停下来询问CrushCrush 默认会在工具调用前请求许可;OpenCode 文档中的默认设置大多为允许
你希望代理超越终端——桌面应用、IDE 扩展、GitHub 或 GitLabOpenCode其文档涵盖桌面应用、IDE 扩展、Web/分享、GitHub 和 GitLab 集成、ACP、SDK、服务器及插件
你希望配置是团队可以一眼审阅的数据文件OpenCodeopencode.json 是数据。crushrc 是 Bash,而 $(...) 会在加载 crush.json 时展开
你希望配置能够执行 shell 命令——从密码管理器提取密钥、根据主机名进行分支Crush相同的执行模型本身就是功能。Charm 自己的示例使用 $(op read ...) 解析 MCP 令牌
你希望每月支付 $10,使用固定且主要由开放权重模型组成的模型列表OpenCodeOpenCode Go 就是这一产品。Crush 可以读取同一个 OPENCODE_API_KEY,但 Crush 不在 Go 的已验证客户端列表中
你希望在前沿 Claude、GPT 和 Gemini 模型之间共用一个预付余额两者皆可两者都接受第三方端点,不设套餐限制。Charm 自己的提供商不销售这些模型系列中的任何一个

关于迁移成本:模型配置是便宜的一半,配置格式是昂贵的一半。crushrc 与 opencode.json 之间没有转换器,因此项目本地设置需要手动重写。实际可保留的内容比看起来更广——两个客户端都支持 MCP 服务器、LSP 服务器和 Agent Skills,因此可扩展性不是两者之间的差异,差异只在语法。两者也都有非交互模式,因此这不是 TUI 与 TUI 的选择:Crush 的 run 子命令在其源代码中被描述为“运行单个非交互式提示”,而 OpenCode 的文档说明了 opencode run。

权限与配置执行:唯一真正的安全差异

这两个项目的默认方向正好相反,这是在让任一项目接触代码仓库之前最值得了解的差异。

Crush 的 README 声明,默认情况下 Crush 会在运行工具调用前请求许可。你可以使用扁平的允许或拒绝列表——permissions allow view edit、permissions deny bash sourcegraph——扩大限制,或使用 --yolo 完全移除限制;源代码将其描述为“自动接受所有权限(危险模式)”。

OpenCode 从另一端开始。其 权限文档表示,大多数权限默认为 "allow",而 doom_loop 和 external_directory 默认为 "ask"。作为交换,其规则更细致:权限按工具分别针对 read、edit、glob、grep、bash、task、skill、lsp、question、webfetch、websearch、external_directory 和 doom_loop 设置;每个工具都接受 glob 模式,因此 bash 可以允许 git * 并拒绝 rm *;规则按模式匹配进行评估,最后一个匹配规则生效;代理还可以覆盖全局集合。OpenCode 还提供 --auto 标志,用于批准所有未被明确拒绝的内容,因此两个客户端都可以设置为宽松模式,只是它们并非从这种模式开始。

另一半是配置格式。Crush 的 README 对此直言不讳:“crushrc 和 crush.json 都是受信任的代码;crushrc 会在完整 shell 中运行,而 crush.json 中的任何 $(...) 都会在加载时运行。不要在尚未审阅其配置的目录中启动 Crush。” Crush 依次读取 ./.crushrc、./crushrc 和 ~/.config/crush/crushrc,因此你克隆的仓库可能会携带其中一个。这确实是一项能力——密钥就是这样从密码管理器中取出的——也确实存在风险。OpenCode 的 opencode.json 是数据。以上两点均于 2026 年 9 月 18 日核实;较旧的 Crush JSON 格式已在文档中标记为弃用,也不会获得新功能,因此应基于 crushrc 构建,而不是 JSON。

钱流向的是钱包,而不是客户端

每个项目都有官方第一方提供商,而且库存不同。Charm Hyper 完全不销售 Claude、GPT 或 Gemini 模型;OpenCode 同时销售前沿的按量付费目录,以及一个独立的、主要由开放权重模型组成的 $10 月度订阅。

钱包公布价格目录这对选择意味着什么
Charm Hyper 免费版“每个人每月获得 100 个 Hypercredits”,且“目前 1 个 Hypercredit 为 5¢”23 个模型,主要是开放权重系列Crush 的默认入门流程。完全没有 Claude、GPT 或 Gemini
Charm Hyper 订阅“每月 $20”,获得“250 个 Hypercredits,每日刷新”同样的 23 个模型每日刷新频率只出现在价格页面中,文档没有重述,因此不要据此进行算术计算
Charm Hyper 预付$5 = 100、$10 = 200、$20 = 400 个 Hypercredits;“预付 Hypercredits 永不过期”同样的 23 个模型套餐积分是否滚存和过期,两方面均未有文档说明——在依赖它之前,请在账户中确认
OpenCode Zen按预付余额计费,每百万 token 按量付费;银行卡费用按“每笔交易 4.4% + $0.30”转嫁前沿 Claude、GPT、Gemini、Grok,以及开放权重模型其文档声明按成本销售,仅加价用于支付处理费用
OpenCode Go“低成本的 $10/月订阅”主要是开放权重模型,但其自有表格还列出 Grok 4.6 和 GPT 5.6 Luna上限以美元计:5 小时上限为月度限额的 20%,每周为 50%,每月为 100%。每个工作区一名订阅者

Hyper 价格和模型列表于 2026 年 9 月 18 日从其 公开模型端点读取——共 23 个模型,其中没有 Claude、GPT 或 Gemini 模型。大多数模型带有开放权重系列名称——DeepSeek、Kimi、GLM、MiniMax、Qwen、gpt-oss-120b 和 Gemma——其中一个 inkling 使用 Charm 品牌,但没有记录基础模型,因此本页面声称的是“没有前沿专有模型系列”,而不是“全部都是开放权重模型”。套餐价格来自 hyper.charm.land,于同日核实。如果隐私是你的决策因素,还应注意一个值得指出的冲突:Crush 的 README 和 Hyper 的价格页面都描述为零数据保留,而 Hyper 自己的文档称“严格的最长 30 天保留政策”,其 FAQ 则将零保留政策描述为与其云提供商之间达成的政策。请阅读文档中的句子,而不是营销文案,并在账户条款中确认。

这里有一个与通常的锁定叙事相悖的事实:Crush 将 OpenCode Zen 和 OpenCode Go 作为内置提供商随附,并通过 OPENCODE_API_KEY 进行身份验证,因此 OpenCode 钱包可以随你进入 Crush。但 Go 的自有文档要求客户端使用自己的 user agent 标识自身,并在 x-opencode-session 标头中发送稳定的会话 ID;其已验证客户端表列出 Hermes、Claude Code、Codex、ZCode、Pi、jcode 和 Kilo Code CLI——Crush 既不在该列表中,也不在有问题的列表中。不在列表中并不能证明存在故障,而本页面也没有任何支持任一结论的证据,因此不作结论。在依赖它之前请自行测试。Zen 自己的自带密钥选项也比听起来更有限:其文档描述的是在 Zen 内使用你自己的 OpenAI 或 Anthropic 密钥,而不是为任意网关提供插槽。

在两个客户端中使用自有端点

这是两个项目真正开放的部分,也是 Crush 用户可以获得、而 Hyper 完全无法销售给他们的东西。两个客户端都不会将自定义提供商限制在某个套餐之后。

对 Crush 用户最有用的单条细节是:Crush 的基础 URL 包含 /v1,无论是 OpenAI 兼容类型还是 Anthropic 兼容类型。其 README 自己的自定义提供商示例写作 https://api.deepseek.com/v1 和 https://api.anthropic.com/v1。这与 Claude Code 的约定相反,后者的 ANTHROPIC_BASE_URL 接受不带路径的 origin,因为客户端会自行追加路径——有关同一网关为何有两种写法,请参阅基础 URL 参考。对于 Kunavo 密钥,Crush 的值是 https://api.kunavo.com/v1。

~/.config/crush/crushrc
# crushrc is Bash. Treat it as executable code, not as settings.
provider add kunavo --type openai-compat \
  --base-url "https://api.kunavo.com/v1" \
  --api-key "$KUNAVO_API_KEY"

model add kunavo/claude-sonnet-5 \
  --name "Claude Sonnet 5" \
  --context-window 1000000 \
  --default-max-tokens 32000 \
  --price-input 1.4 \
  --price-output 7

关于该代码块有三点说明。使用 openai-compat,不要使用 openai:README 将 openai 保留用于通过 OpenAI 自身进行代理或路由。--price-* 标志只会影响 Crush 屏幕上的成本估算——不会改变实际账单,因此其中的拼写错误会产生错误的读数,而不是错误的收费。由于 crushrc 是 Bash,--api-key "$(op read ...)" 是一种有文档说明的方法,可以将密钥完全排除在文件之外。OpenCode 的等价方式是数据文件,并通过 {env:VAR} 引用密钥:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "kunavo": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Kunavo",
      "options": {
        "baseURL": "https://api.kunavo.com/v1",
        "apiKey": "{env:KUNAVO_API_KEY}"
      },
      "models": {
        "claude-sonnet-5": {
          "name": "Claude Sonnet 5",
          "limit": { "context": 1000000, "output": 128000 }
        }
      }
    }
  }
}

npm 字段决定传输格式:对于提供 /v1/chat/completions 的端点使用 @ai-sdk/openai-compatible,对于 /v1/responses 使用 @ai-sdk/openai。OpenCode 还可以覆盖内置提供商的 baseURL,而无需声明自定义提供商,因此有两条路径而不是一条;通过 /connect 添加的密钥会写入 ~/.local/share/opencode/auth.json(提供商文档,2026 年 9 月 18 日核实)。Kunavo 为两个客户端分别发布了设置页面:OpenCode 和 Crush。两个客户端都未针对 Kunavo 进行运行时测试,因此请将这两个代码块视为配置参考,并通过一次范围受限的任务进行验证。

一次会话的实际成本

下面的数字是示例性的 token 计算,不是实测任务成本,也不是账单上限。假设一次代理会话发送 200,000 个未缓存输入 token,并接收 15,000 个输出 token——这是用于比较的假设,不是对你的代码仓库进行的测量。费率是实时的 Kunavo 目录每百万 token 价格,同时列出 OpenCode Zen 于 2026 年 9 月 18 日为其同样提供的模型名称发布的费率。Zen 的目录并不是 Kunavo 目录的镜像,因此下面有一行在 Zen 中没有对应项。

模型Kunavo 每 1M 输入 / 输出OpenCode Zen 每 1M token 的输入/输出Kunavo 对本次会话的估算
Claude Haiku 4.5$0.70 / $3.50$1.00 / $5.00$0.192
GPT-5.6 Terra$0.70 / $4.20该名称下没有 Zen 行$0.203
Claude Sonnet 5$1.40 / $7.00$2.00 / $10.00$0.385
Claude Opus 5$3.50 / $17.50$5.00 / $25.00$0.963

请如实阅读中间两列。对于 Claude Sonnet 5,两个目录在 $1.40 和 $7.00 上完全相同,因此不能声称存在节省;差距在其他行。Zen 的 Claude Haiku 4.5 行为 $1.00 和 $5.00,而 Kunavo 为 $0.70 和 $3.50;Zen 的 Claude Opus 5 行为 $5.00 和 $25.00,而 Kunavo 为 $3.50 和 $17.50。在据此作出判断之前,还有三点需要注意。Zen 完全没有名为 GPT-5.6 Terra 的模型——2026 年 9 月 18 日,其 GPT 行为 GPT 6 Astra 和 GPT 5.6 Sol,二者都不是同一模型——因此该行是有意留空,而不是填入一个相近模型。此外,这些是某一天发布的目录费率,不是基准测试,也不是任何路线都能以最低成本完成任务的承诺:一个需要第二次尝试的模型会迅速抵消费率优势。四行也并不代表任一方的完整模型货架。

本页面存在的核心原因就在这里。显示成本与计费成本,在两个客户端中都是不同的数字。 Crush 的默认模型列表和成本估算来自 Catwalk,这是一个自动更新的外部目录;对于手动注册的自定义提供商,数字就只是你填入 model add 的内容。OpenCode 自己的产品无需任何第三方参与,也说明了同一点:DeepSeek V4 Flash 在 Zen 上为$0.14 输入 / $0.28 输出,在 Go 非高峰时段为 $0.15 / $0.60,在 Go 高峰时段为 $0.30 / $1.20(供应商文档,2026 年 9 月 18 日)。Catwalk 对该模型的记录与非高峰价格对一致,因此 Crush 对它的成本读数会悄悄低估高峰时段的使用量。请以提供商账户实际记录的账本为准进行核对,绝不要以终端中的数字为准。

Kunavo 的目录金额是计费下限,而不是上限:当上游报告其费用时,账单取目录成本与上游成本乘以适用加价两者中的较高者。缓存费用和外部工具不包含在此示例中。最低充值金额为$10预付余额——这是资金最低额度,不是任务费用或订阅费用。参见billing details。

设置其中一个

如果你选择 OpenCode,请从OpenCode 集成指南开始,并创建 Kunavo 账户为密钥充值。如果你选择 Crush,上面的 crushrc 代码块就是完整配置;保留一条可用路线,运行一次范围受限的任务,并在切换日常主力工具前读取账户记录的实际收费。想比较更广的范围?OpenCode 与 Claude Code 对比和OpenCode 替代方案可以扩展比较范围,而OpenAI 兼容 API 参考介绍了两个客户端所依赖的端点约定。

常见问题

Crush 和 OpenCode 是同一个项目吗?

不是当前仍在使用的同一个项目,但这种混淆确实有其原因。曾经有两个名为 opencode 的项目。github.com/opencode-ai/opencode 上的 Go CLI 已归档,其 README 自己也说明该项目后来以 Crush 的名义继续开发,由原作者和 Charm 团队共同完成。因此,那个 OpenCode 是 Crush 的旧名称,而不是竞争产品。如今可以安装的 OpenCode 是另一个 TypeScript 代码库,位于 github.com/anomalyco/opencode——创建于 2025 年 4 月 30 日,采用 MIT 许可证,并发布在 opencode.ai。比较 Crush 和 OpenCode,实际上是在比较 Charm 的 Go 代理与 Anomaly 的 TypeScript 代理,而不是比较同一代码库的两个分支。

Crush 是开源的吗?

它不采用 OSI 批准的许可证;如果你的公司有许可证政策,这一点很重要。Crush 的 LICENSE.md 是 Functional Source License, Version 1.1, MIT Future License,简称 FSL-1.1-MIT,版权归 2025-2026 Charmbracelet, Inc. 所有。GitHub 自己的许可证 API 将其报告为 NOASSERTION,而不是已识别的 SPDX 标识符。该许可证允许被许可方内部使用、非商业教育和研究,以及专业服务,但排除了它称为 Competing Use 的用途;同时,它授予一项不可撤销的 MIT 许可证,自每个版本发布两周年起生效。相比之下,OpenCode 在 GitHub 和 npm 上都是纯 MIT 许可证。

Crush 和 OpenCode 哪个更便宜?

都不是,因为两个客户端都不收费。Crush 是免费下载,OpenCode 也是免费下载;你支付的是在所配置提供商处产生的模型令牌费用。成本差异来自它们各自引导你使用的钱包,而且两者都接受第三方 OpenAI 兼容端点,不设套餐限制。还要注意,列出的最低费率与完成任务的最低成本并不是一回事:需要尝试三次的模型,成本可能高于只需一次尝试但价格更高的模型。

我可以在 Crush 中使用自己的 API 密钥或网关吗?

可以,而且这是有文档说明的一级路径,不设套餐限制。Crush 的 README 记录了类型为 openai、openai-compat、anthropic 以及若干本地类型的自定义提供商。对于第三方 OpenAI 兼容网关,正确的类型是 openai-compat;Crush 的 README 警告,openai 用于通过 OpenAI 本身进行代理或路由,而 openai-compat 用于具有 OpenAI 兼容 API 的非 OpenAI 提供商。使用 provider add 注册提供商,然后使用 model add 注册每个模型,并填写 Crush 用于屏幕成本估算的每百万令牌价格。当 openai-compat 提供商的模型列表为空,或传入 --discover-models true 时,会运行自动发现。

Charm Hyper 会提供 Claude、GPT 或 Gemini 模型吗?

不会。Hyper 在 hyper.charm.land/v1/models 上的公共模型端点于 2026 年 9 月 18 日返回了 23 个模型,其中没有 Claude、GPT-5 或 GPT-6 系列,也没有 Gemini。大多数 ID 属于开放权重模型系列——DeepSeek、Kimi、GLM、MiniMax、Qwen、gpt-oss-120b 和 Gemma 变体;其中一个 inkling 是 Charm 品牌的 ID,而 Hyper 文档没有说明其底层权重,因此本页面不会将整个目录描述为开放权重模型。Hyper 是 Crush 的官方提供商——Crush 的 README 称,从模型选择器中选择 Hyper 模型是最快的入门方式,并在环境变量表中列出 HYPER_API_KEY;但想使用前沿 Claude、GPT 或 Gemini 模型的 Crush 用户必须配置其他提供商。Crush 本身不会阻止这样做。

OpenCode Zen 和 OpenCode Go 有什么区别?

它们是同一供应商提供的两个独立付费产品,使用两个不同的端点,而且同一个模型在两者中的价格可能不同。Zen 是面向前沿模型目录的预付费按需信用额度,按每百万令牌计费;其文档称按成本价销售,仅加收用于支付处理费用的费用,并将银行卡费用按每笔交易 4.4% 加 $0.30 转嫁给用户。Go 是每月 $10 的订阅服务,使用一个独立的、主要由开放权重模型组成的名单——其自身表格还列出了 Grok 4.6 和 GPT 5.6 Luna——并设有美元计价的用量上限:5 小时上限为月度上限的 20%,每周上限为 50%,月度上限为 100%;每个工作区只能有一名成员订阅。DeepSeek V4 Flash 展示了这种差异:Zen 上输入 $0.14、输出 $0.28;Go 上非高峰时段输入 $0.15、输出 $0.60,高峰时段输入 $0.30、输出 $1.20;所有数据均于 2026 年 9 月 18 日从供应商文档中读取。

将项目从一个迁移到另一个有多难?

高成本部分不在模型配置,而在权限策略和配置格式。Crush 读取 crushrc(其中是带有 Crush 内置命令的 Bash),顺序为 ./.crushrc、./crushrc,然后是 ~/.config/crush/crushrc;较旧的 crush.json 仍受支持,但文档已将其标记为弃用,并且不会再为其添加新功能。OpenCode 读取 opencode.json 数据文件。两者之间没有转换器,因此项目本地配置必须手动重写。两个客户端都支持 MCP 服务器、LSP 服务器和 Agent Skills,因此尽管声明方式不同,这些能力在迁移后仍可保留。

仓库元数据、发布版本和 npm 版本于 2026 年 9 月 19 日根据 GitHub API 和 npm 注册表核实;许可证、README、Crush 源文件,以及 Charm Hyper、OpenCode Zen、OpenCode Go、权限和提供商文档于 2026 年 9 月 18—19 日核实。Kunavo token 费率来自实时目录。本页面未对任一客户端进行兼容性、性能或基准测试,也不作此类声称;这里的每个美元示例都是示例性 token 计算,而不是实测任务成本。