DeepSeek Harness 插件:在 DSH 里管理 CLIProxyAPI 的账号余额 / 签到 /…
36.3/100
综合分
2
GitHub 星标
395
npm 周下载
—/5
用户评分
数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-cpa-switchnpm 源 · dsh-cpa-switch 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-cpa-switch @ 0.19.0
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/27 00:32:21
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 78 处,展示前 23 条)
- 发起网络请求lib/index.js:31
const response = await fetch(url, { - 执行外部命令固定命令lib/index.js:343
const out = execFileSync("reg", ["query", "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"], { - 写入本地文件lib/index.js:550
await pipeline(stream, createWriteStream(destPath)); - 写入本地文件lib/index.js:1190
mkdirSync(managedCpaDir(), { recursive: true }); - 写入本地文件lib/index.js:1191
writeFileSync(managedConfigPath(), content, "utf8"); - 读取本地文件lib/index.js:1213
content = readFileSync(managedConfigPath(), "utf8"); - 读取本地文件lib/index.js:1243
content = readFileSync(managedConfigPath(), "utf8"); - 读取本地文件lib/index.js:1304
content = readFileSync(managedConfigPath(), "utf8"); - 读取本地文件lib/index.js:1381
content = readFileSync(managedConfigPath(), "utf8"); - 读取本地文件lib/index.js:1478
const content = readFileSync(managedConfigPath(), "utf8"); - 写入本地文件lib/index.js:1527
mkdirSync(dir, { recursive: true }); - 写入本地文件lib/index.js:1570
mkdirSync(destDir, { recursive: true }); - 读取本地文件lib/index.js:1572
const tarBin = bsdtar !== "" && existsSync(bsdtar) ? bsdtar : "tar"; - 执行外部命令来自配置/变量lib/index.js:1574
const child = spawn(tarBin, [ - 删除本地文件lib/index.js:1624
rmSync(path, { - 写入本地文件lib/index.js:1736
mkdirSync(dirname(path), { recursive: true }); - 发起网络请求lib/index.js:3422
const list = await deps.gateway.fetch("/v0/management/auth-files"); - 发起网络请求lib/index.js:3485
const data = await deps.gateway.fetch(`/v0/management/auth-files/models?name=${encodeURIComponent(String(file.name))}`, { timeoutMs: 6e4 }); - 发起网络请求lib/index.js:3957
const fetched = await deps.gateway.fetch("/v1/models", { - 执行外部命令来自配置/变量lib/index.js:5736
const child = spawn(exe, args, { - 发起网络请求lib/index.js:5904
async fetch(path, init) { - 发起网络请求lib/index.js:6327
deps.gateway.fetch(accountsPath), - 发起网络请求lib/client.js:493
const response = await fetch(path, {
扫描于 2026/10/31(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-ui-plugin-manager@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-credentials@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 管理账号余额
- 账号签到与切换
- 自动注册对话模型
展开完整介绍(97 字)↓
DeepSeek Harness 插件:在 DSH 里管理 CLIProxyAPI 的账号(余额 / 签到 / 切换账号),自动注册四个渠道的对话模型,CPA 随 DSH 启停 —— 装完即用。
最近更新
在 GitHub 查看全部 →v0.20.02026-10-27
· 新功能
· 「设为唯一」不再「一启用就消失」。
以前只要某个号是启用状态,它卡片上就没有这个按钮 —— 于是同渠道开两个以上的号时,
已经启用的那几张卡一个入口都没有,想收敛到其中某一个,只能先把别的号一个个手动关掉。
现在的规则按这个渠道里有几个号启用来定:
| 启用的号 | 哪些卡上有「设为唯一」 |
| -------- | ---------------------------------------------------------------------- |
| 1 个 | 只有禁用的那些卡(那个唯一的号没有 —— 它自己已经是「唯一」了) |
| 0 个 | 全部(收敛的目标还没定,每张卡都是入口) |
| 多个 | 全部,包括已启用的那几个(「就它,别的关掉」正是最常用的一次点击) |
四个渠道通用。
· token 数量过百万自动缩写。
ZCode 这类渠道的额度动辄几亿,整串千分位读不出量级。现在到百万级换一档:
508,000,000 tokens → 508M tokens、5,080,000,000 tokens → 5,080M tokens。
- 只上 M 这一档,不会写成 5.08B —— 同屏两个档位反而更难比大小;
- 一百万以下照旧是千分位(999,999 tokens);0 仍然不带单位,缺失仍然是 —;
- 卡片两格、顶部汇总三格、额度包周期余量、对话界面模型选择器左侧的读数一起生效
(四处本来就共用同一个格式化函数,所以「同一屏两种写法」在结构上不会出现);
- 百万档保留最多两位小数(1,234,567 → 1.23M):纯取整会把它说成 1M,
少报 23%,缩写的目的是「一眼比大小」而不是把数量级之外的信息也扔掉。
· 侧栏入口收进「更多」菜单,不再占栏上那一行。
打开面板底部的「侧栏入口」开关后,入口现在落在侧栏的「更多」菜单里(宿主官方给
低频入口留的折叠位),那一行带本插件的图标,点了直接进面板。
- 只回答「要不要入口」,不回答「放哪」:栏上是宿主与所有插件共用的一列,
插件默认不占;开关关着(默认)时面板只从「插件」页进;
- 旧宿主有兜底:「更多」这个位置是宿主 0.2.1-rc.3 才声明的,
更老的宿主上等 2 秒仍没有这个位置就退回栏上那一行 —— 是「看得见的降级」,
而不是「开关明明开着、侧栏里什么都没有」;
- 从上一版升级上来、开关本来开着的:入口会自动换到「更多」里,不用重新开一次。
· 换渠道插件时,手放的补丁文件不会再被静默冲掉。
渠道插件的「更新」是「清空 plugins/ 再解压」,此前直接压进 plugins/ 的手放 dll
会在下一次更新时无声消失。现在托管 CPA 目录下有一个 overrides/:
- 把临时补丁(上游还没修、或修了没发版)放进 overrides/,每次更新解压完会自动叠回去;
- 目录即清单,里面有什么文件就是当前生效着哪些补丁,不用登记;
- 退役 = 删掉那里的文件 + 点一次「更新」;
- 目录本身由启动时预建 —— 与其它「改托管配置」的动作一样,只在 CPA 未运行时进行。
· 修复
· 摘了思考档位的模型不再「一开口就整轮报错」。
选了这类模型(例如 zcode/glm-5.3-flash)发第一条消息就失败,报
UNSUPPORTED_REASONING_EFFORT「model does not support reasoning effort high」——
而界面上根本没有 Effort 这一行、你也没选过 high。根因是插件在路由级
声明了一个默认档位,该字段对整条路由的每个模型都生效,而档位能力是逐模型的:
被摘掉档位的模型只认 off,请求时拿不到界面值就退回那个默认值,于是每次请求都炸,
而界面无入口可改。现在档位一律逐模型给。
- 代价:档位菜单里多回一行 Default。它是对的选择 —— 档位按模型和版本一直在变,
硬编猜不准,Default 本来就是「不发参数、由上游决定」的兜底。
· 删除按钮现在看得出是「危险动作」。
以前它是无边框文字,混在「签到 / 任务 / 设为唯一」那排有框的按钮里不像按钮,
而它恰恰是这一排里唯一不可逆的。
- 卡片上的「删除」与确认框的「确认删除」都换成与兄弟逐字相同的黑框 + 红字
(红只在文字上,框、宽度、右端对齐、亮暗主题全部跟随兄弟);
- 确认框正文一并收短:删的是什么、后果(要重新授权一次)、以及替代方案
(只想让它不参与调度的话用卡片上的开关禁用即可),三件事一件没少,中英都压到一行内。
· 工具栏顺序
v0.19.02026-10-24
· 新功能
· 账号被判死时,面板会说,并给你一个按钮。
上游有时会把凭据判死而不是封号:token 的有效期还有几周、refreshToken 也没过期,
但服务端已经把那个会话列进黑名单(WorkBuddy 侧的错误码是 12153)。
这种号在面板上和正常的号长得一模一样 —— status 仍是 active、disabled 是 false
—— 唯一的不同只在 auth-files 的 note 里。于是你能看到的线索只有
「这号怎么不出余额」,而该做的事(重新授权一次)界面上一个字都没提。
- 卡片上出现琥珀色「需重新登录」标签,旁边是「重新登录」按钮;
- 点它走的是与「添加账号」同一个登录会话 —— 协议上重登旧号与加新号是同一件事,
落盘按 uid 覆盖,不会多出一个号;但弹窗标题会写「重新登录」而不是「添加账号」;
- 判据只认上游那句文案(session dead / re-login required / 12153),
认不出就不说话:误报会让你去换掉一份还能用的凭据;
- 三条一起跟着受益:签到、跑任务、模型调用在这个号上本来就全都会失败。
· 可以删掉没用的账号了。
CPA 本来就有 DELETE /v0/management/auth-files,只是官方管理界面没做出来。
- 卡片按钮行末尾多一个「删除」(弱化样式、位置固定 —— 这一排里只有它不可逆);
- 点它弹确认框,标题带账号名,正文说清三件事:删的是什么、后果(要重新授权一次)、
以及替代方案(只想让它不参与调度的话用卡片上的开关禁用即可);
- 删完会回读确认文件真的没了才算成功 —— 200 只说明请求被接受,
照它报成功的话界面会抹掉那张卡,下次打开号又回来了、而且一直在参与调度;
- 同时清掉本地记忆里那个号的启用状态,免得以后用同一个 uid 重登时
带着上一次的开关状态回来。
· 修复
· 无。这一版只有上面两项新能力。
· 升级
dsh plugin --profile add dsh-cpa-switch
装完重启 DSH —— 这次新增了一条宿主路由(/api/v1/cpa/account-remove),
宿主半端要重新加载;浏览器半端的改动刷新页面即可。
无配置迁移:账号状态与偏好文件都不动。
· 复验
· 有被判死的号时:卡片上有琥珀色「需重新登录」+ 一个主按钮;正常的号没有任何标签;
· 点「重新登录」→ 弹窗标题是「重新登录 · WorkBuddy」,走完授权后那个号恢复正常;
· 点「删除」→ 确认框标题带账号名;取消 → 什么都不发生;
· 确认删除 → 那张卡消失;~/.cli-proxy-api/ 里对应的 -.json 真的没了;
· 删除后再打开面板:不会又冒出来(回读确认过);
· 英文界面:Sign in again / Delete / Delete the account "…"?。
· 版本号说明
取 minor:两项使用者可观察到的新能力(一个状态标签 + 一个按钮、一个新动作 + 一条新路由)。
按发布手册的口径,新增能力走 minor。
正文手写的原因:这次改动直接推到 main,而 Release Drafter 草稿只看得见「合并进 main 的 PR」——
草稿此刻是空的(- (还没有已合并的改动))。按手册那条口径,直推成批改动的版本必须以本文件为准。
· 「需重新登录」的判据与三条取舍:src/relogin.ts
· 删除域的五步与四个静默坏法:src/ops/remove.ts
v0.18.12026-10-20
· 修复
· 侧栏入口默认不再显示。
0.18.0 让它默认开:装上插件,左侧栏立刻多一行。侧栏是全宿主共用的一列
(插件 / 自动任务 / 用量统计 / SSH),插件默认占位是在替用户决定它长什么样。
- 现在默认关:装完侧栏不动,面板从「插件」页进 —— 那条路一直都在;
- 想要常驻入口的人:面板底部按一下「侧栏入口」,之后跨重启保持;
- 读不到偏好也按关(与默认值同向):一次读失败不会凭空给侧栏加一行,
而文件里明明写着关;
- 面板底部那个开关在「还没读到」时按关画(仍可点)—— 读失败不该让它变成点不动。
· 产物断言里那条「关得掉」以前是空的。
假 ctx 的 slots.inject 返回 undefined,组件侧兜成空函数,于是「关掉会摘掉那一行」
在断言里永远成立。现在它真的返回 disposer,并新增一档「宿主说关 ⇒ 那一行真被摘掉」,
同时钉住 main(面板整页)不受这个开关影响。
· 升级
dsh plugin --profile add dsh-cpa-switch
装完重启 DSH。无配置迁移,但有一条要预期:
· 从 0.18.0 升级上来、没按过那个开关的用户:侧栏那一行会消失(文件不存在 ⇒ 新默认)。
按一下就回来。
· 已经打开过开关的用户:文件里是「开」,升级后仍然是开 —— 你的选择不会被冲掉。
· 复验
· 装好不点任何开关:侧栏没有本插件那一行;面板从「插件」页进;
· 面板底部按「侧栏入口」→ 侧栏那一行出现;再关掉 → 立刻消失;
· 关掉后重启 DSH:仍然关着;打开后重启:仍然开着。
· 版本号说明
取 patch:这是把上一版判错的默认值改回来,没有新增能力。判据与取舍见
决策记录。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-cpa-switch
在 DSH 里管好你的 AI 渠道账号余额、签到、任务、切号,不用离开 DSH
简体中文 · English
看余额、签到、跑任务、切账号 —— 在 DSH 里管理 CLIProxyAPI(CPA)的账号,不用再开它的网页控制台。
装完插件即可用:CPA 本体、渠道插件、配置与密钥都由插件自动备好。
[!NOTE]
密钥不出宿主:面板里的所有操作都由插件代劳,管理密钥只保存在宿主侧,网页拿不到。
它做什么
打开 DSH 的 插件 → CPA 切换器,或点左侧栏的 CPA 切换器(与「插件 / 自动任务 / 用量统计 / SSH」并列的那一行),四个渠道各一个标签:
- 看账号余额:可用 / 已用 / 额度池 / 套餐包数;token 与积分分开显示,不混加。
展开完整文档(README 剩余 1 节)
dsh-cpa-switch 在 DSH 里管好你的 AI 渠道账号余额、签到、任务、切号,不用离开 DSH 简体中文 · English 看余额、签到、跑任务、切账号 —— 在 DSH 里管理 CLIProxyAPI(CPA)的账号,不用再开它的网页控制台。 装完插件即可用:CPA 本体、渠道插件、配置与密钥都由插件自动备好。 [!NOTE] 密钥不出宿主:面板里的所有操作都由插件代劳,管理密钥只保存在宿主侧,网页拿不到。 它做什么 打开 DSH 的 插件 → CPA 切换器,或点左侧栏的 CPA 切换器(与「插件 / 自动任务 / 用量统计 / SSH」并列的那一行),四个渠道各一个标签: - 看账号余额:可用 / 已用 / 额度池 / 套餐包数;token 与积分分开显示,不混加。 额度数字到百万级自动缩写(508M tokens;只上一档 M,不改写成 B) - 额度包周期提醒:上游明确给出结束日期的额度包,在周期结束前 7 天可展开查看账号、包名、余量和结束时间;周期结束不等于未用额度一定失效 - 一键签到 / 一键任务:整个渠道一次点完;每个账号也可以单独操作 - 启用 / 禁用账号:每个账号一个开关;「只用这一个」一步把同渠道其余账号全部禁用 - 添加账号:每个渠道列表末尾的「+ 添加账号」,在浏览器里完成 OAuth 登录即可 - 记住你的选择:重启 DSH 后,在用的仍是你上次选的号;运行期间被别处改回去(渠道插件会按额度自动重新启用账号)时,面板会照你的选择恢复并提示一句——期间开关不会反复跳回「全开」再弹回来 - 自动签到:按渠道开关;DSH 没开而漏掉的签到,插件启动时补一次 - 进程托管:DSH 开则 CPA 起(已在跑就复用),DSH 关则一并停止 - 起不来时说清为什么:端口被别的 CPA 占用、配置代际不符、配置加载失败各自点明;端口被外部实例占着时不再假装「运行中」 - 对话模型自动注册:装完插件、加完账号,四个渠道的模型自动出现在 DSH 的模型选择器里 - 只让常用的模型出现在选择器里:面板工具栏上有个「模型」按钮,点开取消勾选某个模型并保存,它就从对话界面的下拉里消失(面板里照旧列出全部,随时可以勾回来);不勾只是不在下拉里,模型本身照常能调通 - 侧栏入口默认不显示:面板最底部有一个「侧栏入口」开关(默认关)。打开后入口在 侧栏的「更多」菜单里(不占栏上那一行);关掉(默认)时面板只从插件页进 ——侧栏是宿主和大家共用的地方,插件不默认占位 支持四个渠道 | 渠道 | 账号数 | 余额单位 | 签到 | 任务 | | WorkBuddy | 多号 | 积分 | ✅ | ✅ | | Trae | 多号 | 积分 | ✅ | — | | Qoder | 单号 | 积分 | ✅ | — | | ZCode | 单号 | token | — | — | 四个渠道上报的余额字段不是一套:Trae 只有一个余额池,上游不给总额与已用,所以它那格显示 —、也不画进度条 —— 那是「上游没说」,不是「用了 0」。 按能力降级:渠道不支持的功能不显示,不给"点了没反应"的按钮。 安全 管理密钥只保存在宿主侧,永不下发浏览器 —— 细节见 架构说明。 前置条件 只需要 DSH(DeepSeek Harness)。CPA 本体、渠道插件、管理密钥都不用你准备 ——插件首次启动时自动下载并配好;机器上已有 CPA 时直接复用,不会覆盖。 下载需要能访问 GitHub Release,直连不通时配好代理即可。 渠道插件不会被自动升级(上游随时可能改行为,静默替换风险太大)。 面板上会显示「渠道插件 a → b」,需要时点一次「更新渠道插件」:它会先停 CPA、保留一份旧件、失败自动还原,换完不自动重启。 安装 从 npm 安装: dsh plugin --profile <profile> add dsh-cpa-switch GUI 的插件管理器里填包名 dsh-cpa-switch 等价。 从本地目录安装(开发用): plugin_manager action: install_bundle target: <本目录绝对路径> 从本仓库源码安装: cd <本仓库目录>bash pnpm install pnpm build dsh plugin --profile web add . 插件必须装进所选配置档的 node_modules/ 下。装完不显示、或显示「未运行」,见 AGENTS.md 的活跃坑。 配置 | 字段 | 默认 | 说明 | | adminKey | 空 | CPA 管理密钥;留空则用凭据库里的引用 | | adminKeyRef | CPA_ADMIN_KEY | 凭据库里的引用名 | | port | 8317 | CPA 监听端口 | | exePath | 空 | CPA 可执行文件路径;留空自动探测 | | manageLifecycle | true | 是否由插件负责 CPA 的启动和停止 | | autoCheckinOnStart | true | 启动时补一次漏掉的签到 | | openControlPanel | false | CPA 启动时是否同时打开它自带的网页控制台 | | reasoningEfforts | true | 是否让模型可切思考档位(关 / 开两档) | | maxOutputTokens | 384000 | 推给宿主的每模型输出上限;0 = 不声明 | | startTimeoutSeconds | 30 | 等待 CPA 就绪的最长秒数 | ⚠️ 输出上限:插件把 maxOutputTokens 推给宿主的每个模型(宿主字段 maxTokens),让请求不再被 DSH 兜底的 32768 提前截断。实测它目前只在 WorkBuddy 渠道真正生效 —— qoder 由服务端模板自带上限、客户端值不进请求,trae 会丢弃该字段并自行补大值;给这两家声明是为渠道侧支持后自动生效。默认值 384000(DeepSeek V4 系列的输出上限天花板)是报大方向:上游对超报值不拒绝(实测 384000 发给真实上限 128k 的模型也正常返回),截断职责仍在上游。链路与实测见实测报告的附录。 对话模型 装完插件、加完账号,四个渠道的模型会自动出现在 DSH 的模型选择器里: - 模型按渠道分组显示:分组标题就是渠道(如 CPA Switch · WorkBuddy),组内每一行是模型名本身(如 deepseek-v4.1-flash)—— 一眼看出请求会走谁 - 这个服务商在 DSH 里显示为 CPA Switch —— 你在模型选择器里看到的就是它 - 同一个模型被多个渠道供给时,每个渠道各出一条 —— 选了哪个渠道,就只用那个渠道的号,不会跨渠道轮询消耗你的其它号 - 只列能用的:已被禁用、已报错或当前不可用的账号,它的模型不会出现 —— 选择器里不会有「点了才发现调不通」的条目 - 只列这四个渠道:CPA 上可能还装着本插件不管理的渠道,它们的模型不出现;插件不认的渠道不会有管理入口,与其给你一个选不上的名字,不如不列 - 启动时不会先给一份残缺的清单:重启 DSH 后如果第一次读到的目录还不完整(CPA 刚起、账号还在分批加载),插件会继续用上一次的完整清单,并在几秒内自动重读补齐 —— 不会出现「只剩一两条模型」或「只剩一个渠道」的中间态 加了新账号、删了账号,模型清单自动跟着变。机制与设计见架构说明。 思考档位 模型选择器里每个模型可以切思考档位 —— 两个选项: - 关:不让模型输出思考过程,直接给答案 - 开(默认):模型先想再答,思考过程在对话里看得见 默认打开(reasoningEfforts: true)。想整体关掉就去插件设置里关这个开关 —— 关掉后 Effort 那一行会消失,回到不带档位的老行为。 ⚠️ 只给两档是有意的,不是没做完。 实测上游对「低/中/高/最大」这类中间刻度不按刻度办事(同一档位内的波动比档位之间的差还大),给了就是在制造错误预期。所以只暴露两个语义确定的值:关与开。理由与实测数据见决策记录。 ⚠️ 「关」发出去的那个词按渠道自动适配(zcode 只认 none、不认 off),所以四个渠道上选「关」都不会因为用词被上游拒。 ⚠️ 如果上游某个时刻拒绝档位值(整轮对话报错),把上面那个开关关掉即可恢复。 菜单里为什么有一行 Default:它是 DSH 在「路由没声明默认档位」时补的,语义就是什么都不发、由上游自己决定。档位这事各模型差别很大、上游还常改,所以插件不钉默认值 —— Default 就是那个兜底,另外两行是插件给的两档。曾经钉过(high)以去掉这一行,但那会把摘掉档位的模型整轮打崩,已撤。原理与取舍见决策记录。 已知限制 - 仅 Windows:CPA 目前以 Windows 可执行文件 + DLL 插件形式提供。 - 下载要能访问 GitHub Release:直连不通时需要代理。 - 被限流的号界面看不出:面板显示"启用"不代表"现在能用",只有实际对话报错才发现 —— 详见架构说明的防错清单。 文档维护者文档地图见 AGENTS.md。常用入口: | 想看什么 | 去哪 | | 为什么这样设计(不变决策、契约边界、防错清单) | docs/ARCHITECTURE.md | | 宿主半边各模块、内部 HTTP 路由表 | src/README.md | | 浏览器半边 | src/client/README.md | | 环境准备 | src/setup/README.md | | 测试覆盖与运行 | tests/README.md | | 下一步做什么、当前卡在哪 | docs/PLAN.md | 开发 powershell pnpm install pnpm build # tsdown 双目标构建 → lib/ pnpm check # typecheck + lint + format + build + verify:artifacts + test 改了源码要重新构建:宿主加载的是构建产物,pnpm build 之后宿主侧重启 DSH、浏览器侧刷新页面。 致谢 本项目站在以下开源项目之上,特此致谢: | 部分 | 参考来源 | | 工程骨架与插件机制:tsdown 双目标构建、双 tsconfig、vitest / eslint / prettier、Cordis 集成、配置 schema、React 面板 UI、生命周期写法 | dsh-workbuddy-bridge | | 被管理宿主:多渠道中转 ProxyAPI,以及账号文件、路由策略等管理 API(上游代码) | CLIProxyAPI | | 渠道协议与多渠道路由能力:WorkBuddy / Trae / Qoder / ZCode 渠道插件,以及账号聚合、签到、任务、余额协议 —— 面板的渠道能力面由它定义 | cpa-multi-plugins · workbuddy-bridge-0.1.2-source(WorkBuddy 渠道协议参考) | | 宿主平台 | DeepSeek Harness | CLIProxyAPI 运行时产物发布自 cslkkl/CLIProxyAPI(release-windows 工作流);开发与调研另参考 zlZayn/CLIProxyAPI(local-autobrowser 分支)。二者与上游 router-for-me/CLIProxyAPI 本质同源,仅存放位置与分支不同。 免责声明 本项目仅供个人学习与研究使用,与 WorkBuddy / Trae / Qoder / ZCode 等各平台官方无关,非官方产品。 - 使用本项目产生的账号风险、额度变动及其它后果,均由使用者自行承担 - 请勿用于商业用途 - 各渠道平台有权随时调整其服务策略,本项目不保证任何功能的持续可用 - 因使用本项目造成的任何损失,作者不承担任何责任 贡献 欢迎提 Issue 与 PR。提交前请确保 pnpm check 全绿。 怎么起步、提交与 PR 的纪律、文档同步要求 → CONTRIBUTING.md。 本仓的约定写在 AGENTS.md:改动要同步文档网络,文档改动后跑一次链接校验(命令见该文件)。 许可 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
cslkkl/dsh-cpa-switch
DeepSeek Harness 插件:在 DSH 里管理 CLIProxyAPI 的账号余额 / 签到 /…
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1