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

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 自己发出 |
| 工具与权限 | OpenCode | Claude Code 内置工具关闭;拿不到 OpenCode 工具时请求直接失败,不回退 |
| 上下文压缩、子 Agent | OpenCode | Claude 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 里一条都不会生效。
前置条件
- OpenCode v2.2.3 或更新(v2.2.4 起连接界面会引导安装和检查登录)。
- Claude Code 2.1.248 或更新,装在 OpenCode 服务端所在的同一台机器上。远程工作区和托管版 OpenCode 用不了这个 provider。
- Claude Code 已登录:订阅、Anthropic API key、Bedrock / Vertex / Foundry 账号都行。
四步接上 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,因为网关有自己的计费方式。
常见坑
- 以为自己的 Claude Code 配置会跟过来。不会。OpenCode 刻意不继承,想要的规则要写进 AGENTS.md 或 OpenCode 自己的 Skills。shell 里的
CLAUDE_CODE_SIMPLE、CLAUDE_CODE_EFFORT_LEVEL、MCP_TOOL_TIMEOUT三个变量也会被清掉,免得跳过订阅登录、覆盖 OpenCode 选的推理力度或掐断长时间的工具调用。 - 连上了却没有模型。按官方排错表:提示未安装就装 Claude Code 或设
OPENCODE_CLAUDE_PATH;提示未登录就重新claude auth login再连一次;提示版本太旧就claude update。 - 调温度、top-p、seed 没反应。这些参数和 stop sequences 都不支持;插件的
http.request、http.responsehook 也不会触发,因为 API 请求是 Claude Code 发的。 - 找不到额度和 /loop。
/usage、额度到顶后的选项、/loop、auto mode、agent teams、云端会话、computer use 都没有对应功能。OpenCode 里的/usage显示的是 OpenCode Console 的用量。 - 装包体积。SDK 会顺带下载一份约 270 MB 的
claude,OpenCode 从来不用它,跑的始终是你自己装的那份。
用订阅登录,合规吗
这一点 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 后续公告。
完成标准
/models里能看到claude-agent/开头的模型,选中后正常回复。- 让它读一个文件、改一行代码,OpenCode 弹出自己的权限确认,说明工具走的是 OpenCode 这一侧。
- 同一会话切到另一个模型再切回来,上下文还在。
- 你清楚自己用的是哪种登录,以及它对应的计费和条款。
最后
OpenCode 的架构可以先看本站的 OpenCode 2 架构拆解,Claude Code 本身的权限设置见 settings.json 权限配置。先用 API key 登录接一遍,确认工作流顺手,再决定要不要把订阅放进去。
- OpenCode 文档 · Claude Agent(接入步骤、配置映射、限制、排错)
- OpenCode 设计说明 · claude-agent-provider.md
- OpenCode v2.2.3 发布说明(2026-10-30)
- Claude Agent SDK 概览(第三方登录限制)
- Claude Code · Legal and compliance(认证与凭据使用)