DSH port of obra/superpowers — 完整移植、中文化、DSH 原生
44.6/100
综合分
25
GitHub 星标
1,161
npm 周下载
—/5
用户评分
数据截至 2026/10/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @wenaixi/dsh-superpowernpm 源 · @wenaixi/dsh-superpower 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@wenaixi/dsh-superpower @ 8.0.0
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 02:18:50
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 51 处,展示前 28 条)
- 读取本地文件lib/catalog.js:83
const dirStat = await stat(this.skillDir); - 读取本地文件lib/catalog.js:86
const dirents = await readdir(this.skillDir, { withFileTypes: true, signal }); - 读取本地文件lib/catalog.js:110
return (await stat(path)).mtimeMs; - 读取本地文件lib/catalog.js:132
dirStat = await stat(this.skillDir); - 读取本地文件lib/catalog.js:145
dirents = await readdir(this.skillDir, { withFileTypes: true, signal }); - 读取本地文件lib/catalog.js:169
skillMdMtimes.set(entry.name, (await stat(skillPath)).mtimeMs); - 写入本地文件lib/catalog.js:312
await mkdir(join(base, 'alpha')); - 写入本地文件lib/catalog.js:313
await mkdir(join(base, 'bravo')); - 写入本地文件lib/catalog.js:314
await Promise.all([writeFile(join(base, 'alpha', 'SKILL.md'), md), writeFile(join(base, 'bravo', 'SKILL.md'), md)]); - 删除本地文件递归lib/catalog.js:320
await rm(base, { recursive: true, force: true }).catch(() => { }); - 写入本地文件lib/catalog.js:326
await mkdir(join(base, 'dir-name')); - 写入本地文件lib/catalog.js:327
await writeFile(join(base, 'dir-name', 'SKILL.md'), '---\nname: other-name\ndescription: d\n---\nbody'); - 删除本地文件递归lib/catalog.js:333
await rm(base, { recursive: true, force: true }).catch(() => { }); - 写入本地文件lib/catalog.js:339
await mkdir(join(base, 'demo')); - 删除本地文件递归lib/catalog.js:357
await rm(base, { recursive: true, force: true }).catch(() => { }); - 删除本地文件递归lib/catalog.js:377
await rm(base, { recursive: true, force: true }).catch(() => { }); - 删除本地文件递归lib/catalog.js:386
await rm(join(base, 'alpha'), { recursive: true, force: true }); - 删除本地文件递归lib/catalog.js:392
await rm(base, { recursive: true, force: true }).catch(() => { }); - 读取本地文件lib/document.js:150
const raw = await readFile(filePath, { - 执行外部命令固定命令skills/writing-skills/render-graphs.js:72
return execFileSync('dot', ['-Tsvg'], { - 读取本地文件skills/writing-skills/render-graphs.js:105
if (!fs.existsSync(skillFile)) { - 执行外部命令固定命令skills/writing-skills/render-graphs.js:113
execFileSync('dot', ['-V'], { stdio: 'ignore' }); - 读取本地文件skills/writing-skills/render-graphs.js:121
const markdown = fs.readFileSync(skillFile, 'utf-8'); - 读取本地文件skills/writing-skills/render-graphs.js:132
if (!fs.existsSync(outputDir)) { - 写入本地文件skills/writing-skills/render-graphs.js:133
fs.mkdirSync(outputDir); - 写入本地文件skills/writing-skills/render-graphs.js:142
fs.writeFileSync(outputPath, svg); - 写入本地文件skills/writing-skills/render-graphs.js:147
fs.writeFileSync(dotPath, combined); - 写入本地文件skills/writing-skills/render-graphs.js:158
fs.writeFileSync(outputPath, svg);
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cosmokit@deepseek-ai/dsh-skill@deepseek-ai/schemastery@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-locale给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 中文化
- DSH原生
最近更新
在 GitHub 查看全部 →v8.0.02026-10-17
更新内容详见 CHANGELOG.md
· 变更 (Breaking Changes)
· 全面适配最新 DSH v0.2.1-rc.2 所有细节:
- 启用官方最新 engines.dsh 插件版本门禁机制:响应官方 0.2.1 引入的“第三方插件版本兼容性优先按 engines.dsh 判断”的新规范,在 package.json 中显式声明 "dsh": ">=0.2.0-rc.2 <0.3.0-0",以一等公民身份宣告对最新 DSH 0.2.1 体系的原生支持,彻底拒绝旧版本;
- 底层核心依赖全面对齐 0.2.1-rc.2:依赖基准升级对齐最新发布的 @deepseek-ai/cordis@4.0.5、@deepseek-ai/schemastery@3.18.5 与 @deepseek-ai/dsh-skill@0.2.1-rc.2;
- 最新技能契约深度对齐:SkillDocument 与 SkillCatalog 完备对齐最新 SkillCandidate 与 SkillDefinition 规范,提供 resourceBase: { kind: 'directory', path: dir } 相对资源基准、source: 'bundled' 来源标记、whenToUse 路由引导与 invocation 控制策略;全链路透传 AbortSignal,各级异常捕获块优先识别并 rethrow AbortError,零脏错误污染。
· 彻底拔除旧版历史兼容包袱(坚决不兼容旧版):
- 彻底从 Config Schema、接口定义与运行时引擎中拔除已废弃的历史双轨表 modelDisabled 与 userDisabled,配置结构收敛为纯粹的单一 disabled 字典与三态 language;
- 彻底移除 SwitchPanelModel 中的 LEGACY_FIELDS、legacyActive 与单开关操作时的 legacyCarry 继承逻辑;
- 彻底移除每次写入尾部追加旧表 unset 的冗余操作,单开关切换(toggle)RPC payload 从 3 条压缩至纯粹的 1 条操作,操作负载直降 66%;
- 批量控制(enableAll / disableAll / resetAll)RPC payload 压缩至纯粹的 15 条原子操作(即全部 15 个技能名),彻底杜绝宿主版本 revision 乐观锁冲突与状态撕裂。
· 全仓门禁与端到端测试套件现代化重构:
- scripts/client.test.mjs:全面重构单测用例,严格断言单开关纯净 1 条 op、批量纯净 15 条 ops,断言即使配置中存在历史旧表也坚决不予读取、不予继承;
- scripts/check-skill-switches.mjs:在真实 Cordis + SkillRegistry 上完成场景 3 和场景 4 重构实测,铁证单一 disabled 字典为全系统唯一权威真源,历史旧表完全被忽略;
- scripts/config-resilience.test.mjs:TC-R05 与 TC-R07 重构为纯净自愈断言,验证面对极端损坏输入宿主 0 崩溃,且自愈 ops 绝不触碰历史废弃字段;
- scripts/lib/contract.mjs:新增静态门禁守卫,全仓铁腕扫描并拦截客户端中对旧字段和 LEGACY_FIELDS 的任何死灰复燃;
- 隔离实例真机回读验证:在专属测试 Profile(isolated-sp-test)中通过 Windows 目录联接(mklink /J)直通工作区源码根目录,物理规避 pnpm 快照陷阱,并通过 dsh --dump-config 真实回读组合树真值,确保绝对零影响日常生产实例。
---
完整更新日志: CHANGELOG.md
v7.7.22026-10-11
更新内容详见 CHANGELOG.md
· 修复
· 修复客户端 useSyncExternalStore 引用不稳定导致界面卡死崩溃:为前端控制器 SwitchPanelModel 引入事件驱动快照缓存机制(_cachedSnapshot),未发生状态跃迁时 getSnapshot() 返回严格恒等的对象引用,消除 React 18 判定外部存储变动而陷入的无限递归重渲染死循环;在 updateScope(nextScope) 中补齐 this.scope !== nextScope 恒等守卫,严禁在 render 周期内无条件调用 _notify() 向 React 订阅者派发同步更新信号;并在组件顶层添加表单属性解构防空保护。
· 修复 Schemastery 跨端 Schema.transform 序列化硬伤导致配置通道不可用:在 src/superpowers.ts 中将 disabled 与 language 声明由 Schema.transform(...) 还原为跨端原生的 Schema.any().default(...).volatile();彻底消灭由于 schema.toJSON() 丢失函数回调导致浏览器客户端 settingsSchema.rehydrate 执行 validate 时抛出 TypeError: callback is not a function 的硬伤,使 ConfigFormController.prototype.decode(view) 顺利解析通过并置为 ready,彻底恢复技能开关面板的正常挂载展示。
· 完善客户端状态机回归测试:在 scripts/client.test.mjs 中新增测试用例 TC-10,严格断言 getSnapshot() 的引用恒等性与 updateScope 相同引用下的零无谓广播,确保 React 18 契约长效稳固。
---
完整更新日志: CHANGELOG.md
v7.7.12026-10-10
更新内容详见 CHANGELOG.md
· 修复
· 修复取消信号误吞与脏状态漏洞:src/catalog.ts 的 #scanInternal 循环与 getDefinition 补齐 signal?.aborted || (err as DOMException)?.name === 'AbortError' 守卫并立即 rethrow,彻底杜绝取消信号被误当成「文档解析失败」记入 loadErrors 脏状态或静默返回 undefined;并在 SkillCatalog.selfTest() 中新增 2 组边界自检断言,自检总数扩充至 28 项。
· 客户端构建先验后写原子时序:重构 scripts/build-client.mjs 为「先执行 checkSkillCatalogDrift 校验清单漂移,零漂移后才写入磁盘产物,最后以 assertClientManifest 核验落地」的原子时序,消除二次重复校验,坚决杜绝因源码清单漂移导致磁盘产物被提前脏覆盖污染。
· 解耦无用符号导入并开启严格类型检查:解耦 src/superpowers.ts 中未直接消费的 import,向外重导出纯粹委托给 export ... from;在 tsconfig.json 中强制开启 noUnusedLocals: true 与 noUnusedParameters: true,消除死代码。
---
完整更新日志: CHANGELOG.md
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-superpower
obra/superpowers 的 DSH 移植版。15 个技能注入 ctx.skills,装上就能用;技能正文是上游英文原版,技能名保持上游英文原名,面板可切换每个技能在模型目录与斜杠(/)唤出技能栏中描述的中英文。
安装
需要 dsh 本体(已适配最新 v0.2.1-rc.2 / >=0.2.0-rc.2,安装命令:npm i -g @deepseek-ai/dsh),Node 与 pnpm 的版本要求见上方徽章。下面以 web profile 为例,换个 profile 名字即可。
A — npm(推荐,自动装最新)
dsh plugin --profile web add @wenaixi/dsh-superpower
B — GitHub 直装(绕过镜像延迟)
dsh plugin --profile web add github:Wenaixi/dsh-superpower
验证
dsh --profile web --dump-config | grep -A2 "@wenaixi/dsh-superpower"
== @wenaixi/dsh-superpower / - id: superpowers
dsh --profile web # 进会话,技能自动可用
展开完整文档(README 剩余 1 节)
dsh-superpower
obra/superpowers 的 DSH 移植版。15 个技能注入 ctx.skills,装上就能用;技能正文是上游英文原版,技能名保持上游英文原名,面板可切换每个技能在模型目录与斜杠(/)唤出技能栏中描述的中英文。
安装
需要 dsh 本体(已适配最新 v0.2.1-rc.2 / >=0.2.0-rc.2,安装命令:npm i -g @deepseek-ai/dsh),Node 与 pnpm 的版本要求见上方徽章。下面以 web profile 为例,换个 profile 名字即可。
A — npm(推荐,自动装最新)
dsh plugin --profile web add @wenaixi/dsh-superpower
B — GitHub 直装(绕过镜像延迟)
dsh plugin --profile web add github:Wenaixi/dsh-superpower
验证
dsh --profile web --dump-config | grep -A2 "@wenaixi/dsh-superpower"
== @wenaixi/dsh-superpower / - id: superpowers
dsh --profile web # 进会话,技能自动可用
要锁版本就在包名后加 @<version> 或 #v<version>(具体版本以 npm view @wenaixi/dsh-superpower version 当前发布为准)。
本地开发或离线安装:
git clone https://github.com/Wenaixi/dsh-superpower && cd dsh-superpower
pnpm install && pnpm build && node scripts/verify.mjs # 末行打印 ALL PASS
dsh plugin --profile web add ./ # 本地路径安装
pnpm pack && dsh plugin --profile web add ./wenaixi-dsh-superpower-.tgz
更新 / 卸载
dsh plugin --profile web add @wenaixi/dsh-superpower
dsh plugin --profile web remove @wenaixi/dsh-superpower
是什么
一套工程纪律:先设计,再把计划切成可校验的小步,然后测试驱动,调试时先找根因,收尾前必须跑验证命令。技能正文是上游英文原版,frontmatter 同时声明英文 description 与中文 description_zh,面板的语言开关只决定模型与用户看到哪一份描述,不改正文。
装在 dsh.bundle 里,不往用户目录写东西,卸载干净,HMR 会自动重建。
包含技能
| 技能 | 什么时候用 |
| using-superpowers | 每次会话开头,先查有没有该用的技能 |
| brainstorming | 新功能动手前,把需求和设计问清楚 |
| writing-plans | 设计定了,拆成一项一项能验证的任务 |
| using-git-worktrees | 需要和当前工作区隔离 |
| executing-plans | 在当前会话里亲自把计划跑完 |
| subagent-driven-development | 计划里有多件独立的事,交给 subagent 分头做 |
| dispatching-parallel-agents | 两件以上互不依赖的事并行分发 |
| test-driven-development | 先写测试再写实现 |
| systematic-debugging | 出了 bug,先定位根因再改 |
| verification-before-completion | 说「完成」之前必须跑验证命令 |
| requesting-code-review | 任务做完、发 PR 前求评审 |
| receiving-code-review | 收到评审意见,先技术核实再改 |
| diagnosing-superpowers | 会话出问题或成本异常时定位原因 |
| finishing-a-development-branch | 决定合并、发 PR 还是留着分支 |
| writing-skills | 新建或改技能 |
工具映射(Bash 到 pwsh、Read/Write 到 fs 等)在 skills/using-superpowers/references/dsh-tools.md。
同名技能谁生效
官方注册表在同层重名时按 rank 从小到大裁决。本包 rank 是 10,比 dsh-skill-filesystem 的项目级和用户级(100–500)以及官方内置 bundled(600)都小,所以只要有同名技能,本包这份生效,不会有两套规则打架。
技能开关与语言偏好
插件管理页里点开 @wenaixi/dsh-superpower 卡片,详情页底部就是开关面板。每个技能一个开关,关掉即两侧同时不可见:
- 模型不再在可用技能目录里看到它,skill 工具调用也会被拒;
- 你也没法再从斜杠命令补全或命令行技能清单里调它。
面板上方还有全部开启、全部关闭、恢复默认三个批量操作和一个搜索框。
- 拨动后立即生效,模型的下一轮对话就能看到新目录;当前这一轮不受影响。
- 状态写在 profile 的 cordis.patch.yml 的 disabled 与 language 字段中,跟着 profile 一起备份迁移,重装插件不丢。
- 只影响本包这 15 个技能,不碰官方和第三方插件提供的技能。
- 语言切换:面板顶部(说明文案之下)提供「中文 / English / 跟随宿主(自动)」三段式选择器,一次切换全部 15 个技能描述(英文 description 与中文 description_zh)的显示语言,即模型目录与斜杠唤出技能栏里看到的描述文本;技能名与正文都不变。控件只影响 Superpower Skill: 后面的文本:面板其余 UI(标题、批量按钮、搜索框、提示)跟随宿主界面语言,技能正文恒为英文原版。两种描述分别以 Superpower Skill: / Superpower Skill: 开头。未配置时描述动态跟随宿主界面语言(设置里选的语言),并显示提示;显式选择中文或 English 后锁定,选择「跟随宿主(自动)」即可随时清除锁定、恢复跟随宿主。偏好保存在 profile 的 language 字段中(跟随宿主时自动 unset)。
使用
「帮我做 XXX」 → brainstorming → writing-plans → subagent-driven-development 「修这个缺陷」 → systematic-debugging 「帮我评审」 → requesting-code-review 「刚才会话出问题了」 → diagnosing-superpowers
校验:await ctx.skills.list({cwd}) 应该返回 15 条 provider: superpowers。
开发
pnpm install && pnpm build && pnpm typecheck && node scripts/verify.mjs
同名优先实测一:自研桩对照,无外部依赖,任何环境可跑
node scripts/check-same-name-priority.mjs
同名优先实测二:加载官方 @deepseek-ai/dsh-skill-filesystem 做同层实测该包不在 profile 的直接依赖里,脚本会依次尝试 profile 入口、pnpm store 内 .pnpm 真实目录、全局 dsh 本体三处候选路径。
本机没装 dsh(比如纯 CI)就用上面的自研桩脚本做等价验证。
node scripts/check-same-name-priority-fs.mjs
技能开关端到端实测:真实 SkillRegistry 上验证默认全开、禁言生效、热失效闭环
node scripts/check-skill-switches.mjs
上游同步全量复核(deep + tokens 双绿)
node scripts/review-sync.mjs
dsh --profile web --dump-config # 断言 "# == @wenaixi/dsh-superpower"
浏览器端验证
可选,需要本机装好 dsh 和 Python 的 playwright。两个脚本只做验证,地址和路径都从命令行传:
| 脚本 | 验什么 |
| scripts/browser/verify-switch-ui.py | 真机 Web UI 里点开插件卡片,逐个拨开关、点批量按钮、搜索过滤,再回读 cordis.patch.yml 确认落盘 |
| scripts/browser/verify-model-perception.py | 四阶段闭环:UI 写完用宿主真实 SkillRegistry 复核两侧可见性,并逐行比对 UI 显示与宿主目录 |
1. 起一个装了本插件的 profile 的 Web 服务,记下启动日志里的 token
dsh --profile <profile> --no-open --port 3199
2. 面板全量操作
python scripts/browser/verify-switch-ui.py \
http://127.0.0.1:3199 <token> .verify-shots <profile>/cordis.patch.yml .verify-shots/expected.json
3. UI 与宿主的四阶段闭环
python scripts/browser/verify-model-perception.py \
http://127.0.0.1:3199 <token> <profile 目录> <profile>/cordis.patch.yml .verify-shots
expected.json 是 15 个技能名的数组,用来断言 UI 行序和 skills/ 目录一致:
node -e "import('./lib/superpowers.js').then(async m=>{const c=await m.SkillCatalog.fromDirectory('skills');require('fs').writeFileSync('expected.json',JSON.stringify(c.verifyIntegrity().entries.map(e=>e.document.name)))})"
截图落在 .verify-shots/,已在 .gitignore 里。
目录
src/superpowers.ts # 插件入口,SkillProvider rank 10 src/catalog.ts # SkillCatalog:技能编目、三键聚合指纹探测、快照复用、规范自检 src/document.ts # SkillDocument:frontmatter 解析、契约转换、内建 selfTest src/switches.ts # 技能开关:禁言表解包与 invocation 覆盖,内建 selfTest src/client.js # 浏览器半侧:插件卡片详情页的单开关面板,手写 CJS factory skills/ # 15 个技能正文与资源 lib/ # 已提交的构建产物,GitHub 直装免构建 locale/ # 插件卡片的标题与描述(中英);面板 UI 经官方 locale 注册表双语切换 icon.png # 插件卡片、README 顶部、GitHub 头像共用 scripts/ # 门禁、同名裁决实测、开关实测、上游同步复核、浏览器验证 scripts/build-client.mjs # 复制客户端产物后校验内联清单与 skills/ 目录一致 scripts/lib/contract.mjs # 技能内容契约治理,规则全内聚在这一处 scripts/lib/sync-engine.mjs # 上游同步引擎,返回结构化 diagnostics scripts/lib/harness-common.mjs # 两个同名裁决实测脚本的公共骨架 scripts/lib/client-manifest.mjs # 内联清单与 skills/ 的漂移判定 scripts/lib/sync-common.mjs # 同步复核共享原语:归一化、代码块切分、目录遍历
更新日志
版本沿革与逐版变更记录在 CHANGELOG.md,新版本在前,每个版本一段。
常见问题
装完 404 或者版本不对? 换 GitHub 形式安装,或者加 --registry https://registry.npmjs.org 走官方源。不需要配置白名单。查最新版本用 npm view @wenaixi/dsh-superpower --registry https://registry.npmjs.org。
卡片标题、描述或图标是空的? 根因通常是 package.json 的 exports 没放行 ./package.json 和 ./locale/.json,或者 icon 指向了包外的绝对路径。node scripts/verify.mjs 会把这两类问题连同 files 是否放行图标一起断言掉。
协议
MIT,详见 LICENSE。
贡献
Issue 和 PR 都欢迎。详见 CONTRIBUTING.md。
致谢
- 上游 obra/superpowers
- DeepSeek Harness 的三角色插件架构
- dsh-plugin-dev 提供的 DSH 插件开发规范、架构参考与真机验收工程方法预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Wenaixi/dsh-superpower
DSH port of obra/superpowers — 完整移植、中文化、DSH 原生
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份人设,统一管理多个 coding agent。
★ 1,141已汉化DSH
74.1
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7
这是你的仓库?认领条目