dsh-wb-credit-fallback
Manifest validWorkBuddy 积分耗尽时自动回落到 DeepSeek 的 DSH 插件
dsh-wb-credit-fallback
WorkBuddy 积分耗尽时,自动把会话切到 DeepSeek,并把默认模型永久回落到 DeepSeek——这一轮照常答完,之后新开的会话也不再撞额度墙。
DSH(DeepSeek Harness)本身没有跨 provider 的回退链:
- WorkBuddy 插件在积分不足时让本地 shim 返回
402 / hard_credit; - DSH 的 pi-ai 适配器会把 402 归到
PI_AI_ERROR(不是QUOTA); - 内置
dsh-llm-retry只会用同一个模型重试。
所以这里用一个 host 侧小插件补上缺口。它只用 DSH 0.2.0-rc.2 公开的扩展点,宿主代码零运行时依赖。
行为
- 监听
agent/request-error:失败 provider 是from(默认workbuddy)且错误文本命中积分不足标记(hard_credit、insufficient credit、402、积分不足、额度不足、余额不足等)时:- 用
sessionController.agents.selectForNextRequest把当前会话切到to(默认deepseek-account / deepseek-flash); - 用
agentDefaultModel.saveSelection把它写成 profile 默认模型(走官方配置编辑器写回cordis.patch.yml,不手改 YAML),此后新会话直接走 DeepSeek; - 返回
{ kind: "retry" },让这一轮重试一次。
- 用
- 监听
agent/request:切换尚未落盘时直接重写这次请求的 provider/model,因为同一步的重试不会重新组装系统提示。 - 保护:每个 turn 最多自动切换一次;内置重试策略已决定重试时让内置优先;非积分类失败(400/401/网络错误)不触发;监听器内部异常全部吞掉,不影响正常请求。
不做的事:DeepSeek 也失败时不再切;积分恢复后不会自动切回 WorkBuddy(在模型选择器里重选一次即可);不处理 WorkBuddy 登录失效(401 session_dead)。
安装
桌面客户端的 profile 由 App 独占管理,CLI 不能装,用 App 内入口:
- 左侧栏「插件」→「添加插件」;
- 输入本目录的绝对路径(安装向导接受绝对路径);
- 安装 → 立即启用 → 完全退出客户端(含托盘)再打开。
卸载在插件页里完成,本插件不写任何用户数据。
dsh web / dsh tui 这类命令行 profile 可以直接从 GitHub 源码安装(桌面客户端的 desktop profile 仍只能用 App 内入口):
dsh plugin --profile web add github:Yikeqm/dsh-wb-credit-fallback
装完重启对应 profile,再刷新页面即可。用 GitHub 源安装时插件会跟随仓库 main 分支更新,需要重新 dsh plugin remove + add 才会取到新提交。
配置
bundle 的 cordis.patch.yml 里给了默认值,可在 profile 的 cordis.patch.yml 里按行 id wb-credit-fallback 覆盖:
config:
from: workbuddy # 触发条件:哪个 provider 报额度不足
to: # 切到哪个 provider/model
provider: deepseek-account
model: deepseek-flash
reasoningEffort: high
persistDefault: true # 同时写回默认模型;false = 只救当前会话
验证
逻辑层:node tests/smoke.mjs(用假 ctx 模拟瀑布调用,覆盖触发 / 不触发 / 只切一次 / 默认写回)。
集成层:在独立的 headless profile 里挂两个手工声明的 pi-ai 路由(一个返回 402 hard_credit,一个正常流式返回),跑真实 agent loop:
- 第一次运行:
BAD → GOOD,会话里request/header从故障 provider 换成回退 provider,turn/end为completed,profile 的agent-default-model被改写; - 第二次运行(新会话):只有
GOOD,直接走回退后的默认模型; - 负向用例:非积分错误(400)不触发切换;回退目标也失败时不会在两个 provider 之间打转。
已知限制
- 依赖 DSH
0.2.0-rc.2的agent/request/agent/request-error瀑布与sessionController、agentDefaultModel服务;升级 DSH 大版本后需复核。 - 积分不足靠错误文本匹配;WorkBuddy 若更换措辞需要补标记。
- 插件在宿主进程内运行,如遇异常行为先在插件页禁用它。
License
MIT
Comments
Loading…
Similar plugins
by Axiaohungry
在deepseek harness中使用workbuddy api,因为公司只提供workbuddy积分
★ 68
MIT
JavaScript
Oct 19, 2026
dsh plugin --profile web add @axiaohungry/dsh-llm-workbuddyby zdk119746
可以在 DSH 中使用 WorkBuddy 里面的模型
★ 3
↓ 525/wk
MIT
JavaScript
Oct 12, 2026
dsh plugin --profile web add dsh-llm-workbuddyby functy23
corrinehu/dsh-workbuddy-connect 的 Functy 分支:仪表盘、多账号轮换与额度展示,把 WorkBuddy 模型接到 DeepSeek Harness。
★ 3
↓ 75/wk
MIT
TypeScript
Oct 19, 2026
dsh plugin --profile web add dsh-workbuddy-connect-functy通过 WorkBuddy API Key 或 CodeBuddy 登录令牌为 DeepSeek Harness 接入 CodeBuddy 模型
★ 22
↓ 113/wk
MIT
JavaScript
Aug 20, 2026
dsh plugin --profile web add dsh-llm-codebuddyby zlZayn
DSH 插件:把 WorkBuddy 桌面 App 里的模型接入 DeepSeek Harness,零配置直接用。(原生嵌入"设置-插件-插件配置")
★ 4
↓ 295/wk
MIT
TypeScript
Oct 3, 2026
dsh plugin --profile web add dsh-workbuddy-bridgeby a2d2-dev
Standalone WorkBuddy account and model provider plugin for DeepSeek Harness
★ 0
Apache-2.0
TypeScript
Oct 16, 2026
dsh plugin --profile web add dsh-workbuddy