前言¶
用 DeepSeek Harness(DSH)跑長任務時,上下文窗口再大也裝不下所有歷史:上一週定下的編碼規範、用戶偏好的縮進風格、進行中的重構目標,換一條會話或換一個 Agent 就常常「失憶」。向量數據庫和 MCP 記憶服務能緩解,但部署成本高,還多出一條模型未必會主動調用的召回通道。
社區插件 Engramory(tinqiao-oss/engramory)走另一條路:零基礎設施,用一小撮人類可讀的 Markdown 文件加一個每次會話加載的索引,把「寫什麼、怎麼寫、何時刪改」寫成一套可移植的策展紀律。在 GitHub 上已有 171 星、11 forks,SkillHub 插件庫將其歸類爲「記憶」,安裝狀態爲已驗證(verified)。本文基於 SkillHub 目錄頁與 GitHub 倉庫 README 覈實後整理,供 DSH 用戶快速上手。
這是什麼¶
Engramory 不是數據庫,也不是按相關性加載的 Skill 框架。維護者 tinqiao-oss 將其定位爲:面向小規模、本地、文件式智能體記憶的協議——一套強約束的策展紀律、一份參考規範(SKILL.md)、一個可選的索引上限 Hook,以常駐規則形式加載(DSH 下即 $DSH_HOME/AGENTS.md 中的標記塊)。
記憶庫就是一個目錄:每條事實一個 Markdown 文件,外加一份始終加載的 MEMORY.md 索引。沒有向量、沒有服務端,純文本可直接打開、編輯、diff;若放在 Git 倉庫內,記憶目錄本身應加入 .gitignore。
詞名來自 engram(記憶在大腦中的物理痕跡)+ memory,項目強調「一文件一事實」。npm 包名 dsh-engramory(當前 0.2.3)是 DSH 側的確定性索引上限插件;協議本體當前標記爲 0.10.0 — 實驗性,使用前請了解其能力邊界。
核心功能與亮點¶
1. 四類角色 ontology,以 feedback 爲脊樑¶
筆記 frontmatter 使用四種類型:user(用戶偏好)、feedback(程序性記憶,須含 Why: / How to apply:)、project(進行中的任務狀態,至多一條活躍筆記)、reference(穩定引用指針)。Engramory 不聲稱發明了語義/情景/程序性三分法,而是把 feedback 做成手寫、可審計的程序性記憶集合。
2. 顯式策展契約¶
協議要求模型在寫入前查重、更新而非重複、發現錯誤就刪除,並遵守負向範圍規則——不把 Git、代碼或規則文件裏已有的信息再記一遍。調研中常被忽視的「修改 / 刪除 / 遺忘」操作,在這裏被寫進紀律本身(模型盡力遵守,非硬門禁)。
3. 有界索引,防止靜默腐爛¶
索引每次會話加載;Claude Code 官方文檔寫明只讀前 200 行 / 25 KB,超出部分會被靜默截斷。Engramory 在 150 行 / 20 KB 提醒,逼近 200 行 / 25 KB 時先壓縮再詢問,並提供 Hook 兜底——只攔「變大」的編輯,壓縮類編輯放行。行數與字節雙維度,誰先超限誰觸發。
4. DSH 插件:把上限從「請求」變成「拒絕」¶
僅靠 AGENTS.md 裏的規則塊,模型仍可能忘記跑檢查腳本。dsh-engramory 插件通過 DSH 的 ctx.tools.guard() 做同步、單調的寫前拒絕:一旦 guard 返回理由,後續 listener 不能把決策改回 allow。這是 Engramory 在 DSH 上相對「只貼規則」的差異化能力。
插件還通過運行時 skill 註冊注入完整協議,不依賴手動把文件拷進五個 skill 掃描根目錄之一(拷錯位置會靜默失敗)。
5. 跨宿主可移植¶
同一套紀律可接線 Claude Code、Codex、Cursor、OpenClaw 等;DSH 側提供 python tools/engramory_init.py dsh --install-skill 初始化助手,以及 dsh-reader 只讀模式讀取其他 Agent 擁有的記憶庫。Engramory 明確不走 MCP 作爲主路線——在已有文件讀寫與常駐規則的宿主上,MCP 會引入第二條寫入通道並繞過寫前 Hook。
安裝與啓用¶
說明:SkillHub(https://www.skillhub.cn/plugins)是社區維護的 DSH 插件目錄,與 DeepSeek / 幻方無官方從屬關係;安裝命令以目錄頁生成的方案爲準。插件以當前
dsh進程權限運行,安裝前請審閱源碼與 MIT 許可證。
第一步:通過 SkillHub 安裝 DSH 插件¶
SkillHub 爲 tinqiao-oss/engramory 生成的安裝計劃(profile 示例爲 web,commit 固定爲目錄同步的 head SHA):
dsh plugin --profile web add github:tinqiao-oss/engramory#39efc183a55cb3d2c56e11a42b2b5e059a193ce3
安裝後重啓 profile:
dsh --profile web
若你的環境已配置 npm 源,也可直接安裝已發佈的 npm 包(需 0.2.1 及以上;0.2.0 存在裝得上但永不激活的問題):
dsh plugin --profile <name> add dsh-engramory
第二步:初始化記憶庫與常駐規則¶
插件負責索引上限 guard 與協議 skill 註冊,不會自動創建記憶目錄。需在 Engramory 倉庫根目錄執行(Python 3.9+;Linux/macOS 請用 python3):
git clone https://github.com/tinqiao-oss/engramory.git
cd engramory
python3 tools/engramory_init.py dsh --install-skill
默認寫入 $DSH_HOME(環境變量優先,否則 ~/.dsh):
$DSH_HOME/AGENTS.md中的 Engramory 標記塊(每會話由@deepseek-ai/dsh-agent-instructions加載)$DSH_HOME/skills/engramory/完整協議(按需加載)$DSH_HOME/.engramory-memory/MEMORY.md記憶索引與筆記目錄
若只服務單個項目,加 --project-root /path/to/project,skill 會裝到 <project>/.dsh/skills/engramory/(DSH 實際掃描的項目 skill 根,不是 .agents/skills)。
可選:固定 commit 或調整 guard 配置¶
SkillHub 命令已 pin 到 commit 39efc183…;自行安裝 GitHub 源時也可顯式指定。Guard 默認配置可在 profile patch 層覆蓋(勿重複 insert 兩行):
- id: engramory
config:
indexName: MEMORY.md
maxLines: 200
maxBytes: 25600
indexPath: /absolute/path/to/.engramory-memory/MEMORY.md
indexPath 建議設爲記憶索引的絕對路徑,避免誤攔其他目錄下同名的 MEMORY.md。
典型用法示例¶
日常記憶讀寫¶
Agent 每會話從 AGENTS.md 看到策展紀律;需要細節時讀取 .engramory-memory/ 下單條筆記。寫入後應彙報新增 / 更新 / 歸檔 / 跳過項及索引尺寸。
編輯索引後自檢¶
python3 $DSH_HOME/skills/engramory/tools/engramory_check.py $DSH_HOME/.engramory-memory/MEMORY.md
若輸出 OVER,需壓縮索引後再寫。週期性全量健康檢查:
python3 $DSH_HOME/skills/engramory/tools/engramory_doctor.py $DSH_HOME/.engramory-memory
跨 Agent 只讀共享¶
讓 DSH 讀取 Claude Code 等項目記憶(只讀,不寫入):
python3 tools/engramory_init.py dsh-reader \
--project-root /path/to/repo \
--memory-root ~/.claude/projects/<project>/memory
卸載¶
python3 tools/engramory_init.py dsh --uninstall --dry-run # 預覽計劃
python3 tools/engramory_init.py dsh --uninstall # 執行
卸載只移除安裝器寫入的規則塊與 skill 副本,不會刪除 .engramory-memory/ 中的筆記。
適用場景與注意事項¶
適合誰:
- 希望在 DSH 上維護可審計、可 diff 的長期工作記憶,又不想搭向量庫或 MCP 服務
- 需要把 Claude Code / Codex 等宿主上的 Markdown 記憶紀律原樣搬到 DSH
- 個人或小團隊、單寫者場景,記憶條目控制在索引上限(約 200 條指針)以內
務必知曉的限制:
- 協議標記爲實驗性:Hook 對
Edit | Write | MultiEdit類直接編輯工具有確定性攔截,但 Bash、MCP 文件工具、外部編輯器 等通道可繞過;紀律本身靠模型遵守,非每個任務 guaranteed - 假設單寫者 / 串行寫入,無 store 級併發鎖
- 記憶爲明文、未加密;勿把密鑰、令牌寫入筆記,只記錄「祕密存在何處」
- 無 schema 版本遷移與 provenance 字段;召回內容應視爲建議而非權威事實
dsh plugin安裝第三方插件需本機有 pnpm 且在 PATH 中(上游 rc.7 起修復預覽版安裝問題)
dsh-xray 對本插件的靜態掃描顯示:能力等級 C2 來自 manifest.bundle.patch(生態中多數可掛載插件均聲明此項),未發現 exec、eval、安裝腳本或出站域名——但仍請自行審閱後再裝。
結尾¶
Engramory 的價值不在於 reinvent 向量檢索,而在於把「Markdown 索引 + 單文件單事實 + 四類 typed 筆記 + 寫前查重刪改」打包成可跨 Agent 複製的紀律,並在 DSH 上通過 dsh-engramory 把索引上限從軟約束升級爲寫前拒絕。若你正用 DeepSeek Harness 做長週期編碼助手,值得一試。
- SkillHub 目錄頁:https://www.skillhub.cn/plugins/tinqiao-oss/engramory
- GitHub 倉庫:https://github.com/tinqiao-oss/engramory
- DSH 適配說明:https://github.com/tinqiao-oss/engramory/tree/master/adapters/dsh