dsh-workspace-optimize
Redraw the left-hand workspace sidebar to add color highlighting, sorting, status indicators, and system notifications. You can also switch back to the original sidebar, which likewise implements some of these features.
Install
dsh plugin --profile web add dsh-workspace-optimize
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-workspace-optimize
该插件对 DeepSeek Harness(DSH) 的左侧工作区视图进行了增强重绘并添加功能:收藏、颜色标签、工作区自由拖动排序、排序与置顶、会话状态灯与 Windows 通知。
支持版本:>= 0.2.0-rc.1
0.安装
在 DSH Desktop 内安装:在 插件 - 添加插件 对话框内输入该插件包名dsh-workspace-optimize即可
通过 npm 安装:
npm i dsh-workspace-optimize
通过 dsh cli 安装:
dsh plugin --profile web add dsh-workspace-optimize
1.特性
侧栏
- 增强侧栏切换:默认开启插件自定义增强侧栏,可切换回原版侧栏;但由于原版侧栏缺少部分api支持,只能实现部分增强功能
- 收藏、优先级、更改颜色:同时为工作区文件夹和会话添加收藏、排序优先级和颜色
- 自定义颜色:预设 9 色之外,可用原生取色器选择任意颜色(
#rrggbb)
- 色块高亮(可选):开启后工作区标题变为圆角色块(自动黑白字),并用同色竖线标出子项范围
- 工作区自由拖动排序:拖动工作区标题行即可调整顺序,持久化到宿主,重启后保持
- 增强侧栏已基本完全还原原版侧栏功能,保证操作习惯平滑过渡
会话状态
- 状态指示灯:
灯 · 状态 · 预览
🔵 蓝色呼吸 · 会话运行中 · 
🟡 黄色呼吸 · 等待审批 / 等待回答 / 计划待审 · 
🟢 绿色常亮 · 已完成 · 
- 时间位置同步显示「等待审批 / 等待回答 / 计划待审 / 已完成」文字
- 桌面提醒:等待审批、等待回答、计划待审、完成、出错时发送系统通知(可配置通知类型、免打扰、窗口可见时是否提醒)
会话操作(悬停与右键)
- 会话悬停:收藏、归档/恢复、更多菜单;工作区悬停:收藏、新建对话、更多菜单
- 会话与工作区都支持右键打开菜单;鼠标悬停可查看会话信息
- 侧栏头部 ★ 打开收藏面板(收藏的会话与工作区)
视图选项(侧栏头部 ☰)
- 分组方式:平铺分组 / 工作区树
- 排序:最近更新 / 手动
- 归档过滤:隐藏已归档 / 全部会话 / 仅已归档
2.使用
切换侧栏样式
「设置 → 工作区增强 → 侧栏样式」:
- 增强侧栏:替换
sidebar.workspaces的渲染 - 官方侧栏:释放占用,官方侧栏原地位恢复(无需重载)
维护区块
桌面端窗口没有浏览器刷新入口,因此设置页提供:
控件 · 用途
刷新侧栏数据 · 只重新拉取侧栏数据,不重载页面
重新加载界面 · 重载页面以加载更新后的 client.js(会丢失未发送的输入)
界面版本 · 对比页面与 Host 的界面修订号,不一致时按钮高亮提示重载
Host 半(index.js、lib/)的更新仍然需要重启应用,页面重载无法加载。
空会话与僵尸会话
- 没有任何消息的空白草稿默认隐藏(与官方一致)
- 打开「显示空白会话」后,它们的标题显示为「新建会话」,便于识别
- 官方不支持删除会话,只能归档;本插件不提供删除
其他设置项
设置页与 /state 中的 settings 字段一一对应:
字段 · 默认 · 说明
enabled · true · 插件总开关(通知与状态广播仍会工作,仅关闭通知)
sidebarMode · optimized · optimized 增强侧栏 / native 官方侧栏
showBlankSessions · false · 是否显示空白会话草稿
workspaceHighlight · false · 工作区色块高亮(圆角色块 + 子项竖线)
notify.complete · true · 会话完成时通知
notify.waiting · true · 等待你确认时通知
notify.error · true · 会话出错时通知
notify.started · false · 会话开始运行时通知
notifyWhenVisible · false · 窗口可见时也通知
dnd.enabled · false · 免打扰时段开关
dnd.start / dnd.end · 23:00 / 08:00 · 免打扰时段(本地时间)
3.通知
- 来源:Host 监听宿主会话事件(
api-session/status、api-session/activity、api-session/error、session/event、approval/request、user-questions/request),把事实推给浏览器半 - 通道:SSE(
EventSource)为主,失败时回退为轮询 - 展示:
NotificationAPI → Windows 通知中心;点击跳转到对应会话 - 正文格式:
- 完成:标题「会话已完成」,正文「会话标题 + 回答摘要(约 60 字)」
- 等待交互:标题「等待你的确认」,正文「会话标题 + 所需权限 / 问题标题」
- 计划待审:标题「计划待审」,正文「会话标题 + 计划摘要」
- 权限被拒时降级为页面内提示;桌面模式通常已授权
- 页面关闭后不再收到通知(通知依赖页面进程)
4.数据与隐私
- 本插件自己的数据是一个 JSON 文件:
%USERPROFILE%\.dsh\workspace-optimize-state.json
(Host 进程设置了 DSH_PROFILE_DIR 时落在该 profile 目录)
- 内容:颜色、优先级、设置、工作区收藏、自建会话收藏
- 纯本地、无遥测、无外部网络请求;HTTP 接口只监听本机 DSH 的 loopback 端口
- 附件/会话日志始终由 DSH 自己管理,本插件不复制、不上传
兼容性
依赖 · 必需性 · 影响
DSH 0.2.x · 必需 · 宿主版本
官方 Schedule · 内置 · 有活跃定时任务时在会话行显示时钟标记
通知权限 · 可选 · 被拒时降级为页面内提示
说明:本插件不声明 sidebar.workspaces 的子插槽(sidebar.workspaces.session.*),因此 Archive Manager 等第三方插件的行级菜单不会出现在增强侧栏中;它们的设置页入口不受影响。
5.已知限制
1. 不支持删除会话:官方没有删除 API(只能归档),本插件同步该语义
2. 行级子插槽不声明:Archive Manager / Schedule 的会话行菜单在增强侧栏中不显示(Schedule 的时钟标记由本插件用官方数据自绘代替)
3. 排序模式:「手动」写入宿主会话顺序;「最近更新」严格按最近用户消息时间排,手动排序在该模式下不可见
4. 状态灯是内存态:完成绿灯在重载页面后清空;「最近修改时间」优先使用日志文件 mtime,重启后可能短暂回退到创建时间
5. 正文搜索最多展示 30 条结果,不做全文分页
6. 跨工作区移动会搬迁会话日志并改写工作目录;运行中的会话、子代理会话、目标已存在同名日志会被拒绝
7. 页面关闭后无通知
8. 侧栏替换属于 shadows-shipped-ui 类型的扩展,DSH 大版本升级后可能需要适配
6.常见问题
切回官方侧栏后侧栏空白?
本插件注册时不声明子插槽,正常情况下撤销注册即可原地恢复官方侧栏。若遇到空白,用「设置 → 工作区增强 → 维护 → 重新加载界面」重载一次。
增强侧栏不显示?
检查设置里「侧栏样式」是否为「增强侧栏」;修改后如未生效,重载界面(或重启应用)。
归档后会话行没有立即消失?
归档采用乐观更新,行会立即按当前过滤隐藏/出现,随后后台静默校正。
状态灯或侧栏刷新慢?
侧栏数据有服务端缓存:日常状态更新是毫秒级。只有三种情况会重建一次(约 1~4 秒):首次启动、标题投影缓存过期(5 分钟)、新会话出现。属一次性成本。
通知没有弹出?
依次检查:系统通知权限、设置里的通知类型开关、免打扰时段、窗口可见时也通知 是否开启。
会话显示「新建会话」?
这是没有任何消息的空白草稿;在设置里关闭「显示空白会话」即可隐藏。
拖动工作区后顺序又回去了?
拖动会先本地排序、再写入宿主的 workspaceRegistry 顺序。若刷新后回退,通常是宿主拒绝了该位置(例如跨层级拖动的锚点无效),重试一次或把目标放在同级兄弟之间即可。
颜色面板拖动时关闭了?
已修复:颜色面板里的优先级滑块不再在拖动时关闭窗口,改为节流保存。
7.开发
- 纯 ESM,无构建步骤:
index.js(Host)与client.js(浏览器,Module Loader 格式) - 语法检查:
node --check index.js node --check client.js node --check lib/api.js node --check lib/sidebar.js node --check lib/state.js node --check lib/adapters.js node --check lib/events.js
- 分支:
main为稳定版;dev为开发分支(新功能先在 dev 验证) - 说明文档:[docs/SIDEBAR-REWRITE.md](docs/SIDEBAR-REWRITE.md)(侧栏替换的设计与实现)、[docs/RESEARCH.md](docs/RESEARCH.md)(宿主扩展点调研)
目录
index.js Host 半入口(apply / inject) client.js 浏览器半(插槽、侧栏、弹层、通知、搜索) lib/state.js 插件自有状态读写与校验 lib/adapters.js 收藏 / 移动 / 置顶 / 排序目标适配 lib/events.js 宿主会话事件采集(状态、活动、错误) lib/sidebar.js 自绘侧栏数据源(工作区、会话、归档/置顶、定时任务) lib/api.js /api/workspace-optimize/* 路由与 SSE locale/ 插件显示名与描述 docs/ 设计文档
8.License
[MIT](LICENSE)
本插件为社区项目,与 DeepSeek AI 官方无隶属关系。
该插件由 DeepSeek-flash 参与开发。
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::5,最后更新 2026-11-02