READMESource: main@2b5c800d
@local/market-verdict
DSH 市场层的判定闸门 + 安装进度。功能插件,不做人工审核。
它做什么
两件事,都是它能真做到的:
- 装前判定 —— 扫描 profile 里已装插件的 tool id 与 provided service 声明,找出能力级冲突; 顺带估算缓存成本(工具说明书段数)。
- 安装进度 —— 包装
pluginManager.installBundle,回放.plugin-manager/logs/<op>/pnpm.log的真实输出与进度。
它明确不做什么
| 不做 | 为什么 |
|---|---|
版本权威性判定(archive-authoritative / stale-disk 四态) |
打包桌面端从自己的 archive 提供 bundle,profiles/node_modules 可能是另一代;没有可信基准时任何版本结论都是噪音。宁可弃权,不报假冲突 |
| slot 冲突判定 | DSH 允许多个插件向同一 slot 注入不同 id;把 slot 名当冲突键在本机实测产出 5 条假阳性,全是正常注入 |
| 来源可信度 / 编辑推荐 / 安全评级 | 目录源的职责(@local/market-lens 已在做)。本插件没有人工审核能力,不假装有 |
| 写 patch 文件 | 依据 dsh-market#1043:插件开关把包内所有行写成 disabled: false 会覆盖 bundle 的 !!js 条件并导致安装回滚。治理插件自己成为故障源是荒谬的 |
接线位置
market-lens(雷达,只读)
│ installSpecFor(row) → spec
▼
market-verdict(判定 + 进度) ← 本插件
│ approve / warn / veto
▼
pluginManager.installBundle(官方安装引擎,dsh-plugin 也用它)
│
▼
.ui-market(资产仓,skin/pet/preset,独立泳道,不经本插件)
market-lens 与 dsh-plugin 两者都已 ctx.inject(['pluginManager']),
所以本插件包装的是同一个官方服务 —— 从任一入口发起的安装都会经过判定。
配置
cordis.patch.yml 里的 config:
| 键 | 默认 | 说明 |
|---|---|---|
mode |
warn |
off 只报告 / warn 报告并放行 / veto critical 时硬拦 |
costWarnSections |
8 |
工具+服务说明书段数超过此值才提示缓存成本 |
route |
/api/market-verdict |
host 侧 HTTP 端点,只接受回环 |
minPollMs |
150 |
进度轮询最小间隔,防 UI 打爆宿主 |
HTTP 端点(只接受 loopback + POST)
| op | 作用 |
|---|---|
active |
全部未终态安装任务(UI 刷新后可恢复队列) |
status + id |
单个任务快照 |
verdict + spec |
手动判定一个候选目标 |
模型工具
plugin_install_verdict { spec } —— 返回 decision / findings / cost。
UI
设置页新增一节「安装判定」(settings.section,order 61,排在 dsh-plugin 的 60 之后):
输入候选 spec 点判定,下方实时显示正在跑的安装进度条与 pnpm 原始输出。
能力边界(诚实声明)
- 静态扫描只认字面量:
defineTool({ name: 'x' })、.provide('x')。 拼接出来的名字(defineTool({ name: dynName }))不在视野内。 - 报告措辞因此是「声明于源码」,不是「运行期已注册」。
- 进度数值取自 pnpm
Progress:行解析(规则照抄 dsh-plugin,MIT);解析不到时按时间 单调兜底,封顶 90 —— 成功只能由installBundle真实返回才置 100。 - 跨包不 import dsh-plugin:它是独立 npm 包,未安装时会导致本插件崩溃。
验证
$node = 'D:\tools conection\node\node.exe'
& $node --check index.js
& $node --check lib/progress.js
& $node --check lib/collide.js
& $node --check client.js
期望:四个文件 exit 0。
真实数据自检(扫描本机 profile):
& $node (Join-Path $env:TEMP 'mv-collide-test2.mjs')
本机实测输出:scannedPackages: 106, tools: 3, provides: 1, collisions: 3,
3 条全部是真阳性(purge_status / purge_apply / purge_revert 被
Xsdsh-purge 与 Xsdsh-purge-next 同时声明)。
回滚
$env:ELECTRON_RUN_AS_NODE='1'
& 'D:\work tools\AI\DSH\DSH\DeepSeek Harness.exe' --expose-internals `
'D:\work tools\AI\DSH\DSH\resources\app.asar\dsh\node_modules\@deepseek-ai\dsh-desktop-host\lib\cli.js' `
plugin --profile desktop remove '@local/market-verdict'
或从 .plugin-manager\backups\verdict-<ts>\ 恢复 package.json / cordis.patch.yml。
No comments yet. Be the first to write one.