前言¶
在 DeepSeek Harness (DSH) 的開發實踐中,長期記憶往往被當作靜態數據集處理,容易導致“陳舊注入”(已結束的項目仍佔據上下文預算)或“有效時間丟失”(無法記錄事實何時爲真或失效)。ForeSight 旨在將記憶視爲具有明確時序語義的調度數據,通過生命週期管理機制,解決上述問題。
插件定位¶
ForeSight 是一個爲 DeepSeek Harness (DSH) 提供時序方面長期記憶的插件。它不依賴硬編碼行爲,而是通過可配置的策略文件來驅動記憶的衰減、注入和衝突解決。
核心功能¶
ForeSight 的核心設計基於語言學中的“體”與“錨”兩個維度:
- 體:控制記憶的生命週期階段,如進行體(持續進行,會過期)、完成體(已結束,永久)、未然體(待驗證)和恆常體(恆常事實,如用戶偏好)。
- 錨:定義事實爲真的時間範圍,如時間點、時間區間、開放區間或無時間限制。
- 生命週期管理:自動執行衰減(錨點過期)、TTL 回退、續期提醒、前瞻性審查和預測驗證。
- 衝突解決:提供保守/激進兩種旋鈕(β),基於證據進行衝突裁決。
- 架構特性:代理無關設計,支持可插拔的嵌入和 LLM 服務,使用 SQLite 向量存儲。
安裝與啓用¶
安裝需在 DSH 的 profile 目錄下執行:
# 在 ~/.dsh/profiles/<name>/ 目錄下
pnpm add @foresight/memory
啓用時,需在 cordis.patch.yml 中配置插件並指定數據根目錄、嵌入服務和數據庫文件:
# cordis.patch.yml (profile-level)
- id: foresight-core
config:
memoryRoot: '<your data directory>' # 例如 /home/you/.config/foresight
dbFile: 'foresight.db'
embedBaseUrl: 'http://localhost:11434'
embedModel: 'nomic-embed-text-v2-moe'
配置與數據目錄¶
數據存儲在本地目錄,不在倉庫中。目錄結構如下:
<memoryRoot>/
├── SOUL.md # 個性設定(需複製 templates/SOUL.md.example)
├── user.md # 用戶檔案(需複製 templates/user.md.example)
├── policy.yaml # 策略配置(需複製 templates/policy.yaml.example)
└── foresight.db # SQLite 向量存儲(自動創建)
首次運行前,需手動複製模板並調整配置:
mkdir -p ~/.config/foresight
cp templates/SOUL.md.example ~/.config/foresight/SOUL.md
cp templates/user.md.example ~/.config/foresight/user.md
cp templates/policy.yaml.example ~/.config/foresight/policy.yaml
配置優先級爲:顯式選項 > 環境變量 > policy.yaml > 默認值。
注意事項¶
- 實驗性狀態:插件目前處於實驗性狀態,分類法、策略模型和機制正在積極修訂。
- 依賴要求:需要 Node.js ≥ 20,以及安裝了 cordis 插件系統的 DeepSeek Harness (dsh)。
- 默認嵌入服務:默認使用本地 Ollama,模型爲
nomic-embed-text-v2-moe。 - 權限與數據:插件會創建目錄但不會靜默寫入策略文件,需手動複製模板。
結語¶
ForeSight 通過將記憶管理從 Prompt 工程轉向數據管理,爲 DSH Agent 提供了可控的長期記憶方案。其基於體和錨的時序語義設計,有助於在保持上下文相關性時過濾過期信息。