用 memtrace-public 给 DeepSeek Harness 装上代码库结构记忆

前言

用 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,在本地确定 CALLSIMPLEMENTSIMPORTS 这类边。它不替代会话级事实记忆。

许可证不要按目录页上的 NOASSERTION 理解成开源。memtrace-public 仓库的 LICENSEMemtrace End User License Agreement(EULA,2026-04-13 生效):二进制形式授权个人或内部使用,禁止逆向、再分发和用它做竞品。README 还写明:索引器与数据库(MemDB)闭源;基准测试套件在 benchmarks/ 下按 MIT 发布。产品目前处于 private beta,完整二进制需要先在 memtrace.io 申请访问;已有权限后再执行 npm install -g memtrace

核心功能

结构图谱,而不是再搜一遍文本

图谱里,符号是节点(函数、类、接口、类型、端点),关系是边(CALLSIMPLEMENTSIMPORTSEXPORTSCONTAINS)。检索是混合的: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-memtraceskills/ 目录当前有 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-publicdsh-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 mcpnpm 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.0package.jsonengines 写的是 >=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。

  1. 先建图,再看架构:
用 Memtrace 索引当前目录,然后给我一份架构简报。

英文 README 的对应说法是:index the workspace,再要 blast radius、evolution 或 architecture briefing。

  1. 改函数前看爆炸半径(插件中文 README 原句):
先索引这个仓库,然后给出 apply 的爆炸半径。
  1. 按 Skill 触发表提问,例如:
这个函数在哪里定义?
改这个符号会坏什么?
这周这块代码是怎么演化的?

插件装上后,工具名带 mcp__memtrace__ 前缀。如果智能体仍在 grep,先确认 dsh --profile web --dump-config 里有 dsh-plugin-memtracemcp-memtrace,以及 memtrace 二进制是否能在本机启动。

图谱数据写在项目旁边的 .memdb。插件 README 的权限说明是:在会话工作目录生成 memtrace mcp,读仓库做索引,不把代码发到 Memtrace 云。

适用场景与注意事项

比较适合这些情况:

  • 在 DeepSeek Harness 里维护中大型仓库,希望智能体按调用图、而不是按全文检索来定位符号
  • 重构前要看爆炸半径,或排查「改了一处、别处测试失败」
  • 多个编码智能体共享同一仓库,需要同一份结构上下文
  • 需要跨服务看 HTTP 拓扑,而不是只看当前文件

不适合把期望放在「跨会话记住用户偏好、会议结论」上,那是 Mem0 / Graphiti 一类对话记忆的工作。也不适合无法接受闭源索引器、EULA 限制或 private beta 门槛的环境。

使用前注意下面几条,均来自目录页或仓库文档:

  1. 权限与许可证。 插件以当前 dsh 进程权限运行,安装可能执行代码。memtrace-public 是专有 EULA,索引器闭源;Harness 插件包 dsh-plugin-memtrace 是 MIT。装之前把两个仓库的 LICENSE 都打开看一遍。
  2. 本地索引 ≠ 完全离线。 源码解析、嵌入和查图在本机。PRIVACY.md 仍列出几类出站请求:许可证校验、用量心跳(节点/边等汇总计数,不含仓库路径和源码)、首次下载嵌入模型、以及 v0.3.17 起默认开启、可关闭的产品遥测。关闭遥测:
export MEMTRACE_TELEMETRY=off
  1. 安装入口要以插件包为准。 目录页指向 github:syncable-dev/memtrace-public;维护者文档指向 github:syncable-dev/dsh-plugin-memtrace。需要 Skill + MCP 时,按后者操作,并固定 commit。
  2. Harness 仍是 preview。 官方仓库写明会有兼容性破坏;插件 peer 依赖锁在 0.1.x 预览区间。升级 dsh 之后应再确认插件是否仍能加载。
  3. 本机资源。 首次索引吃 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

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

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

小夜