用 100 行 Python 源码拆解 Agent 的运行机理与内核
上海非解构数字科技有限公司 联合创始人
📺 B站官方回放频道(电脑端推荐) ➔ 搜索关注:非解构
本频道完整收录了《土木人的 Python 课》与《土木人的 AI 课》历次精彩直播录像。同时包含 GAMA 的基础操作教程 以及 GAMA 在土木工程数字化转型中的运用 实例,方便您高清同步学习。
📱 微信视频号直播(手机端推荐) ➔ 搜索关注:非解构
支持微信内搜索直接进入。为您提供《土木人的 Python 课》与《土木人的 AI 课》历次直播精华,并包含 GAMA 数字化设计 与 参数化算法 实战切片,方便在手机端收看直播与交流。
AI Agent 正在以极快的速度演进。无论是原生 CLI、独立桌面端还是深度集成的 IDE,它们都在改变开发者与计算设备的交互范式。以下是目前业界最具代表性的几款 Agent:
在工程和开发中,人们往往把 Agent 包装得很玄学,但从代码本质看,其工作原理十分纯粹:
Chatbot(一问一答)是无状态的单向流动:
y = f(x),接收用户输入并返回文本,连接随之断开。
Agent(智能体)是带状态的环境自反馈循环:
State_t+1 = Loop(State_t, Env)
它借由本地控制程序实现:
大模型本身是绝对无状态(Stateless)的。它无法记住你上一轮说过的话。
所谓的“记忆”,不过是本地程序不断把历史数据累加,在下一次请求时一次性全部塞给模型的障眼法。
在底层,这通过维护一个严格交替的 Messages Array 实现:
append 一个字典。user 和 assistant 之间交替。
大模型不会真正去运行你的 Python 函数或系统 API。
工具调用的底层逻辑是:
tool_result 结构发给大模型。
Agent 之所以被称为“智能体”,是因为它具有自主决策的控制循环。
这在底层是由一个最简单的 while True 循环控制的。这个循环不断在“思考(LLM)➔ 判定是否调用工具 ➔ 本地执行 ➔ 再次推理”之间旋转,直到任务最终达成。
stop_reason 来掌控循环。tool_use 时拦截响应,不直接给用户输出半成品。
如果给 Agent 提供特定的业务 API(如画圆),它只能做画圆的事。
但如果把工具设计为最底层的元指令:
Agent 便拥有了自主编写代码并执行的“沙箱环境”。
当执行报错时,Python 解释器的报错追踪(Traceback)会被直接送还给大脑,驱使它自动分析错误、修正代码并再次执行,实现自我进化(Self-Correction)的调试闭环。
如果把所有工具的逻辑都硬编码到主程序中,Agent 将会变得极其庞大且难以维护。
通过引入 Dynamic Skill (动态技能) 机制:
tool_schema.json 与执行器 handler.py)。importlib 动态扫描并反射加载外部技能。这让 Agent 拥有了像智能手机“安装 App”一样的热插拔插件化能力,也是主流 Agent 平台与 MCP (Model Context Protocol) 服务协议的底层运行基石。
程序员基于业务需求,面向专有 SDK(如 Excel API 或 AutoCAD API)编写死逻辑代码。一旦数据结构或外部接口改变,程序就会直接报错崩溃,必须由人工上线修改源代码进行二次发布。
人类输入模糊的自然语言意图 ➔ Agent 自行分析并生成符合当下环境的临时 Python 脚本 ➔ 在本地代码沙箱中解释运行 ➔ 自动收集环境报错自行重试。整个生命周期均由 Agent 自迭代完成。
智能体不是魔法,而是以“本地运行状态”驱动“大模型动态意图”的自循环控制架构。