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

VT Code 与 OpenCode:工作流、模型和总成本

OpenCode 允许通过提交到仓库的 opencode.json 将整个团队指向一个网关。VT Code 会拒绝同一配置块从仓库传入——这种不对称性,而不是功能列表,才是你真正做出的选择。

最后审核于 。

VT Code 和 OpenCode 都是免费的终端编码代理:客户端不收费,并且都接受你自己的 OpenAI 兼容端点,因此这不是价格比较。真正的差异在于:各自允许你在哪里声明该端点、权限默认值分别倾向于哪一方,以及你是否希望在同一个工具中加入每月 $10 的订阅。 VT Code 是一个来自独立项目的单一 Rust 二进制程序,由一名维护者主导。OpenCode 是 Anomaly 公司推出的 TypeScript 代理,提供桌面应用、编辑器扩展,以及自带的两个第一方钱包。

首先必须澄清两个名称陷阱,因为任何一个弄错,都会使后面的所有内容失效。“VT Code”不是 Visual Studio Code,而且 VT Code 令人困惑地还提供了自己的 VS Code 配套扩展,使用单独的版本系列。而且,有三种不同的东西都叫 OpenCode——本比较中只涉及其中一种。

你实际比较的是什么

项目当前状态语言和许可证2026 年 9 月 21 日的版本
vinhnx/VTCode活跃。由一名维护者主导的 Rust 终端编码代理,README 中列出了外部贡献者。正文写作“VT Code”,vtcode 是二进制程序和 crate 的名称Rust。README 中为“MIT OR Apache-2.0”;GitHub 检测为 Apache-2.0CLI 0.165.0,于当天发布;crates.io 中的版本一致
anomalyco/opencode活跃。发布在 opencode.ai 的 OpenCode。github.com/sst/opencode 目前在此处返回 301,网站页脚显示“© 2026 Anomaly”TypeScript。MIT同时存在两个版本系列:发布版本 v1.18.31(9 月 14 日),以及 npm 包 @opencode/cli 的 2.0.12
opencode-ai/opencode已归档。后来延续为 Charm 的 Crush 的 Go CLI。不是本页面介绍的 OpenCode——不要从它获取配置或价格Go。MIT最后一次推送:2025 年 9 月 18 日

仓库元数据、发布版本和 dist-tag 于 2026 年 9 月 21 日从 GitHub API、npm 和 crates.io 读取。第四个名称冲突是:“OpenCode Go”也是 Anomaly 每月 $10 的订阅方案名称,与 Go 语言或已归档的 Go CLI 毫无关系;而 VT Code 将其内置提供商键之一命名为 opencode-go,使情况更加混乱。还要注意 VT Code 的版本变化有多快:0.164.0、0.164.2 和 0.165.0 都在 9 月 20 日至 21 日的大约 27 小时内发布,因此请阅读 tag,不要相信任何页面上打印的版本号,包括本页面。

应该选择哪一款

如果这描述的是你选择具体原因
你希望将网关固定在仓库中,让每次克隆和每个 CI 作业都使用它OpenCode项目根目录中提交的 opencode.json 属于普通项目数据,并会注册提供商。VT Code 拒绝同样的做法
你希望相反:克隆的仓库绝不能重定向你的模型流量VT Code来自工作区或项目层的非空 [[custom_providers]] 会在提供商注册之前被拒绝——这是其安全模型中明确命名的一层
你希望代理在默认情况下停下来并先询问,再进行任何操作VT Code文档所述默认值:tools.default_policy 为 "prompt",security.human_in_the_loop 为 true,sandbox.default_policy 为 "read_only",automation.full_auto.enabled 为 false
你更希望它先执行,再通过每个工具的模式进行收窄OpenCode大多数权限默认为 "allow",而 doom_loop 和 external_directory 被设置为 "ask";规则是针对每个工具的 glob 模式,最后匹配的规则生效
你需要的不只是终端——还需要桌面应用、编辑器扩展、GitHub 或 GitLabOpenCode通过 brew install --cask opencode-desktop 提供桌面应用,并提供适用于 VS Code 及其分支 Cursor、Windsurf 和 VSCodium 的扩展;在集成终端中运行 opencode 时,扩展会自动安装自身
你希望通过 HTTP 从自己的服务驱动代理OpenCodeopencode serve 在 127.0.0.1:4096 上公开 OpenAPI 3.1 规范,SDK 由该规范生成;TUI 只是其中一个客户端
你希望使用一个带有严格命令允许列表的静态二进制程序,而不是 Node 工具链VT Code一个 Rust 二进制程序。其安全模型的第 1 层允许九个命令——ls、cat、cp、head、printenv、pwd、rg、sed、which——默认阻止其他所有命令
你希望针对精选模型列表采用每月固定 $10 的价格,而不是按 token 计量OpenCodeOpenCode Go 就是这样的产品,设有按模型划分的上限,并且每个工作区只能有一名订阅者。VT Code 提供该提供商键,但不在 Go 的任何客户端列表中
你希望在 Claude 和 GPT 两个前沿模型系列之间共享一个预付余额两者皆可两者都接受第三方 OpenAI 兼容端点,不受方案限制。两者都不会对自定义提供商设置付费墙

