🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

CodeBuddy 接入 Jacklady/dsh-codebuddy-provider

DeepSeek Harness
Jacklady3 天前有提交已提供中文文档扫描:含敏感能力

扫码登录官方账号,多号轮换接入并手动配置模型 API

36/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Jacklady/dsh-codebuddy-provider
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · market
装得上吗
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-codebuddy-provider(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 23:22:44

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 22 处,展示前 22 条)
  • 执行外部命令来自配置/变量
    scripts/login.mjs:37
    const child = spawn(command, args, { stdio: 'ignore', detached: true });
  • 发起网络请求
    src/plugin.js:202
    const response = await provider.request(body);
  • 发起网络请求
    src/provider.js:132
    return fetch(base + CHAT_PATH, {
  • 读取本地文件
    src/credentials.js:73
    entries = readdirSync(dir);
  • 发起网络请求
    src/credentials.js:277
    const response = await fetch(`${this.backendOf(auth)}${REFRESH_PATH}`, {
  • 发起网络请求
    src/credentials.js:409
    const res = await fetch(`${await creds.baseUrl()}${CONFIG_PATH}`, {
  • 发起网络请求
    src/login.js:72
    const response = await fetch(url, {
  • 发起网络请求
    src/login.js:109
    const response = await fetch(url, {
  • 发起网络请求
    src/login.js:153
    const response = await fetch(`${host}/v2${config.prefix}/account`, {
  • 读取本地文件
    scripts/append-patch.mjs:12
    const template = readFileSync(templateFile, 'utf-8').replace(/^ FEFF/, '');
  • 读取本地文件
    scripts/append-patch.mjs:27
    let existing = existsSync(patchPath)
  • 读取本地文件
    scripts/append-patch.mjs:28
    ? readFileSync(patchPath, 'utf-8').replace(/^ FEFF/, '')
  • 写入本地文件
    scripts/append-patch.mjs:37
    writeFileSync(patchPath, merged, 'utf-8');
  • 写入本地文件
    scripts/create-package-json.mjs:19
    writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), 'utf-8');
  • 读取本地文件
    scripts/edit-package-json.mjs:13
    pkg = JSON.parse(readFileSync(pkgPath, 'utf-8').replace(/^ FEFF/, ''));
  • 写入本地文件
    scripts/edit-package-json.mjs:31
    writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), 'utf-8');
  • 读取本地文件
    scripts/merge-patch.mjs:18
    const template = readFileSync(templateFile, 'utf-8').replace(/^ FEFF/, '');
  • 读取本地文件
    scripts/merge-patch.mjs:35
    let existing = existsSync(patchPath)
  • 读取本地文件
    scripts/merge-patch.mjs:36
    ? readFileSync(patchPath, 'utf-8').replace(/^ FEFF/, '')
  • 写入本地文件
    scripts/merge-patch.mjs:40
    writeFileSync(patchPath, block, 'utf-8');
  • 写入本地文件
    scripts/merge-patch.mjs:46
    writeFileSync(patchPath, block, 'utf-8');
  • 写入本地文件
    scripts/merge-patch.mjs:60
    writeFileSync(patchPath, merged, 'utf-8');
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-llm
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的 CodeBuddy/WorkBuddy 服务商插件:官方账号认证、多账号轮换、一键安装、手动配置模型 API

README

由 DeepSeek 最新模型翻译生成
dsh-codebuddy-provider 把 CodeBuddy / WorkBuddy 官方账号接入 DeepSeek Harness(dsh),并允许你在 dsh 里手动配置任意模型 API。 - 多账号轮换:某个号被风控时自动冷却并切到下一个 - 域级降级:所有账号都失效时自动换域重试(风控按「域 + 账号」隔离) - token 自动续期:临近过期时调用官方刷新接口并原子写回登录文件 - 官方协议:使用与官方 CLI 一致的请求身份与 UA,通过服务端渠道校验 - 扫码登录:内置零依赖 QR 编码器,终端直接出码,手机扫一下就登录 - 手动配置模型 API:任意 OpenAI 兼容端点都能在 dsh 里配,不限于 CodeBuddy 📖 操作教程 第一次用请看这里 → 完整操作教程(中文) · Full user guide (English) 教程包含:四个使用场景的手把手步骤、服务器/无图形界面环境的部署方式、多账号管理、8 类常见故障的排查表、命令速查表。
展开完整文档(README 剩余 1 节)
dsh-codebuddy-provider

把 CodeBuddy / WorkBuddy 官方账号接入 DeepSeek Harness(dsh),并允许你在 dsh 里手动配置任意模型 API。

- 多账号轮换:某个号被风控时自动冷却并切到下一个
- 域级降级:所有账号都失效时自动换域重试(风控按「域 + 账号」隔离)
- token 自动续期:临近过期时调用官方刷新接口并原子写回登录文件
- 官方协议:使用与官方 CLI 一致的请求身份与 UA,通过服务端渠道校验
- 扫码登录:内置零依赖 QR 编码器,终端直接出码,手机扫一下就登录
- 手动配置模型 API:任意 OpenAI 兼容端点都能在 dsh 里配,不限于 CodeBuddy

📖 操作教程

第一次用请看这里 → 完整操作教程(中文) · Full user guide (English)

教程包含:四个使用场景的手把手步骤、服务器/无图形界面环境的部署方式、多账号管理、8 类常见故障的排查表、命令速查表。

30 秒速览

git clone https://github.com/Jacklady/dsh-codebuddy-provider.git
cd dsh-codebuddy-provider
node scripts/login.mjs # 扫码登录
.\scripts\install.ps1 -Profile qq -Enable # 安装并切默认模型
dsh --profile qq headless "你好" # 验证

快速开始

1. 准备账号

两种方式,任选其一:

方式 A:扫码登录(推荐,无需手工准备文件)

node scripts/login.mjs

终端会显示二维码与授权链接,手机扫一下即可。详见「扫码登录」一节。

方式 B:用官方客户端登录一次

登录文件位于:

| 平台 | 路径 |
| Windows | %LOCALAPPDATA%\CodeBuddyExtension\Data\Public\auth\.info |
| macOS | ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth/.info |
| Linux | $XDG_DATA_HOME/CodeBuddyExtension/Data/Public/auth/.info |

也可以从别处导入 .info 文件(见下方「导入账号」)。

2. 安装

安装到指定 profile .\scripts\install.ps1 -Profile qq

安装 + 导入账号 + 设为默认模型 .\scripts\install.ps1 -Profile qq -Accounts C:\path\to\accounts -Enable

安装 + 直接进入扫码登录 .\scripts\install.ps1 -Profile qq -Login

卸载 .\scripts\install.ps1 -Profile qq -Uninstall

3. 验证

dsh --profile qq headless "你好"

手动配置模型 API

本插件不重复实现通用 provider——那部分由官方 @deepseek-ai/dsh-llm-pi-ai 提供。
你可以在 dsh 的 cordis.patch.yml 里自由声明任意 OpenAI 兼容端点:

- id: llm-pi-ai
config:
providers:
任意 OpenAI 兼容 API —— 走官方能力,无需本插件 my-gateway: displayName: My Gateway api: openai-completions baseURL: https://api.example.com/v1 apiKeyEnv: MY_GATEWAY_KEY models:
- id: qwen-max
contextWindow: 128000
maxTokens: 8000

官方 DeepSeek deepseek: displayName: DeepSeek api: openai-completions baseURL: https://api.deepseek.com/v1 apiKeyEnv: DEEPSEEK_API_KEY models:
- id: deepseek-chat
contextWindow: 128000
maxTokens: 8192

然后在 dsh 的 Models 页面里把 API Key 存进凭据服务,或直接导出环境变量 MY_GATEWAY_KEY / DEEPSEEK_API_KEY。

apiKeyEnv 指向的是凭据引用,不是密钥本身;配置文件里永远不写明文密钥。

切换默认模型

- id: agent-default-model
config:
provider: codebuddy-official # 插件提供的 CodeBuddy 路由或 my-gateway / deepseek / ... model: deepseek-v4.1-flash

两个路由的区别

| 路由 | 由谁提供 | 用途 |
| codebuddy-official | 本插件 | CodeBuddy 官方账号:官方登录态鉴权、多账号轮换、渠道校验头 |
| codebuddy / my-gateway / 其它 | 官方 llm-pi-ai | 任意 OpenAI 兼容端点,自己配 baseURL + apiKeyEnv |

CodeBuddy 官方账号不能写成普通的 OpenAI 兼容 provider:那样会绕过官方登录态鉴权,并因缺少渠道校验头被服务端拦截(错误码 11128)。

扫码登录

不需要手工准备 .info 文件——直接扫码即可。

node scripts/login.mjs # 扫码登录(默认 www.workbuddy.ai 域)
npm run login # 同上

终端会显示授权链接与二维码,用手机扫码(或用浏览器打开链接)完成授权:

请用手机或浏览器完成授权: https://www.workbuddy.ai/login?platform=workbuddy&state=xxxxxxxx

或直接扫描下方二维码: █████████████████████████ ██ ██ ██ ▄▄▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ██ ...

扫码确认后,凭证会按官方格式写入登录目录,插件自动发现并使用。

也可以在安装时直接进入扫码:

.\scripts\install.ps1 -Profile qq -Login

选项

| 选项 | 说明 |
| --domain <域> | 登录域,默认 www.workbuddy.ai;可选 www.codebuddy.ai / www.codebuddy.cn |
| --no-qr | 不渲染二维码,只打印链接 |
| --open | 用默认浏览器打开授权页 |

扫码登录的原理

官方 CLI 的登录本质是「授权码换 token」,插件直接调用同一套官方接口:

POST /v2{prefix}/auth/state?platform= → 拿到 state 与授权页地址 ↓ (用户在授权页完成扫码 / 账号登录) GET /v2{prefix}/auth/token?state=<state> → 轮询直到返回 token ↓ GET /v2/plugin/account → 拉取账号资料 ↓ 写入 <authDir>/workbuddy-desktop-ai.<uid>.info

轮询期间服务端返回 code 11217(login ing...),表示「还在等扫码确认」。

二维码由内置的零依赖 QR 编码器(src/qr.js)渲染,不引入任何 npm 依赖,支持版本 1~10、纠错等级 L/M,容量 19~271 字节——登录链接通常在 100 字节左右。

导入账号

如果你已经有 .info 文件(官方客户端导出的、或别人给的),也可以直接导入:

复制账号文件到官方登录目录 Copy-Item C:\accounts\.info "$env:LOCALAPPDATA\CodeBuddyExtension\Data\Public\auth\"

或安装时一并完成:

.\scripts\install.ps1 -Profile qq -Accounts C:\accounts

注意:WorkBuddy 桌面端写的 workbuddy-desktop.info 使用 $wbEncrypted 加密,其中的 token 是密文,插件会自动跳过。请使用明文的 workbuddy-desktop-ai.info。

工作原理

dsh (agent loop)
│
├─ llm-pi-ai (官方) ──► 手动配置的任意模型 API │ └─ llm-codebuddy (本插件) ──► route: codebuddy-official │ ├─ 读取官方 .info 登录文件(多账号,自动发现) ├─ 注入官方渠道校验头 (x-conversation- / x-agent-* / x-ide-) ├─ 首条消息补 system(官方要求) ├─ 403 / 11140 → 该号冷却 30 分钟 → 换号 ├─ 401 → 刷新 token 重试 → 仍失败换号 └─ 全部账号失效 → 换域重试 (workbuddy.ai ⇄ copilot.tencent.com)

插件实现要点

dsh 的 LLM 适配器契约(LlmAdapter)要求实现:

- providerInfo() → { id, name }(id 必须等于路由名)
- listModels() → LlmModelInfo[](provider / id / name)
- resolveModel() → LlmResolvedModelInfo(附带 context / defaultMaxTokens)
- prepareCall() → { model, stream },把模型元数据与同一次 generation 的流绑定
- stream() → dsh 的 chunk 序列:
block-start(text) → text-delta → block-end → usage → finish

CodeBuddy 官方只接受 stream: true,因此非流式请求由插件内部转成流式再解析。

为什么需要专门的插件

CodeBuddy 的鉴权不是 API Key,而是官方客户端写入的登录态;并且服务端对请求做 渠道校验(错误码 11128「Request blocked」),要求:

- 首条消息必须是 role: system
- 带齐 x-user-id / x-domain / x-product / x-request-id / x-conversation-id / x-conversation-request-id / x-conversation-message-id / x-agent-intent / x-agent-type / x-agent-runtime / x-ide-type / x-ide-version
- User-Agent 形如 CLI/<version> CodeBuddy/<version>

这些无法用通用的 OpenAI 兼容配置表达,所以单独实现。

配置项(插件自身)

cordis.patch.yml:

- id: llm-codebuddy
config:
account: '' # 固定某个账号;留空则自动轮换 cooldownMs: 1800000 # 账号冷却时长(默认 30 分钟) minIntervalMs: 1200 # 相邻请求最小间隔 userAgent: '' # 覆盖 UA;留空用官方默认 displayName: 'CodeBuddy'

常见问题

Q: 提示 no CodeBuddy login found 没有找到明文 .info 文件。确认路径正确,且不是加密版。

Q: 一直报 11128 / Request blocked 请求没通过官方渠道校验。检查:首条消息是否为 system、请求头是否完整、 UA 是否被自定义成了非官方格式。

Q: 报 401 token 过期或该域不接受这个账号。插件会自动尝试刷新;仍失败则换域。

Q: 想加更多账号 直接往登录目录放更多 .info 文件即可,插件会自动发现。也可以再跑一次 node scripts/login.mjs 扫码加号。

Q: 扫码时提示 login timed out 二维码在 5 分钟内没有完成确认。重新跑一次 node scripts/login.mjs 即可。

Q: 二维码扫不出来 终端可能不支持 ▀▄ 半块字符(老版本 Windows 控制台常见)。加 --no-qr 只打印链接,用手机浏览器打开;或者换一个支持 UTF-8 的终端。

许可

MIT
预览分享卡片长什么样 ↓Jacklady/dsh-codebuddy-provider
分享 · DeepSeek Harness Hub
Jacklady/dsh-codebuddy-provider

扫码登录官方账号,多号轮换接入并手动配置模型 API

这是你的仓库?认领条目

回到顶部