乐于分享
好东西不私藏

Claude Code 1729 行源码,核心就这 30 行

Claude Code 1729 行源码,核心就这 30 行

⚡ 一句话说明:这篇文章教你用30行Python代码理解AI Agent的本质,看完你就知道为什么Claude Code、Cursor这些工具能自动写代码了。

01一个反常识:Agent没有你想的那么复杂

很多人以为AI Agent很复杂,需要LangChain、需要ReAct、需要复杂的Prompt工程。

但真相是——一个 while True 循环,就够了。

Claude Code的源码有1729行,但我扒完之后发现,它的核心就这30行。所有复杂的字段、退出路径、保护机制,都是在这30行上叠加的。

先理解核心循环,后面的一切自然展开。

02问题背景

你有没有遇到过这种情况:

让AI"帮我读取目录下有哪些文件,然后执行XXX.py",它只会给你输出一条bash命令,然后就停了

它不会自己跑,也不会看到结果后继续推理。

你得手动跑一遍,把输出粘贴回对话框,让它接着干。下一个命令出来,你再跑一遍、再贴回去。

💡 每一个来回,你都在做中间层。而把这个过程自动化,就是Agent Loop要解决的事。

03核心发现:Agent的本质

通过研究Claude Code的源码,我发现了一个惊人的事实:

Agent = 大脑 + 工具 + 循环

组件
对应
作用
大脑
Kimi / Claude 模型
理解目标,决定是否调用工具
工具
bash / 文件操作 / API
与真实世界交互
循环
while True
让模型能持续行动,直到任务完成
环境
你的电脑文件系统
Agent操作的对象

关键洞察

模型本身不会执行代码,但它可以决定什么时候执行、执行什么。

真正执行的是Harness(运行时系统),它负责:

· 把用户目标发给模型

· 解析模型的工具调用请求

· 执行工具并返回结果

· 循环往复,直到模型说"我做完了"

0430行代码实战:逐行拆解

这是我从Claude Code源码中提炼的最小可运行版本:

def agent_loop(messages):while True: # ← 第1行:无限循环,Agent能一直干下去response = client.messages.create(model=MODEL, # ← 第2-4行:调用大模型system=SYSTEM, messages=messages,tools=TOOLS, # ← 第5行:告诉模型有哪些工具可用max_tokens=8000,)messages.append({ # ← 第6行:把模型的回复存起来"role": "assistant", "content": response.content})# 第7-8行:检查模型要不要调用工具if response.stop_reason != "tool_use":return # ← 不要工具 = 任务完成,退出循环# 第9-18行:执行工具调用results = []for block in response.content:if block.type == "tool_use":print(f"$ {block.input['command']}") # 打印执行的命令output = run_bash(block.input["command"]) # 真正执行results.append({"type": "tool_result","tool_use_id": block.id,"content": output,})# 第19-22行:把工具结果喂给模型,继续下一轮messages.append({"role": "user", "content": results})

就这些。22行。这就是Claude Code 1729行源码的核心。

💡 动手试试:你可以把这段代码复制到你的编辑器里跑一遍,输入"Create a file called test.txt",看看模型会怎么回应。

我实际跑了什么Prompt?

Prompt 1Create a file called hello.py that prints "Hello, World!"

Agent执行了:

echo 'print("Hello, World!")' > hello.pycat hello.py

Prompt 2List all Python files in this directory

Agent执行了:

find . -maxdepth 1 -name "*.py" -type fls -la *.py

Prompt 3What is the current git branch?

Agent执行了:

git branch --show-current

🔍 观察重点:

· 模型什么时候调用工具(循环继续)

· 模型什么时候不调用(循环结束)

· 它不是只回答"我会创建文件",而是真的调用工具创建了文件

05原理图解

这张图说明了什么?

1. code.py不是模型,而是Harness —— 它把模型、工具和本地环境连接起来

2. 模型只负责"判断下一步" —— 要不要调工具、调哪个工具

3. Harness负责"执行和循环" —— 调了就跑、结果喂回去

4. 循环的终止条件 —— 模型不再调用工具时,任务完成

一句话总结:code.py不是智能本身,而是让模型能持续行动的最小运行框架。

06迁移思考:如何应用到你的业务

判断一个系统是不是AI Agent,关键看有没有"思考规划"这一步

类型
特征
例子
传统问答
一问一答,无状态
搜索引擎、FAQ
AI Agent
理解目标 → 规划步骤 → 调用工具 → 观察结果 → 调整策略
Claude Code、AutoGPT

例如迁移到智能问数/智能问答场景:

智能问数场景:

用户问:"这个月销售额比上个月增长了多少?"

Agent思考:需要查销售表 → 需要过滤时间范围 → 需要计算环比

调用SQL工具查询数据

拿到结果 → 计算增长率 → 生成回答

智能问答场景:

用户问:"这份合同的风险点有哪些?"

Agent思考:需要读取合同文件 → 需要理解条款 → 需要对比法律库

调用文档解析工具 → 调用知识库检索

综合分析 → 输出风险点清单

核心设计原则:

1. 工具原子化 —— 每个工具只做一件事,Agent自己组合

2. 循环透明化 —— 让用户看到Agent的思考过程

3. 结果可验证 —— 每个工具调用都有明确输入输出

写在最后

Claude Code的源码有1729行,但它的核心就是这22行 while True

所有复杂的字段、退出路径、保护机制,都是在这个核心上叠加的。

先理解核心循环,后面的一切自然展开。

如果你也想搭建自己的Agent系统,建议从这一步开始:

一个工具 + 一个循环 = 一个Agent

📎 附:完整源码地址

https://github.com/anthropics/claude-code

(注:本文基于Claude Code教学版s01_agent_loop的学习笔记整理)

觉得有用?点个赞👍 收藏起来慢慢看

有问题评论区见,看到都会回

🔥 但这只是开始

当Agent有了5个工具、10个工具,甚至能自己写代码调用自己时,会发生什么?

下一篇预告:

《给Agent 5个真正的工具,会发生什么?——Tool Use深度解析》

敬请期待