DeepSeek Harness Hub
← 返回列表

TrueNix/dsh-anthropic-oauth

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
✓ 可直接安装

将你现有的 Claude Code OAuth 会话Pro / Max / Team桥接到 DeepSeek…

自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node >=22);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/9 · 已提供中文文档

将 Claude Code OAuth(Pro/Max/Team)桥接到 DeepSeek Harness —— 复用 ~/.claude/.credentials.json,自动刷新,无需硬编码

综合分
36.6
GitHub 分
36.6
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-anthropic-oauth
npm 包 dsh-anthropic-oauth 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-anthropic-oauth @ 0.3.1
Node 引擎要求 >=22 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/17 18:23:57

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-atomic-write
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-anthropic-oauth

将你现有的 Claude Code OAuth 会话(Pro / Max / Team)桥接到 DeepSeek Harness (DSH) —— 零硬编码。

- 实时读取 ~/.claude/.credentials.json 中的 claudeAiOauth(与 Claude Code 写入的是同一文件)
- 当剩余时间不足 5 分钟时,通过 https://platform.claude.com/v1/oauth/token 自动刷新 accessToken
- 将 ANTHROPIC_OAUTH_TOKEN(以及别名 CLAUDE_CODE_OAUTH_TOKEN)同步到 ~/.dsh/.credentials.yaml —— 即 dsh-llm-pi-ai 已经解析的凭据接缝
- 确保 ~/.dsh/settings.yaml 中存在 llm-pi-ai.providers.anthropic(api: anthropic-messages)
- 实时拉取模型目录,来自 GET /v1/models(id、显示名称、上下文窗口、最大输出、thinking/effort 能力)—— 无硬编码模型列表;新的 Claude 版本会自动出现
- 发送当前 Claude Code 请求身份(最新的 OAuth beta 集合 + claude-cli 模拟头),且不含真实用户标识符 —— cch 是置零的占位符
- 计入你的订阅,而非控制台 API 密钥(Bearer + oauth-2025-04-20)
- 实时配额面板:显示你订阅的 5 小时和 7 天用量,并带有重置倒计时,读取自一次廉价的 max_tokens:1 探测所返回的 anthropic-ratelimit-unified- 头(这些头仅随 /v1/messages 返回,绝不随 /v1/models 返回)

这不会在标准的两个 DSH/Claude 文件之外嵌入或持久化你的令牌。

配额显示

在 DSH Web UI 中,插件的客户端部分将一个主题化的配额面板停靠在编辑器环境读数槽位(conversation.composer.dock)中 —— 非侵入式(不触碰任何外壳界面元素)且感知主题(使用 --dsw- 令牌,因此能自适应浅色/深色):

- 5 小时 / 7 天进度条,带有各窗口利用率(绿色 → ≥70% 琥珀色 → ≥90% 红色)
- 到代表性(通常为 5 小时)窗口的实时重置倒计时
- 检查配额按钮,强制进行一次全新探测(每次完成 Anthropic 轮次后也会刷新,并带有 60 秒的兜底轮询)
- 感知模型:仅当会话的活动模型经由 Anthropic 提供方路由时,面板才会出现。切换到非 Anthropic 模型(Qwen、DeepSeek、GLM……)时它会自行隐藏;切换回来时它会重新出现 —— 实时读取自共享的模型选择目录,因此能立即响应。如果模型选择服务不可用,则跳过该门控(显示面板),而非永久隐藏。

客户端部分直接以 DSH 客户端包格式(window.__ModuleLoader__.load)编写并原样提供 —— 无需打包器或构建步骤。它读取宿主部分提供的两个 JSON 端点:

| 端点 | 用途 |
| --- | --- |
| GET /api/anthropic-oauth/status | 桥接状态 + 最后一次 rateLimit 快照(并入 lastAuthState) |
| GET /api/anthropic-oauth/quota | 实时配额(60 秒 TTL);?force=1 或 POST 绕过缓存 |

配额探测花费可忽略不计(Haiku,1 个输出令牌),并限流为 60 秒 + 手动刷新。

安装

稳定版 —— 来自 npm(发布后):
dsh plugin --profile headless add dsh-anthropic-oauth
dsh plugin --profile web add dsh-anthropic-oauth   # 可选;桥接在 headless 下运行,但在 web 中无害

前沿版本 — 来自 GitHub:
dsh plugin --profile headless add github:TrueNix/dsh-anthropic-oauth

