学习自:Claude Code 如何工作
一、核心概念:代理循环 (Agentic Loop)
Claude Code 是一个运行在终端中的代理助手,当你给它一个任务时,它会经历三个阶段循环:
收集上下文 → 采取行动 → 验证结果 →(重复直到完成)
关键特点:
- Claude 始终使用工具(搜索文件、编辑代码、运行测试等)
- 循环根据任务要求自适应调整
- 简单问题:可能只需要收集上下文
- Bug 修复:多次循环所有三个阶段
- 重构:涉及广泛验证
- 你也是循环的一部分:可以随时中断、引导方向、提供额外上下文
两个核心组件:
- 模型:进行推理(Sonnet 处理日常,Opus 负责复杂架构)
- 工具:采取行动(读取、编辑、搜索、执行命令等)
二、工具分类与能力
内置工具分为五大类:
| 类别 | 能力 |
|---|---|
| 文件操作 | 读取文件、编辑代码、创建新文件、重命名重组 |
| 搜索 | 按模式找文件、正则搜索内容、探索代码库 |
| 执行 | 运行 shell 命令、启动服务器、运行测试、git 操作 |
| 网络 | 搜索网络、获取文档、查找错误 |
| 代码智能 | 查看类型错误、跳转到定义、查找引用 |
扩展机制:
- Skills:扩展 Claude 的知识
- MCP:连接外部服务
- Hooks:自动化工作流
- Subagents:卸载任务给子代理
三、Claude 可以访问什么
当你在目录运行 claude 时,它可以访问:
- 你的项目 - 当前目录及子目录文件(需要你许可才能访问其他地方)
- 你的终端 - 你能运行的命令 Claude 都能运行
- git 状态 - 当前分支、未提交更改、最近提交历史
- CLAUDE.md - 项目特定说明和约定,每个会话都会加载
- 自动内存 - Claude 自动保存的学习内容(项目模式、偏好)
- 已配置扩展 - 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/ 中。您可以调查并修复它吗?
不需要指定读哪个文件、运行什么命令。
八、个人总结
- Claude Code 不是简单的代码补全工具,它是可以自主完成任务的代理,会主动搜索、阅读、编辑、测试验证
- 上下文是有限资源,重要持久的规则一定要写到
CLAUDE.md中,不要依赖对话历史 - 你掌握控制权 - 可以随时中断、引导方向、撤销更改
- 使用正确的工作流 - 复杂问题先探索计划再实现,比直接跳进去编码效果更好
- 扩展性强 - 通过 skills、MCP、hooks、subagents 可以定制适应不同工作流