按需语义搜索六千余个本地技能,避免占用对话上下文
29.2/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ryasrk/dsh-awesome-skills该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 61 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-awesome-skills(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/23 01:15:51
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 48 处,展示前 46 条)
- 读取本地文件lib/index.js:233
if (!existsSync(dir)) - 写入本地文件lib/index.js:234
mkdirSync(dir, { recursive: true }); - 写入本地文件lib/index.js:243
writeFileSync(file, ROUTER_SKILL.replaceAll('__QUERY_BIN__', queryBin).replaceAll('__CORPUS_DIR__', corpusDir)); - 发起网络请求client/client.js:141
const response = await fetch(api$1("/dsh-awesome-skills/query"), { - 发起网络请求client/client.js:165
const response = await fetch(api$1("/dsh-awesome-skills/status")); - 写入剪贴板client/client.js:244
navigator.clipboard.writeText(path).then(() => done(true), () => done(false)); - 发起网络请求client/client.js:1413
const response = await fetch(api("/dsh-awesome-skills/priority")); - 发起网络请求client/client.js:1451
const response = await fetch(api("/dsh-awesome-skills/priority"), { - 发起网络请求client/client.js:1476
const response = await fetch(api("/dsh-awesome-skills/priority"), { - 读取本地文件lib/search.js:95
this.meta = JSON.parse(readFileSync(this.files.meta, 'utf8')); - 读取本地文件lib/search.js:96
const buf = readFileSync(this.files.vectors); - 读取本地文件lib/search.js:114
this.session = await ort.InferenceSession.create(new Uint8Array(readFileSync(this.files.model)), { executionProviders: ['wasm'] }); - 读取本地文件lib/search.js:115
const tk = JSON.parse(readFileSync(this.files.tokenizer, 'utf8')); - 读取本地文件lib/search.js:254
const fp = JSON.parse(readFileSync(this.files.fp, 'utf8')); - 读取本地文件lib/search.js:257
const raw = JSON.parse(readFileSync(this.files.grams, 'utf8')); - 写入本地文件lib/search.js:271
writeFileSync(tmp, JSON.stringify(plain)); - 写入本地文件lib/search.js:272
renameSync(tmp, this.files.grams); - 写入本地文件lib/search.js:274
writeFileSync(fpt, JSON.stringify({ fp: this.corpusFingerprint(), t: Date.now(), n: this.meta.length })); - 写入本地文件lib/search.js:275
renameSync(fpt, this.files.fp); - 删除本地文件lib/search.js:279
unlinkSync(this.files.grams + '.' + process.pid + '.tmp'); - 写入本地文件lib/search.js:319
writeFileSync(tmp, JSON.stringify(Object.fromEntries(this.qcache))); - 写入本地文件lib/search.js:320
renameSync(tmp, this.files.qcache); - 读取本地文件lib/priority-loader.js:106
if (!existsSync(file)) { - 读取本地文件lib/priority-loader.js:115
raw = readFileSync(file, 'utf8'); - 读取本地文件lib/tools.js:56
const size = statSync(resolved.path).size; - 读取本地文件lib/tools.js:166
return { ok: true, path, file: file ?? 'SKILL.md', content: readFileSync(target.path, 'utf8') }; - 读取本地文件src/index.ts:283
if (!existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件src/index.ts:283
if (!existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件src/index.ts:292
writeFileSync(file, ROUTER_SKILL.replaceAll('__QUERY_BIN__', queryBin).replaceAll('__CORPUS_DIR__', corpusDir)) - 读取本地文件src/priority-loader.ts:164
if (!existsSync(file)) { - 读取本地文件src/priority-loader.ts:173
raw = readFileSync(file, 'utf8') - 读取本地文件src/search.ts:134
this.meta = JSON.parse(readFileSync(this.files.meta, 'utf8')) as SkillEntry[] - 读取本地文件src/search.ts:135
const buf = readFileSync(this.files.vectors) - 读取本地文件src/search.ts:151
this.session = await ort.InferenceSession.create(new Uint8Array(readFileSync(this.files.model)), { executionProviders: ['wasm'] }) - 读取本地文件src/search.ts:152
const tk = JSON.parse(readFileSync(this.files.tokenizer, 'utf8')) as { model: { vocab: Record<string, number>; unk_token?: string } } - 读取本地文件src/search.ts:290
const fp = JSON.parse(readFileSync(this.files.fp, 'utf8')) as { fp?: string } - 读取本地文件src/search.ts:292
const raw = JSON.parse(readFileSync(this.files.grams, 'utf8')) as unknown[][] - 写入本地文件src/search.ts:305
writeFileSync(tmp, JSON.stringify(plain)) - 写入本地文件src/search.ts:306
renameSync(tmp, this.files.grams) - 写入本地文件src/search.ts:308
writeFileSync(fpt, JSON.stringify({ fp: this.corpusFingerprint(), t: Date.now(), n: this.meta.length })) - 写入本地文件src/search.ts:309
renameSync(fpt, this.files.fp) - 删除本地文件src/search.ts:312
unlinkSync(this.files.grams + '.' + process.pid + '.tmp') - 写入本地文件src/search.ts:352
writeFileSync(tmp, JSON.stringify(Object.fromEntries(this.qcache))) - 写入本地文件src/search.ts:353
renameSync(tmp, this.files.qcache) - 读取本地文件src/tools.ts:65
const size = statSync(resolved.path).size - 读取本地文件src/tools.ts:173
return { ok: true, path, file: file ?? 'SKILL.md', content: readFileSync(target.path, 'utf8') }
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 语义搜索本地技能
- 按需检索技能
- 避免占用对话上下文
智能体插件技能
README
由 DeepSeek 最新模型翻译生成description: "对 6,097 个技能的本地语料库(skills.sh 前 100 名 + a5c-ai/babysitter 库)进行语义向量搜索,以 DeepSeek Harness 捆绑包形式安装" kind: "package-reference"
dsh-awesome-skills
一个 DeepSeek Harness 捆绑包,让智能体能够对精选的本地技能语料库进行语义访问——包括 skills.sh 前 100 名(83 个 GitHub 托管的技能)以及完整的 a5c-ai/babysitter 库(约 2,100 个技能)——总计 6,097 个技能——而无需将该语料库放入每轮对话的模型目录中。
为什么
DeepSeek Harness 发现的技能目录会成为一个目录条目,而每个目录条目都会在每一轮对话中注入到模型的上下文中。一个庞大的语料库放在那里,意味着每一轮都要付出非常高昂的 token 成本,而这些东西在某一轮对话中几乎从不需要。
这个插件颠覆了这一点。语料库留在目录之外;取而代之的是安装一个很小的 skill-router 技能,它教会智能体按需搜索语料库。
展开完整文档(README 剩余 1 节)
description: "对 6,097 个技能的本地语料库(skills.sh 前 100 名 + a5c-ai/babysitter 库)进行语义向量搜索,以 DeepSeek Harness 捆绑包形式安装" kind: "package-reference"
dsh-awesome-skills
一个 DeepSeek Harness 捆绑包,让智能体能够对精选的本地技能语料库进行语义访问——包括 skills.sh 前 100 名(83 个 GitHub 托管的技能)以及完整的 a5c-ai/babysitter 库(约 2,100 个技能)——总计 6,097 个技能——而无需将该语料库放入每轮对话的模型目录中。
为什么
DeepSeek Harness 发现的技能目录会成为一个目录条目,而每个目录条目都会在每一轮对话中注入到模型的上下文中。一个庞大的语料库放在那里,意味着每一轮都要付出非常高昂的 token 成本,而这些东西在某一轮对话中几乎从不需要。
这个插件颠覆了这一点。语料库留在目录之外;取而代之的是安装一个很小的 skill-router 技能,它教会智能体按需搜索语料库。
语料库
语料库按来源组织,每个 owner/repo 一个目录,每个技能目录都包含其完整内容——SKILL.md 以及它指向的每一个引用文件(示例、模板、脚本):
skills/
├── a5c-ai/babysitter/ # ~2,100 个技能(specializations + methodologies,含 domains 树) ├── mattpocock/skills/ # 17 个技能(tdd、grilling、code-review、...) ├── microsoft/azure-skills/ # 20 个技能(含 microsoft-foundry:191 个文件) ├── anthropics/skills/frontend-design/ ├── vercel-labs/agent-skills/ # vercel-react-best-practices(62 条规则) ├── obra/superpowers/ # brainstorming、systematic-debugging、... └── ... # 157 个 owner/repo 分组,6,097 个技能,17,600+ 个文件
skills.sh 排行榜上仅存在于网站的 17 个条目(open.feishu.cn 的 lark 套件及类似条目,它们没有公开仓库)被排除在外——没有可获取的内容。
| 路径 | 内容 |
| lib/ | 编译后的插件宿主 + 搜索服务 + query.js CLI |
| skills/skills.json | 语料库索引:每个技能的名称、路径、描述 |
| skills/vectors.f32 | 384 维 L2 归一化嵌入向量,每个技能一行 |
| model/ | all-MiniLM-L6-v2,量化 ONNX + 分词器 |
索引是预构建并已提交的。技能正文位于规范语料库目录(~/.dsh/awesome-skills/skills)中,由包引用——而非复制:搜索结果返回指向该目录的路径,因此磁盘上语料库只有一份副本。
安装
dsh plugin --profile web add github:ryasrk/dsh-awesome-skills
该插件以 cordis 捆绑包形式挂载(参见 cordis.patch.yml),并在 apply 时将捆绑的 skill-router 技能安装到 ~/.agents/skills/skill-router。捆绑的 skill-router 会在每次 apply 时刷新——随附的副本是其行为的唯一事实来源。
面向模型的工具
在暴露 tools 服务的主机上,该插件注册两个工具,它们在进程内以宿主权限运行——这是通往语料库的标准权限模式路径,因为该 agent 不需要 Bash 或工作区外的 Read:
- skills_search(query, k?) —— 经过校准的混合搜索;设置旋钮(prio/blacklist/whitelist)适用。
- skills_read(path, file?) —— 从某个命中目录中读取一个文件,受限于语料库根目录(禁止遍历),仅限文本扩展名,上限 64 KiB。
skill-router 技能教授工具优先的流程,并保留 node lib/query.js CLI(stdin 输入 JSON → stdout 输出 JSON)作为与 shell 无关的单段回退方案,供没有工具服务的宿主使用——它读取 stdin 并写入 stdout,因此在任何 shell(bash、PowerShell、cmd)上都不需要 bash 特有的语法。
排序
三条通道融合,然后在候选池上重新排序:
score = (1 - WEIGHT) * semantic + WEIGHT * lexical + GRAM_WEIGHT * char-3-gram
- 语义 —— MiniLM 余弦相似度,对所有行进行暴力计算。精确;无量化漂移。
- 词法 —— IDF 加权的 token 重叠度。
- 字符 3-gram —— 与文字系统无关,因此 CJK/西里尔字母查询和技术标识符仍能区分。
WEIGHT 0.55,GRAM_WEIGHT 0.5,池大小 1200。在随附语料库上用 150 条标签的规范集重新检验:R@1 80%,R@3 93%。
速度
在随附的 6,097 个技能语料库上测量(暴力计算仍会对每一行评分;每进程的模型加载占主导):
| 路径 | 延迟 |
| 冷启动(模型加载) | ~0.7s |
| 热启动(查询缓存命中) | ~0.6s |
派生缓存(每个技能的字符 gram、查询嵌入)位于语料库旁边,并以语料库指纹为键,因此语料库变更会自动使其失效。
服务接口
其他插件和工具可以直接使用搜索服务:
const search = ctx.get('skills-search')
const hits = await search.search('set up end-to-end browser tests', 5)
const dir = search.skillDir(hits[0].path) // e.g. .../skills/mattpocock/skills/tdd
命中的 path 是语料库根目录下的子路径(owner/repo/skill),每个消费者都拼接 corpusDir + path + /SKILL.md——优先级加载器、skill-router 模板和设置 UI 都共享这一约定。参考文件位于 SKILL.md 旁边,因此命中的目录就是完整的操作手册。
配置
所有字段均可选,通过 cordis.patch.yml 中的一行配置:
| 字段 | 默认值 | 含义 |
| corpusDir | ~/.dsh/awesome-skills/skills | 技能正文(/SKILL.md) |
| home | 操作系统主目录(os.homedir()) | 路由器技能安装所在的基础主目录(/.agents) |
| agentsHome | /.agents | 宿主读取其 skills/ 根目录的 agents 主目录;覆盖 $DSH_AGENTS_HOME |
| installSkillRouter | true | 在 apply 时安装路由器技能 |
环境变量:DSH_AWESOME_SKILLS_CORPUS(语料库)、DSH_AWESOME_SKILLS_INDEX(CLI 的索引目录)、DSH_AGENTS_HOME(agents 主目录;解析方式与宿主技能提供程序相同,因此迁移后的 agents 主目录仍能接收路由技能)。
重建索引
索引以预构建形式随 skills/skills.json 和 skills/vectors.f32 提供;用户永远不需要重建它。在更改语料库后重建是维护者步骤,需在单独的语料库摄取工作区中完成(遍历器位于那里,而不在此包中)——它会递归读取语料库并重写 skills.json 和 vectors.f32,然后将它们复制回此仓库的 skills/。如果已部署的配置文件带有过期的索引,请将此仓库的 lib/ 和 skills/ 目录重新同步到该配置文件的已安装副本中。
技能目录是任何包含 SKILL.md 的目录;嵌套在其中的目录(作为参考材料提供的子技能)不会被单独索引。拉取源代码更改后重新生成客户端包:npx tsdown -c tsdown.client.ts,然后运行 node scripts/preflight.mjs。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ryasrk/dsh-awesome-skills
按需语义搜索六千余个本地技能,避免占用对话上下文
相关插件 · 技能 / 提示词
人设统管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
这是你的仓库?认领条目