前言¶
在 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,可按上文命令安裝並在重啓後打開 ▣ 收件箱 面板。