DeepSeek Harness Hub
← 返回列表

技能跨端复用器noteflowai/dsh-skills-anywhere

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
✓ 可直接安装

跨工具发现与加载技能。 将本地目录和已配置 Git 源中的

自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/16 · 已提供中文文档

在 DeepSeek Harness 和 MCP 之间复用 Agent Skills。在浏览器或 CI 中检查本地 SKILL.md 文件,具备解析器诊断、文件哈希和清晰的退出码。试试 Hugging Face playground。

综合分
34.2
GitHub 分
34.2
用户评分
★ Stars
6
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-skills-anywhere
npm 包 dsh-skills-anywhere 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

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

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 05:21:22

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-scope@deepseek-ai/dsh-session@deepseek-ai/dsh-skill@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-skills-anywhere

跨工具发现与加载技能。 将本地目录和已配置 Git 源中的
Agent Skills 汇入统一目录,通过
DeepSeek Harness(dsh)实时提供器
或本地 stdio MCP 服务器按需访问。

检查自己的 SKILL.md。 Hugging Face 演示可在浏览器中并排检查严格模式与宽容模式,
查看字段修复、调用设置并下载检查报告。文件不会上传;检查范围是本项目的解析行为,
报告列出识别到的外部来源地址、完整提交号形式与作者工具声明;
引用内容、脚本行为及客户端兼容性需要单独验证。

本地技能检查:解析结果、外部来源地址及作者工具声明。

体验 Hugging Face 交互演示:在示例工作区中查看技能来源、处理重名、调整目录预算,并搜索未列出的技能。无需安装或模型 API。演示原理。

查看技能指令、比较目录清单或分享目录视图。键盘导航保留选中行与目录设置,
用于本地复核的文件始终在浏览器中处理。

CI
npm
dsh plugin
OpenSSF Scorecard
Glama maintenance rating
License: MIT

社区目录已收录:Awesome DeepSeek Harness · Awesome Gemini CLI. 推广与核验记录。

不同客户端使用的项目级、用户级和插件目录存在差异。Skills Anywhere 原地发现
已配置来源中的 SKILL.md,通过 dsh 或已连接本地服务器的 MCP 客户端提供统一目录。
目录定义描述发现路径;已测试的协议连接单独记录在兼容矩阵中。

在 dsh 里,它在内置的 ctx.skills 注册表上多注册一个提供器,模型原有的 skill 工具和 /name 调用方式不变,只是能看到更多技能:

- 预定义的 Agent 目录。 包括 Claude Code、Codex、Cursor、Gemini CLI、GitHub Copilot、Windsurf、Kiro、Goose 等项目级和用户级路径,具体见目录注册表。
- Claude Code 插件市场。 嵌套在 ~/.claude/plugins/marketplaces//plugins//skills/ 里的技能,包括 Anthropic 官方市场。
- 已配置的 Git 源。 指定技能仓库、子目录、分支、标签或提交;提供器维护本地检出,并在 lock 文件中记录实际提交。
- 原地读取本地文件。 每次加载重新读取已有技能,无需复制到各客户端目录。Git 源使用下文说明的托管缓存。

几百个技能会让每次模型请求都变得臃肿,所以提供器带有目录预算:默认最多 50 个技能进入模型的会话目录,其余的通过插件新增的两个小工具一次 find_skills 调用即可到达,/name 调用不受影响。

这套技能池在 dsh 之外也能用:dsh-skills-anywhere mcp 通过工具和
skill:// 资源供已配置的 MCP 客户端发现和加载。
具体工作流取决于客户端对工具调用、资源和技能指令的支持。

提供器会去重软链接和字节相同的条目,支持文档中列明的 frontmatter 修复,
并对 discord/configure、telegram/configure 等重名条目添加前缀。
CLI 展示实际发布的目录、跳过的条目及每项变更的原因。

检查技能交付

成功的 MCP open_skill 调用返回加载回执,关联已交付的指令正文、原始 SKILL.md
与可选目录摘要。调用方可将回执关联到工具 span,再与任务结果一起检查。
回执记录交付事实;指令遵循与权限执行需要分别检查。
数据契约 ·
EvalArc 评估工作台。

示例:复核机器人记录

通过 MCP 加载 Microduck 帧复盘技能,让 Agent 先调用 Robot Reel 校验原始
关节记录,再整理有依据的结论。
交互技能示例
(选择 04 Review robot evidence)· 本地操作说明 ·
可复用技能。
网页展示技能内容;只读校验由你所用 Agent 的执行工具完成,无需重新仿真或 GPU。

