乐于分享
好东西不私藏

Claude Code 源码拆解(一):为什么说"模型即Agent"?

Claude Code 源码拆解(一):为什么说"模型即Agent"?

这是「Claude Code 源码拆解」系列的第一篇。在这个系列中,我们将从零开始理解AI Agent的本质——不是通过框架,不是通过工作流,而是通过一个简单的事实:模型本身就是Agent


阅读前你需要知道

这个系列假设你具备以下基础知识:

前置知识
说明
如果不了解
Python基础
能读懂函数、类、循环
建议先学习Python入门
LLM API调用
知道怎么调用Claude/OpenAI的API
可以先看Anthropic官方文档
Tool Use概念
知道LLM可以”调用工具”
第2篇会详细解释
基础的Git操作
知道commit、branch是什么
第7篇涉及的worktree需要Git知识

如果你的基础不够扎实:建议先跑一遍第2篇的代码(60行),亲手体验一下Agent是怎么工作的,再回来读第1篇。


一、一个令人困惑的现象

你有没有发现,市面上的”Agent框架”越来越多了?

LangChain、AutoGPT、CrewAI、Dify、FastGPT……每个都声称能帮你”构建AI Agent”。它们提供了节点编辑器、工作流编排、提示链管理、记忆系统、工具调用封装……

但当你真正用它们去解决一个复杂问题时,往往发现:

  • 工作流一复杂就失控
  • 提示链一长就脆弱
  • Agent的行为难以预测
  • 调试起来痛苦万分

问题出在哪?

出在对”Agent”这个概念的误解。


二、Agent不是框架造出来的

让我们回到AI领域对”Agent”的经典定义:

Agent是一个能够感知环境、做出决策、采取行动以达成目标的系统。

注意,这里说的是”系统”,不是”框架”。

2.1 历史上的Agent都是模型

看看AI历史上真正的Agent里程碑:

年份
Agent
本质
2013
DeepMind DQN
一个神经网络,学会了打7款Atari游戏
2019
OpenAI Five
五个神经网络,击败Dota 2世界冠军
2019
AlphaStar
一个神经网络,达到星际2 Grandmaster水平
2019
腾讯绝悟
一个神经网络,碾压王者荣耀职业选手
2024
Claude/GPT
大语言模型,能够阅读代码、写实现、调试错误

它们的共同点是什么?

Agent本身就是一个训练好的模型。 不是if-else规则堆出来的,不是工作流节点连出来的,是模型通过训练学会了如何行动

2.2 框架不能创造智能

那些号称”低代码构建Agent”的平台,本质上在做什么?

它们在用程序员的逻辑硬编码智能行为

如果用户问A,走这条路径如果用户问B,走那条路径如果需要搜索,调用这个工具如果需要写代码,调用那个工具……

这不是Agent。这是披着AI外衣的传统软件

真正的Agent应该是:

模型看到上下文 → 模型自己决定做什么 → 执行 → 循环

决策权在模型手里,不在你的代码里。


三、Claude Code告诉我们的真相

Claude Code是Anthropic官方推出的编程Agent。它是目前我们能看到的、设计最优雅的Agent实现之一。

当你剥开它的外壳,核心架构惊人地简单:

Claude Code = 一个循环           + 工具集(bash, read, write, edit, glob, grep...)           + 按需加载的知识(Skills)           + 上下文压缩           + 子Agent隔离           + 任务系统           + 团队协作           + 权限边界

就这么简单。

没有复杂的工作流引擎,没有节点图编排,没有提示链瀑布。只有一个循环,和一堆让这个循环更有效的”配套机制”。

3.1 核心循环只有80行

Claude Code的核心循环,用Python写出来,大概是这样:

defagent_loop(messages):whileTrue:        response = client.messages.create(            model=MODEL,            messages=messages,            tools=TOOLS,        )        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 = execute_tool(block.name, block.input)                results.append({"type""tool_result","tool_use_id": block.id,"content": output,                })        messages.append({"role""user""content": results})

这就是全部。

  • 模型调用工具 → 你执行工具 → 把结果喂回去 → 继续循环
  • 模型说”我不需要工具了” → 结束

模型决定一切。你的代码只是执行者。


四、所以,你的工作是什么?

如果模型才是Agent,那我们这些写代码的人在干什么?

答案是:我们在造” Harness”(工具化环境)

Harness = 工具 + 知识 + 观察 + 行动接口 + 权限边界    工具:    文件读写、Shell执行、网络请求、数据库操作    知识:    产品文档、API规范、代码风格指南    观察:    Git diff、错误日志、浏览器状态    行动:    CLI命令、API调用、UI交互    权限:    沙箱隔离、审批流程、信任边界

模型是司机,Harness是车。

  • 一个编程Agent的Harness = IDE + 终端 + 文件系统
  • 一个农场Agent的Harness = 传感器 + 灌溉控制 + 天气数据
  • 一个酒店Agent的Harness = 预订系统 + 客户沟通 + 设施管理API

Agent的智能来自模型,Agent的能力来自Harness。


五、这个系列要学什么

在这个系列中,我们将逐层拆解Claude Code的Harness机制:

篇章
主题
要解决的问题
1
核心理念
为什么”模型即Agent”?
2
Agent循环
80行代码实现最小Agent
3
计划与子任务
让Agent有条理地工作
4
知识与记忆
让Agent”学会”且”记住”
5
持久化与异步
让Agent长期运行不卡住
6
多Agent协作
从单兵作战到团队配合
7
生产级隔离
完整架构与实战路径

每一篇都是一个机制 + 一段代码 + 一个核心原则

我们不学框架,我们学如何给模型造一辆好车


六、一个思维转换

读完这个系列,你会经历一个认知转变:

:”我怎么用代码实现这个工作流?”:”我给模型什么工具,让它自己决定怎么做?”

:”我要控制Agent的每一步”:”我要信任模型,同时给它边界”

:”框架越强大越好”:”循环越简单越好,Harness越扎实越好”


写在最后

Claude Code不是完美的,但它是我们能看到的、设计哲学最正确的Agent实现之一。

它告诉我们一个简单的道理:

最好的Agent代码,往往是无聊的代码。简单的循环,清晰的工具,干净的上下文。复杂度在模型里,不在你的代码里。

下一期,我们将亲手写出那个80行的Agent循环。

模型是Agent。代码是Harness。造好Harness,Agent自会飞翔。


本系列基于 learn-claude-code 开源项目


🔔 关注获取更新

这个系列会持续更新,下一期我们将亲手写出那个80行的Agent循环

如果你想知道:

  • Agent的”手”(工具)是怎么接上去的?
  • 为什么一个while循环就够了?
  • 模型怎么知道什么时候该停?

关注公众号,第一时间获取更新。