教程2026-10-31 · 智涌AI

OpenCode 用 Claude 订阅:Claude Agent 接入与合规风险

OpenCode 接入 Claude Agent 头图:终端里 claude auth login、/connect 选 Claude Agent、/models 选 claude-agent/opus#high,标注 OpenCode v2.2.3、Claude Code 2.1.248+ 与空闲 5 分钟退出

OpenCode 在 2026-10-30 发布的 v2.2.3 里加了一个内置 provider,叫 Claude Agent:本机装好 Claude Code 并登录,就能在 OpenCode 里调 Claude 模型,登录方式可以是 Claude 订阅、API key 或云厂商账号。用订阅的人得先弄清两件事:它到底怎么接的,会不会碰到 Anthropic 的条款。这篇按 OpenCode 官方文档、设计说明和 Anthropic 文档把两件事讲清楚。

它换掉的是 Claude Code 的「身体」

OpenCode 的设计说明开头就讲了思路:OpenCode 的界面和用法一点不变,Claude Code 变成又一个 provider。具体做法是用 Anthropic 公开的 Claude Agent SDK 启动用户自己装的 claude 程序,OpenCode 不读 Claude Code 保存的登录凭据,也不夹在 Claude Code 和 Anthropic 之间改请求。

Claude 收到的系统提示词是 Claude Code 自带的那份,再加一句「正在 OpenCode 里运行」,以及 OpenCode 这边的 Agent 角色提示、AGENTS.md、Skills 和 MCP 说明。Claude Code 的内置工具全部关掉,OpenCode 的工具以 MCP 工具的形式交给 Claude(名字带 mcp__opencode__ 前缀)。Claude 发起工具调用时,插件先扣住,由 OpenCode 像对待其他模型一样执行,权限弹窗照常出现,再把结果送回去。这样做的好处是对话历史不管哪个模型写的都长一个样,同一会话里可以在 Claude 和别的模型之间切换,权限系统也只有一套。

环节谁负责说明
登录与模型请求Claude Code用户在终端 claude auth login,请求由 Claude Code 自己发出
工具与权限OpenCodeClaude Code 内置工具关闭;拿不到 OpenCode 工具时请求直接失败,不回退
上下文压缩、子 AgentOpenCodeClaude Code 的自动压缩关闭
Claude Code 本地配置都不加载~/.claude、项目 .claude、CLAUDE.md、hooks、MCP、Skills、自动记忆
费用显示OpenCode订阅显示 0;API key 按 Anthropic 价,Bedrock、Vertex、Foundry 按各自价格

几个实现细节决定了使用体验。每个会话对应一个常驻的 claude 进程,空闲 5 分钟退出,下条消息再接上保存的会话;工具列表、系统提示词、连接设置变了,进程会重启。因为 MCP 处理函数拿不到 Claude 的工具调用 ID,插件靠调用前的 hook 记下 ID,一次只能记一个,所以工具调用全部串行,Claude 原本可以并行读多个文件,在这里会一个个来。设计说明还记了一组缓存数据:标题和压缩改在对话副本上跑、保留原工具和提示词以复用提示词缓存后,一次测试里新写入缓存的 token 从 8,577 降到 32。

Claude Code 在这里只当模型用。你在 Claude Code 里攒的 CLAUDE.md、hooks 和 Skills,到 OpenCode 里一条都不会生效。

前置条件

四步接上 Claude Agent

第一步,在终端登录 Claude Code,版本太旧就先升级:

claude update
claude auth login

第二步,在 OpenCode 里连接 provider,选 Claude Agent。也可以在命令行里用 auth login claude-agent 连。

/connect
# 选 Claude Agent

第三步,选模型。模型列表来自 Claude Code,推理力度做成了变体,写法如 claude-agent/opus#high:

/models

第四步(可选),指定 claude 路径或走自家网关。OpenCode 默认在 PATH 里找 claude,换路径用 OPENCODE_CLAUDE_PATH;provider 上的连接设置会转成 Claude Code 的环境变量,并覆盖你 shell 里的同名变量:

opencode service set env OPENCODE_CLAUDE_PATH /opt/claude/bin/claude
{
  "$schema": "https://opencode.ai/config.json",
  "providers": {
    "claude-agent": {
      "settings": { "baseURL": "https://llm-proxy.example.com/anthropic" },
      "headers": { "X-Gateway-Tenant": "engineering" }
    }
  }
}

对应关系:settings.baseURL → ANTHROPIC_BASE_URL,settings.apiKey → ANTHROPIC_API_KEY,settings.authToken → ANTHROPIC_AUTH_TOKEN,headers → ANTHROPIC_CUSTOM_HEADERS,body → CLAUDE_CODE_EXTRA_BODY。写在某个模型上会覆盖 provider 级别的值。用自定义 base URL 时费用显示为 0,因为网关有自己的计费方式。

常见坑

用订阅登录,合规吗

这一点 OpenCode 自己也没给定论。设计说明的「开放问题」里写着「需要和 Anthropic 讨论或拿到某种批准吗?」,最早那版 PR 也把政策风险列为第一条顾虑,交给维护者决定。OpenCode 现行的 providers 文档里仍保留着一句:有插件能让你在 OpenCode 里用 Claude Pro/Max,Anthropic 明确禁止这样做。

Anthropic 这边,Agent SDK 概览页写的是:除非事先获批,Anthropic 不允许第三方开发者为其产品提供 claude.ai 登录或订阅额度,包括基于 Agent SDK 构建的 Agent,应改用 API key。Claude Code 的「法律与合规」页说得更细:OAuth 登录只供订阅用户正常使用 Claude Code 和 Anthropic 原生应用;开发者不得在自己的应用里提供 Claude.ai 登录,也不得代用户经由 Free、Pro、Max、Ultra 套餐凭据转发请求。同一页也允许用户用自己的订阅登录未修改的 Claude Code 二进制。OpenCode 的方案正是跑未修改的 claude、不碰凭据,但它关掉了内置工具和本地配置,这算不算「正常使用」,只有 Anthropic 说了算。截至本文发布,我们查阅的 Anthropic 文档没有针对这个 provider 的说明。

稳妥的做法:工作项目或团队账号用 API key 或云厂商账号登录 Claude Code,按量计费,条款上没有灰色地带;只有个人订阅时,先在不重要的项目上用,留意 Anthropic 后续公告。

完成标准

最后

OpenCode 的架构可以先看本站的 OpenCode 2 架构拆解,Claude Code 本身的权限设置见 settings.json 权限配置。先用 API key 登录接一遍,确认工作流顺手,再决定要不要把订阅放进去。

信息来源
关注公众号「智涌AI速递」

每天的 AI 快讯、实用教程和 AI项目实测,也会同步发到微信公众号。在微信里搜索「智涌AI速递」就能关注;不用微信的话,可以用 RSS 订阅本站。