前言¶
DeepSeek Harness(命令行名 dsh)把模型、工具、会话和界面都做成插件。官方仓库 deepseek-ai/deepseek-harness 的口号是「Everything is a Plugin」:技能也是普通文件,全局放在 ~/.dsh/skills,工作区放在该工作区的 .dsh/skills。DSH 靠文件监听发现它们,改文件就能立刻生效。
真正麻烦的是管理面。技能一多,就要在多个工作区之间复制、停用不需要的条目、核对同名副本到底属于哪一层。默认 Web 界面没有单独的技能设置页,只能自己翻目录、改文件名。社区插件 dsh-skill-viewer 做的就是这块:在设置里加一个「技能」分区,热启停、删除、新增,同时附带终端命令 dsh-skill。
本文按插件目录页、GitHub README / package.json / v0.7.0 Release 交叉核对后整理。社区目录 deepseek-harness-plugin.com 是独立站点,用来发现和安装社区插件,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。
这是什么¶
dsh-skill-viewer 是一款界面增强插件,由 GitHub 用户 Fishquito7 维护,仓库地址是 Fishquito7/dsh-skill-viewer。许可证为 MIT,主要语言是 JavaScript(源码为 TypeScript,编译产物 lib/*.js 随仓库提交)。package.json 里的版本号是 0.7.0,客户端声明 platform: web,通过 dsh.bundle 自动挂到 web profile,不必手改 cordis.patch.yml。
社区目录页 2026-08-15 收录该插件,分类为「界面增强」,简介是「Web 界面的技能管理工具:热启停、删除与新增」。截至 2026-08-17,GitHub 仓库星标为 50(目录页当时列出 32,以仓库页面为准)。
它解决的不是「让模型学会新技能」,而是让已经落在磁盘上的技能可浏览、可开关、可迁移。README 写得很清楚:插件并不自己解析技能,只是技能文件的管理界面;页面和 dsh-skill 的每次操作,最终都是对 SKILL.md 的改动,DSH 自带的文件监听器立刻发现变化,所以启停、增删、迁移都热生效,不必为这些操作再重启网关。
核心功能¶
卡片列表与热启停¶
设置页里,已安装的技能以卡片列出,可按名称搜索。点击卡片展开完整内容;启用 / 停用标签的样式与内置插件列表一致。进入页面会自动刷新。
停用不是改配置项,而是把 SKILL.md 改名为 SKILL.md.disabled;启用则改回去。随部署附带的 bundled 技能是只读的,不能停用或删除。
统一添加入口¶
v0.7.0 把「目录束 / 单文件」二级菜单收成一个「+」按钮:直接选 .md 或 .zip,也可以把文件、压缩包、技能文件夹拖进页面。插件会自动识别目录束、单文件或压缩包结构,不合规内容会被拒绝并提示原因。Release 说明里,zip 导入带 zip-slip 路径防护:唯一顶层文件夹加 SKILL.md 按目录束导入,平铺的 .md 则逐个导入。
工作区分栏¶
从 0.3.0 起,技能实体直接放在所属位置:全局在 ~/.dsh/skills,限定工作区在该工作区的 .dsh/skills。没有隐藏存储,也没有联接点。卸载插件后,这些技能仍是普通文件,DSH 照常发现它们。
页面「技能列表」下方有一条可横向滚动的工作区横栏(全局 + 各工作区),点击后只显示该工作区下的技能。
批量迁移¶
「+」号左侧是迁移按钮。对话框里手动选源工作区、目标工作区(可多选)和技能,再选择批量复制或移动。默认不勾选任何技能;逐个迁移,一项失败不影响其余。移动模式只允许单个目标。源工作区有分组时,可在技能列表上方按分组筛选(0.7.0)。改变所属位置是真实地把文件复制或移动到目标文件夹,先校验,失败则回滚。
技能分组¶
0.5.0 在工作区横栏下又加了一条分组横栏(全部 + 分组名)。「分组」按钮打开编辑器:新建 / 重命名 / 删除分组、选择工作区、命名并批量勾选成员。分组只写入插件自己的显示配置 ~/.dsh/skills/.system/skill-viewer/groups.json,不修改技能目录。
作用域精确操作¶
0.6.4 起,同名技能同时存在于全局与某工作区时,删除、启停、查看内容都按「名称 + 作用域」精确操作。页面各行独立展开、独立操作,不会碰到其它作用域里的副本;找不到指定作用域的条目会直接报错,不会回退成误操作。命令行同样需要用 --global / --project / --workspace 显式指定。
安装与启用¶
目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行即可:
dsh plugin add github:Fishquito7/dsh-skill-viewer
如需可复现安装,目录页要求固定 commit 哈希。当前 main 分支对应 v0.7.0 的提交是 55c16e4e4978a5e1cb96203e9ff89b6cf1078b94:
dsh plugin add github:Fishquito7/dsh-skill-viewer#55c16e4e4978a5e1cb96203e9ff89b6cf1078b94
维护者 README 把参考命令默认写在 --profile web 上,并推荐走发行版 tarball,避免 Git 安装时碰到 pnpm v11 对构建脚本的限制。当前最新发行版是 2026-08-16 发布的 v0.7.0:
dsh plugin --profile web add https://github.com/Fishquito7/dsh-skill-viewer/releases/download/v0.7.0/dsh-skill-viewer-0.7.0.tgz
也可以从 Git 安装到 web profile:
dsh plugin --profile web add github:Fishquito7/dsh-skill-viewer
若 Git 来源报 “git-hosted plugins build on install…”,按 README 把 pnpm 打印的 key 加到该 profile 目录 pnpm-workspace.yaml 的 allowBuilds 下再重跑。包声明了 dsh.bundle,安装后会自动挂载,无需编辑配置文件。
然后重启网关:
dsh-restart
重启后刷新页面:设置 → 「插件」下方即可看到「技能」。卸载用:
dsh plugin --profile web remove dsh-skill-viewer
使用其它 profile 时,把 --profile web 换成对应名称。目录页也提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。
典型用法¶
在网页里管理¶
- 打开 Web 界面,进入设置,找到「插件」下方的「技能」。
- 用工作区横栏切到全局或某个工作区;需要时再用分组横栏过滤。
- 点卡片查看完整
SKILL.md,用开关热启用或停用。 - 点「+」选择
.md/.zip,或把技能文件夹拖进页面。 - 需要把技能从全局拷到项目、或在工作区之间搬家时,用「+」左侧的迁移按钮,勾选源、目标和技能后再复制或移动。
用终端命令¶
随包附带 dsh-skill,同样热生效,网关关闭时也能用。README 中的示例命令如下(路径按仓库原文,示例是 Windows 风格):
dsh-skill list # 列出技能(含工作区:全局 / 工作区)
dsh-skill add <path> # 添加到全局(.md 文件、目录束或 .zip 压缩包)
dsh-skill add <path> --workspace D:\项目A # 直接添加到指定工作区
dsh-skill scope <name> --global # 迁移单个技能到全局
dsh-skill scope <name> --workspace D:\项目A # 迁移单个技能到指定工作区(--copy 复制)
dsh-skill migrate <name...|--all> --from <全局|路径> --to <全局|路径> [--copy] [--yes]
dsh-skill disable <name> # 停用
dsh-skill enable <name> # 启用
dsh-skill delete <name> # 删除(需确认)
dsh-skill update [--profile <name>] # 检查并更新插件(默认 web 配置)
CLI 只扫描当前目录锚定的项目根与用户根;管理其他工作区的技能请加 --cwd <工作区路径>。同名技能存在于多个作用域时,enable / disable / delete 必须加 --global / --project / --workspace,否则不会猜测该动哪一份。
适用场景与注意事项¶
适合已经在用 DSH Web UI、并且技能数量开始超过「翻几个文件夹就能记住」的人。典型情况包括:全局放一套常用技能、每个项目再放项目专属技能;需要在工作区之间复制或移动;想在终端里批量处理,而不只依赖网页。
使用前注意这几条:
- 插件以当前 dsh 进程权限运行,安装时可能执行代码。安装前应自己看源码和许可证。
- 它管理的是磁盘上的技能文件,不是另一套隐藏数据库。停用靠改名,迁移靠复制 / 移动。对
SKILL.md动手之前,确认自己改的是哪一个作用域。 - bundled 技能只读,页面和 CLI 都不能停用或删除。
- 分组信息只存在于插件自己的
groups.json,卸载插件后分组显示会一起消失,技能文件仍在。 - 客户端标明
platform: web。README 的参考命令默认--profile web,其它 profile 需自行改参数。 - 社区目录与官方 Harness 仓库不是同一件事。目录负责收录,仓库负责实现;两者都核对过再装更稳妥。
小结¶
dsh-skill-viewer 把 DeepSeek Harness 里本来靠翻目录完成的技能管理,收进设置页和一条 dsh-skill 命令。热启停、拖入添加、按工作区过滤、批量迁移,底层都是对 SKILL.md 的文件操作,卸载后技能仍是普通文件。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-skill-viewer/
GitHub:https://github.com/Fishquito7/dsh-skill-viewer