dsh-session-handoff:輪次可見、到限自動交接的 DSH 工作流插件

前言

在 DSH 里長時間跑同一個會話時,對話輪次會不斷累加,上下文也會越來越滿。常見做法是手動開新會話、自己整理進度再粘貼過去——步驟多,也容易漏掉關鍵文件或約束。下面介紹社區插件 dsh-session-handoff(維護者 xiaohui-zhangxh):在輸入框下方常駐狀態欄,把啓動時間、累計工作時間與輪次擺到明面上;達到可配置的上限時,自動寫交接文件並把任務接到同一工作區的新會話裏繼續。

這是什麼

dsh-session-handoff 是 DeepSeek Harness(DSH)的第三方插件,分類爲工作流。它在 DSH 輸入框下方注入狀態欄與設置面板,宿主側負責輪次統計、交接判定與創建接續會話,瀏覽器側負責展示與交互。插件以 MIT 許可發佈,當前倉庫版本爲 1.2.0(見 package.json)。社區目錄頁:skillhub.cn/plugins/xiaohui-zhangxh/dsh-session-handoff;源碼:github.com/xiaohui-zhangxh/dsh-session-handoff。該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

核心功能

常駐狀態欄

狀態欄從左到右顯示:

  • 啓動:會話創建時間(createdAt),非當日會話會帶日期。
  • 工作時間:各輪從 turn/start 到 turn/end 的時長之和,輪間空閒不計;進行中的輪次每秒刷新。
  • 輪次:輪次 n/上限;接近上限時輪次會變爲警示色。還可顯示交接階段文案,例如「正在寫交接文件…」「已交接 → …」等。

「啓動 · 工作時間」與「輪次 n/上限」各是一個可點擊膠囊;懸停有高亮。技術細節見倉庫 docs/TECHNICAL.md。

工時與輪次面板

  • 點擊 啓動 · 工作時間:打開「工時記錄」面板,展示啓動時間、最後對話結束時間(最近一次 turn/end)與總工作時間。
  • 點擊 輪次 n/上限:打開設置窗,可調最大輪次、自動交接、啓用監控、立即交接等;兩個面板互斥,點窗外或 Esc 關閉。

自動交接

在 turn/end 之後判定:當輪次 ≥ 最大輪次(默認 30)且開啓自動交接時,插件會向當前會話注入交接指令,要求模型用 write 寫出交接文件(任務目標、進度、未完成事項、關鍵文件、決策與約束等)。交接輪結束後:

  • 交接文件存在 → 在同一工作區創建新會話(沿用原會話選中的 agent preset),命名爲「原會話標題 第N次交接」,並向新會話發送「先讀交接文件再繼續」的提示;
  • 文件缺失 → 重試一次;仍缺失則用會話日誌生成兜底文件再轉移。

默認路徑爲 <會話工作目錄>/tmp/handoff/<時間戳>-<會話短id>.md,可通過設置裏的 handoffDir 修改相對目錄。每個會話最多交接一次;已交接的舊會話可通過設置窗中的「打開接續會話」手動跳轉。若當前頁面正看着本次轉移,交接完成後可自動切到接續會話(同一對舊/新會話只自動跳一次)。

安裝與啓用

需要 DSH 0.2.x 的 Web 或桌面 profile。安裝後務必完整重啓 DSH(宿主半邊不會熱重載 Node 模塊)。

方式一:克隆後用 link 安裝(推薦,便於後續 git pull 更新)

git clone https://github.com/xiaohui-zhangxh/dsh-session-handoff.git
dsh plugin --profile desktop add "$(pwd)/dsh-session-handoff"

方式二:在 DSH Plugins 頁安裝

側欄 → Plugins → Add plugin,填入:

https://github.com/xiaohui-zhangxh/dsh-session-handoff

啓用後完整重啓 DSH。若新版本改動了依賴,link 安裝方式下可在插件目錄執行 dsh plugin --profile desktop install 後再重啓。

典型用法

1、安裝並重啓 DSH 後,在任意會話輸入框下方應看到狀態欄;默認 enabled: true、autoHandoff: true、maxRounds: 30。

2、長任務開發過程中觀察 輪次 n/上限;接近上限前可在設置裏調高 maxRounds,或提前點擊 立即交接 主動轉移。

3、到限且自動交接開啓時,按提示讓模型寫完交接文件;接續會話落在原工作區,標題帶「第N次交接」,在新會話中繼續任務即可。

設置持久化在 profile 目錄下的 session-handoff.settings.json(無 DSH_PROFILE_DIR 時用 $DSH_HOME/session-handoff.settings.json)。默認值包括:

{
  "enabled": true,
  "autoHandoff": true,
  "maxRounds": 30,
  "handoffDir": "tmp/handoff"
}

排查或腳本集成時,可訪問本機接口 http://127.0.0.1:<端口>/session-handoff/api(GET 讀設置與狀態,POST 的 action 爲 settings 或 handoff)。跨站請求返回 403。完整字段與邊界見 TECHNICAL.md。

適用場景與注意

適合誰:在同一工作區裏做長鏈路智能體任務、希望輪次與工時可見、又不想手動複製進度到新會話的 DSH 用戶。

使用前請知悉:

  • 插件以當前 dsh 進程權限運行,安裝前應閱讀源碼與 MIT 許可證。
  • 只處理根會話;子代理(origin: subagent)不參與交接。
  • 接續會話繼承工作區與 preset,但不會繼承會話內 cd 過的子目錄(工作目錄信息應在交接文件中)。
  • DSH 不會自動更新第三方插件;Plugins 頁安裝的需卸載重裝才能拉新 commit,link 安裝則 git pull 後重啓即可。

結尾

dsh-session-handoff 把「還有幾輪、幹了多久、該不該換會話」從憑感覺變成狀態欄上的數字,並在到限時用交接文件把上下文負擔卸給新會話。需要安裝步驟與截圖可看 GitHub README;實現與 API 以 docs/TECHNICAL.md 爲準。目錄頁:https://www.skillhub.cn/plugins/xiaohui-zhangxh/dsh-session-handoff。

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

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

小夜