恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
《零帧起手写Agent(零AI基础-课时1):模型没有记忆,状态全在你的代码里》
首页
资讯中心
/
《零帧起手写Agent(零AI基础-课时1):模型没有记忆,状态全在你的代码里》
《零帧起手写Agent(零AI基础-课时1):模型没有记忆,状态全在你的代码里》
发布时间:2026/9/6 8:17:17
《零帧起手写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底层认知与工程化实战》。