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

告别金鱼记忆!一文看透 LangGraph 是如何用 AgentState 和 Checkpoint 实现记忆隔离的

告别金鱼记忆一文看透 LangGraph 是如何用 AgentState 和 Checkpoint 实现记忆隔离的在开发 AI Agent 时让大模型“记住刚才聊了什么”是一项最基础但也最容易让人头疼的需求。如果你正在使用 LangChain 及其专门用于构建状态化 Agent 的核心库LangGraph你可能会对官方文档中频繁出现的几个词感到困惑AgentState、Checkpoint和Thread ID。很多同学知道怎么写几行代码让记忆生效但并不理解底层机制。甚至有人会问“短期记忆是不是就是保存在 AgentState 里的这个状态最后是不是拍成快照存进 Checkpoint 了”答案是完全正确。今天我们就用后端架构师的视角把这套记忆机制的“底层逻辑”以及在真实 Web 生产环境中的落地玩法彻底扒开来看。记忆的“三角恋”AgentState、Checkpoint 与 Thread ID要看透 LangGraph 的记忆设计必须理清这三个核心概念的“三角关系”1. AgentState在内存中奔跑的“公文包”在代码运行的那一刻短期记忆的载体就是AgentState。你可以把它想象成一个在图Graph各个节点Node之间传递的“公文包”。里面装着当前的聊天记录messages、中间变量和处理进度。 但是内存是脆弱的。一旦你的代码运行结束或者服务器重启这个公文包就会瞬间消失。2. Checkpoint公文包的“全息照相机”为了防止公文包消失LangGraph 引入了Checkpointer。 它的工作机制极其优雅每当 Agent 走完一个节点系统就会像保安一样自动给当前的AgentState拍一张照片这就是Snapshot 快照。如果你配置了类似于 SQLite 或 Postgres 的 Saver这张照片就会被悄悄地序列化并持久化到数据库中。3. Thread ID开启记忆档案的“指纹锁”既然数据库里存了成千上万张快照当新请求来时系统怎么知道该提取哪一张 这时候就需要Thread ID线程 ID。Checkpoint 并不是乱存的每一张快照都死死绑定着一个thread_id。当你带着同一个thread_id再次唤醒 Agent 时系统会去库里查找它最新的那张快照把数据重新灌回给AgentState。架构师眼中的 LangGraph 记忆闭环运行中数据在AgentState里流动。节点结束自动拦截状态存入Checkpoint。新请求到来根据thread_id读取最新快照还原AgentState。这种设计赋予了 Agent 极其强大的**“断点续传”**能力生产环境大考如何区分张三和李四的聊天窗口理解了底层我们来看看现实中的工程难题在真实的 Web 网页上有着成千上万的用户每个用户还开着好几个不同的聊天窗口后端到底是如何把记忆隔离开的很多同学敏锐地猜到了是不是前端传过来一个会话 ID然后后端根据这个 ID 给 LangGraph 指定不同的thread_id完全正确这正是标准的后端架构思维。在实际工程中我们靠的就是**“前端 ID 传递 后端 Thread ID 绑定”**这套经典机制。跑通真实的 HTTP 交互闭环前端生成 ID当张三点击“新建对话”时前端Vue/React在本地生成一个唯一的 UUID如session-abc-123。发起请求带上“身份证”张三发消息时前端将内容和 ID 一起打包发送{user_message:北京天气如何,session_id:session-abc-123}后端绑定 Thread ID核心后端FastAPI 或 Spring Boot收到请求提取出session_id并把它作为配置项无缝“塞给” LangGraph# FastAPI / LangGraph 示例config{configurable:{thread_id:request.session_id}}# LangGraph 会自动拿着 session-abc-123 去底层数据库取那张快照responseapp.invoke({messages:[HumanMessage(contentrequest.user_message)]},config)这样一来底层的 Checkpoint 数据库里这张快照就牢牢绑定在了session-abc-123这个主键下。李四的聊天绝对读取不到张三的记忆。高级避坑指南警惕平行越权在文章的最后既然我们提到了用 ID 来区分记忆我必须提醒你一个后端开发中极其容易发生、且后果极其严重的安全漏洞平行越权ID 遍历攻击。危险情况如果你完全信任前端传过来的session_id。黑客只要在浏览器抓包把session_id改成随手乱猜的别人的 ID如果猜中了他就能把别人含有商业机密的聊天快照直接“套”出来正确做法双重锁闭在后端的业务层或者对底层的 Checkpoint 数据库表结构进行扩展时不仅要存thread_id还必须强制存入当前登录用户的user_id通常从后端的 JWT Token 中安全解析出来。在执行读取前后端必须增加一道物理校验“你想访问thread_idsession-abc-123的快照可以但我得先去库里查一下这串快照的owner_user_id是不是等于你当前登录 Token 里的user_id。”做到这一步你才算真正吃透了企业级 AI Agent 架构中的状态管理与安全隔离

