为什么 Claude Code 等 AI Agent 能自己写代码、改 bug、提交 PR?为什么它和 ChatGPT 完全不一样?这篇文章用最简单的语言,拆解 AI Agent 的底层工作原理。


一句话说清楚:AI Coding Agent 和普通 AI 有什么不同?

普通 AI(如 ChatGPT 对话)= 一问一答你输入 → 它输出 → 结束

AI Coding Agent(如 Claude Code)= 自主循环你给目标 → 它自己规划、执行、观察结果、调整、再执行……直到完成


直观对比:看看区别有多大

单次对话与自主循环

场景:给登录模块加邮件验证

🔴 普通 AI(ChatGPT)的工作方式

你:帮我写一个登录函数AI:(输出一段代码文本)你:复制粘贴到编辑器你:有个 bug,再帮我改AI:(输出修改后的文本)你:再复制粘贴……

👉 你是执行者,AI 只是建议者

🟢 AI Coding Agent(Claude Code)的工作方式

你:给登录模块加邮件验证Claude:  ✓ 读取现有代码  ✓ 理解架构  ✓ 制定计划  ✓ 写入文件  ✓ 运行测试  ✓ 发现错误 → 自己修复  ✓ 测试通过 → 提交 PR

👉 Claude 是执行者,你是审批者


能力对比表:差距在哪里?

能力维度

普通 AI 对话

AI Coding Agent

📖 读取文件

需要你粘贴给它

自己读取

✏️ 修改代码

输出文本,你手动改

直接写入文件

⚙️ 运行命令

告诉你要跑什么

自己执行

🐛 处理错误

你复制错误信息给它

看到输出,自己调整

🔄 多步任务

每步都要你介入

自主完成多步骤

⏱️ 持续工作

一轮结束就停

可以跑几小时

核心差异:Agent 有 感知 → 思考 → 行动 的循环能力,普通 AI 只有"思考 → 输出"。


Agent 的核心秘密:循环机制(The Agent Loop)

这是 Agent 能"自主工作"的关键。理解这个循环,就理解了 Claude Code 为什么这么强大。

🔄 完整循环的 6 个步骤

步骤 ① 接收目标 + 完整上下文

Claude 接收的不只是你的指令,还包括:

  • • 你的指令

  • • CLAUDE.md 项目规范

  • • 之前读取的所有文件内容

  • • 上一轮命令的输出

  • • 历史对话记录

这个"输入包"可能长达数万个 Token。

示例

你说:"给登录模块加邮件验证"Claude 实际接收到:- 你的指令- CLAUDE.md 中的项目规范- 之前读取的 auth/login.ts 文件内容- 上次运行测试的输出- ...

步骤 ② 思考 & 规划

Claude 分析整个上下文,决定下一步做什么。

内部推理过程

"需要先了解现有的 login 函数结构→ 应该先读取 auth/login.ts→ 然后再决定怎么修改"

在 Plan Mode 下,这个推理过程会展示给你审批;普通模式下 Claude 直接进入下一步。


步骤 ③ 生成工具调用请求

关键点:Claude 不是直接执行操作,而是生成一个"请求"。

Claude 生成的请求

{  "tool": "Read",  "input": { "path": "src/auth/login.ts" }}

这个请求会被发送给 Claude Code 进程。


步骤 ④ 宿主进程执行(权限检查在这里)

Claude Code 进程收到请求后的处理流程:

1. 触发 PreToolUse Hook(如果配置了)2. 检查 settings.json 权限规则   - deny:直接拒绝   - ask:询问用户   - allow:通过3. 执行真正的操作(读文件、写文件、运行命令等)4. 触发 PostToolUse Hook(如果配置了)5. 返回结果给 Claude

示例

权限检查:"Read(src/auth/login.ts)" → 匹配 allow 规则 → 执行执行结果:读取文件内容,返回给 Claude

步骤 ⑤ 观察结果,更新上下文

工具执行的结果(文件内容、命令输出、错误信息)被追加到上下文窗口。

Claude 在下一轮会看到这个结果,就像"眼睛看到了执行的效果"。

追加到上下文