关于迁移成本。 容易迁移的一半是 AGENTS.md:两个工具都会从项目根目录读取它,因此描述你约定的文件在任一方向迁移时都能原样保留。昂贵的一半是其他所有内容。两种配置格式完全不同——一种是带有表数组的 TOML,另一种是为每个提供商指定 npm 包的 JSON——而且没有转换器,因此项目本地配置需要手动重写。MCP 定义、技能、插件、自定义代理或会话历史是否能迁移,是本页面无法确定的事项,因此除了这次重写之外,不估算迁移时间。

唯一值得影响决策的不对称性:端点可以存放在哪里

这是通用模板都不会提到的差异,而且它会颠覆通常的 monorepo 直觉。OpenCode 将自定义提供商视为普通项目数据:提交一个 opencode.json 即可生效,这样团队就能通过一个经过审查的文件,将所有人统一到同一个网关。VT Code 则有意拒绝这种做法。

VT Code 的配置字段参考在字段本身中明确写道:“来自由仓库控制的工作区/项目层的非空值会被拒绝;请在受信任的系统/用户配置中,或在显式选定的配置中定义提供商端点。”在 custom_providers[].base_url、custom_providers[].auth.command,以及 provider_overrides.*.base_url 和 .api_key_env 上也重复了同样的拒绝规则。其安全模型将这一理由命名为独立的一层——加载器会记录每个合并字段的获胜来源,将工作区根目录文件、工作区 .vtcode/ 文件和项目配置文件视为由仓库控制,并在提供商验证之前采取默认拒绝;文档称这可以防止仓库引入自定义提供商的可执行 auth.command,或通过被覆盖的基础 URL 重定向请求。

因此,实际后果是:使用 OpenCode,一个合并后的拉取请求就能将整个团队指向某个网关。使用 VT Code,同样的更改需要在每台机器的用户配置或系统配置中安装,或在启动时传入一个 --config 路径。这是真实的权衡——一方是部署便利性,另一方是供应链控制——无论你偏好哪一方,选择这里的客户端时,这都比任何功能列表更有说服力。两项事实均于 2026 年 9 月 21 日从 main 读取。

权限、自主性以及各自提供的界面

行为VT CodeOpenCode
工具默认行为先询问:tools.default_policy 为 "prompt",security.human_in_the_loop 为 true大多允许;read 为 allow,但 .env 文件默认被拒绝
自主模式默认关闭,并且受到限制:require_profile_ack 为 true,max_turns 为 100,此外还需要显式的 allowed-tools 列表--auto 会批准所有未被明确拒绝的内容;显式拒绝仍然会被强制执行
沙盒文档将其描述为一个可选层,提供文件系统隔离和网络允许列表没有相关文档——/docs/sandbox/ 返回 404;唯一出现的沙箱是插件生态系统列表中的第三方 Daytona 插件。缺少文档并不能证明运行时没有隔离
提供商治理providers_whitelist 限制实际可以访问哪些提供商,指南将其描述为企业网关或隔离网络环境的控制手段whitelist 和 blacklist 作用于提供商内部的模型,将它们从 /models 选择器中隐藏
编辑器接入通过 vtcode acp 使用 ACP、仓库内的 Zed 扩展,以及拥有独立版本系列的 VS Code 配套扩展通过 opencode acp 使用 ACP、桌面应用,以及从集成终端自动安装自身的扩展
无人值守界面在一个二进制程序中提供子命令——vtcode exec(带有 JSON 事件)、review、eval、schedule——以及 Anthropic-Messages 兼容服务器客户端/服务器分离架构:opencode serve 提供 OpenAPI 3.1 规范,并由该规范生成 SDK

