Skip to main content
T

dsh-codebuddy-plugin

taikaikaikai-pixel/dsh-codebuddy-plugin

Unofficial upstream bundle for DeepSeek Harness. CodeBuddy gateway with a runtime-synced model catalogue, per-model reasoning efforts, web search/fetch, image generation and a streaming credential bridge, plus TraeWork CN and Qoder CN subscription channels via local translation gateways and a key-type OpenAI-compatible provider registry, all managed from an accordion settings card.

Install

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

README

dsh-tap

DeepSeek Harness(dsh)的非官方上游插件包:把三个模型上游接入 dsh 的对话模型选择器与工具链,并自带 Web UI 设置卡。纯 ESM、无构建步骤,Node ≥ 22。

上游版本凭据方式本地网关模型目录来源
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,模型统一进对话选择器、免重启。

快速开始

安装

# 本地路径安装(把本插件装进 web profile)
dsh plugin --profile web add /path/to/dsh-tap

# 或从 GitHub 安装
dsh plugin --profile web add github:taikaikaikai-pixel/dsh-codebuddy-plugin

安装后重启 dsh 进程生效。dsh ≥ 0.1.6 在侧栏「插件」→ Plugin Manager → dsh-tap 打开设置卡;更旧宿主在 Settings → 插件配置 → dsh-tap。

凭据

  • CodeBuddy:设置卡 CodeBuddy 区块「凭据」组切换登录方式。OAuth 登录(推荐)= 浏览器完成官方登录页授权,无需任何环境变量,令牌自动续期;API Key = 卡内添加一把或多把 Key(多把自动轮询 + 失败冷却),或写 ~/.dsh/.credentials.yaml 的 CODEBUDDY_API_KEY / 同名环境变量兜底。
  • TraeWork CN:启用通道(区块头开关)→「凭据」组登录(浏览器授权一次)→ 模型自动出现。
  • Qoder CN:「凭据」组登录(浏览器授权)→ 区块头启用通道 → 模型自动出现。

三家凭据分别存 ~/.dsh/codebuddy-plugin-auth.json、~/.dsh/trae-plugin-auth.json、~/.dsh/qoder-plugin-auth.json,永不回传浏览器;API Key 只回脱敏显示(ck_a…5678)。

默认行为

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

模型

清单默认动态化: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 不等于存在可靠的关思考拼写,插件不臆造线值。

注意: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 有「工具」组),修改即保存、立即生效。展开才挂载、收起不卸载——草稿与已拉目录跨收起保留。

设置持久化在 ~/.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 一致。

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

  • 添加时先实测 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 可调),禁用/退出即停。

开发与验证

校验套件(全部离线,mock 上游;断言数为 2026-09-23 复跑口径)

命令覆盖
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:trae-providerTrae 通道全链路(89 断言)
npm run verify:qoderQoder 通道全链路(154 断言)
npm run verify:host-config宿主配置层选路 / 冲突重试 / 降级(36 断言)

联调探针:换机器或上游协议变动后,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(+ 同目录各专题)
踩坑全本(#1–#49,每条含代价与修复)docs/pitfalls.md
Trae / Qoder 协议逆向与设计依据docs/reverse/、docs/goals/
原始实测证据docs/probes/
架构与各上游模块叙述wiki/01-architecture.md ~ 10-provider-qoder.md
版本史CHANGELOG.md

卸载

dsh plugin --profile web rm dsh-tap

免责声明

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

许可

MIT

Related plugins