先决条件

- Claude Code 已登录:至少执行过一次 claude login 或 claude setup-token — ~/.claude/.credentials.json 必须包含 claudeAiOauth
- DSH ~0.1.0-rc.6+(包含 dsh-llm-pi-ai、credentials、settings、fs)

工作原理

~/.claude/.credentials.json  --watch-->  dsh-anthropic-oauth Host 插件
claudeAiOauth {accessToken, refreshToken, expiresAt}
│
refreshIfNeeded() 若过期时间 <5m
POST https://platform.claude.com/v1/oauth/token
{grant_type: refresh_token, client_id: 9d1c25…f5e}
│
├─► ~/.claude/.credentials.json(更新过期时间)
└─► ~/.dsh/.credentials.yaml
ANTHROPIC_OAUTH_TOKEN: sk-ant-oat01-…
CLAUDE_CODE_OAUTH_TOKEN: sk-ant-oat01-…

└─► GET /v1/models  (实时目录)
→ llm-pi-ai.providers.anthropic.models
[{id, name, contextWindow, maxTokens,
reasoning, effortLevels}, …]

~/.dsh/settings.yaml llm-pi-ai.providers.anthropic {apiKeyEnv: ANTHROPIC_OAUTH_TOKEN}
│
└─► pi-ai anthropicMessagesApi — Authorization: Bearer sk-ant-oat01-…
anthropic-beta: oauth-2025-04-20,claude-code-20250219,…

模型目录从 GET /v1/models 刷新(TTL ≤6 小时,或通过
POST /api/anthropic-oauth/sync 按需刷新);如果发现失败,提供方会保留一个最小的
Sonnet-4.5 种子,以便仍能离线解析。配额通过
POST /v1/messages 探测(max_tokens:1,Haiku — 花费不到一美分的零头,TTL 60 秒)
并在 /api/anthropic-oauth/quota 暴露。

设为默认模型

~/.dsh/settings.yaml
agent-default-model:
provider: anthropic
model: claude-sonnet-4-5

或在重新加载后于 Settings → Models 中按会话选择。

日志与手动同步

DSH 控制台(桥接 + 配额探测):
[anthropic-oauth] pulled N models from /v1/models
[anthropic-oauth] refreshed, new expiry …

强制刷新模型目录(同时同步配额):
curl -X POST http://127.0.0.1:3080/api/anthropic-oauth/sync

实时配额(TTL 60 秒;?force=1 绕过缓存):
curl http://127.0.0.1:3080/api/anthropic-oauth/quota
curl "http://127.0.0.1:3080/api/anthropic-oauth/quota?force=1"

故障排除
- MISSING_CREDENTIAL llm-pi-ai: no credential for provider route "anthropic" — 桥接尚未同步;请使用 claude login 重新登录。
- 来自 Anthropic 的 401 — 令牌已过期且刷新失败;请再次执行 claude login。
- 配额 ok:false 并伴有刷新错误 — 订阅可能已变更;请重新登录,然后检查 /api/anthropic-oauth/quota?force=1。

刷新与重新登录的安全性

刷新在每个插件内为单飞(single-flight),并在 DSH 进程之间串行化。
缺失字段和被拒绝的刷新令牌不会触发无休止的 HTTP 重试
循环。当状态端点报告需要重新进行 Claude 登录时,仍然有效的访问令牌
仍可使用。新凭据会清除该暂停状态。

桥接会监视凭据目录,以便检测来自 Claude
登录的原子替换。它遵循 CLAUDE_CONFIG_DIR,验证刷新响应,
并使用仅限所有者访问的原子写入。如果源文件在 HTTP
刷新期间发生变化,则保留较新的凭据,而不是将其覆盖。Claude Code 不
共享插件锁;请尽可能避免在刷新进行期间登录。

桥接从不修复或直接写入 DSH 的凭据 YAML。出现
unknown top-level key 错误是另一个存储格式错误的问题,而不是
OAuth 授权错误。

安全性

- 从不提交令牌 — .gitignore 排除了 .oat、.credentials.。
- 令牌仅存在于归你所有的 0600 文件中:~/.claude/.credentials.json 和 ~/.dsh/.credentials.yaml。
- 一份 2026 年 2 月的 Anthropic 文档说明声明 Pro/Max OAuth 仅限官方客户端使用 — 个人使用风险自负;生产环境请使用控制台的 ANTHROPIC_API_KEY。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(TrueNix)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群