mcpField
S
Skills Anywhere

Skills Anywhere

本地服务
github.comAI 与智能体66 天前更新

关于 Skills Anywhere

Skills Anywhere 将配置的本地目录和 Git 来源中的 Agent Skills 汇集成目录,供 DeepSeek Harness 或 MCP 客户端使用。它还提供检查技能内容以及加载前验证已审阅版本的功能。

主要功能

  1. 01发现本地目录和 Git 来源中的技能
  2. 02按需搜索并加载技能
  3. 03检查技能资源链接
  4. 04比较目录清单与哈希值
  5. 05记录 MCP 技能加载回执

适用场景

  1. 01在不同 Agent 工具间复用技能
  2. 02加载前审阅技能变更
  3. 03在 CI 中设置技能链接检查门槛
  4. 04审计 Agent 收到的指令

MCP 相关

本地 stdio MCP 服务通过工具和 `skill://` 资源提供技能发现与加载。`open_skill` 可校验预期的文件、资源包和来源提交哈希值。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"noteflowai-dsh-skills-anywhere": {
"command": "npx",
"args": [
"-y",
"dsh-skills-anywhere"
]
}
}
}
启动命令npx -y dsh-skills-anywhere

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmdsh-skills-anywhere0.19.0

工具

3

收录的工具列表 · 更新于 2 周前

参数类型必填说明
limitinteger否要返回的技能最大数量(默认 200)。
offsetinteger否跳过的技能数量(用于分页)。

详细介绍

dsh-skills-anywhere

产品方向与验收里程碑:路线图。

在不同工具间发现和加载技能。 从本地目录和已配置的 Git 源收集 Agent 技能,汇总到一个目录中,并通过实时的 DeepSeek Harness(dsh)提供方或本地 stdio MCP 服务使用。

English | 中文

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

移动技能前先检查

查找已安装文件夹中缺失的支持文件,然后在通过 MCP 加载前检查技能包的更改。浏览器文件夹检查 · 三个固定的公开示例。

npx [email protected] check path/to/SKILL.md --resources --json

添加 --fail-on-resource-issues 以设置 CI 门禁。此项会检查本地 Markdown 链接目标;不会检查正文中的依赖,也不会执行技能。范围与教程。

无需克隆,立即开始首次检查 — 找出一处缺失的技能引用,恢复它,并验证 CI 门禁。

找出一处缺失的技能引用,恢复它,并验证 CI 门禁。

从工作流开始

需求工作流
在不同 Agent 工具间复用技能收集本地和 Git 源,然后按需通过 dsh 或本地 MCP 加载
加载前检查更改比较指令和目录清单;要求提供已审核内容的哈希
检查哪些指令已传达给 Agent将 MCP 加载回执与工具调用和任务评估一同保存

快速开始

需要 Node.js 22.19+ 或 24+。CLI 和本地 MCP 服务可独立运行; Git 源也需要 Git。

检查发现的技能:

npx dsh-skills-anywhere list

对于 MCP 客户端,请使用本地服务配置。 对于 DeepSeek Harness,请安装到所选配置文件中:

dsh plugin --profile web add dsh-skills-anywhere

启动 dsh,然后使用其 skill 工具或 /skill-name 加载。若要添加 Git 源, 请运行 npx dsh-skills-anywhere add anthropics/skills。 安装详情介绍了发布归档、源代码检出和 dsh 版本要求。

在 CI 中检查技能。 任何包含 SKILL.md 文件的仓库都可以添加 GitHub Action(0.14.0 及更高版本)。被拒绝的文件、修复项和隐藏 字符会显示为拉取请求批注,同时还会生成作业摘要和 JSON 报告:

      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - uses: noteflowai/[email protected]
        with:
          fail-on-repair: true
          fail-on-hidden-characters: true

输入、输出和范围。无需模型密钥 或安装 DeepSeek Harness。

在浏览器中试用

主页会打开一个已编写的资源检查器。选择一个技能文件夹,检查你自己的链接,然后点击 保存结果图片,生成一份可分享的汇总,展示计数和范围。图片中不包含文件名;JSON 报告会保留审核所需的路径。

