Back to home@LCYLYM

dsh-plugin-compat-guardian

Repository-installed CI repair bot that keeps DeepSeek Harness plugins compatible with new DSH releases

Stars
1
Language
JavaScript
Created
Aug 22, 2026
Updated
Aug 22, 2026

Introduction

带 DeepSeek Harness 黑色鲸鱼标识的 DSH Plugin Compatibility Guardian Logo

DSH Plugin Compatibility Guardian

让 DeepSeek Harness 插件自己跟上 DSH 更新。

自动发现新版 → 隔离安装与真实启动 → 不兼容时用 DSH 本身修复 → 独立复验 → 交付可合并 PR。

English · 设计白皮书 · 真实验收

License Node.js DSH

DeepSeek Harness 官方将当前阶段标为 developer preview,并明确提醒可能有破坏性变更。Guardian 只解决这一个问题:DSH 更新后,插件还能否安装、启动和工作?不能时能否自动修好?

60 秒安装

要求:目标插件仓库已有可运行的测试/构建命令,本机已登录 gh,工作树干净。

npm exec --yes \
  --package=github:LCYLYM/dsh-plugin-compat-guardian#317e9858dedf2c16c24558b9d448ac7b24190b41 \
  -- dsh-plugin-compat-guardian onboard \
  --guardian-ref LCYLYM/dsh-plugin-compat-guardian/.github/workflows/guardian.yml@317e9858dedf2c16c24558b9d448ac7b24190b41

这条命令会打开一个 onboarding PR,不会直接改默认分支。你只需首次审核三件事:

  1. .dsh-compat.yml 里的测试命令、额度和交付模式。
  2. compatibility/dsh-smoke.yml 是否真的证明了你的插件能力。
  3. workflow 是否固定到完整 40 位 Guardian commit SHA。

然后在仓库设置中完成两项:

# 安全地提示输入,不把 key 写进文件或 shell 历史
gh secret set DEEPSEEK_API_KEY

# 允许 GitHub Actions 创建维修 PR;默认权限仍保持 read
gh api --method PUT repos/{owner}/{repo}/actions/permissions/workflow \
  -f default_workflow_permissions=read \
  -F can_approve_pull_request_reviews=true

不想让 Actions 建 PR 也可以。Guardian 会推送已验证分支并停在 WAITING_FOR_GITHUB_APPROVAL,你手工开 PR 即可。

它实际做什么

flowchart LR
  A[NPM latest / 安装图变化] --> B[无 Key 机械验证]
  B --> C{插件是否通过?}
  C -- 是 --> D[更新 verified lock]
  D --> E[PR / auto-merge / direct-push]
  C -- 否 --> F{已有可信基线?}
  F -- 否 --> G[ONBOARDING_BLOCKED<br/>不调用模型]
  F -- 是 --> H[固定 repair DSH<br/>DeepSeek 有额度修复]
  H --> I[原 smoke contract<br/>独立 verifier 复验]
  I --> E
  I -- 仍失败/额度到顶 --> J[FROZEN<br/>等待 resetBudget=N→Y]

无模型 verifier 会在临时目录中:

  • 冻结当次 @deepseek-ai/dsh 精确版本、NPM integrity 和完整安装图。
  • 按仓库原生 npm/pnpm/yarn 规则安装依赖并跑测试/构建。
  • npm pack 产出真实插件 tarball,安装到隔离 DSH_HOME
  • 检查 dump-config,真实启动 dsh web,执行插件专属 smoke,再卸载并确认无残留。
  • 仅当“旧基线 PASS、新候选 FAIL”时才允许模型维修。

一眼能看懂的报告

Actions Summary、Issue 和 PR 默认使用中文,先给结论和下一步,再折叠展开机械证据:

🛡️ DSH 插件兼容性报告
✅ 已通过

目标 DSH       @deepseek-ai/dsh@0.1.1-rc.2
插件           dsh-whale-report@0.1.4
检查           22 项通过 / 0 项失败
下一步       审核并合并 verified lock PR

报告只保存脱敏后的命令摘要、hash、状态、耗时和 usage。API Key、认证头、完整模型对话和本机私有路径不进报告。

交付模式

模式会发生什么默认
pull-request生成可审核 PR
auto-merge先建 PR,checks/分支规则通过后合并
direct-push通过复验后直接推默认分支

auto-mergedirect-push 是真能力,但不默认开启。如果修复改了测试、测试命令、安装脚本、依赖 major 或新增/删除依赖,无论仓库选什么都强制回到人工 PR。

额度、低价时段与防死循环

