前言¶
DeepSeek Harness (DSH) 的核心設計理念是「一切皆插件」。在長期的項目開發中,會話上下文容易丟失,項目知識難以沉澱。dsh-project-context 插件通過在項目目錄內建立一套獨立的存檔與記憶系統,將 DSH 的事件流會話轉化爲可檢索、可迭代的項目級上下文。
該插件由呼嘯山莊 (P02-1010751281) 維護,遵循 MIT 許可證。它將一個 DSH 會話的生命週期拆解爲四個階段:存檔、整理、沉澱與交接。
安裝與啓用¶
插件需要先構建或直接指向源碼目錄,然後通過 profile 添加。
# 構建或直接指向源碼目錄
dsh plugin --profile web add /path/to/dsh-project-context
安裝後會自動應用包內的 cordis.patch.yml 配置。驗證配置是否生效:
dsh --profile web --dump-config | grep -A3 project-
卸載命令:
dsh plugin --profile web remove dsh-project-context
核心架構與數據流¶
插件內部包含四個獨立但協作的子模塊,通過共享的 helper 進行狀態管理。
四階段處理流程¶
- 存檔:將事件流會話在項目內留檔。通過
/session-log手動觸發,或由turn/end事件驅動。產物包括session.jsonl(權威數據)、session.md(全量渲染)和INDEX.md(機械索引)。 - 整理:將原始對話與記憶系統合併,生成
CONTEXT.md(工作態摘要)和MEMORY.md(記憶庫),並在每輪對話中注入。可通過/context-update觸發。 - 沉澱:將積累的記憶與上下文按低頻觸發(如每 20 輪或 30 分鐘)轉化爲項目技能。通過
/autolearn手動觸發。 - 交接:當上下文佔用越過閾值且沒有後臺子代理運行時,自動觸發。將當前會話摘要、最近原文及舊存檔指針交接給新會話。可通過
/handoff手動觸發。
數據佈局¶
數據存放在項目根目錄的 .agents/ 下:
session-logs/:會話存檔副本,包含INDEX.md和按 ID 分組的會話詳情。memory/:記憶系統。memory.jsonl:權威記憶日誌(append-only)。MEMORY.md:記憶渲染視圖(人讀/注入入口)。CONTEXT.md:工作態上下文(摘要/任務)。HANDOFF.md:最近一次交接摘要。
skills/:沉澱的項目技能。
併發與鎖¶
系統使用文件鎖機制確保多進程安全寫入。MEMORY.md 和 INDEX.md 在寫入前會進行字節級備份,防止崩潰導致數據損壞。
配置與使用¶
配置項不寫入項目文件,而是寫在當前 profile 的設置 patch 文檔中,通過 project-context 條目管理。
常用命令¶
- 手動存檔:
/session-log - 手動交接:
/handoff - 觸發技能沉澱:
/autolearn
驗證配置¶
檢查 profile 中是否正確掛載了插件配置:
dsh --profile web --dump-config | grep -A3 project-
注意事項¶
- 版本差異:README 顯示當前版本爲 v0.2.0,但 package.json 中記錄爲 0.2.1。安裝時請以實際運行環境爲準。
- 交接觸發條件:自動交接需要同時滿足上下文佔用閾值和沒有運行中的後臺子代理兩個條件。
- 會話路徑:DSH 原生會話存儲在
~/.dsh/sessions/,本項目存檔副本在session-logs/中,兩者獨立但內容同步。 - 權限與安全:插件以當前 DSH 進程權限運行,安裝前建議檢查源碼。
源碼結構¶
插件源碼採用模塊化設計,位於 src/ 目錄:
project-context/:存檔模塊。project-memory/:整理模塊。project-autolearn/:沉澱模塊。project-handoff/:交接模塊。shared/:四個模塊共用的鎖機制、狀態門面、文件系統原語等工具。client/:Web 設置卡片與字段定義。
總結¶
dsh-project-context 爲 DSH 提供了一套完整的項目級記憶解決方案。通過機械索引管理會話,通過分層整理管理記憶,通過自動交接維持長期上下文,適合需要長期維護複雜項目上下文的開發者使用。