AgentLoop分享(上): 让 AI 真正“自主干活“-Day15
配套代码simpleAgent 项目agentloop/01_while_loop.py手写 AgentLoop一、一个关键转变从问一句到干一件事用 ChatGPT 时我们是一问一答问一句它答一句。但真实工作不是这样——把收容所的小猫领养出去这个任务需要一连串动作第 1 步先看看收容所有哪些宠物 工具列出目录第 2 步找到猫咪小花把它移走 工具移动文件第 3 步再确认一下现在剩下什么 工具列出目录第 4 步向用户汇报结果 输出总结AI 要完成这类任务不能只答一句话它需要反复地思考 → 动手 → 看结果 → 再思考。这个循环就是AgentLoopAgent 主循环。一句话AgentLoop 反复执行模型提建议 程序执行ToolCall 结果回传直到模型认为任务完成。二、为什么工具执行权必须在我们手里这是 Agent 设计最重要的安全原则模型只会说“我想调用 move_file 工具参数是 inbox/猫咪小花.txt → archive/”真正移动文件的是我们的代码我们可以在执行前做任何检查路径是否合法、权限是否足够、要不要人工确认模型输出文字我要调 move_file(猫咪小花.txt, archive) │ ▼ 代码校验 → 执行 → 返回结果 │ ▼ 结果放回历史 → 模型看到结果 → 决定下一步这也是为什么 Agent 的能力边界 我们给了它多少工具。给它的工具越多、越安全它能干的事越多但风险也越大——工具就是 Agent 的手。三、AgentLoop 的 4 步本质手写版一眼看懂参考代码agentloop/01_while_loop.py核心只有这几步forturninrange(1,8):# ① 限定最多 8 轮防死循环responsellm.invoke(messages)# ② 让模型思考基于全部历史messages.append(response)# 模型的话放回历史ifnotresponse.tool_calls:# ③ 模型没要求调工具print(response.content)# 那就是最终回答结束breaktool_callresponse.tool_calls[0]# ④ 模型要求调工具resulttool_map[tool_call[name]].invoke(tool_call[args])# 执行messages.append(ToolMessage(# 结果放回历史带 tool_call_idcontentstr(result),tool_call_idtool_call[id],))# → 回到 ②模型继续思考这 4 步就是所有 Agent 框架的底层原语。后面学 LangGraph你会发现它只是把这 4 步画成了一张开源的图。三个必须记住的细节历史要全量回传每一轮都要把完整对话历史发给模型模型才能记得前面做过什么。tool_call_id 要对上号工具结果必须带模型给的 id模型才知道这个结果回应的是哪个调用。必须有最大轮数模型可能陷入死循环反复调同一个工具for range(8)就是保险丝。四、核心概念ReAct推理 行动Agent 边思考边行动的经典范式叫ReActReasoning ActingReasoning推理模型观察当前状态决定下一步该干嘛Acting行动调用一个工具观察结果再推理下一步Thought: 我需要先看看收容所有哪些宠物 Action: list_files(inbox) Observation: 有猫咪小花、狗狗旺财、仓鼠球球 Thought: 找到了猫咪小花现在领养它 Action: move_file(inbox/猫咪小花.txt, archive/) Observation: 移动成功 Thought: 任务完成可以汇报了 Answer: 已领养猫咪小花……我们的手写循环就是 ReAct 的代码化。模型输出里的Thought / Action / Observation不一定是显式文字——现在的大模型通过结构化的tool_calls字段直接表达我要行动而观察结果由我们回传。五、动手体验10 分钟cd~/simpleAgentsource.venv/bin/activate# 配置 .env 里的 API_KEYDeepSeek 注册送额度cdagentloop python3 01_while_loop.py运行后你会亲眼看到每一轮的过程--- 第 1 轮模型思考 --- 模型决定调用工具list_files({path: inbox}) 工具返回 - inbox/猫咪小花.txt ... --- 第 2 轮模型思考 --- 模型决定调用工具move_file({source: inbox/猫咪小花.txt, target: archive/}) 工具返回 已移动 ... --- 第 3 轮模型思考 --- ✅ 最终回答已完成领养……推荐练习把任务改成领养仓鼠球球——观察模型怎么自己调整工具参数在代码里故意去掉ToolMessage回传——看模型会失忆把range(1, 8)改成range(1, 2)——看模型来不及完成任务六、小结概念一句话AgentLoop反复思考 → 执行工具 → 回传结果直到任务完成的循环ReAct推理 行动交替的经典范式tool_calls模型表达想调工具的结构化字段name / args / id执行权永远在我们代码手里模型只提议最大轮数防止死循环的保险丝