审核后加载同一份文件

MCP open_skill 返回原始文件的 SHA-256。传入 check --json 或之前一次
打开结果中的 expected_sha256,文件变化时会在返回指令前拒绝加载。
作者刚设置的禁用标志立即生效,不受目录缓存影响。
固定文件版本的使用说明。

MCP 协议支持: 本地 stdio 命令支持旧版初始化与 2026-07-28 协议握手;
四种 SDK 配置和安装后的 npm 包均通过真实子进程验证。
兼容范围与嵌入迁移说明。这不代表所有品牌客户端都已端到端认证。

审核技能目录里的全部文件。 bundle /path/to/skill --json 生成目录清单,
可比较脚本/资源的新增、删除和内容变化,再通过 MCP expected_bundle_sha256 按审核指纹加载。
首页对比区展示“说明没变、脚本已变”,
也支持在本地浏览器比较自己的两份清单。流程与边界。
指纹覆盖目录内文件内容,不认证作者或脚本安全,也不锁定后续执行时的文件。

SKILL.md 未变、脚本已变:在本地比较技能目录清单。

快速开始

1. 安装到你使用的 dsh profile(web 是默认的 UI profile)
dsh plugin --profile web add dsh-skills-anywhere

2. 不启动 dsh,直接查看模型将看到的技能
npx dsh-skills-anywhere list

3. 添加一整个技能仓库
npx dsh-skills-anywhere add anthropics/skills

已发布到 npm,带构建来源(provenance)签名;每个 GitHub release 也附带同一个 tarball。

照常启动 dsh。技能目录里现在包含了上面所有内容;用 skill 工具或 /技能名 加载,与之前完全一样。

以下为目录发现的输出示例,路径与数量取决于本地安装和已配置来源:

$ npx dsh-skills-anywhere list
NAME                 FROM                                                    PATH
discord-access       claude plugin discord @ claude-plugins-official         ~/.claude/plugins/marketplaces/.../discord/skills/access/SKILL.md
frontend-design      claude plugin frontend-design @ claude-plugins-official ~/.claude/plugins/marketplaces/.../frontend-design/skills/frontend-design/SKILL.md
skill-creator        claude plugin skill-creator @ claude-plugins-official   ~/.claude/plugins/marketplaces/.../skill-creator/skills/skill-creator/SKILL.md
...
31 skills, 6 renamed — run dsh-skills-anywhere doctor for details

不用 npm:从 git 检出或 release tarball 安装

