DSH Web GUI Skill Center panel: browse skills by source tier, enable/disable model calls, create and soft delete (move to .trash).
$ dsh plugin --profile web add github:zhu1090093659/dsh-web-ui/packages/dsh-skill-explorerRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
dsh-web-ui 是一套 DSH Web GUI 插件与皮肤全家桶,本条目收录的子包 dsh-skill-explorer 为 Web GUI 提供「技能中心」面板:按来源分级浏览已加载的全部 skill,启用/禁用模型调用,创建新技能,并把删除改为可恢复的回收站操作。
.dsh/skills、项目 .agents/skills、自定义目录、用户 ~/.dsh/skills、用户 ~/.agents/skills、运行时注册)disable-model-invocation 字段触发官方目录热刷新.trash 目录而非永久删除,便于误操作后恢复/api/dsh-skill-explorer/health 健康检查接口,便于宿主或自动化校验插件状态@deepseek-ai/cordis(cordis 插件框架)、@deepseek-ai/dsh-host-webserver(host 半区路由挂载)、@deepseek-ai/dsh-client-runtime + @deepseek-ai/dsh-client-locale(浏览器半区注入)、react@^18.2.0/api/dsh-skill-explorer/* 路由并读取 ctx.skills/ctx.sessions,client 半区通过 MutationObserver 把侧边栏入口注入原生 DOM,并用 React overlay 渲染技能中心面板src/index.ts(host)、src/client/index.ts(browser)DSH 用户已经积累了大量 skill 散落在多个目录(系统内置、项目根、用户根、自定义目录),手动管理困难;通过本插件可以在一个面板里集中查看、快速启用/禁用模型调用、按需创建或清理 skill,避免编辑 SKILL.md 文件出错。
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 0.1.0-rc.8+ | 依赖 @deepseek-ai/dsh-client-runtime / @deepseek-ai/dsh-host-webserver / @deepseek-ai/dsh-client-locale ^0.1.0-rc.8(package.json:39-58) |
| Node.js | ^22.19 || >=24 | packages/AGENTS.md:9 全局约定 |
| 平台 | 跨平台 | 仅使用 node:fs / node:os / node:http 等标准库,无原生依赖 |
| 原生模块 | 无 | bundle 纯 JS |
dsh plugin --profile web add github:zhu1090093659/dsh-web-ui/packages/dsh-skill-explorer
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
enabled | 布尔 | 插件总开关;设为 false 时所有路由不再注册 | true(未禁用即生效) |
customSkillDirs | 字符串数组 | 额外的自定义 skill 根目录,扫描后会作为「自定义目录」分组列出 | [] |
dshHome | 字符串 | 用户级 DSH 配置根目录覆盖;用于定位 ~/.dsh/skills | $DSH_HOME 环境变量,否则 ~/.dsh |
agentsHome | 字符串 | 用户级 agents 配置根目录覆盖;用于定位 ~/.agents/skills | $DSH_AGENTS_HOME 环境变量,否则 ~/.agents |
Q: 安装后侧边栏没有出现「技能中心」入口怎么办?
A: 需要重启 dsh web。bundle 注入在 DSH 启动阶段完成,运行时热加载不会重新渲染侧边栏;重启后入口会出现在「New Session」按钮与工作区浏览器之间。
Q: 为什么系统内置或运行时注册的 skill 没有启用/禁用开关和删除按钮?
A: 这两类 skill 来自 ctx.skills 注册表,没有可编辑的文件。插件只信任文件系统扫描产出的路径(src/routes.ts:165-169),所以面板上隐藏这些控件,对应的写路由收到请求也会返回 404。
Q: 删除按钮不见了,这个 skill 不能删吗?
A: 是的。通过符号链接挂载进来的 skill 不能删除——删除会把链接目标的 SKILL.md 移出原位,越出当前 skill 根(src/collect.ts:144-154)。面板会隐藏删除按钮,delete 路由收到请求也会以 400 拒绝。启用/禁用对这类 skill 仍然有效。
Q: 在手机或局域网其他设备上访问 DSH 时,技能中心能用吗?
A: 默认不能。所有路由只接受 loopback 请求或浏览器同源标记,未配对的局域网客户端会先收到 403 forbidden: loopback-only。如果同时安装了 dsh-remote-web-ui 并完成设备配对,配对设备的 cookie 是额外放行路径(src/access.ts:28-34)。
Q: 创建的 skill 立即生效吗?
A: 是的。官方 dsh-skill-filesystem 提供方会热扫描新文件,模型目录即时刷新,无需重启 DSH。注意新 skill 的内容会被作为指令注入模型上下文,请避免写入敏感信息(src/client/locales.ts:52)。
Q: 项目级 skill 和用户级 skill 有什么区别?
A: 项目级 skill(写入项目根目录下的 .dsh/skills/)仅当前项目可见,便于跟代码一起版本管理;用户级 skill(写入 ~/.dsh/skills/)本机所有项目共享,适合存放跨项目的通用指令。面板创建表单允许在这两个位置之间二选一。
Q: 创建 skill 时内容大小有限制吗?
A: 有。表单提交时正文内容(不含 frontmatter)超过 64KB 会被服务端拒绝,提示 content exceeds 64KB limit(src/routes.ts:217-220)。
入门 — 装好即用,无需阅读任何源码;想理解 frontmatter 改写或符号链接边界行为时再翻 README 安全模型与限制章节。
?cwd= 显式覆盖,项目根取该目录最近的 .git 祖先;如果工作区不在 git 仓库内,则项目级 skill 无法定位input 块;不支持的生僻 YAML 特性以官方 dsh-skill-filesystem 提供方的解析为准,技能中心展示可能与官方解析存在差异.md)在原子改写时会被替换为一个普通文件,符号链接本身不再保留,链接目标文件不受影响(README.md:96-100)