前言¶
用 DeepSeek Harness 改一個陌生倉庫時,智能體最常見的做法還是反覆讀文件、grep 符號、再憑片段猜調用關係。會話一換,這些上下文就丟了;幾個智能體同時改同一套代碼,更容易撞在同一處依賴上。改完一個函數,測試在別的目錄裏壞掉,也往往要事後才發現。
DeepSeek Harness(dsh)目前處於 developer preview,官方倉庫的定位是「一切皆插件」:模型、工具、技能、會話、沙箱都可以換成插件,而不去改 Harness 源碼。社區裏因此出現了一批面向智能體的「記憶」插件。其中一類記的是對話事實,另一類記的是代碼結構。memtrace-public 屬於後者:把倉庫編成可查詢的知識圖譜,讓智能體按函數、類、調用邊和版本去問,而不是把整份源碼再讀一遍。
本文按社區目錄頁、syncable-dev/memtrace-public 倉庫 README / LICENSE,以及維護者單獨提供的 DeepSeek Harness 插件包 dsh-plugin-memtrace 覈對後整理。社區插件目錄是獨立站點,和 DeepSeek / 幻方沒有官方從屬關係;dsh-plugin-memtrace 的 README 也寫明:這是社區維護的 Harness 插件,不是 DeepSeek 官方產品。
這是什麼¶
memtrace-public 是 Syncable(GitHub 組織 syncable-dev)維護的代碼結構記憶項目,在社區目錄裏歸入「記憶」分類。2026 年 8 月 18 日打開目錄頁和 GitHub 倉庫時,星標均爲 454。目錄頁收錄日期是 2026-08-17。
一句話定位來自倉庫 README:Memtrace 把代碼庫轉成 AI 編碼智能體可以按毫秒級查詢的即時知識圖譜,覆蓋函數、類、調用邊和版本,貫穿會話,不必反覆讀文件,也不依賴智能體自己去發現那些「看不見」的依賴。索引過程不走 LLM,圖譜存在本機。
需要先分清兩個倉庫:
syncable-dev/memtrace-public:產品文檔、技能、多編輯器安裝說明所在的公開倉庫,也是社區目錄當前收錄的條目。syncable-dev/dsh-plugin-memtrace:專門給 DeepSeek Harness 用的插件包,負責註冊 Agent Skill,並通過官方 MCP 客戶端拉起memtrace mcp。插件包本身是 MIT 許可證,package.json版本爲 0.1.0。
Memtrace 本體不是對話記憶引擎。倉庫把自己和 Mem0、Graphiti 做了區分:後兩者適合記「用戶喜歡什麼」這類實體關係,建圖要走 LLM;Memtrace 用 Tree-sitter 解析 AST,在本地確定 CALLS、IMPLEMENTS、IMPORTS 這類邊。它不替代會話級事實記憶。
許可證不要按目錄頁上的 NOASSERTION 理解成開源。memtrace-public 倉庫的 LICENSE 是 Memtrace End User License Agreement(EULA,2026-04-13 生效):二進制形式授權個人或內部使用,禁止逆向、再分發和用它做競品。README 還寫明:索引器與數據庫(MemDB)閉源;基準測試套件在 benchmarks/ 下按 MIT 發佈。產品目前處於 private beta,完整二進制需要先在 memtrace.io 申請訪問;已有權限後再執行 npm install -g memtrace。
核心功能¶
結構圖譜,而不是再搜一遍文本¶
圖譜裏,符號是節點(函數、類、接口、類型、端點),關係是邊(CALLS、IMPLEMENTS、IMPORTS、EXPORTS、CONTAINS)。檢索是混合的:Tantivy BM25、向量嵌入、Reciprocal Rank Fusion,再加重排序。社區檢測用 Louvain,用來劃模塊。跨倉庫的 HTTP 調用可以畫成 API 拓撲,用來看服務之間誰打了誰的接口。
倉庫把這類能力收成 25 個以上的 MCP 工具,智能體常用的包括:
| 工具 | 用途 |
|---|---|
index_directory / watch_directory |
首次建圖,以及增量監聽 |
find_symbol / find_code |
精確或混合檢索符號與行爲 |
get_symbol_context |
一次拿到調用方、被調用方和所屬模塊 |
analyze_relationships |
調用關係、繼承、導入 |
get_impact |
修改前的爆炸半徑和風險評級 |
get_evolution / get_timeline |
符號怎麼變、何時變 |
get_api_topology |
跨倉庫 HTTP 拓撲 |
find_dead_code |
零調用方檢測 |
execute_cypher |
直接查圖 |
DeepSeek Harness 側,這些工具會以 mcp__memtrace__* 的名字出現,例如 mcp__memtrace__find_symbol。插件包 README 建議:問「這個函數誰在用」時,智能體應走 Memtrace,而不是 grep。
雙時序:既能問現在,也能問「當時」¶
Memtrace 稱自己是 bi-temporal(雙時序)結構圖譜:每個符號帶着版本歷史。時序引擎提供六種計分,對應不同問題:
| 模式 | 適合問的問題 |
|---|---|
compound |
綜合「改了什麼」(impact / novelty / recency 加權) |
impact |
「什麼會壞」,按爆炸半徑排序 |
novel |
「有什麼反常」 |
recent |
「事故附近改過什麼」 |
directional |
新增相對刪除的不對稱計分 |
overview |
模塊級摘要 |
目錄頁和 README 都強調同一場景:重構時能看到依賴和變更時間,避免「改了一個函數,另外 14 個沒人注意到的測試壞了」。多智能體共用同一倉庫時,讀的是同一份調用圖、同一份影響範圍和同一段時間歷史。
本地索引與語言覆蓋¶
索引實現是 Rust + Tree-sitter,不把源碼交給雲端 LLM。目錄頁和 README 的宣傳數字是:5 萬個文件可在 90 秒內完成索引。倉庫另有一份對照表(同一機器、同一語料、真值來自 Python ast 和 pyright LSP),例如 1500 個文件約 1.5 秒、API 費用記爲 0。這些是維護方基準,不是第三方復現結果,也不是你本機的保證值。
語言方面,README「What it does」寫 20 多種語言加框架掃描;語言列表裏,帶完整 AST 的編程語言包括 Rust、Go、TypeScript、JavaScript、Python、Java、C/C++、C#、Swift、Kotlin、Ruby、PHP、Dart、Scala、Perl、Lua,另外還有 YAML、HCL/Terraform、JSON、TOML、SQL(含 PostgreSQL RLS)。框架感知掃描覆蓋 Express / NestJS / FastAPI / Django / Gin / Vapor / Lapis / Kong、GitHub Actions、Terraform、Helm 等。目錄頁舉的例子是 Vapor、Lapis、Kong、GitHub Actions、Terraform、RLS 策略。
目錄頁把「主要語言」標成 Python,那是 GitHub 對 memtrace-public 倉庫的語言統計,指的是公開倉裏的腳本和技能文件佔比,不是索引器的實現語言。
LeanCTX:少把源碼字節塞進上下文¶
v0.3.57 起提供 LeanCTX Native。get_source_window 增加四種壓縮模式:raw(默認、原文)、lightweight(摺疊空白)、aggressive(去掉註釋和部分導入)、map(只留簽名和類頭)。另有 get_directory_tree,一次拿到目錄映射,默認體積有上限。服務端會記 token 節省賬本,給儀表盤看,而不是把元數據塞進每次工具返回。
可選的自適應模式選擇器默認關閉,用環境變量打開:
export MEMTRACE_ADAPTIVE_MODES=1
倉庫文檔寫:內部基準裏,相對靜態語言表大約再多 14% 的壓縮(docs/leanctx-native.md 記爲 +14.29%,且每個槽位至少要看到 50 個樣本纔開始用 bandit)。這是維護方內部數字,按 opt-in 預覽功能理解即可。
DeepSeek Harness 側的 Skill¶
dsh-plugin-memtrace 的 skills/ 目錄當前有 27 個 Skill(與插件 README 一致)。memtrace-public 主 README 仍寫「17 個 agent skills」,那是面向多編輯器的產品說明,數量以 Harness 插件包目錄爲準。
常用入口:
| Skill | 文檔裏對應的問法 |
|---|---|
memtrace-first |
任何代碼發現 / 「這是怎麼工作的」 |
memtrace-index |
「索引這個項目」 |
memtrace-search |
「這個函數在哪」 |
memtrace-impact |
「改它會壞什麼」 |
memtrace-evolution |
「這周改了什麼」 |
memtrace-codebase-exploration |
「我是新來的」 |
memtrace-code-review |
PR 審查 |
memtrace-incident-investigation |
「東西壞了」 |
memtrace-fleet-* |
多智能體協同 |
安裝與啓用¶
先裝 DeepSeek Harness。dsh 來自 @deepseek-ai/dsh,不是 Memtrace 自帶的命令:
npm install -g @deepseek-ai/dsh
也可以直接用 npx -y @deepseek-ai/dsh。官方倉庫當前的啓動方式是 npx @deepseek-ai/dsh web,Web UI 默認在 http://127.0.0.1:3080。Harness 仍是 developer preview,文檔寫明會有破壞性變更。
社區目錄上的安裝命令¶
目錄頁原文是下面這一條,在 DeepSeek Harness 終端裏運行:
dsh plugin add github:syncable-dev/memtrace-public
需要可復現安裝時,目錄頁的寫法是固定 commit:
dsh plugin add github:syncable-dev/memtrace-public#commit
把 commit 換成實際哈希。目錄頁同時提示:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼,裝之前應檢查源碼倉庫和許可證。
維護者文檔裏的 Harness 插件包¶
memtrace-public 與 dsh-plugin-memtrace 的 README 目前都把 DeepSeek Harness 的安裝指向另一個倉庫,而不是目錄頁上的 memtrace-public:
dsh plugin --profile web add github:syncable-dev/dsh-plugin-memtrace
不裝全局 CLI 時:
npx -y @deepseek-ai/dsh plugin --profile web add github:syncable-dev/dsh-plugin-memtrace
固定到 main:
dsh plugin --profile web add github:syncable-dev/dsh-plugin-memtrace#main
也支持 npm 渠道和卸載:
dsh plugin --profile web add dsh-plugin-memtrace
dsh plugin --profile web remove dsh-plugin-memtrace
裝完用下面命令確認配置裏出現了這一層:
dsh --profile web --dump-config | grep -A4 'id: dsh-plugin-memtrace'
兩條命令並存,是目錄收錄名和維護者實際插件包不一致,不是筆誤。要在 Harness 裏註冊 Skill 並拉起 MCP,以 dsh-plugin-memtrace 倉庫說明爲準;目錄頁那條是該站點給 memtrace-public 條目生成的安裝句,裝之前仍應打開對應倉庫看它是不是 Cordis 插件包。
本機二進制¶
插件包會在會話工作目錄里拉起 memtrace mcp。第一次可能要等 npx 下載二進制,README 說可能要一分鐘左右。本地固定版本可以減少這次拉取:
npm install -g memtrace
export MEMTRACE_BIN=memtrace
MEMTRACE_BIN 指向本機命令或絕對路徑;未設置時走 npx -y memtrace mcp。npm install -g memtrace 需要 private beta 權限。沒有權限時,先到 memtrace.io 加入 waitlist,不要假定目錄頁上的「免費安裝」等於二進制已經對所有人開放。
插件兼容性以 dsh-plugin-memtrace README 爲準:DeepSeek Harness 0.1.0-rc.6 及以上;Node 爲 ^22.19.0 或 >=24.0.0;package.json 的 engines 寫的是 >=22.19.0,peer 依賴是 @deepseek-ai/dsh >=0.1.0-rc.1 <0.2.0-0。平臺覆蓋 macOS、Linux、Windows(通過 npm optional 依賴提供對應原生二進制)。
Memtrace 本體對機器的最低建議是 4 核、8 GB 內存、5 GB 磁盤;大 monorepo 建議 8 核以上、16–32 GB。時序分析需要 Git,完整歷史效果更好。GPU 不是必需項。
典型用法¶
以下句子來自維護者文檔,可以按原樣發給已經接好插件的 Harness。
- 先建圖,再看架構:
用 Memtrace 索引當前目錄,然後給我一份架構簡報。
英文 README 的對應說法是:index the workspace,再要 blast radius、evolution 或 architecture briefing。
- 改函數前看爆炸半徑(插件中文 README 原句):
先索引這個倉庫,然後給出 apply 的爆炸半徑。
- 按 Skill 觸發表提問,例如:
這個函數在哪裏定義?
改這個符號會壞什麼?
這周這塊代碼是怎麼演化的?
插件裝上後,工具名帶 mcp__memtrace__ 前綴。如果智能體仍在 grep,先確認 dsh --profile web --dump-config 裏有 dsh-plugin-memtrace 和 mcp-memtrace,以及 memtrace 二進制是否能在本機啓動。
圖譜數據寫在項目旁邊的 .memdb。插件 README 的權限說明是:在會話工作目錄生成 memtrace mcp,讀倉庫做索引,不把代碼發到 Memtrace 雲。
適用場景與注意事項¶
比較適合這些情況:
- 在 DeepSeek Harness 裏維護中大型倉庫,希望智能體按調用圖、而不是按全文檢索來定位符號
- 重構前要看爆炸半徑,或排查「改了一處、別處測試失敗」
- 多個編碼智能體共享同一倉庫,需要同一份結構上下文
- 需要跨服務看 HTTP 拓撲,而不是隻看當前文件
不適合把期望放在「跨會話記住用戶偏好、會議結論」上,那是 Mem0 / Graphiti 一類對話記憶的工作。也不適合無法接受閉源索引器、EULA 限制或 private beta 門檻的環境。
使用前注意下面幾條,均來自目錄頁或倉庫文檔:
- 權限與許可證。 插件以當前 dsh 進程權限運行,安裝可能執行代碼。
memtrace-public是專有 EULA,索引器閉源;Harness 插件包dsh-plugin-memtrace是 MIT。裝之前把兩個倉庫的 LICENSE 都打開看一遍。 - 本地索引 ≠ 完全離線。 源碼解析、嵌入和查圖在本機。
PRIVACY.md仍列出幾類出站請求:許可證校驗、用量心跳(節點/邊等彙總計數,不含倉庫路徑和源碼)、首次下載嵌入模型、以及 v0.3.17 起默認開啓、可關閉的產品遙測。關閉遙測:
export MEMTRACE_TELEMETRY=off
- 安裝入口要以插件包爲準。 目錄頁指向
github:syncable-dev/memtrace-public;維護者文檔指向github:syncable-dev/dsh-plugin-memtrace。需要 Skill + MCP 時,按後者操作,並固定 commit。 - Harness 仍是 preview。 官方倉庫寫明會有兼容性破壞;插件 peer 依賴鎖在
0.1.x預覽區間。升級dsh之後應再確認插件是否仍能加載。 - 本機資源。 首次索引喫 CPU 和內存,後續增量和查詢輕得多。機器低於 README 的最低配置時,先在小倉庫上試,不要直接丟 5 萬文件的 monorepo。
小結¶
memtrace-public 解決的是編碼智能體沒有穩定代碼結構記憶的問題:用本地 AST 圖譜代替反覆讀文件,查詢調用關係、爆炸半徑和版本演化。它出現在 DeepSeek Harness 社區插件目錄的「記憶」分類下,真正接到 Harness 時,維護者提供的是 MIT 許可的 dsh-plugin-memtrace,再由它拉起閉源的 memtrace 二進制。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/memtrace-public/
GitHub(產品與文檔):https://github.com/syncable-dev/memtrace-public
GitHub(Harness 插件包):https://github.com/syncable-dev/dsh-plugin-memtrace
產品站點與訪問申請:https://memtrace.io
DeepSeek Harness 官方倉庫:https://github.com/deepseek-ai/deepseek-harness