前言¶
在 DeepSeek Harness(DSH)裏跑長會話,常見兩個麻煩:一是上下文窗口有限,早期定下的結論被擠出窗口後,模型就「忘了」;二是換一個會話,上次記下的重點帶不過去。常見對策是把摘要塞進 system prompt,但那隻作用於輔助提示塊,真實對話歷史原樣增長,token 佔用照漲。
下面介紹的 dsh-plugin-context-manager 針對的就是這兩點:自動記錄每輪對話,按優先級把記憶與跨會話置頂筆記注入每次模型請求,並且直接摺疊模型可見的真實對話歷史來降低 token 佔用。
這是什麼¶
dsh-plugin-context-manager 是 luxiwusuobuneng 維護的 DeepSeek Harness 自定義插件,README 標題寫作 dsh-context-manager(上下文管理插件),採用 MIT 許可證。一句話定位:自動記錄每輪對話,按優先級注入記憶與跨會話置頂筆記,並摺疊真實對話歷史以節省 token;數據全部落盤,持久化、重啓安全。
倉庫拆成三個包,各管一層:
| 包 | 所在層 | 職責 |
|---|---|---|
dsh-context-manager-service-luxi |
Host | 持久化存儲、全局記錄、Remote API,以及根平面 agent/pre-step 監聽器:執行排隊的歷史摺疊、把記錄與自定義文本注入真實消息流 |
dsh-context-manager-agent-luxi |
Agent preset 行 | 僅保留回退注入:injectIntoMessages: false 時把記錄注入 system-prompt 快照。記錄邏輯已退役(2026-08-17 起由服務端全局接管) |
dsh-context-manager-ui-luxi |
Web 層行 | 瀏覽器 UI:輸入框右下角「上下文」按鈕與管理窗口 |
核心功能¶
自動記錄與優先級注入¶
每輪對話自動記錄成一條記錄,按優先級存儲:index 0 最重要,注入時按這個順序取前 N 條。開啓 summarize: true 後,每輪交換會異步調用當前默認模型路由,提煉「總結/描述」兩行;調用失敗自動回退爲截斷。
記錄有上限:超過 maxRecordsPerSession 時,刪除 createdAt 最舊的非置頂記錄,置頂記錄不受上限影響。記錄範圍是所有 preset 的根會話;子代理和工作流子會話不記錄,避免污染與 token 浪費。
置頂筆記與自定義文本進入真實消息流¶
置頂(⭐)記錄和「注入設置」裏的自定義文本,會作爲一條真實消息前置注入每次模型請求,由服務端在 pre-step 修改 messages 實現(injectIntoMessages),而不是隻放進輔助提示塊。
真實對話查看與手動摺疊¶
conversationList 列出模型實際看到的每條消息,含角色、文本、token 估算和總佔用,也包括之前摺疊留下的摘要節點。
foldRange 在「真實對話」裏選中一段消息範圍排隊,下次對話開始時由服務端在 agent/pre-step 內執行 compaction.compactRegion(),把舊文本真正摺疊成一條摘要,降低 token 佔用。摺疊需在回合內執行,所以是「下一條消息後生效」;foldStatus 可查詢排隊與執行狀態。
瀏覽器管理窗口¶
安裝後在網頁輸入框右下角出現「上下文」按鈕,點開是管理窗口,含記錄、真實對話、注入設置等標籤頁,支持搜索、編輯、跨會話置頂、拖拽排序、導出、清空。
運行時可調與持久化¶
注入條數(maxInjected)、字符預算(maxInjectionChars、maxCharsPerRecord)、記錄上限(maxRecordsPerSession)等通過 setSettings 運行時覆蓋並持久化,不用改配置重啓。記錄、注入、排隊中的摺疊、摺疊審計全部落盤,重啓後照常工作。
安裝與啓用¶
先說清楚:這是手動多步安裝,不是標準的一鍵安裝。流程是先複製三個包目錄,再手動接線 cordis.patch.yml,最後重啓 DSH。
第一步,複製包文件。把 dsh-context-manager-service-luxi、dsh-context-manager-agent-luxi、dsh-context-manager-ui-luxi 三個文件夾完整複製到 C:\Users\你的用戶名\.dsh\profiles\node_modules\;或者在倉庫根目錄執行下面的命令,由腳本自動複製:
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1
install.ps1 只負責複製三個包,不修改 cordis.patch.yml,接線要手動完成。如果輸出 [FAIL],說明對應包的源目錄缺少 package.json,先檢查目錄擺放。
第二步,接線。編輯 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml,向 insert 列表追加三行。若文件裏已經有 - insert: 開頭的內容,把三行並進去,不要重複鍵:
- insert:
- id: compaction-passive
name: '@deepseek-ai/dsh-compaction-basic'
config:
auto: false
- id: context-manager
name: 'dsh-context-manager-service-luxi'
config:
maxRecordsPerSession: 200
injectIntoMessages: true
maxInjectionChars: 800
maxInjected: 5
maxGlobalInjected: 3
maxCharsPerRecord: 200
summarize: true
maxSummaryChars: 400
maxDescriptionChars: 200
summarizeTimeoutMs: 20000
summarizeMaxInputChars: 6000
summarizeMaxOutputTokens: 300
- id: context-manager-ui
name: 'dsh-context-manager-ui-luxi'
上面是示例默認值:maxInjected 是每次注入取前幾條記錄,maxRecordsPerSession 是單會話記錄上限,summarize 相關項控制 LLM 總結的長度與超時,都可按需調整。
接線有三條約束:
1、compaction-passive 行是瀏覽器摺疊按鈕的依賴,缺行隻影響摺疊功能,不影響記錄。
2、UI 行必須掛在 web 組合(loader 條目);掛到 agent preset 行不會被 clientModules 掃描,bundle 會 404。
3、dsh-context-manager-agent-luxi 行是可選的,只在 injectIntoMessages: false 時提供回退注入,不掛不影響功能。
第三步,驗證。經過上面的步驟後,完全重啓 DSH(Service/Agent 是進程啓動時加載,熱重載無效),打開網頁版對話界面,輸入框右下角出現「上下文」按鈕、點擊能打開管理窗口,即安裝成功。
之後的升級:只改包內代碼時,重複第一步和第三步即可。Service 改動必須重啓 DSH;純 UI(client.js)改動刷新瀏覽器頁面即可。
典型用法¶
摺疊一段真實歷史¶
在管理窗口的「真實對話」頁選擇一段消息範圍執行 foldRange,摺疊會在下一條消息時於 agent/pre-step 內執行生效。程序化調用走 Remote API,例如:
connection.rpc.call('/api', 'contextManager/foldRange', { args: { sessionId, start, end } });
connection.rpc.call('/api', 'contextManager/foldStatus', { args: { sessionId } });
第一行排隊一次摺疊請求,第二行查詢它的執行狀態。
Remote API¶
瀏覽器通過 connection.rpc.call('/api', 'contextManager/<method>', { args }) 調用 Remote API,方法包括:list、count、record、remove、reorder、update、setGlobal、clear、listGlobal、compact、conversationList、foldRange、foldStatus、setInjectionText、getInjectionText、getSettings、setSettings、clearAll。其中 setSettings 的運行時覆蓋會持久化,重啓不丟。
適用場景與注意¶
適合誰:
1、長會話跑得久,早期信息被擠出窗口,想讓舊文本真正離開上下文,而不只是在旁邊加一份摘要。
2、跨會話要帶固定約定或筆記,用置頂記錄注入所有會話。
3、需要覈對模型實際輸入:先用 conversationList 看每條消息的角色、文本與 token 佔用,再決定摺疊和注入。
注意:
1、安裝是手動多步流程,install.ps1 不負責接線,cordis.patch.yml 要自己改。
2、摺疊按鈕依賴根平面的 compaction-passive 行;缺行隻影響摺疊,不影響記錄。
3、dsh-context-manager-agent-luxi 的記錄邏輯已退役(2026-08-17 起由服務端全局接管),只保留回退注入。
4、摺疊需在回合內執行,效果落在下一條消息之後,不是立即生效。
5、插件以當前 DSH 進程權限運行,安裝前建議通讀源碼,確認 MIT 許可證與代碼行爲符合你的使用要求。
小結¶
dsh-plugin-context-manager 把記錄、注入、摺疊、查看收進一個插件,注入與摺疊都作用於真實消息流,持久化和運行時可調讓日常使用少一次重啓。安裝步驟比一鍵安裝多幾步,但每一步的結果都可驗證,適合需要長期維護 DSH 會話上下文的開發者。
- 目錄頁:https://www.skillhub.cn/plugins/luxiwusuobuneng/dsh-plugin-context-manager
- GitHub:https://github.com/luxiwusuobuneng/dsh-plugin-context-manager
目錄頁來自獨立的社區插件目錄,與 DeepSeek、幻方無官方從屬關係;在 DSH「一切皆插件」的理念下,這類第三方插件是對生態的補充。