DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

MrXiongBear /

MrXiongBear/dsh-settings-hub

Verified

DSH 插件:把散落在「设置」里的第三方插件设置页收拢进一个统一的「插件设置」入口

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@e324d030

dsh-settings-hub

本仓库 100% 由 AI 生成 —— 需求、代码、测试、文档都是人与 AI 对话里由 AI 写出来的,人只负责验收和拍板。 实验性 · 自用性质 · 非商业:它紧贴 DeepSeek Harness(DSH)的宿主接缝(apply / inject / client bundle / 配置解析),只在写它的那个 DSH 版本上验证过,宿主升级后可能直接失效。 安装前必读:DSH 的 profile 加载是全有或全无——一个插件 import 失败会连坐整个 profile,甚至把配置写残。装之前先备份 profile 里的 package.json 与 cordis.patch.yml。 没有发布到 npm:把本目录放进 profile 的 node_modules(或 "<包名>": "link:<本目录绝对路径>"),再在 package.json 的 dsh.profile.bundles 里登记,重启 DSH。 卸载/回滚:从 dsh.profile.bundles 摘掉 → pnpm remove <包名> 或删掉 junction → 重启;出问题就用备份的那两个文件还原。

DSH 插件:把散落在「设置」里的第三方插件设置页,收拢进一个统一的「插件设置」入口。

装一个带设置页的插件,设置面板左栏就多一行;装得越多,左栏越长。这个插件只保留产品自身的页面(账号、通用、模型、内置插件、Agent 预设等),其余页面折叠进一个新的「插件设置」页:

  • 左栏不再一个插件一行;
  • 「插件设置」页列出所有插件提供的设置页,可搜索,点击即在当前页内展开;
  • 展开的是插件原本的页面组件本身(组件、locale、store、inject 全部复用),功能与外观和原生页面完全一致。

行为

  • 新增 settings.section 页:id plugin-settings,标签「插件设置 / Plugins」,order 5(General 之后、Models 之前)。
  • 折叠规则:以下内置页面保持原位,其余全部折叠(含以后新装的插件): account、general、models、plugins、agent-presets、archived-sessions、session-log。
  • 折叠页的组件镜像注册到本插件在注册时声明的子槽 plugin-settings.detail(槽渲染器只允许渲染自己声明过的子槽,因此必须用镜像而不是原槽内联)。
  • 镜像保留原条目顶层的 locale / store / inject——这三项在槽条目上是顶层字段,不在 options 里(options 只有 key/id/order/label/priority)。
  • 若某个页面自己声明了子槽(无法安全镜像),该行改为调用设置外壳的 actions.openSection(id) 跳到它自己的页面。
  • 新装/卸载插件时 settings.section 会触发订阅,本期列表会自动增删。
  • 停用本插件时会还原导航过滤并移除所有镜像,设置面板回到原样。

实现说明

  • 导航过滤:对 slots 服务的 entries 方法做一次局部包装——仅当 key === "settings.section" 时过滤掉被折叠的行,其它 slot 原样返回,停用时按 descriptor 校验还原。槽系统本身不提供「删除/隐藏他人注册项」的 API,这是在不 fork 设置外壳的前提下唯一可行的收敛方式。包装装在原型 owner 上(ctx.slots.entries 每次访问都返回新的绑定包装,不能用函数身份判断),装完会做一次功能自检;若失效则退化为「多一个插件设置页」并显示提示,不会崩溃。
  • 拿外壳 store:sidebar.settings 外壳条目的 store handle 是同一对象,注册本页时把它作为 store 传入,即可在组件里拿到外壳的 useStore(open/activeId)与 actions(openSection 等)。
  • 自检报告:客户端加载后会把自检结果 POST 到 Host 半边的 /api/settings-hub/status,由 Host 落到本包目录下的 .diagnostics.json(浏览器侧状态无法从外部查看,这是唯一的观测通道)。记录包含导航可见/隐藏的 section id、已镜像的页面、过滤是否安装成功,以及被槽错误边界吞掉的崩溃信息。

安装

plugin_manager action:"install_bundle" target:"<repo>"

安装后无需重启;打开「设置」(账号菜单 → 设置,或 Ctrl+,)即可看到「插件设置」。

改代码后需要 remove_bundle 再 install_bundle,并且 bump version,客户端 bundle 才会在页面内重新加载。

文件

  • index.js — Host 半边:只注册 POST /api/settings-hub/status,把客户端自检写进 .diagnostics.json。
  • client.js — 全部 UI 逻辑:字典、样式、settings.section 注册、页面镜像、导航过滤、自检上报。
  • cordis.patch.yml — 插入 loader 条目 settings-hub。
  • icon.svg — 插件图标。
—/ 5

No ratings yet

Verified DSH bundle

Commit e324d030451d

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout