dsh-capability-ledger:DSH Profile 能力台账与安全体检

前言

DeepSeek Harness(DSH)的 profile 可以挂很多 bundle:skill、工具、MCP、客户端 UI。时间一长,常见问题是两类——不知道哪些 skill 和工具真的被加载或调用过,每轮请求里固定注入的工具 schema 又占多少 token;以及装了一堆插件之后,某次重启会不会因为某个 bundle 的 client 产物 materialize 失败、清单与 node_modules 不一致等问题,把整个 profile「全有或全无」地连坐崩掉。

社区里已有 skill 用量统计、记分板、雷达等先例,但 README 里作者对照后认为:有的要带一整条 @dsh-cc/* 依赖链,有的只计 skill 次数、不算工具与固定成本,有的只看最近时间窗。dsh-capability-ledger 由维护者 MrXiongBear 自研,归类为 admin-security,目标是一次只读扫描同时回答「能力台账」和「安全体检」两个问题,且不引入第三方运行依赖(仅用 node: 内置模块,React 由 shell 提供)。

这是什么

仓库:MrXiongBear/dsh-capability-ledger
目录页:skillhub.cn 插件条目

package.json 中的描述为:对某个 DSH profile,从持久化会话日志汇总真实的 skill/工具使用情况,统计每请求固定的 tool-schema 成本,并对已安装的每个 bundle 做只读安全审计。插件未发布到 npm;README 标明实验性、自用性质,且紧贴 DSH 宿主接缝,只在编写时的 DSH 版本上验证过,宿主升级后可能失效。

当前状态(README 标注 2026-10-31):桌面 profile 上的面板已摘掉(作者自定规则「没人看就停」),保留的是体检 CLI 与重启前三问的闸门脚本;源码与面板仍在,可按 README 三步重新挂载 bundle。

核心功能

能力台账(只读)

共用一次扫描,从本机会话日志与 profile 清单读取数据,不上传会话内容(隐私红线见下文)。

  • 技能加载:会话里 tool/call 且 name === 'skill',用 callId 与 tool/result 配对,且无错误才算成功;斜杠调用(user/message 且 data.source.kind === 'skill-invocation')单独计入并标 slashLoads。
  • 技能目录与截断:从 skill-catalog 事件取模型当时可见的描述,与 ctx.skills.list() 的完整描述对比,分 measured / suspected / none 三档。
  • 工具调用:按工具名累计调用与失败;固定成本分「历史请求实测注入均值」与「当前注册表下次请求总和」,二者勿混读;token 按 3.5 B/token 估算,仅用于横向比较。
  • 工具来源分档:plugin / mcp / builtin,用于区分可摘与不可动部分。
  • 统计窗口:按会话 header.createdAt 筛选全部历史、最近 90 天或 30 天;切窗口是换分母重算,不是过滤表格。

面板(重新挂载后)在 Settings 旁提供「台账」入口,含总览、技能台账、工具台账、安全体检、候选预检等页签;具体交互见 GitHub README「面板」一节。

安全体检(只读)

逻辑移植自作者工作区里的 audit-dsh-plugins.mjs,统一为 auditProfile(profileDir),供面板、测试与 CLI 共用。检查项包括:package.json 与 cordis.patch.yml、bundle 是否在 node_modules、宿主入口、用与 shell 相同契约执行 client 产物 materialize、非 optional 的 @deepseek-ai/* peer 影子副本、安装期脚本、明文凭据字面量(只报位置不回显)、profile 内 @deepseek-ai/* 副本与应用自带版本漂移等。红项表示当前或下次启动会连坐的问题;黄项为形态风险。不安装、不停用、不执行插件业务代码、不改 profile 文件。

命令行与 HTTP(只读)

重启前三问(任一为否则拒绝重启):manifest 是否完整登记、audit 是否有红项、gate-profile-boot.mjs 是否通过。

node <repo>\scripts\preflight-restart.mjs
node ...\scripts\preflight-restart.mjs --profile <dsh-home>\profiles\desktop --json <workspace>\reports\preflight.json --quiet

退出码:0 可重启;1 有红项需修复;2 环境错误未真正验证。作者已将此脚本接入 tools\dsh-restart-safe.ps1,并写入 <workspace>\reports\preflight-latest.json。

仅做体检:

node <repo>\scripts\audit-cli.mjs
node ...\scripts\audit-cli.mjs <dsh-home>\profiles\desktop --json <workspace>\reports\plugin-audit.json --quiet

有红项时退出码为 1,可接进重启前置检查。

HTTP 路由(bundle 加载后):GET /api/capability-ledger/report(?refresh=1、?window=all|<天数>)、GET /api/capability-ledger/audit、POST /api/capability-ledger/candidate、POST /api/capability-ledger/export。环境变量可覆盖报告目录与 profile:DSH_CAPABILITY_LEDGER_DIR、DSH_PROFILE_DIR。

安装与启用

README 强调:DSH profile 加载是全有或全无,一个插件 import 失败可能连坐整个 profile;安装前备份 profile 里的 package.json 与 cordis.patch.yml。本包没有 dsh plugin add 一类的一行安装命令,需本地 link 并登记 bundle。

  1. 备份 manifest 与 patch 文件。
  2. 在 profile 的 package.json 的 dependencies 增加 "dsh-capability-ledger": "link:<本仓库绝对路径>",并在 dsh.profile.bundles 中加入 dsh-capability-ledger;在 profile 目录执行 pnpm install --prefer-offline。
  3. 若只需 CLI/闸门、不挂面板,可只保留依赖与脚本路径;若恢复面板,README 还要求调整 gate-profile-boot.mjs 的 EXPECTED 后重启。

示例(路径按本机替换):

Copy-Item <dsh-home>\profiles\desktop\package.json <dsh-home>\profiles\desktop\package.json.bak -Force
Copy-Item <dsh-home>\profiles\desktop\cordis.patch.yml <dsh-home>\profiles\desktop\cordis.patch.yml.bak -Force
# dependencies 与 dsh.profile.bundles 登记后
pnpm install --prefer-offline
node <repo>\scripts\preflight-restart.mjs

卸载:从 dsh.profile.bundles 移除 → pnpm remove dsh-capability-ledger 或删除 junction → 重启;异常时用备份的两个文件还原。

运行要求:engines.node 为 >=22;许可证 MIT;当前版本 0.1.0。

典型用法

重启前闸门(与 safe restart 脚本一致):

node <repo>\scripts\preflight-restart.mjs --profile <dsh-home>\profiles\desktop --quiet
if ($LASTEXITCODE -ne 0) { Write-Error 'preflight 未通过,不要重启 DSH'; exit 1 }

日常体检:

node <repo>\scripts\audit-cli.mjs --quiet
if ($LASTEXITCODE -ne 0) { Write-Error '体检有红项,不要重启 DSH'; exit 1 }

候选包预检(面板「候选预检」或 POST /api/capability-ledger/candidate):输入 npm 包名时会通过 npm view --json 查元数据且不下 tarball、不执行包代码;本地目录路径则只扫目录。

快照默认落在作者工作区的 reports 目录(可通过环境变量改);「全部历史」刷新时间节流 60s 写 capability-ledger-latest.json 供 diff。

适用场景与注意

适合:自行维护较复杂 DSH profile、需要可检验的 skill/工具用量与 schema 成本口径、希望在重启前用同一套逻辑做只读审计的开发者。

务必注意:

  • 插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,并理解 README 中的实验性与 AI 生成说明。
  • 台账数据来自本机会话与 profile,不是精确账单;判定规则(如 skill 零使用、工具零调用)仅为提示,停用/卸载由人决定,红项旁提供可复制处置命令。
  • 候选预检的 npm 路径会联网查元数据,其余能力不上传会话内容。
  • 社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系;仓库 GitHub 星标以目录页为准为 0,不代表功能完备度。

结尾

dsh-capability-ledger 把「哪些能力真的用过、固定 schema 成本大概在哪」和「这批 bundle 现在能不能安全重启」收到一次只读扫描里;即使不挂 UI,体检 CLI 与 preflight-restart.mjs 仍可单独使用。进一步细节、口径表格与 API 以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/MrXiongBear/dsh-capability-ledger
  • GitHub:https://github.com/MrXiongBear/dsh-capability-ledger
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