dsh-panellist:接管 DSH 左侧 Panel 列表的顺序、显示与分组

前言

DeepSeek Harness(DSH)会话界面左侧有一列 Panel 列表(Panellist):插件、自动化任务、技能中心、记忆、SSH、MCP 连接器等入口,由各贡献方在 sidebar.panellist 槽位注册。内核只按注册时的 order 排序渲染,不提供改别人条目的官方 API——顺序只读、没有「分组」概念、名称和图标也由各插件自行决定。

装插件越多,左侧越挤;想隐藏不常用的入口、把几项收进「更多」菜单、或统一改名换图标,单靠各插件自身设置往往做不到。下面介绍社区插件 dsh-panellist(维护者 qwq1999):在 Settings 里集中配置,改完即生效,不改动各插件页面内容。

这是什么

dsh-panellist 是 DSH 客户端里 Panellist 的管理插件(npm 包名 dsh-panellist,当前资料中版本 0.1.1,许可证 MIT)。它让用户接管左侧 rail 上 Panel 条目的出现顺序、显示/隐藏、显示名称与图标,以及把多个条目折叠进 Group(点击一行展开 flyout 菜单)。配置写在 Settings 新增的标签页「Panel list / 面板列表」;也可编辑 $DSH_HOME/panellist.json。README 标明状态为 implemented,行为与配置以仓库 README 及 docs/schema/config.schema.json 为准。

核心功能

管理范围

  • 内核自带的 Panellist 项与第三方插件注册的项一视同仁,运行时发现 id,文档中的 id 仅作示例。
  • 本插件自己的 Settings 标签不在 Panellist 里,因此不会被自己管理。

顺序与分组(Sequence)

Sequence 是有序列表,每一项要么是单个 Panel 条目,要么是一个 Group:

  1. 每个 Panel 条目在整个 Sequence 中恰好出现一次。
  2. Group 占 Sequence 中的一个位置,内部再包一组有序的 Panel 条目。
  3. 只允许一层嵌套(Group 内不能再套 Group)。
  4. 空 Group 无效;仅含 1 个成员的 Group 允许,但管理界面会提示。

典型布局示意(dropdown(a b c) 表示一个 Group):

写法 左侧 rail 效果
a c b d e 五个独立行
a dropdown(b c d e) a 一行,其余收进一个 Group
dropdown(a b c) d e 前三项在一个 Group,d、e 独立

显示与隐藏

  • 只有 Shown / Hidden 两种状态;Hidden 表示不在 rail 上出现,条目仍存在,可通过管理面板或其它方式激活。
  • 若 Hidden 的条目当前正被打开,其 rail 行会临时显示,避免「人还在这一页,左侧却没有对应入口」。
  • Group 成员也可 Hidden:含义是不出现在 Group 菜单里;成员仍计入 Group,顺序与触发器高亮逻辑不变。

名称与图标

  • Label 覆盖:只影响 rail 行文字、折叠态 tooltip、无障碍名称;不改 Settings、命令面板等其它位置的原文名。
  • Icon 覆盖:可保留原图标;从插件内置 24 个矢量图标中选;或粘贴 SVG(经白名单清理,单文件上限 64 KB,内联渲染以跟随主题色)。

Settings 页能力

在 Settings 左侧增加「Panel list / 面板列表」入口,页面包括:

  1. Sequence 编辑器:拖拽排序、拖入/拖出 Group、「与下一项分组 / 取消分组」、上移/下移、逐行 Hide/Show。
  2. 外观:点行名编辑名称与图标,Group 可编辑触发器名称、图标与成员顺序。
  3. 配置导入/导出:导入前校验;失败则不改磁盘。
  4. 打开配置文件:调用 POST /panellist/api/reveal 在系统文件管理器中定位 panellist.json。
  5. 缺失 Panel:配置里仍有 id 但注册已消失时列出,可确认后「Clean up missing panels」。
  6. 自检:启动时探测四项内核假设;失败时降级为只读等模式,可「Re-run self-check」。

首版还包含中英文 UI、孤儿配置保留与清理、导入导出;明确不管理右侧卡片 Tab、Settings 对话框内 Tab 顺序,也不替换 DSH 内置 Panellist 机制。

安装与启用

发布后,在 desktop profile 安装(manifest 含自动挂载层,无需手改 profile 配置):