[Tool result]:export async function login(email, password) {  // TODO: add validation  const user = await db.find(email)  ...}

步骤 ⑥ 决定:继续 or 结束?

Claude 判断:

  • • ✅ 任务完成了吗?

  • • 🤔 还需要什么信息?

  • • 📋 下一步该做什么?

如果任务未完成,回到步骤 ②,开始新一轮循环。

Claude 的判断

"已读取文件,看到了 TODO 注释→ 需要编写邮件验证逻辑→ 继续循环,下一步:Edit 文件"

💡 上下文是循环的"记忆"

  • • 每次循环的结果都被追加到上下文窗口

  • • Claude 在下一轮看到完整历史

  • • 这就是为什么 Claude 能"记得"几步之前做了什么

但这也是最大的局限

  • • 上下文窗口有限(如 200k Token)

  • • 太长的任务需要压缩(/compact)或拆分为子任务

  • • 上下文用完后,"记忆"就断了

这正是 CLAUDE.md、session logs 存在的原因——提供不依赖上下文的持久记忆。


工具系统:Agent 的"手"

语言模型本身只能生成文本。工具(Tools)让它能真正影响世界

没有工具,Claude Code 和普通对话 AI 没有区别。

🛠️ 核心工具清单

工具

功能

Read

读取文件

Write

写入文件

Edit

精确编辑(替换指定内容)

Bash

执行命令

Glob

查找文件(支持通配符)

Grep

搜索内容

WebFetch

获取网页

WebSearch

搜索引擎

TodoWrite

任务管理

MCP 工具

外部服务扩展


🔧 工具调用的技术实现

三个关键点

1️⃣ Claude 生成请求,不直接执行

  • • Claude 生成结构化的 JSON 请求

  • • 描述它想做什么

2️⃣ Claude Code 进程真正执行

  • • 接收请求

  • • 执行操作

  • • 返回结果

3️⃣ Claude 没有文件系统权限

  • • 通过"委托宿主执行"来影响世界

  • • 所有操作都经过权限检查


🧠 形象类比

Claude = 大脑(思考和决策)Claude Code 进程 = 手臂(实际执行)工具调用 = 神经信号(大脑告诉手臂做什么)工具结果 = 感觉反馈(手臂告诉大脑发生了什么)

📋 工具调用实战示例

看看一个完整的循环是什么样的:

// ① Claude 决定读取文件{ "tool": "Read", "input": { "path": "src/auth/login.ts" } }// ② Claude Code 执行,返回文件内容{ "result": "export function login(email, password) { ... }" }// ③ Claude 看到内容后,决定修改{ "tool": "Edit", "input": {    "path": "src/auth/login.ts",    "old_string": "// TODO: add validation",    "new_string": "if (!isValidEmail(email)) throw new Error('...')"}}// ④ Claude Code 执行编辑{ "result": "File updated successfully" }// ⑤ Claude 决定跑测试{ "tool": "Bash", "input": { "command": "npm test auth" }}

这个循环每秒可能发生数次,构成了 Claude Code "自主工作"的底层机制。


Claude Code 的五层架构

理解这五层,就理解了整个系统是如何协作的。


🎯 第 1 层:你(用户)

角色:目标提供者 & 最终审批人

你不是执行者,是决策者。提供目标、审批计划、处理边界情况。

接口:终端 / VS Code / 浏览器 / 手机(Remote Control)/ 语音(/voice)


⚙️ 第 2 层:Claude Code 进程(编排层)

角色:在 Claude 和真实环境之间做"翻译"和"守门"

核心职责

  • • 管理 Agent 循环

  • • 权限检查

  • • Hooks 触发

  • • 会话状态管理

  • • 上下文压缩

配置文件settings.json 控制这一层的行为边界


🧠 第 3 层:Claude 模型(大脑层)

角色:理解意图、规划步骤、生成工具调用

输入

  • • System Prompt

  • • CLAUDE.md 内容

  • • 对话历史

  • • 工具结果

输出:下一步行动(工具调用请求)

配置文件CLAUDE.md 注入到这一层的 System Prompt


🔨 第 4 层:工具层(执行层)

角色:把 Claude 的"想法"转化为真实世界的操作

工具集:Read / Write / Edit / Bash / WebFetch / MCP……

扩展性:MCP 服务器让工具无限延伸(数据库、Slack、浏览器……)


🌍 第 5 层:真实环境(被操作的世界)

包含

  • • 文件系统

  • • Git 仓库

  • • 终端进程

  • • 外部 API

  • • 浏览器

  • • 数据库

这是 Agent 最终影响的对象。


📊 数据流向:一次完整任务的旅程

从你的指令到代码落地,数据是这样流动的:

一次完整任务的数据流向图

你的指令  ↓Claude Code 进程接收  ↓读取 settings.json 权限配置  ↓注入 CLAUDE.md 内容到 System Prompt  ↓发送给 Claude 模型(含完整上下文)  ↓Claude 生成工具调用请求  ↓Claude Code 检查权限(deny/ask/allow)  ↓触发 PreToolUse Hook(如有)  ↓执行工具(读写文件、跑命令)  ↓触发 PostToolUse Hook(如有)  ↓工具结果追加到上下文  ↓返回给 Claude 模型(下一轮循环)  ↓Claude 决定:继续执行 or 任务完成  ↓你看到最终结果

🤔 为什么这样设计?

Q1: 为什么是"循环"而不是"一次性生成"?

① 现实任务有不确定性

  • • 你不可能在开始时就知道所有需要的信息

  • • 读了文件才知道架构

  • • 跑了测试才知道有没有 bug

  • • 循环允许 Claude 边做边学

② 错误是不可避免的

  • • 一次性生成的代码必然有错

  • • 循环让 Claude 能:看到错误 → 理解原因 → 自我修正

  • • 无需你介入

③ Token 限制

  • • 一次性生成整个功能会超出输出 Token 限制

  • • 循环允许分步处理,每次只生成一小部分

④ 人类介入点

  • • 循环在每个工具调用前暂停(ask 模式)

  • • 给你审批或纠正的机会

  • • 而不是等到最后才发现整个方向错了


Q2: 为什么工具调用要经过"宿主进程"?

① 安全隔离

  • • Claude 模型运行在 Anthropic 的服务器上

  • • 不能直接访问你的文件系统

  • • 通过宿主进程,可以实施权限检查(settings.json)

② 可审计性

  • • 所有工具调用经过宿主进程

  • • 可以记录日志

  • • 可以触发 Hooks

  • • 可以通知用户

③ 可扩展性

  • • 新工具(MCP 服务器)只需向宿主进程注册

  • • Claude 模型无需更新就能使用新能力


⚠️ Agent 的核心局限 & 应对策略

每个配置工具都在针对 Agent 的某个固有局限提供解决方案。

局限

根本原因

应对策略

🧠 会"忘记"早期指令

上下文窗口稀释效应

CLAUDE.md

 持久注入 + /compact 压缩

🎯 方向跑偏

没有规划就执行

Plan Mode 先规划后执行

🔁 重复犯同类错误

没有跨会话记忆

lessons.md

 记录 + CLAUDE.md 累积规则

⚡ 危险操作无法撤销

工具有副作用

settings.json

 deny 规则 + Hooks 拦截

🔀 并发任务互相干扰

共享文件系统

git worktree

 给每个 Agent 独立工作区

这就是 Claude Code 整个配置体系存在的原因。


💡 总结

AI Coding Agent 不是更强的 ChatGPT,而是一种全新的工作模式

核心区别

普通 AI

你问 → 它答 → 你执行

AI Coding Agent

你定目标 → 它自己规划、执行、修正、完成

三大核心机制

这种转变的核心是:

  1. 🔄 循环机制

     - 感知 → 思考 → 行动 → 感知 → ……

  2. 🛠️ 工具系统

     - 让 AI 能真正影响世界

  3. 📝 上下文管理

     - 让 AI 能"记住"之前做了什么

最后一句话

当你看到 Claude Code 在终端里不断输出、读文件、改代码、跑测试……

那不是魔法,而是一个精心设计的循环系统在运转:

感知(工具结果)→ 思考(Claude 推理)→ 行动(工具调用)→ 感知(新的结果)→ ……

这就是 AI Coding Agent 的本质。


理解了这些,你就理解了为什么 Claude Code 能"自主工作"。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