taikaikaikai-pixel/dsh-codebuddy-plugin ↗★ 1
dsh-codebuddy-plugin
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-codebuddy-plugin说明文档
阅读完整 README ↗可选设置(Settings → 插件配置 → CodeBuddy)
设置卡按插件功能分七区,顶部有功能概览行,修改即保存、立即生效。设置持久化在 ~/.dsh/codebuddy-plugin.json,优先级:该文件 > 插件组合配置 > 默认值。
模型
"获取模型列表"按当前登录凭据(Key/OAuth)拉取网关目录(GET /v3/config)。列表中每个模型都可勾选启用/禁用:
- 勾选即写入
~/.dsh/settings.yaml的llm-pi-ai.providers.codebuddy.models覆盖层,对话的模型选择器实时刷新(下次请求生效,无需重启 dsh) - 目录中不在插件静态清单的模型(徽标"目录",如 glm-4.7)勾选即加入可用列表,上下文/输出上限/图片输入按目录数据生成
- 静态清单模型(徽标"插件")取消勾选即从选择器移除
- 全部恢复默认(无禁用、无新增)时自动删除 settings 覆盖层,配置补丁层重新接管——插件更新静态清单不会被陈旧覆盖遮蔽
网络搜索与抓取
| 设置 | 默认 | 说明 |
|---|---|---|
一键开关 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 共用 - 数字剩余额度没有开放 API(CLI/api-key 面实测无存档于 docs/probes/quota-2026-08-18.json)——准确余额以 codebuddy.cn 套餐页 为准
- 桥状态:运行中 / 端口占用(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-codebuddy-plugin/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