前言¶
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:
- 每个 Panel 条目在整个 Sequence 中恰好出现一次。
- Group 占 Sequence 中的一个位置,内部再包一组有序的 Panel 条目。
- 只允许一层嵌套(Group 内不能再套 Group)。
- 空 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 / 面板列表」入口,页面包括:
- Sequence 编辑器:拖拽排序、拖入/拖出 Group、「与下一项分组 / 取消分组」、上移/下移、逐行 Hide/Show。
- 外观:点行名编辑名称与图标,Group 可编辑触发器名称、图标与成员顺序。
- 配置导入/导出:导入前校验;失败则不改磁盘。
- 打开配置文件:调用
POST /panellist/api/reveal在系统文件管理器中定位panellist.json。 - 缺失 Panel:配置里仍有 id 但注册已消失时列出,可确认后「Clean up missing panels」。
- 自检:启动时探测四项内核假设;失败时降级为只读等模式,可「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¶
- 打开 DSH Settings,进入 Panel list / 面板列表。
- 在 Sequence 列表中拖拽调整顺序;将相邻条目「Group with next」收成 Group;对 seldom 用的项点 Hide。
- 点击某行名称,在外观编辑器里改 label 或 icon(原图标 / 内置集 / 粘贴 SVG),预览会按 rail 尺寸显示。
- 关闭 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 说明)。
安全与信任:
- 插件在 当前 dsh 进程权限下运行,host 半部提供 loopback 上的
/panellist/api读写配置;安装前请阅读 GitHub 源码 与 MIT 许可证。 - 依赖 DSH 若干非公开内部行为,启动自检失败时会降级(例如无法隐藏、只读等);升级 DSH 小版本后若 rail 异常,可在 Settings 内查看自检结果。
- 新装的插件若注册了新的 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