每个 GitHub release 都附带预构建的 tarball,dsh plugin add 和 npx 都可以直接使用它的 URL(https://github.com/noteflowai/dsh-skills-anywhere/releases/download/v0.12.0/dsh-skills-anywhere-0.12.0.tgz)。若需要尚未发布的提交:

dsh plugin --profile web add github:noteflowai/dsh-skills-anywhere

git 安装拿到的是源码,pnpm 需要运行本包的 prepare 构建脚本。pnpm 10+ 默认拒绝:第一次 add 会失败并打印出需要放行的精确键名(包含提交哈希)。把它原样复制到 profile 的 pnpm-workspace.yaml 后重新执行 add:

$DSH_HOME/profiles/web/pnpm-workspace.yaml
allowBuilds:
'dsh-skills-anywhere@https://codeload.github.com/noteflowai/dsh-skills-anywhere/tar.gz/': true

需要可复现安装时请锁定提交:github:noteflowai/dsh-skills-anywhere#。

环境要求

- DeepSeek Harness 0.1.5-rc.1 及以上(测试套件在 0.1.5-rc.1 和 0.1.5-rc.2 上通过),且 profile 挂载了 @deepseek-ai/dsh-skill(自带的 web、acp、headless、sdk profile 都满足)
- Node.js 22.19+ 或 24+
- git 源需要 PATH 中有 git(其余功能不依赖 git)

会发现哪些技能

| 位置 | 示例 | dsh source 标签 | 默认 rank |
|---|---|---|---|
| 其他 Agent 的项目级技能 | /.claude/skills/ | anywhere-project | 250 |
| 其他 Agent 的用户级技能 | ~/.codex/skills/、~/.cursor/skills/ | anywhere-user | 550 |
| Claude Code 插件市场及已安装插件缓存 | ~/.claude/plugins/marketplaces//plugins//skills/ | anywhere-claude-plugins | 580 |
| git 源 | anthropics/skills、vercel-labs/agent-skills/skills | anywhere-source | 700 |

在 dsh 注册表里,同名技能按较小的 rank 优先。内置目录保留原值:
.dsh/skills 为 100、.agents/skills 为 200、~/.dsh/skills 为 400、
~/.agents/skills 为 500。不同来源按这些数值共同排序,例如 rank 250 的
Agent 项目级条目优先于 rank 400 的 dsh 用户级条目。
内置 .agents/skills 与 .dsh/skills 目录不会被重复扫描。

运行 npx dsh-skills-anywhere agents 查看完整 Agent 表以及本机存在哪些目录。

技能格式

任何包含符合 Agent Skills 规范 的 SKILL.md 的目录,以及 dsh 的平铺 .md 形式。支持 name、description、license、compatibility、allowed-tools、metadata,以及 dsh 的 disable-model-invocation / user-invocable。未知的 frontmatter 字段(如 Claude Code 的 argument-hint、context)保留在 metadata.frontmatter 下。scripts/、references/、assets/ 与普通 dsh 技能一样通过资源目录暴露。

默认的宽松模式下:缺少 name 时回退到目录名,非法 name 归一化为 kebab-case,缺少 description 时取正文第一段。每次修复都会记录并由 doctor 展示。设置 lenient: false 可与内置提供器的严格行为保持一致。

git 源

npx dsh-skills-anywhere add anthropics/skills                      # 默认分支
npx dsh-skills-anywhere add anthropics/skills@v1.0.0               # 标签或分支
npx dsh-skills-anywhere add vercel-labs/agent-skills/skills        # 子目录
npx dsh-skills-anywhere add https://github.com/o/r/tree/main/dir   # GitHub tree URL
npx dsh-skills-anywhere add git@gitlab.com:group/skills.git        # 任意 git URL
npx dsh-skills-anywhere add ./local/skills-repo --project          # 本地仓库,项目级
npx dsh-skills-anywhere add o/r --ref 3f2a9c1 --rank 300           # 锁定提交,设置优先级

源来自三个地方,按顺序合并:插件配置 config.sources、用户文件 ~/.dsh/skills-anywhere/sources.json、项目文件 /.dsh/skills-anywhere.json(提交到仓库即可与团队共享)。CLI 负责编辑后两者。

每个仓库在 ~/.dsh/skills-anywhere/cache/// 维护本地检出;
指定分支、标签或提交时使用 @。后台同步在启动时、
每隔 syncIntervalMs(默认 6 小时)以及来源配置变化时运行,
实际提交写入 ~/.dsh/skills-anywhere/lock.json。
发现过程读取已有缓存。刷新失败时保留已有检出;从未同步成功的源没有可用缓存技能。
成功更新后使目录缓存失效,发现过程无需等待网络同步。

目录预算与 find_skills / open_skill 工具

dsh 会把每个模型可调用技能的名称和描述放进会话,每次请求都带上。加上插件市场和几个 git 源,这就是几百行上下文。因此提供器会对技能排序,只把前 catalog.limit 个(默认 50)标记为模型可调用;其余技能以关闭模型调用的方式发布,不进目录,但你仍可用 /name 加载。

由 dsh-skills-anywhere/tools 行注册的两个工具让模型也能触达被隐藏的部分:

- find_skills(query, limit?) 按关键词搜索全部技能(名称、描述、whenToUse、来源),无论是否在目录中,并标明哪些已列出。
- open_skill(name) 按精确名称加载任意技能,包括被预算隐藏的。frontmatter 里写了 disable-model-invocation: true 的技能仍会被拒绝,与内置 skill 工具行为一致。

- id: skills-anywhere
config:
catalog:
limit: 30                       # 0 = 不限制(旧行为)
pin: [frontend-design]          # 始终列出
hide: [example-skill]           # 从不列出,但仍可搜索、可 /name 调用
- id: skills-anywhere-tools
config:
findLimit: 10

作者禁用的技能不占预算。哪些技能保留在目录中遵循下文的优先级顺序:项目级优先于用户级,再优先于市场与 git 源。工具行依赖工具运行时(ctx.tools);在没有它的 profile 中该行保持挂起,提供器独立工作。

CLI

提交前检查技能。 运行 npx -y dsh-skills-anywhere@0.12.0 check
skills/example/SKILL.md --fail-on-repair,使用与在线体验相同的解析器,
批量检查明确指定的文件,输出带文件摘要的 JSON 报告和 CI 退出码。
默认严格解析,--lenient 接受提供者的修复,--fail-on-repair 要求没有修复。
不会扫描其他目录、同步仓库或执行技能。命令、CI 示例与检查范围。

dsh-skills-anywhere list [--all] [--json]     提供器发布的技能(--all 显示被隐藏的重复项)
dsh-skills-anywhere agents [--json]           Agent 目录定义及本机存在的路径
dsh-skills-anywhere sources [--json]          已配置的 git 源及已同步的提交
dsh-skills-anywhere add  [--ref] [--path] [--rank] [--project]
dsh-skills-anywhere remove  [--project]
dsh-skills-anywhere sync [--force] [--json]   立即克隆或刷新全部源
dsh-skills-anywhere doctor [--json]           被修复、跳过、重命名、去重的技能及原因
dsh-skills-anywhere mcp                       通过 stdio MCP 向已配置客户端提供技能

所有命令支持 --cwd  指定项目。CLI 与插件走同一套代码,无需 dsh 运行。

作为 MCP 服务器使用

dsh-skills-anywhere mcp 启动本地 stdio
Model Context Protocol 服务器,
通过以下工具提供相同的已配置来源、去重与命名规则。
在兼容客户端的 MCP 配置中注册该服务器即可连接:

| 工具 | 作用 |
| --- | --- |
| list_skills | 浏览全部允许模型调用的技能及其描述、来源(支持 limit、offset) |
| find_skills | 按关键词搜索名称、描述与来源 |
| open_skill | 加载某个技能的完整指令,以及其脚本和参考文件所在目录 |

技能同时以 skill:// 资源(带自动补全)暴露,方便支持 @ 引用资源的客户端。frontmatter 设置了 disable-model-invocation: true 的技能永远不会被列出或打开。该服务器完全不需要安装 dsh。

Claude Code(作为插件安装;本仓库同时也是一个插件市场)

claude plugin marketplace add noteflowai/dsh-skills-anywhere
claude plugin install dsh-skills-anywhere@noteflowai

也可以只注册裸服务器:claude mcp add skills-anywhere -- npx -y dsh-skills-anywhere mcp。两种方式都需要重启一次 Claude Code 才会连接。

Cursor(.cursor/mcp.json 或 ~/.cursor/mcp.json)

{ "mcpServers": { "skills-anywhere": { "command": "npx", "args": ["-y", "dsh-skills-anywhere", "mcp"] } } }

Codex(~/.codex/config.toml)

[mcp_servers.skills-anywhere]
command = "npx"
args = ["-y", "dsh-skills-anywhere", "mcp"]

服务器也已登记在 MCP 官方目录,名称为 io.github.noteflowai/dsh-skills-anywhere,支持该目录的客户端可以按名字安装。仓库同时是一个 Agent Plugin(根目录的 plugin.json 与 mcp.json),Cursor 等支持开放插件规范的客户端可以直接用仓库地址安装。如果客户端不是在当前项目目录里启动服务器,加上 --cwd 。git 源会像在 dsh 中一样在启动时后台同步。编程方式:import { createSkillsAnywhereServer } from 'dsh-skills-anywhere/mcp' 会返回 McpServer 和提供器,可自行挂接传输层。

在 dsh web 界面里浏览和开关技能

在 dsh web 中打开 设置 → 插件 → 插件配置,Skills Anywhere 卡片会列出提供器找到的全部技能,按所在位置分组(Agent 目录、Claude Code 插件、git 源),并标出目录状态——已列出给模型、未列出(被预算或你挡在目录外)或作者禁用——以及重名时被改成的名字。每一行提供 置顶(始终列出)、隐藏(不进模型目录,但 /名称 和 find_skills 仍可达)和 排除(从提供器中彻底去掉);目录预算可以就地修改,筛选框按名称、描述和来源搜索。

修改会作为 skills-anywhere 命名空间写入 profile 的 dsh 设置文档,叠加在 cordis.patch.yml 的 catalog 和 excludeSkills 之上,模型目录立即跟随变化:无需重启,无需手改文件。卡片只在挂载了 dsh 设置服务和 web 服务器的 profile 中出现(自带的 web profile 满足);其他场合提供器的行为与组合配置完全一致。

配置

在 profile 的 cordis.patch.yml 中覆盖该行。patch 会替换整个 config 块,因此需要写全所有你关心的键:

- id: skills-anywhere
config:
agents: true
excludeAgents: [openclaw]
claudePlugins: true
sources:
- anthropics/skills
- { repo: vercel-labs/agent-skills, path: skills, ref: main, rank: 650 }
excludeSkills: [example-skill]

| 字段 | 默认值 | 含义 |
|---|---|---|
| providerName | skills-anywhere | 在 ctx.skills 上的提供器名 |
| agents | true | 扫描其他 Agent 的技能目录 |
| excludeAgents | [] | 跳过的 Agent id(见 agents 命令) |
| extraProjectDirs | [] | 额外的项目相对技能目录 |
| extraUserDirs | [] | 额外的绝对路径或 ~/ 技能目录 |
| claudePlugins | true | 扫描 Claude Code 插件市场与缓存 |
| sources | [] | git 源:字符串或 { repo, ref?, path?, rank? } |
| sourcesFiles | true | 同时读取用户级与项目级 sources.json |
| cacheDir | ~/.dsh/skills-anywhere/cache | 源的检出位置 |
| sync | true | 是否克隆/刷新 git 源 |
| syncOnStart | true | 插件启动及项目首次使用时刷新 |
| syncIntervalMs | 21600000 | 后台刷新间隔;0 表示关闭 |
| syncTimeoutMs | 120000 | 单条 git 命令超时 |
| maxDepth | 5 | 源与市场内的目录遍历深度 |
| dedupe | true | 折叠软链接与字节相同的重复项 |
| lenient | true | 修复可恢复的 frontmatter 而不是跳过 |
| watch | true | 监视本地根目录,变化时刷新目录 |
| excludeSkills | [] | 要隐藏的技能名(原始 frontmatter 名或 list 显示的发布名均可);可在 web 卡片中运行时修改 |
| ranks | { project: 250, user: 550, claudePlugins: 580, sources: 700 } | 各组优先级 |
| catalog.limit | 50 | 本提供器进入模型目录的技能数;0 = 不限制 |
| catalog.pin | [] | 始终列出的名称 |
| catalog.hide | [] | 从不列出的名称(仍可 /name 调用和搜索) |
| dshHome、home | $DSH_HOME / ~ | 路径根,主要用于测试 |

dsh-skills-anywhere/tools 行接受 findLimit(默认 10)、findMaxLimit(50),以及 find / open 布尔值以便只注册其中一个工具。

优先级与去重规则

1. 按 rank 顺序扫描根目录;同一 rank 内按 Agent 表顺序,再按路径。
2. 指向同一文件(软链接)的条目折叠为第一个;同名且正文字节相同的条目折叠为第一个。两者都在 doctor 中显示为隐藏的重复项。
3. 仍然同名但内容不同的条目全部保留。如果其中有你自己的(来自 Agent 目录),它保持原名,其余加上插件、仓库或 Agent 前缀(如 telegram-configure);如果全部来自市场或 git 源,则全部加前缀,得到 discord-access、telegram-access 而不是一个没有意义的 access。doctor 会列出重命名。
4. 随后 dsh 注册表按 rank 把本提供器的候选与内置候选合并。

研究示例

查看 27 次 GPU 试验,
对照无技能、直接交付与 MCP 交付,保留独立任务评分和全部失败记录。
技能组合与会话接续试验单独列于研究说明。
这些小规模实验检查交付过程和任务结果,不足以确立普遍的准确率或记忆效果收益。

安全说明

- 插件只读取技能文件,绝不写入你的 Agent 目录。
- git 源会在插件启动和刷新周期在本机运行 git。对不完全信任的源请锁定提交,并检查 lock.json。
- 技能是模型会遵循的指令。添加一个源就是一次信任决策,与安装插件无异。
- 技能通过 Node 文件系统 API 读取,而非 dsh 沙箱化的 ctx.fs;内置提供器读取自带根目录时也是如此。

开发

pnpm install
pnpm run check        # 类型检查 + lint + 测试 + 构建
pnpm pack             # 生成 tarball,供 dsh plugin --profile  add ./dsh-skills-anywhere-.tgz

测试直接跑在真实的 @deepseek-ai/dsh-skill 注册表和临时目录里的真实 git 仓库上。

参与贡献

欢迎 issue 与 PR。新增一个 Agent 只需在 src/agents.ts 里加一行。详见 CONTRIBUTING.md。

许可证

MIT © Note Flow AI

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群