个人经验库:让 AI Agent 真正陪你成长
AI Agent 什么都好,就是记性太差
我用 AI Agent 完整交付了多个项目,体验确实是质的飞跃。但用得越深,一个痛点就越刺眼——它记不住东西。
从 Claude Code 到 Cursor,从 Copilot 到 Windsurf,大家在”编码能力”这条赛道上卷得头破血流,却在”记忆”这条基础设施上集体缺位。这不是某个工具的 bug,是所有 AI Agent 的系统性问题。
Session 内:压缩意味着丢失
上下文窗口就那么大。对话一长,系统就得压缩历史信息——压缩就是取舍,取舍就意味着丢失。
你可能花了半个小时跟它排查了一个 tricky 的并发 bug,终于找到根因,它也”理解”了。然后呢?上下文一轮压缩,这条经验就没了。下次再遇到类似问题,它一脸茫然,你得从头再来一遍。
Session 外:关掉终端,一切归零
跨 Session 的断层更致命。昨天达成的架构共识、踩过的配置坑、发现的边界条件——今天打开终端,统统不存在。
AI Agent 对你来说永远是”第一天上班的新同事”。你带了他三个月,他每天早上来都是一张白纸。
现有方案:治标不治本
各大工具其实都意识到了这个问题,也给出了一些方案。但说实话,都不够。
CLAUDE.md / .cursorrules / Custom Instructions —— 本质上是一份静态的”员工手册”。你手动写好项目规范,AI 每次启动时读一遍。问题是得你自己维护:踩了新坑得自己加,偏好变了得自己改。它不会从交互中自动学习。
Memory 文件 —— Claude Code 后来加了文件式的 Memory 系统,方向是对的,但实现粗糙:纯文本存储没有语义检索,经验多了 AI 得做”全文阅读理解”;没有去重机制,越积越乱。
System Prompt 全量注入 —— 把所有经验塞进去让 AI 每次都读。经验一多 prompt 就爆炸,既浪费 token 又冲淡注意力。你不需要让 AI 在改一个 CSS 样式的时候,还读一遍三个月前调试 gRPC 连接池的经验。
更隐蔽的问题是:塞进去了也没用。这些方案都假设 AI 会认真读并且始终遵守,但对话一长,注意力就开始稀释。你在 CLAUDE.md 里写了”这个项目必须用 pnpm”,前几轮它确实遵守了,到了第 30 轮可能就开始 npm install。不是不想遵守,是顾不上了。
经验被锁死在单一工具里
上面提到的这些方案还有一个共同的硬伤:全都跟工具绑定。
Claude Code 里的经验换到 Cursor 全没了。Cursor 里的 .cursorrules,ChatGPT 的 Custom Instructions,Copilot 的配置——各搞各的,互不相通。你在一个工具里踩过的坑、积累的解法,换个工具就得从头再来一遍。
更要命的是,工具本身也在不断洗牌。去年大家还在聊 Cursor,今年 Claude Code 就成了新宠,明年可能又冒出一个更好的。你换工具的代价不只是重新适应操作习惯,更是丢失所有积累下来的知识。
而你的经验——那些踩过的坑、找到的解法、项目的特殊约定——这些东西应该属于你自己。工具是过客,经验是你的资产。
总结一下:静态手工维护、暴力塞进上下文、对话一长选择性失明、工具绑定互不相通。现有方案没有一个能算真正的”经验库”——能自动积累、智能检索、按需精准投放、跨工具通用。
我想要的东西其实很简单
我需要的不是一个工具内的”收藏夹”,而是一个独立于任何 AI Agent 的个人经验库。它应该满足几个条件:
经验随我走,不随工具走。 不管我用 Claude Code、Cursor、Copilot 还是未来什么新玩意,经验库始终在那。工具是过客,经验是我的资产。
能迭代,不是死档案。 发现更好的方案就更新旧经验,经验过时就删掉。每一次使用都在让经验库变得更好,而不是越积越乱。
让 AI Agent 从”新同事”变成”老搭档”。 有了经验库,它知道我之前怎么解决过类似问题,知道我的项目有什么特殊约定,知道哪些坑不要再踩。
说到底就一句话:我想要一个 AI Agent 可以随时查阅的”个人知识库”,而且这个库不属于任何工具,只属于我自己。
canned-exp
而 canned-exp,正是可以解决这些痛点的工具。
它是一个开源的个人经验库,通过 MCP(Model Context Protocol)协议为 AI Agent 提供经验检索和存储能力。简单说:让你的 AI Agent 拥有跨工具、跨 Session、可持续迭代的长期记忆。
语义检索:描述问题就能找到经验
传统搜索靠关键词匹配,换个说法就搜不到。canned-exp 用的是向量语义匹配——你用自然语言描述问题,它理解的是”问题的本质”,而不是”关键词的巧合”。
比如你之前存了一条经验:”Go 里的 context 超时设置不当会导致子 goroutine 泄漏”。下次你问”我的 goroutine 怎么越来越多”,它也能命中。
结构化管理 + 智能去重
每条经验有内容、标题、标签、来源。标签体系走的是”领域+问题模式”的复合分类——go-context、mcp-sse、docker-network,精准定位,不搞大杂烩。
保存新经验时自动检测相似内容。已有类似经验就提示你,避免积累出一堆重复的“差不多”,甚至是“左右互搏”的东西。
通用接入:任何 AI Agent 都能用
通过 MCP 协议接入,任何支持 MCP 的 AI Agent 都能直接读写经验库。Claude Code、Cursor、Copilot、未来的新工具——只要支持 MCP,插上就能用。
SSE 传输层支持远程部署,一台设备运行服务,所有设备共享同一份经验。同时还提供 REST 端点,方便你写脚本或者 Hook 做自动化集成。
安全性:经验库里可能有敏感信息
经验库里存的东西很可能包含项目的敏感信息——数据库配置、内部架构细节、安全相关的 workaround。所以安全性是第一优先级。
TOTP 认证:支持 Google Authenticator 等标准验证器,登录拿 session token,24 小时有效。每个服务(Claude Code、Cursor 等)独立 session,新登录自动吊销旧的,保证同一服务只有一个活跃 token。
分层权限:
- 本地回环地址免认证——开发调试零摩擦
- API Key 只读——给 Hook 脚本用,只能检索不能改
- Session Token 全权限——TOTP 登录获取,完整的读写操作
公网全量认证:所有端点在公网环境下必须认证,没 token 就是 401。服务重启自动清空全部 session,强制重新认证。
简单说:本地开发随便用零摩擦,上了公网就锁死。你的经验只对你自己开放。
写在最后
经验是 AI 时代最被低估的个人资产。所有人都在谈论模型能力、提示词工程、Agent 框架,却很少有人想过——AI 和你协作产生的经验,到底该存在哪里?
canned-exp 给出了一个我的答案:经验不应该被困在某个工具里,它应该跟着你走,随着你成长。




