是不是有开源项目可以自动把代码工具例如trae codebuddy在写代码过程中遇到的问题及解决方案形成记忆记录到数据库并不断优化,像人的记忆一样

1 次阅读

本文最后更新于 2026年8月14日。

有,而且你描述的其实已经形成了一个比较明确的方向:AI Coding Agent 的长期记忆(Persistent Memory / Agent Memory)

而且到了 2026 年,已经不只是简单的“把聊天记录存进向量数据库”,而是开始出现你说的这种:

遇到问题 → 尝试方案 → 失败 → 找到解决方案 → 记录原因 → 下次遇到类似问题自动提醒 → 多次经验后形成更稳定的规则

这和“人的记忆”已经比较接近了。

我比较推荐你先看这几个

1. Memorix —— 我认为最符合你现在的需求

GitHub:AVIDS2/memorix

它非常贴合你的场景,而且明确支持 Trae

它可以让 Claude Code、Codex、Cursor、Windsurf、Copilot、Gemini CLI、OpenCode、Trae 等 Coding Agent 共用一套项目记忆。底层以 SQLite 为核心存储,支持 MCP。(GitHub)

它记录的不只是:

用户说了什么

而是类似:

Issue
  ↓
Attempt
  ↓
Failed
  ↓
Fix
  ↓
Why
  ↓
Decision
  ↓
Future Gotcha

尤其有几个功能很符合你说的“不断优化”:

  • Session Summary

  • Fix / Gotcha

  • Reasoning Memory

  • Git Memory

  • Project Memory

  • Memory Autopilot

  • 跨 Agent 共享

  • MCP

  • SQLite

  • 可以把 Git commit 转换成工程知识

也就是说,你今天用 Trae,明天用 Claude Code,后天用 Codex,项目记忆仍然存在。(GitHub)


2. Agent-Memory —— 更像一个通用“人脑”

GitHub:Agent-Memory

这个项目的定位就是:

Persistent memory for AI coding agents

支持 Claude Code、Cursor、Gemini CLI、Codex CLI、OpenCode 等 MCP 客户端。它不只是向量搜索,还加入了:

  • confidence

  • lifecycle

  • knowledge graph

  • hybrid search

  • memory hooks

  • 自动捕获 session

  • memory viewer

也就是:

观察
 ↓
记忆
 ↓
建立关系
 ↓
评估可信度
 ↓
随着时间更新
 ↓
检索

这种设计已经比传统的:

embedding → vector DB → similarity search

高级不少。(GitHub)


3. A-MEM —— 很接近你说的“像人的记忆一样不断组织”

GitHub:A-MEM MCP

它的思路非常有意思。

不是简单:

问题 → 一条 memory

而是让 Memory 自动形成 Zettelkasten 知识网络

例如你解决过:

Simulink Bus hierarchy error

可能产生:

Simulink
 ├── Bus Object
 │    ├── hierarchy mismatch
 │    ├── element order
 │    └── DataType
 │
 ├── Model Reference
 │
 └── Mask Parameter

以后又遇到类似错误,它可以通过关联记忆找到以前的解决经验。

项目作者明确把它定义为 self-evolving memory for coding agents。(GitHub)


4. projectmem —— 我觉得特别适合“代码问题 → 解决方案”这个场景

projectmem

这个项目甚至直接针对你说的问题:

issue → attempt → fix → decision

它把开发过程记录成事件:

Issue
Attempt
Fix
Decision
Note

然后重新投影成 AI 能读取的项目知识。

更有意思的是,它不是单纯“记住”。

它有一个 pre-action gate

AI 准备再次执行某个操作之前,如果发现过去已经尝试过并失败,可以提前警告。

例如:

AI:
我要修改 xxx.m 文件……

Memory:
⚠️ 注意:
这个方案在 2026-08-10 已经尝试过。

失败原因:
Bus object hierarchy mismatch。

之前有效方案:
使用 ParaBus_PPS.Value 传递结构体。

建议:
不要重复使用旧方案。

这就已经非常接近你说的:

“人的经验记忆”

了。(projectmem)


其实你真正想做的东西,可以抽象成这个架构

我反而觉得,你这个想法非常值得自己搭一个轻量版本

                 ┌────────────────────┐
                 │ Trae / CodeBuddy   │
                 │ Claude Code        │
                 │ Cursor / Codex     │
                 └─────────┬──────────┘
                           │ MCP / Hook
                           ▼
                ┌──────────────────────┐
                │   Memory Engine      │
                │                      │
                │  ① Observe           │
                │  ② Extract           │
                │  ③ Evaluate          │
                │  ④ Store             │
                │  ⑤ Retrieve          │
                │  ⑥ Evolve            │
                └──────────┬───────────┘
                           │
             ┌─────────────┼─────────────┐
             ▼             ▼             ▼
          SQLite        Vector        Knowledge
          FTS5          Search        Graph
             │             │             │
             └─────────────┼─────────────┘
                           ▼
                    ┌──────────────┐
                    │ Long Memory  │
                    └──────────────┘

Memory 不应该只有一种

我建议至少分成 5 类:

