核心架构:Agentic Loop
Claude Code 的核心是一个 Agentic Loop(代理循环),由三个阶段组成:
你的指令 → [收集上下文] → [执行动作] → [验证结果] → 循环直到完成
↑ |
└────── 你可以随时打断和调整 ─────────┘
这三个阶段不是严格分开的,而是流畅地交织在一起。一个简单的问题可能只需要收集上下文,一个 bug 修复会反复循环所有三个阶段。关键在于:每一步的结果决定下一步做什么——这就是 “agentic” 的含义。
两个核心组件
- 模型(Model):负责推理——理解代码、规划步骤、做出决策
- 工具(Tools):负责行动——没有工具,模型只能输出文字
Claude Code 本身是 Agentic Harness(代理框架)——它为模型提供工具、上下文管理和执行环境,把语言模型变成一个有能力的编程代理。
工具体系:五大类别
| 类别 | 能力 |
|---|---|
| 文件操作 | 读取、编辑、创建、重命名文件 |
| 搜索 | 按模式找文件、用正则搜索内容、探索代码库 |
| 执行 | 运行 shell 命令、启动服务器、跑测试、用 git |
| Web | 搜索网页、获取文档、查询错误信息 |
| 代码智能 | 类型检查、跳转定义、查找引用(需插件) |
模型根据你的指令和中间结果自主选择使用哪些工具。当你说”修复测试失败”时,Claude 可能会:运行测试 → 读错误输出 → 搜索相关源文件 → 读取文件理解代码 → 编辑修复 → 再次运行测试验证。
上下文窗口:最关键的资源
Claude 的上下文窗口容纳了:对话历史、文件内容、命令输出、CLAUDE.md、自动记忆、加载的 Skill、系统指令。
上下文满了怎么办?
- Claude 自动压缩(compaction):先清除旧的工具输出,再摘要对话
- 你的请求和关键代码片段会被保留,但早期的详细指令可能丢失
- 持久性规则应该写在 CLAUDE.md 里,而不是靠对话历史
管理策略:
- Skill 按需加载,不是每次都占用上下文
- SubAgent 有独立的上下文,不会膨胀你的主对话
/context查看空间使用情况/compact手动触发压缩
Session(会话)管理
- 每个新会话从空白上下文开始(不继承之前的对话历史)
- 跨会话知识传递靠:CLAUDE.md(你写的)和 Auto Memory(Claude 写的)
claude --continue恢复最近的会话claude --resume选择历史会话--fork-session分叉会话(保留历史但不影响原会话)
安全机制
- Checkpoint(检查点):每次文件编辑前自动快照,
Esc+Esc可回滚 - Permission(权限):
Shift+Tab切换权限模式- Default:编辑和命令都要确认
- Auto-accept edits:自动接受编辑,命令仍需确认
- Plan mode:只读模式,只做分析不做修改
- Auto mode:后台安全分类器自动评估(研究预览)
与人协作的核心原则
- 对话式交互:不需要完美的 prompt,可以像和同事说话一样逐步调整
- 随时打断:Claude 在执行中可以被打断并调整方向
- 委托而非指令:给出目标和上下文,让 Claude 自己决定具体步骤
- 提供验证手段:测试用例、截图、预期输出——让 Claude 能自检
知识检测
概念理解题
-
Agentic Loop 的三个阶段是什么?它和传统的”输入→处理→输出”有什么本质区别?
-
Claude Code 文档中提到它是一个 “Agentic Harness”。Harness(框架)和 Agent(代理)本身有什么区别?为什么这个区分很重要?
-
为什么上下文窗口被称为”最关键的资源”?如果不管理上下文会发生什么?
应用题
-
假设你要修复一个跨三个文件的 bug,但你的上下文窗口已经用了 70%。你会怎么安排工作流?
-
Claude Code 的权限模式中,“Plan Mode” 和 “Auto Mode” 分别适用于什么场景?
迁移思考题
-
如果你要从零设计一个 AI Agent,Agentic Loop 的哪些部分是必须的?哪些是 Claude Code 特有的?
-
OpenClaw 也有类似的 Agent 循环。它的 “isolated session” 和 Claude Code 的 “SubAgent” 在架构上有什么异同?
参考答案
1. Agentic Loop 的三个阶段
收集上下文(Gather Context)→ 执行动作(Take Action)→ 验证结果(Verify Results)。与传统”输入→处理→输出”的本质区别在于反馈循环:传统模式是单程的(一次输入一次输出),Agentic Loop 是迭代的——每一步的结果决定下一步做什么,模型自主决定何时停止。这意味着 Agent 可以自我纠错、自我调整策略,而传统流水线不行。
2. Agentic Harness vs Agent
Harness 是框架/脚手架——它提供工具、上下文管理、执行环境、权限控制等基础设施。Agent 是在 Harness 之上运行的推理实体(即 LLM)。区分很重要,因为同一个 Harness 可以承载不同的 Agent(比如切换模型),而同一个 Agent 在不同 Harness 上行为也不同(Claude 在 Claude Code 里能读写文件,在 Web 聊天里不能)。这也意味着你在定制 Claude Code 时,大部分定制发生在 Harness 层(Skill、Hook、MCP),而非 Agent 本身。
3. 为什么上下文窗口是最关键的资源
上下文窗口是 Agent 的”工作记忆”——所有信息(对话历史、文件内容、命令输出、系统指令)都必须塞进这个有限的空间。不管理的后果:(1) 早期指令被”遗忘”(压缩时丢失)(2) 模型性能下降(Context Rot)(3) 费用增加(token 越多越贵)(4) 响应变慢。本质上,上下文窗口的限制是 AI Agent 所有设计决策的根源约束。
4. 上下文 70% 时修复跨三文件的 bug
策略:(1) /compact 手动压缩,指定焦点为当前 bug 相关的三个文件 (2) 用 SubAgent 做文件阅读——让 SubAgent 读取三个文件的相关代码段,返回摘要(SubAgent 有独立上下文,不占主会话空间)(3) 在主会话中只保留修复所需的最小上下文,直接编辑 (4) 如果压缩后仍不够,/clear 开新会话,把 bug 描述和三个文件路径作为初始 prompt。
5. Plan Mode vs Auto Mode
Plan Mode:适合探索和规划——不确定该怎么改、需要先理解代码、想在实施前审阅计划。Claude 只做只读操作,不会修改文件。适合大型重构前的调研、复杂架构决策、代码审查。
Auto Mode:适合确定性高且信任 Claude 的场景——小的修复、格式化、明确的实现任务。后台安全分类器自动评估操作风险,低风险操作自动执行,高风险仍需确认。适合批量操作、CI 流程中的自动修复。
6. Agentic Loop 哪些必须、哪些特有
必须的:推理→工具调用→观察结果→循环(这是所有 Agent 的共性)。工具系统(某种形式的外部能力调用)也是必须的,否则只是聊天机器人不是 Agent。
Claude Code 特有的:(1) Checkpoint(文件编辑前自动快照)(2) 权限模式(Plan/Default/Auto)(3) Git 感知(worktree、commit)(4) 交互式打断(Esc)。这些都是为”在终端里编程”这个特定场景设计的。
7. OpenClaw isolated session vs Claude Code SubAgent
相同:都解决”上下文隔离”问题——在独立空间执行任务,不污染主上下文。
不同:(1) 生命周期:SubAgent 是主会话的子任务,随主会话存在;OpenClaw isolated session 是完全独立的 session 实例,有自己的 sessionId (2) 通信:SubAgent 结果直接回传到主上下文;isolated session 通过 Gateway RPC 通信 (3) 持久性:SubAgent 执行完即释放(除非有 memory);isolated session 的记录可以独立存在 (4) 运维:SubAgent 零配置;isolated session 需要考虑 session 清理策略。
参见
- 02-上下文与记忆系统 — 深入理解上下文管理
- 03-扩展体系总览 — 理解如何在 Agentic Loop 上叠加扩展
- SlipBox 相关:Agent、Tool Use、Context Window、Claude Code