AI coding agent换会话后丢失关键上下文与决策逻辑,开源项目Tacit提供本地优先的MCP服务器实现持久化记忆层。
解决 AI 遗忘问题:为什么你的编程 Agent 需要「机构记忆」
每一位使用 AI 编程 Agent 的开发者迟早都会撞上同一堵墙。
你花了三个小时调试一个异步 worker 中的微妙竞态条件。Agent 发现了你队列库中一个未文档化的怪癖,应用了一个针对性的临时方案,测试套件终于变绿了。两天后,你打开一个全新的聊天会话或切换了模型。你让 Agent 重构 worker 模块。三十秒内,Agent 删掉了那个临时方案,假定标准队列行为,把你花了半周才修好的那个 bug 重新引入了进来。
这就是 AI 遗忘问题。
LLM 在活跃的上下文窗口内处理指令表现良好。一旦上下文窗口压缩、滚动或重置,推理过程就消失了。代码还在 Git 里,但隐性知识——架构约束、环境怪癖、以及那些特定决策背后的来之不易的理由——全都消失了。
缺失的那一层:决策的 Git
代码放 Git。聊天记录放临时日志。隐性知识需要自己的存储层。
Tacit 是一个开源的、Local-First 的 Model Context Protocol(MCP)服务器,它为 AI 编程 Agent 提供持久的机构记忆。
Tacit 并没有把几兆字节的聊天记录转储到向量数据库,而是强制 Agent 存储精炼的决策节点:
什么变了:核心的技术选型或临时方案。
为什么变:根本原因、限制条件或错误场景。
因果 lineage:指向父决策的有向无环图(DAG)链接。
验证:加密内容哈希(SHA-256)和 Merkle 根验证。
实际工作原理
当 Agent 初始化一个会话时,它向 Tacit 查询最近的上下文:
memory_context(timeframe="week")
Agent 会立即看到活跃的架构决策、已知的环境临时方案、以及近期已解决的错误——在写下一行代码之前。
当 Agent 完成一个复杂任务后,它会记录精炼的知识:
memory_add(
type="hack",
title="Pinned Redis client pool to 10 connections due to TCP socket leak on worker restart",
rationale="Uvicorn reload spawns zombie connections if pool size exceeds system file descriptor threshold.",
scope=["/services/queue.py"],
tags=["redis", "networking", "uvicorn"]
)
由于 Tacit 在本地 SQLite 上运行并带有 FTS5 搜索,检索耗时不到一毫秒。一切都镜像到人类可读的 Markdown 文件在 .tacit/memories/ 中,让你的团队知识版本受控,且不依赖任何单一 AI 框架供应商。
git clone https://github.com/AlexLeoTz/tacit.git
此注册命令会全局修改编辑器的设置。它可以从任意文件夹或终端目录运行:
tacit install-mcp --client antigravity
tacit install-mcp --client claude
tacit install-mcp --client claude-code
tacit install-mcp --client cursor
导航到你的特定项目工作区目录(例如 cd /path/to/my-project)并初始化数据库。此命令必须在项目根目录内运行:
tacit init
启动 Web 仪表板以搜索、查看和直接插入项目记忆。此命令必须在项目根目录内运行:
tacit serve
Tacit 是开源的,可以在 GitHub 上找到。去试试吧。