相关新闻

家庭网络从传统路由器转向 OVN 的实践与思考

家庭网络从传统路由器转向 OVN 的实践与思考

家庭网络从传统路由器转向 OVN 的实践与思考 很多技术爱好者或家庭实验室管理员都曾对消费级路由器感到失望:功能固化、性能瓶颈、日志简陋、高级网络策略难以实现。当 VLAN、多 WAN、复杂防火墙规则、流量监控和网络隔离成为刚需时,这些“黑盒子”路由…

2026/10/18 14:05:55 阅读更多 →
音乐解密终极指南:5分钟解锁所有加密音乐格式的完整方案

音乐解密终极指南:5分钟解锁所有加密音乐格式的完整方案

音乐解密终极指南:5分钟解锁所有加密音乐格式的完整方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: htt…

2026/10/19 18:27:52 阅读更多 →
大模型应用开发教程04 | 多轮对话原理与实现(Chatbot)

大模型应用开发教程04 | 多轮对话原理与实现(Chatbot)

理论部分 很多人第一次写多轮对话,会误以为“模型记住了刚才聊过的内容”。但从 API 的角度看,多轮对话的本质其实是: 每一轮请求都把历史消息一起发给模型。 也就是说: 模型没有“长期记忆”(默认情况下不会跨请求自动…

2026/10/19 16:23:39 阅读更多 →

最新新闻

AI辅助毕业答辩PPT制作:逻辑压缩与实操全攻略

AI辅助毕业答辩PPT制作:逻辑压缩与实操全攻略

每年四五月份,总有一批人要熬夜改答辩PPT。我当年也没躲过这关——论文写完了,数据跑完了,结果卡在“怎么把几十页Word变成十几页PPT”上,一页页截图、复制、删减、调整格式,那几天基本是崩溃的。现在情况好多了&#…

2026/10/20 12:02:59 阅读更多 →
Qwen2.5-VL-7B LoRA微调实战:从原理到训练全流程指南

Qwen2.5-VL-7B LoRA微调实战:从原理到训练全流程指南

开始前先说一句:这篇是 Qwen2.5-VL-7B 模型低秩适配 LoRA 微调方法应用连载的第八篇,前面几篇已经零零散散聊过部署、数据、评估这些东西,这一篇想把这些内容收敛到一条能从零跑通的实战链路上。Qwen2.5-VL-7B 是目前在文档理解、截图问答、智…

2026/10/20 12:02:59 阅读更多 →
智能支持员的技术协助与问题解决:架构设计与落地实践

智能支持员的技术协助与问题解决:架构设计与落地实践

一个智能支持员如果只能“答上话”,却解决不了问题,那它在实际业务里基本就是个摆设。我见过太多团队上一套智能客服系统,上线时演示效果惊艳,真正跑起来之后用户问两句就转人工,后台堆满未闭合工单,最后整…

2026/10/20 12:02:59 阅读更多 →
C++快速排序全解析:分治思想、三种分区写法与工程级优化

C++快速排序全解析:分治思想、三种分区写法与工程级优化

先说一个我自己的体会。有一阵子我在处理一批模拟订单数据,几十万条结构体记录,需要按时间戳排序。头一回图省事,直接套了个最简单的选择排序,结果跑了快半分钟,整个后端接口直接超时。换成快排之后,同一批…

2026/10/20 12:02:59 阅读更多 →
彻底解决C盘空间不足:从清理临时文件到长效预防的完整攻略

彻底解决C盘空间不足:从清理临时文件到长效预防的完整攻略

C盘变红应该是Windows 10用户遇到最多的糟心事之一。明明是同一个系统,别人用了三年还干干净净,自己用半年就满得连输入法升级都要提示磁盘不足。我前些年帮人处理过不少这类问题,发现大多数人的第一反应是手动删文件——删完确实空了一点&am…

2026/10/20 12:02:59 阅读更多 →
AI应用开发实战:需求定义、模型选型与RAG调优指南

AI应用开发实战:需求定义、模型选型与RAG调优指南

AI 应用的开发方法,这个话题我聊了很多次,每次和人聊完都发现大家卡在最开始的地方——拿到了大模型的能力,却不知道怎么把它变成一个真正能上线的应用。市面上都在说“人人都是开发者”,可真正动手做的时候,选模型、搭…

2026/10/20 12:01:58 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/20 9:50:45 阅读更多 →