⚡精通Claude第9课-高级功能:Planning Mode、Auto Mode 与自动化工作流

0 阅读9分钟

高级功能.png

这节课讲 Claude Code 的高级功能:Planning Mode 让 AI 先思考再动手,Auto Mode 用后台安全分类器审查每一步操作,权限模式控制 AI 能做什么不能做什么,以及后台任务、计划任务、会话管理等一系列让 AI 成为真正强大开发助手的特性。


为什么需要高级功能

普通模式下让 Claude 写代码,它可能会:

  • 上来就写,写完发现方向跑偏了
  • 权限太大,不小心删了整个项目
  • 一个耗时任务跑起来,你就只能干等着

高级功能解决的就是这些问题:先计划后执行危险操作先审查后台任务不阻塞


Planning Mode:想清楚再动手

Planning Mode 是 Claude Code 最重要的功能之一。核心思想很简单:AI 先分析任务、制定详细计划,你审批通过后再执行

激活方式

# 方式1:slash 命令
/plan 构建一个博客 REST API

# 方式2:CLI 参数
claude --permission-mode plan

# 方式3:键盘快捷键
Shift + Tab  # 循环切换权限模式

实际效果

当你输入 /plan 构建一个博客 REST API 时,Claude 会输出这样的计划:

## 博客 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 模式:

{
  "permissions": {
    "defaultMode": "plan"
  }
}

还有个技巧:模型别名 opusplan 会自动用 Opus 做规划、Sonnet 做执行:

claude --model opusplan "设计和实现新的 API"

Planning Mode 最佳实践

  1. 仔细审查计划 — AI 可能漏掉边界情况
  2. 要求修改 — 不要被动接受,必要时调整范围和顺序
  3. 加入时间估算 — 帮助判断是否值得做
  4. 高风险任务加入回滚方案 — 迁移、重构必备

Extended Thinking:深度思考模式

Extended Thinking 让 Claude 在回答复杂问题前花更多时间推理。对于架构决策、技术选型这类没有标准答案的问题特别有用。

激活方式

平台快捷键
macOSOption + T
Windows/LinuxAlt + T

image.png 或者用 CLI:

claude --effort high "复杂架构评审"

Opus 4.6 模型支持四个思考深度级别:low (○)、medium (◐)、high (●)、max (●)。

实际例子

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月)是最近推出的重磅功能。它使用后台运行的安全分类器来审查每一步操作,在危险操作执行前自动拦截。

工作原理

你的请求 → 权限规则检查 → 读写操作自动通过 → 后台分类器审查
                                                        ↓
                                              安全 → 执行
                                              不确定 → 询问用户

关键点:默认就阻止危险操作,而不是等出事了再后悔。

默认阻止的行为

类别例子
Shell 管道安装curl | bash
敏感数据外传API key、凭据发送到外部
生产环境部署deploy 到生产
批量删除rm -rf 大目录
IAM 变更权限和角色修改
强制推送到 maingit push --force origin main

默认允许的行为

类别例子
本地文件操作读写编辑项目文件
声明式依赖安装npm installpip install
只读 HTTP获取文档
推送到当前分支git push origin feature-branch

启用 Auto Mode

# 解锁 auto mode(需要 Team plan)
claude --enable-auto-mode

# 或者直接设置默认模式
claude --permission-mode auto

如果用的是 defaultMode 配置:

{
  "permissions": {
    "defaultMode": "auto"
  }
}

无 Team Plan 也能用:权限种子脚本

如果你是个人用户,没有 Team plan,可以运行 setup-auto-mode-permissions.py 脚本手动配置一套保守的权限基线:

# 预览会添加什么规则(不实际写入)
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 -rfsudoDROP TABLEterraform destroy 等)不会被加入,这是刻意的安全设计。

Fallback 机制

分类器拿不准时会 fallback 到询问用户:

  • 3 次连续拦截后触发询问
  • 单个 session 内总计 20 次拦截后触发询问

这确保了用户始终保持最终控制权。


Permission Modes:权限模式全解

Claude Code 有 6 种权限模式,控制在无显式批准时 AI 能做什么:

模式行为
default只读文件;其他操作全部询问
acceptEdits读写文件;命令操作询问
plan只读模式(研究模式,不做修改)
auto所有操作,但后台安全分类器审查
bypassPermissions所有操作,无任何检查(危险)
dontAsk只执行预批准的工具,其他全部拒绝

切换方式

# 键盘快捷键
Shift + Tab  # 循环切换所有模式
Alt + M      # Windows/Linux

# CLI 参数
claude --permission-mode plan

# 在 REPL 内
/plan  # 进入 plan 模式

场景选择指南

场景                          推荐模式
─────────────────────────────────────────────────────
代码审查                      plan
结对编程                      default
自动化修复 lint                acceptEdits
自主开发(安全审查)            auto
CI/CD 无人值守                bypassPermissions(慎用)
运行预定义任务                  dontAsk

bypassPermissions 极度危险,除非是完全隔离的 CI 环境、有其他安全护栏,否则不要用。


Background Tasks:后台任务

耗时操作(测试套件、构建、部署)可以放到后台执行,不阻塞对话。

核心命令

命令作用
/task list列出所有后台任务
/task status <id>查看任务进度
/task show <id>查看任务输出
/task cancel <id>取消任务

image.png

实际例子

User: 在后台运行完整测试套件

Claude: 已在后台启动测试(任务ID: bg-1234)

[继续工作]

User: 同时,重构 auth 模块
Claude: [在测试运行的同时进行 auth 模块重构]

[测试完成后]
Claude: 📢 后台任务 bg-1234 已完成:
✅ 245 个测试通过
❌ 3 个测试失败

配置

{
  "backgroundTasks": {
    "enabled": true,
    "maxConcurrentTasks": 5,
    "notifyOnCompletion": true,
    "autoCleanup": true
  }
}

Scheduled Tasks:定时任务

/loop 命令设置周期性检查或提醒:

# 每5分钟检查部署状态
/loop 5m 检查部署是否完成

# 自然语言方式
/loop 每30分钟检查构建状态

# 一次性提醒
下午3点提醒我推送发布分支
45分钟后运行集成测试

支持标准 5 字段 cron 表达式。

限制

  • 最多 50 个定时任务 per session
  • Session 级别 — session 结束会清空
  • 循环任务 7 天后自动过期
  • 不在时错过的不补发

Cloud Scheduled Tasks

/schedule 可以创建在 Anthropic 云基础设施上运行的定时任务,不需要 Claude Code 本地运行:

/schedule 每天上午9点运行测试套件并报告失败

Session Management:会话管理

核心命令

命令作用
/resume恢复指定对话
/rename重命名当前 session
/fork复制当前 session 到新分支
claude -c继续上一个对话
claude -r "session"按名称或 ID 恢复对话

实际例子

# 继续上一个对话
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 和自动化脚本。

# 运行特定任务
claude -p "运行所有测试"

# 处理管道输入
cat error.log | claude -p "分析这些错误"

# 限制执行轮次
claude -p --max-turns 5 "重构这个模块"

# JSON 输出
claude -p --output-format json "分析代码库"

GitHub Actions 集成例子

- 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
↑/↓命令历史

完整配置示例

{
  "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/CDpermissions.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

  1. Planning Mode 会慢一点(多一步审批),但对复杂任务值得
  2. Auto Mode 需要额外 token 消耗(分类器运行在 Sonnet 4.6 上)
  3. 后台任务 多了会增加认知负担,别开太多(建议 maxConcurrentTasks ≤ 5)
  4. Sandbox + 权限规则 是纵深防御,但配置复杂,小项目可能过度设计

相关文档