来源:VT Code 的配置字段参考、安全模型和提供商指南;OpenCode 的权限、提供商、服务器和 ACP 文档。全部于 2026 年 9 月 21 日读取,且描述的都是默认值——任一客户端都可以重新配置为另一种方向。两者都支持 ACP,也都支持 MCP,因此编辑器接入能力大体相当,而不是区分两者的因素。

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

OpenCode 自带两种产品。VT Code 什么都不出售,而这本身就是一个决策输入:它发送的每个 token 都由你配置的服务计费,而且没有可退而使用的第一方方案。

钱包公布价格需要关注的事项
VT Code没有。没有账户、没有等级、没有托管服务资金来源是自愿赞助。你的全部账单就是你指向的端点所产生的费用
OpenCode Go“低成本的 $10/月订阅”,覆盖一个公布的开放编码模型列表;同一页面称该列表“可能会随着我们测试和添加新模型而变化”并非无限量。每个模型都有一个按美元用量计价的月度上限,公布范围为 $15 至 $60,其中 5 小时上限为该上限的 20%,每周上限为 50%。每个工作区只能有一名成员订阅
OpenCode Zen按需付费的预付余额,按每百万 token 计当余额低于 $5 时自动充值 $20,除非你更改或禁用该功能;银行卡费用按每笔交易 4.4% 加 $0.30 转嫁给用户。其文档还指出,由于 Zen 使用便宜模型来生成会话标题,这些模型可能出现在你的用量历史中
任何第三方端点该提供商的费率两个客户端都支持,不受方案限制。OpenCode 自己的文档将 Zen 和 Go 描述为完全可选

价格和配额于 2026 年 9 月 21 日从 OpenCode 自己的文档读取。在与它们比较之前,有两点值得了解。Go 公布的按模型划分的数据条款并不统一——大多数行写明不用于模型训练且零日保留,但少数行注明保留 30 天,另有两个贡献者模型标记为用于训练且不属于零保留——因此请查看你打算长期使用的模型对应的那一行。Zen 会公布带日期的弃用信息,因此,以某个模型 ID 为基准的比较可能比页面本身更快过时。OpenCode Enterprise 仅提供联系表单,未公布价格,本页面也未引用其价格。

在你自己的端点上运行一次会话的成本

以下数字是用于说明的 token 算术,不是实测任务成本,也不是账单上限。假设一次代理会话发送 200,000 个未缓存输入 token,并接收 15,000 个输出 token——这是用于比较的假设,不是对你仓库的测量。费率是实时的Kunavo 目录每百万 token 价格;最后一列只是进行除法计算,因此会继承前面所有假设。

模型每 1M 个令牌的输入 / 输出单次会话估算每 $10 余额可运行的会话数
Claude Haiku 4.5$0.70 / $3.50$0.19251
GPT-5.6 Terra$0.70 / $4.20$0.20349
Claude Sonnet 4.6$2.10 / $10.50$0.57817
Claude Sonnet 5$1.40 / $7.00$0.38525