dsh plugin --profile desktop add dsh-panellist

卸载:

dsh plugin --profile desktop remove dsh-panellist

若卸载不干净,README 说明可编辑 ~/.dsh/profiles/desktop/package.json 去掉 dependencies 与 dsh.profile.bundles 中的 dsh-panellist,并删除 node_modules/dsh-panellist。外部状态仅配置文件 $DSH_HOME/panellist.json;删除该文件可恢复出厂 Panellist 行为。

版本要求(来自 package 声明):DSH >=0.2.0-rc.2 <0.3.0-0。

本地开发需先关闭 DSH 桌面应用,在仓库根目录 pnpm install、pnpm build 后使用 link: 挂载;细节见 GitHub README §6,本文不展开 git clone 流程。

典型用法

在 Settings 里改 rail

  1. 打开 DSH Settings,进入 Panel list / 面板列表。
  2. 在 Sequence 列表中拖拽调整顺序;将相邻条目「Group with next」收成 Group;对 seldom 用的项点 Hide。
  3. 点击某行名称,在外观编辑器里改 label 或 icon(原图标 / 内置集 / 粘贴 SVG),预览会按 rail 尺寸显示。
  4. 关闭 Settings;变更立即反映到左侧 rail,无需重启。

直接编辑配置文件(可选)

配置按 profile 分节存放在同一文件,路径 $DSH_HOME/panellist.json(权限 0600,原子写入)。 illustrative 结构如下(权威定义见仓库内 JSON Schema):

{
  "schemaVersion": 2,
  "profiles": {
    "desktop": {
      "sequence": [
        { "type": "entry", "id": "plugins" },
        {
          "type": "group",
          "id": "group:work",
          "label": "更多",
          "icon": { "kind": "original" },
          "members": ["schedules", "skills", "memory"]
        },
        { "type": "entry", "id": "ssh" }
      ],
      "entries": {
        "plugins": { "label": "插件市场", "icon": { "kind": "builtin", "name": "puzzle" } },
        "mcp-connector": { "hidden": true }
      },
      "meta": { "updatedAt": "2026-10-10T03:00:00.000Z" }
    }
  }
}

sequence 为部分权威:已列出的按此顺序;未列出的条目会由程序追加到末尾。刚安装且 sequence 为空时,不会写入任何 order,行为与未装管理插件时一致。

Settings 页也可导出/导入整份 JSON;或在页内使用「Open config file」打开 $DSH_HOME/panellist.json 手改后再保存(经 host 校验写入)。

适用场景与注意

适合谁:长期在 desktop profile 使用 DSH、装较多插件或 MCP/SSH 等入口,希望左侧 rail 更短、更顺手,又愿意在 Settings 或 JSON 里维护一份布局的用户。

实现方式(了解即可):插件通过运行时改写 slot 注册对象的 order、label、图标组件,并用最小 DOM/CSS 处理「从 rail 上拿掉一行」与 Group 菜单;卸载或 disable 时会恢复注册字段并清理注入样式(README dispose 说明)。

安全与信任:

  1. 插件在 当前 dsh 进程权限下运行,host 半部提供 loopback 上的 /panellist/api 读写配置;安装前请阅读 GitHub 源码 与 MIT 许可证。
  2. 依赖 DSH 若干非公开内部行为,启动自检失败时会降级(例如无法隐藏、只读等);升级 DSH 小版本后若 rail 异常,可在 Settings 内查看自检结果。
  3. 新装的插件若注册了新的 Panel 条目,会自动出现在 Sequence 末尾(按该插件自报 order),无需先「采纳」;卸载贡献方后,配置会保留并标记 missing,需用户确认清理。

社区目录 SkillHub 上的 dsh-panellist 页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态本身是「一切皆插件」,目录站是独立发现渠道。

结尾

dsh-panellist 解决的是 Panellist「只读投影」带来的布局不可控:在不动各插件页面的前提下,统一排序、隐藏、改名换图标,并把多项收进 Group。若你已在用 DSH desktop,可按上文命令安装,从 Settings → Panel list 开始调整。

  • 目录页:https://www.skillhub.cn/plugins/qwq1999/dsh-panellist
  • 仓库:https://github.com/qwq1999/dsh-panellist
羽毛球分组比赛记分
小程序二维码

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

Xiaoye