前言¶
在 DeepSeek Harness(DSH)裏做帶記憶的 Agent,常見做法要麼把摘要和歷史一直塞進上下文,prompt 隨輪數變長;要麼用向量庫切塊檢索,存儲隨歷史線性增長,且相似度召回容易帶上無關舊話。維護者 LFLmLXY 的 dsh-pss(GitHub:LFLmLXY/dsh-pss,社區目錄:skillhub 插件頁)走另一條路:把「這段會話裏用戶關心什麼」壓進一組 LoRA 權重與定長狀態,檢索時用 adapter 改寫查詢意圖,再對接 BM25 知識庫與會話記憶;同時提供 HTTP Dashboard 星圖,把 ingest、意圖、檢索、裝配、編譯等步驟可視化。下文按定位、能力、安裝與用法說明,事實以倉庫 README 與 package.json 爲準(當前版本 0.3.0,許可證 MIT)。
這是什麼¶
PSS(Parameterized Session State)即參數化會話狀態:會話結束或銷燬時通過 compile 把本輪 history 訓進 LoRA;下一輪 retrieve 時加載該會話 adapter,把「問題 + 會話質心 + 關鍵詞」改寫成檢索意圖,查知識庫並拼 context pack 給模型,而不必把整段對話歷史再讀一遍。README 稱存儲與上下文體積與對話輪數無關——狀態文件爲定長的 centroid(32 維)、keywords(48 條)、lora 引用等,落盤在 sessions/<id>.json,實測約 1.5KB。
插件分類爲「記憶」;運行時依賴 Node(package.json 要求 >=20),DSH 側要求 >=0.2.0-rc.1。默認 v0.3 工程閉環可用,意圖生成默認 intentBackend: 'local'(本地啓發式);接上 Python 後端後可切 lora 走真實 adapter。
核心功能¶
O(1) 恆定存儲¶
每輪只更新定長結構:會話質心 EMA(c ← 0.78c + 0.22v)、帶衰減的關鍵詞表、LoRA adapter 引用。歷史本身不進持久狀態,僅在 compile 時餵給訓練器,訓完即棄。
參數化意圖與雙通道檢索¶
用戶口語化提問(例如「那 O(1) 那塊怎麼做的?」)可由會話專屬權重擴成與知識庫更對齊的檢索詞,再 BM25 top-k。工具 pss_retrieve 供模型主動拉記憶;pss_remember 可把結論寫成 digest 進入會話記憶索引,檢索時與內置知識同臺排序並分別標註 [記憶] / [知識]。
實時腦圖探針¶
內置 HTTP 服務(默認 127.0.0.1:8964)提供星圖 Dashboard:探針記錄 user → intent、intent → knowledge、knowledge → answer、session → lora 等關係,約每 3 秒增量拉取圖數據。節點按類別着色(用戶輸入、PSS 意圖、知識片段、AI 回答、系統事件),便於觀察一次 retrieve 的全鏈路。
可選離線 LoRA 訓練後端¶
python_backend 提供 FastAPI 服務(默認示例 http://127.0.0.1:8077)。未裝完整訓練棧時可 PSS_DRY_RUN=auto 走 dry-run,仍寫 adapter_manifest.json 與佔位權重,保證流水線可跑通;有 GPU 時可配置 base model 做真訓練。
安裝與啓用¶
插件以當前 DSH 進程權限運行,安裝前請自行審閱源碼與 MIT 許可證。社區目錄與 DeepSeek / 幻方無官方從屬關係,DSH 生態是「一切皆插件」的獨立插件體系。
方式 A:僅體驗腦圖(不裝 DSH)¶
README 提供的本地演示步驟如下(需自行 clone 倉庫,本文不展開 clone 細節以外的環境假設):
cd dsh-pss
npm install
npm run dev
瀏覽器打開 http://127.0.0.1:8964/。可選:npm run dev -- --no-demo 不灌演示語料,--port=9100 換端口。
方式 B:作爲 DSH 插件安裝¶
在插件目錄構建後,用本地路徑安裝(README 原文示例,請換成你的實際路徑):
npm install
npm run build
dsh plugin add D:/path/to/dsh-pss
等價做法是在 profile 的 cordis.yml 中插入與 cordis.patch.yml 一致的 bundle 配置,例如:
- insert:
- id: dsh-pss
name: dsh-pss
config:
port: 8964
autoStart: true
seedDemo: true
intentBackend: local
裝好後:DSH 裏用戶每說一句話插件會 ingest;模型可調用 pss_retrieve;會話銷燬時自動 compile。腦圖仍在 http://127.0.0.1:8964/。
方式 C:接上 Python 訓練/intent 後端(可選)¶
cd python_backend
pip install -r requirements.txt
python main.py
在 DSH 插件配置中增加:
config:
trainerUrl: http://127.0.0.1:8077
intentBackend: lora
intentBackendUrl: http://127.0.0.1:8077
真訓練需額外 requirements-train.txt 與 GPU,並按 README 設置 PSS_DRY_RUN=0 與 PSS_BASE_MODEL 等環境變量。
典型用法與 HTTP 接口¶
裝入 DSH 後,日常路徑是:對話過程中自動 ingest → 需要上下文時由模型或你通過 pss_retrieve 檢索 → 會話結束 compile 更新 LoRA。也可直接調插件共用的 REST API(默認僅監聽本機),常用路徑包括:
| 方法 | 路徑 | 說明 |
|---|---|---|
| GET | / |
腦圖頁面 |
| GET | /api/pss/health |
健康檢查 |
| POST | /api/pss/ingest |
{sessionId?, role, text} 吸收一條消息 |
| POST | /api/pss/retrieve |
{sessionId?, query} 雙通道檢索 |
| POST | /api/pss/remember |
{sessionId?, text} 寫入結論型記憶 |
| POST | /api/pss/compile |
{sessionId, history?} 觸發編譯 |
自檢可運行 npm run smoke(README 標註 smoke 34 passed)。知識語料可替換倉庫內 knowledge/pss.md。
適用場景與注意¶
適合:希望在 DSH Agent 裏控制長對話的 token 與存儲成本、又需要「會話級」檢索意圖(而非純向量相似度)的開發者;需要調試記憶鏈路時,星圖 Dashboard 比純日誌更直觀。
注意:
- 默認 local 意圖後端是可解釋的啓發式,與接上 lora 後端的行爲不同;評估效果時應明確當前
intentBackend與是否啓用trainerUrl。 - Dashboard 與 API 默認綁定
127.0.0.1,若改端口或暴露到公網需自行評估安全風險。 - LoRA 真訓練依賴 Python 環境與可選 GPU;dry-run 僅保證流程閉環,不代表生產級模型質量。
- 插件依賴
@deepseek-ai/schemastery,並以 peer 方式對接@deepseek-ai/cordis、@deepseek-ai/dsh-tools(在 DSH 環境中由宿主提供)。
結尾¶
dsh-pss 把會話狀態壓成定長結構與 LoRA adapter,用參數化意圖銜接 BM25 與會話記憶,並用星圖把 retrieve / compile 鏈路攤開。若要在目錄裏查看元信息或跟蹤更新,可訪問 skillhub.cn/plugins/LFLmLXY/dsh-pss;源碼與完整 API 列表見 github.com/LFLmLXY/dsh-pss。