将最后一列与 OpenCode Go 每月 $10 的费用对照,但先别急着下结论。两者采用的并不是同一种计量单位:Go 的额度上限以使用其模型列表中的模型所产生的用量金额计价,而不是以你实际支付的金额计价;两者提供的模型也只有部分重合——GPT 5.6 Luna 在 Go 公布的列表中,而上表中的 Claude 和 Gemini 模型则不在其中。订阅买到的还有费用的可预测性,而不只是一个费率。这张表确实厘清了该如何看待这个问题:如果你的工作是每周使用低价模型进行几次长时间会话,按 token 用量计费会更早体现出成本优势;如果你整天高强度使用 Go 实际提供的模型,固定费用套餐就不再明显处于劣势。选择之前,请衡量你自己的会话用量,因为一个模型若需要再尝试一次,就会立刻抵消费率上的优势。

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

将任一工具指向你自己的端点

VT Code 这一侧是一个 [[custom_providers]] 块,而上文中的位置规则才是人们最容易弄错的部分:

~/.config/vtcode/vtcode.toml
# This block is rejected if it arrives from a repository-controlled
# layer. Put it in your user config, in the Unix system layer
# (/etc/vtcode/vtcode.toml), or pass it with --config / VTCODE_CONFIG_PATH.
[[custom_providers]]
name = "kunavo"
display_name = "Kunavo"
base_url = "https://api.kunavo.com/v1"
api_key_env = "KUNAVO_API_KEY"
api_format = "openai-chat"
model = "claude-sonnet-5"
models = ["claude-sonnet-5", "claude-haiku-4-5"]
context_window = 1000000   # omit this and VT Code assumes 128000

关于该块,有四点说明,全部来自提供商指南和字段参考。密钥从 api_key_env 中指定的环境变量读取,配置文档明确警告绝不要将 API 密钥放入 vtcode.toml。api_format 接受 auto、openai-chat、openai-responses 或 anthropic-messages——显式值会被遵循,而不是静默回退——Anthropic 路由值得单独关注,因为两种基础 URL 约定不同,基础 URL 参考对此有说明。设置 context_window 很重要:省略它时,提供商会被视为使用 128,000 个 token,这会在更大的上下文中悄悄限制压缩和预检检查。此外,VT Code 也会对自定义端点应用基于名称的 OpenAI 采样限制——例如,匹配 gpt-6-astra 的模型 ID 永远不会接收 temperature 或 top_p——指南本身的建议是:“如果需要在这类名称上固定值,请在网关上优先使用中性的模型 ID。”

OpenCode 的对应配置是一个数据文件,其中 npm 字段用于选择线路格式——对于提供 /v1/chat/completions 的端点使用 @ai-sdk/openai-compatible,对于 /v1/responses 使用 @ai-sdk/openai:

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 }
        }
      }
    }
  }
}

OpenCode 还可以覆盖内置提供商的 baseURL,而不是声明一个自定义提供商;其文档说明,已知提供商的模型元数据来自 Models.dev——因此,手动声明的提供商必须提供自己的 limit——通过 /connect 命令添加的密钥会写入 ~/.local/share/opencode/auth.json。Kunavo 为该客户端发布了设置页面:OpenCode 集成指南。这里没有 VT Code 集成页面,而上面的 TOML 块是根据 VT Code 已记录的字段定义整理出的配置参考——两个客户端都未针对 Kunavo 进行运行时测试,也没有对任一客户端作出兼容性声明。请保留一条可用的路由,运行一个有边界的任务,并在切换日常使用的主力工具之前读取账户记录的费用。准备为密钥充值时,请创建 Kunavo 账户。

一项确实会耗费时间的安装警告。名为 vtcode 的公开 npm 包并不是当前版本的 VT Code:其 dist-tag latest 为 0.52.8,发布于 2025 年 12 月 24 日,而 crates.io 上的版本在 2026 年 9 月 21 日已为 0.165.0。VT Code 的安装文档列出了另一个 npm 安装路径——npm install -g @vinhnx/vtcode --registry=https://npm.pkg.github.com——以及 cargo install vtcode 和一个 Homebrew tap,后者需要先执行 brew trust vinhnx/tap,再执行 brew install vinhnx/tap/vtcode。同一份文档还提醒,Windows 构建产物仅尽力提供,可能并非每个版本都会提供;而 OpenCode 自己的安装页面则建议在 Windows 上使用 WSL——因此,仅依据它们各自的文档,两者都算不上为 Windows 提供一等支持的工具。

