前言¶
DeepSeek Harness(DSH)把能力拆成技能,文件落在 DSH Home 的 skills/<技能名>/SKILL.md。技能一多,靠文件管理器或全文搜索很难快速回答:某个技能适合什么场景、输入输出是什么、用户怎么触发、模型何时会自动调用。社区目录页能发现插件,但日常排查仍需要对着本机目录逐个打开 Markdown。
下面介绍维护者 young-yyj 的客户端插件 dsh-skill-browser(仓库 young-yyj/dsh-skill-browser):在 DSH Web 左侧栏增加「技能面板」,只读扫描 <DSH_HOME>/skills/*/SKILL.md,不改动技能文件,也不读取项目目录或当前会话的技能注册表。
这是什么¶
DSH Skill Browser 是 DeepSeek Harness 的本地只读技能浏览插件,分类为客户端。它在 Web 界面提供与「插件」「上下文洞察」同级的一级侧栏入口,面板占满中央区域,不绑定具体会话。
插件只提供目录、详情与事件流三个 GET 端点;不安装、启用、禁用或删除技能,不修改任何 SKILL.md,不联网、不调用模型,数据全部来自本机 DSH Home。
核心功能¶
浏览与搜索¶
- 按技能名、简介、适用场景、来源和提供方搜索;在 Web 里按
/可直接聚焦顶部搜索框。 - 现有 41 个技能使用已审核的 10 类用途映射;未收录技能显示在「其他」,输入输出格式标为待确认。
- 按输出格式与输入材料筛选:输出支持任意/全部匹配,跨组条件同时满足,可排除中间/预览产物。
卡片与详情¶
- 卡片展示「适用于、输入、可选、输出」,区分主要交付、按需输出与中间产物;长描述在卡片内截断,完整信息在详情弹窗。
- 顶部概览条单行展示技能总数、分类数与待补元数据计数;点击待补元数据可筛出缺审核标注的技能。
- 点击卡片打开详情弹窗,五个页签(概览、触发方式、输入、输出、原文)无内容时自动隐藏;
Esc关闭弹窗并把焦点送回原卡片。 - 原文页以纯文本查看
SKILL.md(frontmatter 默认折叠),不渲染 Markdown/HTML,避免注入面;支持 YAML 多行简介、UTF-8 BOM 和 Windows 换行。
体验与安全边界¶
- 配色基于 DSH 主题令牌与稳定名称调色板,同一技能在卡片与详情中颜色一致,适配深色/浅色主题。
- 通过 SSE 接收目录变化通知并自动刷新;支持中英文、键盘操作、焦点循环与移动端布局。
- 请求校验回环连接、同源与浏览器来源;响应字段、正文长度和 SSE 连接数有上限。技能正文仅作为 React 文本及
<pre>显示,不执行其中的 HTML 或脚本。
环境要求¶
- Node.js 22 或更高版本(从源码构建时需要)。
- DeepSeek Harness
>=0.2.1-rc.4 <0.3.0-0;0.2.x 后续版本在兼容范围内一般无需换插件,0.3 起须重新验证。 - 推荐安装路径已在 Windows 上验证;使用前可先执行
dsh --version确认落在兼容范围。
许可证:MIT。
安装与启用¶
普通用户可从 GitHub Release 安装已构建的 .tgz,无需 Git 或自行编译。README 以 v0.1.11 为例,在 PowerShell 中下载到 DSH Home、校验 SHA256 并安装:
$ErrorActionPreference = 'Stop'
$version = '0.1.11'
$file = "dsh-skill-browser-$version.tgz"
$baseUrl = "https://github.com/young-yyj/dsh-skill-browser/releases/download/v$version"
$dshRoot = if ($env:DSH_HOME) { $env:DSH_HOME } else { Join-Path ([Environment]::GetFolderPath('UserProfile')) '.dsh' }
$archiveDir = Join-Path $dshRoot 'local-packages/dsh-skill-browser'
New-Item -ItemType Directory -Force -Path $archiveDir | Out-Null
$tarball = Join-Path $archiveDir $file
$checksumFile = Join-Path $archiveDir "SHA256SUMS-$version"
Invoke-WebRequest "$baseUrl/$file" -OutFile $tarball
Invoke-WebRequest "$baseUrl/SHA256SUMS" -OutFile $checksumFile
$checksums = [Text.Encoding]::UTF8.GetString([IO.File]::ReadAllBytes($checksumFile))
$match = [regex]::Match($checksums, '(?m)^([a-fA-F0-9]{64}) ' + [regex]::Escape($file) + '\r?$')
if (!$match.Success) { throw 'Checksum entry missing' }
if ((Get-FileHash -LiteralPath $tarball -Algorithm SHA256).Hash -ne $match.Groups[1].Value) { throw 'SHA256 mismatch; installation stopped' }
dsh plugin --profile web add $tarball --save-exact
if ($LASTEXITCODE -ne 0) { throw 'DSH installation failed' }
停止已运行的 DSH Web 后重新启动:
dsh web --no-open
启动后在左侧栏点击「技能面板」。本插件只展示你 DSH Home 中已有的技能 Markdown,不附带安装技能文件。
卸载:
dsh plugin --profile web remove dsh-skill-browser
然后重启 DSH Web;不会删除 skills/ 下的技能文件。
更新或回退时,改用目标 Release 的安装命令或对旧 .tgz 重新执行 dsh plugin --profile web add <路径> --save-exact,并重启。出现完整性检查失败时不要添加安全例外。
典型用法¶
找技能:打开 DSH Web,进入「技能面板」,在顶部搜索框输入技能名、简介、场景、来源或提供方。
缩小范围:在筛选区选择「想要什么输出」(如 PDF、Markdown,可多选并切换任意/全部匹配)、用途分类,或展开「限定输入材料」;要排查未审核条目时,点击概览条里的「待补元数据」计数。
看细节:点击卡片,在弹窗中切换页签——概览看输入输出摘要,触发方式看用户调用与模型自动调用说明,原文页查看 SKILL.md 纯文本。
无结果时界面会给出带结果数量的放宽条件建议,可逐项放宽筛选再试。
适用场景与注意¶
适合已经在 DSH Home 里积累了一批 SKILL.md、需要在 Web 里对照元数据与触发方式的使用者与插件作者。不适合期望在面板里一键安装/删除技能,或希望渲染技能正文 Markdown/HTML、加载技能目录内图片的场景——这些能力有意不提供。
DSH 生态是「一切皆插件」;SkillHub 目录页 是社区站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行查看仓库源码与 MIT 许可证;插件以当前 dsh 进程权限读取 DSH Home,仅面向本机回环访问设计。