taikaikaikai-pixel/dsh-tap ↗★ 1
dsh-tap
CodeBuddy (copilot.tencent.com) provider bundle for DeepSeek Harness (dsh): 18 models (DeepSeek, GLM, Kimi, MiniMax, Hunyuan, auto) with adjustable reasoning efforts, CodeBuddy web search / web fetch backends for the stock dsh tools, and a settings card in the Web UI.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:taikaikaikai-pixel/dsh-tap说明文档
阅读完整 README ↗可选设置(Settings → 插件配置 → CodeBuddy)
设置卡按插件功能分九区,顶部有功能概览行,修改即保存、立即生效。设置持久化在 ~/.dsh/codebuddy-plugin.json,优先级:该文件 > 插件组合配置 > 默认值。
模型
模型清单默认跟网关目录走:启动时自动同步 /v3/config(设置卡"目录同步"行可手动再同步,显示上次同步时间与目录规模);网关拉不到时无感回落静态清单,选择器绝不变空。列表中每个模型:
- 勾选启用/禁用:勾选状态 = 是否出现在对话模型选择器(写入
~/.dsh/settings.yaml的llm-pi-ai.providers.codebuddy.models覆盖层,下次请求生效,无需重启) - 行内调节上下文/输出上限:ctx 与输出两栏可直接改(覆盖值存
modelState.overrides),不得超过目录给定的该模型实际上限;清空输入框即恢复目录默认 - 徽标区分来源("插件"静态 / "目录"网关)与能力(CLI / 图 / 思考档位)
服务商
key 型 OpenAI 兼容上游注册表(v0.8 新增):预设火山引擎 Ark、阿里云百炼、iFlow 心流、Qwen Code,或自定义(id + baseURL)+ API Key。
- 添加时会先实测
GET /models验证 key 并拉取目录,模型写进选择器免重启(provider 块落~/.dsh/settings.yaml的llm-pi-ai.providers.,key 落~/.dsh/.credentials.yaml的_API_KEY,文件权限 0600,只回脱敏显示) - 无
/models端点的上游(iFlow、Qwen Code)自动改用最小 chat 探针验 key + 内置模型清单兜底 - 每行可"刷新模型"(重拉目录)与"删除"(连同凭据一起清)
- 本机凭据行(v0.8 G7):只读扫描本机已安装 agent 工具(iFlow、Qwen Code 等)的登录态/凭据文件,检测到即提示"一键导入"——导入是逐个确认的显式动作,扫描绝不回传任何 secret 值
网络搜索与抓取
| 设置 | 默认 | 说明 |
|---|---|---|
一键开关 searchEnabled | 开 | 禁用即从 ctx.web 注销 codebuddy 后端(web_search/web_fetch 将报 provider 未注册),开启即时恢复 |
搜索默认条数 searchMaxResults | 5 | web_search 未指定时(1–20) |
抓取正文上限 fetchBodyCap | 200000 | web_fetch 返回正文字符上限 |
图像生成
| 设置 | 默认 | 说明 |
|---|---|---|
一键开关 imageGenEnabled | 开 | 注册/注销 image_generate 工具(dsh 原生 tools 缝) |
生图模型 imageGenModel | hunyuan-image-v3.0-art | 网关 /v2/images/generations 的模型 |
image_generate 按提示词出图(约 20 秒/张),PNG 落盘会话工作区(无工作区时 ~/.dsh/generated-images/),结果返回本地路径与源 URL。
流式桥(智能代理 + 凭据收口)
| 设置 | 默认 | 说明 |
|---|---|---|
启用 bridgeEnabled | 开 | 一键开关;禁用即停本地监听,主聊天随之中断(模型请求经由此桥) |
端口 bridgePort | 3901 | 修改后自动重启监听;须与 cordis.patch.yml 的 baseURL 端口一致,否则主聊天断 |
会话归因注入 sessionHeadersEnabled | 开 | 按入站会话 id(X-Conversation-ID/X-Session-ID 等头或请求体)注入网关会话头;逐头处理——调用方已设置的头保留原值,缺失的头按会话 id 补全 |
会话头格式 sessionHeaderFormat | openai | openai(session_id/x-client-request-id/x-session-affinity)或 openrouter(x-session-id) |
每会话并发上限 maxConcurrentPerSession | 4 | 同会话超额请求 FIFO 排队;无会话 id 不限流 |
桥在 127.0.0.1 作为统一网关出口与唯一凭据入口:主聊天(llm-pi-ai 的 codebuddy 路由即指向此桥)、describe-image、tools 的请求都由桥按登录方式(OAuth/Key)解析凭据,调用方发的哨兵 Authorization 从不出宿主机。chat/completions 走会话归因 + 并发管理,流式入站(stream:true)透传 SSE、非流式入站(stream:false 或缺省)聚合为标准 chat.completion JSON;其余路径(如 /agenttool/*)直接透传。端口被占用时(如另一个 dsh 实例已在运行)插件只告警不崩溃,桥状态在"额度与用量"分区可见。
额度与用量
实时(分区打开时 10s 轮询)显示:
- 消耗量(精确):桥对每个 chat 请求的网关
usage.credit恒开计量(搜索/抓取/生图路径同样入账),持久化在~/.dsh/codebuddy-plugin-usage.json;展示今日/累计 credit 与请求数、最近轮次(按 >45s 间隔聚类的近似口径,含缓存命中率) - 账户额度信号:套餐类型与企业名(
GET /v2/accounts)、额度不足时网关的告警文案(get-dosage-notify,官方 CLI 同源)。额度是账户级的,与 WorkBuddy 共用 - 数字剩余额度(OAuth 模式):
/billing/meter/get-user-resource实测可用(资源包逐条 + 本周期/总量口径剩余,每分钟缓存);api-key 模式该 API 不开放(OAuth 专享),卡片改显「手填总额 − 本插件计量累计」的估算值并标注(规则 docs/rules/quota-signals.md R-Q7) - 桥状态:运行中 / 端口占用(EADDRINUSE)/ 已禁用
登录
- 登录方式:
API Key(默认)或OAuth 登录 - API Key 模式:可添加多个 Key(名称 + key,卡内脱敏显示);多把 Key 逐请求轮询,遇 401/403/429/5xx/网络错误自动在同一请求内换下一把,失败 Key 冷却
keyCooldownMs(默认 60000ms,可配)后自动回到轮换;单选仅决定模型目录拉取用的 Key,一个都不选时回落到"环境变量引用"(环境变量或~/.dsh/.credentials.yaml,默认CODEBUDDY_API_KEY) - OAuth 模式:点击"登录 CodeBuddy 账号"会打开官方登录页(
copilot.tencent.com/login),插件轮询握手结果(约 10 分钟超时),完成后显示账号昵称与令牌到期时间;令牌存~/.dsh/codebuddy-plugin-auth.json(设置接口永不回传),到期前自动用 refresh token 续期。流程与官方 CLI 一致(/v2/plugin/auth/state→ 浏览器登录 →/v2/plugin/auth/token轮询 →/v2/plugin/login/account)
高级
网关地址 baseURL(默认 https://copilot.tencent.com,http/https 绝对地址),一般无需修改。
实现说明:设置卡走插件自建的 GET/POST /dsh-tap/settings 路由而非 dsh 官方 settings 命名空间——当前 dsh 组合存在两份 settings 服务实例(bundle 入口侧与 Web 客户端连接侧互不相通),命名空间注册对设置页不可见;这与 dsh-html-visualizer 自建设置路由是同一原因。
凭据配置
两种方式(设置卡"登录"区切换):
- OAuth 登录(推荐):浏览器完成官方登录页授权即可,无需任何环境变量;令牌自动续期,覆盖模型对话、搜索、抓取、识图全部路径。
- API Key:设置卡内添加一个或多个 Key(多把自动轮询 + 失败冷却);或在
~/.dsh/.credentials.yaml写入CODEBUDDY_API_KEY: "ck_你的key"(或同名环境变量)作为兜底引用。
所有请求(含主聊天)都经 127.0.0.1:3901 的流式桥统一取凭据——桥按上述登录方式解析,调用方不自带密钥。
离线:仅列出本地配置的模型,自检 YAML 是否解析正常
node scripts/verify-models.mjs --list