dsh-goodmemory:爲 DeepSeek Harness 增加自動跨會話記憶

前言

DSH 的組織方式強調「一切皆插件」。對使用 DSH 做智能體編排的人來說,一個實際問題是:會話之間沒有穩定的長期記憶,上一輪裏確認過的偏好、工作目錄約定或任務規則,到了下一輪又要重新交代。

下面介紹 dsh-goodmemory。它是 hjqcan 維護的 DSH 插件,使用 GoodMemory 作爲記憶後端,在 DSH 模型步驟前召回相關記憶,並在成功回合後寫回已完成的人/助手對話。

這是什麼

一句話定位:dsh-goodmemory 爲 DeepSeek Harness 提供 automatic, durable, cross-session memory,後端是 GoodMemory。

它解決的是 DSH 會話上下文跨會話延續的問題:插件在模型調用前把相關記憶作爲可識別的 DSH user/message 放進上下文,在回合成功後把選定文本寫回 GoodMemory。這樣模型可見上下文仍可從 DSH session log 重建,同時不同會話可以共享長期記憶。

插件不復制 DSH JSONL 日誌,也不創建第二套記憶 schema;它只把選定文本發給 GoodMemory,GoodMemory 仍是記憶和存儲的單一事實來源。許可證爲 MIT。

核心功能

1、自動記憶讀寫:在 DSH 模型步驟前召回相關記憶;在一個 DSH 回合成功完成後寫回已完成的人/助手交換。

2、可控召回條件:召回只在最終的 agent/pre-step batch 包含 direct user text 時運行;僅工具調用、插件注入上下文等不會觸發另一輪查找。

3、限定寫回內容:寫回包含 direct user text 和 final assistant text;排除 tool calls/results、reasoning、images、recalled memory 和 injected context。

4、保持上下文可追溯:召回進來的上下文是一個被識別的 DSH user/message,因此模型可見上下文仍可從 session log 重建。

5、兩種運行模式:
- managed 模式:默認模式,啓動 goodmemory-http-bridge sidecar,在隨機 loopback 端口工作,使用內存 bearer token,並將 SQLite 數據放在 $DSH_HOME/goodmemory/memory.sqlite。
- external 模式:連接已有的 GoodMemory HTTP bridge;激活時會驗證 health、精確的 phase-39.http-memory.v1 contract,以及 authenticated recall。

6、失敗處理:runtime 的 recall/writeback 失敗會記錄日誌,DSH 回合繼續;startup 失敗仍然 fatal。

7、首版範圍:0.1.1 版本不增加 model tools、MCP server、DSH command 或管理 UI。

安裝與啓用

先確認版本。dsh-goodmemory@0.1.1 支持如下組合:

包 / 運行時 支持版本
@deepseek-ai/dsh 0.1.0-rc.8
goodmemory 0.7.5
Node.js ^22.19.0 或 >=24.0.0
Bun,僅 managed mode >=1.3.14

DSH 仍是 RC。dsh-goodmemory 固定 DSH peers;新的 DSH RC 在集成測試通過前不支持。

從 npm 安裝並啓用 web profile:

dsh plugin --profile web add dsh-goodmemory@0.1.1
dsh --profile web --dump-config
dsh --profile web

第一條安裝插件,第二條查看合併後的配置,第三條啓動 web 組合。

如果要使用 headless 組合,將上面的 web 替換爲 headless:

dsh plugin --profile headless add dsh-goodmemory@0.1.1
dsh --profile headless

本地源碼安裝:

pnpm install
pnpm pack
dsh plugin --profile web add ./dsh-goodmemory-0.1.1.tgz

經過上面的步驟後,插件 bundle 會插入一個 goodmemory row;後續 profile、home 或 CLI patch 層可以替換它的完整配置。

Managed mode

Managed mode 是默認模式。它會啓動已發佈的 goodmemory-http-bridge,在隨機 loopback 端口上運行,創建 in-memory bearer token,啓用 recommended retrieval preset,並把 SQLite 數據寫到:

$DSH_HOME/goodmemory/memory.sqlite

使用前先安裝 Bun。若 Bun 可執行文件不在默認位置,可以用 GOODMEMORY_BUN_BINARY 指定:

export GOODMEMORY_BUN_BINARY=/path/to/bun

如果要改數據庫路徑,可在 profile 的 cordis.patch.yml 中覆蓋 goodmemory row:

- id: goodmemory
  name: dsh-goodmemory
  config:
    mode: managed
    databasePath: /absolute/path/to/memory.sqlite

在正常 HMR 或進程退出時,插件會等待進行中的 writeback,然後終止 managed sidecar。如果 sidecar 在激活後崩潰,插件不會自動重啓它;DSH 會記錄失敗並繼續運行,直到插件重新加載。

External mode

External mode 連接已有的 GoodMemory HTTP bridge。token 放在環境變量中,不放在 DSH config 裏:

export GOODMEMORY_HTTP_BRIDGE_TOKEN='replace-with-a-secret'
goodmemory-http-bridge --recommended

在 cordis.patch.yml 中配置 external:

- id: goodmemory
  name: dsh-goodmemory
  config:
    mode: external
    baseUrl: http://127.0.0.1:8739
    tokenEnv: GOODMEMORY_HTTP_BRIDGE_TOKEN

激活時會驗證 health、精確的 phase-39.http-memory.v1 contract,以及 authenticated recall。配置無效、缺少 token、授權失敗或 contract 不匹配都會導致插件激活失敗。

Scope 與記憶邊界

默認 scope 是 DSH-isolated。GoodMemory 的 durable scope 會排除 sessionId,因此相同 user/workspace/agent scope 下的不同 DSH 會話可以共享長期記憶。

如果你需要和另一個 GoodMemory host 共享記憶,需要顯式配置相同的 userId、workspaceId 和 agentId;當另一側省略可空的 workspace 或 agent 字段時,把對應字段設爲 null。

管理入口

首版不引入 model tools、MCP server、DSH command 或管理 UI。健康檢查、review、revision、export、forgetting 等管理動作繼續使用 GoodMemory 的 CLI 和 Inspector:

goodmemory inspector serve

適用場景與注意

適合以下情況:

  • 你在使用 DSH 組合智能體流程,並希望跨會話保留長期記憶。
  • 你願意用 GoodMemory 作爲記憶後端,並需要 managed sidecar 或 external bridge 兩種接入方式。
  • 你希望模型可見上下文仍可從 DSH session log 重建。

需要注意:

  • DSH 是 RC,dsh-goodmemory 固定 DSH peers,新的 DSH RC 需要等待集成測試通過。
  • 插件以當前 DSH 進程權限運行;安裝前應檢查源碼、依賴和 MIT 許可證。
  • runtime recall/writeback 失敗會記錄並讓 DSH 回合繼續;startup 失敗仍然 fatal。
  • managed sidecar 崩潰後不會自動重啓,需要重新加載插件。
  • external mode 的 token 應保留在環境變量中,例如 GOODMEMORY_HTTP_BRIDGE_TOKEN。
  • 首版不提供額外模型工具、MCP server、DSH command 或管理 UI。

結尾

dsh-goodmemory 的價值在於把 GoodMemory 接進 DSH 的模型步驟:pre-step 前召回相關記憶,成功回合後寫回選定文本,同時保持 DSH 會話日誌可重建。

GitHub:https://github.com/hjqcan/dsh-goodmemory

目錄頁:本文材料未提供可覈實 URL,可按插件名 dsh-goodmemory 在 DSH 社區目錄檢索。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