在 DeepSeek Harness (DSH) 的日常使用中,频繁重复的工作流需要频繁切换会话。当侧边栏会话列表较长时,快速定位活跃会话变得困难。fallow5/dsh-pin-sessions 插件通过将活跃会话固定到侧边栏顶部并集中管理归档会话,解决了这一导航问题。
插件定位¶
这是一个 DSH web 插件,允许用户将活跃会话固定到侧边栏顶部,并提供归档面板以管理被隐藏的会话。
核心功能¶
-
固定与取消固定
- 将会话固定到侧边栏顶部,同时从工作区浏览器中隐藏该会话。
- 取消固定会将会话恢复到工作区浏览器中。
-
归档面板
- 提供设置面板用于管理归档会话。
- 支持批量删除、逐行恢复、按工作区分组以及每页 20 条的分页显示。
-
上下文菜单集成
- 通过
@baihejiangnan/dsh-session-context-menu扩展右键菜单,提供固定/取消固定的操作选项。
- 通过
-
设计逻辑
- 固定即归档:固定操作调用
workspaceRegistry.archiveSession()将会话从工作区浏览器中隐藏;取消固定调用unarchiveSession()恢复会话。
- 固定即归档:固定操作调用
安装与构建¶
在安装前,请确保已安装 Node.js (>=20) 和 pnpm。
cd dsh-pin-sessions
pnpm install
pnpm run build
安装命令:
dsh plugin --profile web add /path/to/dsh-pin-sessions
依赖与架构¶
依赖项¶
该插件依赖以下包:
* 运行时依赖:@baihejiangnan/dsh-session-context-menu(用于上下文菜单)。
* DSH 核心包:@deepseek-ai/cordis、@deepseek-ai/dsh-storage-domain、@deepseek-ai/dsh-typert-protocol、@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-slots、@deepseek-ai/dsh-client-ui-sidebar、@deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-client-ui-primitives、@deepseek-ai/schemastery。
架构设计¶
插件采用标准的 DSH 插件拆分结构:
* 主机侧:负责存储管理(pin_sessions 域)和 TYPERT 远程服务定义(PinsRuntime)。包含 8 个 TYPERT 方法:list、pin、unpin、toggle、isPinned、deleteSessions、listArchived、unarchiveSession。
* 客户端侧:负责 UI 渲染。通过 window.__ModuleLoader__.load 包装器加载,并将 PinnedSection(固定区)和 ArchiveSection(归档区)渲染到侧边栏中。
注意事项¶
- 服务端变更:主机侧代码变更后,需要重启 DSH 服务器才能生效。
- 客户端变更:客户端代码变更后,需要刷新浏览器页面才能生效。
- 前置依赖:必须安装
@baihejiangnan/dsh-session-context-menu才能使用右键菜单集成功能。
总结¶
该插件通过将活跃会话固定到顶部并提供集中的归档管理界面,优化了 DSH 侧边栏的交互体验。适合需要频繁在多个特定工作流之间切换的用户使用。