Skip to Content

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 恢复 /resume

3. 文件选择策略(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-auth

5. 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-commitGit 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 ActionsCI/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
  • “一任务一会话”习惯避免了上下文膨胀
  • @ 精确引用替代模糊描述,减少搜索开销

避坑指南

❌ 常见错误

  1. 在同一会话中处理多个不相关任务

    • 问题:上下文不断膨胀,每条消息的 token 成本指数增长,且旧上下文可能干扰新任务的回答质量
    • 正确做法:完成一个任务后 /clear,或为每个任务开新会话
  2. 等到上下文满了才压缩

    • 问题:自动压缩在 95% 时触发,此时已经浪费了大量 token,且压缩质量不可控
    • 正确做法:在 50-70% 时主动 /compact,并提供自定义压缩指令
  3. 所有任务都用最强模型

    • 问题:简单的文件读取、格式化、commit message 生成不需要 Opus 级别的推理能力
    • 正确做法:简单任务用 Haiku,复杂推理用 Sonnet/Opus,在斜杠命令中指定 model
  4. 模糊的 prompt 导致全局搜索

    • 问题:“帮我找到那个 bug” 会让 Claude 扫描整个代码库,消耗大量 token
    • 正确做法:提供文件路径、行号、错误信息,用 @ 精确引用
  5. 不配置 .claudeignore

    • 问题:Claude 会索引 node_modules/dist/ 等无关目录,浪费 token 和时间
    • 正确做法:项目初始化时就创建 .claudeignore,排除所有生成文件和依赖
  6. 忽略 Hooks 的安全防护能力

    • 问题:Claude 可能执行危险的 shell 命令(如 rm -rf、数据库操作)
    • 正确做法:配置 PreToolUse Hook 验证命令安全性
  7. 手动重复输入常用 prompt

    • 问题:每次手动输入 commit、review、lint 的完整 prompt,浪费时间且不一致
    • 正确做法:将常用操作封装为斜杠命令,版本控制并团队共享

✅ 最佳实践

  1. 项目初始化时就配置 .claudeignore、CLAUDE.md 和常用斜杠命令
  2. 养成”一任务一会话”的习惯,用 /rename 保存重要会话
  3. 在斜杠命令中为简单任务指定 model: haiku
  4. 使用 Git Worktree 并行处理多个功能分支
  5. 配置 PostToolUse Hook 自动格式化代码
  6. /cost 定期监控 token 消耗,保持会话在 30K token 以下
  7. 将 Claude Code 集成到 CI/CD,用 Headless 模式自动化代码审查

相关资源与延伸阅读

速查与技巧

成本优化

CI/CD 集成

GitHub 资源

社区

  • Awesome Claude AI  — Claude 生态资源聚合站,包含 Claude Code 专区和社区链接
  • r/ClaudeAI  — Claude 用户社区,有大量 CLI 技巧和自动化经验分享

参考来源

Content was rephrased for compliance with licensing restrictions.


📖 返回 总览与导航 | 上一节:Plan Mode 与 Act Mode | 下一节:工具到 Skills 的概念层次

Last updated on