【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(1)The Agent Loop (智能体循环)

简介: 本专栏精讲AI智能体核心——Agent Loop循环机制,基于开源项目learn-claude-code,用不到50行Python代码实现ReAct范式(思考→行动→观察)。含逐行中文注释、踩坑记录与Bash工具实战,助新手快速入门AI Agent开发。(239字)

第一章 The Agent Loop (智能体循环)

[ s01 ] s02 > s03 > s04 > s05 > s06 | s07 > s08 > s09 > s10 > s11 > s12

“本专栏基于开源项目 learn-claude-code 的官方文档。原文档非常硬核,为了方便像我一样的新手小白理解,我对文档进行了逐行精读,并加入了很多中文注释、大白话解释和踩坑记录。希望这套‘咀嚼版’教程能帮你推开 AI Agent 开发的大门。”

项目地址:shareAI-lab/learn-claude-code: Bash is all you need - A nano Claude Code–like agent, built from 0 to 1

"One loop & Bash is all you need" -- 一个工具 + 一个循环 = 一个智能体。

一、问题

语言模型能推理代码, 但碰不到真实世界 -- 不能读文件、跑测试、看报错。没有循环, 每次工具调用你都得手动把结果粘回去。你自己就是那个循环。

二、解决方案

+--------+      +-------+      +---------+
|  User  | ---> |  LLM  | ---> |  Tool   |
| prompt |      |       |      | execute |
+--------+      +---+---+      +----+----+
                    ^                |
                    |   tool_result  |
                    +----------------+
                    (loop until stop_reason != "tool_use")

一个退出条件控制整个流程。循环持续运行, 直到模型不再调用工具。s01_agent_loop.py 所做的事情,就是用不到 50 行代码,把你自己这一部分给自动化了。

这就是经典的 ReAct (Reasoning and Acting) 范式:让 AI 边思考边行动的交互模式,让大语言模型能够像人类一样推理→行动→观察→再推理,逐步解决复杂问题。

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Thought   │ ──→ │    Action   │ ──→ │ Observation │ ──→ │   Thought   │
│   (思考)     │     │    (行动)    │    │   (观察)     │     │  (再思考)    │
└─────────────┘     └─────────────┘     └─────────────┘     └──────┬──────┘
                              任务完成 ←────────────────────────────┘
                              给出答案

三、工作原理

  1. 用户 prompt 作为第一条消息。
messages.append({"role": "user", "content": query})
  1. 将消息和工具定义一起发给 LLM。我们定义的TOOLS的列表,这就像是一本“工具使用手册”,你把它作为输入的一部分喂给了大模型。
response = client.messages.create(
    model=MODEL, system=SYSTEM, messages=messages,
    tools=TOOLS, max_tokens=8000,
)
  1. 追加助手响应。检查 stop_reason -- 如果模型没有调用工具, 结束。
messages.append({"role": "assistant", "content": response.content})
if response.stop_reason != "tool_use":
    return
  1. 执行每个工具调用, 收集结果, 作为 user 消息追加。回到第 2 步。
results = []
for block in response.content:
    if block.type == "tool_use":
        output = run_bash(block.input["command"])
        results.append({
            "type": "tool_result",
            "tool_use_id": block.id,
            "content": output,
        })
messages.append({"role": "user", "content": results})
  1. 组装为一个完整函数:
def agent_loop(query):
    messages = [{"role": "user", "content": query}]
    while True: # 循环开始,理论上可以无限跑
      # ... 这里是 LLM 思考的过程 ...
        response = client.messages.create(
            model=MODEL, system=SYSTEM, messages=messages,
            tools=TOOLS, max_tokens=8000,
        )
        messages.append({"role": "assistant", "content": response.content})
    
    # ... 这里就是那个“唯一的退出条件” ... 
        if response.stop_reason != "tool_use":
            return
        results = []
        for block in response.content:
            if block.type == "tool_use":
                output = run_bash(block.input["command"])
                results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": output,
                })
        messages.append({"role": "user", "content": results})

不到 30 行, 这就是整个智能体。后面 11 个章节都在这个循环上叠加机制 -- 循环本身始终不变。

四、变更内容

组件 之前 之后
Agent loop (无) while True + stop_reason
Tools (无) bash (单一工具)
Messages (无) 累积式消息列表
Control flow (无) stop_reason != "tool_use"

五、试一试

想要跑通之前记得不要忘记了添加.env文件哦。

cd learn-claude-code
python agents/s01_agent_loop.py

试试这些 prompt (英文 prompt 对 LLM 效果更好, 也可以用中文):

  1. Create a file called hello.py that prints "Hello, World!"
  2. List all Python files in this directory
  3. What is the current git branch?
  4. Create a directory called test_output and write 3 files in it

六、其他

block长什么样?

将block打印出来,也就是response.content,它是ToolUseBlock 对象

ToolUseBlock( 
  id='bash_0', # 工具调用唯一标识符 
  caller=None, # 调用者信息(教学版中为None) 
  input={'command': 'echo \'print("Hello, World!")\' > hello2.py'}, # ← 核心参数 
  name='bash', # 工具名称 
  type='tool_use' # 块类型 
  )
