DeepSeek Harness Hub
← 返回列表

技能规则路由器MJorgin/dsh-skill-router

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

按 YAML 规则前置匹配技能,命中才注入且零 Token 消耗

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/17 · 已提供中文文档

Rule-first pre-step skill router for DeepSeek Harness — pours matched skills on high-confidence hits, stays silent otherwise. Deterministic: zero LLM calls, zero token cost until a rule pours, one pour per session, broken YAML never breaks the session. 规则路由 · 高置信命中 · 静默放行 · 零 Token 消耗

综合分
27.7
GitHub 分
27.7
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add MJorgin/dsh-skill-router
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-skill
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

🍸→⚙️ dsh-skill-router

面向 DeepSeek Harness 的规则优先前置步骤技能路由:匹配到技能就倒上,拿不准就保持沉默。

License: MIT
Test CI
DeepSeek Harness
Deterministic
Once per session
Companion
Docs

skill-bartender 的配套执行器:
技能承载策略判断,本插件承载执行。
确定性、零 LLM 调用、零 token 成本,直到某条规则真正倒上:

- ⚡ 前置步骤钩子 —— 在每个步骤之前读取最新的用户消息。
- 🧭 规则优先匹配 —— 用户可编辑的 YAML 策略(~/.dsh/skill-router.yaml,
内置默认值在 default-policy.yaml),首个匹配胜出。
- 🔇 静默未命中 —— 无命中 → 零干预;模型保持其正常的
目录流程。
- ♻️ 每会话一次 —— 每个技能最多倒上一次。
- 🛡️ 损坏的 YAML 永远不会破坏会话 —— 回退到内置默认值。

为什么 · 工作原理 · 你会得到什么 · 快速开始 · 实际效果 · 策略 · 已测试 · 范围与非目标 · 常见问题 · 目录结构 · 许可证

English · 简体中文

🤔 为什么

大多数技能加载都交给模型的判断:它每个步骤都看到目录,每次都重新决定,而且常常加载得太晚、加载错误,或者根本不加载。一个在模型回答之前运行的路由器可以解决这个问题:

| | dsh-skill-router | LLM 评判路由器 | 手动加载 |
|---|---|---|---|
| 决策者 | 规则(确定性) | LLM / 嵌入 | 模型,每个步骤 |
| Token 成本 | 直到某条规则倒上之前为零 | 每个步骤 | 每个步骤 |
| 增加的延迟 | ~0 ms | 模型往返 | 不适用 |
| 可复现 | ✅ 相同消息 → 相同倒上 | ❌ 有变化 | ❌ 有变化 |
| 用户控制 | 编辑 YAML,搞定 | 提示它 | 祈祷它记得 |

为什么用规则而不是 LLM 评判? 速度、成本和可预测性。一条
URL 路径规则可以在微秒内将 feishu.cn/x/docx/ 路由到 lark-doc,对于
免费,每次都是——而 skill-bartender 的路由表正是策略判断所在之处。这个插件是肌肉,不是大脑。

⚙️ 工作原理

- 挂钩 agent/pre-step,读取最新的用户消息。
- 将其与用户可编辑的规则进行匹配(~/.dsh/skill-router.yaml,捆绑的默认值在 default-policy.yaml 中)。首个匹配胜出。
- 命中时:将匹配到的技能正文作为 skill-invocation 消息注入该步骤——目录的“已加载,不要重新加载”规则会自动生效。
- 未命中:零干预。模型保持其正常的目录流程。
- 每个技能在每个会话中最多注入一次。

✨ 你能得到什么

| 能力 | 作用 |
|---|---|
| ⚡ 步骤前挂钩 | agent/pre-step——注入发生在模型开始思考之前 |
| 🧭 YAML 策略 | 用户可编辑的 ~/.dsh/skill-router.yaml;YAML 损坏时回退到捆绑的默认值 |
| 🔎 whenToUse 触发器 | 已安装技能的 whenToUse frontmatter 作为次级触发器(字面短语匹配,追加在 YAML 规则之后) |
| 🚀 零成本 | 无 LLM 裁判,无嵌入——仅规则(快速、免费、确定性) |
| ♻️ 每会话一次 | 按会话去重注入;没有技能正文会淹没上下文 |
| 🔗 配套 | 与 skill-bartender 的路由表和品味测试配合使用 |

⚡ 快速开始

dsh plugin --profile web add github:akqwpeter-prog/dsh-skill-router

