深挖 Claude Code 工作原理:为什么它能成为最强大的 AI 编程助手?

3 阅读5分钟

学习自:Claude Code 如何工作


一、核心概念:代理循环 (Agentic Loop)

Claude Code 是一个运行在终端中的代理助手,当你给它一个任务时,它会经历三个阶段循环:

收集上下文 → 采取行动 → 验证结果 →(重复直到完成)

关键特点:

  • Claude 始终使用工具(搜索文件、编辑代码、运行测试等)
  • 循环根据任务要求自适应调整
    • 简单问题:可能只需要收集上下文
    • Bug 修复:多次循环所有三个阶段
    • 重构:涉及广泛验证
  • 你也是循环的一部分:可以随时中断、引导方向、提供额外上下文

两个核心组件:

  • 模型:进行推理(Sonnet 处理日常,Opus 负责复杂架构)
  • 工具:采取行动(读取、编辑、搜索、执行命令等)

二、工具分类与能力

内置工具分为五大类:

类别能力
文件操作读取文件、编辑代码、创建新文件、重命名重组
搜索按模式找文件、正则搜索内容、探索代码库
执行运行 shell 命令、启动服务器、运行测试、git 操作
网络搜索网络、获取文档、查找错误
代码智能查看类型错误、跳转到定义、查找引用

扩展机制:

  • Skills:扩展 Claude 的知识
  • MCP:连接外部服务
  • Hooks:自动化工作流
  • Subagents:卸载任务给子代理

三、Claude 可以访问什么

当你在目录运行 claude 时,它可以访问:

  1. 你的项目 - 当前目录及子目录文件(需要你许可才能访问其他地方)
  2. 你的终端 - 你能运行的命令 Claude 都能运行
  3. git 状态 - 当前分支、未提交更改、最近提交历史
  4. CLAUDE.md - 项目特定说明和约定,每个会话都会加载
  5. 自动内存 - Claude 自动保存的学习内容(项目模式、偏好)
  6. 已配置扩展 - MCP 服务、skills、subagents 等

和只看到当前文件的内联代码助手不同,Claude 看到整个项目,可以跨文件协调工作。


四、执行环境与界面

执行环境

环境代码位置适用场景
本地你的机器默认,完全访问文件工具环境
Anthropic 管理的虚拟机卸载任务、本地没有仓库时
远程控制你的机器,浏览器控制使用 Web UI 保持一切本地

界面支持

终端、桌面应用、VS Code 扩展、JetBrains IDE 扩展、claude.ai/code、远程控制、Slack、CI/CD 管道。底层代理循环都是相同的


五、会话管理

基本特性

  • 对话本地存储,支持回退、恢复、分叉会话
  • 每个新会话都是独立的 - 以新的上下文窗口开始,没有之前会话的对话历史
  • 持久化信息依靠 CLAUDE.md 和自动内存

跨分支工作

  • 会话与目录关联,只看到当前分支的文件
  • 切换分支后,对话历史保留,但看到新分支文件
  • 可以使用 git worktrees 运行并行会话,每个分支单独目录

恢复与分叉

  • claude --continue/--resume:从中断处继续,保留完整历史
  • claude --continue --fork-session:创建新会话 ID,保留历史但不影响原会话

上下文窗口管理

Claude 自动压缩上下文,但早期说明可能丢失。最佳实践:

  • 将持久规则放在 CLAUDE.md
  • 运行 /context 查看什么占用空间
  • 需要时运行 /compact 控制压缩保留内容
  • 使用 subagents 获得独立上下文,不膨胀主对话
  • MCP 工具默认延迟加载,按需加载

六、安全机制

检查点撤销

  • 每次编辑前对原文件快照
  • 按两次 Esc 回退到之前状态
  • 仅涵盖文件更改,外部操作(数据库、API、部署)无法检查点

权限控制

Shift+Tab 循环切换权限模式:

模式行为
默认文件编辑和 shell 命令前都询问
自动接受编辑编辑文件不询问,命令仍询问
Plan Mode仅使用只读工具,创建计划需要你批准后执行
自动模式后台安全检查评估所有操作(研究预览)

可以在 .claude/settings.json 中允许受信任命令(如 pnpm test),避免每次询问。


七、有效使用技巧

1. 这是一个对话,你可以迭代

不需要完美的初始提示,从想要的开始,然后细化更正:

修复登录错误
→ [Claude 调查尝试]
→ 这不太对,问题在于会话处理
→ [Claude 调整方法]

随时可以中断 Claude,不必等它完成。

2. 预先具体

初始提示越精确,需要的更正越少:

// 好例子
结账流程对于持有过期卡的用户来说已损坏。
检查 src/payments/ 中的问题,特别是令牌刷新。
首先编写一个失败的测试,然后修复它。

3. 给 Claude 一些东西来验证

Claude 在能检查自己工作时表现更好:

  • 包含测试用例
  • 粘贴预期 UI 截图
  • 明确定义期望输出

4. 复杂问题:探索 → 计划 → 实现

使用 Plan Mode 先分析再实现,结果更好:

读取 src/auth/ 并理解我们如何处理会话。
然后为添加 OAuth 支持创建一个计划。

5. 委派,不要指示

像委派给有能力的同事一样,提供上下文和方向,相信 Claude 会处理细节:

结账流程对于持有过期卡的用户来说已损坏。
相关代码在 src/payments/ 中。您可以调查并修复它吗?

不需要指定读哪个文件、运行什么命令。


八、个人总结

  1. Claude Code 不是简单的代码补全工具,它是可以自主完成任务的代理,会主动搜索、阅读、编辑、测试验证
  2. 上下文是有限资源,重要持久的规则一定要写到 CLAUDE.md 中,不要依赖对话历史
  3. 你掌握控制权 - 可以随时中断、引导方向、撤销更改
  4. 使用正确的工作流 - 复杂问题先探索计划再实现,比直接跳进去编码效果更好
  5. 扩展性强 - 通过 skills、MCP、hooks、subagents 可以定制适应不同工作流