前言¶
DeepSeek Harness(DSH)把 profile、bundle、patch 层和本地 link 依赖叠在一起运行。一旦启动异常或 Discussion 里难以描述现场,有用信息往往分散在用户目录:当前用的是哪个 profile、dsh.profile.bundles 是否还能解析、link: 是否仍指向有效路径、cordis.patch.yml 能否解析、磁盘与凭证文件权限是否正常。手工逐项排查费时,且容易在贴日志时泄露敏感内容。社区插件 dsh-doctor(维护者 Bliveren,分类 admin-security)提供一条命令式的只读体检,输出可脱敏的 Markdown 报告,便于粘贴到讨论区求助。
这是什么¶
dsh-doctor 是针对 DeepSeek Harness 安装环境的诊断插件:不读写凭证内容、不修改或删除任何文件,只汇总 profile、bundle、patch、本地链接、磁盘与 .credentials.yaml 存在性与权限等事实,并生成适合公开的 redacted 报告。
- 仓库:https://github.com/Bliveren/dsh-doctor
- 社区目录页:https://www.skillhub.cn/plugins/Bliveren/dsh-doctor
- 许可证:MIT(package.json 与 README 一致)
- 当前 package 版本:0.1.0;要求 Node.js
>=24.9,DSH>=0.2.0 <0.3.0
DSH 生态强调「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能:检查项一览¶
README 将检查项整理为下表(插件以当前 dsh 进程权限读取路径与进程信息,只报告不修复):
| Check | 说明 |
|---|---|
runtime/node |
运行中 Node.js 是否在支持范围内 |
profile/exists |
启动所用 profile 目录是否存在 |
profile/manifest |
manifest 是否声明可读的 dsh.profile.bundles 列表 |
bundle/<name> |
每个 bundle:内置或已安装、是否有 patch、engines.dsh 是否满足 |
profile/patch |
cordis.patch.yml 能否解析、是否存在重复 row id |
profile/local-links |
link:、file: 依赖是否仍指向有效目标 |
profile/backups |
遗留 .bak-* 与废弃的 <profile>.broken-* 副本 |
profile/lockfile |
profile 依赖是否被 lockfile 固定 |
home/exists、home/writable |
DSH home 是否存在、是否可写 |
home/disk |
DSH home 所在卷剩余空间 |
home/credentials |
.credentials.yaml 是否存在、权限是否足够 restrictive |
内置 bundle(如 @deepseek-ai/dsh-base、@deepseek-ai/dsh-web-app)从 dsh 安装解析而非 profile 的 node_modules;若 profile manifest 的 dependencies 未列出某 bundle,则视为 in-box,profile 侧缺少对应 node_modules 条目不算问题。
报告末尾有汇总行,例如 summary: 13 pass, 1 warn, 0 fail, 0 skip;单项为 PASS / WARN / FAIL 等,并附简要 Detail。
安装与启用¶
安装命令须带 profile 名称,与 README 原文一致:
dsh plugin --profile <name> add github:Bliveren/dsh-doctor
包为纯 ESM、无构建步骤;若用 git 源安装,无需 build-script allowlist。需要固定版本时,可 pin 到 commit:
dsh plugin --profile <name> add github:Bliveren/dsh-doctor#<sha>
安装后重启 DSH host,工具才会进入 registry。
典型用法¶
参数¶
profile:要检查的 profile 名。默认取 host 启动时的 profile(由 launcher 的 profile 目录参数或环境变量DSH_PROFILE推断)。
让智能体执行¶
重启 host 后,在对话中指示 agent(README 示例):
Run dsh_doctor and show me the report.
报告为 Markdown,含生成时间、平台、Node 版本、dsh home、profile 名与检查表;WARN 项可能列出备份文件名或 abandoned 的 desktop.broken-* 类目录及最后修改时间,便于对照清理策略,但插件本身不会替你删除。
适用场景与边界¶
适合谁
- 本地或服务器上 DSH 行为异常,需要快速确认「层叠配置 + 文件系统」是否自洽。
- 要在 GitHub Discussions 等场合描述环境,又需避免贴出凭证内容。
务必知晓
- 插件随当前 dsh 进程权限运行;安装前应自行审阅 仓库源码 与 MIT 许可证。
- 不读
.credentials.yaml的内容,只报告存在性与 permission bits。 - 不写、不修、不删;修复建议以 hint 形式出现,不会自动执行。
- PASS 不等于安装一定可用:不覆盖 provider 可达性、sandbox、其它插件内部逻辑等运行时行为。
开发侧:检查逻辑在 lib/checks.js,以路径与进程事实的纯函数实现,可用 pnpm install 与 pnpm test(node --test test/checks.test.mjs)在不启动 DSH 的情况下测新检查项;index.js 负责注册到 tool registry。
结尾¶
dsh-doctor 把分散在 DSH home 与 profile 里的安装事实收成一份只读、可公开粘贴的报告,适合 admin-security 场景下的自助排查与社区协作。需要安装说明与完整检查表时,以 GitHub README 为准:https://github.com/Bliveren/dsh-doctor;目录索引见 SkillHub 插件页。