05e - 高级 CLI 技巧
本文是《AI Agent 实战手册》第 5 章第 5 节。 上一节:Plan Mode 与 Act Mode | 下一节:工具到 Skills 的概念层次
概述
Claude Code 的 CLI 远不止”输入 prompt、获取代码”这么简单。从自定义斜杠命令到 Git Worktree 并行开发,从上下文精细管理到 Headless 自动化,掌握这些高级技巧能让你的开发效率提升数倍,同时显著降低 token 消耗。本节覆盖 10 个高级 CLI 技巧,每个都附带可直接使用的操作步骤和实战模板。
1. 自定义斜杠命令(Custom Slash Commands)
核心概念
斜杠命令是保存在 Markdown 文件中的可复用 prompt 模板。输入 /命令名 即可触发,支持参数传递、模型选择和工具权限控制。命令文件可以版本控制,团队共享。
工具推荐
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| Claude Code 内置命令系统 | 自定义斜杠命令 | 包含在 Claude Code 订阅中 | 所有项目 |
GitHub CLI (gh) | 与 PR/Issue 集成 | 免费 | Git 工作流自动化 |
命令存储层级
斜杠命令支持三个层级,优先级从高到低:
项目级: .claude/commands/ → /project:命令名
用户级: ~/.claude/commands/ → /user:命令名操作步骤
步骤 1:创建项目级命令
在项目根目录创建 .claude/commands/ 目录,每个 .md 文件就是一个命令:
<!-- .claude/commands/commit.md -->
---
description: 生成规范化 commit message 并提交
allowed-tools: Bash(git add:*), Bash(git commit:*)
argument-hint: [message]
model: haiku
---
# 提交变更
<git_diff>
!`git diff --cached`
</git_diff>
按照 Conventional Commits 规范生成 commit message。
如果提供了 $ARGUMENTS,将其作为 commit message 的描述部分。步骤 2:使用 Frontmatter 配置
| 选项 | 用途 | 默认值 |
|---|---|---|
description | /help 中显示的描述 | prompt 首行 |
allowed-tools | 命令可使用的工具 | 继承会话设置 |
model | 使用的模型(haiku/sonnet) | 继承会话设置 |
argument-hint | 自动补全中显示的参数提示 | 无 |
步骤 3:传递参数
使用 $ARGUMENTS 捕获所有参数,或用 $1、$2 捕获位置参数:
<!-- .claude/commands/branch.md -->
---
description: 创建功能分支
allowed-tools: Bash(git:*)
argument-hint: [分支描述]
model: haiku
---
基于 $ARGUMENTS 创建一个符合命名规范的功能分支。
分支名格式:feat/简短描述(kebab-case)步骤 4:在命令中执行 Shell 命令
用 ! 前缀注入实时上下文——Claude 会先执行命令,再处理 prompt:
!`git log --oneline -10`提示词模板
完整 Git 工作流命令集(放入 .claude/commands/):
/branch [描述] → 创建功能分支
/lint → 运行 linter 并自动修复
/commit → 分析 diff 生成 commit message
/push → 暂存、提交、推送一步完成
/pr → 生成 PR 描述并创建 PR
/fix-pipeline → 分析 CI 失败日志并修复2. 上下文管理(Context Management)
核心概念
上下文管理是控制 token 消耗的最大杠杆。Claude Code 的每条消息都包含完整的对话历史,上下文越大,每次交互的 token 成本越高。
关键命令速查
| 命令 | 功能 | 使用时机 |
|---|---|---|
/clear | 清空对话历史,从零开始 | 切换到不相关任务时 |
/compact | 压缩对话为摘要,保留关键信息 | 上下文达到 50-70% 时 |
/cost | 显示当前会话 token 用量和费用 | 随时监控 |
/context | 显示上下文窗口使用情况 | 检查什么在占用空间 |
操作步骤
步骤 1:建立”一任务一会话”习惯
# 完成功能 A 后
/clear
# 开始调试 Bug B(干净的上下文)
修复 src/auth.ts 第 47 行的认证错误...步骤 2:在 50-70% 时主动压缩
不要等到自动压缩(95% 时触发),主动压缩可以控制保留什么:
/compact 只保留架构决策和文件变更记录,忽略调试尝试过程步骤 3:在 CLAUDE.md 中配置压缩指令
# Compact instructions
当压缩上下文时,保留:
- 所有架构决策和理由
- 文件变更清单
- 未解决的 TODO 项
丢弃:
- 调试过程的中间尝试
- 已解决问题的详细讨论步骤 4:使用 /rename 保存会话
/rename auth-refactor-v2
/clear
# 之后可以用 /resume 恢复
/resume3. 文件选择策略(File Selection)
核心概念
精确的文件引用能大幅减少 Claude 的搜索范围,降低 token 消耗并提高回答准确性。
操作步骤
步骤 1:使用 @ 引用精确文件
# ❌ 模糊引用(Claude 需要搜索)
找到用户服务的代码
# ✅ 精确引用(直接定位)
分析 @src/services/user.ts 中的认证逻辑步骤 2:Tab 自动补全
输入 @ 后按 Tab 键,Claude Code 会自动补全文件路径。
步骤 3:配置 .claudeignore
创建 .claudeignore 文件排除不需要索引的目录:
# .claudeignore
node_modules/
dist/
build/
.next/
coverage/
*.log
*.lock
__pycache__/
.git/objects/步骤 4:使用 --add-dir 添加额外目录
# 同时引用多个项目目录
claude --add-dir ../shared-lib --add-dir ../api-types提示词模板
精确文件引用模板:
分析 @[文件路径] 中的 [具体函数/类名],
对比 @[另一个文件路径] 的实现,
找出 [具体问题描述]。4. 多仓库与 Git Worktree 工作流
核心概念
Git Worktree 允许同一仓库创建多个工作目录,每个目录对应不同分支。配合 Claude Code,可以在多个 worktree 中并行运行独立的 AI 会话,互不干扰。
工具推荐
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| Git Worktree(内置) | 多分支并行工作 | 免费 | 并行开发多个功能 |
| Crystal | 可视化管理多个 Claude Code worktree 会话 | 免费开源 | 团队并行开发 |
| Ghostty / iTerm2 | 多窗格终端 | 免费 | 同时监控多个会话 |
操作步骤
步骤 1:创建 Worktree
# 为新功能创建独立工作目录
git worktree add ../my-project-feature-auth feat/auth
git worktree add ../my-project-fix-perf fix/performance
# 查看所有 worktree
git worktree list步骤 2:在每个 Worktree 中启动独立 Claude 会话
# 终端窗格 1
cd ../my-project-feature-auth && claude
# 终端窗格 2
cd ../my-project-fix-perf && claude步骤 3:并行开发模式
窗格 1(功能开发):实现用户认证模块
窗格 2(性能优化):优化数据库查询
窗格 3(安全审计):运行安全扫描
每个窗格独立工作,完成后各自提交 PR步骤 4:清理 Worktree
# 合并完成后清理
git worktree remove ../my-project-feature-auth5. Git 集成
核心概念
Claude Code 深度集成 Git,可以分析 diff、生成 commit message、创建 PR、甚至自动修复 CI 失败。
操作步骤
步骤 1:管道输入分析
# 分析最近的代码变更
git diff | claude "解释这些变更的影响"
# 分析错误日志
cat error.log | claude "分析错误原因并给出修复建议"
# 分析测试失败
npm test 2>&1 | claude "分析测试失败原因"步骤 2:使用 ! 前缀执行 Shell 命令
在 Claude Code 交互模式中,用 ! 前缀直接执行 shell 命令:
> !git status
> !git log --oneline -5
> !npm run build步骤 3:自动化 Git 工作流
配合自定义斜杠命令,实现完整的 Git 自动化:
/branch "添加暗色模式" → 创建 feat/add-dark-mode
/commit → 分析 diff,生成规范 commit
/push → 暂存 + 提交 + 推送
/pr → 生成 PR 描述并创建
/fix-pipeline → 获取 CI 日志,分析并修复提示词模板
Git 集成 prompt 模板:
分析 !`git diff HEAD~3..HEAD` 中的所有变更,
生成一份变更摘要,包含:
1. 新增功能
2. Bug 修复
3. 破坏性变更
4. 需要关注的风险点6. 成本优化
核心概念
Claude Code 的平均成本约为每开发者每天 $6(API 模式),90% 的用户日成本低于 $12。通过策略性的上下文管理和模型选择,可以节省 50-70% 的 token 消耗。
工具推荐
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| Claude Pro 订阅 | 基础使用 | $20/月 | 个人开发者 |
| Claude Max 5x | 中度使用 | $100/月 | 专业开发者 |
| Claude Max 20x | 重度使用 | $200/月 | 全职 AI 辅助开发 |
| claude-hud 插件 | 实时上下文监控 | 免费开源 | 所有用户 |
| LiteLLM | 企业级成本追踪 | 免费开源 | 团队/企业 |
操作步骤
步骤 1:按任务选择模型
# 简单任务用 Haiku(快速、便宜)
/model haiku
# 适用:文件读取、语法问题、简单重构、格式化
# 复杂任务用 Sonnet/Opus(强推理)
/model sonnet
# 适用:架构决策、多文件重构、复杂调试、代码审查步骤 2:控制上下文大小
- 目标:保持会话在 30K token 以下
- 在 70% 容量时执行
/compact - 每 20 轮对话后考虑
/clear
步骤 3:精确 prompt 减少搜索
# ❌ 高成本(Claude 需要全局搜索)
项目里好像有个 bug
# ✅ 低成本(直接定位)
修复 @src/auth/login.ts 第 47 行的 TypeError,
错误信息是 "Cannot read property 'token' of undefined"步骤 4:使用 Subagent 隔离上下文
复杂任务拆分为多个 Subagent,每个 Subagent 有独立的上下文窗口:
主会话:协调整体重构方案
├── Subagent 1:分析当前架构(独立上下文)
├── Subagent 2:生成新实现(独立上下文)
└── Subagent 3:编写测试(独立上下文)7. 会话管理
核心概念
Claude Code 支持会话的命名、暂停、恢复和继续,让你可以在多个任务间灵活切换而不丢失上下文。
操作步骤
步骤 1:命名和恢复会话
# 命名当前会话
/rename auth-refactor
# 查看历史会话
claude --resume
# 恢复指定会话
claude --resume auth-refactor
# 继续最近的会话
claude --continue步骤 2:会话生命周期管理
开始新任务 → 命名会话(/rename)
↓
工作中 → 监控上下文(/cost)
↓
中途切换 → 退出当前会话
↓
处理紧急任务 → 新会话处理
↓
回到原任务 → claude --resume [会话名]步骤 3:Pro 订阅的 5 小时窗口管理
Pro 计划的用量每 5 小时重置一次。策略:
- 在窗口开始时处理最复杂的任务
- 窗口末尾处理简单任务或切换到 Haiku
- 用
/usage监控剩余额度
8. 调试技巧
核心概念
Claude Code 提供多种调试辅助能力,从错误日志分析到交互式调试,再到自动修复循环。
操作步骤
步骤 1:管道错误日志
# 直接将错误输出传给 Claude
npm run build 2>&1 | claude "分析构建错误并给出修复方案"
# 分析运行时错误
cat /var/log/app/error.log | claude "找出最频繁的错误模式"步骤 2:使用 Thinking Mode 深度分析
# 按 Alt+Tab(或 Option+Tab)切换 thinking 模式
# 或在 prompt 中明确要求深度思考
请深入分析 @src/api/handler.ts 中的竞态条件问题,
逐步推理可能的执行顺序和数据竞争场景。步骤 3:Esc+Esc 回退变更
如果 Claude 的修改引入了新问题:
按 Esc+Esc → 打开回退菜单(rewind menu)
选择要回退到的检查点
Claude 会撤销该点之后的所有变更步骤 4:使用 --verbose 查看详细日志
# 启动时开启详细模式
claude --verbose
# 查看 Claude 的工具调用、文件读取等详细信息
# 有助于理解 Claude 的决策过程提示词模板
调试 prompt 模板:
@[文件路径] 中的 [函数名] 在 [触发条件] 时出现 [错误类型]。
错误信息:[完整错误信息]
预期行为:[应该发生什么]
实际行为:[实际发生了什么]
请:
1. 分析根本原因
2. 给出修复方案
3. 添加防御性代码防止复发9. Hooks 自动化
核心概念
Hooks 是在 Claude Code 生命周期特定节点自动执行的 shell 命令。与斜杠命令不同,Hooks 是确定性的——它们总是在指定事件发生时执行,不依赖 AI 的判断。
工具推荐
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| Claude Code Hooks(内置) | 生命周期自动化 | 包含在订阅中 | 代码质量保障 |
| ESLint / Prettier | 代码格式化 | 免费 | 前端项目 |
| pre-commit | Git hook 管理 | 免费 | 多语言项目 |
Hook 类型
| Hook 事件 | 触发时机 | 典型用途 |
|---|---|---|
PreToolUse | 工具执行前 | 阻止危险操作、输入验证 |
PostToolUse | 工具执行后 | 自动格式化、日志记录 |
Notification | 任务完成时 | 桌面通知、Slack 通知 |
Stop | 会话结束时 | 生成摘要、清理临时文件 |
操作步骤
步骤 1:在 settings.json 中配置 Hook
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
}
],
"PreToolUse": [
{
"matcher": "Bash",
"command": "echo '$CLAUDE_TOOL_INPUT' | node scripts/validate-command.js"
}
]
}
}步骤 2:自动格式化示例
每次 Claude 写入或编辑文件后,自动运行 Prettier:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"command": "npx prettier --write \"$CLAUDE_FILE_PATH\" && npx eslint --fix \"$CLAUDE_FILE_PATH\""
}
]
}
}步骤 3:安全防护示例
阻止 Claude 执行危险的 shell 命令:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"command": "node scripts/block-dangerous-commands.js"
}
]
}
}10. Headless 模式与 CI/CD 集成
核心概念
Headless 模式(-p / --print 标志)让 Claude Code 以非交互方式运行,适用于脚本自动化、CI/CD 管线和批处理任务。相比交互模式,Headless 模式消耗更少的 token。
工具推荐
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| Claude Code Headless | 非交互式执行 | 包含在订阅中 | CI/CD、脚本 |
| GitHub Actions | CI/CD 管线 | 免费(公开仓库) | 自动化工作流 |
| Shell Aliases | 快捷命令 | 免费 | 日常开发 |
操作步骤
步骤 1:基本 Headless 用法
# 单次执行,结果输出到 stdout
claude -p "运行测试并报告结果"
# 指定输出格式
claude -p "分析代码质量" --output-format json
# 管道输入
git diff | claude -p "为这些变更生成 changelog 条目"步骤 2:GitHub Actions 集成
# .github/workflows/ai-review.yml
name: AI Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: AI Review
run: |
git diff origin/main...HEAD | claude -p \
"审查这些代码变更,关注安全问题和性能问题" \
--output-format json
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}步骤 3:Shell 别名加速
# 添加到 ~/.zshrc 或 ~/.bashrc
alias clint="claude -p '/lint'"
alias cpush="claude -p '/push'"
alias ccommit="claude -p '/commit'"
alias creview="claude -p '审查最近的代码变更'"步骤 4:批处理脚本
#!/bin/bash
# 批量为所有 TODO 生成修复建议
for file in $(grep -rl "TODO" src/); do
echo "=== $file ==="
claude -p "分析 @$file 中的 TODO 注释,给出实现建议"
done实战案例:从零搭建高效 Claude Code 工作环境
场景
新加入一个 TypeScript 全栈项目,需要快速搭建高效的 Claude Code 工作环境。
操作流程
# 1. 创建 .claudeignore
cat > .claudeignore << 'EOF'
node_modules/
dist/
.next/
coverage/
*.log
*.lock
EOF
# 2. 创建常用斜杠命令
mkdir -p .claude/commands
# 3. 创建 commit 命令
cat > .claude/commands/commit.md << 'EOF'
---
description: 规范化提交
allowed-tools: Bash(git:*)
model: haiku
---
!`git diff --cached`
按 Conventional Commits 生成 commit message 并提交。
EOF
# 4. 创建 review 命令
cat > .claude/commands/review.md << 'EOF'
---
description: 代码审查
model: sonnet
---
审查 @$1 的代码质量,关注:
1. 安全漏洞
2. 性能问题
3. 可维护性
4. 测试覆盖
EOF
# 5. 启动 Claude Code
claude日常工作流
早上开始 → claude(新会话)
↓
功能开发 → 精确 @ 引用文件,Sonnet 模型
↓
提交代码 → /commit(Haiku 模型,快速便宜)
↓
切换任务 → /rename feature-x → /clear
↓
修复 Bug → 新会话,管道输入错误日志
↓
下班前 → /push 推送所有变更案例分析
- 使用
.claudeignore排除了约 80% 的无关文件,减少索引时间 - 斜杠命令中指定
model: haiku用于简单任务,节省约 60% token - “一任务一会话”习惯避免了上下文膨胀
@精确引用替代模糊描述,减少搜索开销
避坑指南
❌ 常见错误
-
在同一会话中处理多个不相关任务
- 问题:上下文不断膨胀,每条消息的 token 成本指数增长,且旧上下文可能干扰新任务的回答质量
- 正确做法:完成一个任务后
/clear,或为每个任务开新会话
-
等到上下文满了才压缩
- 问题:自动压缩在 95% 时触发,此时已经浪费了大量 token,且压缩质量不可控
- 正确做法:在 50-70% 时主动
/compact,并提供自定义压缩指令
-
所有任务都用最强模型
- 问题:简单的文件读取、格式化、commit message 生成不需要 Opus 级别的推理能力
- 正确做法:简单任务用 Haiku,复杂推理用 Sonnet/Opus,在斜杠命令中指定
model
-
模糊的 prompt 导致全局搜索
- 问题:“帮我找到那个 bug” 会让 Claude 扫描整个代码库,消耗大量 token
- 正确做法:提供文件路径、行号、错误信息,用
@精确引用
-
不配置
.claudeignore- 问题:Claude 会索引
node_modules/、dist/等无关目录,浪费 token 和时间 - 正确做法:项目初始化时就创建
.claudeignore,排除所有生成文件和依赖
- 问题:Claude 会索引
-
忽略 Hooks 的安全防护能力
- 问题:Claude 可能执行危险的 shell 命令(如
rm -rf、数据库操作) - 正确做法:配置
PreToolUseHook 验证命令安全性
- 问题:Claude 可能执行危险的 shell 命令(如
-
手动重复输入常用 prompt
- 问题:每次手动输入 commit、review、lint 的完整 prompt,浪费时间且不一致
- 正确做法:将常用操作封装为斜杠命令,版本控制并团队共享
✅ 最佳实践
- 项目初始化时就配置
.claudeignore、CLAUDE.md 和常用斜杠命令 - 养成”一任务一会话”的习惯,用
/rename保存重要会话 - 在斜杠命令中为简单任务指定
model: haiku - 使用 Git Worktree 并行处理多个功能分支
- 配置 PostToolUse Hook 自动格式化代码
- 用
/cost定期监控 token 消耗,保持会话在 30K token 以下 - 将 Claude Code 集成到 CI/CD,用 Headless 模式自动化代码审查
相关资源与延伸阅读
速查与技巧
- Claude Code 2.0 Cheatsheet — Awesome Claude — 可下载的速查表,涵盖所有 CLI 命令和快捷键
- 40+ Claude Code Tips — Awesome Claude — 从基础到高级的实用技巧集合
- Claude Code Tips — GitHub (ykdojo) — 包含自定义状态栏、Gemini CLI 联动等高级技巧
成本优化
- Claude Code Token Management — Richard Porter — 节省 50-70% Token 消耗的实战技巧
- 12 Proven Techniques to Save Tokens — Aslam Doctor — 12 种经过验证的 Token 节省技术
CI/CD 集成
- Claude Code Headless Mode 文档 — Headless 模式的官方文档,用于 CI/CD 集成
- Shipping Faster with Claude Code and Git Worktrees — incident.io — Git Worktree + Claude Code 并行开发的实战经验
GitHub 资源
- Awesome Claude Code — GitHub — 社区精选的 CLI 工具、Slash Commands 和工作流
- Claude Code Guide — GitHub (zebbern) — 完整优化指南,包含隐藏命令和高级配置
社区
- Awesome Claude AI — Claude 生态资源聚合站,包含 Claude Code 专区和社区链接
- r/ClaudeAI — Claude 用户社区,有大量 CLI 技巧和自动化经验分享
参考来源
- Claude Code 官方文档 - 成本管理 (2025)
- 12 Proven Techniques to Save Tokens in Claude Code (2025)
- Managing Claude Code’s Context: a practical handbook (2026)
- How to Speed Up Your Claude Code Experience with Slash Commands (2025)
- Claude Code Token Management: Save 50-70% on Pro Plan (2026)
- Cooking with Claude Code: The Complete Guide (2026)
- How we’re shipping faster with Claude Code and Git Worktrees (2025)
- Claude Code Hooks Complete Tutorial (2026)
- Claude Code Headless Mode (2025)
- Claude Code Cheatsheet (2026)
Content was rephrased for compliance with licensing restrictions.
📖 返回 总览与导航 | 上一节:Plan Mode 与 Act Mode | 下一节:工具到 Skills 的概念层次