dsh-session-shift:上下文壓力下自動交接會話

前言

長會話在 DSH 中容易退化,作者自測約 70% 上下文後會出現“只思考不輸出”的情況。DSH 原生的 compaction 是“就地壓縮”,用摘要替換原文,歷史會被改寫。本插件提供另一種方案:當上下文壓力達到閾值或會話被壓縮次數過多時,開一個新會話,保留一份可審閱的原文交接包,舊會話原樣保留。

簡介

dsh-session-shift 是一個 DSH 插件,所有者爲 easerlee。它的核心功能是在上下文壓力觸達閾值時,將當前工作交接給一個新會話。它不依賴模型總結,而是機械提取會話自身的狀態(改動過的文件、用過的工具、最近的消息、停在哪兒),生成交接包落盤。所有操作僅在本地進行,不聯網、不外發數據。

安裝

安裝命令根據宿主環境(桌面端或 Web 端)不同而有所區別。

桌面端(profile desktop):

"<DSH 安裝目錄>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add dsh-session-shift

注意:需先打開過一次桌面端使 profile 初始化,且執行前完全退出應用(profile 有寫鎖)。

Web 端(profile web):

dsh plugin --profile web add dsh-session-shift

注意:首次使用時 profile 會自動初始化。

安裝後需重啓對應端,bundle 列表僅在啓動時讀取。

配置

插件的核心配置位於 profile 的 cordis.patch.yml 中。該文件是 DSH profile 的配置清單,聲明本插件作爲一個 bundle 掛載,並非修改運行時代碼。

配置項示例:

- id: dsh-session-shift
  config:
    enabled: true
    thresholdRatio: 0.6     # 上下文壓力到多少比例觸發交接
    maxCompactions: 2        # 本會話被壓縮幾次後觸發交接(0 = 只看壓力)
    cooldownMs: 300000      # 同一會話兩次交接的最小間隔
    handoffDir: .dsh/handoff
    recentMessages: 14
    maxChars: 24000
    renameOldSuffix: " [已交接]"
    dryRun: false
    stopOldSession: true     # 交接完成後是否停掉老會話當前那一輪

用法

插件提供了工具調用和 HTTP 接口兩種觸發方式。

桌面端試跑(不實際建會話):

handoff_now(dryRun: true)

Web 端或命令行手動觸發:

curl -X POST http://127.0.0.1:<端口>/api/handoff/run \
  -H "content-type: application/json" \
  -d '{"reason":"手動換會話"}'

查看狀態:

curl http://127.0.0.1:<端口>/api/handoff/status

交接機制

自動交接滿足以下任一條件且距上次交接超過 cooldownMs 時觸發:
1. 上下文壓力達到 thresholdRatio。
2. 本會話已被壓縮 maxCompactions 次(默認爲 2)。

交接發生時按順序執行三件事:
1. 先將交接包落盤到 .dsh/handoff/。
2. 新建會話,標題格式爲 原標題(接 N),N 爲舊標題最後編號 + 1。
3. 將舊會話標題加上 [已交接],並根據 stopOldSession 配置決定是否停止老會話當前運行的那一輪。

交接包內容

交接包是 Markdown 格式,全部機械提取,不經過模型:
* 改動過的文件:本會話動過的路徑(最多 120 條)。
* 用過的工具:按調用次數排序的前 12 個工具。
* 最近幾輪消息:用戶消息段 + 助手消息段,按預算從新往舊填充。
* 停在哪兒:最後一條助手消息。

已知限制

  • 兼容性:自動切會話依賴 harness 的 uiWorkspace.openSession 接口。如果 harness 較老沒有該接口,插件不會報錯,也不會自動切換會話,原因會記錄在 $DSH_HOME/handoff-client-report.json 中。
  • 舊會話處理:舊會話只改名不歸檔(有意爲之)。
  • HTTP 接口:僅作用於該宿主進程裏活躍的會話。

許可證

MIT

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

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

小夜