deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:LIU20030725/dsh-skill-manager
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
DSH(DeepSeek Harness)技能分类管理器:自由分类 / 标签 / Collections(集合文件夹)+ 设置面板「技能管理」。 Manage and organize your agent skills by category, tags and collections in DeepSeek Harness.
把散乱的上百个 agent skills 按你的方式分类整理:给每个技能打上分类(category)和标签(tags),放进可点击的集合文件夹(Collections),在 DSH Web 的设置面板里一目了然地浏览、筛选、启用/停用。
metadata.category,分类可自由创建、随时修改;metadata.tags(逗号分隔,支持多个);disable-model-invocation(DSH 原生识别——停用后模型不再自动加载该技能),面板与命令均可操作;/ + 文件夹名 → 显示 📁 集合文件夹 → 点击弹出该文件夹的技能列表(带简介、可「← 返回」、保留滚动位置);/skillmgr ... 全部功能可在对话输入框直接使用,命令不经模型;dsh web)0.1.0-rc.6+本插件声明了 dsh.bundle manifest,可直接用 DSH 的命令安装:
dsh plugin --profile web add github:LIU20030725/dsh-skill-manager
手动方式(在 DSH 的 web profile 目录,通常是 ~/.dsh/profiles/web):
cd ~/.dsh/profiles/web
pnpm add github:LIU20030725/dsh-skill-manager
💡 若
github:LIU20030725/dsh-skill-manager依赖解析失败,可改用完整 git URL:pnpm add git+https://github.com/LIU20030725/dsh-skill-manager.git
编辑该目录下的 cordis.patch.yml,在顶层数组中加入:
- insert:
- id: skill-manager
name: 'dsh-skill-manager'
# 停止当前 dsh web 进程后重新启动(若有 dsh-web-service 守护会自动拉起)
dsh web
# 或
node <dsh安装路径>/node_modules/@deepseek-ai/dsh/lib/bin.js web
重启后刷新页面:设置 → 技能管理 面板出现;对话输入 /skillmgr help 可查看命令。
⚠️ 必须重启:客户端面板 bundle 与宿主命令注册均在 Web 启动时加载,配置热更新无法加载新插件。
disable-model-invocation);在对话输入框中输入 / 后继续输入集合(文件夹)名(如 /AI视频),下拉菜单「集合技能」分组会显示匹配的 📁 集合文件夹(含每个集合的技能数量;输入 / 时还会显示「未分类技能」文件夹)。
点击某个 📁 文件夹,会弹出一个小下拉页展示该集合内的所有技能(带简介):
/技能名,回车直接调用;适合技能很多、记不清每个技能用途时,按文件夹逐级浏览挑选。
/skillmgr help
/skillmgr catalog # 全部技能 + 集合(JSON)
/skillmgr get <name> # 单个技能详情(JSON)
/skillmgr set-category <name> <分类|-> # 设置分类;- 清除
/skillmgr set-tags <name> <tag1,tag2|-> # 设置标签;- 清除
/skillmgr set-enabled <name> <on|off> # 启用 / 停用
/skillmgr collection list # 列出集合
/skillmgr collection create <名称> # 新建集合
/skillmgr collection rename <旧名> <新名> # 重命名
/skillmgr collection delete <名称> # 删除集合
/skillmgr collection add <名称> <skill...> # 把技能加入集合
/skillmgr collection remove <名称> <skill...> # 从集合移除技能
/skillmgr collection clear <名称> # 清空集合
SKILL.md 的 YAML frontmatter(metadata: 下的 category / tags),不依赖嵌套目录,兼容所有 agent:---
name: ai-video-script
description: 生成 AI 视频脚本
metadata:
category: 视频创作
tags: [视频, 脚本]
---
disable-model-invocation: true(DSH 原生字段)。$DSH_HOME/skill-manager/collections.json(默认 ~/.dsh/skill-manager/collections.json)。可管理任何带磁盘路径、可写的技能(SKILL.md 所在文件),典型位置:
| 来源 | 路径 |
|---|---|
| 用户技能(本插件默认推荐) | ~/.agents/skills/<name>/SKILL.md、$DSH_HOME/skills/<name>/SKILL.md |
| 项目技能 | <项目根>/.dsh/skills、<项目根>/.agents/skills |
| DSH 内置技能 | node_modules/...(只读,面板中可见但写入会报错) |
cd ~/.dsh/profiles/web
pnpm remove dsh-skill-manager
# 并从 cordis.patch.yml 删除对应 insert 行,重启 dsh web
删除本插件不会删除技能文件里的分类/标签(它们属于技能本身),也不会删除 collections.json(如需清理手动删除该文件)。
lib/index.js):cordis 插件,inject: ['skills', 'commands'];通过 ctx.skills.list/get 以 scope: agent 读取会话可见的技能目录,读写 frontmatter 用 yaml,集合存本地 JSON;注册 skillmgr 斜杠命令。lib/client.js):按 DSH 客户端插件 bundle 规范(window.__ModuleLoader__.load)打包,注册 settings.section(「技能管理」);数据与操作通过 ctx.remote.commands.execute 调用宿主命令(与 DSH 自带 /permission 同一条可靠通道)。scripts/test-manual.mjs(mock ctx 自测命令逻辑)、scripts/make-catalog.mjs(生成本地技能目录报告)。Q: 面板显示 0 个技能? A: 确认插件已随 Web 重启加载;命令按当前会话 agent 的作用域查询技能,若在全新会话中先创建/打开一个会话再打开面板。
Q: 内置技能(node_modules 里的)不能打标签?
A: 是的,内置技能是只读的。请把要管理的技能放在 ~/.agents/skills 或 $DSH_HOME/skills。
Q: 停用技能后有什么效果?
A: 写入 disable-model-invocation: true,DSH 模型目录不再包含该技能(模型不会自动加载),但它仍保留在你的库中、仍可手动调用。
Q: 改了代码如何生效?
A: 把改动同步到 profile 的 node_modules/dsh-skill-manager(或重新 pnpm add file:<路径>)后重启 dsh web。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: skills。