dsh-session-ecology:DSH 會話生態管家與零重啓整理

前言

長期在 DSH Web 宿主上跑智能體會話,常見痛點是上下文越滾越大、多代摺疊後難以接續、定時巡檢換卷時任務斷檔,以及 sessions/ 與 storages/ 裏已歸檔會話和孤兒緩存越積越多。手工刪文件往往要停進程,誤刪也難以找回。工作區裏的 PROJECT.md 若無限追加,還會拖慢壓縮與檢索。下面介紹的 dsh-session-ecology 面向上述問題,在回合結束空閒時做模型自適應換卷,並提供人工整理、回收站級清理與 PROJECT.md 寫入護欄,且破壞性清理默認移入操作系統回收站而非直接抹盤。

這是什麼

dsh-session-ecology 是 DeepSeek Harness(DSH)的工作流類插件,維護者爲 ksoulness。它同時承擔「會話生態管家」(三閘門空閒換卷)、「人工會話整理工作臺」、零重啓「已歸檔 / 孤兒目錄 / 幽靈 ID / 孤兒緩存」清理,以及 PROJECT.md 項目記憶護欄;Web 端提供四標籤頁設置中心,對話輸入框下方可選換卷距離進度條。插件以當前 DSH 進程權限讀寫工作區與會話存儲,安裝前應自行審閱 GitHub 倉庫 源碼與 MIT License。

環境要求:Node.js >= 22.19.0;宿主爲 @deepseek-ai/dsh(Web Profile),依賴 @deepseek-ai/cordis ^4.0.1 與 @deepseek-ai/dsh-tools。

核心功能

模型自適應三閘門空閒換卷

換卷僅在 turn/end(completed)且會話收件箱完全空閒時觸發,不打斷在途回合。三閘門閾值隨會話模型真實上下文窗口 \(W\) 縮放:

  1. Gate 1(壓後真實負載):pressureTokens >= 0.40 * W(默認 40%)
  2. Gate 2(表面對話體積):surfaceTokens >= 1.00 * W(默認 100%)
  3. Gate 3(多代摺疊疲勞):標準模型 totalTokens >= 350 * W;高階/高成本模型(Pro / Opus / GPT-5/6 / o1/o3 / *-responses)爲 150 * W

換卷後在同工作區創建續接會話(命名如 原名 · #2、#3,遵循 80 字節 UTF-8 上限),繼承 agentPreset、modelSelection、permissionPreset、置頂與人工批註;v0.8.0 起從上卷日誌提取最後一輪真實問答,在新卷首條回執中用四行模板交代「之前在幹什麼 / 最後你說 / 最後它回」。定時任務採用「新建 → 回讀校驗 → 刪除舊任務」原子遷移,失敗則回滾並保留舊會話。自動跳過 bot/state.json 管理的外部機器人會話與 subagent 會話。

人工會話整理

收藏、待復盤、P1~P5 優先級、標籤與備註寫入 storages/session-ecology.json,不污染 session.v4.jsonl。支持批量歸檔/取消歸檔、置頂、跨工作區搬家(更新 workspaceRegistry、會話 cwd 與相關緩存,無需重啓宿主)。仍掛活躍 schedule 的會話默認攔截誤歸檔。清理主會話時可級聯派生 subagent 目錄與緩存至系統回收站並記審計臺賬。

零重啓清理已歸檔與孤兒資源

無需停機即可在宿主內存中解綁已歸檔會話。正常活躍工作區會話、含真實記錄的「未分組」活躍對話、掛活躍 schedule 或標有收藏/待復盤的會話,以及默認最近 60 分鐘仍有寫入的會話(active_guard_minutes=0 可顯式放行)均受保護。purge_archived 等動作支持 dry_run 先盤點;空間統計區分「移入回收站字節數」與「清空回收站後真實騰出空間」,並對賬 storages 下無主 JSON。

PROJECT.md 護欄與巡檢

tools.guard 默認限制 PROJECT.md 不超過 15360 字節且不超過 250 行,引導歷史流水沉澱至 docs/HISTORY.md;對已超標文件允許淨縮減的編輯放行。交互式長會話臨近壓縮水位時,systemPrompt.context 可提醒同步架構決策至 PROJECT.md。支持多工作區只讀巡檢容量、四段式結構、docs/HISTORY.md 與失效相對鏈接。

Web UI 與 Agent 工具

對話框底部(Token 與費用狀態欄之間)可顯示三閘門換捲進度條(showDockMeter);設置 → 會話生態 / 會話管理 含生態水位、會話整理、項目記憶、閾值設置四頁,基於 SSE 推送。

向 Agent 註冊 fleet_ecology_status、fleet_session_handover、fleet_ecology_sweep、fleet_session_organize 等工具,可用自然語言查詢水位、換卷、清掃與整理。Loopback HTTP 掛載於 /dsh-session-ecology,僅允許 127.0.0.1 / ::1,POST /api 校驗 Origin / Sec-Fetch-Site。

安裝與啓用

推薦從 Releases 下載 dsh-session-ecology-0.8.0.tgz(或於本地執行 npm pack 生成包),放入 $DSH_HOME/plugins/。

在 Web Profile 的 package.json 中引用並安裝:

{
  "dependencies": {
    "dsh-session-ecology": "file:../../plugins/dsh-session-ecology-0.8.0.tgz"
  }
}
cd "$DSH_HOME/profiles/web"
pnpm install --prefer-offline

在 $DSH_HOME/profiles/web/cordis.patch.yml 中啓用(若由 dsh plugin 管理,可合併插件內置 patch):

- id: session-ecology
  name: dsh-session-ecology

驗證:

dsh --profile web --dump-config
curl http://127.0.0.1:3079/dsh-session-ecology/health

運行配置持久化在 $DSH_HOME/storages/session-ecology.json,也可在 cordis.patch.yml 的 config 字段做初始覆蓋。常用鍵包括 enabled、autoHandover、pressureRatio(默認 0.40)、surfaceRatio(1.00)、standardFatigueMultiplier(350)、proFatigueMultiplier(150)、projectMemoryMaxBytes(15360)、projectMemoryMaxLines(250)等,完整表見倉庫 README。

典型用法

Web 端:在設置面板查看三閘門水位,必要時手動換卷;會話整理頁批量歸檔後,用「清理已歸檔」先 Dry-Run 再執行;項目記憶頁查看各工作區 PROJECT.md 容量與斷鏈。

健康檢查:

curl http://127.0.0.1:3079/dsh-session-ecology/health
curl "http://127.0.0.1:3079/dsh-session-ecology/session?sessionId=<id>"

Agent:例如讓模型調用 fleet_ecology_status(可加 include_project_memory: true)查看全艦隊水位與 PROJECT.md 報告;fleet_session_organize 的 purge_archived 配合 dry_run: true 盤點後再正式清理。

若宿主同時安裝 dsh-plugin-notify-feishu 且 notifyFeishu 爲 true,換卷完成可推送飛書卡片;未安裝則靜默跳過。

適用場景與注意

適合長期運行 DSH Web、會話數量多、依賴定時巡檢艦隊、且需要可控換卷與磁盤 hygiene 的團隊或個人。清理雖走系統回收站,仍會在本機刪除或移走文件,執行批量 recycle / purge_archived 前務必用 Dry-Run 與收藏/schedule 保護規則覈對列表。

插件能力隨 DSH 與 cordis 版本演進,當前文檔對應包版本 0.8.0。社區目錄 skillhub.cn 插件頁 爲獨立收錄站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-session-ecology 把換卷、整理、回收站級清理和 PROJECT.md 上限收口到同一插件與 Web 面板,減少長會話失憶與磁盤孤兒堆積。源碼、Release 與 issue 見 GitHub;目錄介紹見 skillhub.cn。

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

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

小夜