为 DSH Agent 提供长期记忆——可检索、可检视的持久记忆,带回忆、搜索、浏览与知识图谱工具,支持从十个其他 AI 编码工具导入记忆,并附设置页。
安装
# npm 包(预构建)
dsh plugin --profile web add @zseven-w/dsh-noema
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:ZSeven-W/dsh-noema
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
為什麼選擇 DSH Noema
DSH Noema 將 DeepSeek Harness 與 Noema —— 一個面向編碼代理的本地優先、非向量記憶系統 —— 連接起來,讓代理能夠跨工作階段保留持久知識,而不是每次對話都從零開始。
🧠 持久召回
記憶以可檢查的 Markdown 檔案形式持久化儲存在 NOEMA_ROOT 下(預設 ~/.agent-memory/)。noema_recall 在工作階段開始時載入相關上下文;noema_search、noema_browse、noema_catalog 和 noema_recall_graph 涵蓋查詢、探索與稽核。
📥 從其他工具匯入
noema_import 讀取其他十種 AI 編碼工具的記憶檔案 —— Codex、Claude Code、opencode、Cursor、Grok、WorkBuddy、Antigravity、Trae、Qoder、Hermes —— 將其拆分為小節,並把每一節儲存為一條持久記憶。以內容為鍵的帳本會在多次執行之間以及共用檔案的各種工具之間去除重複。
🛠️ 設定頁管理
Noema Memory 設定頁可設定伺服器指令、記憶根目錄、預算、閒置/呼叫逾時以及引導說明區塊 —— 而 Manage memories 卡片可直接搜尋、瀏覽、新增、審核和刪除已儲存的記憶。
🩺 保活
記憶伺服器保持運行:閒置逾時預設為永不逾時,保活迴圈會在 noema-mcp 子程序崩潰或退出時於背景重新啟動它,檢查間隔和重新啟動退避皆可設定。
🔍 智慧實體抽取
Noema 的抽取引擎將 jieba 斷詞與高精度訊號 —— 英文專有名詞、CJK 名稱與技術術語、加上引號的主題以及重複出現 —— 相結合,並搭配停用詞與路徑篩選,使 PageIndex 主題目錄保持乾淨。
⚡ 熱重載
首次啟動後,外掛程式就再也無需重新啟動:pnpm run build 透過 Cordis HMR 熱重載主機外掛程式,ppnpm run build:client 則透過 client-hmr 的 SSE 通道熱替換瀏覽器套件。
安裝到 DSH
dsh plugin --profile web add @zseven-w/dsh-noema@latest
dsh web
或者,直接從原始碼樹進行本地開發:
dsh plugin --profile web add link:/path/to/dsh-noema
dsh web
link: 通訊協定會將 profile 的相依項目符號連結到此存放庫,因此重新建置的結果立即可見,Cordis HMR 也能監看編譯後的輸出。
此外掛程式透過各平台的可選 npm 套件捆綁 noema-mcp 二進位檔。若要自行建置,可在捆綁的 noema 子模組中執行 cargo build --release -p noema-mcp,或將 Server command 設定指向任意 noema-mcp 建置產物。
記憶工具
面向模型的工具與 Noema MCP 介面一一對應:
| 工具 | 作用 |
|---|---|
noema_recall |
針對查詢召回相關記憶,可指定 token 預算。 |
noema_search |
對已儲存的記憶進行全文搜尋。 |
noema_browse |
按主題或實體瀏覽 PageIndex 目錄。 |
noema_catalog |
將完整記憶目錄渲染為 markdown。 |
noema_recall_graph |
透過連結與共用實體進行多跳召回。 |
noema_neighbors |
從某條記憶出發進行一跳圖走訪。 |
noema_explain |
解釋某條記憶為何被召回或未被召回。 |
noema_remember |
儲存持久的事實、決策、約束或偏好。 |
noema_review_list |
列出待審核的候選項目。 |
noema_review_decide |
接受、拒絕、編輯或合併候選項目。 |
noema_forget |
將記憶標記刪除或硬刪除。 |
noema_policy_get / noema_policy_set |
讀取或更新寫入策略。 |
noema_status |
伺服器與租用戶狀態:計數、索引健康度、儲存根目錄。 |
noema_import |
從其他 AI 編碼工具匯入記憶。 |
每個工具都會傳回統一的封裝結構 { ok, tool, text },其中 text 承載伺服器的完整輸出。
從其他工具匯入記憶
| 來源 id | 全域檔案 | 工作區檔案 |
|---|---|---|
codex |
~/.codex/AGENTS.md + Codex 記憶管線:~/.codex/memories/MEMORY.md、memory_summary.md、rollout_summaries/*.md、extensions/ad_hoc/notes/*.md(跳過 raw_memories.md —— 它是未經整理的原始輸入) |
AGENTS.md、AGENTS.local.md |
claude-code |
~/.claude/CLAUDE.md、~/.claude/CLAUDE.local.md、~/.claude/MEMORY.md |
CLAUDE.md、CLAUDE.local.md、MEMORY.md |
opencode |
~/.config/opencode/AGENTS.md |
AGENTS.md |
cursor |
~/.cursor/rules/*.mdc、~/.cursorrules |
.cursor/rules/*.mdc、.cursorrules |
grok |
~/.grok/AGENTS.md + Grok 跨工作階段記憶:~/.grok/memory/MEMORY.md、每個專案的 MEMORY.md 以及 sessions/*.md 摘要 |
AGENTS.md |
workbuddy |
~/.codebuddy/CODEBUDDY.md(WorkBuddy 記憶檔案)、~/.workbuddy/AGENTS.md、~/.workbuddy/memory.md、~/.config/workbuddy/AGENTS.md、~/Library/Application Support/WorkBuddy/AGENTS.md |
AGENTS.md、CODEBUDDY.md |
antigravity |
~/.antigravity/AGENTS.md、~/.config/antigravity/AGENTS.md、~/Library/Application Support/Antigravity/AGENTS.md(盡力而為;目前尚無文件化的全域記憶儲存) |
AGENTS.md、AGENTS.local.md |
trae |
~/.trae/AGENTS.md、~/.trae/memory/、~/.trae/rules/(以及 ~/.trae-cn 變體) |
AGENTS.md、.trae/rules/ |
qoder |
~/.qoder-cn/AGENTS.md、~/.qoder-cn/rules/、自動記憶根目錄 ~/.qoder-cn/memory/ 和 ~/.qoder-cn/projects/*/memory/(以及 ~/.qoder 變體) |
AGENTS.md、AGENTS.local.md、.qoder/rules/ |
hermes |
~/.hermes/memories/(MEMORY.md + USER.md)以及全域 ~/.hermes/SOUL.md |
.hermes.md、HERMES.md、AGENTS.md、CLAUDE.md |
source參數用於選擇某個工具,省略它則會執行設定中啟用的所有來源。path參數用於選擇專案級檔案的工作區根目錄(預設使用工作階段工作區;只有在開啟 Import workspace files 設定時,工作區檔案才會被載入)。- 匯入透過位於
$DSH_HOME/storages/dsh-noema-imports.json的帳本去除重複,以檔案路徑 + 小節內容為鍵 —— 當多個工具共用同一個專案AGENTS.md時,每個小節只會匯入一次。force: true會重新匯入全部內容。 - 設定頁提供每個來源的核取方塊、啟動時匯入開關、檔案大小上限,以及一個帶有上次執行摘要的 Import now 按鈕。
設定
開啟 設定 → Noema Memory:
| 設定 | 預設值 | 含義 |
|---|---|---|
| Enable memory | on | noema_* 工具的總開關。 |
| Memory guidance | on | 系統提示詞中教授記憶用法的部分。 |
| Start server at boot | on | 在 DSH 啟動時啟動,而非首次使用時才啟動。 |
| Auto-accept new memories | on | noema_remember 立即持久化。 |
| Server command | bundled |
捆綁的 noema-mcp 二進位檔或自訂可執行檔路徑/指令。 |
| Working directory | — | 伺服器的工作目錄(執行 cargo run 時需要)。 |
| Memory root (NOEMA_ROOT) | — | 記憶的儲存位置;留空 = ~/.agent-memory。 |
| Recall token budget | 1200 | noema_recall 的預設 budget_tokens。 |
| Idle timeout (ms) | 0 | 閒置後停止伺服器;0 = 永不停止。 |
| Keep alive | on | 伺服器崩潰或退出時於背景重新啟動。 |
| Keep-alive interval (ms) | 5000 | 背景健康檢查之間的最小間隔。 |
| Call timeout (ms) | 30000 | 每次工具呼叫的逾時時間。 |
| Restart delay (ms) | 1000 | 停止/崩潰與下次啟動之間的退避時間。 |
狀態卡片會顯示伺服器健康狀態,並提供重新啟動/停止操作;匯入區塊用於管理九個記憶來源。
熱重載
外掛程式載入過一次之後,DSH 的 HMR 機制即可完全使用:
主機外掛程式 —— 在 profile patch 中啟用 Cordis HMR 項目,並將其監看根目錄指向本套件的
lib/輸出目錄,同時保留link:相依項目。執行pnpm run build後,正在執行的 DSH 會自動重載外掛程式入口(重載會重新啟動 Noema 伺服器子程序)—— 無需重新啟動伺服器。# ~/.dsh/profiles/<profile>/cordis.patch.yml - id: hmr disabled: false config: root: - /path/to/dsh-noema/lib用戶端套件 ——
ppnpm run build:client會重寫lib/client.js;client-hmr 的 node 端會輪詢每個 graph 套件的 stat(預設 500ms),並透過/plugins/eventsSSE 通道廣播rebuilt幀,瀏覽器便可在不重新整理頁面的情況下熱替換模組。設定 —— 在 Noema Memory 設定頁上所做的每項更改都會透過設定服務即時生效。
熱重載唯一做不到的是載入一個從未出現在啟動樹中的外掛程式:執行中的組合既不監看 profile patch 層(Web 應用未接入 watchUserPatches),也不暴露載入器變更 API(外掛程式清單 RPC 是唯讀的)。因此,一個全新的外掛程式恰好需要重新啟動伺服器一次,之後上述迴圈便完全可熱重載。
開發
pnpm install
pnpm run build # host tsc + client tsdown bundle
pnpm test # build + node --test tests/
e2e 測試會在存在 noema/target/debug/noema-mcp 時針對它執行(否則會被跳過)。
生態系
- DSH Android — 在對話中執行 Android 模擬器或 USB 實機,全部由 adb 驅動
- DSH Crew — 從 Claude Code / Codex 把任務派給 DSH agent
- DSH iOS — 在對話中執行 iOS 模擬器與 USB 連接的實機
- DSH OpenPencil — 在對話中檢視與編輯
.op設計文件
授權條款
MIT
链接
同类插件
vectorize-io/hindsight#coding-agents★ 44741
Hindsight:会学习的 Agent 长期记忆系统,自动召回/保存、知识页、深度反思与按仓库隔离的记忆银行。
volcengine/OpenViking#examples/dsh-memory-plugin★ 39138
面向 DeepSeek Harness 的 OpenViking 记忆与上下文插件:pre-step 自动召回与画像注入、会话捕获、`viking://` URI 防护,以及对接 OpenViking 服务端的 recall/write 记忆工具。
agentscope-ai/ReMe#dsh★ 3547
将 DeepSeek Harness 接入 ReMe 本地优先、自进化的个人知识库:自动把已完成的主 Agent 对话沉淀为用户掌控的 Markdown 记忆,通过 reme_search 结合 BM25、可选向量检索和 wikilink 展开搜索对话与资料,并按日整理长期记忆。
zilliztech/memsearch#MemSearch★ 2706
供 DSH 与其他编程 Agent 共享的 Markdown 记忆,支持自动捕获、步骤前上下文注入、搜索召回,以及通过审阅面板实现 memory-to-skill 自进化。
vshulcz/deja-vu#extensions/dsh★ 1120
读取本机上其他三十三个编程智能体已经写下的会话文件——Claude Code、Codex、Cursor、VS Code Copilot Chat、opencode、OpenClaw、Hermes、Kimi、Cline、Zed 等,包括安装之前的历史:提供 deja_recall、deja_session、deja_blame、deja_fix、deja_how、deja_remember 六个工具与 /deja 命令,并可选地把召回结果加入运行时上下文。本地 BM25 索引,不用大模型,不用向量嵌入,不联网(dsh plugin --profile web add dsh-deja)。
adoresever/graph-memory★ 635
DeepSeek Harness 的可追溯、可检索跨会话记忆:把对话知识沉淀为带类型的图节点(任务/技能/事件)与关系边。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。