Agent 忘了上次改了什么?用 Engraphis 搭建可追溯的本地记忆层
AI 编码助手最让人头疼的,不一定是写错代码,而是隔一个会话就忘了为什么这么写:认证从 JWT 换成 PASETO 的背景、某个目录不能动的约束、上次排查到哪一步,都可能随着上下文窗口结束而消失。把聊天记录整段塞进提示词既贵又嘈杂;只存一段摘要,又容易把旧事实当成现状。
Engraphis 是一个 Apache-2.0 许可的本地优先 Agent 记忆引擎。它将记忆按 workspace、repo、session 等范围组织,结合向量、词法、图关系和代码搜索召回证据,并为结果保留来源与时间信息。项目强调证据不足时可以 abstain,而不是把不确定内容包装成确定答案。它不是替代 Git 或团队知识库,而是尝试为编码 Agent 提供跨会话、可检查的项目上下文。
先从本机 MCP 服务开始
完整应用需要 Python 3.10 或更新版本;README 说明 NumPy-only 核心支持 Python 3.9+。本机试用可安装完整组件并启动仪表盘:
python -m pip install "engraphis[all]" engraphis-dashboard
仪表盘默认在 http://127.0.0.1:8700。若只想连接本地 MCP 服务,官方 Agent Connect 文档给出的 Claude Code 示例是:
pip install "engraphis[mcp]" engraphis-init claude mcp add engraphis -- engraphis-mcp
其中 engraphis-init 用于初始化,engraphis-mcp 启动 stdio MCP 服务。具体客户端配置要按对应客户端的 MCP 方式调整;不要把 stdio 命令直接当成 HTTP 服务地址。
新接入默认是 Smart MCP:常用路径由九个精简工具承担,需要高级操作时再发现并执行对应能力。官方工具参考特别强调,发现阶段会给出精确 schema 和副作用类别,执行阶段还会重新校验可用性、范围、授权和参数。若旧客户端固定依赖完整工具名,可使用 Classic 兼容服务,但新集成宜先采用默认 Smart 入口。
记忆不等于已获准进入提示词
核心价值不只是“存下来”。一次 remember 操作的结果会包含 stored、解析后的 workspace/repo、review_state 和 prompt_eligible。外部来源或待审查记忆即使已写入,也不代表它能直接进入 Agent 的提示上下文。调用方应检查这些字段,并在后续查询中继续使用返回的 session_id 与相同项目范围,避免记忆写入一个仓库、召回却落到另一个范围。
Python API 可以在应用里直接使用:
from engraphis.service import MemoryService
memory = MemoryService.create("engraphis.db")
memory.remember(
"Auth migrated from JWT to PASETO.",
workspace="acme",
repo="api",
)
hits = memory.recall(
"Why did we change auth?",
workspace="acme",
repo="api",
)
print(hits[0]["context"] if hits else "No matching evidence")
这段示例沿用项目 README 的初始化和调用方式,并对空结果做了保护。实际应用仍应检查召回证据、来源以及时效性,不要把某次检索命中直接当作当前代码状态的权威依据。
Engraphis 也提供双时间记忆和历史时间线等能力,目标是让事实变化不被简单覆盖。它的 README 同时披露了边界:公开 benchmark 是三组确定性离线 fixture,并不证明一般任务性能;其中上下文缩减、检索质量与 grounded decision 分开报告,MCP 传输和模型账单没有纳入测量。因此可以把这些数据视为可复现的工程检查,而非“Agent 效率提升”的通用保证。
运行边界也要纳入设计
本地模式的优点是记忆数据库可留在自己的机器上,但“本地”不自动等于安全。官方连接文档指出,仪表盘浏览器会话边界与部署网络可达性有关;不可信网络环境应关闭自动会话并使用一次性登录链接。独立 MCP HTTP 服务则刻意限制 loopback,因为该传输本身没有仪表盘的认证中间件,不应直接暴露到局域网或代理之后。远程部署需遵循官方认证、TLS 与令牌配置指引,而不是简单改成 0.0.0.0。
适合先试的场景,是单人或小团队希望编码 Agent 记住项目决策、会话交接和带来源的历史事实,同时愿意在使用前检查记忆范围与准入状态。若需求是多人账号、角色、审计和集中策略管理,应区分本地应用与官方托管团队服务的功能边界。
实践建议
- 先用独立测试数据库验证记忆写入、召回与项目隔离,再接入日常仓库。
- 每次会话开始后传递返回的 session 标识,避免隐式依赖全局“当前项目”。
- 将
prompt_eligible和review_state纳入 Agent 侧检查;对关键架构决定仍以代码、提交记录和正式文档为准。 - 若需要远程使用,逐条核对官方安全部署文档,限制网络暴露面,不要把本地 loopback MCP 服务当成带认证的远程 API。
Engraphis 的看点,是把跨会话记忆拆成“范围、证据、时间和准入”几个可检查的工程问题。它是否适合你的团队,取决于本地运维与记忆治理是否比单纯依赖长上下文更符合工作流;先从一个仓库的小规模试用开始,会比一次性导入所有聊天历史稳妥得多。