@
musi #12 opus 跟我说,「作者本人建议的替代路是「把本机 Claude Code 的登录态导入成一个供应商」——这条在你这台机器上直接死:它的 readClaudeCodeOauth() 只遍历 ~/.claude/.credentials.json 这类磁盘文件,只要第一个能解析就直接 return ,永不走钥匙串。而本机磁盘那份当时已经过期四天(打接口 401 ),活的那份在钥匙串里。」请教一下这个说法对么,它现在跟我说 CCR 没用了,就只需要 CPA+它自己写的插件和脚本
----
## 先纠正一个前提:你现在用的**绝大部分就是现成方案**
| 层 | 是什么 | 自建成分 |
|---|---|---|
| 第三方全部模型( GPT/DeepSeek/千问) | **CLIProxyAPI 原封不动** | 零。账号池、协议翻译、出海代理全是它干的 |
| Claude 订阅那一支 | 一个约 200 行的插件 | 自建,但它是**为 CCR 的插件接口写的**,今天没动 |
| 进程宿主 | 150 行 Node | 今天才自建,**替换的只是 CCR 这一个角色**,端口和插件都没变 |
所以不是「大费周章重造轮子」,是**在现成方案上补了一块它们都不提供的东西**。
## 那一块是什么:「 Claude 走订阅计费」
这是你定死的需求,也是唯一逼出自建代码的那一条。两个工具各自的**源码级结论**(当初核对的是与本机版本精确一致的源码,CCR v3.0.15 / CPA v7.2.95 ):
**CPA 单独用 → 只能按量付费,或者被判第三方**
它服务 Claude 模型只有两条路:填官方 API key (按量计费,跟你的订阅无关),或者用 Claude OAuth 登录(就是那种会被判成第三方壳的模式)。**两条都保不住订阅。** 它那个 `passthrough-headers` 名字唬人,实际是「把上游的**响应头**转发给下游」,跟凭据无关。
**CCR 单独用 → 凭据透传这个能力它没有**
- 它的 `passthrough` 是**协议格式**透传(格式一致时不翻译 body ),跟凭据无关;`provider_auth` 阶段**永远执行**,一律用 provider 自己配的 key 去认上游。也就是说客户端自己的订阅 token 根本到不了 Anthropic 。
- 社区有**四个 PR**想加这个能力(#1219 passthrough_auth 、#1295 、#1333 、#1408 ),到 2026-07-25**全部还是 open ,一个都没合并**。
- 作者本人建议的替代路是「把本机 Claude Code 的登录态导入成一个供应商」——**这条在你这台机器上直接死**:它的 `readClaudeCodeOauth()` 只遍历 `~/.claude/.credentials.json` 这类磁盘文件,只要第一个能解析就直接 return ,**永不走钥匙串**。而本机磁盘那份当时已经过期四天(打接口 401 ),活的那份在钥匙串里。
所以要「 Claude 走订阅」,必须有一段自己的代码做三件事:**正文一字不改地转发、装上长期订阅 token 、把 `anthropic-beta` 合并进去(合并不是覆盖)**。这三件现成工具都不给。
**至于今天为什么连 CCR 这个宿主也换掉**——不是嫌它路由做得不好,是它会自作主张改桌面 App 的配置。你今天早上 GUI 进不去网关模式,根因就是我退出 CCR 时它把 `deploymentMode` 还原成了 `1p`;它还有孤儿进程问题,制造过「我明明改了插件、也重启了、行为却没变」的假象。换成 150 行宿主后,插件和端口一个没动。