DSH 插件市场:在侧边栏浏览、搜索、个性化推荐、安装与一键管理 DSH 生态插件,本地画像零 token 常驻。
$ dsh plugin --profile web add github:2BingLing/dsh-marketRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
把 DSH 生态的插件和整合包收进侧边栏:浏览、搜索、个性化推荐、一键安装与卸载,全程在本地画像上跑,不打开面板时零 token 常驻。
/market/api JSON-RPC 路由(index.ts:128-475),client 半通过 sidebar.footer.action 注入侧边栏按钮、shell.overlay 注入全屏面板;数据源走 GitHub Pages 上的 plugins.json,本地缓存 1 小时plugin/ui/src/index.ts、浏览器入口 plugin/ui/src/client/index.ts、纯 Node 核心库 plugin/core/src/index.ts刚装好 DSH 不确定该装哪些插件的人,不想记一长串安装命令的人;装了 DSH 一段时间、想按自己使用习惯被推荐的人;以及想把若干插件打包管理、希望有"已装/更新/卸载"统一面板的人。
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 未声明 | 通过 cordis 插件协议(dsh.bundle.patch + dshClient.inject)注入 web profile;需启用 @deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-client-ui-slots |
| Node | >=20 | 仓库根 package.json 的 engines 字段声明 |
| 平台 | macOS / Windows / Linux | 安装器在 Windows 上用 cmd.exe,其他平台走默认 shell;目录删除在 Windows 上会兜底用 rmdir /s /q |
| 原生模块 | 无 | 不依赖 node-pty / sqlite / sharp 等原生绑定 |
| 仓库内工具 | blakejs / playwright-core / sharp / tweetnacl | 仅 collector 数据管道使用,不进入插件运行时 |
dsh plugin --profile web add github:2BingLing/dsh-market
安装后重启 harness,侧边栏底部会多一个"插件市场"图标按钮,点击打开 6-Tab 面板:推荐 / 搜索 / 整合包 / 收藏 / 已装 / 设置。
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| DSH_HOME | 路径环境变量 | 改写 DSH 主目录(含 skills / profiles / 数据子目录) | ~/.dsh |
| DSH_SKILLS_DIR | 路径环境变量 | 技能(skill 型插件)安装目录 | 优先取 DSH_HOME/skills,否则 ~/.agents/skills |
| DSH_PROFILES_DIR | 路径环境变量 | profile 依赖清单所在目录 | ~/.dsh/profiles |
| DSH_MARKET_DATA_DIR | 路径环境变量 | 插件市场本地数据目录(画像、设置、绑定、快照) | ~/.dsh/plugins/dsh-market |
| 推荐模式(modeOverride) | auto / novice / veteran | novice 更偏好精选和易上手,veteran 放开权重,auto 走画像自动档 | auto |
| 目标 profile | 字符串 | 后续一键安装 / 卸载落到哪个 profile | web |
| GitHub 绑定 | 设备流 token 或 PAT | 用于同步加星列表(PAT 才能在面板里直接加星/取消加星) | 未绑定 |
本地配置文件落在
~/.dsh/plugins/dsh-market/下:profile.json(画像)、settings.json(模式 + profile 覆盖)、binding.json(GitHub 凭据)、snapshots/(每次安装的快照,用于回滚)。
Q: 这个插件和 dsh.market 网站是什么关系?
A: 只共享同一份每日 06:00 自动生成的 plugins.json 数据。Web 版是独立静态站(dsh.market),插件版是独立 cordis 插件;装插件不影响 Web 站,反之亦然。
Q: 一键安装失败会留下半成品吗?
A: 不会。安装器在执行前会拍快照(包括旧目录备份和旧 package.json),失败后自动回滚到安装前的状态;每步最多重试 2 次才放弃。
Q: 卸载之后数据还在吗?
A: 卸载插件本身只删 skill 目录或从 profile 依赖里移除包名;本地的画像、设置、GitHub 绑定、整合包浏览记录都留在 ~/.dsh/plugins/dsh-market/,重装后能继续用。
Q: 自更新时为什么提示 EPERM?
A: harness 正在运行,pnpm 替换插件目录里的文件可能被占用。先停掉 harness,再手动跑一次 npx @deepseek-ai/dsh plugin --profile <profile> add @dsh-market/plugin@latest,然后重启 harness。
Q: 哪些功能需要联网,哪些能离线?
A: 浏览 / 搜索 / 推荐 / 一键安装 / 卸载 / 已装管理 / GitHub 加星都需要联网;本地画像和搜索索引能复用上次缓存。
Q: 哪些面板功能需要 DSH 服务存在?
A: "AI 语义搜索"依赖 harness 暴露 llm 服务,"AI 代理安装"依赖 subagents 和 agents,"场景推荐"依赖 sessionQuery;服务不可用时面板会降级或给出明确错误。
Q: 如何让自己的插件被收录?
A: 两种方式:给仓库打 dsh-plugin topic,等次日 06:00 自动管道扫描;或在仓库 issue 区用"提交插件"模板开 issue。
入门 — 默认零配置可用,没有额外必填项;高级能力(GitHub 绑定、自更新、整合包)藏在"设置"里,按需打开。
rmdir /s /q 兜底,但仍可能需要关闭占用进程(plugin/core/src/installer.ts:289-310)node >=20,比部分 DSH 官方文档建议的版本更宽,但实际安装仍依赖用户 DSH profile 自带的 Node 运行时(package.json:18-20)