试用交互式 Hugging Face playground — 浏览示例工作区、解决名称冲突,并搜索超出目录预算范围的内容。无需安装,也不需要模型 API。了解其工作原理。

查看技能说明、比较目录清单,并分享目录视图。 键盘导航会保留所选行和目录设置。为本地审核而打开的文件 会留在浏览器中。

带上你自己的 SKILL.md。 在本地比较提供方的严格和宽松解析: 检查修复内容、调用设置以及可下载的检查报告。 你的文件会留在浏览器中。相同的检查也可通过 命令行和 CI 使用,并提供文件哈希和可执行的退出代码。 报告会列出识别到的源 URL、完整提交地址格式 以及作者声明的工具。引用的内容、脚本行为和客户端 兼容性需要单独验证。

本地技能审核界面,展示解析结果、完整提交地址和未经验证的源地址,以及作者声明的工具。

目录的工作原理

客户端可以为 SKILL.md 文件使用不同的项目、用户和插件目录。Skills Anywhere 会就地发现已配置的来源,并通过 dsh 或配置为连接其本地服务的 MCP 客户端提供生成的目录。目录定义描述发现路径;兼容性矩阵 则单独记录经过测试的协议连接。

dsh-skills-anywhere list 可从 Claude Code、Codex、Cursor、Gemini CLI、Goose、Windsurf 和 Kiro 中发现技能,然后从 GitHub 添加 anthropics/skills

