Plan 模式和 Sandbox 模式详解
Plan 模式和 Sandbox 模式详解
本指南详细介绍 Claude Code 的 Plan 模式(规划模式)和 Sandbox 模式(沙箱模式),帮助开发者更安全、更高效地使用 Claude Code。
一、Plan 模式(规划模式)
1.1 什么是 Plan 模式?
Plan 模式是一种"先规划、后执行"的工作模式,Claude 会先分析项目架构、依赖关系并起草实现方案,确认后才开始编写代码。
核心价值: 在这个模式下,Claude 会阅读代码、分析架构、起草计划,但绝不修改代码。直到你批准计划,它才会动手。你是架构师,它是执行者。
1.2 为什么使用 Plan 模式?
Anthropic 开发者关系负责人 Ado Kukic 有 90% 的时间都在使用这个模式。
Plan 模式工作流程
┌─────────────────────────────────────────────────────────────────┐
│ Plan 模式工作流程 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
│ │ 接收任务 │ → │ 分析项目 │ → │ 设计方案 │ → │ 用户确认 ││
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
│ ↓ │
│ ┌──────────┐ ┌──────────┐ │ │
│ │ 完成任务 │ ← │ 执行实现 │ ← ────────────────────────┘ │
│ └──────────┘ └──────────┘ "yes" │
│ │
└─────────────────────────────────────────────────────────────────┘
1.3 进入 Plan 模式
快捷键方式
# 按两次 Shift+Tab
Shift+Tab, Shift+Tab
命令方式
# 使用命令进入 Plan 模式
/plan
1.4 Plan 模式工作流程详解
阶段 1:探索阶段
# 进入 Plan 模式后,Claude 会自动:
1. 读取相关文件
2. 分析代码结构
3. 理解依赖关系
阶段 2:规划阶段
# Claude 会:
1. 设计实现方案
2. 列出具体步骤
3. 识别潜在风险
阶段 3:确认阶段
# Claude 会展示:
1. 完整计划
2. 等待用户反馈
3. 根据反馈调整
阶段 4:执行阶段
# 用户确认 "yes" 后:
1. 按计划实施
2. 实时反馈进度
3. 处理异常情况
1.5 Plan 模式最佳实践
适合场景
| 场景 | 说明 |
|------|------|
| ✅ 复杂功能开发 | 多文件、多步骤的功能实现 |
| ✅ 架构重构 | 涉及多个模块的结构调整 |
| ✅ 性能优化 | 需要全面分析的优化任务 |
| ✅ 代码迁移 | 跨技术栈的代码迁移 |
| ✅ 不熟悉的项目 | 需要深入理解的项目 |
不适合场景
| 场景 | 说明 |
|------|------|
| ❌ 简单 bug 修复 | 单行代码修改 |
| ❌ 单行代码修改 | 简单的修复 |
| ❌ 文档查询 | 信息查找 |
| ❌ 快速原型验证 | 需要快速迭代 |
使用技巧
# 启用 Plan 模式
Shift+Tab × 2
# 明确任务需求
请帮我实现用户认证功能,包括:
1. 用户注册
2. 用户登录
3. JWT token 验证
4. 密码加密存储
# Claude 会先探索并规划:
Plan: 实现用户认证功能
1. 分析现有代码结构
2. 设计认证流程
3. 创建数据模型
4. 实现 API 端点
5. 添加中间件
6. 编写测试
确认后开始执行? (yes/no)
# 确认后开始实施
yes
1.6 Plan 模式示例
示例 1:实现新功能
# 原始需求
请帮我实现支付功能,包括:
1. 集成支付宝
2. 集成微信支付
3. 订单状态管理
4. 支付回调处理
# Plan 模式输出
Plan: 实现支付功能
## 分析阶段
- 已分析现有订单模块结构
- 已识别支付相关依赖
- 已了解现有 API 设计模式
## 实施计划
### 步骤 1: 基础设施
- [ ] 创建支付服务文件 (src/services/payment.ts)
- [ ] 添加支付配置 (config/payment.yaml)
- [ ] 安装必要依赖
### 步骤 2: 支付宝集成
- [ ] 实现支付宝签名
- [ ] 创建支付订单 API
- [ ] 实现支付回调处理
### 步骤 3: 微信支付集成
- [ ] 实现微信支付签名
- [ ] 创建支付订单 API
- [ ] 实现支付回调处理
### 步骤 4: 订单状态管理
- [ ] 更新订单状态枚举
- [ ] 实现状态流转逻辑
- [ ] 添加状态变更事件
### 步骤 5: 测试
- [ ] 编写单元测试
- [ ] 编写集成测试
- [ ] 测试支付流程
## 风险识别
1. 支付安全:需要严格的安全审查
2. 并发处理:需要考虑订单并发
3. 回调可靠性:需要实现重试机制
确认后开始执行? (yes/no)
示例 2:代码重构
# 原始需求
请帮我重构用户认证模块
# Plan 模式输出
Plan: 重构用户认证模块
## 分析阶段
- 已扫描认证相关文件
- 已识别耦合关系
- 已了解当前架构
## 重构计划
### 阶段 1: 提取服务层
- [ ] 创建 auth 服务 (src/services/auth.ts)
- [ ] 迁移业务逻辑
### 阶段 2: 优化中间件
- [ ] 重构认证中间件
- [ ] 优化权限检查
### 阶段 3: 更新 API
- [ ] 更新路由定义
- [ ] 优化请求验证
### 阶段 4: 测试覆盖
- [ ] 添加集成测试
- [ ] 验证兼容性
## 回滚计划
如有问题,可通过 git revert 回滚
确认后开始执行? (yes/no)
二、Sandbox 模式(沙箱模式)
2.1 什么是 Sandbox 模式?
Sandbox 模式通过定义允许的操作范围,拦截危险操作,提高安全性。
Sandbox 模式核心机制
┌─────────────────────────────────────────────────────────────────┐
│ Sandbox 模式机制 │
│ │
│ ┌──────────┐ ┌──────────────────┐ ┌─────────────────┐ │
│ │ 操作请求 │ → │ Sandbox 规则检查 │ → │ 执行/拦截/询问 │ │
│ └──────────┘ └──────────────────┘ └─────────────────┘ │
│ ↓ │
│ ┌────────────┼────────────┐ │
│ ↓ ↓ ↓ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 允许操作 │ │ 拒绝操作 │ │ 需确认 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
2.2 配置 Sandbox 模式
方式一:通过 /permissions 命令
# 打开权限管理界面
claude /permissions
方式二:配置文件
编辑 ~/.claude/settings.json:
{
"permissions": {
"allow": {
"bash": [
"npm install",
"npm test",
"npm run build",
"git *",
"node -v",
"npm -v"
],
"write": [
"src/**/*",
"tests/**/*",
"*.md"
],
"read": [
"**/*"
]
},
"deny": {
"bash": [
"rm -rf *",
"format *",
"shutdown",
"reboot"
],
"write": [
"node_modules/**/*",
".git/**/*",
"/etc/*",
"/usr/*"
]
}
}
}
2.3 Sandbox 配置详解
Allow 配置
{
"permissions": {
"allow": {
"bash": [
"npm test",
"npm run build",
"git status",
"git log --oneline"
],
"write": [
"src/**/*",
"tests/**/*",
"docs/**/*",
"*.md"
],
"read": [
"**/*"
]
}
}
}
Deny 配置
{
"permissions": {
"deny": {
"bash": [
"rm -rf *",
"rm -rf node_modules",
"format *",
"chmod *",
"shutdown",
"reboot"
],
"write": [
"/etc/*",
"/usr/*",
"/var/*",
".git/**/*",
"node_modules/**/*"
]
}
}
}
2.4 Sandbox 最佳实践
最小权限原则
{
"permissions": {
"allow": {
"bash": ["npm test", "npm run build"],
"write": ["src/**/*", "tests/**/*"]
}
}
}
特定项目配置
// .claude/settings.json (项目级)
{
"permissions": {
"allow": {
"bash": [
"npm run dev:*",
"npm run test:*",
"npm run build:*"
],
"write": ["src/**/*", "tests/**/*", "docs/**/*"]
},
"deny": {
"write": ["dist/**/*", "build/**/*"]
}
}
}
开发环境配置
{
"permissions": {
"allow": {
"bash": [
"npm run dev",
"npm test",
"npm run lint",
"git status",
"git diff"
],
"write": [
"src/**/*",
"tests/**/*",
"*.config.*"
]
},
"deny": {
"bash": [
"npm run build",
"npm run deploy"
],
"write": [
"node_modules/**/*",
".next/**/*",
"dist/**/*"
]
}
}
}
生产环境配置
{
"permissions": {
"allow": {
"bash": [
"npm test",
"npm run build"
],
"write": [
"dist/**/*"
]
},
"deny": {
"bash": [
"rm -rf *",
"npm run dev"
],
"write": [
"src/**/*",
"tests/**/*"
]
}
}
}
2.5 Sandbox 常见问题
问题 1:操作被拒绝
错误信息:
Permission denied: command not allowed
解决方案:
# 查看当前权限配置
claude /permissions
# 添加允许的命令
编辑 ~/.claude/settings.json
问题 2:配置不生效
解决方案:
# 重启 Claude Code
exit
claude
# 检查配置格式
cat ~/.claude/settings.json | jq .
三、Plan 模式与 Sandbox 模式结合使用
结合使用的优势
# 在 Plan 模式中使用 Sandbox
/plan
# 规划完成后,Claude 会在 Sandbox 中安全执行
安全开发工作流
# 步骤 1: 规划阶段
/plan
# 步骤 2: 审查计划
Claude: 展示详细实施计划
# 步骤 3: 确认执行
yes
# 步骤 4: 安全执行
Claude: 在 Sandbox 中安全执行所有操作
# 步骤 5: 验证结果
Claude: 完成任务并报告
四、总结
通过本指南,你已经了解了:
- ✅ Plan 模式的核心概念和使用方法
- ✅ Plan 模式的工作流程和最佳实践
- ✅ Sandbox 模式的配置和使用
- ✅ Sandbox 模式的最佳实践
- ✅ 两种模式的结合使用
Plan 模式和 Sandbox 模式是 Claude Code 强大的安全保障机制,合理使用可以大大提高开发效率和安全性。