高级功能
Claude Code 高级功能完整指南,涵盖规划模式、扩展思考、自动模式、后台任务、权限模式、打印模式(非交互)、会话管理、交互功能、消息通道、语音输入、远程控制、网页会话、桌面应用、任务列表、提示词建议、Git 工作树、沙盒、受管设置和配置。
目录
- 概览
- 规划模式
- 扩展思考
- 自动模式
- 后台任务
- 监控工具(事件驱动流)
- 定时任务
- 权限模式
- 无头模式
- 会话管理
- 交互功能
- TUI 模式(全屏)
- 语音输入
- 消息通道(Channels)
- Chrome 集成
- 远程控制
- 网页会话
- 桌面应用
- 任务列表
- 提示词建议
- Git 工作树
- 沙盒
- 企业受管设置
- 配置与设置
- Agent Teams
- 最佳实践
- 更多资源
概览
Claude Code 的高级功能把基础能力扩展到了规划、推理、自动化和控制层面。它们能支持更复杂的开发任务、代码审查、自动化流程以及多会话管理。
核心高级功能包括:
| 功能 | 说明 |
|---|---|
| 规划模式 | 先写详细实现计划,再开始编码 |
| 扩展思考 | 对复杂问题进行更深入的推理 |
| 自动模式 | 后台安全分类器在执行前审查每个动作(研究预览) |
| 后台任务 | 长时间任务不阻塞对话 |
| 权限模式 | 控制 Claude 可以做什么(default、acceptEdits、plan、auto、dontAsk、bypassPermissions) |
| 打印模式 | 非交互式运行,适合自动化和 CI/CD(claude -p) |
| 会话管理 | 管理多个会话 |
| 交互功能 | 快捷键、多行输入、历史记录 |
| 语音输入 | 按住说话,支持 20 种语言的语音识别 |
| 消息通道 | MCP server 向运行中的会话推送消息(研究预览) |
| 远程控制 | 从 Claude.ai 或 Claude app 控制本地会话 |
| 网页会话 | 在浏览器中运行 Claude Code |
| 桌面应用 | 支持可视化 diff 审查和多会话的独立应用 |
| 任务列表 | 跨上下文压缩持久跟踪任务 |
| 提示词建议 | 根据上下文智能推荐命令 |
| Git 工作树 | 隔离的 worktree 分支,适合并行工作 |
| 沙盒 | 操作系统级文件系统和网络隔离 |
| 企业受管设置 | 通过 plist、Registry 或受管文件进行企业部署 |
| 配置 | 用 JSON 配置文件定制行为 |
规划模式
规划模式允许 Claude 在真正实现前先梳理复杂任务,生成一份你可以审阅并批准的详细计划。
什么是规划模式?
规划模式是一个两阶段流程:
- 规划阶段:Claude 分析任务并生成详细实现计划
- 实现阶段:在你批准后,Claude 执行计划
什么时候使用规划模式
| 适合 | 不建议 |
|---|---|
| 复杂的多文件重构 | 简单 bug 修复 |
| 新功能开发 | 格式化修改 |
| 架构调整 | 单文件编辑 |
| 数据库迁移 | 快速查询 |
| 大型 API 重设计 |
启用方式
斜杠命令:
/plan Implement user authentication systemCLI 参数:
claude --permission-mode plan设为默认:
{
"permissions": {
"defaultMode": "plan"
}
}快捷键:
Shift + Tab- 切换权限模式(包括 plan)Alt + M- 切换权限模式(Windows/Linux)
好处
- 结构化实施方式:把实现步骤拆得更清楚
- 审阅和批准:先看计划,再执行
- 风险识别:先发现潜在问题
- 阶段清晰:有明确的里程碑和阶段划分
示例:功能实现
User: /plan Add a real-time notification system
Claude: 我会为实时通知系统制定计划。
## 实现计划
### 阶段 1:基础设施
1. 安装 WebSocket 库(socket.io)
2. 搭建 WebSocket server
3. 配置连接管理
### 阶段 2:后端
4. 创建通知服务
5. 实现通知队列
6. 为通知添加数据库 schema
7. 创建 API 端点
### 阶段 3:前端
8. 搭建 WebSocket client
9. 创建通知 UI 组件
10. 实现通知状态管理
11. 添加通知权限
### 阶段 4:测试与发布
12. 编写单元测试
13. 编写集成测试
14. 更新文档
15. 部署到 staging
预计时间:3-4 小时
需要修改的文件:12 个
需要创建的新文件:8 个
准备继续吗?(yes/no/modify plan)计划修改
User: 修改计划 - 先跳过队列,后面再加
Claude: 已更新计划:
[展示删除队列后的计划]
User: 看起来不错,继续
Claude: [按修改后的计划开始实现]配置
# 通过 CLI 启用 plan mode
claude --permission-mode plan
# 或在 REPL 里使用 /plan
/plan Implement user authentication system规划专用模型别名:使用 opusplan,规划用 Opus,执行用 Sonnet:
claude --model opusplan "design and implement the new API"外部编辑计划:按 Ctrl+G 可以把当前计划打开到外部编辑器里进行更详细的修改。
v2.1.112 更新:计划文件现在以生成它的提示词命名(而不是随机词),方便浏览和复用。
v2.1.136 更新 — 规划模式写入拦截无条件生效:规划模式现在会阻止所有文件写入,即使
permissions.allow中存在匹配的Edit(...)规则。之前宽松的Edit(...)规则可能在规划模式下允许写入;这个绕过已被关闭。如果工作流依赖旧行为,请在编辑前退出规划模式(Shift+Tab)。
Ultraplan(云端规划)
v2.1.101 新功能:Ultraplan 现在会在首次调用时自动创建一个 Claude Code on the web 云端环境——无需手动设置,无需等待容器预热。
注意:Ultraplan 是研究预览功能,需要 Claude Code v2.1.91 或更高版本。
/ultraplan 把规划任务从本地 CLI 发送到 Claude Code on the web 会话中运行。Claude 在云端起草计划,你的终端可以继续做其他工作,然后你在浏览器中审阅草稿并选择在哪里执行——在同一云端会话中,或传回终端。
扩展思考
扩展思考让 Claude 在给出解决方案前,花更多时间进行复杂推理。
什么是扩展思考?
这是一个有意识的、分步骤的推理过程,Claude 会:
- 拆解复杂问题
- 比较多种方案
- 评估权衡
- 推导边界情况
启用方式
快捷键:
Option + T(macOS)/Alt + T(Windows/Linux)- 切换扩展思考
自动启用:
- 对所有模型默认开启(Opus 4.7、Sonnet 4.6、Haiku 4.5)
- Opus 4.7:自适应推理,effort 等级为
low(○)、medium(◐)、high(●)、xhigh(仅 Opus 4.7,默认)、max。Opus 4.6 和 Sonnet 4.6 支持low、medium、high、max(不支持xhigh)。Opus 4.7 具有 100 万 token 原生上下文窗口(1M 上下文修复在 v2.1.117——之前/context对 Opus 4.7 误算了 200K 窗口并触发过早自动压缩)。从 v2.1.129 起,/context的可视化仅在 UI 中显示,不再泄露到对话上下文(每次调用节省约 1.6k token),所以可以放心频繁调用/context - Pro/Max 订阅者在 Opus 4.6 / Sonnet 4.6 上:v2.1.117 中默认 effort 从
medium提升到high - 其他模型:固定预算最高 31,999 token
配置方法:
- 切换:
Alt+T/Option+T,或通过/config - 查看推理:
Ctrl+O(详细模式) - 设置 effort:
/effort命令或--effort标志
自定义预算:
export MAX_THINKING_TOKENS=1024Effort 等级(Opus 4.7、Opus 4.6、Sonnet 4.6 支持):
export CLAUDE_CODE_EFFORT_LEVEL=xhigh # low (○), medium (◐), high (●), xhigh (仅 Opus 4.7,默认), 或 maxCLI 标志:
claude --effort high "complex architectural review"斜杠命令:
/effort high注意:提示词中的关键词 “ultrathink” 会激活深度推理模式。effort 等级
low、medium、high和max在 Opus 4.7、Opus 4.6 和 Sonnet 4.6 上支持。xhigh(Opus 4.7 默认)仅限 Opus 4.7。
好处
- 更适合复杂问题
- 更容易发现边界条件
- 便于比较多个方案
- 输出通常更稳健
示例:架构决策
User: ultrathink Should we use microservices or a monolith for our e-commerce platform?
Claude: 让我仔细思考这个架构决策...
## 背景分析
- 团队规模:5 名开发人员
- 预期流量:初期 1 万日活用户
- 需要扩展到 10 万+ 用户
- DevOps 资源有限
- 6 个月 MVP 时间线
## 方案 1:微服务
优点:
+ 独立扩展
+ 技术灵活性
+ 团队独立性
+ 故障隔离
缺点:
- 运维复杂性
- 网络开销
- 需要分布式追踪
- 需要 DevOps 专业知识
- 初始开发较慢
## 方案 2:单体应用
优点:
+ 部署更简单
+ 初始开发更快
+ 调试更容易
+ 运维开销更低
+ 单一代码库
缺点:
- 后期扩展困难
- 全有或全无部署
- 技术锁定
- 可能出现紧耦合
## 决策因素
1. 团队规模(5 人)→ 倾向单体
2. DevOps 资源(有限)→ 倾向单体
3. 时间线(6 个月)→ 倾向单体
4. 未来扩展(10 万用户)→ 单体 + 缓存可实现
5. 复杂度预算 → 有限
## 建议
从**模块化单体**开始:
- 单一部署单元
- 清晰的模块边界
- 模块间干净的接口
- 为未来需要时提取微服务做好准备
这给你:
✓ 快速的初始开发
✓ 低运维复杂度
✓ 后期可提取服务的选项
✓ 清晰的架构
迁移路径:当用户达到 5 万+ 或特定模块需要独立扩展时,将这些模块提取为微服务。配置
{
"thinking": {
"enabled": true,
"effort": "high"
}
}自动模式
自动模式是研究预览权限模式(2026 年 3 月),使用后台安全分类器在执行前审查每个动作。它允许 Claude 自主工作,同时阻止危险操作。
要求
| 要求 | 说明 |
|---|---|
| 套餐 | Team、Enterprise 或 API(Pro 或 Max 套餐不可用) |
| 模型 | Claude Sonnet 4.6 或 Opus 4.7 |
| 提供商 | 仅 Anthropic API(不支持 Bedrock、Vertex 或 Foundry) |
| 分类器 | 在 Claude Sonnet 4.6 上运行(增加额外 token 成本) |
启用方式
# 解锁 auto mode(Max 订阅者在 Opus 4.7 上不再需要此标志——可直接使用)
claude --enable-auto-mode
# 然后在 REPL 中用 Shift+Tab 切换到它v2.1.112 更新:自动模式不再需要
--enable-auto-mode标志。Max 订阅者可在 Opus 4.7 上直接使用。
或设置为默认权限模式:
claude --permission-mode auto通过配置设置:
{
"permissions": {
"defaultMode": "auto"
}
}分类器工作原理
后台分类器按以下决策顺序评估每个动作:
- 允许/拒绝规则 — 首先检查显式权限规则
- 只读/编辑自动批准 — 文件读取和编辑自动通过
- 分类器 — 后台分类器审查动作
- 回退 — 连续 3 次或总计 20 次阻止后,回退到提示用户
默认阻止的动作
| 被阻止的动作 | 示例 |
|---|---|
| 管道到 shell 安装 | curl | bash |
| 向外部发送敏感数据 | 通过网络发送 API 密钥、凭据 |
| 生产部署 | 针对生产环境的部署命令 |
| 批量删除 | 对大目录执行 rm -rf |
| IAM 变更 | 权限和角色修改 |
| 强制推送到 main | git push --force origin main |
默认允许的动作
| 允许的动作 | 示例 |
|---|---|
| 本地文件操作 | 读取、写入、编辑项目文件 |
| 声明的依赖安装 | npm install、pip install(来自 manifest) |
| 只读 HTTP | curl 获取文档 |
| 推送到当前分支 | git push origin feature-branch |
配置自动模式
打印默认规则为 JSON:
claude auto-mode defaults配置可信基础设施:通过 autoMode.environment 受管设置为企业部署配置可信 CI/CD 环境、部署目标和基础设施模式。
使用 "$defaults" 扩展默认值(v2.1.118)
从 v2.1.118 起,autoMode.allow、autoMode.soft_deny 和 autoMode.environment 接受 "$defaults" 标记,将你的规则追加到内置列表而不是替换它。在 v2.1.118 之前,任何用户定义的数组都会静默覆盖内置值。
无条件阻止 autoMode.hard_deny(v2.1.136)
autoMode.hard_deny(v2.1.136+)是一个分类器规则数组,无论推断的用户意图如何都会阻止一类动作。用于必须在自动模式下永不运行的动作——例如对根路径执行 rm -rf 或对受保护分支执行 git push --force。与 soft_deny 不同,hard-deny 规则不可由分类器协商。
{
"autoMode": {
"hard_deny": ["Bash(rm -rf /:*)", "Bash(git push --force*)"]
}
}之前(替换内置值 — v2.1.118 之前的行为):
{
"autoMode": {
"allow": ["Bash(gh pr list:*)"]
}
}之后(扩展内置值 — v2.1.118+):
{
"autoMode": {
"allow": ["$defaults", "Bash(gh pr list:*)"],
"soft_deny": ["$defaults", "Bash(kubectl delete:*)"],
"environment": ["$defaults", "trusted-ci.internal"]
}
}使用 "$defaults" 保留发布的基线规则,同时在上面叠加组织或项目特定的规则。
回退行为
当分类器不确定时,自动模式会回退到提示用户:
- 连续 3 次分类器阻止后
- 会话中总计 20 次分类器阻止后
这确保当分类器无法自信地批准动作时,用户始终保留控制权。
预置自动模式等效权限(无需 Team 套餐)
如果你没有 Team 套餐或想要更简单的方法(无需后台分类器),可以用保守的安全权限基线填充 ~/.claude/settings.json。脚本从只读和本地检查规则开始,然后让你在需要时选择加入编辑、测试、本地 git 写入、包安装和 GitHub 写入操作。
文件: 10-advanced-features/setup-auto-mode-permissions.py
# 预览将要添加的内容(不写入任何更改)
python3 10-advanced-features/setup-auto-mode-permissions.py --dry-run
# 应用保守基线
python3 10-advanced-features/setup-auto-mode-permissions.py
# 只在需要时添加更多能力
python3 10-advanced-features/setup-auto-mode-permissions.py --include-edits --include-tests
python3 10-advanced-features/setup-auto-mode-permissions.py --include-git-write --include-packages脚本添加以下类别的规则:
| 类别 | 示例 |
|---|---|
| 核心只读工具 | Read(*)、Glob(*)、Grep(*)、Agent(*)、WebSearch(*)、WebFetch(*) |
| 本地检查 | Bash(git status:*)、Bash(git log:*)、Bash(git diff:*)、Bash(cat:*) |
| 可选编辑 | Edit(*)、Write(*)、NotebookEdit(*) |
| 可选测试/构建 | Bash(pytest:*)、Bash(python3 -m pytest:*)、Bash(cargo test:*) |
| 可选 git 写入 | Bash(git add:*)、Bash(git commit:*)、Bash(git stash:*) |
| Git(本地写入) | Bash(git add:*)、Bash(git commit:*)、Bash(git checkout:*) |
| 包管理器 | Bash(npm install:*)、Bash(pip install:*)、Bash(cargo build:*) |
| 构建和测试 | Bash(make:*)、Bash(pytest:*)、Bash(go test:*) |
| 常用 shell | Bash(ls:*)、Bash(cat:*)、Bash(find:*)、Bash(cp:*)、Bash(mv:*) |
| GitHub CLI | Bash(gh pr view:*)、Bash(gh pr create:*)、Bash(gh issue list:*) |
危险操作(rm -rf、sudo、强制推送、DROP TABLE、terraform destroy 等)被有意排除。脚本是幂等的——运行两次不会重复规则。
后台任务
后台任务允许长时间运行的操作在不阻塞对话的情况下执行。
什么是后台任务?
后台任务适合长时间运行的工作,例如构建、测试、下载、扫描或并行分析。你可以把它们交给 Claude,让对话继续保持响应。
基本用法
User: Run tests in background
Claude: Started task bg-1234
/task list # 显示所有任务
/task status bg-1234 # 查看进度
/task show bg-1234 # 查看输出
/task cancel bg-1234 # 取消任务启动后台任务
User: Run the full test suite in the background
Claude: Starting tests in background (task-id: bg-1234)
You can continue working while tests run.
[你可以继续对话]
User: Meanwhile, let's refactor the auth module
Claude: [在测试后台运行时处理认证模块]
[稍后,测试完成时]
Claude: 📢 Background task bg-1234 completed:
✅ 245 tests passed
❌ 3 tests failed
View results: /task show bg-1234管理后台任务
列出活动任务:
User: /task list
Active background tasks:
1. [bg-1234] Running tests (50% complete, 2min remaining)
2. [bg-1235] Building Docker image (25% complete, 8min remaining)
3. [bg-1236] Deploying to staging (90% complete, 30sec remaining)查看任务状态:
User: /task status bg-1234
Task bg-1234: Running tests
Status: In progress
Progress: 120/245 tests (49%)
Started: 2025-11-08 10:30:15
Estimated completion: 2025-11-08 10:34:22查看任务输出:
User: /task show bg-1234
[显示测试运行的实时输出]取消任务:
User: /task cancel bg-1234
Cancelled background task bg-1234示例:并行开发
User: Run the build in the background
Claude: Starting build... (task-id: bg-5001)
User: Also run the linter in background
Claude: Starting linter... (task-id: bg-5002)
User: While those run, let's implement the new API endpoint
Claude: [在构建和 lint 运行时实现 API 端点]
[10 分钟后]
Claude: 📢 Build completed successfully (bg-5001)
📢 Linter found 12 issues (bg-5002)
User: Show me the linter issues
Claude: [显示 bg-5002 的 lint 输出]配置
{
"backgroundTasks": {
"enabled": true,
"maxConcurrentTasks": 5,
"notifyOnCompletion": true,
"autoCleanup": true,
"logOutput": true
}
}监控工具(事件驱动流)
v2.1.98 新功能:监控工具让 Claude 监视后台命令的 stdout,在匹配事件出现时立即反应——取代轮询循环和
sleep等待长时间运行的进程。
监控工具附加到任何写入 stdout 的 shell 命令。命令的每一行 stdout 都成为唤醒会话的通知。Claude 指定命令;运行时流式传输输出并在事件触发时立即传递。
为什么重要
使用 /loop 或 sleep 轮询每个周期都会消耗一个完整的 API 往返,无论是否有变化。监控工具在事件触发前保持静默,在命令安静时消耗零 token。当事件发生时,Claude 立即反应——无需等待下一次轮询才发现。对于运行超过几分钟的任何内容,这都比轮询循环更便宜、更快。
两种常见模式
流过滤器监视长时间运行源的持续输出。命令永远运行;每一行匹配的行都是事件。
tail -f /var/log/app.log | grep --line-buffered "ERROR"轮询发出过滤器定期检查源,仅在变化时发出。用于 API、数据库或任何没有原生流的内容。
last=$(date -u +%Y-%m-%dT%H:%M:%SZ)
while true; do
gh api "repos/owner/repo/issues/123/comments?since=$last" || true
last=$(date -u +%Y-%m-%dT%H:%M:%SZ)
sleep 30
done具体示例
“启动我的开发服务器并监视错误。” Claude 将服务器作为后台任务启动,附加监控过滤器(tail -F server.log | grep --line-buffered -E "ERROR|FATAL"),会话保持安静。当日志中出现错误行时,Claude 醒来,读取错误,可以反应——重启服务器、修复 bug 或向你显示——无需你手动检查。
警告:管道到
grep时,始终使用grep --line-buffered。没有它,grep 以 4KB 块缓冲 stdout,在低流量流上可能延迟事件数分钟。这是监控工具实践中 #1 的问题——如果你的过滤器在不应该沉默时沉默,首先检查--line-buffered标志。
定时任务
定时任务让 Claude 按计划重复执行某些提示词或任务。任务是会话范围的——在 Claude Code 激活时运行,会话结束时清除。自 v2.1.72+ 起可用。
/loop 命令
# 显式间隔
/loop 5m check if the deployment finished
# 自然语言
/loop check build status every 30 minutes也支持标准 5 字段 cron 表达式用于精确调度。
一次性提醒
设置在特定时间触发一次的提醒:
remind me at 3pm to push the release branch
in 45 minutes, run the integration tests管理定时任务
| 工具 | 说明 |
|---|---|
CronCreate |
创建新的定时任务 |
CronList |
列出所有活动的定时任务。从 v2.1.136 起,输出还包括限定符和计划的提示词内容,无需打开任务即可审计每个 cron 将运行什么 |
CronDelete |
删除定时任务 |
限制和行为:
| 方面 | 说明 |
|---|---|
| 最大任务数 | 每会话最多 50 个定时任务 |
| 范围 | 会话范围——会话结束时清除 |
| 循环任务过期 | 3 天后自动过期 |
| 触发条件 | 仅在 Claude Code 运行时触发——错过的触发不会补执行 |
| 循环抖动 | 间隔的 10%(最长 15 分钟) |
| 一次性抖动 | 在 :00/:30 边界上最长 90 秒 |
| 持久化 | 跨重启不持久化 |
云端定时任务
使用 /schedule 创建在 Anthropic 基础设施上运行的云端定时任务:
/schedule daily at 9am run the test suite and report failures云端定时任务跨重启持久化,不需要本地运行 Claude Code。
禁用定时任务
export CLAUDE_CODE_DISABLE_CRON=1示例:监控部署
/loop 5m check the deployment status of the staging environment.
If the deploy succeeded, notify me and stop looping.
If it failed, show the error logs.提示:定时任务是会话范围的。对于跨重启持久化的自动化,请使用 CI/CD 流水线、GitHub Actions 或桌面应用定时任务。
权限模式
权限模式控制 Claude 可以不经明确批准就执行哪些操作。
可用权限模式
| 模式 | 行为 |
|---|---|
default |
仅读取文件;所有其他操作提示 |
acceptEdits |
读取和编辑文件;命令需要提示 |
plan |
仅读取文件(研究模式,不编辑) |
auto |
所有操作带后台安全分类器检查(研究预览) |
bypassPermissions |
所有操作,无权限检查(危险) |
dontAsk |
仅执行预批准的工具;所有其他工具被拒绝 |
在 CLI 中用 Shift+Tab 循环切换模式。用 --permission-mode 标志或 permissions.defaultMode 设置设为默认。
--dangerously-skip-permissions扩展路径覆盖(v2.1.121、v2.1.126):--dangerously-skip-permissionsCLI 标志(及等效的bypassPermissions模式)现在绕过更广泛允许列表的提示——.claude/skills/、.claude/agents/、.claude/commands/、.claude/、.git/、.vscode/和 shell 配置文件。灾难性删除命令(rm -rf /等)无论模式如何仍会提示。将此标志视为比以前更锋利的工具;仅在一次性沙盒中使用。
Windows shell 检测(v2.1.120、v2.1.126):Git for Windows / Git Bash 不再必需。当 Git Bash 缺失时,Claude Code 使用 PowerShell 作为 shell 工具。从 v2.1.126 起,当 PowerShell 工具启用时,PowerShell 是主要 shell,检测覆盖通过 Microsoft Store、MSI(无 PATH)或作为
.NET 全局工具安装的 PowerShell 7。
启用方式
快捷键:
Shift + Tab # 循环切换所有 6 种模式斜杠命令:
/plan # 进入计划模式CLI 标志:
claude --permission-mode plan
claude --permission-mode auto设置:
{
"permissions": {
"defaultMode": "auto"
}
}示例
Default 模式
对重要操作请求确认:
User: Fix the bug in auth.ts
Claude: I need to modify src/auth.ts to fix the bug.
The change will update the password validation logic.
Approve this change? (yes/no/show)Plan 模式
执行前审阅实现计划:
User: /plan Implement user authentication system
Claude: I'll create a plan for implementing authentication.
## Implementation Plan
[详细的阶段和步骤计划]
Ready to proceed? (yes/no/modify)Accept Edits 模式
自动接受文件修改:
User: acceptEdits
User: Fix the bug in auth.ts
Claude: [直接修改,不询问]使用场景
代码审查:
User: claude --permission-mode plan
User: Review this PR and suggest improvements
Claude: [读取代码,提供反馈,但不能修改]结对编程:
User: claude --permission-mode default
User: Let's implement the feature together
Claude: [每次更改前请求批准]自动化任务:
User: claude --permission-mode acceptEdits
User: Fix all linting issues in the codebase
Claude: [自动接受文件编辑,不询问]无头模式
打印模式(claude -p)允许 Claude Code 在没有交互式输入的情况下运行,非常适合自动化和 CI/CD。这是非交互模式,取代了旧的 --headless 标志。
什么是打印模式?
打印模式支持:
- 自动化脚本执行
- CI/CD 集成
- 批处理
- 定时任务
运行打印模式
# 运行指定任务
claude -p "Run all tests"
# 处理管道内容
cat error.log | claude -p "Analyze these errors"
# CI/CD 集成(GitHub Actions)
- name: AI Code Review
run: claude -p "Review PR"更多使用示例
# 运行指定任务并捕获输出
claude -p "Run all tests and generate coverage report"
# 结构化输出
claude -p --output-format json "Analyze code quality"
# 从标准输入接收
echo "Analyze code quality" | claude -p "explain this"示例:CI/CD 集成
GitHub Actions:
# .github/workflows/code-review.yml
name: AI Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Run Claude Code Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
claude -p --output-format json \
--max-turns 3 \
"Review this PR for:
- Code quality issues
- Security vulnerabilities
- Performance concerns
- Test coverage
Output results as JSON" > review.json
- name: Post Review Comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const review = JSON.parse(fs.readFileSync('review.json', 'utf8'));
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: JSON.stringify(review, null, 2)
});配置
# 限制自主回合数
claude -p --max-turns 5 "refactor this module"
# 结构化 JSON 输出
claude -p --output-format json "analyze this codebase"
# 带 schema 验证
claude -p --json-schema '{"type":"object","properties":{"issues":{"type":"array"}}}' \
"find bugs in this code"
# 禁用会话持久化
claude -p --no-session-persistence "one-off analysis"会话管理
会话管理用于在多个会话之间恢复、重命名、分叉和持续工作。
常用命令
| 命令 | 说明 |
|---|---|
/resume |
通过 ID 或名称恢复会话 |
/rename |
命名当前会话 |
/fork |
分叉当前会话到新分支 |
claude -c |
继续最近的对话 |
claude -r "session" |
通过名称或 ID 恢复会话 |
恢复会话
继续最近的对话:
claude -c恢复指定名称的会话:
claude -r "auth-refactor" "finish this PR"重命名当前会话(在 REPL 内):
/rename auth-refactor分叉会话
分叉会话以尝试替代方法而不丢失原始会话:
/fork或从 CLI:
claude --resume auth-refactor --fork-session "try OAuth instead"会话持久化
会话自动保存,可以恢复:
# 继续最近的对话
claude -c
# 通过名称或 ID 恢复指定会话
claude -r "auth-refactor"
# 恢复并分叉用于实验
claude --resume auth-refactor --fork-session "alternative approach"会话摘要(v2.1.108)
当你离开后返回会话时,Claude 可以显示完成内容的简要摘要。这对于禁用遥测的用户(Bedrock、Vertex、Foundry 用户)默认启用。
OTEL 遥测 — 重新启用反馈调查(v2.1.136+):捕获 OpenTelemetry 数据的组织可以通过设置
CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1重新启用 Anthropic 的会话质量调查。调查在 OTEL 部署中默认关闭,因为它之前被重定向到遥测管道之外。
控制摘要行为:
/recap # 手动触发摘要
/config # 切换自动摘要开/关或通过环境变量:
CLAUDE_CODE_ENABLE_AWAY_SUMMARY=0 claude # 禁用摘要
CLAUDE_CODE_ENABLE_AWAY_SUMMARY=1 claude # 强制启用摘要交互功能
快捷键
Claude Code 支持快捷键以提高效率。以下是官方文档的完整参考:
| 快捷键 | 说明 |
|---|---|
Ctrl+C |
取消当前输入/生成 |
Ctrl+D |
退出 Claude Code |
Ctrl+G |
在外部编辑器中编辑计划 |
Ctrl+L |
清除终端屏幕 |
Ctrl+O |
切换详细输出(查看推理) |
Ctrl+R |
反向搜索历史。默认为所有项目中的所有提示(v2.1.129+);在选择器中按 Ctrl+S 可缩小到当前项目。早期版本默认为仅项目 |
Ctrl+T |
切换任务列表视图 |
Ctrl+B |
后台运行任务 |
Esc+Esc |
回退代码/对话 |
Shift+Tab / Alt+M |
切换权限模式 |
Option+P / Alt+P |
切换模型 |
Option+T / Alt+T |
切换扩展思考 |
行编辑(标准 readline 快捷键):
| 快捷键 | 操作 |
|---|---|
Ctrl + A |
移动到行首 |
Ctrl + E |
移动到行尾 |
Ctrl + K |
剪切到行尾 |
Ctrl + U |
剪切到行首 |
Ctrl + W |
向后删除单词 |
Ctrl + Y |
粘贴 |
Tab |
自动补全 |
↑ / ↓ |
命令历史 |
自定义快捷键
通过运行 /keybindings 创建自定义快捷键,这会打开 ~/.claude/keybindings.json 进行编辑(v2.1.18+)。
配置格式:
{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+e": "chat:externalEditor",
"ctrl+u": null,
"ctrl+k ctrl+s": "chat:stash"
}
},
{
"context": "Confirmation",
"bindings": {
"ctrl+a": "confirmation:yes"
}
}
]
}将绑定设为 null 以取消绑定默认快捷键。
可用上下文
快捷键绑定到特定 UI 上下文:
| 上下文 | 关键操作 |
|---|---|
| Chat | submit、cancel、cycleMode、modelPicker、thinkingToggle、undo、externalEditor、stash、imagePaste |
| Confirmation | yes、no、previous、next、nextField、cycleMode、toggleExplanation |
| Global | interrupt、exit、toggleTodos、toggleTranscript |
| Autocomplete | accept、dismiss、next、previous |
| HistorySearch | search、previous、next |
| Settings | 上下文特定的设置导航 |
| Tabs | 标签页切换和管理 |
| Help | 帮助面板导航 |
共有 18 个上下文,包括 Transcript、Task、ThemePicker、Attachments、Footer、MessageSelector、DiffDialog、ModelPicker 和 Select。
Chord 支持
快捷键绑定支持 chord 序列(多键组合):
"ctrl+k ctrl+s" → 两键序列:先按 ctrl+k,再按 ctrl+s
"ctrl+shift+p" → 同时按修饰键按键语法:
- 修饰符:
ctrl、alt(或opt)、shift、meta(或cmd) - 大写意味着 Shift:
K等同于shift+k - 特殊键:
escape、enter、return、tab、space、backspace、delete、方向键
保留键与冲突键
| 键 | 状态 | 说明 |
|---|---|---|
Ctrl+C |
保留 | 不能重新绑定(中断) |
Ctrl+D |
保留 | 不能重新绑定(退出) |
Ctrl+B |
终端冲突 | tmux 前缀键 |
Ctrl+A |
终端冲突 | GNU Screen 前缀键 |
Ctrl+Z |
终端冲突 | 进程挂起 |
提示:如果快捷键不工作,检查与终端模拟器或复用器的冲突。
Tab 补全
Claude Code 提供智能 tab 补全:
User: /rew<TAB>
→ /rewind
User: /plu<TAB>
→ /plugin
User: /plugin <TAB>
→ /plugin install
→ /plugin enable
→ /plugin disable命令历史
访问之前的命令:
User: <↑> # 上一个命令
User: <↓> # 下一个命令
User: Ctrl+R # 搜索历史
(reverse-i-search)`test': run all tests多行输入
对于复杂查询,使用多行模式:
User: \
> Long complex prompt
> spanning multiple lines
> \end示例:
User: \
> Implement a user authentication system
> with the following requirements:
> - JWT tokens
> - Email verification
> - Password reset
> - 2FA support
> \end
Claude: [处理多行请求]行内编辑
发送前编辑命令:
User: Deploy to prodcution<Backspace><Backspace>uction
[发送前就地编辑]Vim 模式
启用 Vi/Vim 快捷键进行文本编辑:
启用:
- 通过
/config(切换"Editor / Vim mode")或在~/.claude/settings.json中设置editorMode: "vim"。独立的/vim斜杠命令已移除(参见 issue #43370);vim 模式现在是配置驱动的 - 用
Esc切换到 NORMAL 模式,i/a/o切换到 INSERT 模式,v切换到 VISUAL 模式,V切换到 VISUAL-LINE 模式(v2.1.118+)
导航键:
h/l- 左/右移动j/k- 下/上移动w/b/e- 按单词移动0/$- 移动到行首/行尾gg/G- 跳转到文本开头/结尾
文本对象:
iw/aw- 单词内/周围i"/a"- 引号内/周围i(/a(- 括号内/周围
可视模式(v2.1.118+):
| 键 | 模式 | 行为 |
|---|---|---|
v |
Visual | 字符级选择带可视化反馈;用动作键扩展 |
V |
Visual-line | 行级选择;总是选择整行 |
y |
Yank | 复制当前可视选择 |
d / x |
Delete | 删除当前可视选择 |
c |
Change | 删除选择并进入 INSERT 模式 |
Esc |
Exit | 返回 NORMAL 模式 |
可视选择在输入字段中高亮显示,可以在提交操作符前准确看到将被复制、删除或更改的内容。
Bash 模式
用 ! 前缀直接执行 shell 命令:
! npm test
! git status
! cat src/index.js用于快速执行命令,无需切换上下文。
TUI 模式(全屏)
v2.1.110 新功能
TUI(文本用户界面)模式以无闪烁输出渲染 Claude Code 全屏——非常适合终端复用器如 tmux 或 iTerm2 分屏。
启用 TUI 模式
用 /tui 命令切换 TUI 模式,或用 --tui 标志启动:
/tui # 在会话内切换
claude --tui # 直接以 TUI 模式启动配置
| 设置 | 说明 | 默认值 |
|---|---|---|
autoScrollEnabled |
自动滚动到最新消息 | true |
通过 /config 或 settings.json 禁用自动滚动:
{
"autoScrollEnabled": false
}焦点视图
/focus 命令切换焦点视图——无干扰显示,仅显示最相关的输出。Ctrl+O 现在仅在正常和详细转录之间切换(焦点视图是 /focus)。
语音输入
语音输入提供按住说话的语音输入,让你可以口述提示词而不是打字。
启用语音输入
/voice功能
| 功能 | 说明 |
|---|---|
| 按住说话 | 按住键录音,松开发送 |
| 20 种语言 | 语音转文本支持 20 种语言 |
| 自定义快捷键 | 通过 /keybindings 配置按住说话键 |
| 账户要求 | 需要 Claude.ai 账户用于 STT 处理 |
配置
在快捷键文件(/keybindings)中自定义按住说话快捷键。语音输入使用你的 Claude.ai 账户进行语音转文本处理。
消息通道(Channels)
消息通道是研究预览功能,通过 MCP server 将外部服务的事件推送到运行中的 Claude Code 会话。来源包括 Telegram、Discord、iMessage 和任意 webhook,允许 Claude 响应实时通知而无需轮询。
认证(v2.1.128+):
--channels现在支持 Pro/Max OAuth 和 API 密钥(控制台)认证。早期版本需要 OAuth。
订阅通道
# 启动时订阅通道插件
claude --channels discord,telegram
# 订阅多个来源
claude --channels discord,telegram,imessage,webhooks支持的集成
| 集成 | 说明 |
|---|---|
| Discord | 在会话中接收和响应 Discord 消息 |
| Telegram | 在会话中接收和响应 Telegram 消息 |
| iMessage | 在会话中接收 iMessage 通知 |
| Webhooks | 从任意 webhook 来源接收事件 |
配置
使用 --channels 标志在启动时配置通道。对于企业部署,使用受管设置控制允许的通道插件:
{
"allowedChannelPlugins": ["discord", "telegram"]
}allowedChannelPlugins 受管设置控制组织内允许的通道插件。
工作方式
- MCP server 作为通道插件连接到外部服务
- 传入的消息和事件被推送到活动的 Claude Code 会话
- Claude 可以在会话上下文中读取和响应消息
- 通道插件必须通过
allowedChannelPlugins受管设置批准 - 无需轮询——事件实时推送
Chrome 集成
Chrome 集成将 Claude Code 连接到你的 Chrome 或 Microsoft Edge 浏览器,用于实时网页自动化和调试。这是 beta 功能,自 v2.0.73+ 起可用(Edge 支持在 v1.0.36+ 中添加)。
启用 Chrome 集成
启动时:
claude --chrome # 启用 Chrome 连接
claude --no-chrome # 禁用 Chrome 连接会话内:
/chrome选择"Enabled by default"为所有未来会话激活 Chrome 集成。Claude Code 共享浏览器的登录状态,因此可以与已认证的 Web 应用交互。
能力
| 能力 | 说明 |
|---|---|
| 实时调试 | 读取控制台日志、检查 DOM 元素、实时调试 JavaScript |
| 设计验证 | 将渲染的页面与设计模型对比 |
| 表单验证 | 测试表单提交、输入验证和错误处理 |
| Web 应用测试 | 与已认证的应用交互(Gmail、Google Docs、Notion 等) |
| 数据提取 | 从网页抓取和处理内容 |
| 会话录制 | 将浏览器交互录制为 GIF 文件 |
站点级权限
Chrome 扩展管理每个站点的访问。可以随时通过扩展弹出窗口为特定站点授予或撤销访问权限。Claude Code 仅与你明确允许的站点交互。
工作方式
Claude Code 在可见窗口中控制浏览器——你可以实时观看操作。当浏览器遇到登录页面或 CAPTCHA 时,Claude 暂停并等待你手动处理,然后继续。
已知限制
| 限制 | 说明 |
|---|---|
| 浏览器支持 | 仅 Chrome 和 Edge——不支持 Brave、Arc 和其他 Chromium 浏览器 |
| WSL | Windows Subsystem for Linux 中不可用 |
| 第三方提供商 | 不支持 Bedrock、Vertex 或 Foundry API 提供商 |
| Service worker 空闲 | Chrome 扩展 service worker 在长时间会话期间可能空闲 |
提示:Chrome 集成是 beta 功能。浏览器支持可能在未来版本中扩展。
远程控制
远程控制让你可以从手机、平板或任何浏览器继续本地运行的 Claude Code 会话。你的本地会话在你的机器上继续运行——没有任何东西移动到云端。Pro、Max、Team 和 Enterprise 套餐可用(v2.1.51+)。
启动远程控制
从 CLI:
# 使用默认会话名启动
claude remote-control
# 使用自定义名称
claude remote-control --name "Auth Refactor"会话内:
/remote-control
/remote-control "Auth Refactor"可用标志:
| 标志 | 说明 |
|---|---|
--name "title" |
自定义会话标题,便于识别 |
--verbose |
显示详细连接日志 |
--sandbox |
启用文件系统和网络隔离 |
--no-sandbox |
禁用沙盒(默认) |
连接到会话
从其他设备连接的三种方式:
- 会话 URL — 会话启动时打印到终端;在任何浏览器中打开
- 二维码 — 启动后按
空格显示可扫描的二维码 - 按名称查找 — 在 claude.ai/code 或 Claude 移动应用(iOS/Android)中浏览会话
安全性
| 安全措施 | 说明 |
|---|---|
| 无入站端口 | 你的机器上没有打开端口 |
| 仅出站 HTTPS | 通过 TLS |
| 范围凭据 | 多个短期、窄范围的令牌 |
| 会话隔离 | 每个远程会话独立 |
Remote Control vs 网页版
| 方面 | Remote Control | 网页版 |
|---|---|---|
| 执行 | 在你的机器上运行 | 在 Anthropic 云端运行 |
| 本地工具 | 完全访问本地 MCP 服务器、文件和 CLI | 无本地依赖 |
| 用例 | 从另一设备继续本地工作 | 从任何浏览器开始 |
限制
| 限制 | 说明 |
|---|---|
| 会话数 | 每个 Claude Code 实例一个远程会话 |
| 终端 | 主机机器上的终端必须保持打开 |
| 超时 | 如果网络不可达,会话在约 10 分钟后超时 |
使用场景
- 离开办公桌时从移动设备或平板控制 Claude Code
- 使用更丰富的 claude.ai UI 同时保持本地工具执行
- 使用完整的本地开发环境进行快速代码审查
推送通知(v2.1.110)
当 Remote Control 激活且 /config 中启用"Push when Claude decides"时,Claude 可以向你的手机发送移动推送通知——例如长任务完成或需要输入时。
启用方式:
- 激活 Remote Control:
/remote-control或claude --rc - 打开
/config并启用 Push when Claude decide
推送通知需要 Claude 订阅和 Claude 移动应用。
禁用 Remote Control(disableRemoteControl,v2.1.128+)
Team 或 Enterprise 计划的管理员可以使用 disableRemoteControl 设置完全阻止 Remote Control。当为 true 时,claude remote-control 和 /remote-control 都拒绝启动。
{
"disableRemoteControl": true
}该设置在受管/策略范围(如 macOS 上的 /Library/Application Support/ClaudeCode/managed-settings.json)中生效,无法被单个用户覆盖。当组织范围需要强制仅本地执行时很有用。
网页会话
网页会话允许你直接在浏览器中运行 Claude Code(claude.ai/code),或从 CLI 创建网页会话。
创建网页会话
# 从 CLI 创建新的网页会话
claude --remote "implement the new API endpoints"这会在 claude.ai 上启动一个 Claude Code 会话,你可以从任何浏览器访问。
在本地恢复网页会话
如果你在网页上启动了会话,想在本地继续:
# 在本地终端恢复网页会话
claude --teleport或在交互式 REPL 中:
/teleport使用场景
- 在一台机器上开始工作,在另一台上继续
- 与团队成员分享会话 URL
- 使用 web UI 进行可视化 diff 审查,然后切换到终端执行
桌面应用
Claude Code 桌面应用提供独立应用程序,支持可视化 diff 审查、并行会话和集成连接器。macOS 和 Windows 可用(Pro、Max、Team 和 Enterprise 套餐)。
安装
从 claude.ai 下载适用于你的平台:
- macOS:通用构建(Apple Silicon 和 Intel)
- Windows:x64 和 ARM64 安装程序
参见 Desktop Quickstart 了解设置说明。
从 CLI 接力
将当前 CLI 会话转移到桌面应用:
/desktop核心功能
| 功能 | 说明 |
|---|---|
| Diff 视图 | 逐文件可视化审阅带内联评论;Claude 读取评论并修改 |
| 应用预览 | 自动启动开发服务器并嵌入浏览器进行实时验证 |
| PR 监控 | GitHub CLI 集成,自动修复 CI 失败并在检查通过时自动合并 |
| 并行会话 | 侧边栏中多个会话,自动 Git worktree 隔离 |
| 定时任务 | 循环任务(每小时、每天、工作日、每周),应用打开时运行 |
| 富渲染 | 代码、markdown 和图表渲染带语法高亮 |
应用预览配置
在 .claude/launch.json 中配置开发服务器行为:
{
"command": "npm run dev",
"port": 3000,
"readyPattern": "ready on",
"persistCookies": true
}连接器
连接外部服务以获得更丰富的上下文:
| 连接器 | 能力 |
|---|---|
| GitHub | PR 监控、issue 跟踪、代码审查 |
| Slack | 通知、频道上下文 |
| Linear | Issue 跟踪、sprint 管理 |
| Notion | 文档、知识库访问 |
| Asana | 任务管理、项目跟踪 |
| Calendar | 日程感知、会议上下文 |
注意:连接器不适用于远程(云端)会话。
远程和 SSH 会话
| 类型 | 说明 |
|---|---|
| 远程会话 | 在 Anthropic 云端基础设施上运行;应用关闭时继续。可从 claude.ai/code 或 Claude 移动应用访问 |
| SSH 会话 | 通过 SSH 连接到远程机器,完全访问远程文件系统和工具。远程机器必须安装 Claude Code |
桌面应用中的权限模式
桌面应用支持与 CLI 相同的 4 种权限模式:
| 模式 | 行为 |
|---|---|
| 询问权限(默认) | 审阅并批准每个编辑和命令 |
| 自动接受编辑 | 文件编辑自动批准;命令需要手动批准 |
| 计划模式 | 任何更改前审阅方法 |
| 绕过权限 | 自动执行(仅限沙盒,管理员控制) |
企业功能
| 功能 | 说明 |
|---|---|
| 管理控制台 | 控制组织的 Code 标签页访问和权限设置 |
| MDM 部署 | 通过 macOS 上的 MDM 或 Windows 上的 MSIX 部署 |
| SSO 集成 | 要求组织成员使用单点登录 |
| 受管设置 | 集中管理团队配置和模型可用性 |
任务列表
任务列表功能提供持久任务跟踪,跨上下文压缩(当对话历史被修剪以适应上下文窗口时)持久保存。
切换任务列表
在会话期间按 Ctrl+T 切换任务列表视图。
持久任务
任务跨上下文压缩持久保存,确保长时间运行的工作项在对话上下文被修剪时不会丢失。这对于复杂的多步实现特别有用。
命名任务目录
使用 CLAUDE_CODE_TASK_LIST_ID 环境变量创建跨会话共享的命名任务目录:
export CLAUDE_CODE_TASK_LIST_ID=my-project-sprint-3这允许多个会话共享同一任务列表,适用于团队工作流或多会话项目。
提示词建议
提示词建议根据你的 git 历史和当前对话上下文显示灰显的示例命令。
工作方式
- 建议显示在输入提示符下方的灰显文本中
- 按
Tab接受建议 - 按
Enter接受并立即提交 - 建议是上下文感知的,从 git 历史和对话状态中提取
禁用提示词建议
export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=falseGit 工作树
Git 工作树允许你在隔离的工作树中启动 Claude Code,支持在不同分支上并行工作,无需 stash 或切换。
在工作树中启动
# 在隔离工作树中启动 Claude Code
claude --worktree
# 或
claude -w工作树位置
工作树创建在:
<repo>/.claude/worktrees/<name>Monorepo 的 sparse checkout
使用 worktree.sparsePaths 设置在 monorepo 中执行稀疏检出,减少磁盘使用和克隆时间:
{
"worktree": {
"sparsePaths": ["packages/my-package", "shared/"]
}
}基础分支引用(worktree.baseRef)
worktree.baseRef(v2.1.133 添加)— 控制 claude --worktree 是从 origin/<default> 还是本地 HEAD 创建分支。
"fresh"(默认)— 从origin/<default-branch>创建分支,忽略本地未推送的提交。这撤销了 v2.1.128 中引入的行为,因此在 v2.1.128 后依赖本地 HEAD 分支的用户必须选择加入"head"— 从本地HEAD创建分支,保留未推送的提交
在 ~/.claude/settings.json 中设置:
{ "worktree": { "baseRef": "head" } }工作树工具和 Hooks
| 项目 | 说明 |
|---|---|
ExitWorktree |
退出并清理当前工作树的工具 |
WorktreeCreate |
创建工作树时触发的 Hook 事件 |
WorktreeRemove |
移除工作树时触发的 Hook 事件 |
自动清理
如果在工作树中没有进行任何更改,会话结束时会自动清理。
使用场景
- 在功能分支上工作,保持 main 分支不受影响
- 隔离运行测试,不影响工作目录
- 在一次性环境中尝试实验性更改
- 在 monorepo 中稀疏检出特定包以加快启动速度
沙盒
沙盒为 Claude Code 执行的 Bash 命令提供操作系统级文件系统和网络隔离。这是对权限规则的补充,提供额外的安全层。
启用沙盒
斜杠命令:
/sandboxCLI 标志:
claude --sandbox # 启用沙盒
claude --no-sandbox # 禁用沙盒配置设置
| 设置 | 说明 |
|---|---|
sandbox.enabled |
启用或禁用沙盒 |
sandbox.failIfUnavailable |
如果沙盒无法激活则失败 |
sandbox.filesystem.allowWrite |
允许写入访问的路径 |
sandbox.filesystem.allowRead |
允许读取访问的路径 |
sandbox.filesystem.denyRead |
拒绝读取访问的路径 |
sandbox.network.allowedDomains |
Bash 启动的进程可以访问的域名(支持 *. 通配符) |
sandbox.network.deniedDomains |
即使 allowedDomains 通配符允许也阻止的域名(v2.1.113+) |
sandbox.enableWeakerNetworkIsolation |
在 macOS 上启用较弱的网络隔离 |
sandbox.bwrapPath |
(v2.1.133+,Linux/WSL)bubblewrap 二进制文件路径。默认:$PATH 查找 |
sandbox.socatPath |
(v2.1.133+,Linux/WSL)socat 二进制文件路径。默认:$PATH 查找 |
Linux/WSL 二进制路径(v2.1.133+)— 将 Claude Code 指向非标准安装位置:
{
"sandbox": {
"bwrapPath": "/opt/bubblewrap/bin/bwrap",
"socatPath": "/opt/socat/bin/socat"
}
}deniedDomains 覆盖宽泛通配符的示例(v2.1.113+):
{
"sandbox": {
"network": {
"allowedDomains": ["*.example.com"],
"deniedDomains": ["evil.example.com"]
}
}
}通配符允许 example.com 上的所有内容通过,但 deniedDomains 仍然阻止特定命名的主机。
示例配置
{
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"filesystem": {
"allowWrite": ["/Users/me/project"],
"allowRead": ["/Users/me/project", "/usr/local/lib"],
"denyRead": ["/Users/me/.ssh", "/Users/me/.aws"]
},
"enableWeakerNetworkIsolation": true
}
}工作方式
- Bash 命令在具有受限文件系统访问权限的沙盒环境中运行
- 网络访问可以隔离,防止意外的外部连接
- 与权限规则一起工作,实现纵深防御
- 在 macOS 上,使用
sandbox.enableWeakerNetworkIsolation进行网络限制(macOS 上不完全支持网络隔离)
使用场景
- 安全运行不受信任或生成的代码
- 防止意外修改项目外的文件
- 在自动化任务期间限制网络访问
企业受管设置
受管设置使企业管理员能够使用平台原生管理工具在组织内部署 Claude Code 配置。
部署方式
| 平台 | 方式 | 起始版本 |
|---|---|---|
| macOS | 受管 plist 文件(MDM) | v2.1.51+ |
| Windows | Windows Registry | v2.1.51+ |
| 跨平台 | 受管配置文件 | v2.1.51+ |
| 跨平台 | 受管 drop-in(managed-settings.d/ 目录) |
v2.1.83+ |
受管 Drop-in
从 v2.1.83 起,管理员可以将多个受管设置文件部署到 managed-settings.d/ 目录。文件按字母顺序合并,允许跨团队模块化配置:
~/.claude/managed-settings.d/
00-org-defaults.json
10-team-policies.json
20-project-overrides.json可用的受管设置
| 设置 | 说明 |
|---|---|
disableBypassPermissionsMode |
阻止用户启用绕过权限 |
availableModels |
限制用户可以选择的模型 |
allowedChannelPlugins |
控制允许的通道插件 |
autoMode.environment |
为自动模式配置可信基础设施 |
wslInheritsWindowsSettings |
仅 Windows/WSL(v2.1.118+):为 true 时,WSL 中运行的 Claude Code 从 Windows 主机继承受管设置,使通过 Registry/MDM 部署的企业策略在 Windows 和 WSL shell 之间统一应用 |
parentSettingsBehavior |
(v2.1.133+,管理员层)控制 SDK 的 managedSettings 如何与父进程设置合并。"first-wins" 保持现有优先级(冲突时较早的设置胜出);"merge" 深度合并值 |
| 自定义策略 | 组织特定的权限和工具策略 |
示例:macOS Plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>disableBypassPermissionsMode</key>
<true/>
<key>availableModels</key>
<array>
<string>claude-sonnet-4-6</string>
<string>claude-haiku-4-5</string>
</array>
</dict>
</plist>配置与设置
配置文件位置
- 全局配置:
~/.claude/config.json - 项目配置:
./.claude/config.json - 用户配置:
~/.config/claude-code/settings.json
完整配置示例
核心高级功能配置:
{
"permissions": {
"mode": "default"
},
"hooks": {
"PreToolUse:Edit": "eslint --fix ${file_path}",
"PostToolUse:Write": "~/.claude/hooks/security-scan.sh"
},
"mcp": {
"enabled": true,
"servers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
}
}
}扩展配置示例:
{
"permissions": {
"mode": "default",
"allowedTools": ["Bash(git log:*)", "Read"],
"disallowedTools": ["Bash(rm -rf:*)"]
},
"hooks": {
"PreToolUse": [{ "matcher": "Edit", "hooks": ["eslint --fix ${file_path}"] }],
"PostToolUse": [{ "matcher": "Write", "hooks": ["~/.claude/hooks/security-scan.sh"] }],
"Stop": [{ "hooks": ["~/.claude/hooks/notify.sh"] }]
},
"mcp": {
"enabled": true,
"servers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
}环境变量
使用环境变量覆盖配置:
# 模型选择
export ANTHROPIC_MODEL=claude-opus-4-7
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5
# API 配置
export ANTHROPIC_API_KEY=sk-ant-...
# Thinking 配置
export MAX_THINKING_TOKENS=16000
export CLAUDE_CODE_EFFORT_LEVEL=xhigh # low, medium, high, xhigh (仅 Opus 4.7,默认), 或 max
# 功能开关
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=true
export CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=true
export CLAUDE_CODE_DISABLE_CRON=1
export CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS=true
export CLAUDE_CODE_DISABLE_TERMINAL_TITLE=true
export CLAUDE_CODE_DISABLE_1M_CONTEXT=true
export CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=true
export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false
export CLAUDE_CODE_ENABLE_TASKS=true
export CLAUDE_CODE_SIMPLE=true # 由 --bare 标志设置
# MCP 配置
export MAX_MCP_OUTPUT_TOKENS=50000
export ENABLE_TOOL_SEARCH=true
# 提示缓存
export ENABLE_PROMPT_CACHING_1H=1 # 使用 1 小时提示缓存 TTL(默认 5 分钟)
# 任务管理
export CLAUDE_CODE_TASK_LIST_ID=my-project-tasks
# Agent Teams(实验性)
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
# Subagent 和 plugin 配置
export CLAUDE_CODE_SUBAGENT_MODEL=sonnet
export CLAUDE_CODE_PLUGIN_SEED_DIR=./my-plugins
export CLAUDE_CODE_NEW_INIT=1
# 子进程和流式处理
export CLAUDE_CODE_SUBPROCESS_ENV_SCRUB="SECRET_KEY,DB_PASSWORD"
export CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=80
export CLAUDE_STREAM_IDLE_TIMEOUT_MS=30000
export ANTHROPIC_CUSTOM_MODEL_OPTION=my-custom-model
export SLASH_COMMAND_TOOL_CHAR_BUDGET=50000
# 输出和包管理器(v2.1.129+)
export CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 # 为自动检测失败的终端强制同步输出(Emacs eat 等)
export CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1 # 启用 Homebrew/WinGet 安装的后台升级
export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 # 当设置了 ANTHROPIC_BASE_URL 时选择加入 /v1/models 网关发现v2.1.108:
ENABLE_PROMPT_CACHING_1H=1— 使用 1 小时提示缓存 TTL 而不是默认的 5 分钟 TTL。减少长时间稳定会话中的缓存未命中。(v2.1.129 修复了一个回归,其中 1 小时 TTL 被静默降级为 5 分钟。)
v2.1.129:
CLAUDE_CODE_FORCE_SYNC_OUTPUT=1为能力自动检测失败的终端(如 Emacseat)强制同步输出。CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1启用 Homebrew/WinGet 安装的后台升级,否则这些永远不会自动更新。
配置管理命令
User: /config
[打开交互式配置菜单]/config 命令提供交互式菜单来切换设置,例如:
- 扩展思考开/关
- 详细输出
- 权限模式
- 模型选择
每个项目的配置
在项目中创建 .claude/config.json:
{
"hooks": {
"PreToolUse": [{ "matcher": "Bash", "hooks": ["npm test && npm run lint"] }]
},
"permissions": {
"mode": "default"
},
"mcp": {
"servers": {
"project-db": {
"command": "mcp-postgres",
"env": {
"DATABASE_URL": "${PROJECT_DB_URL}"
}
}
}
}
}Agent Teams
Agent Teams 是实验性功能,允许多个 Claude Code 实例协作完成任务。默认禁用。
启用 Agent Teams
通过环境变量或设置启用:
# 环境变量
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1或添加到设置 JSON:
{
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}Agent Teams 工作方式
- 团队负责人 协调整体任务并将子任务委派给队友
- 队友 独立工作,每个都有自己的上下文窗口
- 共享任务列表 使团队成员之间能够自我协调
- 使用 subagent 定义(
.claude/agents/或--agents标志)定义队友角色和专长
显示模式
Agent Teams 支持两种显示模式,使用 --teammate-mode 标志配置:
| 模式 | 说明 |
|---|---|
in-process(默认) |
队友在同一终端进程中运行 |
tmux |
每个队友获得专用分屏(需要 tmux 或 iTerm2) |
auto |
自动选择最佳显示模式 |
# 使用 tmux 分屏显示队友
claude --teammate-mode tmux
# 显式使用进程内模式
claude --teammate-mode in-process使用场景
- 大型重构任务,不同队友处理不同模块
- 并行代码审查和实现
- 跨代码库协调多文件更改
注意:Agent Teams 是实验性功能,可能在未来版本中更改。参见 code.claude.com/docs/en/agent-teams 了解完整参考。
最佳实践
规划模式
- 复杂任务先规划,再实现
- 计划要可审阅
- 不要在简单任务上使用
扩展思考
- 用于架构决策
- 用于复杂问题解决
- 查看推理过程
- 不要在简单查询上使用
后台任务
- 用于长时间运行的操作
- 监控任务进度
- 优雅处理任务失败
- 不要启动太多并发任务
权限模式
- 使用
plan进行代码审查(只读) - 使用
default进行交互式开发 - 使用
acceptEdits进行自动化工作流 - 使用
auto进行带安全护栏的自主工作 - 除非绝对必要,否则不要使用
bypassPermissions
会话
- 为不同任务使用单独的会话
- 保存重要的会话状态
- 清理旧会话
- 不要在同一会话中混合不相关的工作