一个人维护 5 个项目AI 是我的唯一同事——给全栈个体户的图拓扑工程记忆系统你不是在管理一个项目的多个模块。你是在管理多个项目每个项目有十几个模块。你的 AI Agent 是你唯一的同事——它忘了就没人能回答你了。一、真实的场景你不是在写一个项目你是在同时维护好几个先别急着看技术方案。花 30 秒看看这个场景你熟不熟悉上周一给 SaaS 产品 A 接好支付宝支付回调写了 200 行后端逻辑 上周二切到客户项目 B改 Landing Page 的响应式布局 上周三客户 B 的服务器崩了紧急修了一整天 上周四回到产品 A准备继续优化支付流程…… 但你和 AI 都忘了——那个回调接口的参数结构是什么来着 上周五外包项目 C 的甲方突然需求变更要加一个报表导出功能 你打开项目 C 的终端AI 一脸茫然——上次碰这项目是三个星期前这不是模块切换的问题。这是项目切换的问题。一人公司 / 独立开发者 / 全栈个体户的日常不是在一个项目的 auth 和 payment 之间切来切去——你是在完全不同的代码仓库之间反复横跳。SaaS 产品 A 用 FastAPI React外包项目 B 用 Next.js Prisma工具项目 C 用 Go HTMX。每个项目的技术栈完全不同每个项目的进度完全独立。而你的 AI Agent——不管是 Claude Code、Cursor 还是 GitHub Copilot——是你唯一的同事。在公司里你可以扭头问同事“哎那个支付回调的参数结构是什么来着”改 user 表会影响哪些功能但作为一个人你只能问 AI。当 AI 也忘了的时候——你没有 Plan B。二、市面上已经有很多记忆工具了为什么它们解决不了你的问题你说得对记忆相关的工具确实很多。但大多数不是为你这种场景设计的工具类型代表产品它解决什么问题它为什么不适合你AI 个人记忆Mem0、MemGPT、Letta让聊天机器人记住你——偏好、习惯、对话历史设计目标是对话连续性不是工程项目的模块依赖拓扑。它不知道什么是跨模块影响向量知识库Pinecone、Chroma、Weaviate、RAGFlow用语义搜索检索文档片段运维成本对个人开发者是天价向量相似度检索有幻觉——用户表和订单表的向量很近但改用户表不需要加载订单表团队 WikiNotion、Confluence、飞书文档让人类团队共享知识设计给人类读的不是给 AI 的 context window 用的。没有人会每次写代码前先去翻 Wiki——太慢了项目级 AI 配置Cursor Rules、CLAUDE.md、.cursorrules给 AI 静态的项目背景信息一个文件塞下所有项目信息的结局是要么太简略没用要么太长撑爆 context。而且不会自动更新——你上周改了支付逻辑CLAUDE.md 不会自己跟着变会话缓存Claude Code conversation cache恢复上次对话恢复的是对话不是项目状态的增量更新。不同项目间对话不互通核心矛盾现有工具要么为大型团队设计太重要么为AI 记住你这个人设计场景不匹配没有为AI 记住你的多个项目的工程状态设计的。更具体地说Mem0 / Letta 等解决的是对话记忆——AI 记住你叫张三喜欢用 TypeScript偏好函数式风格。但你的问题是项目 C 的支付模块还差哪些接口没写完——这是工程进度记忆不是用户画像记忆。RAG / 向量库解决的是从大量文档中检索相关信息。但你的问题不是从文档中找到支付相关的段落而是精确地知道改mod_user会影响feat_login和feat_subscription两个功能——这是确定性依赖关系不是概率性语义相似度。CLAUDE.md / Cursor Rules解决的是给 AI 一段静态背景介绍。但你的项目在不断变化——每天都有新的接口被接好新的 bug 被修掉。需要的是一个会随时间更新的活记忆而不是一份写完之后再也不会改的 README。三、Synapse Graph Skills 到底做了什么不同的事Synapse 是专门为这个场景设计的一个全栈开发者 × 多个项目 × AI Agent 是唯一队友 → 需要一种方式让 AI 精确记住每个项目的工程状态在不同会话之间无缝衔接。它不是通用记忆它是工程记忆——专门记住项目的模块/功能做到什么程度了、模块之间怎么依赖的、改一个会影响哪些。如果用一句话说清楚Synapse 把每个项目变成一张依赖关系地图图拓扑AI 每次只需要按图索骥加载相关的几个节点永远不需要把全部记忆塞进 context。你的其他项目 当前正在操作的项目 │ │ ├── 项目 A (SaaS 产品) ├── meta/feat_payment.md ├── 项目 B (客户 Landing) │ depends_on: [mod_alipay-sdk, mod_user-account] ├── 项目 C (外包后台) │ blocks: [feat_subscription, feat_invoice] ├── 项目 D (开源工具) │ └── 项目 E (实验性项目) │ │ 每个项目独立拥有 AI 只加载项目 A 中与支付 自己的 meta/ 记忆图 相关的 3-5 个节点不会碰 B/C/D/E 的任何记忆每个项目的记忆是独立隔离的——你在项目 A 的终端里问支付做得怎么样了它只查项目 A 的记忆图项目 B/C/D/E 的记忆文件根本不会被读到。四、具体怎么运作的一张图三层加载4.1 记忆不是一篇长文而是一张图传统的记忆方式是写一篇 README把项目信息全部塞进去。Synapse 的做法完全不同——每个模块/功能是一个独立的 Markdown 节点节点之间用显式边连接---# meta/feat_payment.mddepends_on:[mod_alipay-sdk,mod_user-account,mod_order]auto_linked:[mod_notification,mod_invoice]tags:[支付,支付宝,回调,payment]aliases:[付款,充值,pay,alipay]summary:支付宝 PC 扫码支付 H5 支付回调接口已完成退款接口待接---三种边构成完整有向图边含义改 mod_order 接口签名会发生什么depends_on硬依赖目标变了我受影响feat_payment 因为依赖 mod_order会被自动标记为受影响auto_linked软依赖机器推断的关系mod_notification 与订单相关建议检查发送的订单通知是否兼容新签名blocks自动计算反向边谁依赖我马上算出 mod_order 被 feat_payment、feat_invoice、feat_subscription 依赖改这个会影响哪些功能不再靠猜——图已经算好了。4.2 三层渐进式加载永远不全量读一遍AI 面对记忆时的常见行为是把所有 meta/*.md 读一遍以防遗漏这在 30 个模块时直接把 context 撑爆。Synapse 的三层协议强制精确加载第 1 层倒排索引MEMORY_MAP ~200-500 tokens └── 查标签/别名 → 找到目标节点名 支付做得怎么样了 → 标签匹配支付 → 锁定 feat_payment 第 2 层目标节点完整内容 ~500-1500 tokens └── 读了 feat_payment.md知道回调已接好 → 够了STOP 第 3 层受限 BFS 展开深度≤2宽度≤5 ~1000-4000 tokens └── 改支付会影响哪些功能 → 查 blocksfeat_subscription feat_invoice → 只加载这两个节点的 Connection Points → STOP → token 超过 context 的 15%硬停止报告用户30 个模块的项目暴力加载读 30 个文件。受限 BFS 读 3-5 个。模块越多差距越大。4.3 Hook 强制遵守——规则不是建议是约束光写文档说请按协议加载是没用的AI 在长会话中会慢慢偏离协议。Synapse 利用 Claude Code 的 Hook 机制把协议变成运行时强制规则Hook它做了什么没有它会怎样PreToolUseAI 尝试读文件时拦截强制 MAP→节点→BFS 顺序AI 一次读 30 个 meta 文件context 爆炸PostToolUseAI 写文件后自动检测是否产生了新的跨模块引用新的依赖关系无人记录图越来越不准Stop会话结束时重建索引、校验拓扑、检测漂移、输出变更记忆与源码脱节不打开项目就不知道记忆已经过时每次会话结束时自动执行[doctor] Topology Health: ✓ 18 nodes active, 0 dead links, 0 orphans ⚠ 3 nodes flagged for drift: 源码改了但 meta/ 没更新 ⚠ mod_payment.md 218 lines (200), 建议拆分 [change-summary] 本次会话变更 M feat_payment.md 1 Change Log M mod_alipay-sdk.md 更新 Connection Points M MEMORY_MAP.md 自动重建你不需要手动维护——会话结束时它自己检查、自己报告。4.4 连接点是可验证的契约不是自由文本传统方式写需要支付 API——这对影响分析毫无价值。Synapse 的连接点是带源码锚点的结构化接口描述### To mod_alipay-sdk - **调用**: POST /api/v1/payments/callback !-- ref: src/payment/routes.ts:45 -- - **入参**: { order_id: string, trade_no: string, total_amount: number } - **返回**: { success: boolean, out_trade_no: string } - **错误码**: 402 余额不足, 409 重复通知 - **约束**: 通过 Idempotency-Key 实现幂等支付宝会重复发送通知ref锚点让系统能在每次会话结束时检查源码中的接口还是记忆里记录的样子吗不是就报警——不等你踩坑才知道记忆已经过时了。五、四枚独立 Skill——装几个用几个Synapse 以 Claude Code Skills 形态发布四个模块独立可安装synapse-graph-memory (66 KB) ← 核心检索引擎 7 步决策树 ├── 什么时候触发 XX 做得怎么样了、会影响哪些功能 └── 包含哪些脚本 11 个脚本 4 个 hook完整捆绑装了就能用 synapse-timeline (5.5 KB) ← 只读查询时间线 Open Issues ├── 最近改了啥、有哪些没解决的问题 └── 单脚本 227 行bash 嵌入式 Python synapse-daily-note (26 KB) ← 写入管线一句话 → 自动更新记忆 ├── 记录一下接好了 POST /api/v1/auth/login └── 全管线NL 解析 → 边检测 → 写入 → 重建索引 → 拓扑校验 synapse-init (43 KB) ← 冷启动向导给任何项目一键配好记忆 ├── 初始化记忆 └── 自动检测技术栈 → 扫描 src/ → 生成骨架节点 → 注册 hook去哪里装# 从 GitHub 直接复制gitclone https://github.com/LameGz/synapse-graph-skills.gitcp-rsynapse-graph-skills/synapse-graph-memory ~/.claude/skills/cp-rsynapse-graph-skills/synapse-timeline ~/.claude/skills/cp-rsynapse-graph-skills/synapse-daily-note ~/.claude/skills/cp-rsynapse-graph-skills/synapse-init ~/.claude/skills/六、评估数据对 AI Agent 的 context 效率有多大提升在 8 节点 SaaS 测试项目上使用 deepseek-v4-pro 评估指标装 Skill不装说明平均读取文件数8.013.0少读了 38% 的文件无关文件加载04.5这是核心不该读的绝对不读断言通过率100%62.5%AI 知道的信息是正确的不装 Skill 的 AI 行为MEMORY_MAP.* → 所有 8 个 meta/*.md → README → 2 个 cache 文件 → 以防万一全读一遍装 Skill 后的 AI 行为SKILL.md → MEMORY_MAP.md → feat_login → BFS 展开 2 个直接依赖 → STOP在 30 模块的项目中这个差距是指数级的——因为不装 Skill 的 AI 会尝试把所有 30 个文件都读一遍而受限 BFS 停在 3-5 个文件。七、三段进化这不是从零开始的点子它已经打磨了三代Synapse 解决这个问题走了三代V1 (2024) V2 (2025 初) V3 (2025.05) ← 当前 ───────────────── ───────────────── ───────────────────────── 形态单脚本 形态单体 Agent 记忆 形态四枚独立 Skill 存储Markdown 扁片 存储Markdown 扁片 存储图拓扑 显式边 检索grep 全文搜索 检索关键词 摘要 检索三层渐进式 受限 BFS 边关系无 边关系隐式命名约定 边关系显式 depends_on/blocks 一致性靠开发者自律 一致性靠开发者自律 一致性Hook 运行时强制 规模上限~10 节点 规模上限~15 节点 规模上限30 节点常数级V1→V2 的核心变化从脚本变成 Agent自然语言交互替代了命令行。V2→V3 的核心变化从扁平文件变成图拓扑——这是质的飞跃。V2 的项目记忆在 ~15 个模块后就开始 context 爆炸V3 用显式图 受限 BFS把加载成本和模块数量解耦。八、适合谁不适合谁适合你如果你……一个人同时维护 2 个以上的项目AI AgentClaude Code / Cursor / Copilot是你日常的主要编程搭档经常在不同项目之间切换切回来已经忘了上次做到哪了项目的模块数在 10 个以上全量塞进 context 不现实不想折腾向量数据库 / RAG 那一套重型基础设施不适合你如果你……你是大厂团队有专门的文档 / Wiki / oncall —— 你不需要这个你只有一个项目且只有 3-5 个模块 —— 全量加载就够了你不用 AI Agent 写代码 —— Synapse 是给 AI 读的不是给你读的你需要的是对话记忆记住用户偏好、习惯—— 那是 Mem0/Letta 的领域不是 Synapse 的九、30 秒快速上手# 1. 安装cp-rsynapse-graph-skills/synapse-graph-memory ~/.claude/skills/cp-rsynapse-graph-skills/synapse-init ~/.claude/skills/# 2. 在任意项目中初始化# 在 Claude Code 中直接说用户初始化记忆# 3. 开始记录用户记录一下接好了支付宝 PC 扫码支付回调通知接口幂等处理完成# 4. 下次打开项目时直接问用户支付做得怎么样了 用户改 mod_user 的套餐字段会影响哪些功能十、总结一人全栈开发者的核心困境不是不会写而是**“切回来忘了”**。你不是没有 AI 助手——你有而且它能力很强。但每次打开新会话它都是一张白纸你花了 20 分钟才让它理解项目的上下文——这就是context 重建成本。现有记忆工具的对不上这个场景Mem0 记住你是什么样的人RAG 记住文档里写了什么但没有人记住你的项目的工程状态——哪个接口接好了、哪个模块还差什么、模块之间怎么连在一起的。Synapse 做的就是这件事每个项目一张图AI 按图索骥加载永远不把所有记忆塞进 context。你不止一个项目你的 AI 是你唯一的同事——它不应该每次都从头开始了解你上周做了什么。GitHub: https://github.com/LameGz/synapse-graph-skills架构文档: docs/architecture.mdSkills 总览: docs/skills-overview.md使用指南: USAGE.md本文由 Synapse Graph Skills 作者撰写。欢迎转载注明出处即可。