然后重启正在运行的实例(配置文件包在启动时加载)。

验证:说“生成一张海报”——media-tools 会自动注入;说“这个截图帮我检查一下”——vision-review 会注入。没有规则匹配?模型就照常工作。

📸 实际效果

一张图:规则命中 → 技能在模型回答前注入;未命中 → 完全静默。

🧭 策略

~/.dsh/skill-router.yaml
rules:
- match: "(生成|画).{0,12}(图|海报|banner)"
pour: [media-tools]

- 按精确度排序:URL 路径路由优先,媒体、委派、工作流技能在原子技能之前。
- 首个匹配的规则胜出;pour 列出要加载的技能名称。
- YAML 损坏时回退到捆绑的默认值,绝不会中断会话。
- 把它当作数据来写:通过编辑 YAML 而非代码来改进匹配。
- 完整参考:docs/POLICY.md · 捆绑默认值:default-policy.yaml · 演练:docs/EXAMPLES.md。

🧪 已测试

集成测试套件(10 个用例)针对实时配置文件运行:注入、去重、
零接触、拒绝透传、URL 路由、邮件与即时通讯消歧、
误报防护。参见仓库中的 test/,以及
DESIGN.md 中的设计说明和 GOLD-TASKS.md 中的黄金任务列表。

🎯 范围与非目标

- 无 LLM 裁判,无嵌入:仅规则(快速、免费、确定性)。
- 不自动安装缺失的技能:这仍属于 skill-bartender 的
隔离 → SkillSpector → 人工审批流程。
- 规则表即数据:通过编辑 YAML 而非代码来改进匹配。
- 已安装技能上的 whenToUse frontmatter 充当次级触发器
(字面短语匹配,追加在 YAML 规则之后)。将其写为简短的
触发短语;长篇散文永远不会匹配。如今的技能数据大多缺少
该字段——skill-bartender 的品味测试可以回填它。

❓ 常见问题

当没有任何匹配时,它会消耗 token 吗?
不会。没有命中 → 零干预、零 LLM 调用。路由器只读取步骤中
已有的文本并运行正则规则——微秒级,免费。

它与 skill-bartender 有何不同?
skill-bartender 是判断(哪个技能合适、何时保持沉默、如何
安全安装)。本插件是执行(一个确定性的前置步骤钩子,负责
倒出)。二者相辅相成;路由器也可独立使用。

我可以使用自己的规则吗?
可以——将 default-policy.yaml 复制到 ~/.dsh/skill-router.yaml 并编辑。
首个匹配胜出;损坏的 YAML 会回退到默认值。

它会在一个会话中重复倒出同一个技能吗?
不会——每个技能在每个会话中最多倒出一次,因此上下文永远不会泛滥。

🗺️ 布局

dsh-skill-router/
├── index.js               # Cordis 插件:前置步骤钩子 + 倒出逻辑
├── policy.js              # 规则加载 / 匹配(已单元测试)
├── default-policy.yaml    # 内置默认值(复制到 ~/.dsh/skill-router.yaml)
├── test/                  # 策略单元测试 + 集成测试套件
├── DESIGN.md / GOLD-TASKS.md    # 设计说明 + 黄金任务
├── docs/
│   ├── screenshots/how-it-works.png
│   ├── POLICY.md / EXAMPLES.md
│   ├── social-preview.png  # 横幅(通过 scripts/ 重新生成)
│   └── lang/README_ZH.md   # 简体中文
├── scripts/
│   ├── make-banner.py      # 合成 docs/social-preview.png
│   ├── make-diagram.py     # 合成工作原理图
│   └── check-policy.mjs    # 策略校验
├── cordis.patch.yml / package.json   # DSH 打包清单
└── LICENSE (MIT)

🤝 加入 DSH 插件生态

DeepSeek Harness 开发者预览版仍处于面向 Harness
开发者的测试阶段;核心插件和基础 API 将持续迭代。我们期待
与全球开发者一起,在开源、开放、可复用、可组合的基础设施
之上,共同探索智能的上限。

- dsh-plugin 主题
- 快速开始
- DeepSeek Harness 仓库
- 策略搭档:skill-bartender

本仓库带有 dsh-plugin 标签,并
收录于 awesome-dsh-plugin
精选列表。欢迎提交 PR、issue 和翻译。

📄 许可证

MIT

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

💬 加入 DPharness 群聊

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

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