在 dsh 中,它会在内置的 ctx.skills 注册表中注册一个额外的提供程序,因此模型常用的 skill 工具和 /name 调用只需直接使用更多技能:

  • 预定义 Agent 目录。 Claude Code、Codex、Cursor、Gemini CLI、GitHub Copilot、Windsurf、Kiro、Goose、Cline、Kimi CLI、Letta Code,以及目录注册表中的其他条目对应的项目和用户路径。通过 MCP,这也包括共享的 .agents/skills 约定,因此即使客户端本身不会读取该目录(例如 Claude Code),仍然可以看到其中安装的技能。
  • Claude Code 插件市场。 ~/.claude/plugins/marketplaces/*/plugins/*/skills/* 中的技能,包括 Anthropic 官方市场。
  • 已配置的 Git 来源。 选择技能仓库、子目录、分支、标签或提交。提供程序会维护本地检出,并在锁定文件中记录解析后的提交。
  • 就地读取本地文件。 加载时会重新读取现有技能,而不会将其复制到每个客户端的目录中。Git 来源使用下文所述的托管缓存。

目录预算控制进入模型会话目录的技能摘要数量:默认最多 50 个。其他符合条件的技能仍可通过 find_skills 搜索,并可按需加载。/name 调用方式保持不变。

在 dsh 之外,也可通过 dsh-skills-anywhere mcp 使用同一组技能。已配置的 MCP 客户端可以通过工具和 skill:// 资源发现并打开技能。客户端对工具调用、资源和技能自身指令的支持情况决定了可用的工作流。

提供程序会去重符号链接和字节完全相同的条目,支持已记录的 frontmatter 修复,并会重命名冲突名称,例如 discord/configure 和 telegram/configure。CLI 会报告已发布的目录、跳过的条目以及每项更改的原因。

检查技能交付情况

成功调用 MCP open_skill 后会返回回执,其中标明已交付的指令正文、原始 SKILL.md 和可选的资源包。将其附加到工具 span,即可与任务结果一起检查已交付的版本。回执记录的是交付情况;遵循指令和权限执行是单独的检查项。 回执规范 · EvalArc Trace Workbench。

示例:审查机器人证据

通过 MCP 加载 Microduck 帧审查技能,然后让 Agent 使用 Robot Reel 验证记录的关节事实,再撰写审查结果。 交互式技能示例 (选择 04 Review robot evidence)· 本地演练 · 可复用技能。 浏览器会显示指令;Agent 自身的执行工具会运行只读验证器。无需新建仿真,也无需 GPU。

审查一次,加载同一文件

MCP open_skill 会返回原始文件的 SHA-256。提供 check --json 或先前打开文件时得到的 expected_sha256,即可在返回指令前拒绝已更改的 SKILL.md。作者最新的退出选择会立即生效,即使发现结果仍处于缓存状态也不例外。精确文件工作流。 对于 Git 源技能,将先前回执中的 source_commit 作为 expected_source_commit 传入。如果检出内容发生变化,或技能目录下存在本地更改,加载将被拒绝;这包括未跟踪、已忽略以及 assume-unchanged/skip-worktree 文件。 要求使用经过审查的源提交。

**MCP 协议支持:**本地 stdio 命令会协商旧版初始化方式和 2026-07-28 协议开放方式。四种 SDK 配置和已安装的 npm 归档均通过真实子进程连接进行检查。 兼容性矩阵和嵌入迁移。

审查整个技能目录。 使用 bundle /path/to/skill --json 生成文件清单,比较新增、删除和更改的资源,并在通过 MCP 打开时要求提供 expected_bundle_sha256。 交互式归档比较工具会展示指令未变、脚本已更改的情况,并可在本地比较你自己的清单。目录审查和限制。 摘要涵盖该目录中的记录路径和文件内容。 外部依赖项和执行权限需要单独审查;加载后文件仍可能发生更改。

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

安装详情和发现示例

已发布到 npm,并附带构建来源证明; 每个 GitHub 发布版本也包含相同的 tarball。

下方展示了发现输出示例。路径和数量取决于本地 安装和已配置的源:

$ 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
从 git 检出或发布 tarball 安装,而非从 npm 安装

每个 GitHub 发布版本都附带预构建的 tarball,dsh plugin add 和 npx 均可直接接受其 URL(https://github.com/noteflowai/dsh-skills-anywhere/releases/download/v0.19.0/dsh-skills-anywhere-0.19.0.tgz)。如果你想使用尚未发布的提交:

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

Git 安装会附带源代码,因此 pnpm 必须运行此包的 prepare 构建。pnpm 10+ 在你允许之前会拒绝运行:第一次 add 会失败,并打印需要允许的确切键。将该键(其中包含提交)复制到配置文件的 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/<sha>': true

如果希望安装可复现,请固定一个提交(github:noteflowai/dsh-skills-anywhere#<sha>)。

要求
  • DeepSeek Harness 0.1.5-rc.1 或更高版本(该套件在 0.1.5-rc.1 和 0.1.5-rc.2 上运行),任何挂载 @deepseek-ai/dsh-skill 的配置文件(随附的 web、acp、headless 和 sdk 配置文件均已挂载)
  • Node.js 22.19+ 或 24+
  • Git 源需要 PATH 中有 git(其他功能无需它)
## 可发现的内容
位置示例dsh 来源标签默认优先级
其他 Agent 的项目技能<project>/.claude/skills/*、<project>/.cursor/skills/*anywhere-project250
其他 Agent 的用户技能~/.codex/skills/*、~/.cursor/skills/*anywhere-user550
Claude Code 插件市场和已安装插件缓存~/.claude/plugins/marketplaces/*/plugins/*/skills/*anywhere-claude-plugins580
Git 来源anthropics/skills、vercel-labs/agent-skills/skillsanywhere-source700

在 dsh 注册表中,优先级数值较小的同名条目优先。内置 dsh 根目录保持其优先级(.dsh/skills 为 100,.agents/skills 为 200,~/.dsh/skills 为 400,~/.agents/skills 为 500)。不同来源之间按这些数值确定优先顺序;例如,优先级为 250 的 Agent 项目条目排在优先级为 400 的 dsh 用户条目之前。在 dsh 内部,不会再次扫描内置的 .agents/skills 和 .dsh/skills 根目录。 独立 MCP 服务没有内置提供方,因此也会以相同的优先级 200 和 500 提供共享的 .agents/skills 和 ~/.agents/skills(Codex、Amp、Goose、Zed 和 Letta Code 的默认位置)。createSkillsAnywhereServer 的嵌入方可以传入 sharedDirs: false,或排除 agents id。

运行 npx dsh-skills-anywhere agents,查看完整的 Agent 列表以及你机器上存在哪些目录。

技能格式

该提供方读取包含 SKILL.md 的目录,以及 dsh 的扁平 <name>.md 格式,并采用 Agent Skills 格式。 它会解析 name、description、disable-model-invocation 和 user-invocable,并保留 license、compatibility、allowed-tools 和 metadata。

compatibility 和 allowed-tools 承载作者的声明;运行时要求和工具权限由客户端控制。未知字段(包括 argument-hint 和 context)会保留在 metadata.frontmatter 下。保留这些字段并不意味着实现了来源客户端的行为。 脚本、references/ 和 assets/ 会通过技能的资源目录提供给使用方客户端。

在默认的宽松模式下,缺少名称时会使用目录名作为回退值;名称无效时会规范化为 kebab-case;缺少描述时会根据首段内容生成。每项修复都会记录下来,并由 doctor 显示。设置 lenient: false 可采用内置提供方的严格行为。

Git 来源

npx dsh-skills-anywhere add anthropics/skills                      # default branch
npx dsh-skills-anywhere add anthropics/[email protected]               # tag or branch
npx dsh-skills-anywhere add vercel-labs/agent-skills/skills        # sub-directory
npx dsh-skills-anywhere add https://github.com/o/r/tree/main/dir   # GitHub tree URL
npx dsh-skills-anywhere add [email protected]:group/skills.git        # any git URL
npx dsh-skills-anywhere add ./local/skills-repo --project          # local repo, project-scoped
npx dsh-skills-anywhere add o/r --ref 3f2a9c1 --rank 300           # pin a commit, set precedence

来源有三个,按以下顺序合并:插件的 config.sources、用户文件 ~/.dsh/skills-anywhere/sources.json,以及项目文件 <project>/.dsh/skills-anywhere.json(提交该文件即可与团队共享技能)。CLI 会编辑最后两个文件。

每个仓库都会在本地检出到 ~/.dsh/skills-anywhere/cache/<host>/<owner>/<repo>(设置了分支、标签或提交时使用 <repo>@<ref>)。后台同步会在启动时、每隔 syncIntervalMs(默认 6 小时)以及来源配置变更时运行。已解析的提交会记录在 ~/.dsh/skills-anywhere/lock.json 中。 发现功能会读取可用缓存。刷新失败时会保留现有检出内容;从未同步过的来源不会提供任何缓存技能。 成功的变更会使目录缓存失效,但发现过程不会等待网络同步。

若只想从仓库中选取部分技能,请为每个技能文件夹添加一个条目,并使用相同的 repo 和完整的提交 SHA 作为 ref;这些条目共用一次检出。 examples/isaaclab-v3.0.0 为五个 IsaacLab 用户技能(选择启用)采用了这种方式。它包含文件哈希和许可证目录,并列出了绕过此类允许列表的方式。

目录预算与 find_skills / open_skill 工具

dsh 会在每次请求时,将每个模型可调用技能的名称和描述发布到会话中。使用 marketplaces 和少数几个 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 = unlimited (old behaviour)
      pin: [frontend-design]          # always listed
      hide: [example-skill]           # never listed, still searchable and /name-invocable
- id: skills-anywhere-tools
  config:
    findLimit: 10

作者禁用的技能永远不会计入预算。哪些技能会留在列表中,取决于以下优先顺序:项目级技能优先于用户级技能,而用户级技能优先于 marketplaces 和 git 来源。工具行需要工具运行时(ctx.tools);在没有工具运行时的配置中,它会保持待处理状态,提供方则独立运行。

CLI

提交前请先检查。 运行 npx -y [email protected] check skills/example/SKILL.md --fail-on-repair。Playground 使用的同一解析器支持批量文件检查、带文件哈希的 JSON 报告,以及 CI 退出代码。 检查仅读取指定的文件。在 GitHub Actions 中,uses: noteflowai/dsh-skills-anywhere 会选取所有已跟踪的 SKILL.md 并标注检查结果。 命令、GitHub Action 和范围。

dsh-skills-anywhere list [--all] [--json]     Skills the provider publishes (--all shows hidden duplicates)
dsh-skills-anywhere agents [--json]           Agent directory definitions and paths found here
dsh-skills-anywhere sources [--json]          Configured git sources and their synced commits
dsh-skills-anywhere add <source> [--ref] [--path] [--rank] [--project]
dsh-skills-anywhere remove <source> [--project]
dsh-skills-anywhere sync [--force] [--json]   Clone or refresh every source now
dsh-skills-anywhere doctor [--json]           Repaired, skipped, renamed and duplicate skills, with reasons
dsh-skills-anywhere check <files...> [--json] Explicit local files; strict parser gate by default
dsh-skills-anywhere mcp                       Serve skills to configured clients over stdio MCP
dsh-skills-anywhere route prepare <task> [--json]   Typed choice request over installed, openable skills
dsh-skills-anywhere route apply --request <file> --response <file> [--min-confidence <x>] [--json]
验证已记录的技能选择

当分类器、大模型或人员为某项任务选择技能时,route 会根据此处安装的技能验证该选择。route prepare 会使用与 find_skills 相同的关键词搜索对发现的所有技能进行排序,剔除 open_skill 会拒绝的技能,然后仅保留前 8 个,作为类型化选择请求(skills-anywhere-route-request-1)。保留选项 _none 表示“没有列出的技能适用”,且永远不能作为技能名称。每个候选项都会记录其来源、SKILL.md 路径和内容哈希。由决策器编写响应;route apply 会将其作为不可信数据读取,并准确报告一种结果。不会加载、执行任何内容,也不会向网络发送任何内容。

dsh-skills-anywhere route prepare "fill pdf forms" --json > req.json
# Your decider writes resp.json, for example:
# {"choice": "pdf-forms", "confidence": 0.86, "model": "example"}
dsh-skills-anywhere route apply --request req.json --response resp.json --min-confidence 0.7
结果退出码含义
selected0置信度达到阈值;输出要打开的技能名称、来源和 SKILL.md 路径
no_match0决策器选择了 _none,且置信度达到或超过阈值
abstain0未报告置信度,或置信度低于 --min-confidence
stale1自 prepare 后,所选技能已被删除、变得无法打开,或其 SKILL.md 路径或内容哈希已更改(文件被编辑,或另一个来源接管了该名称)。请重新运行 prepare
invalid_input2文件无法读取或不是 JSON、请求架构错误、选择不在选项范围内,或置信度不是 0 到 1 之间的数字

无效的 --min-confidence,或在其他命令中使用 --request/--response/--min-confidence,也会以退出码 2 退出。默认值 0.7 未经过校准,因此应根据自己的决策器在留出数据上的结果选择阈值。--json 会输出包含结果、选择、置信度、阈值和 model(仅用于溯源信息)的 skills-anywhere-route-result-1;其他响应键会被忽略。请求文件包含此计算机上的绝对路径。

所有命令都接受 --cwd <dir>。对于 check,它用于解析指定文件;其他命令则用它来选择项目。check --lenient 会接受提供方修复;--fail-on-repair 会拒绝所选模式下报告的任何修复。 --fail-on-hidden-characters 会拒绝包含不可见或会改变方向的字符的文件,每份报告都会将这些字符列为 hiddenCharacters。 CLI 使用与插件相同的解析代码,且无需运行 dsh。

用作 MCP 服务

dsh-skills-anywhere mcp 会通过 stdio 启动本地 Model Context Protocol 服务。 它通过以下工具公开相同的已配置源、去重和命名规则。使用 MCP 配置连接兼容的客户端:

工具功能
list_skills浏览所有可由模型调用的技能及其描述和来源(limit、offset)
find_skills按关键字搜索名称、描述和来源
open_skill加载一项技能的指令,以及其脚本和参考资料所在的目录

对于支持资源引用的客户端,技能也会作为 skill://<name> 资源公开。对于 frontmatter 中设置了 disable-model-invocation: true 的技能,MCP 工具和资源不会公开这些技能。该服务独立于 dsh 运行。

以下示例展示了客户端配置。自动连接检查覆盖了兼容性矩阵中的四种 SDK 配置和已安装的软件包;特定应用的行为取决于客户端版本,以及它对工具和资源的支持情况。

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)。 请按照客户端的安装流程操作。

如果客户端在项目目录之外启动服务,请添加 --cwd <dir>。 已配置的 Git 源会在启动时于后台同步。若要嵌入服务,执行 import { createSkillsAnywhereServer } from 'dsh-skills-anywhere/mcp' 会返回 McpServer 和 provider;详见传输与迁移指南。

在 dsh 网页界面中浏览和切换技能

在 dsh web 中,打开 设置 → 插件 → 插件配置。Skills Anywhere 卡片会列出 provider 找到的所有技能,并按其所在位置(Agent 目录、Claude Code 插件、Git 源)分组,同时显示其目录状态:模型可见的 已列出、受预算限制或被你隐藏的 未列出,或 作者已禁用;如果名称发生冲突,还会显示改名后的名称。每行提供 固定(始终列出)、隐藏(不纳入模型目录,但仍可通过 /name 和 find_skills 访问)和 排除(从 provider 中移除)选项;可直接编辑目录预算,筛选框则可搜索名称、描述和来源。

dsh 网页设置中的 Skills Anywhere 卡片:按来源分组的技能及其已列出/未列出/作者已禁用状态、改名信息,以及固定、隐藏、排除操作

编辑内容会写入配置文件的 dsh 设置文档,作为 skills-anywhere 命名空间;该命名空间叠加在 cordis.patch.yml 中的 catalog 和 excludeSkills 之上,模型目录会立即更新:无需重启,也无需编辑文件。只有挂载了 dsh 设置服务和 Web 服务器的配置文件才会显示此卡片(随附的 web 配置文件包含这两项);在其他情况下,provider 的行为与组合配置完全相同。

配置

在个人资料的 cordis.patch.yml 中覆盖该行。补丁会替换整个 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]
字段默认值含义
providerNameskills-anywherectx.skills 上的提供方名称
agentstrue扫描其他 Agent 的技能目录
excludeAgents[]要跳过的 Agent ID(参见 agents 命令)
sharedDirsfalse in dsh, true for the MCP server同时扫描 .agents/skills 和 ~/.agents/skills,dsh 的内置提供方已会读取这些目录
extraProjectDirs[]额外的项目相对技能目录
extraUserDirs[]额外的绝对路径或 ~/ 技能目录
claudePluginstrue扫描 Claude Code 插件市场和缓存
sources[]Git 来源:字符串或 { repo, ref?, path?, rank? }
sourcesFilestrue同时读取用户和项目的 sources.json 文件
cacheDir~/.dsh/skills-anywhere/cache来源的检出位置
synctrue是否克隆并刷新所有 Git 来源
syncOnStarttrue插件启动时以及项目首次使用时刷新
syncIntervalMs21600000后台刷新间隔;0 表示禁用
syncTimeoutMs120000每条 Git 命令的超时时间
maxDepth5遍历来源和市场时的目录深度
dedupetrue合并符号链接和字节完全相同的重复项
lenienttrue修复可恢复的前置元数据,而不是跳过
watchtrue监视本地根目录,并在发生更改时刷新目录
excludeSkills[]要隐藏的技能名称(原始前置元数据名称或 list 显示的已发布名称);可在运行时从网页卡片中编辑
ranks{ project: 250, user: 550, claudePlugins: 580, sources: 700 }每个组的优先级
catalog.limit50模型目录中列出的此提供方技能数量;0 = 不限
catalog.pin[]始终列出的名称
catalog.hide[]永不列出的名称(仍可通过 /name 调用并搜索)
dshHome, home$DSH_HOME / ~路径根目录,主要用于测试

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

优先级和重复项的处理方式

  1. 按优先级顺序扫描根目录。在同一优先级内,依次按 Agent 表顺序和路径排列。
  2. 指向同一文件(符号链接)的条目会合并为第一个条目。具有相同名称和字节完全相同的正文的条目也会合并为第一个条目。两种重复项都会在 doctor 中显示为隐藏重复项。
  3. 仍然名称相同但内容不同的条目会全部保留。如果其中一个来自你的目录(某个 Agent 目录),它会保留裸名称,其他条目则会加上其插件、仓库或 Agent 前缀(telegram-configure)。如果所有条目都来自市场或 Git 来源,则它们都会加上前缀,这样你会得到 discord-access 和 telegram-access,而不是没有意义的裸名称 access。doctor 会列出重命名情况。
  4. 随后,dsh 注册表会按优先级将此提供方的候选项与内置候选项合并。

集成示例与测得结果

使用这些示例,将交付回执与单独计算的任务检查关联起来。报告保留指令、工具结果和每个交付的程序。

工作流示例与证据记录的结果
比较技能交付方式27 次 Qwen3-8B 尝试,涵盖三种工程配置下的无技能、直接交付和 MCP直接交付和 MCP 的尝试均未完全解决任务。无技能条件在最后一种配置下解决了 2/3 次尝试。
从选定会话继续Funes MCP 源码示例和六次继续尝试,每种条件各三次六次检索调用均成功。六个程序均未更改;每种条件都解决了 0/3 个任务。

查看独立来源的 SWE 任务: 另一个单独固定的群组记录了在四种工作流条件下,对 Astropy、pytest 和 SymPy 进行的 36 次尝试。直接预加载与 MCP 预加载交付相同的指导内容;无关的 MCP 对照组则匹配提示词长度。没有任何尝试获得原生验收:31 份报告可供评估,另有 5 份在上游基础设施标记问题后仍无法确定。 8 次尝试生成了非空补丁。 方法和离线记录 保留了工具故障、原生标签和不完整的用量记录,均可查看。

将已审核的技能带入新会话: 另一个包含六次尝试的群组通过工作流 MCP 预加载,重复使用前序会话中的原始技能字节。六次预加载均成功;记忆组检索到六条结果。六个程序均未更改,没有任何任务通过完整验收。报告关联了原始固定版本、交付回执、检索到的历史记录和任务检查。

使用隔离的技能组合测试夹具 查看运行时行为。 报告针对 32 个编写的控制项和 12 次模型尝试,分别记录文件接收、服务完成和授权情况。没有任何模型尝试完成服务任务。

这些针对公开任务的小型研究评估的是特定工作流;技能或记忆的一般效益需要单独评估。研究指南 将方法、组合控制项和独立群组汇总在一起,以便复现。

安全说明

  • 插件会读取技能文件,但绝不会写入 Agent 目录。
  • Git 源会在插件启动时及刷新间隔到期时,于你的机器上运行 git。对于任何你并非完全信任的内容,请固定提交版本,并检查 lock.json。
  • 已加载的技能会向 Agent 的上下文添加指令。使用前请检查指令和引用的脚本;执行权限由客户端控制,加载并不能确保模型会遵循这些指令。
  • 技能通过 Node 的文件系统 API 读取,而非通过 dsh 的沙盒化 ctx.fs;内置提供程序对其捆绑的根目录也采用相同做法。

开发

pnpm install
pnpm run check        # typecheck + lint + tests + build
pnpm pack             # tarball for `dsh plugin --profile <name> add ./dsh-skills-anywhere-*.tgz`

测试会在临时目录中,针对真实的 @deepseek-ai/dsh-skill 注册表和真实 Git 仓库运行。

贡献

欢迎提交问题和拉取请求。请在 src/agents.ts 中添加发现路径,注明来源,并测试目录发现。 客户端集成需要单独进行协议和工作流检查。 请参阅 CONTRIBUTING.md。

社区列表:Awesome DeepSeek Harness · Awesome Gemini CLI。 发布历史与验证。

许可证

MIT © Note Flow AI

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。