DeepSeek Harness 插件

jiangyinluwei/dsh-plugInOne

Star 数 ★ 1 分类 UI 增强 收录于 2026-08-29

在设置弹窗中增加「插件设置」导航,将各插件的设置页与卡片统一收纳到可拖拽排序的顶部标签页中。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:jiangyinluwei/dsh-plugInOne

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

原名 dsh-settings-hub,已更名;RPC 命名空间 settingsHub 与旧版数据迁移路径保持兼容。

English | 中文

界面示意图

DSH 插件设置「中转」插件:在设置弹窗左侧导航中新增一行 插件设置,把所有自定义插件的设置内容统一收纳到顶部 tab 标签页中,tab 可手动拖动排序,顺序持久化到 JSON 文件。

本插件是纯中转:不修改任何插件的注册、组件或设置文档。它只做四件事:

  1. 自动检测当前加载的自定义插件贡献的设置内容(读取运行时的实时槽位台账):
    • settings.section 页面 —— 不属于 DSH 内置分区(general / models / plugins / agent-presets)的,例如 dsh-at-file、dsh-market、dsh-status-rotator、dsh-notification、dsh-better-sidebar;
    • settings.general.item 行 —— 插件贡献的(例如 dsh-peak-indicator);
    • settings.plugin.item 卡片 —— 插件贡献的(例如 dsh-peak-indicator、dsh-client-auto-continue、dshmarket)。
  2. 新增一行 插件设置 导航,页面内渲染水平 tab 标签页。tab 可手动拖动;顺序通过 host 半保存到插件部署目录内的 data/order.json,下次加载自动还原。
  3. 在对应 tab 内原样渲染该插件的设置内容:移植了运行时的槽位渲染组合(standard kit、t 语言座位、inject 业务面、store 座位、子级 renderSlot 递归),并带条目级错误边界——语义上与设置外壳完全一致。
  4. 隐藏被收纳内容原来的入口:通过服务层原型补丁过滤设置导航行投影,并通过给渲染宿主(slots._host)包一层 Proxy 过滤 entriesOf/entriesOfSlot——插件 section 行从设置导航消失、插件通用行从「通用设置」页消失、插件卡片从「插件」页消失;但插件的注册本身原封不动。

目录结构

dsh-plugInOne/
├── package.json        # dsh.client.platform: web + dsh.bundle.patch
├── cordis.patch.yml    # loader 装载项
├── dsh.plugin.json
├── lib/index.js        # host 半:settingsHub/loadOrder + saveOrder(JSON 文件读写)
└── lib/client.js       # 浏览器侧 bundle(手写,无构建步骤)

安装(web profile)

node <DSH_HOME>/profiles/node_modules/@deepseek-ai/dsh/lib/bin.js plugin --profile web add "file:<仓库路径>"

安装完成后需要手动重启 DSH(插件列表在启动时装载),重启后建议强刷页面(Ctrl+R)。

注意:如果 pnpm 因供应链策略(minimumReleaseAge)拒绝安装,可用 pnpm add "file:<仓库路径>" --config.minimum-release-age=0 在 profile 目录下直接安装, 并手动把插件名补进 dsh.profile.bundles。

重启后的验证步骤

  1. 打开侧边栏底部「设置」→ 左侧导航应只剩内置行 + 插件设置。
  2. 点击「插件设置」→ 顶部 tab 列出各插件;拖动 tab 改变顺序,顺序保存在插件部署文件夹内(如 ~\.dsh\profiles\web\node_modules\dsh-plugInOne\data\order.json)。
  3. 每个 tab 内应显示对应插件的设置内容(原样)。
  4. 「通用设置」页下方不再显示插件条目(例如 peak-indicator);「插件」页卡片区不再显示外部插件卡片。

说明与限制

  • 依赖当前设置槽位(settings.section、settings.general.item、settings.plugin.item)与槽位渲染宿主 —— DSH ≥ 0.1.1-rc.2。
  • 内置/核心白名单集中在 lib/client.js 顶部: BUILTIN_SETTINGS_SECTION_IDS、CORE_GENERAL_ITEM_IDS、CORE_PLUGIN_CARD_KEYS。 如果部署新增了内置设置页,需要同步维护这三份清单。
  • 个别插件的 section 与插件卡片 id 不一致时会分成两个 tab(例如 dshmarket 的 market 与 dsh-market);如需合并可自行加别名。
  • 降级路径:若未来运行时移除了 hostFace/_host 结构,插件会失去「隐藏」与「聚合」能力,但聚合行仍会显示内容、原入口保持不变,不会拖垮页面。
  • 客户端 bundle 可热更新(client-hmr 轮询),但 slots._host 代理与原型补丁只在全新页面加载时生效,改动后请强刷页面。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。