OmniMemory让AI编程工具跨session保留代码库上下文,记忆与Git分支关联,修改后自动失效,适合重度使用AI编码助手的开发者。
我重度使用 Claude Code,有一件事一直困扰着我:每次新的会话都像从零开始。
我会花一整个会话解释我的代码库——为什么存在一个奇怪的函数,认证流程是如何工作的,哪些 API 决策是有意为之的,以及哪些"显而易见"的改动实际上会破坏一切。然后开启一个新会话时,Claude 就把这一切都忘光了。
所以我构建了 OmniMemory:一个面向编码 Agent 的本地化、Git 感知的记忆层。
想法很简单:不再是每次会话都从"这是我的代码库,你自己理解吧"开始,Agent 可以从"这是我们已经了解到的关于这个代码库的信息"开始。OmniMemory 存储的内容包括架构决策、项目上下文、工作流程、坑点以及其他来自之前会话的有用信息。
Git 集成是我最关注的部分。记忆与分支和 Git 历史相关联,因此在一个分支上发现的上下文不一定会成为永久的全局知识。
持久化记忆还存在一个新鲜度问题。如果 Agent 记得某个函数的行为方式,而我在三周后完全重写了该函数,那么这条记忆不应自动保持可信。OmniMemory 能够根据代码库的变更检查记忆,并识别可能过时的上下文。它还可以使用 tree-sitter 进行符号级别的代码分析,而不是在某个内容被修改时就将整个文件视为已更改。
我还希望这保持在本地。记忆存储使用 SQLite,不需要将项目记忆发送到外部服务。
在检索方面,OmniMemory 使用基于 BM25F 的排序来找到相关记忆,而不是将整个记忆历史倾倒到每个 prompt 中。
它通过 hooks 与 Claude Code 集成,这样记忆可以被捕获并注入到正常的编码工作流程中。还有一个本地 UI 可以检查系统实际记住的内容。
我围绕一个简单的想法构建这个:编码 Agent 不应该只在一个会话中理解我们的代码库。它们应该能够随着时间的推移积累有用的知识。
如果你重度使用 Claude Code 或其他编码 Agent,我很想知道你现在如何处理"AI 忘记了昨天的一切"这个问题。