reactive-resume
reactive-resume
A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:yembors64632/dsh-connect
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
一个 DSH 插件:把 WorkBuddy(含企业版,账号数不限)、Trae、Qoder CN 三个渠道的模型 一次接进 DSH,并给它们配一块统一面板 —— 看状态、签到、增删渠道,都在这一块里完成。
2026-09-24 由四个插件合并而来:
dsh-workbuddy-connect+dsh-trae-connect+dsh-qoder-connect+dsh-connect-hub。
这三个渠道各自都有官方客户端,但在 DSH 里用起来是三套东西:分别装、凭据散在三处、 状态要在不同地方看。这个插件把三件事收拢在一起:
| 功能 | 在哪 | 说明 |
|---|---|---|
| 三家模型接入 | 模型选择器 | WorkBuddy / Trae / Qoder 的模型并列可选 |
| 倍率显示 | 模型选择器、面板 | 每个模型名后面跟着当前倍率,选之前就知道贵不贵 |
| 状态面板 | 左侧栏「渠道中心」 | 各账号的登录状态、额度进度、签到状态、模型数 |
| 一键签到 | 面板底部 | 一次领完所有渠道的每日额度 |
| 渠道管理 | 面板 → 认证 | 添加、改名、粘贴凭据、停用、删除 |
| 模型筛选 | 面板 →「模型 N」 | 决定哪些模型出现在模型选择器里 |
| 自动签到 | 面板底部开关 | 打开面板或侧栏刷新时顺手把能领的领了(幂等) |
三家都能由本插件直接领取(不需要回各自的桌面 App):
| 渠道 | 每日奖励 | 领取接口 |
|---|---|---|
| WorkBuddy 个人版 | 按活动看板 | 插件自己的回环路由 |
| Trae | 按 enable / checkedIn |
插件自己的回环路由 |
| Qoder CN | 每天 100 Credits(每日 10:00 UTC+8 刷新、30 天有效) | POST /sash/api/v1/me/campaigns/<campaignId>/claim |
⚠️ Qoder 那条依赖
Cosy-ClientType: 10。写成 5 时服务端不报错,只回一份 「没有任何活动」的空文档,看起来就像"这个账号没有签到活动" —— 2026-09-27 踩过一次。 细节见lib/providers/qoder/index.js的COSY_OPENAPI_CLIENT_TYPE。
⚠️ WorkBuddy 的「今天签没签」没有只读来源:它的签到看板 (
/v2/billing/meter/checkin-status)在活动未开放时整份都是默认值,当天已签到也依然如此 (active:false/today_checked_in:false/week_progress全 false);唯一可靠来源是幂等的daily-checkin。所以侧栏角标和面板必须走同一条带auto=1的请求 —— 曾经角标不带, 结果角标恒显示「可签 2」而面板显示「已签」,看起来就是"角标不准"(2026-09-27 用户报障)。 两处注释都标了「别改回去」,细节见lib/panel-client.js的useHubStatus。
入口在左侧栏底部,和「用量统计」「上下文洞察」「记忆」排在一起。有可领的额度时, 它右边会亮一个「可签 N」的标签;侧栏收成图标条时,就是一个带小圆点的图标。

点开是面板:
面板开着时每两分钟自动刷新;关掉就不再轮询,不会在后台一直打接口。
点面板右上角「认证」切过去,这里列出每个渠道的凭据落点和当前登录状态。

