dsh-tui-workspace-sidebar: Workspace Inbox Sidebar in dsh-TUI

前言

在 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 为准):

  1. 运行中 — agent 处于回合内;行与项目计数使用聊天自带的盲文 spinner(80ms 一帧)。处于计划模式(dsh-plan-mode 写入的 plan/mode)的行用主题计划色旋转。
  2. 已结束但未读 — 你在其他会话时某回合结束;行显示 ●(失败为 ✕),最初几秒加粗。
  3. 等待你的回答 — 调用了 ask_user_question 或 exit_plan_mode;绿色 ● 加 待回答 后缀。后台会话在宿主返回 NO_PROVIDER 时,插件可搁置问题并在收件箱点击后再投递(relayQuestions,默认开启)。
  4. 已结束且已读 — 跳转或按 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,可按上文命令安装并在重启后打开 ▣ 收件箱 面板。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye