dsh-skill-rag: Configurable DSH Skill Discovery and Retrieval

前言

DeepSeek Harness(DSH)通过 Skill 扩展智能体能力。Skill 库变大之后,若每次对话都把完整目录塞进提示词,上下文会被占满,模型也更容易在无关 Skill 里打转。另一种做法是硬改内置 skill 加载器,但会牵动 instructions、resources 和 procedural-learning 等既有链路。

下面介绍社区插件 dsh-skill-rag(维护者 Kosello,分类:工作流)。它在不改动原有 skill 工具与加载流程的前提下,提供可选的 Skill 发现方式:保留 DSH 默认全量目录、本地关键词检索,或关键词加向量混合检索。

这是什么

dsh-skill-rag 是面向 DeepSeek Harness 的可选 Skill 发现插件。一句话定位:让完整 Skill 库可检索,又不必在每个 prompt 里罗列全部 Skill;原生的 skill loader、说明、资源与相关工具保持原样。

  • 目录页:https://www.skillhub.cn/plugins/Kosello/dsh-skill-rag
  • 源码:https://github.com/Kosello/dsh-skill-rag
  • 许可证:MIT(见仓库 package.json,当前版本 0.2.0)

三种工作模式

插件通过 cordis.patch.yml 里 skill-rag 行的 config.mode 切换行为。新装默认是 catalog,无需 API Key、模型服务或外网。

模式 作用 Embedding 索引
catalog 标准模式,不用 RAG;沿用 DSH 自带全量目录与 loader 无 无
keyword 本地 SQLite FTS5/BM25,配合精简后的 Skill 目录 无 本地关键词索引
hybrid 关键词 + 语义检索 Jetson、Google、OpenRouter 或 OpenAI 兼容端点 带版本号的向量 generation

hybrid 需显式配置;catalog 不会注册 skill_search、不会建索引、不会初始化 embedding 提供商。

环境与依赖

资料中写明的运行条件如下:

  • DSH 0.2.1-rc.2(README 中的 tested target)
  • Node >=22.19,且需原生 node:sqlite
  • hybrid 模式下需任选一种 embedding 来源:本机 TensorRT manager(默认 http://127.0.0.1:8110)、Google Gemini API Key、OpenRouter API Key,或 OpenAI 兼容的 embeddings 端点与模型
  • 不需要额外 SDK 或独立向量数据库

安装与启用

从已发布的 Git 仓库安装(命令来自 README 原文):

dsh plugin --profile web add github:Kosello/dsh-skill-rag

若使用本地 checkout,需先 npm ci、npm run verify,再:

dsh plugin --profile web add "$PWD"

包声明了一个 bundle 行(skill-rag)和可选的 browser client;客户端会在 Settings → Skill discovery 注册配置入口,无需改 DSH shell。

重启 harness 前,可先确认 composition:

dsh --profile web --dump-config | grep -A4 'id: skill-rag'

然后按你平时的服务方式重启 harness。若 agent 正在该服务内运行,宜用外部延迟重启,避免打断当前 turn。

配置要点

配置写在 profile 的 cordis.patch.yml 中 skill-rag 条目;与设置面板编辑的是同一份契约。密钥只写环境变量名,不写明文;设置面板只报告变量是否存在,不展示、不写入 secret 值。

零配置默认(catalog)

- id: skill-rag
  config:
    mode: catalog

本地关键词(keyword)

- id: skill-rag
  config:
    mode: keyword
    coreNames: []              # user/project DSH skills are always retained
    autoIndex: false

启用 skill_search 与精选目录;不构造 embedding 提供商,也不发起 embedding 请求。

混合检索(hybrid)示例

本机 Jetson manager:

- id: skill-rag
  config:
    mode: hybrid
    embedding:
      provider: jetson
      model: Qwen3-Embedding-0.6B-TensorRT
      baseURL: http://127.0.0.1:8110
      dimensions: 1024
      timeoutMs: 15000
    index:
      content: excerpts
    privacy:
      allowRemoteEmbeddings: false
    autoIndex: true

Google Gemini、OpenRouter、OpenAI 兼容端点等完整 YAML 见仓库 README;远程 embedding 需 privacy.allowRemoteEmbeddings: true,且没有自动本地到云端的 fallback——提供商失败时由 onEmbeddingError 决定退回带标签的关键词结果(默认)或严格报错。

索引 generation 与 provider、model、dimensions、内容策略等绑定;换模型或策略会新建 generation,旧的可继续服务直到替换完成。reindex 必须带 --confirm 才会真正重建;模型侧工具不能改 provider、凭证或触发 rebuild。

典型用法

模型可通过 skill_search 检索,例如:

{"query":"render a short video from a photograph on my desktop", "limit":5}

返回的是 Skill 名称与路由摘要,不是完整 instructions;模型仍用未改动的 skill 工具加载原 Skill。搜索与索引不会伪造成功的 skill 结果,read-before-write 与 self-evolve reviewer 仍基于真实加载。

人类可用 slash 命令维护索引与诊断:

/skill-search status
/skill-search models
/skill-search test
/skill-search preview
/skill-search reindex            # prints the data-consent disclosure
/skill-search reindex --confirm  # starts the rebuild
/skill-search cancel

数据出站说明

  • catalog:无额外出站。
  • keyword:无;仅本地 SQLite。
  • hybrid 本机(Jetson / loopback):Skill 卡片与查询留在本机。
  • hybrid 远程:仅发送配置允许的卡片内容与搜索查询;metadata 含名称、描述、触发指引等,excerpts 还含标题与短引言;路径与全文不在卡片内。

适用场景与注意

适合希望在 DSH 里扩大 Skill 库、又不想每次对话塞满目录的开发者;需要语义匹配时可 opt-in hybrid,只想离线关键词时可只用 keyword;想完全保持 stock 行为则保持 catalog 即可。

DSH 社区插件目录(如 SkillHub)是独立生态站点,与 DeepSeek / 幻方无官方从属关系。插件以当前 dsh 进程权限运行;安装前请自行审阅源码与 MIT 许可证,并按 README 配置环境变量与隐私项。

结尾

dsh-skill-rag 把 Skill 发现做成可配置、可关闭的插件层:默认不打扰现有 harness,需要时再打开本地或混合检索,并仍通过原生 skill 工具完成加载。

  • 目录页:https://www.skillhub.cn/plugins/Kosello/dsh-skill-rag
  • GitHub:https://github.com/Kosello/dsh-skill-rag
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye