前言¶
在 DeepSeek Harness(DSH)里長時間跑智能體時,上下文會不斷累積,系統會通過 Compact 把歷史消息壓縮掉以控制 token 佔用。對依賴代理 API、且後端按 Session ID 做賬號或配額輪詢的部署來說,若出站會話標識一直不變,Compact 之後仍可能被當成同一條長會話,輪詢策略不一定按預期觸發。
下面介紹社區插件 dsh-session-rotate-on-compact(維護者 Hugo16,目錄分類 admin-security):在 DSH 側會話保持不變的前提下,僅在 Compact 成功 後生成新的出站 Session ID,讓代理把下一次請求識別爲新會話,從而觸發賬號輪詢;Compact 失敗則不切換,也不會重新發送已被壓縮掉的歷史消息。
這是什麼¶
dsh-session-rotate-on-compact 是面向 DSH 的會話輪換插件。README 中的定位是:當 DSH 完成一次自動或手動 Compact 後,插件會生成新的 Session ID,使代理 API 將下一次請求識別爲新會話,從而觸發賬號輪詢。
插件當前版本爲 0.1.0(見 GitHub 倉庫說明),運行環境要求 Node.js >= 20(見倉庫 package.json 的 engines 字段)。
核心功能¶
以下能力均來自倉庫 README 的「功能」說明,安裝後由插件在 Compact 流程中生效,無需額外配置文件(資料中未列出獨立配置項)。
- DSH 會話保持不變 — 不新建 DSH 會話,只調整出站 LLM 側會話標識(與
package.json中 description 一致)。 - Compact 成功後切換 Session ID — 僅在壓縮成功時輪換。
- 自動 Compact 與手動 Compact 均支持 — 兩種觸發方式走同一邏輯。
- Compact 失敗時不切換 — 避免在異常狀態下誤換會話。
- 不重新發送已壓縮掉的歷史消息 — 輪換標識時不回放已被 Compact 移除的內容。
安裝與啓用¶
安裝命令以 GitHub README 爲準。在 PowerShell 中執行:
pnpm dsh plugin --profile web add "https://github.com/Hugo16/dsh-session-rotate-on-compact.git"
安裝完成後 重啓 DSH,插件通過 Cordis patch(cordis.patch.yml)接入 DSH 生命週期。
典型用法¶
資料中未提供單獨的 CLI 示例或配置片段;典型用法即:安裝並重啓 DSH 後照常使用 Compact(自動或手動)。當某次 Compact 成功結束時,插件會自動生成新的出站 Session ID;下一次經代理發出的 LLM 請求會攜帶新標識,由代理側按既有策略識別爲新會話並參與賬號輪詢。
若 Compact 未成功,Session ID 保持原樣,行爲與未安裝插件時一致(除插件本身 hook 外無額外副作用)。
適用場景與注意¶
適合誰
- 使用 DSH 做長對話或長任務,並定期依賴 Compact 控上下文。
- 出站走代理 API,且代理或上游按 Session ID 區分會話、做賬號輪詢或多 key 調度。
使用注意
- 插件在 當前 DSH 進程權限 下運行;安裝前建議在 GitHub 查看
index.js、cordis.patch.yml及許可證,確認與自身環境匹配。 - 社區目錄頁(SkillHub)與 DeepSeek / 幻方無官方從屬關係;插件爲社區維護,星標等元數據以目錄與倉庫頁面爲準(目錄線索星標爲 0)。
- 本插件只解決「Compact 成功後輪換出站 Session ID」;不替代 DSH 自身的會話管理、Compact 策略或代理側輪詢配置。