dsh-plugin-verified-search
f0909172434
Verified current-source search workflow for DeepSeek Harness
PROJECT TOPICS
PROJECT README
DeepSeek Harness(DSH)插件:代码改动后,确认改动的行真的被测试覆盖到。
"测试通过"不等于"改动被验证":
插件做三件事:
结论状态:VERIFIED(通过)、PARTIAL(部分覆盖)、FAILED(测试失败)、STALE(结论过期)、UNVERIFIED(无有效证据)、NOT_APPLICABLE(无可验证内容)。
底线:没有覆盖证据,或证据与当前代码不一致,一律不给 VERIFIED。
以下步骤在 Windows 实测通过(macOS / Linux 命令相同)。
^22.19 || >=24)npm install -g pnpm@11.7.0)git clone --depth 1 https://gitee.com/mirrors/deepseek-harness.git DSH
# GitHub 直连:git clone --depth 1 https://github.com/deepseek-ai/deepseek-harness.git DSH
cd DSH
pnpm install
pnpm run build:lib
pnpm run build:web # 仅使用 headless 可跳过
cd <插件目录> # 如 E:\agent\dsh-changeproof
npm install
npm run build # 产物在 dist/
cd <DSH 目录>
pnpm dsh plugin --profile web add <插件目录>
# 需要命令行模式再加:pnpm dsh plugin --profile headless add <插件目录>
pnpm dsh --profile web --dump-config | grep changeproof
# 输出包含 "# == dsh-changeproof" 即安装成功
# 图形界面
pnpm dsh web # 访问 http://localhost:3080,设置中填入 API Key
# 命令行(需 DEEPSEEK_API_KEY 环境变量)
export DEEPSEEK_API_KEY=sk-xxxxxxxx
pnpm dsh --profile headless "修改 src/calc.ts 的折扣为 75 折并验证"
模型修改代码后会自动调用 changeproof_verify 验证(插件自带工作流规则,无需手动触发)。
pnpm dsh plugin --profile web remove dsh-changeproof
add 本地路径;pnpm dsh plugin add dsh-changeproof。cd <插件目录>
npm install && npm run build
node dist/host/cli.mjs plan --workspace <项目路径> # 仅分析
node dist/host/cli.mjs verify --workspace <项目路径> --yes # 执行测试
node dist/host/cli.mjs status --workspace <项目路径> # 结论是否过期
verify 不带 --yes 仅打印将执行的命令,确认后加 --yes 才执行。
项目根目录放置 .changeproof.yml:
schemaVersion: 1
packages:
- id: web
root: packages/web
languages: [typescript]
include: [packages/web/src/**/*.ts]
test:
adapter: vitest-istanbul # 支持 vitest / jest / pytest
argv: [pnpm, vitest, run, --coverage]
cwd: packages/web
timeoutMs: 120000
coverageFile: packages/web/coverage/coverage-final.json
thresholds: { changedLines: 1.0, minimumImpactConfidence: MEDIUM }
exclude: ["**/generated/**", "**/*.d.ts"]
字段说明见 docs/configuration.md。
src/host/adapters/dsh/ 单目录,其余代码零 DSH 依赖;同时提供独立 CLI,不装 DSH 也能用插件会执行用户配置的测试命令,因此对子进程执行做了显式加固(不是依赖"信任配置"):
spawn 执行,不经 shell,绝不拼接 shell 字符串;空参数、含 NUL 的参数一律拒绝&&、||、;、换行等)的 argv 条目;CP_ALLOW_SHELLY_ARGV=1 是显式的逃生开关,默认关闭taskkill /T /F、POSIX 用负进程组 SIGKILL,回收整棵进程树,不留孤儿进程代码位置:src/host/config/schema.ts(argv 校验)、src/host/execution/process-tree.ts(进程树终止)、src/host/adapters/dsh/subprocess-port.ts(受控执行)。
npm test # 163 项测试
npm run benchmark # 31 个基准用例(12 个"假绿"场景全部被识破)
npm run verify-package
src/shared/ 核心模型与状态机(不依赖 DSH)
src/host/ 工具、分析引擎、执行器、证据存储
src/host/adapters/dsh/ DSH 绑定层
src/client/ 界面组件(预留,未启用)
tests/ 测试
fixtures/ 测试用真实产物样本
docs/ 文档
https://github.com/Apageoflove/DSH-changeproof
MIT
针对 dsh.so 插件提交页 的静态扫描报告:
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。