LCYLYM/dsh-plugin-compat-guardian
Repository-installed CI repair bot that keeps DeepSeek Harness plugins compatible with new DSH releases
项目介绍Project Overview
DSH Plugin Compatibility Guardian 是面向 DeepSeek Harness 插件仓库的兼容性维护插件。它自动检测新版 DSH,在隔离环境安装、打包并真实启动插件与 smoke 测试;旧基线通过而新版失败时,调用固定 repair DSH 修复,再由独立 verifier 复验并交付 PR。适合 DSH 破坏性更新后需持续确认插件可安装、可启动、可工作的仓库。注意:结论上限取决于插件 smoke 覆盖范围,且需先配置测试命令、Secret 与固定 workflow SHA。
DSH Plugin Compatibility Guardian is a maintenance plugin for DeepSeek Harness plugin repositories. It detects new DSH versions, installs and packs the plugin in an isolated environment, launches DSH, and runs plugin-specific smoke tests. When a trusted old baseline passes but a new candidate fails, it invokes a pinned repair DSH, then independently verifies the result and opens a PR. Use it to keep plugins compatible across breaking DSH updates. Caveat: compatibility claims are limited by smoke-test coverage, and setup requires tests, secrets, and a pinned workflow SHA.
请帮我了解并安装插件:【dsh-plugin-compat-guardian】【https://github.com/LCYLYM/dsh-plugin-compat-guardian】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:LCYLYM/dsh-plugin-compat-guardian
把 LCYLYM/dsh-plugin-compat-guardian 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
DSH Plugin Compatibility Guardian
让 DeepSeek Harness 插件自己跟上 DSH 更新。
自动发现新版 → 隔离安装与真实启动 → 不兼容时用 DSH 本身修复 → 独立复验 → 交付可合并 PR。
DeepSeek Harness 官方将当前阶段标为 developer preview,并明确提醒可能有破坏性变更。Guardian 只解决这一个问题:DSH 更新后,插件还能否安装、启动和工作?不能时能否自动修好?
正式安装:放进你的插件仓库
要求:目标插件仓库已有可运行的测试/构建命令,本机已登录 gh,工作树干净。
npm exec --yes \
--package=github:LCYLYM/dsh-plugin-compat-guardian#3de35600566ad1f4ff318e2de3d99de48b6ec72a \
-- dsh-plugin-compat-guardian onboard \
--guardian-ref LCYLYM/dsh-plugin-compat-guardian/.github/workflows/guardian.yml@3de35600566ad1f4ff318e2de3d99de48b6ec72a
这条命令会打开一个 onboarding PR,不会直接改默认分支。你只需首次审核三件事:
.dsh-compat.yml里的测试命令、额度和交付模式。compatibility/dsh-smoke.yml是否真的证明了你的插件能力。- 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 即可。
原仓库和 fork 测试仓库有什么不同?
| 插件原仓库 | 只用来试 Guardian 的 fork | |
|---|---|---|
| 目标 | 长期自动跟进 DSH latest |
证明一次真实 AI 维修闭环 |
| 触发 | 保留每 6 小时和手动检查 | 只保留 workflow_dispatch |
| Secret | 在原仓库设置 | fork 不会继承 Secret,必须在 fork 里单独设置 |
| 交付 | 默认产出可审核 PR | 测完合并测试 PR,然后停用 fork 中全部 workflow 并删 Secret |
如果插件对新 DSH 本来就兼容,Guardian 只跑确定性验证,不调 AI;这是正常的生产行为,不能拿来证明“AI 修过了”。要做真实维修演练,先建立旧 DSH 的 PASS 基线,再让新 DSH 触发可解释的兼容边界,最后必须看到非零模型 usage、代码 diff、独立 verifier 耗时和可合并 PR。
完整操作和本项目的四个公开 fork 案例见 fork 真实 AI 维修测试教程。
它实际做什么
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-merge 和 direct-push 是真能力,但不默认开启。如果修复改了测试、测试命令、安装脚本、依赖 major 或新增/删除依赖,无论仓库选什么都强制回到人工 PR。
额度、低价时段与防死循环
默认的每个“仓库 + 目标 DSH 版本”维修活动:
- 最多 1,000,000 token、10 CNY 估算、60 分钟活跃时间、2 轮模型尝试。
- 预算只剩 30% 时,默认给 repair DSH 发一次“尽快收敛”提醒,可关闭。
- 确定性测试立即跑;只有确实要调模型修代码时,才可选等待 DeepSeek 低价时段。
- 同一版本默认只自动维修一次。额度到顶后,只有提高限额,或把
.dsh-compat.lock.json中resetBudget从N改成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。已实测支持自定义 DeepSeekbase_url、Key 值、Key 环境变量引用和 model ID;Guardian 会直接 patch DSH 原生llm-deepseekadapter。 - GitHub Secret:默认只需建立
DEEPSEEK_API_KEY。.dsh-compat.yml的api_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 |
🧪 真实维修演练 | 旧版 PASS 基线、rc.2 repair DSH、独立复验与 PR |
dsh-web-ui fork |
🧪 真实维修演练 | 大型 pnpm monorepo 中的 Skill Explorer package |
dsh-ankh-guard fork |
🧪 真实维修演练 | 安装/组合/web 启动;不宣称 watchdog 行为已验收 |
better-sidebar-office fork |
🧪 真实维修演练 | 额外先修复上游已撤包和 Windows 本地 link,再建可复现基线 |
完整运行 ID、PR、实际 token/估算 CNY 和尚未绑定的可选外部渠道,见 最终验收报告。
社区 fork 的详细结果以 最终验收报告 中列出的最新 run/PR 为准。旧 run 中只跑了机械兼容检查或 onboarding 阻断的,不写成 AI 维修成功。
边界和风险
- 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
当前本地套件:79/79 通过;另有真实 DSH rc.2 自定义 route/故障端点探针。项目采用 MIT License。
nexu-io/open-design
freestylefly/awesome-gpt-image-2
anywhere-labs/dsh-desktop
walkinglabs/learn-harness-engineering
awesome-dsh-plugin/awesome-dsh-plugin
MemTensor/MemOS