- Home
- Plugin
- Strumenti e capacità
- dsh-plugin-recommender
dsh-plugin-recommender
mimosa776/dsh-plugin-recommender
Role-based plugin recommender for DSH: asks the user's role (developer, designer, writer, researcher, ops, student...), recommends suitable plugins, and audits each with a local static security scan (dangerous code patterns + 0-100 risk score) and a reputation check (npm downloads / GitHub stars).
Installazione
dsh plugin --profile web add github:mimosa776/dsh-plugin-recommenderREADME
dsh-plugin-recommender · DSH 插件推荐助手
安装后第一次打开会自动弹出对话框,问你是做什么的(可多选,比如「程序员 + 学生」)——只问这一次。之后只有你对 DSH 说「推荐插件」(或 /推荐插件、/plugins)才会再次询问并推荐。每次推荐都会附上每个插件的安全审计(本地静态扫描危险代码)和口碑数据(下载量/星数)。
本项目是入门级 DSH 插件,刻意写得小而清楚,方便边学边改。
它是怎么工作的
DSH 的插件是一个 npm 包,安装进 profile($DSH_HOME/profiles/<名字>)后,由 Cordis 运行时加载。本插件有 host 端(Node 侧,负责逻辑)和 client 端(浏览器侧,负责弹窗)两部分:
安装后第一次打开
│
▼
⓪ client 弹窗(lib/client.js,挂在 shell.overlay)
「你是做什么的?」→ 点角色(或跳过)→ POST 给 host
│ (弹窗没加载时由 host 兜底:第一条消息自动询问)
▼
① 你发一句话(如「你好」)
host 的 agent/pre-step 钩子:自动注入激活指令(记住的角色)
│
② 系统提示(systemPrompt.section)
告诉模型:先问职业 → 推荐 → 逐个安全审计
│
③ 动态工具(ctx.tools.register + defineTool)
recommend_plugins(role, need) → 推荐
audit_plugin(name) → 安全审计 + 口碑数据
│
④ 安全审计(lib/security.js)
本地静态扫描危险代码 + 尽力拉取 npm 下载量 / GitHub 星数
│
⑤ 模型把「推荐 + 风险等级 + 口碑」组织成对话回复给你
(可选安装方式:插件市场一键装 / dsh plugin add)
之后每次想推荐,只要说「推荐插件」或输入 /推荐插件 [职业] / /plugins [职业]。
首次引导状态存在 $DSH_HOME/plugin-recommender.json(只弹一次)。想让它重新弹出?运行 /plugins-reset,或删掉那个文件后重启。
推荐结构(必备 + 增强 + 内置提示)
推荐结果分三层,避免推荐「自带/内置」的东西浪费名额:
- 【必备 · 所有角色】:目前是
deepseek-harness-wallet(余额监控 + 用量记账 + token 账本)——不管什么职业都先装它,随时看到余额心里有数。 - 【按角色增强】:按职业挑的实用插件(程序员 → AgentTeams + ModLens;设计师 → Dream Skin + ModLens;运维 → Pocket + AgentTeams;……)。
- 内置能力提示:明确告诉你哪些不需要装插件——网页搜索是 DSH 内置能力(
web_search工具,模型可直接搜网页)、插件市场(dshmarket)是 DSH 自带功能。
备注:「上下文压缩」「自动备份」目前 DSH 生态里没有查到独立插件,暂不推荐(不编造不存在的插件)。替代做法:上下文由 DSH 平台自动管理;备份 = 定期复制
C:\Users\曲\.dsh\sessions\文件夹(所有会话记录都在那里)。等插件市场可访问后,如果出现真实插件会补进目录。
安全与信任检查(audit_plugin)
每次推荐后,模型会对你推荐出的每个插件调用 audit_plugin,输出一份审计报告:
- 本地静态扫描(无需联网,立即可用):检查插件源码里的危险代码模式——
eval/new Function动态执行、shell 命令执行、启动子进程、Base64 混淆、 网络请求/监听、文件写入删除、读取环境变量、压缩混淆代码、安装脚本 (preinstall/install/postinstall,安装时会自动执行,最需警惕)。 扫描前会先剔除注释和正则字面量,避免「扫描器扫描到自己」的误报。 - 风险评分:0-100 分。≥80 低风险;60-79 中风险;<60 高风险。 报告会列出每个命中信号所在文件与行号,方便你人工核对。
- 口碑数据(在线可用时):npm 近月下载量、GitHub 星数、维护者、最近发布时间; 网络不可用时明确标注「离线」,仅展示本地扫描结果。
⚠️ 重要声明:这是启发式静态检查,不是杀毒软件。它能提示「可疑信号」, 但无法证明插件绝对安全。判断一个插件是否可信,最终仍要综合:来源与维护者、 GitHub 星数与下载量、README 与代码审阅、发布时间线。遇到高风险插件,模型会 明确警告并建议跳过。
目录结构
dsh-plugin-recommender/
├── package.json # 插件包清单:dsh.bundle.patch(host)+ dsh.client(浏览器半区)
├── cordis.patch.yml # bundle 补丁:把插件插入 host 组合(id + name + config)
├── lib/
│ ├── index.js # 插件主体:工具、系统提示、斜杠命令、首次引导钩子、Web 路由
│ ├── client.js # ★ client 半区:首次使用弹窗(ModuleLoader 格式,无需构建)
│ ├── catalog.js # ★ 推荐目录 + 角色匹配 + 引导文案(纯函数,零依赖)
│ ├── security.js # ★ 安全审计:危险模式扫描 + 评分 + 在线口碑数据
│ └── state.js # ★ 首次引导状态持久化($DSH_HOME/plugin-recommender.json)
├── test/
│ ├── catalog.test.js # 标准单元测试(node --test)
│ └── verify-inline.mjs # 沙箱友好的内联校验(不 spawn 子进程)
└── README.md
安装(两步)
# 1. 把插件装进你的 profile("desktop" 是当前桌面端 profile 名)
dsh plugin --profile desktop add C:\Users\曲\dsh\plugins\dsh-plugin-recommender
# 2. 完全退出并重新打开 DSH 桌面端(加载新 bundle 必须重启)
dsh plugin add 会帮你:
- 用 pnpm 把插件装进
C:\Users\曲\.dsh\profiles\desktop\node_modules; - 检测到
package.json里有dsh.bundle.patch,自动把它加入dsh.profile.bundles列表。
所以不需要手动改任何配置文件。装好后在设置里能看到「插件推荐助手」的 loader 条目。
重启后第一次打开会话,注意两点:
- 批准 client 半区:GUI 会出现「是否信任 dsh-plugin-recommender 的界面组件」的确认(DSH 对浏览器端插件的安全机制),点同意即可,只批一次;
- 批准后,首次打开会自动弹出「你是做什么的?」对话框(只弹一次)。
使用示例
第一次使用(重启桌面端后,首次打开会话):
屏幕中央弹出「DSH 插件推荐助手 👋」对话框(可以多选,比如「程序员 + 学生」):
欢迎使用!第一次见面,告诉我你是做什么的(可以多选)…
[程序员 / 开发者] [设计师 / UI 设计] [写作 / 内容创作]
[研究 / 数据分析] [运维 / 系统管理] [学生 / 学习] [普通用户 / 其他]
[确定(已选 2 个)] [先跳过]
你勾选「程序员 / 开发者」和「学生 / 学习」→ 点「确定」→ 对话框变成「已记录 👌」:
你的角色:程序员 / 开发者、学生 / 学习。接下来随便发一句话(比如“你好”),
我就按这些角色帮你推荐插件…
你发:你好
助手:推荐给「程序员 / 开发者」的 DSH 插件:
### 必备 · 所有角色
| 插件 | 一句话介绍 | 安装 |
| --- | --- | --- |
| **Harness 钱包**(deepseek-harness-wallet) | 余额/用量监控 | `dsh plugin --profile … add deepseek-harness-wallet` |
### 按角色增强
| 插件 | 一句话介绍 | 安装 |
| --- | --- | --- |
| **AgentTeams 多智能体团队**(@nanmicoder/…) | 复杂重构与代码评审 | `dsh plugin … add @nanmicoder/dsh-agent-teams` |
| **ModLens 视觉桥**(@liustack/modlens) | 截图报错、UI 调试 | `dsh plugin … add @liustack/modlens` |
提示:网页搜索是 DSH 内置能力,无需安装插件。
提示:插件市场(dshmarket)是 DSH 自带功能,无需安装。
(每个插件都附 audit_plugin 的安全审计与口碑数据)
之后:想说「推荐插件」/ 输入 /推荐插件 程序员 / /plugins 设计师,随时再问。
一句话安装(不用敲命令)
推荐列表出来后,直接说「帮我安装 XXX」就行,例如:
你:帮我装 AgentTeams
助手:(调用 install_plugin 工具,后台执行 dsh plugin add)
✅ 安装命令已执行成功…
⏳ 完全重启 DSH 桌面端后生效。
插件内置 install_plugin 工具:模型收到「帮我装/帮我安装 <插件名>」就自动在后台执行安装,不需要敲任何命令行(小白友好)。装完记得重启桌面端。如果安装失败(网络等原因),会提示改用自带插件市场(dshmarket)安装。
想自己加推荐?
全部推荐数据在 lib/catalog.js 顶部:
- 在
PLUGINS数组加一条:name(npm 包名)、title、summary、tags、install、why(推荐前请确认该插件真实存在); - 必备类:加进
ESSENTIAL_PLUGIN_NAMES(所有角色统一推荐); - 按角色类:在
ROLES数组对应角色的plugins里加上该name; - 内置能力:在
BUILTIN_NOTES里加提示,避免推荐「不用装」的东西; - 给角色补充
aliases(中英文关键词,匹配更准)。
改完目录后运行 node --test test/catalog.test.js 验证数据自洽(测试会检查每个角色的推荐都指向真实存在的插件,且不包含自带的市场)。
常见问题
| 现象 | 原因 / 处理 |
|---|---|
| 装了之后没反应 | 桌面端需要完全退出重开才能加载新 bundle(托盘图标右键退出,再启动) |
| 首次打开没弹窗 | ① client 半区可能还没批准(重启后在 GUI 里点「同意」);② 弹窗已弹过一次(状态记在 $DSH_HOME/plugin-recommender.json)——运行 /plugins-reset 可重新弹出;③ 没弹窗时 host 会在你发第一条消息时自动询问兜底 |
| 弹窗里点完角色没反应 | 点完角色后需要发一句话(如「你好」)才触发推荐;这是 DSH 的消息机制决定的 |
| 说「推荐插件」没触发工具 | 换成更明确的说法,如「帮我推荐插件」或输入 /推荐插件;再不行看 DSH 日志(%APPDATA%\DSH Desktop\logs) |
| 审计报告全是「离线」 | 本机网络不可用或 npm/GitHub 被墙;此时只有本地静态扫描结果,属于预期降级 |
| 某插件被判「中/高风险」 | 认真看命中的文件与行号再决定;可能是合法功能(如调用工具链),也可能确实可疑。高风险建议跳过 |
| 扫描器会不会误报/漏报 | 会。启发式扫描不是杀毒软件:注释、正则字面量已剔除以减少误报,但仍可能有漏报(如字符串拼接的隐藏代码) |
| 推荐结果里没有我想要的插件 | 内置目录是精选的离线数据;先用插件市场(dshmarket)搜索,或在 catalog.js 里加条目 |
| 改了代码不生效 | 插件是以 npm 包形式被 profile 引用的,改完源码后重启桌面端即可(本地路径安装是符号链接,无需重新 add) |
进阶:下一步可以做什么
- 接入真实插件市场数据:dshmarket 会从
https://awesome-dsh-plugin.com/plugins.json拉取社区插件列表,本插件以后可以做成「内置精选 + 在线全量」两级推荐,让推荐目录不再是写死的; - 扫描结果持久化/缓存:把每个插件的审计结果缓存起来(按版本号),避免每次推荐都重复扫描和请求网络;
- 弹窗内嵌推荐结果:目前弹窗只问职业,推荐结果在对话里展示;可以改成选完角色后弹窗直接展示推荐卡片(含风险徽标和安装按钮);
- 多角色记忆:现在只记住一个角色;可以扩展成多角色档案,按需切换。
Plugin correlati
archify (deepseek-harness)
tt-a1i/archify
WeKnora (dsh-weknora)
tencent/weknora
weknora
tencent/weknora
BrowserSkill (dsh-plugin-browserskill)
tencent/browserskill