发布时间:2026/9/6 8:17:22
《零帧起手写Agent(零AI基础-课时1):模型没有记忆,状态全在你的代码里》 《零帧起手写Agent零AI基础-课时1模型没有记忆状态全在你的代码里》核心结论模型没有记忆。所谓“对话”是你代码维护的幻觉。市面上90%的Agent教程教什么教你怎么用LangChain、怎么配Dify、怎么三行代码起一个Agent。跑通了完事了。你问它“模型是怎么记住上下文的”——没人告诉你。知识点: 模型根本没有记忆。先看实验A不传历史pythonimport os from openai import OpenAI client OpenAI( api_keyos.getenv(DASHSCOPE_API_KEY), base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) MODEL qwen-plus def ask(text): resp client.chat.completions.create( modelMODEL, max_tokens200, messages[{role: user, content: text}], # 每次只传当前这一句 ) return resp.choices[0].message.content print(第一次, ask(记住一个数字42。记住了就回答好。)) print(第二次, ask(我刚才让你记住的数字是几))运行结果text第一次 好 第二次 你没有告诉过我任何数字。它不是忘了。它是从来不知道。第二次调用是一个全新的、空白的函数执行。上一次调用结束后它不记得任何东西——因为它本来就没有“记忆”这个功能。再看实验B手动把历史传回去pythonimport os from openai import OpenAI client OpenAI( api_keyos.getenv(DASHSCOPE_API_KEY), base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) MODEL qwen-plus # 这个列表就是「记忆」。它在你的进程里不在模型那边。 messages [] def chat(user_text): messages.append({role: user, content: user_text}) resp client.chat.completions.create( modelMODEL, max_tokens200, messagesmessages, # ← 把「全部历史」发过去 ) reply resp.choices[0].message.content messages.append({role: assistant, content: reply}) print(f[本轮发送了 {resp.usage.prompt_tokens} 个输入 token]) return reply print(第一次, chat(记住一个数字42。记住了就回答好。)) print(第二次, chat(我刚才让你记住的数字是几)) print(第三次, chat(那个数字乘以 2 是多少))运行结果text[本轮发送了 55 个输入 token] 第一次 好 [本轮发送了 79 个输入 token] 第二次 你让我记住的数字是42。 [本轮发送了 105 个输入 token] 第三次 42乘以2等于84。现在它答得出来了。注意token数在逐轮上升55 → 79 → 105。这不是错觉——每一轮你都在把全部历史重新发送一遍历史越长输入token越多。结论就一句话模型是无状态的。“记忆”就是你代码里那个messages列表。“对话”是你维护的幻觉。messages数组在你这儿模型那边什么都没有。你每次调用等于把整本剧本递给演员说“按这个演下一句”。演完了剧本收回。下一场想继续你得再把整本剧本递过去。这意味着三件事上下文管理是你的责任不是模型的功能。你让它记住什么取决于你往messages里放什么。每一轮都在为历史重复付费。10轮对话的第10轮你在为前9轮的内容重新付token钱。有上限。messages无限增长迟早撑爆context window。为什么这件事值得你想一想绝大多数教程告诉你“用LangChain的Memory模块就能记住对话”。它没告诉你的是Memory模块只是在帮你往messages里塞东西。本质和上面30行代码做的事一样——维护一个数组。框架把“你手动维护数组”变成了“框架帮你维护数组”但模型无状态这个事实没有变。你的系统出问题时——比如对话乱了、token超了、成本暴涨了——如果你只知道“用Memory模块”你就不知道怎么查。因为你不知道它底下在干什么。只有亲手实现过一遍你才知道哪里会坏。这只是一小部分这篇文章来自我正在连载的一份付费教程目前已经完成了第1课时免费试读破除“模型有记忆”的幻觉亲手验证无状态纯函数第2课时手撕工具调用协议让模型能读文件、执行命令第3课时手写完整Agent Loop跑通4个测试任务观察历史膨胀第4课时搭可复用的实验台让每次API调用都有“黑匣子”记录后续还有第2周数值直觉方差、成本、缓存、Context Rot和第3周工程深化手写Eval框架、并行调度器总共7个课时逐步更新。作者简介20年技术老登辗转于国内各家大厂目前仍在电商大厂带技术团队。正在小报童连载《AI Agent底层认知与工程化实战》。

相关新闻

2026/9/6 8:17:22

美业招商策划公司口碑榜第一,老板必看

在美业竞争白热化的当下,招商扩张早已不是“发传单、搞会议”那么简单。对于门店经营者而言,选对一家真正懂行业、能落地的美业招商策划公司,往往决定了品牌能否在红海中撕开一道口子。那么,市场上那些被称为“口碑榜第一”的招商…

2026/9/6 8:17:22

2026开源API网关横评:微服务与AI流量治理如何选型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/6 8:17:22

全屋智能温控方案:从设备选型到策略调试的完整落地指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/6 14:37:45

成本核算做账流程全解析:归集、分配与月末结账实务指南

简介:成本核算做账流程PPT是一份面向财务人员、ERP实施顾问及制造业成本管理者的体系化学习材料,共46页。内容从成本核算管理模块的系统架构讲起,逐步拆解分域成本设定、标准成本制定、成本次要素设置等基础配置,并覆盖人工制费收…

2026/9/6 14:37:45

意识模拟的不可计算性:从图灵机到神经科学的理论挑战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/6 14:37:45

Python整洁代码与编码规范:从能跑到能维护的工程化实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/6 14:37:45

Qt/C++手搓可视化PID调参控件

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/6 14:32:45

Workbench LS-DYNA显式动力学分析实战:从入门到排错

简介:面向工程分析人员和初学者的Workbench LS-DYNA技术培训PDF,系统讲解ANSYS LS-DYNA显式动力学分析的整体流程与核心功能。包内为单个PDF文件,大小3.74MB,内容依次介绍Workbench LS-DYNA前后处理器、Mechanical操作界面、集成L…

2026/9/6 0:06:59

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/6 0:06:59

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/6 0:06:59

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/6 0:06:59

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/6 0:06:59

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/6 0:06:59

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/6 11:40:10

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/5 2:30:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/6 10:19:40

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…