<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Loop on 老张开工了</title>
    <link>/loop/</link>
    <description>Recent content in Loop on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 19 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/loop/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Loop 机制：自循环任务执行</title>
      <link>/posts/2026/06/agent-loop/</link>
      <pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/06/agent-loop/</guid>
      <description>上一章的 ReAct 是个心智模型，代码不长。本章把 ReAct 真正做成&amp;quot;长跑循环&amp;quot;——加入预算、反思、终止、错误恢复，让它能扛 30 分钟级别任务而不会&amp;quot;撒手就跑飞&amp;quot;。&#xA;10.1 最小 Loop 的三处不完美 把上一章那 30 行 loop 真正跑长跑，它会失败在哪？&#xA;现象 根因 需要加什么 token 烧到天亮 没有预算 max_tool_calls / max_tokens 模型反复试同一个错 没有&amp;quot;反思&amp;quot; 失败后回看 trace，让模型给假设 任务没完就被模型自己说终了 缺乏 &amp;ldquo;DONE validation&amp;rdquo; 终止前问&amp;quot;DONE&amp;quot;三问 一遇工具 exception 就直接 crash 没有异常通道 tool errors 当 message 喂回 Agent 跟上下文对话头尾都说不止 缺乏沉淀 在循环里维护 state.json 10.2 一个稍微长一点的最小 Agent Loop from dataclasses import dataclass, field @dataclass class AgentState: history: list = field(default_factory=list) tool_calls: int = 0 max_tool_calls: int = 20 failures: list = field(default_factory=list) def step(state: AgentState, user_msg: str) -&amp;gt; tuple[str, AgentState]: if state.</description>
    </item>
  </channel>
</rss>