相关文章
|
8天前
|
JSON 人工智能 Shell
用 4B 小模型做Code Agent的SubAgent?这个开源项目做到了
LocoOperator-4B 是 LocoreMind 推出的 4B 开源蒸馏模型,专为代码库探索优化:本地运行、零 API 成本,结构化工具调用(Read/Grep/Glob/Bash 等)准确率达 100%。它替代 Code Agent 中的子智能体,显著降本增效。(239 字)
249 18
|
5天前
|
数据采集 人工智能 数据可视化
《基于 DeepSeek 百万token上下文的实证研究:全窗口真实工程压力测试与统计分析》
本项目基于 DeepSeek 于 2026 年 2 月推出的 “新长文本模型”(上下文窗口扩展至1,000,000 tokens,API 端仍保持 V3.2 版本),通过构建非AI/IT领域的完整项目流程,进行了全程、全负载实证工程测试。在单一连续上下文中实现了端到端的闭环。
|
7天前
|
人工智能 运维 Prometheus
2026年阿里云及本地安装OpenClaw步骤:+定制24小时在线专属 AIOps 助手实战教程
2026年,OpenClaw(原Clawdbot、Moltbot)的核心竞争力已从“通用自动化”升级为“垂直领域深度定制”。它不再是简单的AI助手,而是可通过对话交互自主进化的“领域专家”——无需编写代码或复杂规则,仅通过一问一答,就能将其定制为专注K8s微服务的AIOps助手,实现故障RCA、排障剧本固化、复盘沉淀等专业能力。
262 3
|
小程序 前端开发 算法
小程序实现个人支付功能
1.小程序的支付功能一直有人咨询 2.以前一直以为个人开发者是不可以使用支付功能的 3.但是微信自己有个骚操作 ,所以个人也可以使用小程序功能 4.下面介绍
2095 0
小程序实现个人支付功能
|
1月前
|
设计模式 人工智能 安全
Agent职业路线破局点:从“实现力”到“设计力”,构筑抵御“浮光行为”的核心技能护城河
本文直击AI开发者核心焦虑:当“实现力”因低代码与大模型普及而快速贬值,“浮光智能体”泛滥,职业价值面临通货紧缩。作者提出破局关键——从工具使用者升维为价值定义者,系统阐述“深度设计力”三维模型:目标解构与价值对齐、异常与边界预见、演进与反馈架构,并融合系统思维、反事实推理与安全工程学等跨界工具,助你打造稳健、可进化、有伦理边界的智能体,构筑不可替代的职业护城河。(239字)
55 1
|
2天前
|
人工智能 前端开发 Serverless
vLLM + SGLang + Ollama 自动适配!阿里云 Qwen3 部署智能选引擎
阿里云Qwen3正式开源8款混合推理模型(含2款MoE、6款Dense),支持119种语言,适配vLLM/SGLang/Ollama。依托函数计算FC与FunctionAI平台,提供模型服务与应用模板两种Serverless部署方式,最低GPU配置即可快速体验。
186 20
|
4天前
|
人工智能 数据可视化 物联网
智链未来:B2B企业如何通过“两大核心+四轮驱动”重塑GEO增长引擎
对于决策链路长、专业门槛高的B2B企业而言,如何在Geo中占据核心推荐位,已成为品牌数字化资产增值的关键。
60 17
|
4天前
|
存储 自然语言处理 数据可视化
大模型应用:语料库治理实战:基于 text2vec+BERT 的由浅入深解析.41
本文介绍中小企业及个人开发者如何高效治理小语料库,提出“以质取胜”理念。基于本地部署的text2vec-base-chinese(语义去重)与bert-base-chinese(质量评分)双模型协同方案,覆盖清洗、去重、质检、细筛等六步流程,显著提升模型效果,兼顾安全性与低成本。(239字)
101 15
|
4天前
|
存储 人工智能 搜索推荐
OpenClaw阿里云/本地部署保姆级指南:+21个问题让AI从执行者变专属搭档
大多数人使用OpenClaw的方式,局限于“布置任务→等待结果”的被动循环,让这个强大的AI工具沦为“高级打杂工”。但实际上,每次交互中,OpenClaw都在默默积累关于你的工作节奏、决策偏好、高频痛点等隐性信息——只要善用方法,就能让它从“等指令的执行者”升级为“懂你、主动替你思考”的专属搭档。
121 14
|
8天前
|
机器学习/深度学习 自然语言处理 并行计算
大模型应用:混合专家模型(MoE):大模型性能提升的关键技术拆解.37
MoE(混合专家模型)是一种高效大模型架构,通过“智能调度+稀疏激活”机制,让多个专业化子网络(专家)按需协作。它兼顾性能与效率:参数规模大但推理仅激活2-4个专家,显著降本提速;既保持通用能力,又在医疗、法律等细分领域更专精,是当前大模型落地的关键技术。
228 17