从对话到执行:一文读懂AI Coding Agent的底层原理
为什么 Claude Code 等 AI Agent 能自己写代码、改 bug、提交 PR为什么它和 ChatGPT 完全不一样这篇文章用最简单的语言拆解 AI Agent 的底层工作原理。一句话说清楚AI Coding Agent 和普通 AI 有什么不同普通 AI如 ChatGPT 对话一问一答你输入 → 它输出 → 结束AI Coding Agent如 Claude Code自主循环你给目标 → 它自己规划、执行、观察结果、调整、再执行……直到完成直观对比看看区别有多大场景给登录模块加邮件验证 普通 AIChatGPT的工作方式你帮我写一个登录函数AI输出一段代码文本你复制粘贴到编辑器你有个 bug再帮我改AI输出修改后的文本你再复制粘贴……你是执行者AI 只是建议者 AI Coding AgentClaude Code的工作方式你给登录模块加邮件验证Claude ✓ 读取现有代码 ✓ 理解架构 ✓ 制定计划 ✓ 写入文件 ✓ 运行测试 ✓ 发现错误 → 自己修复 ✓ 测试通过 → 提交 PRClaude 是执行者你是审批者能力对比表差距在哪里能力维度普通 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(#x27;...#x27;)}}// ④ 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.jsondeny 规则 Hooks 拦截 并发任务互相干扰共享文件系统git worktree给每个 Agent 独立工作区这就是 Claude Code 整个配置体系存在的原因。 总结AI Coding Agent 不是更强的 ChatGPT而是一种全新的工作模式。核心区别普通 AI你问 → 它答 → 你执行AI Coding Agent你定目标 → 它自己规划、执行、修正、完成三大核心机制这种转变的核心是 循环机制- 感知 → 思考 → 行动 → 感知 → ……️ 工具系统- 让 AI 能真正影响世界 上下文管理- 让 AI 能记住之前做了什么最后一句话当你看到 Claude Code 在终端里不断输出、读文件、改代码、跑测试……那不是魔法而是一个精心设计的循环系统在运转感知工具结果→ 思考Claude 推理→ 行动工具调用→ 感知新的结果→ ……这就是 AI Coding Agent 的本质。理解了这些你就理解了为什么 Claude Code 能自主工作。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2467162.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!