deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DSH Web GUI 的技能中心:侧边栏「技能中心」入口,两个 tab:
| Tab | 功能 |
|---|---|
| 技能 | 展示已加载的全部 skill,按来源分级(系统内置 / 项目 / 用户 / 自定义 / 运行时),支持启用/禁用(改写 disable-model-invocation)、删除(移入 .trash) |
| 创建 | 表单创建新 skill(用户级 ~/.dsh/skills 或项目级 .dsh/skills),生成标准 SKILL.md |
零构建:host 端与浏览器端都是手写 ESM,无 React、无打包工具、零运行时依赖。
host 端按 dsh-skill-filesystem 的官方根约定扫描文件系统(主数据),再用 ctx.skills 注册表补充(同名合并、bundled/runtime 等非文件系统来源并入):
| 级别(展示顺序) | 来源 | 含义 |
|---|---|---|
| 系统内置 | 注册表 bundled |
DSH 随附与插件提供的技能 |
| 项目技能(.dsh/skills) | 文件系统 | 仅当前项目(最近 .git 祖先) |
| 项目技能(.agents/skills) | 文件系统 | 仅当前项目 |
| 自定义目录 | 文件系统(customSkillDirs) |
配置的额外根 |
| 用户技能(~/.dsh/skills) | 文件系统 | 本机所有项目 |
| 用户技能(~/.agents/skills) | 文件系统 | 本机所有项目 |
| 运行时注册 | 注册表 runtime |
插件代码内嵌注册 |
为什么自己扫描文件系统?web profile 下
skill-filesystem提供方只挂载在 agent preset 的 scope 层,host 平面(本路由)从ctx.skills读不到项目/用户技能——所以文件系统扫描是主数据,注册表只作补充。frontmatter 用零依赖的轻量解析(支持|/>块标量折叠)。
.trash(可手动恢复)/api/dsh-skill-explorer/* 路由仅限 loopback 访问(同源校验,与 dsh-ssh 相同围栏)| 路由 | 方法 | 说明 |
|---|---|---|
/api/dsh-skill-explorer/list?cwd= |
GET | 分级技能列表 |
/api/dsh-skill-explorer/set-enabled |
POST | 启用/禁用(改写 frontmatter) |
/api/dsh-skill-explorer/create |
POST | 创建技能(user/project 根) |
/api/dsh-skill-explorer/delete |
POST | 删除(移入 .trash) |
# 方式一:npm 发布物(推荐)
dsh plugin --profile web add dsh-skill-explorer
# 方式二:GitHub 源码
git clone https://github.com/wingsky-1/dsh-skill-explorer.git
dsh plugin --profile web add link:<仓库路径>
# 重启一次 dsh web 生效
node --check lib/index.js lib/client.js
node test/smoke.mjs
curl "http://127.0.0.1:3080/api/dsh-skill-explorer/list" 返回 JSON。?cwd= 显式覆盖。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。