类型 例子
Episodic “昨天我们解决了这个 Bug”
Semantic “这个项目使用 SQLite + Go”
Procedural “遇到 Bus hierarchy 错误先检查 Bus Object”
Failure “方案 A 已经验证失败”
Decision “最终决定使用 Mask 参数传递 Bus”

这比简单的 RAG 强很多。


更关键的是:不要让 AI 什么都记

这是目前很多 Memory 项目的核心问题。

如果把:

每一次聊天
每一次 tool call
每一次代码修改
每一次 terminal 输出

全部存进去,最后会变成:

垃圾记忆库

正确方式应该是:

Agent 工作
     ↓
产生大量 Observation
     ↓
Memory Extractor
     ↓
判断“这东西以后有没有价值?”
     ↓
       ┌───────────┐
       │           │
      NO          YES
       │           │
      丢弃       提炼
                   ↓
              Memory
                   ↓
          去重 / 合并 / 冲突
                   ↓
             Confidence
                   ↓
              长期记忆

例如:

User:
npm install 报错

Agent:
删除 node_modules
重新 npm install

成功。

不应该记。

但是:

这个项目必须使用 pnpm,
npm 会导致 lockfile 冲突。

应该记。


我甚至建议你做一个“经验记忆”层

如果结合你前面想做的 Trae / CodeBuddy → NAS 部署工具,我会建议你把它设计成:

                    Coding Agent
                         │
              ┌──────────┴──────────┐
              │                     │
             MCP                   Hook
              │                     │
              └──────────┬──────────┘
                         ▼
                 ┌──────────────┐
                 │ Memory Core  │
                 └──────┬───────┘
                        │
       ┌────────────────┼────────────────┐
       ▼                ▼                ▼
   Project Memory   Failure Memory   Personal Memory
       │                │                │
       ▼                ▼                ▼
    架构知识          Bug经验          编码习惯
    技术决策          失败方案          偏好
    项目规则          解决方案          工作方式

然后最重要的是增加一个:

memory_score

例如:

Memory:
“这个项目使用 SQLite”

confidence = 0.98
usage_count = 31
last_verified = 2026-08-12
source = project

再比如:

Memory:
“把 timeout 设置成 30 秒可以解决这个 API 问题”

confidence = 0.42
usage_count = 1
last_verified = 2026-07-20

随着 Agent 使用:

成功一次
   ↓
confidence + 0.1

再次成功
   ↓
confidence + 0.1

发现失效
   ↓
confidence - 0.3

被新方案取代
   ↓
superseded

这样才真正有“记忆随经验成长”的感觉。


如果是你,我会怎么选

你之前一直偏向 个人项目、轻量、SQLite、Go、自部署,所以我不会建议你一上来搞:

PostgreSQL + pgvector + Neo4j + Redis + Kafka + Qdrant

完全没必要。

我会优先:

第一选择:直接部署 Memorix

因为它已经:

SQLite + MCP + Trae + 多 Coding Agent + 项目记忆

基本和你的需求高度吻合。(GitHub)

第二选择:projectmem

如果你特别关注:

“我以前怎么解决 Bug 的?”

那么 projectmem 的 issue → attempt → fix → decision 模型非常值得研究。(projectmem)

第三选择:自己做

如果你的最终目标不是“使用”,而是做一个自己的 AI Coding Memory 工具,我反而建议你直接参考这几个项目,然后做一个:

CodeMemory
│
├── MCP Server
├── SQLite
├── FTS5
├── Embedding
├── Project Memory
├── Failure Memory
├── Solution Memory
├── Decision Memory
├── Memory Evolution
└── Web UI

甚至第一版完全不需要向量数据库

SQLite:

memories
memory_relations
sessions
issues
attempts
solutions
decisions
  • FTS5

就可以跑起来。

等数据量大了再增加 embedding/vector search。


还有一个很重要的点:Trae / CodeBuddy 是否能做到“自动捕获 → 自动形成记忆”,取决于它们开放的 MCP / Hook / Agent 接口。 如果接口足够开放,那么就可以做到几乎全自动,而不是要求你每次都说“请记住这个”。

如果你愿意,我可以下一步直接帮你把 “Trae/CodeBuddy + SQLite + MCP + 本地 Embedding + 自动提取 Bug/解决方案 + Web 记忆管理界面” 这个系统的架构和数据库 Schema 设计出来。这个其实很适合你前面那种个人开发者、小型工具、NAS 自部署的路线。

有没有基于go或者其他很轻量,数据库用sqlite可以docker部署的

有,而且我刚查了一下,现在已经有一个非常符合你要求的项目:Go + SQLite + FTS5 + MCP + 单二进制

首推:Engram

Engram GitHub

它基本就是你要的:

AI Coding Agent 长期记忆 + Go + SQLite + Docker/本地部署 + MCP

架构非常简单:

Trae / CodeBuddy / Claude Code / Cursor / Codex
                  │
                 MCP
                  │
                  ▼
            ┌───────────┐
            │  Engram   │  ← Go
            └─────┬─────┘
                  │
                  ▼
          SQLite + FTS5
                  │
                  ▼
          engram.db

