dsh-stack-composer:按目标用途从插件目录拼出可读、可装的 DSH 插件栈

前言

DeepSeek Harness(DSH)生态里插件数量已经很大,社区维护的 dsh-plugin 精选目录在 2026-10-04 时收录了 4,412 条条目。每条有分类、一行描述、install 命令、星标与下载量,以及注册表对源码检查得到的十种能力标记和 red line 提示。实际选插件时,常见做法是按关键词搜目录、看星标、逐个打开页面——很难系统回答「DevOps 栈还缺哪一类角色」「这个 pick 为什么会上榜」「装之前要重点看哪些能力」。dsh-stack-composer(GitHub:Tim-ReJet/dsh-stack-composer)把「用途 → 角色 → 对全目录打分 → 报告 + 安装命令」做成只读工作流:不替你安装,也不改被评估的插件,只在 DSH 侧写自己的注册表缓存和可选的 --out 输出。

这是什么

维护者 Tim-ReJet,在 SkillHub 等社区目录中分类为工作流。插件一句话定位:根据你声明的用途(例如「一套完整的 DevOps 栈」或「单人 YouTube 频道的内容创作栈」),推断栈需要的角色,用目录里的分类、描述、能力标记与 red line 对每条插件逐角色打分,返回入选插件、打分理由、风险、填不满的缺口,以及每个插件一条安装命令。它不拉取任何插件源码;能力标记表示注册表当时检查到的行为,缺标记只表示「未观察到」,不等于安全。

核心功能

推理依据

注册表条目侧:分类、描述、install、星标/下载、十种能力(fs-read、fs-write、env、network、llm、shell、dynamic-code、host-runtime、credentials、subagent)及 red line。插件侧不抓源码。

从用途到栈

  1. 用途 → 角色:内置 23 个角色(版本控制、容器、密钥、可观测、告警、采集、发布、记忆、编排等)。若用途匹配 8 个预设之一,采用该预设的角色集;否则按用途命中各角色关键词的数量选角色,并用通用角色补全,避免空栈。
  2. 全目录 × 全角色打分:加分减分可解释,每条贡献会印在报告里。信号与权重(摘自 README):
信号 权重
分类名与角色名一致 +6
插件名中最多 2 个角色关键词 每个 +5
描述中最多 3 个角色关键词 每个 +2
角色需要且已声明的能力 +2
角色需要但未声明的能力 −1
最多 2 段「明显是别的活」片段 每段 −4
热度 min(2, log₁₀(stars+1) + log₁₀(downloads+1)/2)
  1. 阈值:某角色得分 ≥6 视为填满;3–6 为宽松匹配;<3 记为 gap,并给出最接近的候选。热度最多 +2,低于宽松匹配门槛,不能单靠星标把角色凑满,报告也不会为了「看起来完整」硬凑插件。
  2. 组装:同一插件只选一次;风险来自注册表 red line;报告汇总能力并集、安装前值得复核的能力标记,以及每个插件一条 install 命令。

会话工具与 CLI

在已 compose 该插件的 DSH 会话中:

  • stack_compose:purpose(必填),可选 perRole、refresh。返回栈、角色与计数及完整报告。
  • plugin_capabilities:query(必填),可选 limit、category、capability。用于装前查单个/一类插件的能力、red line、安装命令与目录页。

命令行与引擎一致,例如:

dsh-stack-composer "a fully equipped DevOps stack" --per-role 2
dsh-stack-composer "a content creation stack" --json > stack.json
dsh-stack-composer --capabilities "browser automation" --limit 5
dsh-stack-composer --capabilities "secrets" --capability credentials
dsh-stack-composer --presets
dsh-stack-composer --roles

常用参数:--per-role(每角色推荐数,默认 2,1–8)、--refresh(重新拉注册表)、--offline(仅用缓存)、--registry(本地文件或 URL)、--json、--out。成功退出码 0,用法或注册表不可读为 2。

配置项

通过 cordis.patch.yml 注入 stack-composer 行,可设 perRole、registryUrl、registryPath(本地快照,测试或离线)、offline。本地开发可在 overlay 里把 name 指到 checkout 的 src/index.js 并设 perRole 等(见仓库 README)。

安装与启用

当前包尚未发布到 npm,从仓库安装:

dsh plugin --profile web add github:Tim-ReJet/dsh-stack-composer

发布后 README 给出的短形式为:

dsh plugin --profile web add dsh-stack-composer

确认层已加载:

dsh --profile web --dump-config | grep -A 5 stack-composer

运行环境:package.json 要求 Node.js >= 20;版本 0.1.0,许可证 MIT。GitHub 星标数为 0(以目录页线索为准)。

典型用法

CLI:按预设用途出报告

下面命令对 DevOps 预设每个角色只列 1 个插件,便于快速浏览(README 示例):

dsh-stack-composer "a fully equipped DevOps stack" --per-role 1

输出包含 preset 名、角色数、插件数、注册表条目数与更新时间,以及每个角色下的插件、得分、why 理由、能力摘要和 install 行;末尾有 risk notes(例如某 vault 类插件同时读凭证与联网)。

会话:自然语言组合栈并查凭证类能力

在会话中可以类似这样用(README 建议):「Compose a security review stack and tell me which picks read credentials.」——先 stack_compose 再对照报告里的 credentials 与 risk notes。

装前能力检索

dsh-stack-composer --capabilities "secrets" --capability credentials

仓库在 samples/ 提交了从线上注册表生成的 DevOps 与 content creation 两份样例报告,可用 npm run check:live 重新生成。

适用场景与注意

适合谁:需要从零或从模糊目标(「研究栈」「内容创作栈」)快速得到可解释的插件短名单与安装命令的 DSH 用户;希望在同一流程里看到缺口和注册表 red line,而不是只看排序列表的人。

只读边界:不安装报告中的插件,也不检测多个 pick 是否冲突。网络方面:除非需要注册表,否则不发起请求;注册表按 URL 缓存在 DSH home,一日缓存,--refresh 可强制更新。

评分与数据的局限(README「Limits」):角色与关键词在 src/roles.js,误匹配可在该文件修词表,报告会打印每条 pick 的理由。2026-10-04 时 4,412 条中有 394 条无能力检查数据,报告会区分「注册表未检查」与「未声明」。这不是质量排行榜:进目录本身是主要质量信号,星标/下载只作 tie-break。

安装前必做:DSH 插件以当前 dsh 进程权限运行。composer 只读目录元数据,你按报告执行的 install 会真正加入插件——安装每条 pick 前仍应阅读其源码、许可证与能力声明,并对照本机安全策略;不要仅凭分数自动全装。

结尾

dsh-stack-composer 把「用途 → 23 角色 / 8 预设 → 对 4k+ 目录条目可解释打分 → 缺口与风险并列输出」固定成工作流插件,适合在扩栈前先规划再逐条人工确认。社区目录页:SkillHub - dsh-stack-composer;源码与完整说明:GitHub - Tim-ReJet/dsh-stack-composer。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye