Passer au contenu principal
T

dsh-tap

taikaikaikai-pixel/dsh-tap

Bundle upstream non officiel pour DeepSeek Harness. Il comprend une passerelle CodeBuddy avec catalogue de modèles synchronisé à l’exécution, reasoning effort par modèle, recherche/récupération Web, génération d’images et pont d’identifiants en flux ; ainsi que les abonnements TraeWork CN et Qoder CN via des passerelles de traduction locales et un registre de fournisseurs compatibles OpenAI selon le type de clé. Gestion par carte de réglages accordéon.

Installer

dsh plugin --profile web add github:taikaikaikai-pixel/dsh-tap

README

dsh-tap

Node.js CI Release License: MIT Node

中文 | English

把 CodeBuddy(腾讯)/ TRAE SOLO CN(字节)/ Qoder CN(阿里)的订阅额度,变成 DeepSeek Harness(dsh)对话选择器里的 20+ 个模型——设置卡里点一次浏览器授权即可使用,无需环境变量。另带 7 家 key 型 OpenAI 兼容上游、联网搜索/抓取、生图与逐模型思考强度,全部收进一张四区块手风琴设置卡。

浅色深色
设置卡四区块总览(浅色)设置卡四区块总览(深色)

这是什么

dsh(DeepSeek Harness)是开源编码 agent 宿主;本插件是它的非官方上游插件包。三条通道各自在本地起一个回环网关(流式桥 / OpenAI 翻译网关),主聊天与工具请求经网关统一收口凭据——调用方不自带密钥,凭据只存本机 ~/.dsh/,永不回传浏览器。纯 ESM、无构建步骤。

适合你,如果

  • 你在用 dsh(CLI 或桌面版),想让手里已有的国产订阅额度跑编码 agent;
  • 你有 CodeBuddy / TRAE SOLO CN / Qoder CN 任一账号(三选一即可起步);
  • 或者你有任意 OpenAI 兼容服务的 API Key(火山 Ark / 百炼 / DeepSeek / 智谱 BigModel / Moonshot / OpenRouter / Qwen Code,或自定义 baseURL)。

不适合你,如果

  • 你不用 dsh——本插件必须装进 dsh 才有意义(先按官方仓库指引安装 dsh);
  • 你在找免费模型额度——插件不内置任何账号,只接入你自己的订阅与 Key。

前置要求

依赖要求
DeepSeek Harness(dsh)≥ 0.1.6(含 Plugin Manager);安装方式见官方仓库
Node≥ 22
上游账号CodeBuddy(OAuth 或 API Key)/ TRAE SOLO CN 订阅 / Qoder CN 订阅 三选一;或任意 key 型 OpenAI 兼容上游

快速开始

# 从 npm 安装(预构建 tarball,免 allowBuilds 构建审批)
dsh plugin --profile web add dsh-tap

# 或从 GitHub 安装(源码)
dsh plugin --profile web add github:taikaikaikai-pixel/dsh-tap

# 或本地路径安装(开发)
dsh plugin --profile web add /path/to/dsh-tap
  1. 重启 dsh 进程生效(desktop 宿主 = 退出并重启桌面应用)。
  2. 打开设置卡:dsh ≥ 0.1.6 在侧栏「插件」→ Plugin Manager → dsh-tap;更旧宿主在 Settings → 插件配置 → dsh-tap。
  3. 在对应通道区块的「凭据」组登录 → 模型自动出现在对话选择器。
通道登录方式登录后
CodeBuddy区块内选 OAuth 登录(浏览器授权,推荐)或填 API Key(可多把,自动轮询 + 失败冷却)模型目录自动同步
TraeWork CN区块头启用通道 →「凭据」组浏览器授权(一次)模型自动出现(默认 agent 传输档)
Qoder CN「凭据」组浏览器授权 → 区块头启用通道模型自动出现

装好即生效的默认行为:静态补丁把 CodeBuddy provider 路由指向本地流式桥(默认模型 deepseek-v3)、web_search/web_fetch 钉选 CodeBuddy 后端、注册 image_generate 生图工具;三家目录在启用/登录后自动同步进选择器。所有主聊天与工具请求经本地网关统一收口凭据。

常见疑问

  • 会消耗我的订阅额度吗? 会——插件接入的是你自己的账号,额度消耗与官方客户端同源;通用区块提供精确计量(今日/累计 credit、请求数、最近轮次与缓存命中率)。
  • 凭据存在哪,安全吗? 只存本机 ~/.dsh/*-plugin-auth.json,永不回传浏览器(API Key 只回脱敏 ck_a…5678);本地网关只监听 127.0.0.1 回环并做 Host+Origin 双门校验。
  • 模型列表从哪来? 启动时从上游目录动态同步,网关不可达时无感回落内置静态清单(23 模型),选择器绝不变空。
  • dsh 内置"获取可用模型"为什么无效? CodeBuddy 网关没有 OpenAI 风格的 GET /models(404),这是宿主功能对本网关的固有限制;目录同步走独立通道,不受影响。

三条上游通道

上游版本凭据方式本地网关模型目录来源
CodeBuddy(腾讯 copilot.tencent.com,默认通道)v0.1.0 起OAuth(推荐)或 API Key(多把 Key 逐请求轮询 + 失败冷却)流式桥 127.0.0.1:3901网关 /v3/config 动态同步 + 静态兜底清单
TraeWork CN(字节 TRAE SOLO CN 订阅额度)v0.8.x 起自持 ECDSA P-256 设备密钥的 OAuth 设备流OpenAI↔Trae 翻译网关 127.0.0.1:3902本机 state.vscdb 只读提取
Qoder CN(阿里 qoder.cn 订阅额度)v0.9.7/0.9.8 起PKCE S256 设备流 OAuthOpenAI↔COSY 加密信封翻译网关 127.0.0.1:3903签名 GET /algo/api/v2/model/list

另含 key 型 OpenAI 兼容上游注册表:预设火山引擎 Ark、阿里云百炼、DeepSeek、智谱 BigModel、Moonshot AI、OpenRouter、Qwen Code 7 家,或自定义(id + baseURL)+ API Key,模型统一进对话选择器、免重启。

模型

清单默认动态化:CodeBuddy 通道启动时自动从网关 GET /v3/config 同步目录(目录新模型自动出现),网关不可达时无感回落下表静态清单,选择器绝不变空;设置卡各通道「模型」组可手动「同步目录」、逐模型启停、行内调节上下文/输出上限。

静态兜底清单 23 个模型(2026-09-22 按网关目录对齐尺寸;下表为该快照,运行时以目录同步结果为准):

模型厂商contextWindowmaxTokens图片
deepseek-v3DeepSeek13107232768—
deepseek-v3.2DeepSeek13107232768—
deepseek-r1DeepSeek13107232768—
deepseek-v4-proDeepSeek1000000128000✔
deepseek-v4-flashDeepSeek100000050000✔
deepseek-v4.1-flashDeepSeek1000000128000✔
deepseek-v3-2-volcDeepSeek9600032000—
glm-5.1智谱20000048000✔
glm-5.2智谱100000064000✔
glm-5.3智谱100000064000✔
glm-5.0-turbo智谱20000048000—
glm-5v-turbo智谱20000064000✔
kimi-k2.5Moonshot16400032000✔
kimi-k2.6Moonshot25600032000✔
kimi-k2.7Moonshot25600032000✔
kimi-k3Moonshot26214432768—
kimi-k3-1Moonshot100000032000✔
minimax-m2.7MiniMax20000048000✔
minimax-m3MiniMax51200064000✔
hy3腾讯混元19200064000✔
hy3-x腾讯混元19200064000✔
hy3-preview腾讯混元26214432768—
auto自动路由26214432768—

思考强度:逐模型行内下拉(存 effortByModel,出站注入 reasoning_effort,请求方显式携带时不覆盖)。档位来源 = 网关目录新形态能力清单(supportedEfforts/canDisableThinking)∪ 静态实测表(2026-09-22 162 臂复测,证据 docs/probes/codebuddy-efforts-matrix-2026-09-22.json)。off 档只在"省略参数即不思考"的真开关模型上出现——canDisableThinking:true 不等于存在可靠的关思考拼写,插件不臆造线值。TraeWork CN / Qoder CN 通道的档位由各自目录逐模型声明驱动(设置卡与宿主「推理等级」同一真源);Trae 声明了 extra_high 的模型另有 max 上位档(目录不声明但上游实测接受,2026-10-05 探针)。多采样复证结论:档位入口不报错 ≠ 高档位一定思考更多,不应把档位当强度旋钮用。

注意:dsh 内置的"获取可用模型"对本网关永远无效——CodeBuddy 网关没有 OpenAI 风格的 GET /models(404)。目录里存在 ≠ /v2 可路由(glm-4.6v/kimi-k2-thinking/minimax-m2.5/hy4-preview-x 恒报 11102,刻意不进静态清单)。

工具

网络搜索与网页抓取

dsh 原生 web_search / web_fetch 被接到 CodeBuddy 网关的 /agenttool 端点(与官方 CLI 同源,索引较新),凭据复用 CodeBuddy 登录态。补丁已钉选 codebuddy 后端,无需配置;临时切回其他后端可设 DSH_WEB_SEARCH_PROVIDER / DSH_WEB_FETCH_PROVIDER。

设置默认说明
一键开关 searchEnabled开禁用即注销 codebuddy 后端,开启即时恢复
搜索默认条数 searchMaxResults5web_search 未指定时(1–20)
抓取正文上限 fetchBodyCap200000web_fetch 返回正文字符上限

图像生成

image_generate 按提示词出图(约 20 秒/张,模型 hunyuan-image-v3.0-art,走 /v2/images/generations),PNG 落盘会话工作区(无工作区时 ~/.dsh/generated-images/)。开关 imageGenEnabled(默认开)。

识图(describe-image)

标注"图片 ✔"的模型接受 image_url 输入。装了 @linxin666/dsh-web-ui-all 时,Web UI 贴图会经 describe-image 工具走视觉端点——该工具发非流式请求,而 CodeBuddy 网关只支持流式(非流式报 11101),流式桥为此把非流式请求转流式再聚合成标准 JSON。在 dsh 侧配置(dsh ≤ 0.1.6 写 ~/.dsh/settings.yaml;0.1.7+ 写 profile 的 cordis patch):

describe-image:
  baseURL: http://127.0.0.1:3901/v2
  model: glm-5v-turbo
  apiKeyEnv: CODEBUDDY_API_KEY
  apiStyle: chat-completions

设置卡

v0.10.0 起是四区块通道手风琴:CodeBuddy → TraeWork CN → Qoder CN → 通用,默认全部收起,首屏即四条状态行(登录态 / 模型数 / 网关端口 / 额度与服务商数;warn/err 就地出现在所属区块头,不展开也读得到)。展开后按 凭据 → 模型 → [工具] → 网关 → 高级 分组(只有 CodeBuddy 有「工具」组),修改即保存、立即生效。展开才挂载、收起不卸载——草稿与已拉目录跨收起保留。

CodeBuddy 区块展开:凭据 / 模型 / 工具 / 网关 分组(账号名已脱敏)

设置持久化在 ~/.dsh/codebuddy-plugin.json(优先级:该文件 > 插件组合配置 > 默认值)。模型启停/上限等宿主侧写入经 host-config.js 按宿主版本选路:dsh 0.1.7+ 写 profile 的 cordis patch(Settings forms seam),≤0.1.6 写 ~/.dsh/settings.yaml。

登录与凭据(CodeBuddy)

  • API Key 模式:多把 Key 逐请求轮询,遇 401/403/429/5xx/网络错误自动在同一请求内换下一把,失败 Key 冷却 keyCooldownMs(默认 60000ms)后自动回到轮换;单选仅决定目录拉取用的 Key,全不选时回落环境变量引用。
  • OAuth 模式:浏览器完成 copilot.tencent.com/login 授权,插件轮询握手(约 10 分钟超时),完成后显示账号昵称与令牌到期时间,到期前自动续期。流程与官方 CLI 一致。

TraeWork CN 通道:聊天传输档

启用并登录后,设置卡 TraeWork CN 区块可切换聊天传输(逐请求热读取,改档免重启):

传输状态工具环说明
agent(默认)可用✔ 含并行调用走 llm_utils_chat 的 solo_work_lite 面。如实标注:模型位钉死 glm-5.2(选择器里的模型名可发出但实际由 glm-5.2 服务)、reasoning_effort 不生效、消耗 IDE 额度
remote可用✘纯文本对话;思考档位在该面生效(light/high/extra_high,extra_high 模型另有 max)
inline服务端 3003 故障中(2026-08 起未愈)—纯文本也不可用,插件侧无解;详见 docs/diagnosis-trae-3003.md

服务商注册表(通用区块)

  • 添加时先实测 GET /models 验证 key 并拉目录;无 /models 的上游自动改用最小 chat 探针 + 内置清单兜底;公开目录型(OpenRouter)走 chat 探针验 key + 静态精选目录。
  • provider 块落宿主配置层(同上选路),key 落 ~/.dsh/.credentials.yaml(权限 0600,只回脱敏显示);每行可"刷新模型"与"删除"(连同凭据一起清)。
  • 本机凭据扫描:只读扫描本机已装 agent 工具的登录态文件,检测到可导入的即提示"一键导入"(不可导入的命中不罗列)——逐个确认的显式动作,扫描绝不回传任何 secret 值。

额度与用量(通用区块)

展开时 10s 轮询、收起即停:

  • 消耗量(精确):桥对每个请求的网关 usage.credit 恒开计量(搜索/抓取/生图同样入账),持久化在 ~/.dsh/codebuddy-plugin-usage.json;展示今日/累计 credit 与请求数、最近轮次(含缓存命中率)。
  • 账户额度信号:套餐类型与企业名(GET /v2/accounts)、额度不足告警文案(get-dosage-notify)。
  • 数字剩余额度(OAuth 模式):/billing/meter/get-user-resource(每分钟缓存);api-key 模式不开放,改显"手填总额 − 本插件计量累计"的估算值并标注。
  • 网关状态:运行中 / 端口占用(EADDRINUSE)/ 已禁用。

流式桥(CodeBuddy 网关)

设置默认说明
启用 bridgeEnabled开禁用即停本地监听,主聊天随之中断
端口 bridgePort3901须与 cordis.patch.yml 的 baseURL 端口一致,否则主聊天断
会话归因注入 sessionHeadersEnabled开按入站会话 id 补全会话头;调用方已设置的头保留原值
会话头格式 sessionHeaderFormatopenaiopenai 或 openrouter
每会话并发上限 maxConcurrentPerSession4同会话超额 FIFO 排队;无会话 id 不限流

桥在 127.0.0.1 是统一出口与唯一凭据入口:流式入站透传 SSE、非流式入站聚合为标准 JSON,其余路径(如 /agenttool/*)原样透传。端口被占用时只告警不崩溃。Trae/Qoder 翻译网关同理:启用通道即起在 3902/3903(traeBridgePort/qoderBridgePort 可调),禁用/退出即停。

开发与验证

贡献流程与提交约定见 CONTRIBUTING.md。

校验套件(除 npm run verify 外全部离线、mock 上游;断言数以各脚本自身输出为准)

命令覆盖
node scripts/verify-models.mjs --list离线自检模型解析(当前 23 条)
node scripts/verify-models.mjs --sync / --efforts [id…]在线目录漂移对比 / 档位探测(消耗额度)
npm run verify在线逐模型真实探测(消耗额度)
npm run verify:bridge流式桥端到端(mock 网关,断言响应完成)
npm run verify:rotation多 Key 轮询 / 冷却 / failover
npm run verify:corecore/ provider 无关性证伪(静态纯净扫描 + 第二上游全链路)
npm run verify:providers多服务商骨架(/models 404 兜底 + 认证方言 + 档位声明透传)
npm run verify:traeTrae 目录提取(vscdb 发现 / 归一 / 投影)
npm run verify:trae-providerTrae 通道全链路(目录/档位/传输档/额度/prefs 路由)
npm run verify:qoderQoder 通道全链路(目录/信封/工具环/prefs 路由)
npm run verify:host-config宿主配置层选路 / 冲突重试 / 降级
npm run verify:desktop-acceptance桌面端组合验收(--structural 为结构模式)
node scripts/verify-agents-md.mjs文档闸门(AGENTS.md 预算 / 引用存在 / 踩坑编号连续)

联调探针:换机器或上游协议变动后,node scripts/probe-trae-live.mjs --login 再 --chat "你好"、node scripts/probe-qoder-live.mjs --login 再 --chat "你好" 校准(证据落 docs/probes/)。Qoder 专项差分探针见 scripts/probe-qoder-*.mjs。

诊断入口:GET /dsh-tap/settings?probe=host-config 报宿主配置层选路 / 可写性 / revision / 有效 provider 清单——升级后排查不必猜。

架构与文档地图

三层(静态补丁 → 组合根 → 凭据边缘层 + 各上游适配器 + 浏览器半)的职责边界与改动生效方式见 AGENTS.md;深入叙述:

要什么去哪
网关事实全表(headers/错误码/目录/额度/缓存)docs/rules/gateway-facts.md(+ 同目录各专题)
踩坑全本(每条含代价与修复,编号连续性由 CI 锁定)docs/pitfalls.md
Trae / Qoder 协议逆向与设计依据docs/reverse/、docs/goals/
原始实测证据docs/probes/
架构与各上游模块叙述wiki/01-architecture.md ~ 10-provider-qoder.md
版本史与发版记录CHANGELOG.md、Releases

排查与已知问题

症状先看
Trae 通道报 3003 / inline 传输不可用docs/diagnosis-trae-3003.md(服务端故障,切 agent 传输档绕行)
缓存命中率低 / 疑似重复提问多扣额度docs/diagnosis-cache-quota.md、docs/diagnosis-cache-decline.md
Qoder 报 provider_error / Flash 不可用docs/diagnosis-qoder-flash.md
升级后模型/档位行为异常GET /dsh-tap/settings?probe=host-config 看宿主配置层选路与 lastError

其余问题请到 Issues 反馈(有 issue 模板),附 ?probe=host-config 输出与复现步骤。

卸载

dsh plugin --profile web rm dsh-tap

免责声明

  • 本项目是非官方的第三方开源插件,与腾讯(CodeBuddy / WorkBuddy)、字节(Trae / TRAE SOLO)、阿里(Qoder)、DeepSeek 及各模型厂商无任何隶属、赞助或背书关系;相关名称与商标归其各自权利人所有。
  • 本项目按 MIT 协议**"原样"提供,不附带任何明示或默示担保**(包括但不限于适销性、特定用途适用性与不侵权担保)。使用者须自行承担使用风险。
  • 使用者应确保其使用方式符合各上游平台(CodeBuddy、TraeWork、Qoder)的服务条款及相关规则;因使用本插件导致的账号限制、额度扣减、服务中断或任何直接或间接损失,作者不承担任何责任。
  • 各网关接口均为未公开的内部形态,可能随时变更或失效,本项目不承诺持续可用。
  • 凭据(API Key / OAuth 令牌)仅存储于使用者本机 ~/.dsh/ 目录,请妥善保管,切勿提交到任何公开仓库。

许可

MIT

Plugins associés