乐于分享
好东西不私藏

AI助手又失忆了?这次我找到真凶了,居然是Git分支惹的祸

AI助手又失忆了?这次我找到真凶了,居然是Git分支惹的祸

AI助手又失忆了?这次我找到真凶了,居然是Git分支惹的祸

大家好,我是超哥~

昨天刚发完一篇《AI助手失忆了?我花两周搭的记忆系统,居然被一个新会话干翻了》,讲了我给AI搭建四层记忆系统的经历,我自己也觉得这事儿算是圆满解决了。

结果——打脸来得比翻书还快。

今天上午,我打开新会话,跟AI说:”帮我新增一个项目信息。随后给上了项目名称、项目负责人、合同签订时间、合同金额等数据”

它回我:”好的超哥,我记住了,后面需要记录时随时吩咐”

我当时就知道它又失忆了。

我又一次,眼睁睁看着它把记忆弄丢了。


01 上次说”解决了”,这次脸打得啪啪响

先交代一下背景。

3月底的时候,我的AI确实”失忆”过一次。那次是因为WorkBuddy的会话级记忆机制有天然缺陷——关掉窗口就归零。

我当时花了两天时间,给它搭了一套完整的记忆系统:

  • 灵魂三文件
    :SOUL.md、USER.md、IDENTITY.md(每次启动自动加载)
  • 每日工作日志
    :.workbuddy/memory/日期.md(记录当天干了什么)
  • 长期记忆
    :MEMORY.md(沉淀核心知识和关键决策)
  • Gitee实时同步
    :文件一变,30秒内自动提交推送

这套方案跑了一周,稳得一批。我还专门写了篇文章分享出去,觉得自己终于把这个坑彻底填上了。

事实证明,我还是太天真了。


02 真凶浮出水面:一个仓库,两个应用,全乱套了

这次失忆之后,我没急着修,而是静下心来仔细复盘。

我发现一个关键线索:丢失的记忆,全部跟”trae-ai”有关。

而我的 WorkBuddy 配置里,有两个应用在同时运行:

  1. WorkBuddy
     —— 我的主力AI助手
  2. Trae AI
     —— 另一款AI编程工具

问题出在哪?

出在 Gitee 仓库的分支管理上。

你们看这张图——这就是我 Gitee 仓库的分支结构:

  • master
    :默认分支,所有东西都往这里推
  • workbuddy
    :我创建的分支
  • trae-ai
    :我创建的另一个分支

看起来没什么问题对吧?但问题就在这里——太”没问题”了。

实际情况是这样的:

我把两个应用的配置和记忆,全部塞到了同一个Gitee仓库的不同分支上。 表面上井井有条,实际上一塌糊涂。

具体来说,踩了三个大坑:

坑一:分支切换导致记忆串台

有一天我在用 Trae AI 写代码的时候,同步脚本把 Trae 的配置变更推到了 workbuddy 分支。结果下一次 WorkBuddy 启动时,拉取到了 Trae 的配置文件,直接把自己的记忆覆盖了一部分。

这就像你把两个人的日记本混在一起,今天翻开一看——昨天写的字不是自己的笔迹。

坑二:合并冲突,直接丢数据

更惨的一次是:两个分支同时修改了 MEMORY.md,产生冲突时 Git 自动合并,把 trae-ai 相关的内容整个吞掉了。

没有任何报错,没有任何提示。等我发现的时候,半个长期记忆已经人间蒸发了。

坑三:服务器拉取错分支

服务器端用 crontab 每15分钟 pull 一次。有一次服务器默认拉取的是 master 分支,而 master 分支上的内容还是两周前的老版本。

结果?服务器上的AI直接回滚到了两周前的状态,所有新记忆全部作废。


03 根因分析:为什么”同一个仓库多分支”是伪方案

事后我认真想了一下,为什么会犯这么低级的错误?

说白了,是被 Git 的”分支很便宜”这句话忽悠了。

Git 确实鼓励你多用分支,但那是在同一个项目内部的场景下。

而我的情况完全不同:

WorkBuddy
Trae AI
用途
通用AI工作助手
AI编程工具
配置文件
SOUL.md / IDENTITY.md / USER.md
完全不同的配置体系
技能系统
17个专业子技能
编程相关技能
记忆内容
项目管理/飞书/公众号
代码仓库/API接口
更新频率
每天十几次
不固定

这两个应用除了都用 .workbuddy 目录存放配置之外,几乎没有共同点。

把它们塞进同一个仓库的不同分支,就像把厨房和厕所的水管接到同一个总阀门上——关一个,另一个也断水;修一个,另一个也漏水。

这不是分支管理的问题,这是架构设计的问题。


04 我的最终方案:一个应用,一个仓库,互不干扰

想清楚之后,我只做了一件事:

每个应用独立一个 Gitee 仓库,独立一个分支。

现在的架构是这样的:

❬/❭ Code

Gitee 仓库 A: workbuddy-config └── 分支: master (仅 WorkBuddy)     ├── .workbuddy/SOUL.md     ├── .workbuddy/USER.md     ├── .workbuddy/IDENTITY.md     ├── .workbuddy/memory/     └── .workbuddy/skills/  Gitee 仓库 B: trae-ai-config ├── 分支: master (仅 Trae AI) │   ├── .workbuddy/ (Trae专属配置) │   ├── memory/ (Trae专属记忆) │   └── skills/ (Trae专属技能)

改动很小,效果立竿见影:

✅ 零串台风险:WorkBuddy 的同步脚本只推自己的仓库,Trae 的脚本只推自己的仓库,永远不可能互相污染

✅ 零冲突可能:不同仓库之间不存在合并冲突的问题,因为根本不会合到一起

✅ 零回滚风险:服务器端各自拉取各自的仓库,不存在拉错分支的情况

✅ 清晰可追溯:哪个应用改了什么,一看仓库就知道,不用再翻分支历史


05 踩了这个坑之后,我总结了三条铁律

第一:隔离 > 共享,永远不要为了省事而混用存储空间。

一开始我觉得”反正都是配置文件,放一起省事”。结果省下来的那点事,后面花了三倍的时间去填坑。

第二:Git分支适合同项目的并行开发,不适合不同应用的配置隔离。

分支的本质是”同一棵树的不同版本”,而不是”两棵不同的树”。别强行用它干不擅长的事。

第三:监控告警不能少,出了问题第一时间要知道。

如果我在第一次出现分支冲突的时候就收到告警,后面的数据丢失完全可以避免。现在我在每个仓库的同步脚本里加了校验逻辑——一旦检测到非预期的文件变化,立刻通知我。


06 写在最后

从3月第一次失忆,到4月初发现Gitee分支混乱的真凶,再到今天的独立仓库方案——我跟AI记忆这个问题缠斗了整整一个月。

但这一个月让我明白了一个道理:

搭建AI记忆系统,技术方案只是第一步。真正难的是运维。

你的本地文件写得再漂亮,备份策略做得再完美,如果底层的数据组织架构有问题,一切都会在某个不经意的时刻崩塌。

就像做项目管理一样——代码写得好不代表系统能稳定运行,文档写得好不代表项目能顺利交付。底层的规划,才是决定成败的关键。

现在我的两个AI助手各占各的仓库,各记各的事,井水不犯河水。

我终于可以放心地跟它们说话了——不用担心哪天一觉醒来,它们又不认识我了。


如果这篇文章帮到了你,帮超哥点个赞、转发一下。

记住:给你的AI建记忆系统不难,难的是让这套系统能一直稳定地活着。别让你的”外挂大脑”,因为一个低级错误而再次瘫痪。