
这节课讲 Claude Code 的高级功能:Planning Mode 让 AI 先思考再动手,Auto Mode 用后台安全分类器审查每一步操作,权限模式控制 AI 能做什么不能做什么,以及后台任务、计划任务、会话管理等一系列让 AI 成为真正强大开发助手的特性。
为什么需要高级功能
普通模式下让 Claude 写代码,它可能会:
- 上来就写,写完发现方向跑偏了
- 权限太大,不小心删了整个项目
- 一个耗时任务跑起来,你就只能干等着
高级功能解决的就是这些问题:先计划后执行 ,危险操作先审查 ,后台任务不阻塞。
Planning Mode:想清楚再动手
Planning Mode 是 Claude Code 最重要的功能之一。核心思想很简单:AI 先分析任务、制定详细计划,你审批通过后再执行。
激活方式
bash
# 方式1:slash 命令
/plan 构建一个博客 REST API
# 方式2:CLI 参数
claude --permission-mode plan
# 方式3:键盘快捷键
Shift + Tab # 循环切换权限模式
实际效果
当你输入 /plan 构建一个博客 REST API 时,Claude 会输出这样的计划:
markdown
## 博客 REST API 实现计划
### 阶段 1:项目初始化(15 分钟)
1. 初始化 Node.js 项目(Express)
2. 配置 TypeScript
3. 安装依赖(express, pg, jwt, joi)
### 阶段 2:数据库层(30 分钟)
4. 设计数据库 schema
5. 创建迁移文件
6. 实现数据库模型
### 阶段 3:认证模块(45 分钟)
...
预计耗时:4.5 小时
需创建文件:约 25 个
API 端点:11 个
是否继续?(yes/no/modify)
你可以回答:
yes--- 同意,执行计划no--- 拒绝,换个方式modify--- 修改计划,比如"跳过 Phase 2,改用现成的数据库"
Planning Mode 的典型场景
| 场景 | 为什么用 Planning |
|---|---|
| 复杂重构 | 需要全局视角,避免拆了东墙补西墙 |
| 新功能实现 | 提前发现依赖和接口设计问题 |
| 数据库迁移 | 高风险操作,先计划好回滚策略 |
| 大型 API 设计 | 多个端点、认证、验证,提前规划 |
配置 Planning Mode
可以在 ~/.claude/settings.json 设置默认进入 plan 模式:
json
{
"permissions": {
"defaultMode": "plan"
}
}
还有个技巧:模型别名 opusplan 会自动用 Opus 做规划、Sonnet 做执行:
bash
claude --model opusplan "设计和实现新的 API"
Planning Mode 最佳实践
- 仔细审查计划 --- AI 可能漏掉边界情况
- 要求修改 --- 不要被动接受,必要时调整范围和顺序
- 加入时间估算 --- 帮助判断是否值得做
- 高风险任务加入回滚方案 --- 迁移、重构必备
Extended Thinking:深度思考模式
Extended Thinking 让 Claude 在回答复杂问题前花更多时间推理。对于架构决策、技术选型这类没有标准答案的问题特别有用。
激活方式
| 平台 | 快捷键 |
|---|---|
| macOS | Option + T |
| Windows/Linux | Alt + T |
或者用 CLI:
bash
claude --effort high "复杂架构评审"
Opus 4.6 模型支持四个思考深度级别:low (○)、medium (◐)、high (●)、max (●)。
实际例子
markdown
User: /think 我们的电商平台应该用微服务还是单体架构?
Claude: <extended_thinking>
## 上下文分析
- 团队规模:5 名开发人员
- 预期流量:初期 1 万日活
- DevOps 资源有限
- MVP 计划 6 个月
## 方案 1:微服务
优点:+ 独立扩展,+ 技术灵活性
缺点:- 运维复杂度高,- 需要 DevOps 专业知识
## 方案 2:单体架构
优点:+ 初期开发更快,+ 调试更容易
缺点:- 后续扩展挑战
## 推荐方案
采用**模块化单体**架构...
</extended_thinking>
推荐方案:采用模块化单体架构,保持清晰的模块边界。
思考过程对你可见 (Ctrl+O),你可以看到 AI 是怎么推理的,不只是个黑盒。
Auto Mode:后台安全分类器
Auto Mode(Research Preview, 2026年3月)是最近推出的重磅功能。它使用后台运行的安全分类器来审查每一步操作,在危险操作执行前自动拦截。
工作原理
markdown
你的请求 → 权限规则检查 → 读写操作自动通过 → 后台分类器审查
↓
安全 → 执行
不确定 → 询问用户
关键点:默认就阻止危险操作,而不是等出事了再后悔。
默认阻止的行为
| 类别 | 例子 |
|---|---|
| Shell 管道安装 | `curl |
| 敏感数据外传 | API key、凭据发送到外部 |
| 生产环境部署 | deploy 到生产 |
| 批量删除 | rm -rf 大目录 |
| IAM 变更 | 权限和角色修改 |
| 强制推送到 main | git push --force origin main |
默认允许的行为
| 类别 | 例子 |
|---|---|
| 本地文件操作 | 读写编辑项目文件 |
| 声明式依赖安装 | npm install、pip install |
| 只读 HTTP | 获取文档 |
| 推送到当前分支 | git push origin feature-branch |
启用 Auto Mode
bash
# 解锁 auto mode(需要 Team plan)
claude --enable-auto-mode
# 或者直接设置默认模式
claude --permission-mode auto
如果用的是 defaultMode 配置:
json
{
"permissions": {
"defaultMode": "auto"
}
}
无 Team Plan 也能用:权限种子脚本
如果你是个人用户,没有 Team plan,可以运行 setup-auto-mode-permissions.py 脚本手动配置一套保守的权限基线:
bash
# 预览会添加什么规则(不实际写入)
python3 setup-auto-mode-permissions.py --dry-run
# 应用保守基线(只读 + 本地检查)
python3 setup-auto-mode-permissions.py
# 需要编辑权限时
python3 setup-auto-mode-permissions.py --include-edits --include-tests
# 需要 git 写权限时
python3 setup-auto-mode-permissions.py --include-git-write --include-packages
这个脚本会配置分层权限:
| 类别 | 包含的工具 |
|---|---|
| 核心只读 | Read(*), Glob(*), Grep(*), WebSearch(*) |
| 本地检查 | Bash(git status:*), Bash(cat:*), Bash(find:*) |
| 可选编辑 | Edit(*), Write(*), NotebookEdit(*) |
| 可选测试/构建 | Bash(pytest:*), Bash(cargo test:*), Bash(make:*) |
| 可选 git 写操作 | Bash(git add:*), Bash(git commit:*) |
| 可选包管理 | Bash(npm install:*), Bash(pip install:*) |
危险操作(rm -rf、sudo、DROP TABLE、terraform destroy 等)不会被加入,这是刻意的安全设计。
Fallback 机制
分类器拿不准时会 fallback 到询问用户:
- 3 次连续拦截后触发询问
- 单个 session 内总计 20 次拦截后触发询问
这确保了用户始终保持最终控制权。
Permission Modes:权限模式全解
Claude Code 有 6 种权限模式,控制在无显式批准时 AI 能做什么:
| 模式 | 行为 |
|---|---|
default |
只读文件;其他操作全部询问 |
acceptEdits |
读写文件;命令操作询问 |
plan |
只读模式(研究模式,不做修改) |
auto |
所有操作,但后台安全分类器审查 |
bypassPermissions |
所有操作,无任何检查(危险) |
dontAsk |
只执行预批准的工具,其他全部拒绝 |
切换方式
bash
# 键盘快捷键
Shift + Tab # 循环切换所有模式
Alt + M # Windows/Linux
# CLI 参数
claude --permission-mode plan
# 在 REPL 内
/plan # 进入 plan 模式
场景选择指南
arduino
场景 推荐模式
─────────────────────────────────────────────────────
代码审查 plan
结对编程 default
自动化修复 lint acceptEdits
自主开发(安全审查) auto
CI/CD 无人值守 bypassPermissions(慎用)
运行预定义任务 dontAsk
bypassPermissions 极度危险,除非是完全隔离的 CI 环境、有其他安全护栏,否则不要用。
Background Tasks:后台任务
耗时操作(测试套件、构建、部署)可以放到后台执行,不阻塞对话。
核心命令
| 命令 | 作用 |
|---|---|
/task list |
列出所有后台任务 |
/task status <id> |
查看任务进度 |
/task show <id> |
查看任务输出 |
/task cancel <id> |
取消任务 |

实际例子
makefile
User: 在后台运行完整测试套件
Claude: 已在后台启动测试(任务ID: bg-1234)
[继续工作]
User: 同时,重构 auth 模块
Claude: [在测试运行的同时进行 auth 模块重构]
[测试完成后]
Claude: 📢 后台任务 bg-1234 已完成:
✅ 245 个测试通过
❌ 3 个测试失败
配置
json
{
"backgroundTasks": {
"enabled": true,
"maxConcurrentTasks": 5,
"notifyOnCompletion": true,
"autoCleanup": true
}
}
Scheduled Tasks:定时任务
用 /loop 命令设置周期性检查或提醒:
bash
# 每5分钟检查部署状态
/loop 5m 检查部署是否完成
# 自然语言方式
/loop 每30分钟检查构建状态
# 一次性提醒
下午3点提醒我推送发布分支
45分钟后运行集成测试
支持标准 5 字段 cron 表达式。
限制
- 最多 50 个定时任务 per session
- Session 级别 --- session 结束会清空
- 循环任务 7 天后自动过期
- 不在时错过的不补发
Cloud Scheduled Tasks
用 /schedule 可以创建在 Anthropic 云基础设施上运行的定时任务,不需要 Claude Code 本地运行:
bash
/schedule 每天上午9点运行测试套件并报告失败
Session Management:会话管理
核心命令
| 命令 | 作用 |
|---|---|
/resume |
恢复指定对话 |
/rename |
重命名当前 session |
/fork |
复制当前 session 到新分支 |
claude -c |
继续上一个对话 |
claude -r "session" |
按名称或 ID 恢复对话 |
实际例子
bash
# 继续上一个对话
claude -c
# 恢复指定对话并 fork
claude --resume auth-refactor --fork-session "try-OAuth"
# 在 REPL 内
/fork
Fork 特别有用:你想尝试另一种方案但不想放弃当前进度时,fork 出一个新分支,实验完了可以随时切回来。
Headless Mode:非交互模式
Print mode (claude -p) 让 Claude Code 以非交互方式运行,适合 CI/CD 和自动化脚本。
bash
# 运行特定任务
claude -p "运行所有测试"
# 处理管道输入
cat error.log | claude -p "分析这些错误"
# 限制执行轮次
claude -p --max-turns 5 "重构这个模块"
# JSON 输出
claude -p --output-format json "分析代码库"
GitHub Actions 集成例子
yaml
- name: AI 代码审查
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
claude -p --output-format json \
--max-turns 3 \
"审查此 PR 的安全和质量问题" > review.json
键盘快捷键完整参考
| 快捷键 | 作用 |
|---|---|
Ctrl+C |
取消当前输入/生成 |
Ctrl+D |
退出 Claude Code |
Ctrl+G |
在外部编辑器编辑当前计划 |
Ctrl+L |
清屏 |
Ctrl+O |
切换详细输出(查看推理过程) |
Ctrl+R |
反向搜索历史 |
Ctrl+T |
切换任务列表视图 |
Shift+Tab |
循环切换权限模式 |
Alt+M |
切换权限模式 (Windows/Linux) |
Alt+T |
切换 Extended Thinking |
↑/↓ |
命令历史 |
完整配置示例
json
{
"permissions": {
"defaultMode": "auto"
},
"planning": {
"autoEnter": true,
"complexityThreshold": 3,
"requireApproval": true
},
"backgroundTasks": {
"enabled": true,
"maxConcurrentTasks": 3
},
"hooks": {
"PreToolUse:Edit": "eslint --fix ${file_path}",
"PreToolUse:Write": "prettier --write ${file_path}",
"PreCommit": "npm test && npm run lint"
},
"sandbox": {
"enabled": true,
"failIfUnavailable": false
}
}
各场景推荐配置
README 中的 config-examples.json 提供了多种场景的预设配置:
| 场景 | 推荐配置要点 |
|---|---|
| 开发环境 | planning.autoEnter: true, backgroundTasks.enabled: true |
| 代码审查 | permissions.mode: plan, extendedThinking.enabled: true |
| 生产部署 | permissions.mode: confirm, planning.requireApproval: true, 多重 hooks |
| CI/CD | permissions.mode: unrestricted, headless.exitOnError: true |
| 安全审计 | permissions.mode: plan, extendedThinking.minThinkingTime: 10 |
| 结对编程 | permissions.mode: confirm, planning.showTimeEstimates: true |
| 大型重构 | planning.autoEnter: true, checkpoints.autoCheckpoint: true |
| 自主开发 | permissions.mode: auto, sandbox.enabled: true |
Trade-offs
- Planning Mode 会慢一点(多一步审批),但对复杂任务值得
- Auto Mode 需要额外 token 消耗(分类器运行在 Sonnet 4.6 上)
- 后台任务 多了会增加认知负担,别开太多(建议 maxConcurrentTasks ≤ 5)
- Sandbox + 权限规则 是纵深防御,但配置复杂,小项目可能过度设计