默认的每个“仓库 + 目标 DSH 版本”维修活动:

  • 最多 1,000,000 token、10 CNY 估算、60 分钟活跃时间、2 轮模型尝试。
  • 预算只剩 30% 时,默认给 repair DSH 发一次“尽快收敛”提醒,可关闭。
  • 确定性测试立即跑;只有确实要调模型修代码时,才可选等待 DeepSeek 低价时段。
  • 同一版本默认只自动维修一次。额度到顶后,只有提高限额,或把 .dsh-compat.lock.jsonresetBudgetN 改成 Y 并提交,才再维修一次;该次 Y 会立即消费回 N
  • 缺 Key、401/403、错误 model/base URL/provider 会产生可读的 BLOCKED_CONFIG 状态 PR;修正前 schedule 不会每 6 小时再调模型。
  • timeout/429/5xx 不循环烧钱:DSH provider 在同一模型回合内最多重试一次,仍失败则持久化为 BLOCKED_EXTERNAL
  • 同目标的状态分支或维修 PR 尚未合并时,后续 schedule 在调模型前就停下,不会重复维修。

CNY 是按 DSH 暴露的 usage 和仓库中的价格快照估算,不是 DeepSeek 账户账单级硬限额。绝对账户限额仍应在 provider 侧设置。

attempts_used 记的是 Guardian 维修轮次,不是底层 HTTP 请求数。一个 DSH 回合可能包含流式续请求、工具回合或 provider 内部的一次短重试。

默认与可配置项

  • 候选 DSH:跟踪 NPM latest,即使根版本号未变但内部安装图变了也会复测。
  • repair DSH:默认固定 0.1.1-rc.2,可改;每次 campaign 开始后锁定。
  • provider/model:默认 deepseek-official/deepseek-v4-flash-vision-exp。已实测支持自定义 DeepSeek base_url、Key 值、Key 环境变量引用和 model ID;Guardian 会直接 patch DSH 原生 llm-deepseek adapter。
  • GitHub Secret:默认只需建立 DEEPSEEK_API_KEY.dsh-compat.ymlapi_key_env 是 DSH 进程内的凭据引用,不是 GitHub Secret 的名字;仓库用别的 Secret 名时,只改薄 workflow 中 deepseek_api_key 的 Secret 映射。
  • 其他 provider:只填一个 provider 字符串不会自动安装 adapter。V1 只对 deepseek-official 路由做自动配置;其他 provider 必须已在所选 DSH profile 中注册,否则会停在 MODEL_PROVIDER_NOT_REGISTERED
  • DeepSeek 官方搜索:repair DSH 可按需使用,不要求每轮搜,不另设搜索次数上限。
  • monorepo:用 plugin.workspace 指向真实插件 package;仓库依赖安装和 gates 仍在 root 运行。
  • 通知:GitHub Summary/Issue 内置;email、Telegram 和 webhook 是可选窄网关。

完整示例见 .dsh-compat.example.yml

真实证据

样本结果当前证明的边界
dsh-attachments-guardian-fixture✅ 真实自动修复受控不兼容 → DSH 维修 → 独立复验 → PR,另有视觉 smoke/direct-push/auto-merge/NOOP 证据
dsh-whale-report fork / PR #1✅ PASS真实插件 API 断言、安装/启动/卸载
dsh-web-ui fork / PR #1✅ PASS大型 pnpm monorepo 中的 Skill Explorer package
dsh-ankh-guard fork / PR #1✅ PASS新于当前宿主的 peer cohort 仍能安装、组合、启动;不等于 watchdog 行为验收
better-sidebar-office fork🛑 ONBOARDING_BLOCKED历史 lock 依赖已从 NPM 撤下;没有可信基线,正确不调模型

完整运行 ID、PR、实际 token/估算 CNY 和尚未绑定的可选外部渠道,见 最终验收报告

三个社区 PR 是按第一次 run 给出的 WAITING_FOR_GITHUB_APPROVAL 回退路径手工打开;不写成 Actions 自动建 PR。机器人自动建 PR 的真实证据是 fixture PR #10/#19。

边界和风险

  • Guardian 是维修机器人,不是通用依赖升级、测试改写或代码整理机器人。
  • 插件专属 smoke 的证明力决定兼容结论的上限。客户端插件如果只断言了 web shell,就只能证明安装/启动,不能宣称 UI 行为已验收。
  • direct-push 能绕过人工 review;开启前应配合分支保护、CODEOWNERS 和仓库自带测试。
  • Secret 只进入可信默认分支上的 repair job,以及 contract 明确启用的无 Git 写权模型 smoke job。fork PR 和普通 PR 代码不会拿到 Key。
  • 本项目与 DeepSeek 官方无隶属关系。使用前请审核 workflow、固定 SHA 和仓库权限。

文档导航

开发

npm ci
npm run check

当前本地套件:71/71 通过;另有真实 DSH rc.2 自定义 route/故障端点探针。项目采用 MIT License。