官方目前的定位就是 Persistent memory for AI coding agents,而且是 agent-agnostic,可以给支持 MCP 的 Coding Agent 使用。它使用 SQLite + FTS5,不需要 ChromaDB、Redis、PostgreSQL 等额外服务。(GitHub)

它为什么特别适合你

Engram 是:

  • Go

  • SQLite

  • FTS5

  • 单二进制

  • MCP Server

  • HTTP API

  • CLI

  • TUI

  • Windows / Linux / macOS

  • ARM64 / AMD64

  • MIT License

  • 不依赖 Node.js / Python / Bun

  • 不需要独立 Vector DB

官方甚至明确把它和 claude-mem 做了对比:Engram 使用 SQLite FTS5,而不是 ChromaDB;单个 SQLite 文件即可保存记忆。(GitHub)


还有一个更接近“问题 → 尝试 → 解决”的

projectmem

projectmem GitHub

这个项目的理念其实非常符合你上一条说的:

“把代码过程中遇到的问题及解决方案形成记忆,并不断优化。”

它不是简单保存聊天记录,而是把开发过程拆成:

Issue
  ↓
Attempt
  ↓
Attempt
  ↓
Fix
  ↓
Decision

例如你今天遇到:

Simulink Bus hierarchy mismatch

然后:

Attempt #1
修改 Bus Object
❌ 失败

Attempt #2
修改 Model Reference
❌ 失败

Attempt #3
修改 Mask Parameter
✅ 成功

最终 Memory 变成:

Issue:
Bus hierarchy mismatch

Failed approaches:
1. 修改 Model Reference
2. 修改 Bus 元素顺序

Successful solution:
通过 Mask 传递 ParaBus_PPS.Value

Reason:
Block 使用 Bus Object,
Value 必须与 Bus hierarchy 完全匹配。

Confidence:
High

而且它还有一个很有意思的机制:

Pre-action Gate

AI 下一次准备做类似操作时:

Agent:
我要修改 Model Reference...

Memory:
⚠️ 这个方案以前失败过。

Previous attempt:
2026-08-10

Failure:
Bus hierarchy mismatch

Recommended:
检查 Bus Object hierarchy

这已经不是传统 RAG 了,而是让 Memory 影响 Agent 下一步行为。论文也把它定义为 Memory-as-Governance。(arXiv)

不过它目前是 Python,不是 Go。


如果你要求“极致轻量”,我会这样排序

项目 语言 DB MCP Docker 轻量程度 我对你的推荐
Engram Go SQLite 可容器化 ⭐⭐⭐⭐⭐ 🥇
projectmem Python 本地事件日志 ⭐⭐⭐⭐ 🥈
memory-graph Python SQLite ⭐⭐⭐ 🥉
agent-memory-mcp Go SQLite ⭐⭐⭐⭐ ⭐⭐⭐⭐

其中 agent-memory-mcp 也是值得看的 Go 项目,它提供 MCP + semantic search,并且官方提供 Docker/Compose 部署方式。(GitHub)


但是我觉得你真正应该选 Engram

尤其结合你前面说的:

个人项目
SQLite
Go
Docker
NAS 部署
Trae / CodeBuddy
希望长期积累 Coding 经验

我会直接选:

             Trae
               │
             CodeBuddy
               │
               │ MCP
               ▼
        ┌───────────────┐
        │    Engram     │
        │     Go        │
        └───────┬───────┘
                │
                ▼
        ┌───────────────┐
        │    SQLite     │
        │     FTS5      │
        └───────────────┘
                │
                ▼
          /data/engram.db

NAS 上甚至可以:

docker-compose.yml
data/
└── engram.db

就够了。

不过有一个非常重要的区别

Engram 更偏“记忆”

而你真正想要的可能是:

“Coding Experience Engine”

也就是:

代码
 ↓
Agent 操作
 ↓
错误
 ↓
尝试
 ↓
解决
 ↓
自动提取经验
 ↓
Memory
 ↓
下次遇到类似问题
 ↓
自动注入经验
 ↓
验证是否有效
 ↓
更新 Memory confidence

这个东西比单纯的 Engram 更进一步。


我反而建议你不要急着部署

因为你前面问的是:

“有没有开源项目可以自动把 Trae / CodeBuddy 写代码过程中遇到的问题及解决方案形成记忆?”

现在答案是:

有,Engram 是目前最符合“Go + SQLite + 极简”的。

但是如果你的目标是:

“我希望在 NAS 上部署一个自己的 Coding Memory Server,然后 Trae、CodeBuddy、Claude Code、Codex 都接进去,共享所有项目经验。”

那我建议我们直接设计一个:

CodeMemory
├── MCP Server       ← Go
├── SQLite           ← 主数据库
├── FTS5             ← 全文检索
├── Embedding        ← 可选
├── Memory Extractor ← LLM
├── Deduplication
├── Confidence
├── Failure Memory
├── Solution Memory
├── Decision Memory
├── Project Memory
└── Web UI

第一版甚至可以控制在一个 Go Docker 容器 + 一个 SQLite 文件。

这样比上 PostgreSQL、Qdrant、Neo4j 之类的方案轻很多,也特别适合你前面说的 NAS 场景。