ML 阶段闸门 lerqian883-alt/dsh-plugin-ml-phase-gate
DeepSeek Harness用检查与工件证据核验机器学习项目真实进度
32.9/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/10 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add lerqian883-alt/dsh-plugin-ml-phase-gate该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-plugin-ml-phase-gate(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/17 19:07:47
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 24 处,展示前 24 条)
- 读取本地文件lib/phases/loader.js:33
const entries = await readdir(join(projectRoot, 'work', 'checks'), { withFileTypes: true }); - 读取本地文件lib/phases/loader.js:48
return await readFile(join(projectRoot, filePath), 'utf8'); - 读取本地文件lib/phases/loader.js:69
defaultText = await readFile(defaultPath, 'utf8'); - 读取本地文件lib/project-root.js:16
return await realpath(pathValue); - 读取本地文件lib/project-root.js:22
return join(await realpath(parent), basename(resolved)); - 读取本地文件lib/project-root.js:56
await stat(candidate); - 读取本地文件lib/project-root.js:97
return isContained(await realpath(parent), await realpath(child)); - 读取本地文件lib/state/store.js:29
const text = await readFile(statePath(projectRoot, options), 'utf8'); - 写入本地文件lib/state/store.js:55
await mkdir(dir, { recursive: true }); - 写入本地文件lib/state/store.js:58
await writeFile(temp, `${JSON.stringify(normalized, null, 2)}\n`, 'utf8'); - 写入本地文件lib/state/store.js:61
await rename(temp, target); - 删除本地文件lib/state/store.js:64
await unlink(temp).catch(() => {}); - 写入本地文件lib/state/store.js:68
await copyFile(temp, target); - 删除本地文件lib/state/store.js:69
await unlink(temp).catch(() => {}); - 删除本地文件lib/state/store.js:71
await unlink(temp).catch(() => {}); - 读取本地文件lib/evidence/artifacts.js:48
const info = await stat(fullPath); - 读取本地文件lib/evidence/artifacts.js:50
const entries = await readdir(fullPath); - 读取本地文件lib/evidence/runner.js:51
const info = await stat(verifyPath); - 读取本地文件lib/state/lock.js:20
const text = await readFile(lockPath, 'utf8'); - 写入本地文件lib/state/lock.js:36
await mkdir(join(projectRoot, PROJECT_STATE_DIR), { recursive: true }); - 删除本地文件lib/state/lock.js:47
if (current?.token === token) await unlink(lockPath).catch(() => {}); - 删除本地文件lib/state/lock.js:67
await unlink(lockPath).catch(() => {}); - 执行外部命令固定命令lib/evidence/process.js:16
const killer = spawn('taskkill', ['/pid', String(child.pid), '/T', '/F'], { - 执行外部命令来自配置/变量lib/evidence/process.js:52
const child = spawn(command, args, {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 核验机器学习项目进度
- 阶段门禁
- 实时可视化
为 DeepSeek Harness 提供有证据支撑的机器学习阶段门禁、实时可视化和可移植的项目引导。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-ml-phase-gate
给 DeepSeek Harness 使用的机器学习阶段闸门插件:让「做到哪一步」不只靠模型自述,而是由检查、工件和项目状态共同证明。
这个插件解决什么问题
机器学习项目很容易出现一种情况:对话里说「已经完成数据处理」,但数据集切分、泄漏检查、指标文件或验证脚本并没有真正留下证据。
这个插件把 ML 项目拆成 M0–M8 阶段,并做三件事:
1. 读取项目当前声明的阶段;
2. 执行项目自己的验证脚本和检查;
3. 根据证据计算真实阶段、差距和下一出口。
结果会显示在 DSH 界面里:
M0 ✓ M1 ✓ M2 ⚠ M3 ··· M8 声明 M2 证据 M1 差距 1 下一步 M2
插件不会替你编写 ML 项目代码,也不会凭空判断阶段完成。
展开完整文档(README 剩余 1 节)
dsh-plugin-ml-phase-gate
给 DeepSeek Harness 使用的机器学习阶段闸门插件:让「做到哪一步」不只靠模型自述,而是由检查、工件和项目状态共同证明。
这个插件解决什么问题
机器学习项目很容易出现一种情况:对话里说「已经完成数据处理」,但数据集切分、泄漏检查、指标文件或验证脚本并没有真正留下证据。
这个插件把 ML 项目拆成 M0–M8 阶段,并做三件事:
1. 读取项目当前声明的阶段;
2. 执行项目自己的验证脚本和检查;
3. 根据证据计算真实阶段、差距和下一出口。
结果会显示在 DSH 界面里:
M0 ✓ M1 ✓ M2 ⚠ M3 ··· M8 声明 M2 证据 M1 差距 1 下一步 M2
插件不会替你编写 ML 项目代码,也不会凭空判断阶段完成。真正的判断依据来自:
.dsh-ml-phase/phases.yml
.dsh-ml-phase/state.json
work/verify.cmd / verify.ps1 / verify.mjs / verify.sh
work/checks/*
outputs/*
你需要准备什么
- Node.js 20 或更高版本
- 可以运行的 DSH profile,下面以 web 为例
- 一个想要接入阶段流程的 ML 项目目录
- 项目自己的验证脚本和检查脚本
Windows、macOS 和 Linux 都可以使用。
下载与安装
方式一:从 GitHub 源码安装(推荐用于当前阶段)
先下载源码:
git clone https://github.com/lerqian883-alt/dsh-plugin-ml-phase-gate.git
cd dsh-plugin-ml-phase-gate
然后把它链接到 DSH:
dsh plugin --profile web add link:"$PWD"
如果 PowerShell 对 $PWD 处理不符合预期,可以显式取当前目录:
$pluginPath = (Get-Location).Path
dsh plugin --profile web add link:"$pluginPath"
macOS 或 Linux 可以直接使用:
dsh plugin --profile web add link:"$PWD"
安装后确认 DSH 能看到插件:
dsh --profile web --dump-config
预期看到类似内容:
- id: ml-phase-gate
name: dsh-plugin-ml-phase-gate
config:
activationMode: auto
方式二:从 GitHub Release 安装
项目发布 Release 后,可以下载:
dsh-plugin-ml-phase-gate-<version>.tgz
dsh-plugin-ml-phase-gate-<version>.tgz.sha256
先校验文件:
Get-FileHash .\dsh-plugin-ml-phase-gate-0.1.0.tgz -Algorithm SHA256
Get-Content .\dsh-plugin-ml-phase-gate-0.1.0.tgz.sha256
再确认当前 DSH 支持的安装规格:
dsh plugin --help
如果你的 DSH 版本支持 file/npm 包规格,就使用对应命令安装 tarball。不同 DSH 版本的安装语法可能不同,不要直接照搬其他版本的参数。
方式三:以后发布到 npm 后安装
如果未来发布到 npm,用户应优先使用:
dsh plugin --profile web add dsh-plugin-ml-phase-gate
在此之前,以 GitHub 源码安装和 Release tarball 安装为准。
卸载
dsh plugin --profile web remove dsh-plugin-ml-phase-gate
初始化一个 ML 项目
插件安装成功后,还需要给 ML 项目创建阶段文件和验证入口。
推荐方式:使用 bootstrap
在插件仓库中执行:
$projectRoot = "D:\ML\my-project"
node scripts/bootstrap-project.mjs
--root $projectRoot
--template standard
也可以先进入目标项目,再省略 --root:
cd D:\ML\my-project
node C:\path\to\dsh-plugin-ml-phase-gate\scripts\bootstrap-project.mjs
--template standard
bootstrap 会在目标项目根目录下创建:
.dsh-ml-phase/
phases.yml
state.json
work/
verify.*
checks/
outputs/
可用参数:
--root <project> 指定 ML 项目根目录 --platform auto|windows|posix --template standard|node --force 覆盖管理路径中的冲突文件 --dry-run 只显示计划,不写文件生成的检查脚本是占位检查,默认不会伪造通过。你需要把它们替换成真正能证明阶段完成的检查。
手动创建最小结构
如果你不想使用 bootstrap,可以手动创建:
my-ml-project/
.dsh-ml-phase/
phases.yml
state.json
work/
verify.cmd
checks/
010-problem.ps1
011-data.ps1
outputs/
最小 state.json:
{
"version": 1,
"declared": "M0",
"history": []
}
验证入口如何选择
插件支持以下入口,未显式配置时按顺序自动发现:
work/verify.cmd
work/verify.ps1
work/verify.mjs
work/verify.sh
检查前缀通过参数传入:
verify.* -Only 010-
退出码约定:
0 = pass
1 = fail
2 = skip
其他 = error
Node 项目的验证入口可以写成:
const prefix = process.argv[process.argv.indexOf('-Only') + 1];
if (prefix !== '010-') process.exit(1);
// 在这里执行真实检查
process.exit(0);
启动 DSH
进入已经初始化过的 ML 项目:
cd D:\ML\my-project
启动 DSH:
dsh --profile web
或者只启动服务,不自动打开浏览器:
dsh --profile web --no-open --port 10045
插件会根据当前 session 的 cwd 向上寻找项目根,并读取:
.dsh-ml-phase/state.json
如果找不到项目状态,activationMode=auto 下不会显示阶段 Dock。
你会看到什么
输入框上方的阶段轨道
M0 ✓ M1 ✓ M2 ⚠ M3 ○ M4 ○ ...
轨道会显示:
- 当前声明阶段
- 已经由证据证明的阶段
- 两者之间的差距
- 下一步应该进入哪个阶段
- 数据是否可能过期
点击“展开阶段详情”可以看到下一阶段的检查、工件和常见坑。
右栏审计页
点击“打开审计”后,可以看到完整的:
- 当前状态摘要
- 下一出口
- M0–M8 阶段清单
- 历史迁移记录
常用工具
在 DSH 中可以让 Agent 使用:
ml_phase_status
查看当前声明、证据、差距和下一阶段。
ml_phase_phases
查看阶段定义和证据判定结果。
ml_phase_advance
在目标阶段检查和工件通过后推进阶段。
ml_phase_defer
记录人工覆盖原因,例如:
ml_phase_defer reason="等待外部数据确认"
配置
默认配置:
- id: ml-phase-gate
name: dsh-plugin-ml-phase-gate
config:
activationMode: auto
watchAutoRun: false
activationMode
| 模式 | 行为 |
| auto | 有阶段快照时显示;非 ML 项目安静降级 |
| always | 没有阶段快照时也显示“未开始” |
| off | Host 不注册能力,Dock/Audit 不显示 ML 内容 |
watchAutoRun
默认:
watchAutoRun: false
含义是文件变化只标记数据可能过期,不会自动执行项目验证脚本。
只有显式打开后,才会在文件变化时自动运行检查:
watchAutoRun: true
这会启动真实子进程。除非你明确知道项目脚本的行为,否则建议保持关闭。
项目结构说明
.dsh-ml-phase/
phases.yml 阶段定义和退出条件 state.json 当前声明阶段和迁移历史
work/
verify.* 项目统一的验证入口 checks/ 阶段检查脚本
outputs/ 阶段产物,例如报告、指标和数据摘要
phases.yml
phases.yml 定义阶段名称、检查前缀、工件和常见坑。
项目可以覆盖默认阶段,也可以追加自己的阶段。
state.json
state.json 保存声明阶段和历史记录。
不要在状态文件里写入:
evidenced
gap
next
这些字段由插件根据证据实时计算。
示例项目
仓库自带两个示例:
examples/minimal-ml-project/ Windows cmd/ps1 示例 examples/node-ml-project/ 跨平台 Node 示例
Node 示例可以直接验证:
cd examples\node-ml-project
node work\verify.mjs -Only 010-
常见问题
安装了插件,但看不到 ML 阶段 Dock
按顺序检查:
1. 当前 DSH session 是否在 ML 项目目录下启动。
2. 项目是否有 .dsh-ml-phase/state.json。
3. 当前配置是否为 activationMode: auto,并且已经有阶段快照。
4. 如果是空项目,可以先用 activationMode: always 观察“未开始”轨道。
提示找不到 verify command
插件会尝试:
work/verify.cmd
work/verify.ps1
work/verify.mjs
work/verify.sh
至少创建其中一个,或者显式配置:
verifyCommand: work/verify.mjs
阶段检查一直失败
检查脚本需要返回正确退出码:
0 = pass
1 = fail
2 = skip
其他 = error
也可以先运行:
ml_phase_status
查看具体 blocker 和原始输出。
不想自动执行项目脚本
保持默认:
watchAutoRun: false
需要完全停用运行时能力时,使用:
activationMode: off
需要彻底移除静态浏览器 bundle 时,在 DSH 插件管理器中禁用插件。
开发与验证
npm test
npm run pack:check
node scripts/smoke-install.mjs
npm run release:pack
npm run smoke:package
打包发布
npm run release:pack
会生成:
dsh-plugin-ml-phase-gate-<version>.tgz
dsh-plugin-ml-phase-gate-<version>.tgz.sha256
文档
- 架构与契约
- 冻结契约
- 实现逻辑
- P8 激活策略
- P9 发布与可插拔性
- P9 验收记录
- 贡献指南
- 安全说明预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
lerqian883-alt/dsh-plugin-ml-phase-gate
用检查与工件证据核验机器学习项目真实进度
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,359已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,514已汉化DSH
71.8
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,289已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 92,675已汉化DSH
71.2
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,522已汉化DSH
71