相关文章:

告别金鱼记忆!一文看透 LangGraph 是如何用 AgentState 和 Checkpoint 实现记忆隔离的

告别金鱼记忆!一文看透 LangGraph 是如何用 AgentState 和 Checkpoint 实现记忆隔离的在开发 AI Agent 时,让大模型“记住刚才聊了什么”是一项最基础但也最容易让人头疼的需求。 如果你正在使用 LangChain 及其专门用于构建状态化 Agent 的核心库 LangG…...

代码随想录算法训练营 Day40 | 动态规划 part13

647. 回文子串 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 class Solution { public:int countSubstrings(string s) {int n s.size();vecto…...

排课软件采购要防哪些兼容问题:龙创教育深度解析智慧校园选型干货

排课软件采购要防哪些兼容问题:龙创教育深度解析智慧校园选型干货随着教育信息化建设的不断推进,越来越多的学校开始引入智能排课系统替代人工排课,解决排课效率低、冲突多的痛点。但在实际采购过程中,兼容问题是最容易被忽略、也…...

从NRZ到PAM-4:手把手解析PCIe 6.0信号编码的实战挑战与PHY选型避坑

从NRZ到PAM-4:PCIe 6.0信号编码的工程实践与PHY选型策略 当64GT/s的数据速率成为PCIe 6.0的标准配置时,硬件工程师们面临着一个关键抉择:如何在保持信号完整性的同时实现带宽翻倍?答案藏在PAM-4编码技术中——这个在112G以太网中已…...

从零到量产:手把手教你用U-Boot MMC命令为i.MX6ULL板卡烧录完整系统镜像

从零到量产:手把手教你用U-Boot MMC命令为i.MX6ULL板卡烧录完整系统镜像 在嵌入式产品开发中,系统镜像的烧录是连接硬件与软件的关键环节。对于采用NXP i.MX6ULL处理器的设备而言,掌握U-Boot的MMC命令操作不仅能提升开发效率,更能…...

直流微电网在数据中心的应用:如何用5种控制策略提升能源效率

直流微电网在数据中心的应用:如何用5种控制策略提升能源效率 数据中心作为数字经济的核心基础设施,其能耗问题日益突出。据统计,全球数据中心年耗电量已超过2000亿千瓦时,相当于某些中等国家的全年用电量。面对如此巨大的能源需求…...

从地震预测到社交网络:Hawkes过程如何成为‘连锁反应’建模的瑞士军刀?

Hawkes过程:从地震余震到社交传播的连锁反应建模利器 想象一下,当你看到社交平台上某条内容突然爆红时,背后是否存在某种规律?或者当电商平台某个商品销量激增时,是否受到前期购买行为的影响?这些看似无关…...

Sentry 从零到一:手把手部署与多端监控实战

1. 为什么选择Sentry作为错误监控方案 第一次接触Sentry是在三年前的一个深夜,当时我们线上商城突然出现大量支付失败的问题。凌晨三点,我还在服务器日志里大海捞针般寻找线索,直到同事推荐了Sentry。接入后仅用15分钟就定位到一个未处理的第…...

3步实现AI到PSD完美转换:Ai2Psd脚本终极指南

3步实现AI到PSD完美转换:Ai2Psd脚本终极指南 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd Adobe Illustrator和Photoshop是设计…...

终极指南:如何在foobar2000中实现专业级逐字歌词同步体验

终极指南:如何在foobar2000中实现专业级逐字歌词同步体验 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 你是否厌倦了传统歌词插件那种生硬的…...

Android 9.0 AOSP编译实战:手把手教你修改系统Fingerprint,绕过应用环境检测

Android 9.0 AOSP编译实战:深度定制系统指纹绕过环境检测 在移动应用生态中,越来越多的应用开始检测设备系统指纹(Fingerprint)来判断运行环境的安全性。当应用检测到test-keys等开发版标识时,可能会限制功能或直接拒绝…...

【Android】智能工具箱_1_1_8_Lwely

【Android】智能工具箱_1_1_8_去广告_解锁订阅版_Lwely 链接:https://pan.xunlei.com/s/VOqe5UC9mJL1rNZAeFOhIm0jA1?pwdhucf#这款智能工具箱解锁订阅版已去除广告干扰,集成超过百种实用工具于一体,从尺子、水平仪到系统优化功能一应俱全。界…...

TTL计算机原型Pilot-1 CPU的设计与实现

1. 项目概述:ECM-16/TTL计算机的简化验证原型Pilot-1 CPU是我在构建完整ECM-16/TTL计算机过程中的一个关键验证原型。这个采用纯TTL逻辑芯片搭建的16位处理器,虽然指令存储空间仅有16个单词(采用哈佛架构设计),但已经实…...

2026届必备的AI写作方案推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 针对学术研究范畴,恰到好处依循免费人工智能工具可极为突出地提高论文撰写效率。…...

程序员上手 Rust 2 年后感悟:它的确强大,但想要取代 C 还远着呢

作者 | Nabil Elqatib 译者 | 平川 策划 | 刘燕 本文最初发布于 Nabil Elqatib 的个人博客。 接触 Rust 开发快两年了。我觉得,回顾下自己在这个过程中的一些感想和汲取的经验教训,应该会很有趣。 下图是我第一次向一个 Rust 存储库提交代码。虽然时间是…...

2025届最火的五大降重复率神器解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 用于极大助力写作的辅助工具一键论文生成器,借助先进智能算法与自然语言处理技术…...

从Ubuntu双系统到形变图:手把手搞定StamPS+SBAS完整流程(含ISCE安装避坑指南)

从Ubuntu双系统到形变图:手把手搞定StamPSSBAS完整流程(含ISCE安装避坑指南) 当第一次接触InSAR处理时,最令人头疼的往往不是算法原理,而是软件环境的搭建。本文将带你从零开始,在Ubuntu双系统环境下完成St…...

从模型转换到性能评估:用RKNN-Toolkit v1.7.1跑通Mobilenet-V1完整流程实录

从模型转换到性能评估:RKNN-Toolkit v1.7.1实战全流程解析 在边缘计算领域,瑞芯微的NPU平台凭借其出色的能效比和性价比,正成为越来越多AI应用的首选硬件。而RKNN-Toolkit作为连接算法模型与硬件NPU的桥梁,其重要性不言而喻。本文…...

Hearthstone-Script终极指南:如何用Java/Kotlin打造智能炉石传说自动化脚本

Hearthstone-Script终极指南:如何用Java/Kotlin打造智能炉石传说自动化脚本 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 在炉石传说这款…...

从“拒绝访问”到注册成功:深度复盘Win10/Win11下MSCOMM控件安装的全流程避坑指南

从“拒绝访问”到注册成功:Win10/Win11下MSCOMM控件安装全流程避坑指南 当你在Windows 10或11系统上尝试运行某个老旧的工控软件或VB6程序时,突然弹出一个令人沮丧的错误提示:"没有注册类(MSCOMM)"。这个看似简单的错误背后&#x…...

GitHub 中国区前100名,哪些是真开发者?哪些是Markdown工程师?

GitHub 中国区前100名,哪些是真开发者?哪些是Markdown工程师? 大家好,我是彪哥, 本次分析的数据来源于开源项目《中国区 GitHub 用户排行榜》, 仓库数据及分析来自开源工具《悟空 GitHub 数据分析工具》&am…...

为什么你的技术演示应该告别手动排版?md2pptx让PPT制作变得简单高效

为什么你的技术演示应该告别手动排版?md2pptx让PPT制作变得简单高效 【免费下载链接】md2pptx Markdown To PowerPoint converter 项目地址: https://gitcode.com/gh_mirrors/md/md2pptx 还在为技术演示的格式调整而头疼吗?md2pptx是一款开源的Ma…...

5个场景让你的Mac音质焕然一新:eqMac音频均衡器完全指南

5个场景让你的Mac音质焕然一新:eqMac音频均衡器完全指南 【免费下载链接】eqMac macOS System-wide Audio Equalizer & Volume Mixer 🎧 项目地址: https://gitcode.com/gh_mirrors/eq/eqMac 还在为MacBook音质平平而烦恼?无论是视…...

从RSA加密到同余方程:手把手教你用扩展欧几里得算法求乘法逆元(附Python代码)

从RSA加密到同余方程:扩展欧几里得算法实战指南 在计算机科学和密码学领域,模逆元是一个看似简单却至关重要的概念。想象一下,你正在设计一个安全通信系统,或者解决一个算法竞赛中的数论问题,突然遇到了这样一个等式&a…...

【花雕学编程】Arduino BLDC 之6.5 寸轮毂电机自动跟随底盘的几种典型控制逻辑

基于 Arduino 平台控制 6.5 寸 BLDC(无刷直流)轮毂电机实现自动跟随底盘,是机器人开发中非常经典且实用的场景。6.5 寸轮毂电机因其集成了电机、减速箱和轮毂,具备大扭矩、结构紧凑的特点,非常适合此类应用。这里梳理了…...

实时操作系统(RTOS)核心原理与嵌入式开发实践

1. 实时操作系统与嵌入式系统编程概述在工业自动化、航空航天和医疗设备等关键领域,嵌入式系统必须对事件做出及时响应。实时操作系统(RTOS)作为这类系统的核心软件平台,其设计哲学与传统通用操作系统存在本质差异。我曾参与过一款…...

从Python打包exe到逆向分析:一次搞定pyinstxtractor和uncompyle6的使用

Python逆向工程实战:从打包exe到源码还原的完整指南 逆向分析Python打包的exe文件是一项兼具挑战性和实用性的技能。无论是安全研究人员、开发者还是技术爱好者,掌握这项技术都能让你在面对未知Python程序时游刃有余。本文将带你深入探索Python逆向工程的…...

嵌入式系统与CPS核心技术解析与应用实践

1. 嵌入式系统与信息物理系统概述1.1 基本概念与技术特征嵌入式系统是以专用计算机为核心,嵌入到对象体系中完成特定功能的智能化电子系统。与通用计算机系统不同,嵌入式系统具有三个显著特征:专用性:针对特定应用场景优化设计&am…...

别再用Sigmoid了!聊聊ReLU和LeakyReLU如何拯救你的深度网络训练

别再用Sigmoid了!聊聊ReLU和LeakyReLU如何拯救你的深度网络训练 深夜调试模型时,你是否遇到过这样的场景:损失函数曲线像被冻住一样纹丝不动,反向传播的梯度在深层网络中逐渐"消失"?这很可能是因为你还在使用…...

Adobe-GenP 3.0终极指南:一键快速激活Adobe CC全系列软件的完整教程

Adobe-GenP 3.0终极指南:一键快速激活Adobe CC全系列软件的完整教程 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 你知道吗?对于创意工作者…...