当前位置: 首页 > article >正文

GenericAgent记忆系统深度解析:四层架构如何让AI拥有永不遗忘的大脑

大家好我是张大鹏10年全栈开发经验。在研究了GenericAgent的架构之后最让我拍案叫绝的不是它的Agent循环也不是它的工具设计而是它的记忆系统。这篇文章我会带你从头到尾拆解这套四层记忆架构——它怎么存储、怎么检索、怎么进化以及为什么我说这是目前见过设计最清醒的Agent记忆系统。一、先说一个反常识的设计大多数Agent框架处理记忆的方式很直接把聊天历史全部塞进上下文。不够用了就扩窗口200K不够就上1M。这就像为了找一本书把整座图书馆背在身上。GenericAgent的做法完全不同——它的核心记忆代码不到100行但设计了一套四层架构让Agent每次只携带最必要的信息需要时再按图索骥去取。我看了这么多Agent项目这是第一个让我感觉到这个项目是真的在认真思考记忆问题的。它不是拍脑袋想出来的分层而是有一套完整的元规则在约束每一层该放什么、不该放什么。二、四层记忆架构总览先看整体结构我整理了一张表层级文件/位置容量控制核心作用L0memory/memory_management_sop.md~1页文档记忆系统的宪法——定义规则L1memory/global_mem_insight.txt≤30行1K token极简索引告诉Agent知识在哪L2memory/global_mem.txt小按需膨胀环境事实库路径、ID、配置L3memory/*.md*.py多个文件任务级SOP和工具脚本L4memory/L4_raw_sessions/自动归档ZIP压缩历史会话存档这套架构最精彩的设计是上层不存细节只存指针。也就是所谓的存在性编码——L1不会告诉你怎么操作浏览器它只写一行浏览器特殊操作: tmwebdriver_sop(文件上传/图搜/PDF blob/物理坐标/HttpOnly Cookie/autofill突破/跨域iframe/CDP/跨tab)Agent看到这行就知道“哦遇到浏览器特殊操作时去读tmwebdriver_sop这个文件。” 至于具体怎么操作那是L3的事。三、L0元规则——约束比能力更重要当我读到memory_management_sop.md里的核心公理时我就知道这个项目的作者是真正被Agent坑过的。四条不可违反的规则公理内容一句话理解行动验证原则只有成功的工具调用结果才能写入记忆没验证过的不算知识神圣不可删改性已验证信息在重构时严禁丢失可以压缩不能删除禁止存储易变状态不存时间戳、Session ID、PID等存了就过期的东西不要存最小充分指针上层只留定位下层的最短标识多一个词都是浪费其中第一条最狠——“No Execution, No Memory”。这意味着Agent不能在脑子里YY一些我觉得可能是这样的信息写入记忆。必须是code_run执行成功、file_read确认内容存在之后才能记下来。这直接解决了Agent记忆系统最大的痛点幻觉污染。没有这条规则Agent的自学能力越强记忆库里的垃圾就越多。四、L1存在性编码的实践L1 文件global_mem_insight.txt是整个记忆系统的入口也是唯一一个每次对话都会加载的文件。它长这样这是项目当前的实际情况# [Global Memory Insight] 浏览器特殊操作: tmwebdriver_sop(文件上传/图搜/PDF blob/物理坐标/...) 键鼠: ljqCtrl_sop(禁pyautogui/先activate) 截图/视觉: ocr/vision_sop | 禁全屏截图优先窗口 定时:scheduled_task_sop | 自主:autonomous_operation_sop 手机:adb_ui.py 需要时read L2 或 ls ../memory/ 查L3 L0(META-SOP): memory_management_sop L2: 公众号(微信ID/目录路径) L3: memory_cleanup_sop | skill_search | plan_sop | ... L4: L4_raw_sessions/ [RULES] 1. 搜索先行: 搜文件名严禁不用es... 2. 交叉验证: 禁信摘要... ...注意几个设计细节第一层高频场景直接映射。像浏览器特殊操作 →tmwebdriver_sop这种括号里放的是场景触发词不是操作方法。Agent读到的是一把钥匙不是说明书。第二层低频场景只列关键词。对于不常用的能力L1只写文件名Agent需要时再去读。RULES区存放的是红线规则——那些违反不会报错但会导致结果错误的事情。比如搜索用google不用百度、“交叉验证不要信摘要”。这些是项目实践中踩过的坑凝结成的教训。L1 的更新有一条硬性红线——只能 patch 修改严禁 overwrite。因为让 LLM 重写整个文件大概率会丢掉一些信息。每一次更新必须是精准的局部替换。五、L2 L3事实库与技能库L2你不该让LLM猜的东西L2global_mem.txt存放的是环境特异性事实——那些大模型不可能靠参数准确生成的信息## [公众号相关] # 公众号微信ID: yggaibc # 公众号文章目录: ../articles/公众号/这类信息的特点是零次学习失败率100%。你让LLM猜你的公众号ID它不可能猜对。所以必须存下来。L2禁止存储的内容也很有意思通用常识。比如Python列表怎么遍历——这种信息大模型已经会了存了就是浪费token。L3任务的肌肉记忆L3是memory/目录下的SOP文件*_sop.md和工具脚本*.py。每个文件对应一类任务的操作规范。一个SOP文件的典型内容结构关键前置条件开始前必须确认的事情典型易踩坑点上次在这个任务上反复失败的原因操作要点极简步骤不是教程设计原则很克制——只记录跨会话仍重要、且难以快速重建的要点。那些上网搜一下就能找到的东西不记。六、L4历史的归档与遗忘L4memory/L4_raw_sessions/是历史会话层也是唯一一个自动化运行的层级。它的工作机制在reflect/scheduler.py中定义——每12小时自动触发一次归档流程# reflect/scheduler.py:63-74defcheck():global_l4_tif_time.time()-_l4_t43200:# 12小时_l4_t_time.time()fromcompress_sessionimportbatch_process raw_dir../temp/model_responsesrbatch_process(raw_dir,dry_runFalse)归档流程分四步我在compress_session.py里梳理出了完整逻辑原始会话文件 → 压缩剥离系统提示和冗余回声 → 提取 [USER]/[Agent] 历史摘要 → 去重合并滑动窗口匹配 → 追加到 all_histories.txt 按月 ZIP 压缩 → 删除原始文件核心的压缩逻辑对于原始格式的会话文件会剥离系统提示和助手的冗余回声def_compress_raw(text):sections_parse_sections(text)out[]fori,(typ,line,body)inenumerate(sections):iftypprompt:out.append(line\n)ifnot(i1len(sections)andsections[i1][0]user):out.append(body)eliftypin(user,response):out.append(line\n)out.append(body)# assistant → skip (redundant echo)return.join(out)这段代码我特别喜欢——就20行干净利落地完成了去掉系统提示、去掉助手回声、保留用户和助手交互的压缩逻辑。不依赖任何第三方库。L4目前有一个状态只写不读。会话被压缩归档了但Agent在后续任务中不会主动去检索这些历史。这是当前设计中最明显的缺环——archive 的目的应该是 future retrieval但目前只完成了archive这一半。七、运行时记忆working history 双通道除了文件系统的持久化记忆运行时还有两个活的记忆结构定义在ga.py中。工作记忆 (Working Memory)# ga.py:263-268classGenericAgentHandler(BaseHandler):def__init__(self,parent,last_historyNone,cwd./temp):self.working{}self.history_infolast_historyiflast_historyelse[]self.working是一个字典最关键的是key_info字段——它通过update_working_checkpoint工具写入每轮自动注入下一轮提示词# ga.py:432-442defdo_update_working_checkpoint(self,args,response):key_infoargs.get(key_info,)related_sopargs.get(related_sop,)ifkey_infoinargs:self.working[key_info]key_infoifrelated_sopinargs:self.working[related_sop]related_sop self.working[passed_sessions]0yieldf[Info] Updated key_info and related_sop.\nnext_promptself._get_anchor_prompt(skipargs.get(_index,0)0)returnStepOutcome({result:working key_info updated},next_promptnext_prompt)这相当于Agent的便签纸——任务进行到一半时把关键的避坑点、当前进度、下一步计划记下来防止在长任务中迷失方向。summary协议这是我最喜欢的设计之一。每次LLM回复时必须输出一个summary标签内容是单行物理快照# llmcore.py:933-935THINKING_PROMPT_ZH 每次回复含工具调用轮都先在回复文字中包含一个summary/summary 中输出极简单行30字物理快照上次结果新信息本次意图。 # ga.py:523-534defturn_end_callback(self,response,tool_calls,tool_results,turn,next_prompt,exit_reason):rsummre.search(rsummary(.*?)/summary,_c,re.DOTALL)ifrsumm:summaryrsumm.group(1).strip()else:# 没有summary时自动生成summaryf调用工具{tool_name}, args:{clean_args}self.history_info.append(f[Agent]{summary})然后通过_get_anchor_prompt()将最近的40条摘要回注到下一轮# ga.py:511-521def_get_anchor_prompt(self,skipFalse):h_str\n.join(self.history_info[-40:])promptf\n### [WORKING MEMORY]\nhistory\n{h_str}\n/historyifself.working.get(key_info):promptf\nkey_info{self.working.get(key_info)}/key_inforeturnprompt这套强制摘要 回注机制的精妙之处在于让LLM自己负责压缩自己的历史。不是用算法去截取原始对话而是让LLM每轮输出一个它认为最重要的快照。压缩质量远高于简单的滑动窗口。八、完整数据流从启动到持久化我把整个记忆系统的运行流程串起来画成了一条完整的链路agentmain.py 启动 │ ├── 初始化 L1/L2 文件不存在则从模板创建 │ ├── get_global_memory() → 读取 L1 global_mem_insight.txt │ 固定结构模板 │ → 注入系统提示词 │ └── agent_runner_loop 开始循环 │ ├── 每轮开始: _get_anchor_prompt() │ ├── history_info[-40:] → history 块 │ ├── working[key_info] → key_info 块 │ └── working[related_sop] → SOP 提示 │ ├── Agent 回复包含 summary │ ├── turn_end_callback() │ ├── 提取 summary → 追加到 history_info │ ├── 每10轮: 重新注入 L1 全局记忆防遗忘 │ └── 检查是否注入 _keyinfo / _intervene │ ├── 工具调用分支 │ ├── update_working_checkpoint → 更新 key_info │ └── start_long_term_update → Agent 自行修改 L1-L3 │ └── 后台scheduler.py 每12小时 └── compress_session.batch_process() → 压缩 → 提取 → 去重 → 归档 L4这个流程里有一个特别关键的防遗忘设计每10轮自动重新注入全局记忆ga.py:539。因为在长对话中Agent很容易忘记自己在L1里有什么知识可用。定期重新注入相当于敲敲它的脑袋“别忘了你还有这些工具。”九、总结与评价经过这一轮深入源码的拆解我用一个表格总结GenericAgent记忆系统的设计维度评价设计哲学★★★★★ — 存在性编码比全量记忆聪明得多架构清晰度★★★★★ — L0-L4分层清晰职责分明不重叠token效率★★★★★ — 默认只加载L11K token按需取用深层防污染机制★★★★☆ — 无行动不记忆原则能有效阻挡幻觉闭环完整性★★★☆☆ — L4归档后缺乏检索利用只写了一半代码精简度★★★★★ — 记忆核心代码不到100行没有冗余这套系统最让我佩服的不是技术有多复杂而是设计上的克制。每一行代码都在问同一个问题“这条信息真的值得存吗”、“这个细节真的需要在L1里吗”在Agent开发中能存多少不是问题该存什么才是真正考验设计师功力的地方。GenericAgent用四层架构和一套元规则给出了目前我看到的最诚实的答案。参考资料GenericAgent GitHub仓库技术报告arXivDatawhale入门教程GenericAgent深度解析3K行代码打造自我进化的AI Agent框架作者张大鹏团队大鹏 AI 教育日期2026-05-01我是张大鹏10年全栈开发经验目前专注于 AI 全栈教育培训。关注我每周分享AI和全栈开发领域的深度实战经验。

相关文章:

GenericAgent记忆系统深度解析:四层架构如何让AI拥有永不遗忘的大脑

大家好,我是张大鹏,10年全栈开发经验。在研究了GenericAgent的架构之后,最让我拍案叫绝的不是它的Agent循环,也不是它的工具设计,而是它的记忆系统。这篇文章我会带你从头到尾拆解这套四层记忆架构——它怎么存储、怎么…...

从Quixel Bridge到动态水面:一套完整的UE5场景材质实战工作流

从Quixel Bridge到动态水面:一套完整的UE5场景材质实战工作流 当你在虚幻引擎5中构建一个完整的场景时,材质系统往往是决定最终视觉效果的关键因素。无论是室内展厅的艺术品展示,还是湖边小屋的自然氛围营造,材质的表现力直接影响…...

当Themida加壳失效后:聊聊火绒主动防御的升级与我们的学习路径调整

当传统加壳技术失效:现代终端防护的进化与对抗策略 在网络安全领域,攻防对抗如同永不停歇的军备竞赛。去年还行之有效的技术手段,今年可能就会因为安全厂商的规则更新而失效。最近一位同行在实验中遇到了典型场景:使用Themida对样…...

Python机器学习实战:手把手教你修复朴素贝叶斯中的log除零警告(附完整代码)

Python机器学习实战:深入解析朴素贝叶斯中的log除零问题与数值稳定性优化 第一次在PyCharm里运行《机器学习实战》的朴素贝叶斯代码时,满屏的RuntimeWarning让我停下了复制粘贴的手。特别是看到divide by zero encountered in log这个警告时,…...

Syncthing同步报错‘断开连接’?手把手教你排查版本冲突与TLS握手问题(附Linux/Mac/FreeBSD多端配置)

Syncthing同步报错‘断开连接’?手把手教你排查版本冲突与TLS握手问题(附Linux/Mac/FreeBSD多端配置) 当你满怀期待地部署了Syncthing,准备享受无缝跨平台文件同步的便利时,控制台突然弹出的"断开连接&#xff08…...

ELK全家桶HTTPS实战:从自签PEM证书到Java Client连接的一站式配置

ELK全栈HTTPS实战:从证书签发到Java客户端安全连接的完整指南 在分布式系统架构中,数据安全传输已成为刚需。本文将手把手带您完成ELK Stack(ElasticsearchKibanaLogstash)的HTTPS全链路配置,特别针对开发测试环境设计…...

3分钟搞定抖音无水印下载:零基础也能轻松保存视频和直播回放

3分钟搞定抖音无水印下载:零基础也能轻松保存视频和直播回放 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback…...

教育科技产品集成Taotoken为学生提供个性化AI学习辅导

教育科技产品集成Taotoken为学生提供个性化AI学习辅导 1. 教育场景中的大模型需求 在线教育平台面临的核心挑战之一是如何为不同学习阶段的学生提供个性化辅导。传统解决方案往往依赖预设题库和固定难度分级,难以动态适应学生的实时学习状态。通过集成Taotoken的大…...

如何永久保存微信聊天记录?WeChatMsg数据留痕完全指南

如何永久保存微信聊天记录?WeChatMsg数据留痕完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...

ParsecVDisplay虚拟显示器终极指南:5分钟掌握Windows虚拟显示完整实战教程

ParsecVDisplay虚拟显示器终极指南:5分钟掌握Windows虚拟显示完整实战教程 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 想要扩展Windows电脑的显示空间却不想购买额…...

深入 Python 循环引用与垃圾回收:如何应对内存管理的挑战

深入 Python 循环引用与垃圾回收:如何应对内存管理的挑战 在 Python 中,内存管理是一个至关重要的主题,特别是在处理长时间运行的服务和大量数据时。内存泄漏和资源管理不当往往是导致服务性能下降或崩溃的根源之一。一个常见的内存问题就是 …...

2025届学术党必备的五大AI学术网站实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术写作这个范畴之内,AI论文工具正逐渐变成研究者以及学生的得力帮手&#xf…...

别再为摄像头品牌不兼容发愁了!手把手教你用ONVIF协议搞定海康、大华等主流设备混搭

跨品牌监控系统整合实战:用ONVIF协议实现海康大华设备无缝混搭 当不同品牌的监控设备需要在同一系统中协同工作时,工程师们常常面临兼容性噩梦。某智能园区项目曾因设备品牌混杂导致系统延迟高达3秒,直到采用ONVIF协议才将延迟降至200毫秒以内…...

长期项目使用 Taotoken 按 token 计费带来的成本可控体验

长期项目使用 Taotoken 按 token 计费带来的成本可控体验 1. 项目背景与需求 我们团队运营着一个长期运行的内容生成项目,需要持续调用大模型 API 来完成日常的文本创作任务。在项目初期,我们尝试过多种接入方式,但很快发现成本控制成为一个…...

多模态智能系统DeepVision-VLA:机器人视觉语言动作融合实践

1. 项目概述:当机器人学会"看图说话"时会发生什么?去年在调试机械臂抓取系统时,我遇到一个典型场景:当操作目标从红色方块变成蓝色圆柱时,传统视觉系统需要重新编程才能适应新物体。这促使我开始探索如何让机…...

IOTA Wallet入门:如何在5分钟内快速创建你的第一个IOTA账户

IOTA Wallet入门:如何在5分钟内快速创建你的第一个IOTA账户 【免费下载链接】legacy-wallet-use-trinity-wallet-instead IOTA Wallet 项目地址: https://gitcode.com/gh_mirrors/le/legacy-wallet-use-trinity-wallet-instead IOTA Wallet是一款专为IOTA加密…...

如何安全备份微信聊天记录:5步完成完整数据保护指南

如何安全备份微信聊天记录:5步完成完整数据保护指南 【免费下载链接】WechatBakTool 基于C#的微信PC版聊天记录备份工具,提供图形界面,解密微信数据库并导出聊天记录。 项目地址: https://gitcode.com/gh_mirrors/we/WechatBakTool 微…...

JoyCon-Driver终极指南:在Windows上免费使用Switch Joy-Con控制器

JoyCon-Driver终极指南:在Windows上免费使用Switch Joy-Con控制器 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver 想在Windows电脑上体验任…...

如何使用CSS Stats CLI工具:命令行下的CSS深度分析完整指南

如何使用CSS Stats CLI工具:命令行下的CSS深度分析完整指南 【免费下载链接】cssstats Visualize various stats about your CSS 项目地址: https://gitcode.com/gh_mirrors/cs/cssstats CSS Stats CLI工具是一款强大的命令行工具,能够帮助开发者…...

如何在Obsidian中实现智能PDF标注:PDF++插件终极指南

如何在Obsidian中实现智能PDF标注:PDF插件终极指南 【免费下载链接】obsidian-pdf-plus PDF: the most Obsidian-native PDF annotation & viewing tool ever. Comes with optional Vim keybindings. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-p…...

Coolapk-UWP终极指南:在Windows电脑上畅游酷安社区的完整解决方案

Coolapk-UWP终极指南:在Windows电脑上畅游酷安社区的完整解决方案 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 你是否厌倦了在小屏幕手机上刷酷安?是否希望在大…...

如何高效使用华为光猫配置解密工具:5步完整操作指南

如何高效使用华为光猫配置解密工具:5步完整操作指南 【免费下载链接】HuaWei-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/hu/HuaWei-Optical-Network-Terminal-Decoder 华为光猫配置解密工具是一款专为网络管理员和技术爱…...

通过curl命令快速测试Taotoken的API密钥与接口连通性

通过curl命令快速测试Taotoken的API密钥与接口连通性 1. 准备工作 在开始测试之前,请确保您已获取有效的Taotoken API密钥。登录Taotoken控制台,在API密钥管理页面可以创建或查看现有密钥。同时确认您的系统已安装curl工具,大多数Linux/mac…...

保姆级教程:在Jetson Orin上跑通YOLOv8+DeepOCSort多目标跟踪(附模型下载与常见报错解决)

边缘计算实战:Jetson Orin部署YOLOv8DeepOCSort全流程指南 在智能安防、工业质检和自动驾驶等实时场景中,边缘设备上的多目标跟踪技术正成为刚需。NVIDIA Jetson Orin凭借其32TOPS的AI算力和能效比,成为部署轻量级跟踪算法的理想平台。本文将…...

终极跨语言语义搜索解决方案:paraphrase-multilingual-MiniLM-L12-v2完全指南

终极跨语言语义搜索解决方案:paraphrase-multilingual-MiniLM-L12-v2完全指南 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 在全球化数字时代&…...

蓝桥杯CT107D板子上的555定时器:用单片机T0计数模式测频率的保姆级代码解析

蓝桥杯CT107D开发板实战:用T0计数模式精准测量555定时器频率 在蓝桥杯单片机竞赛中,频率测量是一个经典考点。CT107D开发板上的NE555模块配合51单片机的计数器功能,可以构建一个简单而高效的频率测量系统。本文将彻底解析如何利用定时器T0的计…...

MAA明日方舟助手:终极自动化解决方案,彻底解放你的游戏时间

MAA明日方舟助手:终极自动化解决方案,彻底解放你的游戏时间 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地…...

Element UI el-upload实战:手把手教你实现图片视频混合上传与预览(含样式踩坑记录)

Element UI混合上传实战:图片与视频的样式统一与交互优化 在后台管理系统开发中,文件上传功能几乎是标配需求。Element UI的el-upload组件虽然提供了基础的上传能力,但当我们需要同时处理图片和视频,并且要求视觉风格统一时&#…...

Geometrize开发者指南:如何扩展和定制几何化功能

Geometrize开发者指南:如何扩展和定制几何化功能 【免费下载链接】geometrize :white_square_button: Geometrize is a desktop app that geometrizes images into geometric primitives 项目地址: https://gitcode.com/gh_mirrors/ge/geometrize Geometrize…...

从新手到专家:用RPFM全面战争MOD制作工具实现效率革命

从新手到专家:用RPFM全面战争MOD制作工具实现效率革命 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt6 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https://git…...