想进一步比较其他工具?Crush 与 OpenCode 对比将同一个 OpenCode 与 Charm 的 agent 进行比较,OpenCode 定价会深入介绍 Zen 和 Go,而OpenAI 兼容 API 参考涵盖了两个客户端所依赖的端点约定。

常见问题

VT Code 和 VS Code 是同一个东西吗?

不是,而且搜索结果经常将它们混在一起。VT Code 是一个用 Rust 编写的终端编码代理,以 vtcode 二进制文件的形式从 github.com/vinhnx/VTCode 分发,也作为 crates.io 上的 vtcode crate 分发。Visual Studio Code 是 Microsoft 的编辑器。造成混淆的另一个原因是,VT Code 发布了自己的 VS Code 配套扩展,该扩展清单中的显示名称字面上就是“VT Code”——而且该扩展使用自己的版本系列:截至 2026 年 9 月 21 日,代码仓库中的版本为 0.50.14,而 CLI 同日为 0.165.0。因此,“VT Code 0.50”指的是编辑器扩展,绝不是代理。在固定某个版本之前,请确认版本号属于哪个软件组件。

我安装的是哪个 OpenCode,v1 还是 v2?

这完全取决于你跟随的是哪个页面;截至 2026 年 9 月 21 日,两者都处于当前状态。代码仓库 README 和文档介绍仍然提供 v1 版本线:curl -fsSL https://opencode.ai/install | bash,或 npm install -g opencode-ai;其 dist-tag latest 为 1.18.31,于 2026 年 9 月 14 日发布,也是 GitHub Releases 中最新的条目。营销首页和 opencode.ai/download 仅推广 v2:curl -fsSL https://opencode.ai/v2/install | bash、npm install -g @opencode/cli,或 brew install anomalyco/tap/opencode-v2。npm 包 @opencode/cli 的 dist-tag latest 为 2.0.12,与代码仓库标签 v2.0.12 一致,并且没有任何 v2 标签对应 GitHub Release 条目。通常意义上,两条版本线都不属于 beta;也没有找到宣布 v2 正式普遍可用的带日期官方公告,因此请确认你实际安装的包名,不要相信任何地方引用的版本号。

VT Code 和 OpenCode 哪个更便宜?

两个客户端都不收费,因此客户端价格都是零,打成平手。OpenCode 采用 MIT 许可证。VT Code 的 README 声明第一方代码采用 MIT 或 Apache-2.0 许可证,而 GitHub 的许可证检测结果为 Apache-2.0;它唯一涉及金钱的渠道是自愿赞助。无论哪种情况,你支付的都是你配置的端点所产生的模型 token 费用。成本差异产生在下游:OpenCode 自带两个第一方钱包——按需付费的 OpenCode Zen 余额,以及每月 $10 的 OpenCode Go 订阅,后者公布了按模型划分的用量上限;而 VT Code 没有账户、没有等级,也完全没有托管服务,因此它发送的每个 token 都由其他人计费。还要注意,列出的最低费率与完成任务的最低成本是两个不同的问题:需要尝试三次的模型,成本可能高于一次就完成任务但价格更高的模型。

我可以将 VT Code 指向自定义的 OpenAI 兼容网关吗?

可以,通过 vtcode.toml 中的 [[custom_providers]] 条目实现,但有一条规则常常出乎人们意料。VT Code 的配置字段参考说明,来自由仓库控制的工作区或项目层的非空 custom_providers 值会被拒绝,并且提供商端点必须定义在受信任的系统配置、用户配置或显式选定的配置文件中。因此,提交在仓库根目录中的 vtcode.toml 不会注册网关。请使用平台用户配置、位于 /etc/vtcode/vtcode.toml 的 Unix 系统层,或传入 --config。该条目需要 name、display_name 和 base_url;密钥从你在 api_key_env 中指定的环境变量读取;api_format 接受 auto、openai-chat、openai-responses 或 anthropic-messages,文档说明显式设置的值会被遵循,不会静默回退。还要设置 context_window,因为省略该值时默认使用 128000 个 token,而这个数值会驱动上下文显示、自动压缩和预检。

