把文件与接口读数合成一个总判定并列出盲区
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add laa1991/dsh-health该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/9/29) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
- 读取本地文件src/sources.js:73
const st = await stat(file); - 读取本地文件src/sources.js:118
await access(file, FS.F_OK); - 读取本地文件src/sources.js:133
const st = await stat(file); - 读取本地文件src/sources.js:145
const st = await stat(file); - 读取本地文件src/sources.js:163
const raw = await readFile(file, 'utf8'); - 读取本地文件src/sources.js:233
const entries = await readdir(dir, { withFileTypes: true }); - 发起网络请求src/sources.js:250
const res = await fetch(url, { signal: AbortSignal.timeout(timeoutMs) }); - 读取本地文件src/spec.js:154
const raw = await readFile(cfg.specPath, 'utf8');
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 声明式健康读数
- 合成总判定
- 列出盲区
DSH 声明式健康读数:声明从哪读、什么算健康、每个读数对应什么结论。只读。
README
由 DeepSeek 最新模型翻译生成dsh-health-readout
声明「去哪取数、什么算健康、坏了算哪一档」—— 得到一个总判定。
一个只读的 dsh 插件。它把已经存在的读数(文件、 JSON 端点、日志尾部)合成一个总判定,并逐条给出细节。它不写任何东西、不存状态、不成为新的真源。
{
"readings": [{
"id": "queue-depth",
"title": "队列深度在阈值以下",
"source": { "kind": "json-field", "path": "status.json", "field": "queueDepth" },
"healthy": { "op": "lt", "value": 8, "bad": "degraded" },
"blind": "只是单点采样:一个「排空又涨回」的队列与一个一直很闲的队列,在这里看起来一样。"
}]
}
三条规矩(写进 API,不是写在文档里)
每一条都来自一次真事故。在这里它们由数据形状和测试保证,而不是靠自觉:
1. 「量不到」绝不是 0。 读不到的源一律是 unknown —— 不是 ok、不是 0、不是 false。
unknown 永远会被印出来,而且它自己就能把总判定顶上去。
2. 每条判据都必须能开火。
展开完整文档(README 剩余 1 节)
dsh-health-readout
声明「去哪取数、什么算健康、坏了算哪一档」—— 得到一个总判定。
一个只读的 dsh 插件。它把已经存在的读数(文件、 JSON 端点、日志尾部)合成一个总判定,并逐条给出细节。它不写任何东西、不存状态、不成为新的真源。
{
"readings": [{
"id": "queue-depth",
"title": "队列深度在阈值以下",
"source": { "kind": "json-field", "path": "status.json", "field": "queueDepth" },
"healthy": { "op": "lt", "value": 8, "bad": "degraded" },
"blind": "只是单点采样:一个「排空又涨回」的队列与一个一直很闲的队列,在这里看起来一样。"
}]
}
三条规矩(写进 API,不是写在文档里)
每一条都来自一次真事故。在这里它们由数据形状和测试保证,而不是靠自觉:
1. 「量不到」绝不是 0。 读不到的源一律是 unknown —— 不是 ok、不是 0、不是 false。
unknown 永远会被印出来,而且它自己就能把总判定顶上去。
2. 每条判据都必须能开火。 selftest: true 会给每条判据喂一个它自己的反例,并报出任何「怎么都不红」的判据 —— 没人能证伪的判据是装饰品,而装饰品会被点名。
3. 每条读数必须写出它的盲区。 blind 是必填。没写盲区的读数,读起来就像没有盲区。
安装
dsh plugin --profile add dsh-health-readout # npm
dsh plugin --profile add ./dsh-health-readout-0.1.0.tgz
dsh plugin --profile add # 预构建:无构建步骤、无 postinstall
包里就是真正在跑的那些文件(不构建、无 prepare、零运行时依赖),所以从 git 安装不需要用户给构建授权。
配置
优先级:插件行的 config: → 环境变量 → 内置默认。
| 设置 | config 键 | 环境变量 | 默认 |
| 读数放哪 | dataDir | DSH_HEALTH_READOUT_DATA_DIR | ~/.dsh-health-readout |
| 声明文件 | specFile | DSH_HEALTH_READOUT_SPEC | readings.json(在 dataDir 内) |
| 只算哪些 | only | DSH_HEALTH_READOUT_ONLY | 全部 |
数据目录刻意不放在 dsh 平台目录里。 dsh 在版本更新时可能重建自己的目录;用户的读数不该待在一个能被重建掉的地方。把 dataDir 指到你自己控制的位置。
spec 里的相对路径相对 dataDir 解析;~ 与 ${dataDir} 会被展开。
spec
把 examples/readings.example.json 拷成 /readings.json 再改。
取数方式(source kind)
| kind | 读什么 | 必填字段 |
| file-age-seconds | 文件最后写入距今多少秒 | path |
| file-size | 字节数 | path |
| file-exists | 路径在不在(false 是「知道」,不是「不知道」) | path |
| json-field | JSON 文件里某个点号路径 | path、field |
| jsonl-last-field | JSONL 最后一条可解析行里的点号路径(只读尾部) | path、field、maxBytes? |
| text-count | 文件尾部 maxBytes 内的正则命中数 | path、pattern、maxBytes?、flags? |
| dir-count | 目录里的文件数,可按后缀过滤 | path、suffix? |
| http-json-field | JSON 端点里的点号路径(必定带超时) | url、field、timeoutMs? |
算子(healthy.op):lt lte gt gte eq neq between matches exists absent。
档位(healthy.bad,默认 degraded),按严重度排序,最差的那条决定总判定:
ok < notice < unknown < degraded < broken
unknown 故意排在 notice 之上:一个看不全世界的读数,不该报出一个自信的 ok。
工具
health_readout —— 只读一次调用,两个可选参数:only(逗号分隔的 id)、selftest(顺带证明每条判据都能红)。
渲染出来的正文逐条列出:值、档位、原因、盲区;读不到的那些单独再报一遍("Could not read" is not "fine".)。
测试
node --test test/criteria.test.mjs test/sources.test.mjs test/spec.test.mjs test/readout.test.mjs
43 条,不用测试框架、不依赖盘上夹具。两条最值得知道的臂:删掉被观测的文件,总判定必须变 unknown(不许留在 ok);以及一条故意不可伪造的判据(matches: ".")必须被 selftest 点出来*。
限制(写出来,不藏起来)
- 没有跨行折叠。 一条读数就是「一个地方的、一个值」。想读「还有几条没结」需要把多行 JSONL 折成一个状态 —— 那是查询,不是读数。把 spec 指向一份已经算好这个数的派生文件,把折叠留在生产它的那个东西里:本插件做的是合成读数,不变成查询引擎。
- 没有历史。 每条读数都是当下的一次采样;趋势需要记录器,而记录器就是写方 —— 不在只读件的范围内。
- 没有 changed-within 算子。 跟上一次比需要状态;同上。
- unknown 按设计是吵的。 文件不在就会顶判定。这是刻意的取舍:对盲区沉默,比对一个盲区大声更贵。
- spec 能读 dsh 进程能读的任何文件。 信任模型就是这样:spec 是用户自己写的,路径是用户自己的。
- 只有宿主半。 没有浏览器面、没有设置界面;判定以工具结果的形式到达模型。
许可
MIT。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
laa1991/dsh-health
把文件与接口读数合成一个总判定并列出盲区
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9