我给 10 个 AI Agent 建了一套"基因库",彻底解决了集体失忆症
📖 本文首发于微信公众号「Wesley AI 日记」,更多 AI Agent 实战系列请微信搜索关注。
同一个 bug,在同一个团队里被解决了三次。
第一次:发现内容平台 API 推送出现乱码,排查 20 分钟,发现是 Python requests.post(json=data) 的 ensure_ascii=True 默认设置把所有中文转成了 \uXXXX 形式。修复,通过,继续。
三周后,另一个 Agent 发出了一批乱码文章。排查 15 分钟。根因:一模一样。
两周后,第三次。还是同一个 Agent,不同的代码文件,同一个根因。
这不是技术问题。这是架构问题——AI Agent 团队存在集体失忆症。
为什么 AI 团队会"集体失忆"
我们团队是这样运作的:每个 Agent 有自己的 SOUL.md(人设)、Skill(技能文件)、独立的 memory 目录。它们在各自的 session 里工作,完成任务,session 结束,资源回收。
问题在于:每次 session 结束,当次的经验就基本消失了。
是的,我们有 memory 机制——MEMORY.md 文件、每日日志、incident 记录。但这些是非结构化的文本。当 Agent 遇到新问题时,它需要:
- 知道该读哪个文件
- 在文件里找到相关记录
- 判断这条记录是否适用于当前情况
- 提取出具体的修复步骤
在 context 紧张、任务压力大的情况下,这条链路非常容易断。
我们遇到的真实问题清单
统计了一下,在部署 GEP 之前:
- 内容平台 API 编码问题:3 次独立事故,每次排查 15-30 分钟
- 定时任务投递地址格式错误:5 个不同任务犯了同一个错误,涉及 5 个 Agent
- 平台账号 AppID 混用事故:发错账号,紧急下架
- API 限流(429)时无退避策略,直接重试导致问题加重
这是相当高的"经验浪费率"。
压垮我们的是第二类问题:22 个定时任务里,有 5 个任务的投递地址需要带 chat: 前缀(chat:oc_xxx),但这 5 个任务的配置里直接写了裸 ID。同一个错误,5 个 Agent,5 个配置文件,全部静默失败。
如果有一个"经验库"告诉所有 Agent 这个规则,这 5 次错误只会发生 1 次。
GEP 是什么:把经验变成"基因"
我们参考了 EvoMap(evomap.ai)提出的 **GEP(Genome Evolution Protocol)**协议。
核心理念很简单:
把 AI Agent 的经验结构化为"基因"(Gene),让修复方案可以被自动匹配、复用、继承。
我们没有接入 EvoMap 云端(数据安全顾虑 + 业务高度定制化),而是用 GEP 的格式,建了一套完全本地化的基因库。
基因库的三层结构
Gene(基因):结构化的修复策略
每个 Gene 包含:
Gene: wechat_encoding_guard
触发信号: ["乱码", "ensure_ascii", "\\uXXXX", "Latin-1 高字节字符"]
修复步骤:
1. 找到所有 requests.post(url, json=data) 调用
2. 替换为手动序列化: json.dumps(data, ensure_ascii=False)
3. 设置 Content-Type: application/json; charset=utf-8
4. 编码为 utf-8 bytes 后发送
验证: 全文 Latin-1 高字节字符计数 = 0
Capsule(胶囊):已验证的具体解法
Gene 是"策略",Capsule 是"已验证的具体解法",带有置信度分数。
比如定时任务投递格式的 Capsule:
"定时任务的 delivery.to 需要
chat:前缀(chat:oc_xxx),裸写oc_xxx会被调度中心拒绝。" — 置信度 95%
Signal Matcher:连接问题与解法
# 任何 Agent 遇到问题,一行命令查询已知方案
bash scripts/gep-signal-matcher.sh "你的错误信息"
# → 返回匹配的 Gene、修复步骤、置信度
目前的 12 个 Gene
修复类(8个):
task_delivery_fix— 定时任务投递失败(地址格式错误)task_timeout_escalation— 定时任务超时自动扩容scheduler_restart— 调度中心宕机重启disk_cleanup— 磁盘空间紧急清理cookie_expired— Cookie 登录态过期检测rate_limit_backoff— API 限流退避策略wechat_encoding_guard— 内容平台 API 中文编码防护appid_routing_guard— 账号 AppID 混用防护
优化类(3个):
agent_timeout_diagnosis— 子 Agent 超时诊断task_concurrent_dedup— 定时任务重复触发去重memory_compaction_alert— Session token 溢出检测
创新类(1个):
workflow_standardize— 重复手动流程自动标准化
每一个 Gene 背后都是一次真实事故沉淀下来的经验。
进化策略:自动切换"心态"
系统有 4 种策略,自动切换:
| 策略 | 修复 | 优化 | 创新 | 适用场景 |
|---|---|---|---|---|
balanced | 50% | 30% | 20% | 日常稳定运行 |
harden | 40% | 40% | 20% | 系统升级后 72 小时 |
repair-only | 80% | 20% | 0% | 紧急故障 |
innovate | 5% | 15% | 80% | 一切稳定,探索新能力 |
系统升级后自动切换到 harden 模式,72 小时无新事故回到 balanced。
全团队共享
完成 Gene 库后,我们把 GEP 引用加入了所有 10 个 Agent 的工具说明:
遇到错误时,先查询团队 Gene 库:
bash scripts/gep-signal-matcher.sh "你的错误信息"
在 SOUL.md 里把它加成了强制步骤——遇到非平凡错误,必须先查 Gene 库,再开始排查。
3 个关键教训
1. 知识结构化比知识记录更重要。
散落的文本需要 Agent "会读"且"在对的时刻"去读。结构化的 Gene,让匹配变成了机器可执行的操作。
2. 经验传承要在"造血"阶段就设计好。
每次解决一个非平凡问题后,立刻把修复逻辑沉淀为一个 Gene。
3. AI 团队管理和人类团队管理本质相通。
新员工入职给 SOP 手册,AI 团队给它们 Gene 库。把教训显式化、结构化,才能降低团队的"学习成本"。
从某种意义上说,这才是 AI Agent 团队真正意义上的"进化"——不是模型越来越大,而是团队的集体经验被系统性地传承下去。
📖 本文首发于微信公众号「Wesley AI 日记」
📚 AI Agent 实战系列(微信搜索「Wesley AI 日记」关注):
- OpenClaw实战:20个Cron Job的血泪史——AI自动化不是自动躺平
- OpenClaw实战:Agent输出总翻车?踩坑30天后找到的几个核心原因
- OpenClaw实战:记忆架构升级——给AI Agent Teams建一个集体大脑
👆 微信搜索「Wesley AI 日记」关注,不错过每一篇更新。
