增长案例库 Maxed 归档 AI自动化AI搜索优化

图工程搭建指南:如何给 Agent 复利式记忆(含精确配置)

The Graph Engineering Setup Guide: How to Give Your Agents Memory That Compounds (Exact Config)

中文译文 · 7k 字

一句话摘要

通过图工程给 AI Agent 构建可复利增长的记忆系统,附配置。

The Graph Engineering Setup Guide: How to Give Your Agents Memory That Compounds (Exact Config) July 23, 2026 · 6 min read · View source ↗ Claude MCP AI 向量检索检索的是文本。它无法告诉你,你即将编辑的那个函数,归一个上个月已经将其弃用的团队所有。 本文内含:双时态模型、给 Claude 持久图记忆的 MCP 配置,以及图 vs 向量的路由规则。 Gartner 预计,到 2028 年,一半的智能体系统将建立在图上下文之上。 下面是完整配置 👇 在我们深入之前,我在我的 Telegram 频道里每天分享 AI 与 vibe coding 的笔记:https://t.me/zodchixquant 🧠 什么是图工程(graph engineering)真正的含义 向量 RAG 把你的知识存成孤立的片段,靠相似度来检索。图工程把它存成实体和关系,这样智能体可以遍历,而不是猜测。 区别会体现在需要不止一跳的问题上: 向量搜索:"找到与 auth service 相似的文本",然后指望正确的片段排在第一位 图遍历:"如果这张表被弃用,哪些仪表盘会崩"——沿表 → 血缘 → 每一个依赖的指标走一遍,然后返回真实的清单 实测差距:生产部署报告显示,多跳任务的准确率提升 36-46%,相对纯向量基线,幻觉减少 40% 以上。 Gartner 预计,到 2028 年,包含图 grounding 在内的上下文工程改进,将把智能体准确率提升至少 30%。 这套工具在 2025-2026 年不再是学术玩具:Graphiti、Cognee、KARMA,再加上 MCP 作为把图接入任意智能体的标准方式。 杀手级特性是时间,不是结构 大多数人以为知识图谱是一种更花哨的数据库。真正对智能体有意义的部分,是双时态建模(bi-temporal modeling)。 Graphiti 里的每条边都带两个时间戳:事件发生的时间,以及你的系统得知这件事的时间。事实拥有显式的有效窗口。当某件事发生变化时,旧边被作废,而不是被删除。 这给了你的智能体三样扁平记忆永远无法拥有的东西: 时间点查询。"我们六月份对这套 API 是怎么理解的"返回的是六月份的答案,而不是今天的 矛盾处理。新信息不会静默覆盖旧信息,而是带着时间戳轨迹将其取代 审计轨迹。每一条断言都能追溯到它是在何时、从哪里进入图的 你的上下文窗口在压缩(compaction)时会遗忘。向量存储什么都记得,却什么都不理解。而时态图记得什么变了、什么时候变的。 配置:Claude Code 中的图记忆(直接复制这个) Graphiti 自带一个 MCP server,所以 Claude Code、Claude Desktop 和 Cursor 无需任何集成代码就能读写图。 在你的 .mcp.json 里: { "mcpServers": { "graphiti": { "command": "uvx", "args": ["graphiti-mcp"], "env": { "NEO4J_URI": "bolt://localhost:7687", "NEO4J_USER": "neo4j", "NEO4J_PASSWORD": "${NEO4J_PASSWORD}", "MODEL_NAME": "claude-sonnet-5" } } } } 有两个细节决定了这套东西能否奏效: 用便宜模型做抽取。实体和边的抽取会在每一段被摄入的内容(episode)上运行。这里用 Sonnet 5 或 Haiku,而不是你的 frontier 模型——这是整套配置里最大的成本杠杆 Neo4j 在 Docker 里本地运行,作为开发图。一个容器,你的智能体就有了能扛过每一次重启、每一次压缩、每一个新会话的记忆 路由规则(这才是真正的技能) 图不是向量搜索或你上下文窗口的替代品。混合路由在基准测试中胜过任何单一后端配置,而工程活就藏在路由逻辑里。 把下面这段放进 CLAUDE.md: ## Memory routing 在回答之前,先对问题分类: - 关系型或多跳("谁拥有"、"如果……会坏什么"、 "自……以来发生了什么变化")→ 通过 MCP 查询图 - 宽泛的语义("找关于 X 的文档"、"相似的例子") → 向量搜索 - 本会话里已经有的任何内容 → 从上下文回答, 不要碰任何一个后端 写入图时: - 在做任何决策之后,写一条 episode:决定了什么、 为什么、它触及哪些文件/人 - 永远不要写推测。只写有来源的事实 - 矛盾写成新边,绝不编辑 这条同时省下钱和准确率的规则:当智能体有图可走时,它就不再蛮力搜索。现成配置要额外烧掉大约 30% 的 token,去做一次遍历就能直接回答的事。 喂图而不烧穿预算 摄入是朴素配置变贵的地方:每一次实体解析、每一次去重,过去都意味着又一次模型调用。 from graphiti_core import Graphiti graphiti = Graphiti(NEO4J_URI, NEO4J_USER, NEO4J_PASSWORD) await graphiti.add_episode( name="deprecate_legacy_auth", episode_body=( "Team Platform deprecated legacy_auth on 2026-07-14. " "Replacement is auth_v3. Owner: Marina. " "Blocked services: billing-api, notifications." ), source_description="engineering decision log", reference_time=datetime(2026, 7, 14), ) 三个让摄入保持便宜的习惯: 写 episode,而不是文档。每个决策一条 episode,带命名实体,胜过倒进一个 wiki 页面然后指望抽取自己搞定 始终设置 reference_time。没有它,你就丢掉了整个双时态优势,得到的只是一张普通图 批量回填,其余流式写入。历史数据一次性加载,之后在决策发生时增量写入。Graphiti 更新时无需重算整张图 常见错误 把图当成第二个向量存储。如果你在用它查"相似文本",那你就搭错了东西。图回答的是关系问题 在 frontier 模型上跑抽取。摄入是高频、机械化的。在这里用 frontier 的费率,会产生一张还没证明价值就先杀死项目的账单 什么都往里倒。一张塞满推测和重复事实的图,比没有图更糟,因为智能体现在会自信地遍历到垃圾里去 跳过 reference_time。时态层正是你选它而不是 embeddings 的全部理由。没有时间戳,你得到的只是一个会腐烂的静态本体 没有写入纪律。随意写入的智能体会制造几周都没人察觉的矛盾。一条规则(只写有来源的事实)就能挡住大部分问题 20 分钟配置 用一条命令在 Docker 里跑 Neo4j,开发用凭证(4 分钟) 把 Graphiti MCP 配置块加进 .mcp.json,把抽取指向一个便宜模型(4 分钟) 手写 5 条真实 episode:近期的决策、负责人、弃用项(6 分钟) 把路由规则粘贴进 CLAUDE.md(2 分钟) 问一个你知道答案的多跳问题,检查遍历结果(4 分钟) 上下文窗口变大了,所有人都以为记忆问题解决了。其实没有。一个大窗口记得住本次会话。一张图记得住你的项目,而且你每喂它一周,它就变得更值钱。 感谢阅读! 我在我的 Telegram 频道里每天分享 AI 与 vibe coding 的笔记:https://t.me/zodchixquant 🧠 Tags: # X # Claude # MCP # AI # Guide # Sonnet Related articles Grok just became dangerous: 18 Repos that prove it. Most people still think Grok is a chatbot bolted onto X. AI Claude MCP

原文参考:https://maxed.wiki/posts/the-graph-engineering-setup-guide-how-to-give-your-agents-memory-that-compounds-exact-config/ (Maxed.wiki,本页为站内中文整理)