dsh-codebuddy-models:接入本机 CodeBuddy 订阅

前言

DeepSeek Harness (DSH) 的设计理念是“一切皆插件”,允许用户通过插件扩展模型来源。CodeBuddy / WorkBuddy(腾讯代码助手)是常见的本地代码助手,但默认不在 DSH 的模型选择器中。dsh-codebuddy-models 插件通过读取本地登录态,将 CodeBuddy 订阅转化为 DSH 的原生 provider,使其可直接被 agent 调用。

核心能力

该插件主要解决的是在 DSH 环境中直接使用本地 CodeBuddy 订阅的问题。它具备以下能力:

  • 原生 Provider 接入:作为 dsh 的原生 provider 接入,启用后 CodeBuddy 模型会直接出现在 dsh 的模型选择器中。
  • 本地凭据读取:读取本地桌面端登录凭据,不做登录授权,不存密码。
  • 自动刷新 Token:Token 临近过期时自动调后端刷新。
  • 流式传输:支持 SSE 流式传输。
  • 协议兼容:兼容 OpenAI chat-completions 协议,原生支持 function calling / tool_calls。
  • 模型扫描:自动扫描本地 CodeBuddy 客户端的 product.json 获取模型目录。
  • 文本模型:仅支持文本模型,不支持图片输入。

安装与启用

安装该插件需要已登录 CodeBuddy / WorkBuddy 桌面端,插件会读取其本地登录文件。

  1. 安装插件:
    使用 dsh plugin 命令将插件添加到指定的 profile。
    dsh plugin --profile <profile名> add dsh-codebuddy-models
例如安装到 web GUI profile:
    dsh plugin --profile web add dsh-codebuddy-models
  1. 生效:
    安装命令会在 profile 中执行 pnpm add,并将该包追加到 dsh.profile.bundles 层栈。模型提供方目录在进程启动时组成,因此需要重启或刷新 GUI 后,模型选择器中才会出现 CodeBuddy 提供方及其模型。

配置说明

在 $DSH_HOME/settings.yaml 中配置 llm-codebuddy: 节。所有配置均为可选,支持热改。

llm-codebuddy:
  # 后端 origin,会拼接 /v2/chat/completions;留空/省略则用默认值 https://copilot.tencent.com
  baseURL: https://copilot.tencent.com
  defaultContextWindow: 1000000
  maxTokens: 64000
  streamIdleTimeoutMs: 300000
  models:
    - id: auto  # 回退目录(扫描不到官方目录时):默认仅 auto
  retryPolicy:
    mode: normal
    maxRetries: 5
  • baseURL:留空(空字符串)等价于省略,会回退到默认端点 https://copilot.tencent.com。
  • models:默认只有 auto。该目录只在运行时扫描,不写入 settings.yaml,不会污染用户配置。

工作原理

插件通过 CodeBuddyAdapter 类实现与 DSH 的集成,底层通过标准 OpenAI chat-completions 协议与腾讯后端通信。

  1. 凭据管理:
    插件定位并解析本地登录文件(%LOCALAPPDATA%\CodeBuddyExtension\Data\Public\auth\*.info)。当 token 临近过期时,会自动调后端刷新并回写文件。

  2. 模型目录:
    插件自动扫描本地 CodeBuddy 客户端的 product.json(10 分钟缓存),解析出聊天可用模型。目录里的容量字段会被映射成 harness 的模型能力,暴露给自动上下文压缩。

  3. 流式与工具调用:

    • 流式:使用 eventsource-parser 解码 SSE,将流式数据翻译为 StreamChunk 回传给 agent。
    • 工具调用:适配器处理了 CodeBuddy 后端流式返回的特性——真实工具名只在第一个 tool-call delta 里给出,后续分片中 function.name 为空字符串。适配器仅在非空时覆盖工具名,避免路由错误。
  4. 推理能力:
    适配器为每个模型声明了 off / low / high / max 四档推理努力(默认 high),并将请求里的 reasoningEffort 透传为 reasoning_effort。模型必须声明 reasoning 能力,否则调用会被 harness 拒绝。

注意事项

  • 依赖宿主版本:依赖宿主版本 @deepseek-ai/dsh-llm ^0.1.2-rc.1。宿主超出该范围或为 alpha 不稳定快照时可能行为异常。
  • 错误映射:
    • 企业额度上限错误(14012)会被映射为 QUOTA 错误,不重试。
    • 模型无权限错误(11136)会被映射为 MODEL_NOT_ALLOWED 错误。
    • 未登录错误会给出 MISSING_CREDENTIAL 提示。
  • 仅文本模型:不支持图片输入。
  • 开发模式:如需本地开发调试,可在 profile 的 package.json 中添加 link 依赖并重启 GUI。

目录与源码

  • 插件目录:https://www.skillhub.cn/plugins/evlon/dsh-codebuddy-models
  • 源码仓库:https://github.com/evlon/dsh-codebuddy-models
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