每行右边四个动作:
底部「创建槽位」用来加新渠道:选类型、填一个 id、写个显示名。WorkBuddy 能加任意多个, Trae 和 Qoder 各一个。新增之后面板里立刻能看到这一行,但要重启 DSH 之后, 它的模型才会进模型选择器。
WorkBuddy 渠道可以自己扫码登录,不再依赖桌面 App —— 机器上没装 WorkBuddy、 或者它装在另一台机器上,都能接。
在认证页对着那一行点 「扫码」,弹窗会给出一个链接:
https://copilot.tencent.com/login?platform=CLI&state=…
那个页面自带二维码,用微信/QQ 扫;也可以直接用浏览器打开,它有手机号 + 短信登录。
授权完成后令牌由容器内的插件写进它自己的副本 ~/.dsh/.<渠道 id>-auth.json
(如 .workbuddy1-auth.json,0600)—— 令牌既不经过浏览器,也不经过驱动脚本。
弹窗自己轮询,成功即写入,不用再点任何按钮。
不想开面板也可以在宿主机跑
scripts/wb-login.mjs(-v 2换国际版、--open直接打开浏览器、--wait改超时),它走的是同一对路由。
三条要知道的:
code 11217。所以过期时间只能我们自己算,那个 15 分钟是本地时钟;
弹窗上的倒计时状态也是它。connect-auth/workbuddy<N>.json 那份「粘贴」凭据)。
原凭据文件不会被改动,弹窗会说明替换了谁;想退回原账号,
删掉插件副本 ~/.dsh/.<渠道 id>-auth.json 即可(双向可逆)。workbuddy4/5/6…):直接点它的「扫码」。每个槽位有自己的凭据文件,
互不影响 —— 这就是加新号的正路。⚠️ 别在等待扫码时重启 DSH:登录会话只在内存里(TTL 15 分钟), 重启会把已发出的授权码作废,只能重新点「扫码」。
⚠️ 刚新增的槽位要重启 DSH 之后才能扫码:provider 侧只在启动时按注册表装载渠道, 面板的行却是每次现读注册表 —— 所以新槽位立刻会出现在认证页,但它的路由(
status/login) 都还不存在。认证页对这种槽位会把「扫码」置灰并说明原因(重启后自动可点)。
三家读同一个目录:容器里是 /root/.dsh/connect-auth/,宿主机就是 ~/.dsh/connect-auth/。
一个渠道一个文件,都是 0600 明文 —— 所以别提交进 git,也别贴到公开的地方。
| 渠道 | 文件 | 关键字段 |
|---|---|---|
| WorkBuddy 各账号 | workbuddy<N>.json |
auth.accessToken、auth.refreshToken(插件靠它自动续期) |
| Trae | trae.json |
token、deviceId、appVersionCode |
| Qoder CN(优先) | qoder-session.json |
token(dt- 开头) |
| Qoder CN(兜底) | qoder.pat |
一行纯文本,pt- 开头 |
workbuddy1.json —— 就是桌面 App 存的那份结构,外层是账号、里层是令牌:
{
"account": { "nickname": "…", "phoneNumber": "…", "type": "personal" },
"auth": {
"accessToken": "…",
"refreshToken": "…",
"expiresAt": 1790000000000,
"tokenType": "Bearer",
"domain": "www.workbuddy.cn"
}
}
企业版账号在这个结构里带企业标识,插件据此改发企业版请求头、并改问企业版额度接口 —— 个人版接口对企业号会返回空账户表,界面上就成了"0 积分"。
trae.json —— 由导出脚本生成,字段固定:
{
"formatVersion": 1,
"gateway": "https://…",
"appVersionCode": 1227681842690,
"token": "…",
"refreshToken": "…",
"userId": "…",
"deviceId": "…",
"account": { "username": "…", "scope": "marscode" }
}
三个字段是承重的:deviceId 缺了签到会被上游拒(9004);appVersionCode 是倍率接口的
筛选键,写错或漏掉不报错,只是倍率整列空白;token 过期则模型直接不可用。
qoder-session.json:
{ "token": "dt-…", "refreshToken": "…", "expiresAt": "2026-10-23T17:10:56Z", "uid": "…" }
凭据都在各个桌面 App 的加密存储或系统钥匙串里,所以只能在装了对应 App 的机器上导,
导完直接落在上面那个目录,30 秒内生效,不用重启。导出脚本随插件一起发布
(就在本仓库的 scripts/ 下),统一入口是一条命令:
node scripts/export-connect-credentials.mjs # 能自动导的全导 + 只读校验
node scripts/export-connect-credentials.mjs workbuddy --account 2 # 只导某个账号
node scripts/export-connect-credentials.mjs trae
node scripts/export-connect-credentials.mjs qoder # 自动解 App 登录态
node scripts/export-connect-credentials.mjs qoder --pat pt-xxxx # 或直接给官方 PAT
node scripts/export-connect-credentials.mjs verify # 只校验,不写文件
各家要注意的地方:
不想跑脚本:认证页每行的「粘贴」接受凭据原文,直接写进对应文件 —— 适合从别的机器拷一份过来、或者临时换账号。
脚本默认去连名为
dsh-harness的容器读面板状态(只读校验那一步),换个部署名用DSH_CONTAINER=…覆盖即可;在容器里跑时这一步会自动跳过,不影响导出本身。
模型选择器里每个模型名后面跟着它当前的倍率,一眼能看出哪家便宜。

x0.11 这种,Trae 是 x0.72,Qoder 是 0.5×;Qwen3.8-Flash),不是漏了。渠道行上有个「模型 N」按钮,点开是勾选列表:勾上就出现在模型选择器里,取消就不出现, 改完立刻生效。整条渠道都不想要,「认证」页的「停用」更省事。
| 你做了什么 | 什么时候生效 |
|---|---|
| 改凭据(粘贴、换号) | 最多 30 秒 |
| 停用 / 启用渠道、勾选模型、改偏好 | 立刻 |
| 新增 / 删除渠道、改名 | 面板立刻可见,但模型要重启 DSH 才跟上 |
| 升级插件 | 重启 DSH |
先看面板:每一行的状态点和文字已经说明了大半问题,那一行异常时下面通常还会跟一句错误说明。
| 现象 | 多半是 | 怎么办 |
|---|---|---|
| 左侧栏看不到「渠道中心」 | 入口被关掉了 | 面板底部那个「在左侧栏显示渠道中心入口」开关勾回来(设置 → 插件 → DSH Connect 里也有) |
| 某个渠道显示「未响应」 | 上游一时超时,或凭据掉了 | 等几分钟再刷新;一直这样就去认证页看它的凭据还在不在 |
| 模型选择器里少了一家的模型 | 该渠道未登录,或刚新增渠道还没重启 | 认证页看状态;新增渠道要重启 DSH |
| 签到按钮点不了,或显示「不适用」 | 该渠道没有签到动作(企业账号),或活动没开 | 不用管,这是上游本身的限制 |
| 某些模型没有倍率 | 上游没给 | 正常,有就给、没有不硬凑 |
| 面板打开是空的 | 面板服务没起来 | 重启 DSH |
docs/ 里放着面板设计、各渠道的接入方案与排错笔记;CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: model-provider。