前言¶
DeepSeek Harness(DSH)侧边栏里,会话可以按工作区分组,也可以切成「单列表」——所有会话平铺在一列里。单列表扫标题很快,但看不出这条会话属于哪个项目(工作区),切回分组视图又占纵向空间。下面介绍社区客户端插件 dsh-plugin-session-project(维护者 Schrei5):在单列表视图里,把每个会话所属工作区的名称显示在标题下方;分组视图(按工作区 / 按工作区树)不变,因为分组标题已经给出项目名。
这是什么¶
dsh-plugin-session-project 是一个 DSH 客户端插件(dsh.client,平台 web),同时自带 DSH bundle 补丁层。它解决的是:单列表会话行只有标题时,缺少「这条会话在哪个工作区」的上下文。插件不改动 React 树,通过样式表在会话行下方绘制工作区标题;数据来自客户端服务 workspaces.list 与 sessions.list。
- 仓库:https://github.com/Schrei5/dsh-plugin-session-project
- 社区目录页:https://www.skillhub.cn/plugins/Schrei5/dsh-plugin-session-project
- 当前 package 版本:
1.0.0(以仓库package.json为准) - 许可证:MIT © 2026 Schrei5
核心功能¶
-
仅单列表生效
侧边栏视图选项 → 分组方式 → 单列表 时,每个会话标题下方多一行项目(工作区)名。若侧边栏里已有工作区分组行,插件不生成任何样式。 -
名称规则
- 取该会话所属工作区的标题。
- 仍是首次使用的自动标题default-workspace时,显示本地化文案「默认工作区 / Default workspace」。
- 不属于任何工作区的会话显示「未分组 / Ungrouped」。
- 已归档会话的项目名与标题一样使用更淡的 caption 颜色。 -
搜索与布局
搜索结果的会话行不受影响(无项目名,行高不变)。单列表里会话行高由 32px 调整为 48px,多出的 16px 用于项目名;标题、状态点、时间、悬停操作按钮位置保持原样。 -
分组视图
按工作区或按工作区树的分组视图行为与安装前一致。
安装与启用¶
最低 DSH 版本:0.2.0-rc.2。配置改动由 dsh-hmr(默认开启)热应用,一般无需重启应用。
方式一:装进 profile(推荐)
本包既是 bundle 又是 client plugin,安装后可在插件页面看到并开关。
# 1) 装进 profile(git 地址 / 本地目录 / tarball 都行)
dsh plugin --profile desktop add github:Schrei5/dsh-plugin-session-project
# 或:dsh plugin --profile desktop add /path/to/dsh-plugin-session-project
# 2) 选用这个 bundle(Web 插件页面里打开开关,或改 profile 的 dsh.profile.bundles)
方式二:手写补丁层
不装包时,可在 profile 补丁里插入一行指向本包入口(与方式二选一,勿与方式一同时用,否则会出现两个同 id 的行):
# ~/.dsh/profiles/<profile>/cordis.patch.yml
- insert:
- id: session-project-label
name: /absolute/path/to/dsh-plugin-session-project/lib/index.js
典型用法¶
- 按上文命令将插件加入当前 profile(例如
desktop),在 Web 插件页面打开对应 bundle,或确认dsh.profile.bundles已包含它。 - 打开 DSH 侧边栏,将分组方式设为 单列表。
- 浏览会话列表:每条会话标题下方应出现其工作区名称;切换到「按工作区」分组后,不应再出现重复的项目名行。
- 需要暂停时:在插件页面关闭 bundle,或在补丁行上设置
disabled: true。
移除示例:
dsh plugin --profile <profile> remove dsh-plugin-session-project
并从 dsh.profile.bundles 中去掉该包;若用手写补丁,删除对应的 - insert: 段即可。
实现要点(便于排查)¶
| 文件 | 作用 |
|---|---|
lib/index.js |
宿主侧入口,供 Loader 挂载与 manifest 中的 dsh.client |
lib/client.js |
浏览器侧:生成样式表并订阅会话 / 工作区 / 语言变化 |
cordis.patch.yml |
bundle 补丁:插入 session-project-label |
浏览器侧用 data-row-key="session:<id>" 定位会话行,通过 ::after { content: … } 绘制项目名。
适用场景与注意¶
适合谁
经常在 DSH 里用单列表浏览大量跨工作区会话的开发者;希望在不分组的前提下仍能一眼看到会话归属项目。
兼容性
实现依赖 @deepseek-ai/dsh-client-ui-workspace 当前的会话行 DOM 结构(data-row-key、32px 单行 flex、.title / .time 等)。上游结构变化时,标签位置或行高可能走样;插件通常不会报错,但样式可能需要作者同步更新。
安全与信任
插件以当前 DSH 进程权限在客户端运行,会读取工作区与会话列表相关客户端 API。安装前请自行查看仓库源码与 MIT 许可证;社区目录(SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。
本地用 link: 指向仓库目录开发时,改完 lib/client.js 后主机可能需在重载或重启后重新快照客户端产物;稳妥做法是重启一次 DSH。
结尾¶
dsh-plugin-session-project 用最小侵入的方式补全单列表会话的「所属工作区」信息,分组视图保持原样。需要时可从社区目录页或 GitHub 仓库获取安装说明与截图: