taikaikaikai-pixel/dsh-tap1

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.

包名
dsh-tap
版本
0.9.4
许可证
MIT
最近更新
2026年9月6日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:taikaikaikai-pixel/dsh-tap

可选设置(Settings → 插件配置 → CodeBuddy)

设置卡按插件功能分九区,顶部有功能概览行,修改即保存、立即生效。设置持久化在 ~/.dsh/codebuddy-plugin.json,优先级:该文件 > 插件组合配置 > 默认值。

模型

模型清单默认跟网关目录走:启动时自动同步 /v3/config(设置卡"目录同步"行可手动再同步,显示上次同步时间与目录规模);网关拉不到时无感回落静态清单,选择器绝不变空。列表中每个模型:

  • 勾选启用/禁用:勾选状态 = 是否出现在对话模型选择器(写入 ~/.dsh/settings.yamlllm-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.yamlllm-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 未注册),开启即时恢复
搜索默认条数 searchMaxResults5web_search 未指定时(1–20)
抓取正文上限 fetchBodyCap200000web_fetch 返回正文字符上限

图像生成

设置默认说明
一键开关 imageGenEnabled注册/注销 image_generate 工具(dsh 原生 tools 缝)
生图模型 imageGenModelhunyuan-image-v3.0-art网关 /v2/images/generations 的模型

image_generate 按提示词出图(约 20 秒/张),PNG 落盘会话工作区(无工作区时 ~/.dsh/generated-images/),结果返回本地路径与源 URL。

流式桥(智能代理 + 凭据收口)

设置默认说明
启用 bridgeEnabled一键开关;禁用即停本地监听,主聊天随之中断(模型请求经由此桥)
端口 bridgePort3901修改后自动重启监听;须与 cordis.patch.yml 的 baseURL 端口一致,否则主聊天断
会话归因注入 sessionHeadersEnabled按入站会话 id(X-Conversation-ID/X-Session-ID 等头或请求体)注入网关会话头;逐头处理——调用方已设置的头保留原值,缺失的头按会话 id 补全
会话头格式 sessionHeaderFormatopenaiopenai(session_id/x-client-request-id/x-session-affinity)或 openrouter(x-session-id)
每会话并发上限 maxConcurrentPerSession4同会话超额请求 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