我可以在 VT Code 中使用 OpenCode Go 订阅吗?

VT Code 提供了连接所需的配置;OpenCode 尚未验证 VT Code 作为客户端,这是两个不同的陈述。VT Code 的提供商指南将 opencode-go 记录为内置提供商键,使用 OPENCODE_GO_API_KEY 和基础 URL https://opencode.ai/zen/go/v1,同时还列出了 opencode-zen。另一方面,OpenCode 的 Go 文档称流量会受到滥用监控,要求客户端使用自己的 user agent 标识自身,并在 x-opencode-session 标头中发送稳定的会话 ID;文档还公布了“已验证客户端”表,其中列有 Hermes、Claude Code、Codex、ZCode、Pi、jcode 和 Kilo Code CLI,以及“已知有问题的客户端”表,其中列有 DeepSeek Harness、GitHub Copilot Chat、Kimi Code 和 MiMo Code。VT Code 不在任何一张表中,而 OpenCode 自己的免责声明是:它不保证列出的客户端会持续工作。不在列表中并不能证明存在故障,本页面也没有任何证据支持或否定这一点。制定预算时还要考虑席位规则:每个工作区只能有一名成员订阅 OpenCode Go。

在 VT Code 和 OpenCode 之间迁移有多难?

项目说明是容易迁移的一半,配置是昂贵的一半。两个工具都会读取项目根目录中的 AGENTS.md——VT Code 会在每轮中加载它,并通过 vtcode init 创建一个模板;OpenCode 会通过 /init 生成一个,并提示你提交它——因此描述你约定的文件可以原样迁移。除此之外,没有其他内容会自动迁移。VT Code 读取 TOML,其中包含表数组形式的提供商块,并合并九个配置层,从内置默认值一直到系统、用户、项目配置文件、工作区和显式的 --config 路径;表会进行深度合并,而标量和数组则由更高层替换。OpenCode 读取 opencode.json 数据文件,其中的提供商条目会针对每种线路格式指定一个 npm AI SDK 包。没有转换器,因此项目本地配置需要手动重写。本页面无法确定 MCP 服务器定义、技能、插件、自定义代理定义或会话历史是否能以任何形式迁移,因此除了重写配置之外,不对迁移需要多长时间作出任何声明。

VT Code 是否足够稳定,可以作为团队的标准工具?

先阅读项目自己的状态说明:README 称项目处于积极开发中,部分自动化流程仍处于实验阶段,版本之间可能发生变化。发布节奏也印证了这一点,而非与之矛盾——2026 年 9 月 20 日和 21 日,项目在大约 27 小时内发布了 0.164.0、0.164.2 和 0.165.0 三个版本,crates.io 记录也随之更新。README 称该项目由一名维护者利用业余时间构建和维护,唯一的资金渠道是 GitHub Sponsors 和 Buy Me a Coffee;不过同一份 README 也感谢了一批外部贡献者,其中一人贡献了 52 次提交,因此这是一个由一名维护者主导的项目,而不是只有一个人编写代码的项目。规模是另一项不对称性:同一天,VT Code 有 852 个 star,而 OpenCode 有 209,102 个。Star 衡量的是关注度,而不是质量,但由一名维护者利用业余时间主导的项目与由公司维护的项目承担着不同的单点故障风险,而这属于采购问题,而非技术问题。两个仓库在当天都处于活跃状态。

核查时间为 2026 年 9 月 21 日:三个仓库的 GitHub API,以及 VT Code 的发布列表;opencode-ai、@opencode/cli和 vtcode 的 npm dist-tags;vtcode 的 crates.io 记录;VT Code 在 main 上的 README、安全模型、供应商指南、配置字段参考、安装文档和 VS Code 扩展清单;以及 OpenCode 的权限、供应商、服务器、Zen、Go 和下载页面。Kunavo 的 token 费率来自实时目录。本页面未安装、运行任何一个客户端,也未将其指向 Kunavo 端点;未进行任何基准测试或性能比较,也未声称存在此类比较;文中的所有美元金额都只是示例性的 token 算术,而不是实测任务成本。