dsh-pinned-panel:在侧边栏会话列表顶部集中展示已固定会话

前言

在 DeepSeek Harness(DSH)里用多个工作区跑任务时,固定(Pin)会话仍分散在各工作区分组下。跨工作区找一条固定对话,往往要在侧边栏里逐个分组展开。DSH 生态里已有侧重「全局托盘」的固定方案;若你只想在官方会话列表里多一个置顶分组、不另开页面、也不改 Host 侧的固定状态,可以看一下客户端插件 dsh-pinned-panel。

这是什么

dsh-pinned-panel(GitHub:OuQiL/dsh-pinned-panel)由维护者 OuQiL 发布,分类为客户端插件,许可证 MIT(见仓库 package.json 与 README)。它面向 DSH Web GUI(桌面端渲染同一 Web 界面),在侧边栏会话列表最上方插入一个 Pinned 分组,汇总 Host 已有的 pinnedSessionIds;点击某一行仍通过官方 uiWorkspace.openSession() 打开,工作目录、上下文与历史与原工作区里点该行一致。

README 明确说明:没有额外面板、没有独立固定页、没有可配置的侧栏图标——只增加这一个分组。

核心功能

下面结构来自 README 的示意(分组默认展开,数字为会话条数示例):

Sidebar
├─ 📌 Pinned                     3      ← first in the list, expanded by default
│   ├─ 🔧 Fix expired login      14:32
│   ├─ 📊 API diff report        Yesterday
│   └─ 📝 Weekly draft           10-21
├─ 📁 default-workspace
│   ├─ Conversation A
│   └─ Conversation B
└─ 📁 another-workspace

已核实的能力要点如下。

  1. 列表首位、默认展开:Pinned 分组排在会话列表第一项;组头可折叠,偏好写入 localStorage。
  2. 不复制会话数据:分组读取 Host 的 pinnedSessionIds 与工作区归属;固定/取消固定仍用官方 📌(悬停还有 ✕),不维护私有固定库。
  3. 原工作区打开:点 Pinned 里某行 = 在该会话所属工作区打开,与在对应工作区分组里点击相同。
  4. 来源可见:每行展示所属工作区;悬停可看完整标题。
  5. 行内操作:悬停出现 ⋯ 菜单,经官方调用支持 fork、复制 session ID、取消固定、归档等;仍在运行的会话归档前会提示先停止再归档。
  6. 原列表保留:已固定的会话仍出现在原工作区分组下;Pinned 只是额外入口,不是「搬家」。
  7. 视觉与主题:行高、组头、圆角等与官方会话行一致,含浅色/深色主题。

Host 端对该插件为 no-op,逻辑全在浏览器;TUI/无侧边栏的配置文件上没有挂载点。

安装与启用

插件以当前 DSH 进程权限在客户端运行。安装前建议浏览仓库源码与 MIT 许可证,确认符合你的环境策略。

在应用内(README 推荐)

  1. 打开 Settings → Plugins。
  2. 选择 Add plugin。
  3. 粘贴仓库 Git 地址:
github:OuQiL/dsh-pinned-panel

对话框也接受完整 https://github.com/OuQiL/dsh-pinned-panel URL、tarball 或本地绝对路径。

  1. 刷新页面后,会话列表顶部应出现 Pinned 分组。

命令行

dsh plugin add github:OuQiL/dsh-pinned-panel
# or pin a profile explicitly
dsh plugin --profile desktop add github:OuQiL/dsh-pinned-panel

卸载

在 Settings → Plugins 中对 dsh-pinned-panel 禁用/卸载,或执行:

dsh plugin remove dsh-pinned-panel

README 记载在已链接的本地 checkout 中修改 lib/client.js 后,刷新页面(Ctrl+R)即可加载新 bundle,无需重装。

典型用法

用法与官方固定一致,插件只改变「在哪里看到」已固定会话。

  1. 在任意工作区的会话行上使用 Host 自带的固定操作,会话进入 Host 的固定集合。
  2. 在侧边栏顶部的 Pinned 分组中查看所有工作区的固定会话;需要时折叠组头以减少占用。
  3. 点击 Pinned 中的某行进入该会话的原工作区继续对话;跨工作区切换时不必先找对应 📁 分组。
  4. 取消固定或归档仍在 Pinned 行或原工作区行上操作,行为与未装插件时相同。

固定状态不由插件单独存储,卸载插件不会清掉 Host 里已有的 pin 集合(仅失去顶部分组这一入口)。

与 dsh-pin 的取舍

README 将 dsh-pin 列为相近插件:二者均为纯客户端、挂侧边栏列表、用官方排序与打开 API。差异主要在形态——本插件是列表内一个 Pinned 分组、保留原行、复用应用单一 pin 层级;dsh-pin 提供全局托盘、可选隐藏原行、工作区 pin 与全局 pin 两级,并自有 localStorage 记录。若要托盘且可隐藏原列表行,选 dsh-pin;若要「列表里多一组、别无附加 UI」,选 dsh-pinned-panel。

适用场景与注意

适合:经常在多个 DSH 工作区间切换、已习惯用官方 Pin、希望固定会话在侧边栏一处汇总入口的 Web GUI 用户。

环境与限制(来自 README Requirements / Known limitations 摘要):

项 说明
运行面 DSH Web GUI;需有侧边栏
测试记录 作者在 0.2.1-rc.2、Windows 上测试
Host 无 Host 半部逻辑
凭证/网络 无额外要求

实现上在侧边栏列表顶部插入 DOM 节点,不隐藏、不重排 Host 已有列表;若 DSH 大改侧边栏结构,分组可能无法放置(控制台会出现 [dsh-pinned-panel] sidebar list seam not found; the Pinned group cannot be placed.),插件会降级为不显示分组而非拖垮应用。「In one list」扁平视图与搜索视图下不会插入该分组。

DeepSeek Harness 社区插件目录托管在独立站点,与 DeepSeek / 幻方无官方从属关系;安装来源以仓库与目录页为准。

结尾

dsh-pinned-panel 在不动 Host 固定语义的前提下,把各工作区的固定会话收到侧边栏列表顶部的 Pinned 分组,点击仍回到原工作区打开。目录与源码:

  • 目录页:https://www.skillhub.cn/plugins/OuQiL/dsh-pinned-panel
  • GitHub:https://github.com/OuQiL/dsh-pinned-panel
羽毛球分组比赛记分
小程序二维码

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

Xiaoye