前言¶
DSH 的會話越長越容易失憶:需求在哪一輪討論的、代碼改到哪一版、測試通過了幾輪,等會話頁滾到看不見頂部時,這些信息已經找不回來了。靠手寫筆記或在另一處 Markdown 裏記日誌,要麼跟不上工具調用,要麼事後抄不全。
dsh-session-journal 就是這個場景的解法:它在 DSH Web 端右側欄維護一份會話工作日誌,把每一輪 turn 歸納成若干「工作項」(work item),每項帶狀態、結果、遺留問題(open items)與決策記錄,並提供從日誌直接跳轉到任意一輪對話的入口。
這是什麼¶
dsh-session-journal 是一個 DeepSeek Harness(DSH)Web 插件,由 Edison-A-N 維護,當前版本 0.3.1,許可證 MIT。它定位爲會話級工作日誌,不替代對話,而是從會話日誌中提取事實、用模型做歸納,在右側欄形成結構化的工作記錄。
它面向的是長會話、多階段任務的開發者:需求、研究、設計、編碼、評審、修復、測試混在一個會話裏,需要隨時回答「我們做到哪了」「還差什麼沒做完」「剛纔哪一輪改了什麼」。
核心功能¶
Now 概覽:會話是否在運行、當前處於哪個階段(例如 Review #2)、一行狀態摘要;當 agent 停下來等待用戶輸入時,顯示高亮的 “Your turn” 提示。同時展示會話合計:open items 數、決策數、turn 數、耗時、改動文件數與行數、通過的測試數。
工作項(Work items):會話的 turn 按目的分組,而不是按時間順序排列,每項一張卡片,顯示狀態、覆蓋的 turn、涉及的文件與測試,以及仍 open 與已 decided 的數量。展開後能看到目標(goal)、結果(result)、遺留項、決策,以及兩個列表:
- Jump to a turn:每個 turn 一行,顯示該輪用戶的請求與經歷的階段,點擊後聊天區滾動到該 turn 開頭(必要時自動加載更早歷史)。
- Changed files:文件名、目錄、增刪行數、觸碰它的階段,點擊可在側欄預覽文件。
Header chip:會話標題旁展示當前工作項與階段的小標籤,點擊即打開日誌面板。
語言跟隨 DSH 的界面語言設置(中/英);摘要語言在面板底部單獨選擇,可與 UI 語言一致,也可強制中文或英文。
安裝與啓用¶
安裝命令來自 README,注意 --profile web 這個限定:
dsh plugin --profile web add github:Edison-A-N/dsh-session-journal
插件自帶 bundle patch(dsh.bundle.patch 與 cordis.patch.yml),CLI 與 Web UI 的 Plugins 頁都會一步加載。裝完重啓 DSH、刷新頁面、打開任意會話,在右側欄起始頁選 Work log,或點擊會話標題旁的 chip。
環境要求:DSH >=0.2.2-alpha.2 <0.3.0-0(0.2.x 及預發佈版),Node >=22.19。當前目錄頁顯示星標爲 0。
典型用法¶
1、讓日誌自動維持:只要會話有一輪結束,插件在後臺把這一輪做模型摘要,再重新分組工作項;面板開着的會話每幾秒檢查一次,直到無事可做。失敗的摘要一分鐘後重試,共三次;無進展五分鐘後放棄。
2、查看和追溯:展開工作項卡片看 goal、result、open items、decisions;點 Jump to a turn 裏某一行,聊天區回到那一輪;點 Changed files 裏的文件,在側欄預覽。
3、切換摘要語言:在面板底部選擇,設置按會話緩存,來回切換即時生效。
後臺模型默認使用「該會話自己配置的 provider 和模型」,摘要調用是獨立請求,不觸碰會話或其緩存。若想全局固定一個更便宜的模型,在 DSH 啓動環境(例如 $DSH_HOME/.env)同時設置:
SESSION_JOURNAL_PROVIDER=<provider id>
SESSION_JOURNAL_MODEL=<model id>
SESSION_JOURNAL_EFFORT=low # reasoning effort;"default" 交給路由
# SESSION_JOURNAL_MODEL=off # 不調用模型,只用規則
只設其中一個不生效,改完要重啓 DSH。沒有模型時插件依然工作:階段用規則(編輯、測試、評審)判斷,整個會話合併爲一個工作項。首次展示無緩存的長會話時,逐輪摘要需要一兩分鐘,此期間面板顯示規則階段。
適用場景與注意¶
適合:長時間、多階段、需要事後回溯「哪一輪做了什麼」的 DSH 會話;希望右側欄有一個接近實時的工作面板的開發者。
先講實現方式,再決定是否用。工作項分組與摘要由模型完成,分組結果不一定符合人的直覺(一個 release 步驟可能單獨成項);輪次運行期間 open items 可能落後一輪,等 turn 結束摘要後才追平。跳轉到 turn 依賴聊天視圖內部 UI(右側 turn rail 的點擊),不是 DSH 的公開 API——DSH 更新若改動其 DOM,點擊會失效或提示,其他功能不受影響。另外,聊天列寬度小於 900px 時 rail 默認隱藏,插件只在點擊瞬間臨時渲染;當前主區域必須是 Chat 視圖,否則插件會提示先切回去。
卸載與安裝都建議先看源碼。插件以當前 DSH 進程權限運行,執行文件讀寫與模型調用;安裝前檢查倉庫源碼、README 與 cordis.patch.yml 補丁內容,確認許可證爲 MIT 並將其納入內部許可審查流程。
結尾¶
dsh-session-journal 的價值在於把「聊到哪一步」從記憶問題變成面板問題:事實來自會話日誌,模型只做歸納,摘要按會話與語言緩存,每輪 turn 只花一次模型調用。如果你管理長 DSH 會話並且經常需要回溯某一輪,值得裝上試一個真實項目。
- 目錄頁:https://www.skillhub.cn/plugins/Edison-A-N/dsh-session-journal
- GitHub:https://github.com/Edison-A-N/dsh-session-journal