在设置页查看、编辑并校验智能体技能
31.2/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Stijnus/dsh-skills-studio该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · market
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 38 处,展示前 27 条)
- 发起网络请求client.js:464
return fetch(url, opts).then(readJsonResponse) - 读取本地文件src/api.js:400
content = await readFile(entry.path, 'utf8') - 读取本地文件src/mutate.js:103
info = await lstat(path) - 读取本地文件src/mutate.js:133
info = await lstat(current) - 写入本地文件src/mutate.js:157
await mkdir(root.path, { recursive: true }) - 读取本地文件src/mutate.js:180
info = await lstat(current) - 写入本地文件src/mutate.js:184
await mkdir(current) - 读取本地文件src/mutate.js:191
info = await lstat(current) - 写入本地文件src/mutate.js:215
await writeFile(tempPath, content, { mode: 0o644, flag: 'wx' }) - 写入本地文件src/mutate.js:216
await rename(tempPath, targetPath) - 写入本地文件src/mutate.js:217
await chmod(targetPath, 0o644) - 删除本地文件src/mutate.js:219
await unlink(tempPath).catch(() => {}) - 读取本地文件src/mutate.js:286
current = await readFile(targetPath) - 读取本地文件src/mutate.js:315
dirents = await readdir(dir, { withFileTypes: true }) - 删除本地文件递归src/mutate.js:383
await rm(bundleDir, { recursive: true, force: false }) - 删除本地文件src/mutate.js:390
await unlink(targetPath) - 写入本地文件src/mutate.js:447
await mkdir(destinationPath, { recursive: true }) - 删除本地文件递归src/mutate.js:551
await rm(tempDir, { recursive: true, force: true }).catch(() => {}) - 读取本地文件src/roots.js:77
return (await stat(path)).isDirectory() - 读取本地文件src/roots.js:96
await stat(join(current, '.git')) - 读取本地文件src/scan.js:74
for await (const chunk of createReadStream(path)) hash.update(chunk) - 读取本地文件src/scan.js:105
dirents = await readdir(root.path, { withFileTypes: true, encoding: 'utf8' }) - 读取本地文件src/scan.js:159
target = await stat(entryPath) - 读取本地文件src/scan.js:173
return (await stat(path)).isFile() - 读取本地文件src/scan.js:192
fileStat = await stat(filePath) - 读取本地文件src/scan.js:208
buffer = await readFile(filePath) - 读取本地文件src/validate.js:425
await lstat(path)
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
技能设置页和一套带校验的技能注册表 API,用于 DeepSeek Harness:区分已安装和可用技能,支持增删改、从技能库安装,保存前拦截冲突。
README
由 DeepSeek 最新模型翻译生成dsh-skills-studio
给 DeepSeek Harness 设置加一个 Skills 页面(原名 dsh-skills-manager,GitHub 会自动重定向):查看每个已安装的智能体技能,查看注册表实际提供给智能体的内容,在磁盘上新增或编辑技能,并在冲突保存发生之前拦住它。
Skills 设置页面
新增了什么
- Installed —— 本地 DSH 技能根目录里发现的每个技能,按根目录分组:项目 .dsh/skills / .agents/skills、自定义目录、~/.dsh/skills、~/.agents/skills。
每行显示名称、描述、bundle 还是 flat、调用标志、rank 和 shadowing;可写根目录(默认 ~/.agents/skills)里的条目带 Edit 和 Delete。
- Available —— 来自已配置技能包库的技能(Install / Update / Installed),外加插件 bundle 贡献给实时注册表的只读技能(「From plugins」)。
展开完整文档(README 剩余 1 节)
dsh-skills-studio
给 DeepSeek Harness 设置加一个 Skills 页面(原名 dsh-skills-manager,GitHub 会自动重定向):查看每个已安装的智能体技能,查看注册表实际提供给智能体的内容,在磁盘上新增或编辑技能,并在冲突保存发生之前拦住它。
Skills 设置页面
新增了什么
- Installed —— 本地 DSH 技能根目录里发现的每个技能,按根目录分组:项目 .dsh/skills / .agents/skills、自定义目录、~/.dsh/skills、~/.agents/skills。
每行显示名称、描述、bundle 还是 flat、调用标志、rank 和 shadowing;可写根目录(默认 ~/.agents/skills)里的条目带 Edit 和 Delete。
- Available —— 来自已配置技能包库的技能(Install / Update / Installed),外加插件 bundle 贡献给实时注册表的只读技能(「From plugins」)。
- Add / Edit —— 一个真正的表单(名称、描述、when-to-use、调用标志、正文),原子写入 <root>/<name>/SKILL.md 或 <root>/<name>.md,带乐观并发(expectedSha256),外部编辑永远不会被悄悄覆盖。
- 保存前查冲突 —— 跨根目录重名、flat 与 bundle 别名碰撞、描述触发词重叠,都在写入之前检测;阻断性冲突返回 409,界面会说明原因。「Force save」只在名称 shadowing 时提供,字段非法或文件过期时绝不提供。
- 实时证明智能体能看到 —— 每次改动后,宿主向 ctx.skills 询问注册表提供的内容,并报告三种状态:visible: true(「Saved · agents can see it now」)、轮询超时未命中时的 visible: false,或宿主作用域注册表视图完全看不到按会话的文件系统服务商时的 checked: false(真实桌面组合就是这样)。最后一种情况下,界面会说明宿主无法从这里验证会话目录,而不是谎报一个假阴性;随附的文件系统服务商会监视写入的根目录,并在智能体下一步时把变更呈现给它们。
不调用模型,不联网,不执行 shell。文件写入限制在配置的可写根目录内,带路径/符号链接包含检查,技能上限 256 KiB、请求上限 1 MiB。
截图
所有截图都来自一个隔离的临时 DSH 0.2.1-rc.5 实例,其中复制了 49 条用户技能根目录以及 deepseek-stack 库;深色框架里唯一的差别是应用主题。图片文件位于 verify/screenshots/。
| Light | Dark |
| 已安装技能 — 浅色主题 | 已安装技能 — 深色主题 |
| 「可用」标签页(技能库 +「来自插件」) | 新增 / 编辑编辑器,带实时校验 |
| 「可用」标签页:技能库与插件提供的技能 | 新增技能表单,带实时校验 |
| 保存前拦截重名 | 宿主作用域目录说明(桌面拓扑) |
| 编辑器显示阻断性重名冲突;保存按钮已禁用 | 「可用」标签页,含插件行与宿主作用域说明 |
更多验证截图(已保存状态、删除确认、深色「可用」标签页)在同一目录下;原始证据与测试装置见 SKILLS-VERIFICATION.md。
安装
从 npm(registry)安装
latest release
dsh plugin --profile <profile> add dsh-skills-studio
pin a version
dsh plugin --profile <profile> add dsh-skills-studio@0.1.3
项目名叫 dsh-skills-studio,但它的 npm 包名是 dsh-skills-studio:不带作用域的 dsh-skills-studio 名字属于一个无关的第三方插件,原先的 @stijnus/... 作用域已停用。GitHub 安装与本地链接安装见下文,仍然可用。
本地开发(web 配置档,隔离环境)
git clone https://github.com/Stijnus/dsh-skills-studio.git
cd dsh-skills-studio
DSH_HOME=/tmp/dsh-skills-dev dsh plugin --profile web add link:$PWD
DSH_HOME=/tmp/dsh-skills-dev dsh --profile web --port 53999 --no-open
也可以直接从本仓库安装到已有配置档:
latest main
dsh plugin --profile <profile> add github:Stijnus/dsh-skills-studio
pin a released version (recommended for stable installs) — see the Releases page
dsh plugin --profile <profile> add github:Stijnus/dsh-skills-studio#v0.1.3
发布版本打 vX.Y.Z 标签(Releases)。升级时用同样方式安装更新的标签;重载配置档即可生效(启用 HMR 时会自动拾取)。
npm 包名说明: 包发布为 dsh-skills-studio,因为 npm 上朴素的
dsh-skills-studio 名字属于一个无关的第三方插件。上面的 GitHub / 链接安装方式是开发检出时的备选。
隔离运行的覆盖配置(agents 主目录、可写根目录与技能库):
skills-studio.overlay.yml — pass with --patch
- id: skills-studio
config:
agentsHome: /tmp/dsh-skills-dev/agents
writableRoot: /tmp/dsh-skills-dev/managed-skills
libraries:
- id: deepseek-stack
label: deepseek-stack
path: /absolute/path/to/ds-stack/skills
- id: deepseek-stack-aliases
label: deepseek-stack aliases
path: /absolute/path/to/ds-stack/aliases
桌面应用
打开 Settings → Plugins → install bundle,把该目录作为目标(Desktop 外壳会执行包操作并重组应用)。安装完成后,Skills 区块会立即出现在 Settings 中;只有外壳提示 restart-required 时才需要重启。
本机当前的实机安装改用人工维护的配置档路径:一个 node_modules/dsh-skills-studio 符号链接,再加一行配置档补丁(见 SKILLS-VERIFICATION.md §4)。DSH 的配置档 HMR 会把这两部分都加载进运行中的应用,无需重启。持久性提醒:配置档的 package.json 没有声明这个包,所以之后执行插件管理器 / pnpm 操作时可能清掉符号链接;这类操作之后,重新跑一遍桌面插件安装(或补上 link: 依赖)。配置档补丁会保留那一行,因此只要恢复符号链接再重启,该区块就会回来。
配置
所有字段都可选。配置在应用时校验;值格式不对会直接抛错,不会静默回退默认值。
| 字段 | 默认值 | 含义 |
| agentsHome | $DSH_AGENTS_HOME 或 ~/.agents | 用户智能体配置根目录;默认以 skills/ 为可写根 |
| dshHome | $DSH_HOME 或 ~/.dsh | Harness 配置根目录;其中的 skills/ 以只读方式扫描 |
| writableRoot | <agentsHome>/skills | 本插件唯一可写入的根 |
| includeUserDshRoot | true | 扫描 <dshHome>/skills |
| includeProjectRoots | true | API 调用传入 cwd 时扫描项目根 |
| customSkillDirs | [] | 额外的只读技能根(rank 300) |
| libraries | [] | 可安装的技能包:{ id?, label?, path } |
| maxSkillBytes | 262144 | 指令文件 / 正文大小上限 |
Deepseek-stack 说明:把 libraries 指向 ds-stack/skills 和 ds-stack/aliases,29 个捆绑技能和 6 个手势别名就会出现在 Available 中,Installed/Update 状态按可写根计算。由于别名是扁平文件,请把它们作为单独的 library 条目安装。
HTTP API(宿主侧,同源)
前缀 /skills-studio/api,JSON,cache-control: no-store。
| 方法 + 路径 | 用途 |
| GET /state?cwd= | 根、已安装技能、带 installed/update/available 状态的 libraries、实时注册表目录、冲突、统计 |
| GET /skill?rootId=&relPath= | 单个技能及其完整指令文本 |
| POST /validate | 对创建/更新草稿做字段试运行校验 + 冲突/警告 |
| POST /save | 创建/更新(原子写入、乐观 sha、注册表可见性探测) |
| POST /delete | 从可写根删除条目(必须提供预期 sha) |
| POST /install | 把 library 技能复制进可写根(更新需 overwrite + 预期 sha) |
| GET /health | 存活检查 + 解析后的根 |
完整的请求/响应契约、冲突规则和写入格式见 CONTRACT.md。
验证
- 宿主逻辑:node --test → 105 个测试,无依赖,只用临时目录。
- 独立端到端验证:对真实临时 DSH 实例跑 61/61 条宿主 API 断言,28/28 条真实浏览器 GUI 断言(新增/编辑/删除/安装、重复项在保存前拦截、无障碍、浅色+深色),桌面端交付实测生效(HMR,无需重启),并重新审计 49 条已安装技能不变式:SKILLS-VERIFICATION.md。
- 已安装技能根目录与 deepseek-stack 包的基线审计:SKILLS-AUDIT.md。
已知限制
- 每个根目录只向下发现一层,与随附的文件系统服务商一致(<root>/<name>/SKILL.md、<root>/<name>.md);嵌套的技能树不会被发现。
- 项目根目录需要 cwd:客户端可选的 sessions 服务暴露会话工作区时,页面会转发一个;否则只显示它能自行解析的用户范围根目录。根目录发现本身只向下查一层,与随附服务商一致。
- 注册表可见性探测报告的是宿主范围 ctx.skills 视图提供的内容。在真实桌面端组合中,本地文件系统服务商位于每会话智能体预设层,所以探测会如实返回 checked:false,界面提示无法从这里验证会话目录;服务商的监听器仍会在智能体下一步时把变更呈现出来。如果某个服务商从不监听自己的根目录,就需要它自己实现失效处理。
- 插件绝不编辑不属于自己的文件:删除只限于可写根目录下扫描到的条目,并且要求 sha256 与界面读取到的完全一致。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Stijnus/dsh-skills-studio
在设置页查看、编辑并校验智能体技能
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目