🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

契约违规夹具 imtokenxinluo/dsh-fixture-bad-plugin

DeepSeek Harness
imtokenxinluo32 天前有提交已提供中文文档扫描:未发现敏感能力

故意违规的插件,用来验证契约检查能否抓出问题

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add imtokenxinluo/dsh-fixture-bad-plugin
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · other
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 反向测试夹具
  • 故意违规插件
  • 验证契约检查

DSH 插件契约检查的反向测试夹具(故意做坏的插件,别当正经插件用)

README

由 DeepSeek 最新模型翻译生成
dsh-fixture-bad-plugin(测试夹具,不要当真插件用) 用途:验证 dsh-contract-check 能不能在加载时发现违规的 render 契约。 它故意注册了两个工具: | 工具 | 行为 | 期望判定 | | fixture_bad_render | render 返回裸字符串(就是当年 dsh-ssh-ops 那个 bug)| 🔴 violation → 角标变黄 | | fixture_unknown_render | render 委托给辅助函数,静态判不出形态 | 见下(初版预期写错了)| ✅ 实机验证结果(2026-09-20,第一次真正走通黄灯) 颜色: yellow 状态条: 无耗 · 检查 23 个插件 · 违规 2 · 不可判定 1 [violation] fixture_bad_render 返回字符串,违反 render(): ContentBlock[] 契约 [violation] fixture_unknown_render 实测返回对象(不是数组),违反契约(实测) [unknown] doublecheck_report 静态判不准,实测又抛异常 两点值得记下来: 1. fixture_unknown_render 被判成 violation 而不是 unknown,这是对的。
展开完整文档(README 剩余 1 节)
dsh-fixture-bad-plugin(测试夹具,不要当真插件用)

用途:验证 dsh-contract-check 能不能在加载时发现违规的 render 契约。

它故意注册了两个工具:

| 工具 | 行为 | 期望判定 |
| fixture_bad_render | render 返回裸字符串(就是当年 dsh-ssh-ops 那个 bug)| 🔴 violation → 角标变黄 |
| fixture_unknown_render | render 委托给辅助函数,静态判不出形态 | 见下(初版预期写错了)|

✅ 实机验证结果(2026-09-20,第一次真正走通黄灯)

颜色: yellow 状态条: 无耗 · 检查 23 个插件 · 违规 2 · 不可判定 1 [violation] fixture_bad_render 返回字符串,违反 render(): ContentBlock[] 契约 [violation] fixture_unknown_render 实测返回对象(不是数组),违反契约(实测) [unknown] doublecheck_report 静态判不准,实测又抛异常

两点值得记下来:

1. fixture_unknown_render 被判成 violation 而不是 unknown,这是对的。 我原本以为「静态判不准 = unknown」,但实测探针把它抓出来了:它的 render 返回传进去的值,而它声明的输出 schema 是对象 → 真调用时返回的一定不是数组。
这正好说明实测探针的价值:静态看不透的东西,跑一次就清楚了。
2. doublecheck_report 仍是 unknown:实测时 render 抛了 Cannot read properties of null (reading 'length') —— 假数据不合形状,归 unknown (抛异常绝不判违规,这是零误报原则的一部分)。

⚠️ 先读:这个夹具造成过一次事故(2026-09-19)

症状:把它加进 profile 的 bundles 后,DSH 起不来 —— 整个插件树加载失败。

根因:上一版源码里有 import { defineTool } from "@deepseek-ai/dsh-tools",而夹具目录没有 node_modules。pnpm 的 link: 让 Node 按真实路径解析 → 找不到包 → ERR_MODULE_NOT_FOUND → 插件树整体失败。

两个教训:

1. 「扫源码 OK」≠「能加载」。离线扫描只看文件存不存在、形态对不对, 完全不涉及模块解析 —— 所以它当时报了 ok,然后 DSH 挂了。
2. 把测试夹具装进运行环境的 profile 之前,必须先证明它能被加载。

已修:夹具改成零外部 import(直接用裸定义对象调 ctx.tools.register()),从根上不可能再因解析失败拖垮启动。

已加闸门:scripts/preflight.mjs —— 装之前必须先跑;它自己也有自测(selftest.mjs)。

⚠️ 第二个坑:pnpm install 不会补建新加的 link: 依赖

2026-09-20 实测:把夹具加进 dependencies(link: 形式)后跑 pnpm install,它回一句 "Already up to date" 就结束了 —— lockfile 更新了,但 node_modules 里的链接没建。
此时直接重启,DSH 解析不到这个包,又是「整个插件树起不来」(跟上次症状一样,根因不同)。

pnpm install --force 也一样跳过。

判据(装完必查):

Test-Path 'D:\tool\dsh_data\profiles\web\node_modules\dsh-fixture-bad-plugin'

补建(就是 pnpm 给其它 link: 依赖建的那种 Junction):

cd D:\tool\dsh_data\profiles\web
New-Item -ItemType Junction -Path node_modules\dsh-fixture-bad-plugin
-Target D:\tool\claude_code\dsh-fixture-bad-plugin

使用流程(顺序不能换)

① 预检:证明它能被加载(不通过就别装)
node D:\tool\claude_code\dsh-fixture-bad-plugin\scripts\preflight.mjs

② 装进 profile(脚本会备份配置、写完校验)
node D:\tool\claude_code\dsh-fixture-bad-plugin\scripts\profile-link.mjs --apply

③ 确认 node_modules 里有链接(见上面那个 pnpm 坑;没有就手工建 Junction) Test-Path D:\tool\dsh_data\profiles\web\node_modules\dsh-fixture-bad-plugin

④ 重启 DSH(你重启,不是我)

期望看到

- 会话头部圆点变 🟡 黄
- 悬停状态条出现 违规 2
- /contract-check/status 的 findings 里点名 fixture_bad_render
- 绿灯 → 黄灯的颜色变化就是这条链路走通的证据

⏹ 验证完立刻移除

一键(双击即可,不需要 AI 在场):

D:\tool\claude_code\dsh-fixture-bad-plugin\紧急回滚.bat

或命令行:

node D:\tool\claude_code\dsh-fixture-bad-plugin\scripts\profile-link.mjs --remove
然后重启 DSH

卸载脚本删链接时用的是 rmdir 而不是递归删除:在 Junction 上递归删除会跟进目标目录,把夹具源码本身删光。
(2026-09-20 卸完已核对:夹具源文件全部完好。)

上一次就是忘在这一步:夹具留在配置档里,于是任何原因导致的加载失败都会先被怀疑到它头上(而且它确实就是凶手)。
预览分享卡片长什么样 ↓imtokenxinluo/dsh-fixture-bad-plugin
分享 · DeepSeek Harness Hub
imtokenxinluo/dsh-fixture-bad-plugin

故意违规的插件,用来验证契约检查能否抓出问题

回到顶部