🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

技能管理器 MichengAI/dsh-skills-manager

DeepSeek Harnessv1.2.22
MichengAI0 天前有提交已提供中文文档扫描:含敏感能力

DSH Skills Manager — 在 DeepSeek Harness 中统一加载并安全管理本机智能体技能 · 在 DSH 中加载并安全管理本机智能体技能

67/100
综合分
448
GitHub 星标
92,748
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @michengai/dsh-skills-manager
npm 源 · @michengai/dsh-skills-manager 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功(非静态推断);本次验证针对插件 v1.2.21,当前版本为 v1.2.22
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@michengai/dsh-skills-manager @ 1.2.22
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 17:39:08

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 35 处,展示前 35 条)
  • 读取本地文件
    lib/index.js:53
    const current = await stat(file).catch(() => null);
  • 删除本地文件
    lib/index.js:55
    await rm(`${file}.1`, { force: true });
  • 写入本地文件
    lib/index.js:56
    await rename(file, `${file}.1`);
  • 写入本地文件
    lib/index.js:58
    await appendFile(file, `${JSON.stringify({ ts: ( new Date()).toISOString(), event, detail })}
  • 读取本地文件
    lib/index.js:326
    const realRoot = await realpath(root.path).catch(() => root.path);
  • 发起网络请求
    lib/index.js:743
    const response = await route.fetch(fetchReq);
  • 写入剪贴板
    lib/client.js:17
    .dssm-repo-row .dssm-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:650;color:var(--dsw-alias-label-primary
  • 请求外部主机www.w3.org
    lib/client.js:25
    `;function Wo(){if(document.getElementById(qr)!==null)return;let a=document.createElement("style");a.id=qr,a.textContent=Vo,(document.head??document.d
  • 发起网络请求
    lib/client.js:25
    `;function Wo(){if(document.getElementById(qr)!==null)return;let a=document.createElement("style");a.id=qr,a.textContent=Vo,(document.head??document.d
  • 写入剪贴板
    lib/client.js:25
    `;function Wo(){if(document.getElementById(qr)!==null)return;let a=document.createElement("style");a.id=qr,a.textContent=Vo,(document.head??document.d
  • 发起网络请求
    lib/client.js:59
    `;function Mr(a,t,d,c){var p=a(t,c);return typeof p=="string"&&p!==t?p:d}function J(a,t){if(t instanceof Error&&!t.code)return t.message;if(t&&typeof
  • 写入剪贴板
    lib/client.js:59
    `;function Mr(a,t,d,c){var p=a(t,c);return typeof p=="string"&&p!==t?p:d}function J(a,t){if(t instanceof Error&&!t.code)return t.message;if(t&&typeof
  • 读取本地文件
    lib/core.js:624
    raw = readFileSync(file, "utf8");
  • 读取本地文件
    lib/plugin-updater.js:64
    if (isDshCliEntry(entry, JSON.parse(readFileSync(manifestPath, "utf8")), directory)) return entry;
  • 请求外部主机registry.npmjs.org
    lib/plugin-updater.js:187
    const response = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`, { signal: AbortSignal.timeout(8e3) });
  • 发起网络请求
    lib/plugin-updater.js:187
    const response = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`, { signal: AbortSignal.timeout(8e3) });
  • 读取本地文件
    lib/plugin-updater.js:198
    const value = JSON.parse(await readFile(manifestUrl, "utf8"));
  • 读取本地文件
    lib/plugin-updater.js:332
    const current = existsSync(file) ? await readFile(file, "utf8") : "packages:\n - .\n";
  • 读取本地文件
    lib/plugin-updater.js:332
    const current = existsSync(file) ? await readFile(file, "utf8") : "packages:\n - .\n";
  • 写入本地文件
    lib/plugin-updater.js:338
    await writeFile(tmp, next, "utf8");
  • 写入本地文件
    lib/plugin-updater.js:340
    await rename(tmp, file);
  • 删除本地文件
    lib/plugin-updater.js:345
    await unlink(tmp).catch(() => {
  • 删除本地文件
    lib/plugin-updater.js:350
    await unlink(backup).catch(() => {
  • 写入本地文件
    lib/plugin-updater.js:352
    await rename(file, backup);
  • 写入本地文件
    lib/plugin-updater.js:354
    await rename(tmp, file);
  • 写入本地文件
    lib/plugin-updater.js:356
    await rename(backup, file).catch(() => {
  • 删除本地文件
    lib/plugin-updater.js:358
    await unlink(tmp).catch(() => {
  • 删除本地文件
    lib/plugin-updater.js:362
    await unlink(backup).catch(() => {
  • 读取本地文件
    lib/plugin-updater.js:367
    const current = existsSync(file) ? await readFile(file, "utf8") : "packages:\n - .\n";
  • 读取本地文件
    lib/plugin-updater.js:367
    const current = existsSync(file) ? await readFile(file, "utf8") : "packages:\n - .\n";
  • 执行外部命令来自配置/变量
    lib/plugin-updater.js:374
    const child = spawn(process.execPath, [target.cliEntry, "plugin", "--profile", target.profileName, "add", "--config.minimumReleaseAge=0", packageSpec,
  • 执行外部命令来自配置/变量
    lib/plugin-updater.js:415
    const child = spawn(manager.command, [...manager.args, "add", "--config.minimumReleaseAge=0", packageSpec, "--registry=https://registry.npmjs.org/"],
  • 发起网络请求
    lib/skills-sh-catalog.js:23
    response = await fetch(url, {
  • 执行外部命令固定命令
    lib/repository-git.js:171
    spawn("taskkill", ["/F", "/T", "/PID", String(child.pid)], { stdio: "ignore" });
  • 执行外部命令来自配置/变量
    lib/repository-git.js:189
    const child = spawn(
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:www.w3.org、registry.npmjs.org

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-scope@deepseek-ai/dsh-session@deepseek-ai/dsh-skill@deepseek-ai/dsh-tools@deepseek-ai/dsh-web-app@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

6 张 · 点击查看大图

功能亮点

  • 统一加载本机技能
  • 安全管理本机技能
v1.2.262026-11-01
· 中文说明 · 优化移动端与窄屏幕小视口下的响应式布局适配: - 二级分段控件(全局/项目/发现/回收站)禁用单字折行,解决极窄宽度下文字生硬换行(如“全局技/能”)的问题; - 统计概览卡片在窄屏下升级为 2×2 网格布局,节省 50% 垂直高度,提升首屏空间利用率; - 筛选与搜索工具栏在窄屏下支持流式自适应折行,搜索框完整铺满第二行,彻底消除搜索框右半侧被容器截断的溢出缺陷。 --- · English · Improve responsive layout on mobile and narrow viewports: - Prevent ugly single-character wrapping on segmented view tabs (Global/Project/Repositories/Trash); - Upgrade summary stats cards into a 2x2 grid on narrow containers, saving 50% vertical height and improving above-the-fold space utilization; - Support responsive wrapping for filter toolbar on narrow screens, letting the search input span the full second row to completely eliminate clipping overflow.
v1.2.252026-11-01
· 中文说明 · 支持任意公开 Git 托管平台与代理镜像仓库(Issue #74): - 仓库来源输入框全面开放支持任意合法的 Git HTTPS / HTTP 仓库地址,包括 GitLab、Gitee、GitCode、Codeup、自建 Git 服务以及 GitHub 代理加速镜像(如 gh-proxy.com); - 自动识别仓库平台类型并在列表中展示对应的品牌图标(GitHub、GitLab、Gitee 等,其他自建/未知平台显示通用 Git 图标); - 仓库添加前增加远程连通性检测,遇到无法访问的地址时提前给出明确提示,避免无效添加; - 优化超大体积技能仓库下载与检出支持,消除大型仓库检出过程中的容量报错; - 全面接入宿主官方原生刷新与加载中动画图标,解决刷新按钮点击后图标变形与双层重叠问题,视觉体验与 DSH 保持完全一致。 --- · English · Support arbitrary public Git hosting platforms and proxy mirrors (Issue #74): - Allow adding any valid Git HTTPS / HTTP repository URLs, including GitLab, Gitee, GitCode, Codeup, self-hosted Git services, and GitHub acceleration proxy mirrors (such as gh-proxy.com); - Automatically detect the repository platform and display brand icons (GitHub, GitLab, Gitee, and a generic Git icon for self-hosted / other servers); - Add remote connectivity checks prior to adding repositories with clear error messages for unreachable URLs; - Improve checkout support for large skill repositories, preventing unexpected size limit rejections during clone; - Adopt host native refresh and rotating loading icons, resolving distortion and visual overlap to align seamlessly with DSH host appearance.
v1.2.242026-10-31
· 中文说明 · 支持技能自定义简介与备注,不改写底层 SKILL.md 文件(Issue #73): - 技能卡片「更多操作」菜单新增「编辑备注」入口,方便记录技能用途、唤起时机与使用经验; - 技能卡片优先展示用户自定义备注,悬停提示保留面向模型的原生 prompt 简介; - 顶部搜索框支持根据自定义备注关键词即时检索匹配技能; - 备注数据持久化于插件内部显示映射层,完全不改动原始 SKILL.md 文件; - 完善生命周期闭环:永久删除回收站条目或移除自定义来源时自动清理孤立备注,且严格保护同名现役技能数据不被误删。 --- · English · Support custom skill notes without modifying SKILL.md (Issue #73): - Add "Edit note" option under skill card "More" menu to record custom descriptions and usage scenarios; - Display custom notes directly on skill cards while preserving the original prompt description in tooltip; - Support searching skill cards by custom notes keywords; - Store notes safely in plugin display mapping layer without modifying underlying SKILL.md files; - Automatically cleanup note entries upon permanently deleting trash items or removing custom sources, while protecting active skills with the same name.
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
DSH Skills Manager 统一管理本机与项目技能,从 GitHub 安装、预览更新并备份回退 English · 更新日志 · Apache-2.0 DSH Skills Manager 是社区维护的 DeepSeek Harness(DSH)插件,并非 DeepSeek AI 官方产品。 本文描述 1.2.26。已发布变更见更新日志。 功能概览 把散落在本机和项目中的技能集中到 DSH,无需在多个 Agent 目录间来回查找。 - 多视图集中管理:提供「全局技能」、「项目技能」、「发现」与「回收站」四大工作区视图,支持搜索、状态筛选与来源折叠。 - 广泛的生态兼容:覆盖 DSH、公共 Agent、Codex、Claude Code、Copilot、Cursor、Google Antigravity、Windsurf、Qoder、Trae 等 20+ 工具与 CLI 环境,统一管理且不侵入第三方文件。 - 分类整理与拖拽归类:支持在各来源内创建分类文件夹、拖拽技能卡片归类排序、批量添加技能,并支持分类级一键启停。分类元数据独立保存,不改动物理文件。 - 公共市场与仓库订阅:内置「发现」中心,一站式浏览 ClawHub 热门榜单与 skills.sh 技能市场,支持公开 GitHub 仓库订阅、增量更新检测与版本备份回退。
展开完整文档(README 剩余 1 节)
DSH Skills Manager

统一管理本机与项目技能,从 GitHub 安装、预览更新并备份回退

English · 更新日志 · Apache-2.0

DSH Skills Manager 是社区维护的 DeepSeek Harness(DSH)插件,并非 DeepSeek AI 官方产品。

本文描述 1.2.26。已发布变更见更新日志。

功能概览

把散落在本机和项目中的技能集中到 DSH,无需在多个 Agent 目录间来回查找。

- 多视图集中管理:提供「全局技能」、「项目技能」、「发现」与「回收站」四大工作区视图,支持搜索、状态筛选与来源折叠。
- 广泛的生态兼容:覆盖 DSH、公共 Agent、Codex、Claude Code、Copilot、Cursor、Google Antigravity、Windsurf、Qoder、Trae 等 20+ 工具与 CLI 环境,统一管理且不侵入第三方文件。
- 分类整理与拖拽归类:支持在各来源内创建分类文件夹、拖拽技能卡片归类排序、批量添加技能,并支持分类级一键启停。分类元数据独立保存,不改动物理文件。
- 公共市场与仓库订阅:内置「发现」中心,一站式浏览 ClawHub 热门榜单与 skills.sh 技能市场,支持公开 GitHub 仓库订阅、增量更新检测与版本备份回退。
- 创建与自由导入:新建技能,或导入 ZIP、文件夹与 SKILL.md,可精准写入用户全局目录或指定工作区项目目录。
- 宽屏阅读与正文复制:760px 宽屏自适应详情弹窗,等宽字体代码高亮排版,支持垂直自由拉伸与一键复制 Markdown 正文。
- 回收站与防误删保障:DSH 技能删除后优先移入回收站,支持完整保留安装身份与更新历史的安全恢复。
- 自定义来源目录:外部 Agent 来源可以在面板里改读取位置,不移动任何文件;DSH 与公共 Agent 仍由宿主配置。

界面预览

全局技能:

全局技能管理界面

项目技能:

项目技能管理界面

技能仓库与发现:

技能仓库浏览与安装

截图展示核心功能面板,包含全局技能、项目技能与技能发现仓库。采用无损 WebP 格式。

安装

需要已安装并能正常运行 DeepSeek Harness。以下命令使用 web profile,请按实际环境替换。

插件安装支持 npm registry、本地构建的 .tgz 包和 GitHub。GitHub 与 npm 都包含可直接运行的 lib。改动源码后,提交前请先运行构建。

让 Agent 帮你安装

把这段话发给能够操作本机终端的 Agent:

请把 @michengai/dsh-skills-manager 最新版安装到我的 DSH web profile,使用官方 npm 源,安装后确认生效并告诉我如何重新加载。

手动安装

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
dsh plugin --profile web add @michengai/dsh-skills-manager@latest --registry=https://registry.npmjs.org/

安装后重启 DSH 并刷新页面,打开「设置 → 技能」即可使用。更新时可点击「检查更新」,或重新执行安装命令。

- 1.2.26 已验证兼容 DeepSeek Harness 0.2.0-rc.1、0.2.0-rc.2、0.2.1-rc.1、0.2.1-rc.2、0.2.1-rc.3。
- 宿主支持范围:DeepSeek Harness 0.2.x 全系列(>=0.2.0-rc.1 <0.3.0-0),自动支持后续日常小版本、alpha 与 RC,同代宿主升级无需重复等待发版。早期版本与 0.3.0 代际破坏性更新由版本门拦截。仍在使用 0.1.x 的,请安装插件 1.1.23,不要装 @latest。
- 反向代理部署:支持将 DSH 部署在带路径前缀的反向代理后面(如 /app/dsh/),插件 API 统一自动按页面基址(document.baseURI)相对解析。

插件配置与可选开关

插件遵循 DSH 官方扩展配置规范,配置项位于:主界面侧边栏「插件」→ 点击 Skills Manager 详情页(对应宿主 plugins.bundle.config 槽位)。

此处提供两个原生扁平行开关:

1. 侧边栏入口 (sidebarEntry)

- 默认状态:关闭(false)
- 功能说明:在宿主左侧主导航栏的「插件」下方增加常驻的 「技能」 图标入口。
- 生效效果:
- 开启后,在侧边栏点击即可直达技能管理中心,并在主工作区以 960px 居中版心(对齐官方插件管理与市场规范)展开完整大面板,彻底告别在设置弹窗狭窄视口内滚动的局限;
- 关闭后安全注销侧栏槽位;
- 无论是否开启侧栏入口,DSH 原有的「设置 → 技能」入口始终保留,两处界面数据与状态 100% 实时同步。

2. 在线更新 (onlineUpdate / updater)

- 默认状态:开启(true)
- 功能说明:控制是否允许在线检查并安装技能管理器的新版本。
- 生效效果:
- 界面联动:关闭开关后,技能管理面板顶部的「检查更新」按钮将即时隐藏,无需刷新页面;开启后自动恢复展示;
- 接口安全拦截:关闭后,服务端的更新路由对任何版本检查和安装请求均返回 HTTP 403 禁用状态,彻底杜绝在插件内安装未审核版本;
- 宿主/平台级锁定:面向精选插件索引(如 VibeDev)或企业安全合规环境,支持直接在 Cordis 配置文件(bundle patch)中声明,无需进入界面手动配置: updater: false # 或 onlineUpdate: false

配置生效后,更新器在启动时即被完全禁用,且更新入口默认保持隐藏。

使用指南

| 核心操作 | 操作方式 |
| 检索技能 | 切换「全局技能」或「项目技能」页签,按来源分组折叠/展开,或使用顶部搜索框与状态筛选器。 |
| 阅读技能 | 点击技能行右侧「查看详情」,在 760px 宽屏弹窗中阅读 SKILL.md 正文及诊断信息,支持一键「复制正文」。 |
| 控制启停 | 点击技能行右侧开关,切换其在 DSH 中的调用状态;仅影响 DSH 智能体执行,绝不改动第三方源文件。 |
| 更换外部来源目录 | 点击顶栏「来源目录…」或在来源行点「修改技能目录」,输入或浏览目录后保存;「恢复默认」回到默认位置。只改本插件读哪里,不移动文件,外部来源仍只读。 |
| 分类与拖拽 | 在来源内点击「新建分类」,拖拽左侧把手(⋮⋮)直接跨分类移动或同组排序;支持分类一键批量启停与多选添加。 |
| 创建与导入 | 点击顶栏「创建技能」或「导入技能」,并排选择写入目标(用户目录或已登记工作区项目目录),系统自动核对安全路径。 |
| 发现与安装 | 切换到「发现」页签,浏览 ClawHub 热榜或搜索 skills.sh 目录,或点击「添加仓库」订阅公开 GitHub 仓库。 |
| 仓库技能更新 | 点击「刷新」,再点击「查看更新」预览文件 Diff 差异,确认后自动创建本地备份并完成更新。 |
| 版本回退 | 对存在备份的技能点击「恢复上一版」,预览差异并确认恢复。 |
| 回收与防误删 | 删除的 DSH 技能自动进入「回收站」,可随时完整恢复或永久删除。 |

技能管理四大板块

1. 全局技能(Global Skills)
- 集中展示当前电脑上所有 Agent 目录下的全局技能(跨项目通用)。
- 支持按来源启停、按分类组织;当不同来源存在同名技能时,自动遵循优先级遮盖并给出来源提示。
2. 项目技能(Project Skills)
- 顶部下拉选择当前 DSH 已登记的工作区目录,下方展示该项目所属的 Agent 技能。
- 仅扫描并管理所选工作区;项目级同名技能优于全局副本生效。
3. 发现(Discover)
- 公共市场:集成 ClawHub 热门下载榜与 skills.sh 全球技能库,输入关键字即可检索全球开源技能,一键完成多副本安装;
- GitHub 仓库订阅:输入 GitHub 仓库地址,整仓扫描技能清单,支持增量版本比对、本地修改保护与更新备份。
4. 回收站(Trash)
- 存放从 DSH 或公共 Agent 来源中删除的技能副本,保留原始安装位置与关联信息。
- 误删技能可一键恢复回原目录,彻底杜绝意外丢失。

技能命名与 Frontmatter 规范

DeepSeek Harness 宿主加载机制对技能标识符遵循规范命名约束:
- 名称格式:宿主严格要求技能名称必须为 ASCII 小写字母、数字与连字符构成的 kebab-case 格式(如 my-custom-skill);
- 中文技能目录自救:您的技能文件夹名称可以继续使用直观的中文名称(如 文案排版/),只需在其 SKILL.md 的 YAML frontmatter 中显式声明合法的英文 name 即可被宿主正常加载和调用:

name: copy-formatting-helper
description: 微信公众号与多平台文案排版辅助工具

技能正文内容...

- 界面智能诊断:若本地存在缺少英文 name 的纯中文技能,管理器会在界面明确给出「宿主不支持此技能名称格式,无法启用」的诊断指引,并允许停用清理历史脏记录。

仓库与安装边界

- 顶栏「检查更新」用于更新技能管理器插件自身;仓库区「刷新」仅检查技能仓库内容更新,不自动覆盖本地。
- 仓库安装可以写入用户目录下的 DSH skills 或公共 Agent(~/.agents/skills,可用 DSH_AGENTS_HOME 覆盖),也可以写入已登记工作区的 <项目根>/.dsh/skills。选择器显示实际配置路径,并禁用不安全路径;缺少的目录仅在确认安装后创建。不能安装到 Codex、Claude 等其他 Agent 目录。
- 归档上限 32 MiB,指定子目录也需下载整库。
- 更新前检测本地修改,覆盖必须明确确认;历史备份不自动清理,可随时恢复上一版。

支持的 Agent 目录

~ 表示用户主目录,<project> 表示已登记工作区的项目根。表中为默认路径;设置了对应环境变量时,以配置为准。环境变量覆盖对应 Agent 的主根目录,插件会在其目录下扫描 skills 文件夹(即 <环境变量值>/skills)。

| 来源 | 全局目录 | 环境变量 | 项目目录 |
| DSH | ~/.dsh/skills | DSH_HOME | <project>/.dsh/skills |
| 公共 Agent | ~/.agents/skills | DSH_AGENTS_HOME | <project>/.agents/skills |
| CC Switch | ~/.cc-switch/skills | — | — |
| Codex | ~/.codex/skills | DSH_CODEX_HOME | <project>/.codex/skills |
| Claude Code | ~/.claude/skills | DSH_CLAUDE_HOME | <project>/.claude/skills |
| Gemini | ~/.gemini/skills | DSH_GEMINI_HOME | <project>/.gemini/skills |
| OpenCode | ~/.config/opencode/skills | DSH_OPENCODE_HOME | <project>/.opencode/skills |
| Cursor | ~/.cursor/skills | DSH_CURSOR_HOME | <project>/.cursor/skills |
| Copilot | ~/.copilot/skills | DSH_COPILOT_HOME | <project>/.github/skills |
| Windsurf | ~/.codeium/windsurf/skills~/.windsurf/skills | DSH_WINDSURF_HOMEDSH_WINDSURF_USER_HOME | <project>/.windsurf/skills |
| Trae | ~/.trae/skills | DSH_TRAE_HOME | <project>/.trae/skills |
| Trae CN | ~/.trae-cn/skills | DSH_TRAE_CN_HOME | <project>/.trae-cn/skills |
| OpenClaw / Clawdbot | ~/.openclaw/skills~/.clawdbot/skills | DSH_OPENCLAW_HOMEDSH_CLAWDBOT_HOME | — |
| Roo | ~/.roo/skills | DSH_ROO_HOME | <project>/.roo/skills |
| CodeBuddy | ~/.codebuddy/skills | DSH_CODEBUDDY_HOME | <project>/.codebuddy/skills |
| WorkBuddy | ~/.workbuddy/skills | DSH_WORKBUDDY_HOME | <project>/.workbuddy/skills |
| Qoder | ~/.qoder/skills | DSH_QODER_HOME | <project>/.qoder/skills |
| Qoder CN CLI | ~/.qoder-cn/skills | DSH_QODER_CN_HOME | — |
| Qoder CN | ~/.lingma/skills | DSH_LINGMA_HOME | <project>/.lingma/skills |
| Google Antigravity | ~/.gemini/config/skills | DSH_ANTIGRAVITY_HOME | <project>/.agents/skills |

不扫描普通项目根目录的 <project>/skills,避免把仓库的发布资源当作 Agent 技能。OpenClaw / Clawdbot 仅保留上表中的用户级来源。Qoder CN CLI 的项目技能在 <project>/.qoder/skills,显示为 Qoder。Qoder CN IDE 使用 Lingma 目录。不存在的外部来源目录不会显示。
外部 Agent 来源(CC Switch、Codex、Claude Code 等)可以在来源行直接改读哪个目录,保存后立即生效。覆盖保存在 ~/.dsh/skills-manager/roots.json,优先级高于 DSH_<AGENT>_HOME;手工编辑该文件需重启 DSH。DSH 与公共 Agent 是宿主的扫描路径,不在此处开放,需要整体搬迁时请改 DSH_HOME / DSH_AGENTS_HOME。目录必须已存在,且不能与其它来源重叠;自定义目录失效时来源会保留在列表里,方便改回默认。

自定义来源(清单外的 Agent)

表里没有的 Agent 不必等插件发版:打开「来源目录…」,点「添加来源」,填它的技能目录即可。自定义来源与外部只读来源同构——只扫描不写入、不改动第三方文件,支持分组、拖拽归类、来源级与分类级启停;显示名默认取目录名,也可以自己填。

如果一个 Agent 用多个子 profile(多账号、多工作区)各自维护一套技能,填产品总目录再点「扫描子目录」:插件会向下找两层内所有含 SKILL.md 的 skills 目录,列成候选,每条显示为「产品名 / 子目录名」并标注技能数量,确认后一次登记。扫描只产生候选,不会自动登记;与已有来源重叠的候选会被标出并禁止登记。

登记信息写在 roots.json 的 customSources 段,与目录覆盖共用同一个文件。移除登记只删除这条记录,磁盘上的技能文件保持原样。上限 32 个自定义来源。

DSH 产品生态

想使用桌面工作台,可下载 DSH Codex Desktop;已有 DeepSeek Harness 环境,可按各项目 README 按需安装。以下列出 11 个自研插件;桌面端实际随附范围以对应版本的发行说明和内置清单为准。

| 插件 | 你可以用它做什么 |
| Codex UI | 整理项目与会话、搜索任务、跳转对话轮次 |
| Agency Agents | 按任务选择并召唤专业角色 |
| Skills Manager | 管理本机与项目技能,从仓库安装、更新和回退 |
| Archive Manager | 搜索、恢复或清理已归档会话 |
| IM Connect | 从消息平台下任务、收回复 |
| Automation | 按计划执行任务,查看每次运行的结果 |
| BTW | 在当前上下文中临时旁问,不打断主任务 |
| Simplify | 用 /simplify 整理 Git 改动范围内的代码 |
| PUA | 引导 Agent 在失败时换方法、查原因,并在完成前验证结果 |
| Code Review | 用 /review 发起独立 Agent 代码审查,在当前会话接收报告 |
| Codex Pet | 通过桌面宠物查看会话提醒、处理工具审批和问题回答 |

反馈与贡献

遇到问题或有建议,欢迎提交 Issue。请附上 DSH 与插件版本、复现步骤;界面问题可附完整截图。

源码位于 src,使用严格 TypeScript,保留现有插件架构。开发时执行 npm run typecheck 检查类型,npm run build 生成运行产物,npm run verify 执行完整回归与打包验证。GitHub 与 npm 都包含可直接运行的 lib。改动源码后,提交前请先运行构建。打包前仍会自动检查类型并构建,npm 安装包仍包含所需 JavaScript 产物。CI 在 Node.js 22.19.0 和 24 上执行完整验证,代码改动也会自动触发受支持宿主兼容矩阵。欢迎提交改进。

从源码制作测试包时,使用项目固定版本的 pnpm 安装依赖,执行 npm run verify,再执行 npm pack。用 dsh plugin --profile web add <package.tgz> 安装生成的 .tgz,重启 DSH 并刷新页面。打包时不要使用 --ignore-scripts,否则会跳过构建钩子。

许可证

Apache License 2.0
预览分享卡片长什么样 ↓MichengAI/dsh-skills-manager
分享 · DeepSeek Harness Hub
MichengAI/dsh-skills-manager

DSH Skills Manager — 在 DeepSeek Harness 中统一加载并安全管理本机智能体技能 · 在 DSH 中加载并安全管理本机智能体技能

回到顶部