DeepSeek Harness Hub
← 返回列表

模型故障转移层SISCHOI/daruma

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
需源码安装

Daruma 是 DeepSeek HarnessDSH的一个韧性层。它只为一件事存在:第三方订阅 API…

暂不能直接安装(需源码编译或环境不满足):缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。 · 最近上游提交 2026/9/17 · 已提供中文文档
综合分
30.7
GitHub 分
30.7
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add SISCHOI/daruma
缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装,改用 GitHub 源安装
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装

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

npm 包daruma @ 0.2.1
Node 引擎要求 >=22.0.0 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件缺少入口声明

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 10:26:45

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

daruma

七転八起,跌而不倒。

Daruma 是 DeepSeek Harness(DSH)的一个韧性层。它只为一件事存在:第三方订阅 API 会抽风。限流(429)、服务端错误(500)、网络抖动、模型抽风、风控拦截——其中任何一个都能把长任务掐断在半路。Daruma 捕捉到失败,切换到另一个模型/渠道,让会话替你继续跑下去。

工作原理

Daruma 落在 DSH 的两个原生扩展点上:

| 机制 | 负责方 | 作用 |
|---|---|---|
| 重试 | 内建 dsh-llm-retry | 同渠道,有界的指数退避 |
| 换渠道 | dsh-daruma | 重试放弃后,或遇到终态错误(QUOTA / INVALID_CREDENTIAL / CONTEXT_WINDOW_EXCEEDED)时,切到下一个渠道 |

决策引擎是纯函数:同样的失败历史 + 同样的渠道状态 → 同样的恢复计划。确定性、可测试、无 I/O。

包结构

| 包 | 职责 |
|---|---|
| dsh-daruma | DSH 插件——挂 agent/request-error + agent/request,进程内换渠道 |
| daruma-core | 纯域层——故障分类、熔断状态机、恢复决策引擎 |

快速开始

本地开发(link 工作区里的包)
dsh plugin --profile web add link:./packages/daruma-core link:./packages/dsh-daruma

发布之后:
dsh plugin --profile web add dsh-daruma

在 profile 的 cordis.patch.yml 里配置渠道链:

- id: dsh-daruma
name: dsh-daruma
config:
channels:
- { provider: mt, model: deepseek-v4-pro }
- { provider: mt, model: glm-5.2 }
failureBudget: 3
cooldownMs: 30000
giveUpBudget: 8       # 每个 agent 的故障转移预算

当 deepseek-v4-pro 开始回 429,daruma 熔断它、改用 glm-5.2 继续。渠道健康状态落到 ~/.dsh/daruma/channel-health.json,被熔断的渠道在重启后依然保持冷却;成功请求会自动闭合断路器(由下一个 agent/pre-step 推断)。每次切换/放弃决策同时追加到 ~/.dsh/daruma/failover-log.jsonl,可事后审计。

为什么叫 daruma

达摩不倒翁 源自一句谚语——七転八起(跌七次,起八次)。你的长任务也一样:被 429 击中,再爬起来。

当前状态

已实现并测试:99 个单测(daruma-core 28 + dsh-daruma 71),外加端到端换渠道实测(主渠道 mock 429 → 自动切换 → 任务完成)。见 docs/e2e-test.md 与 docs/research.md。

跨平台:Windows / Linux / macOS 均支持;CI 在三个系统上跑 typecheck、lint、单测、构建与 BOM 守卫,故障转移 e2e 在 Linux 与 macOS 实跑;本机 WSL 2(Ubuntu 24.04)另做了一遍全流程实测。

WSL 提醒:WSL 会追加 Windows 的 PATH,裸 dsh 可能命中 /mnt/c/... 下的 Windows 安装(用 Linux 的 node 加载它的 sharp/koffi 必然失败)。e2e:failover 会在启动前拒绝 /mnt/ 宿主并给出修复命令;请在发行版内装宿主:npm install --global @deepseek-ai/dsh@0.1.0-rc.7 && export PATH="$(npm prefix --global)/bin:$PATH"。

已发布到 npm:dsh-daruma / daruma-core。

开发

pnpm install
pnpm build
pnpm test
pnpm run start:test     # mock LLM + daruma-test web profile(任何系统,Ctrl+C 一起停)
pnpm run e2e:failover   # headless 故障转移验证(临时 DSH home,不碰 ~/.dsh)

License

MIT © 2026 SISCHOI

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群