前言¶
在 dsh-TUI 里同时挂着多个工作区、后台还有 agent 在跑回合时,主界面往往只反映「当前附着」的那条会话。切到别的项目再回来,容易漏掉已经跑完但未读的回合,或者不知道哪条会话在等 ask_user_question。宿主自带的多会话能力够用,但缺少一个始终可见、按工作区聚合的「收件箱」视图。
下面介绍社区插件 dsh-tui-workspace-sidebar(维护者 Ding-Kyoma):在 dsh-TUI 右侧增加轻量面板,按项目列出运行中、未读、待回答与近期已读会话,并支持一键跳转。插件已发布为 npm 包 dsh-tui-workspace-sidebar@0.1.2,基于 dsh-TUI 0.17.0,只使用公开的宿主接缝,不是 dsh-TUI 官方组件。
这是什么¶
dsh-tui-workspace-sidebar 是 DeepSeek Harness 生态下的 客户端 类插件(分类见 SkillHub 目录页)。它回答一个问题:什么正在运行、你没看的时候什么已经结束、以及你当前在哪里?
实现上采用普通侧边面板标签页(非全屏视图):按工作区分组,每个会话一行,悬停高亮,点击跳转;项目状态图标后的 + 可在该工作区启动新会话。
核心功能¶
面板覆盖当前 TUI 进程中所有活跃工作区,将会话分为四类(资料以 GitHub README 为准):
- 运行中 — agent 处于回合内;行与项目计数使用聊天自带的盲文 spinner(80ms 一帧)。处于计划模式(
dsh-plan-mode写入的plan/mode)的行用主题计划色旋转。 - 已结束但未读 — 你在其他会话时某回合结束;行显示
●(失败为✕),最初几秒加粗。 - 等待你的回答 — 调用了
ask_user_question或exit_plan_mode;绿色●加待回答后缀。后台会话在宿主返回NO_PROVIDER时,插件可搁置问题并在收件箱点击后再投递(relayQuestions,默认开启)。 - 已结束且已读 — 跳转或按
m标记已读后行保留为暗色✓,每个项目默认最多展示 10 条已读(随面板高度可下调,下限为每项目 3 条)。
排序与保留:项目内优先未读与待回答,再运行中,再已读;空闲超过 7 天(默认 retentionHours: 168)的已结束会话会被清扫。当前附着的会话始终列出并用 ❯ 或色调标题标识。
标题栏汇总运行与未读数量(图标为主)。面板还支持 /ws 命令与可配置的 alt+w 快捷键打开侧边栏;标签页显示为 ▣ 收件箱 或 ▣ Inbox。
界面示意(README 中的 ASCII 示例):
2 运行 · ● 2 未读
▸ dsh-plugins ⠋ ● +
● 后台计划 待回答
● 重写 README 5 分钟前
⠋ 给补丁跑个验证 2 分钟前
❯ ✓ 修复登录页样式 刚刚
↑↓ 选择 · Enter 跳转 · n 新建 · m 已读 · r 刷新
安装与启用¶
环境要求:Node.js ^22.19 || >=24,dsh-TUI 0.17.0。
官方 npm 安装命令如下(勿与 github:owner/repo 形式混用):
dsh plugin --profile dsh-tui add dsh-tui-workspace-sidebar
安装后需重启 TUI(已在运行的进程不会加载新 bundle)。若曾链接旧版 @local/dsh-tui-workspace-sidebar 检出,应先移除再添加本包,避免重复的 panel/scene id。
打开方式:Ctrl+B 打开侧边栏,[ / ] 切换面板,/panel 也会列出该面板;亦可 /ws 或默认快捷键 alt+w(可在配置中设为 shortcut: off 关闭)。
卸载:
dsh plugin --profile dsh-tui remove dsh-tui-workspace-sidebar
移除插件不会删除 ~/.dsh-tui/workspace-sidebar.json 中的本地状态,需自行删除该文件若希望清空历史。
典型用法¶
面板获得焦点时,常用键位如下:
| 输入 | 操作 |
|---|---|
↑ / ↓ |
移动选中项 |
Enter |
跳转到选中会话 |
n |
在选中行所在工作区新建会话 |
m |
将选中的已结束行标记为已读(保留行,变暗) |
r |
刷新 agent 名册与工作区标题 |
| 点击行 | 跳转到对应工作区与会话 |
点击项目 + |
在该工作区新建会话 |
跳转通过注册的小型过渡场景完成(面板无法直接调用 channel.resumeTo),成功后会标记已读但行仍保留,便于返回上一会话。
配置写在 profile 的 cordis.patch.yml 中对应插件行(行补丁会替换整个 config,需写出需要的每个键):
- id: workspace-sidebar
config:
lang: auto # auto | zh | en
stateFile: ~/.dsh-tui/workspace-sidebar.json
shortcut: alt+w # off disables it
retentionHours: 168 # 7 days; 0 = drop a row as soon as it is read
relayQuestions: true # false disables parking background questions
lang 默认 auto 时跟随 dsh-TUI 的 /lang;也可固定 lang: zh 或 lang: en。retentionHours 支持小数,上限 720(30 天)。
适用场景与注意¶
适合谁: 经常在 dsh-TUI 里并行多个工作区、依赖后台 agent 或需要扫一眼未读/待回答会话的开发者。
权限与信任: 与所有 dsh-TUI 插件一样,代码在进程内以与 TUI 相同的权限运行,没有沙箱。安装前应阅读源码与 MIT 许可证,并知悉插件会读写本地文件(如 ~/.dsh-tui/workspace-sidebar.json,含会话 id、标题、cwd 与时间戳;不存储消息内容、不发起网络请求)。
其他限制(摘要): 名册仅限同一 TUI 进程;被搁置的后台问题需通过收件箱点击释放;在 macOS 上开发与测试,Linux 预期可用,Windows 尚未测试。不要以不同名称安装两份副本。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-tui-workspace-sidebar 把多工作区会话收成右侧收件箱:运行、未读、待回答与近期已读一目了然,并配合跳转与新建会话。若你在用 dsh-TUI 0.17.0,可按上文命令安装并在重启后打开 ▣ 收件箱 面板。