opencode-anthropic-auth诞生记:SST团队为何要为OpenCode做这个认证插件
2026/9/1 14:01:30 网站建设 项目流程

opencode-anthropic-auth诞生记:SST团队为何要为OpenCode做这个认证插件

【免费下载链接】opencode-anthropic-auth项目地址: https://gitcode.com/GitHub_Trending/op/opencode-anthropic-auth

opencode-anthropic-auth 是 SST 团队为终端 AI 助手 OpenCode 打造的一款Anthropic 认证插件,它让 OpenCode 用户可以直接用 Claude Pro/Max 订阅账号通过 OAuth 登录,而不再需要为每次调用支付 API 费用。这个"诞生记",其实源于一个让很多开发者头疼的现实问题:订阅明明已经付了钱,第三方工具却用不了。

一、问题背景:为什么 OpenCode 不能直接用 Claude 订阅?

🤔 用 Claude 写过代码的朋友都熟悉这套流程:在终端运行claude登录命令,浏览器跳转授权,登录你的 Claude 账号,订阅额度就开始为官方 CLI 服务。

但在 OpenCode 这样的第三方终端 AI 助手里,这条路是走不通的,原因很简单:

  • OAuth 入口只开放给了官方 CLI:Anthropic 的订阅登录流程绑定的是claude-cli官方客户端的身份信息,第三方工具无法直接复用;
  • API 与订阅是两套计费体系:走 API 就要按 token 付费,走订阅才能"用尽为止",而 OpenCode 默认只会走前者;
  • 服务端会识别客户端身份:如果请求特征不像官方 CLI,订阅授权根本不会被接受。

于是 SST 团队(也就是 OpenCode 背后的团队)干脆自己动手,写了这个只有一个核心文件、几百行代码的小插件,把整条链路补上了。

二、插件做了什么:三种认证方式,一键接入

整个插件的核心逻辑集中在 index.mjs 中,对外只导出一个AnthropicAuthPlugin入口(index.mjs#L71)。为 Anthropic 提供商注册了3 种认证方式(index.mjs#L313-L362):

认证方式类型适合人群
Claude Pro/MaxOAuth 订阅登录已购买 Claude 订阅的用户,主力场景 🎯
Create an API KeyOAuth 后自动创建有 Claude 账号、想要 API Key 的用户
Manually enter API Key手动输入已有 API Key 的开发者

其中第二种的细节很有意思:它先走 console.anthropic.com 的 OAuth 授权,再用拿到的凭证调用 Anthropic 的接口自动帮你创建一把 API Key(index.mjs#L341-L353),全程不用打开控制台复制粘贴。

三、诞生记:源码里的四个关键设计

读懂 index.mjs 就能明白这个插件"为什么必须存在"——它解决的每一个问题,都是订阅登录绕不开的坎。

1. 用标准 PKCE 流程拿到授权码

浏览器无法安全保存密钥,现代 OAuth 普遍采用 PKCE(Proof Key for Code Exchange)。插件通过依赖@openauthjs/openauth生成 PKCE 挑战码(见 package.json#L8-L10 的依赖声明),拼出claude.ai/oauth/authorize的授权链接交给浏览器,用户登录后把回传的授权码粘回终端,再与 PKCE verifier 一起换取 access_token 和 refresh_token,完整流程见 index.mjs#L8-L66。

2. Token 过期?后台自动续期

订阅凭证的 access_token 有效期很短。插件在每次发起请求前检查过期时间,一旦临期就自动用 refresh_token 静默换新(index.mjs#L107-L138),并回写缓存。用户全程无感——这是"登录一次,长期可用"体验的关键。

3. 让请求"看起来"像官方 Claude Code

这一部分是插件最"匠心"的地方,也是它诞生的技术核心:

  • 身份伪装:把user-agent设置为claude-cli(index.mjs#L186-L190),满足订阅授权的客户端校验;
  • 提示词改名:服务端的校验规则会拦截带有 "OpenCode" 字样的请求,插件在发出前把 system 提示词里的 OpenCode 统一替换成 Claude Code(index.mjs#L198-L212),并在系统提示词头部注入官方 CLI 的自我介绍(index.mjs#L73-L81);
  • 工具名加前缀再还原:OAuth 通道要求工具以mcp_前缀出现,插件给所有工具名加上前缀(index.mjs#L192-L239),又逐字节改写流式响应把前缀剥离(index.mjs#L276-L297),保证 OpenCode 内部工具调用完全不受影响;
  • 补齐 beta 头:自动合并oauth-2025-04-20等必需的anthropic-beta头并为/v1/messages追加?beta=true参数(index.mjs#L169-L268)。

4. 订阅用户成本直接归零

当检测到当前认证方式是 OAuth 订阅时,插件会把该提供商下所有模型的 input/output/cache 成本全部置为 0(index.mjs#L86-L103)。这样 OpenCode 的用量统计就不会再显示"你在按 API 计费",订阅额度用多少算多少——这正是付费用户最在意的一点 💰

四、快速上手:3 步完成 OpenCode 的 Claude 订阅登录

  1. 安装插件opencode-anthropic-auth已发布为 npm 包(当前版本 0.0.13,见 package.json#L2),通过 OpenCode 的插件机制安装该包即可;
  2. 发起登录:运行 OpenCode 的认证命令(opencode auth login),选择 Anthropic 提供商,你会看到插件提供的Claude Pro/Max选项;
  3. 完成授权:终端会打开浏览器授权页,用你的 Claude 账号登录并把回传的授权码粘贴回终端,插件会自动完成换 Token 与缓存,随后即可正常对话。

五、使用注意与项目文件导航

⚠️两点提醒

  • 成本归零仅对 OAuth 订阅登录生效,手动填 API Key 的用户依然按量计费;
  • 以订阅授权调用非官方客户端可能触及 Anthropic 的服务条款边界,请自行评估合规风险后再使用。

项目文件导航(整个项目精简到只有 5 个文件):

文件说明
index.mjs插件全部核心逻辑:OAuth、刷新、请求改写、成本归零
package.json包元信息与依赖声明
script/publish.ts版本号升级 + 触发发布流程的自动化脚本
bun.lock依赖锁文件
LICENSEMIT 开源协议(Copyright © 2025 SST)

总结:opencode-anthropic-auth 的诞生,是 SST 团队为了解决"OpenCode 如何合法接入 Claude 订阅认证"这一真实痛点,用一个轻量插件补齐 OAuth 登录、Token 续期与客户端身份适配的完整方案。如果你正想在 OpenCode 里用上 Claude Pro/Max,这个认证插件值得放进你的工具箱。

【免费下载链接】opencode-anthropic-auth项目地址: https://gitcode.com/GitHub_Trending/op/opencode-anthropic-auth

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询