\documentclass[a4paper]{article}

% Basic packages
\usepackage[fontset=fandol]{ctex}
\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage[margin=2.5cm]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{etoolbox}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{float}
\usepackage{tikz}
\usepackage{enumitem}
\IfFileExists{pgfplots.sty}{
    \usepackage{pgfplots}
    \pgfplotsset{compat=1.18}
}{}

% Highlight boxes
\newtcolorbox{knowledgebox}[1]{
    enhanced, colback=blue!5!white, colframe=blue!75!black, colbacktitle=blue!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, attach boxed title to top left={yshift=-2mm, xshift=2mm},
    boxrule=1pt, sharp corners
}

\newtcolorbox{importantbox}[1]{
    enhanced, colback=yellow!10!white, colframe=yellow!80!black, colbacktitle=yellow!80!black,
    coltitle=black, fonttitle=\bfseries, title=#1, sharp corners
}

\newtcolorbox{warningbox}[1]{
    enhanced, colback=red!5!white, colframe=red!75!black, colbacktitle=red!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, sharp corners
}

% Listings
\lstset{
    language=bash,
    basicstyle=\ttfamily\small,
    keywordstyle=\color{blue},
    stringstyle=\color{red!60!black},
    commentstyle=\color{green!60!black},
    breaklines=true,
    frame=single,
    numbers=left,
    numberstyle=\tiny\color{gray},
    captionpos=b,
    extendedchars=false
}

% Front-page metadata
\newcommand{\notetitle}{50 个 Claude Code 实用技巧与最佳实践}
\newcommand{\noteauthors}{基于公开课程资料整理}
\newcommand{\notedate}{2026 年 3 月 19 日}
\newcommand{\videochannel}{Vishwas (CodevolutionWeb)}
\newcommand{\videopublishdate}{2026 年 3 月 19 日}
\newcommand{\videoduration}{约 15 分钟阅读}
\newcommand{\videourl}{https://x.com/CodevolutionWeb/status/2034683638382506063}
\newcommand{\videocoverpath}{}
\newcommand{\repourl}{https://github.com/hqhq1025/ai-course-notes}


% Footer with repo info
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[C]{\thepage}
\fancyfoot[R]{\footnotesize\color{gray}\href{\repourl}{AI Course Notes}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}

\begin{document}

\begin{titlepage}
\centering
{\Large 文章笔记\par}
\vspace{1.2cm}
{\huge\bfseries \notetitle\par}
\vspace{0.8cm}
{\large \noteauthors\par}
\vspace{0.3cm}
{\large \notedate\par}
\vspace{1.2cm}

\vfill
\begin{tcolorbox}[width=0.9\textwidth, colback=black!2!white, colframe=black!60, sharp corners]
\textbf{文章作者}：\videochannel\par
\textbf{发布日期}：\videopublishdate\par
\textbf{阅读时长}：\videoduration\par
\ifdefempty{\videourl}{}{
\textbf{文章链接}：\href{\videourl}{\nolinkurl{\videourl}}\par
}
\par
\textbf{项目主页}：\href{\repourl}{\nolinkurl{\repourl}}\par
\end{tcolorbox}
\end{titlepage}

\tableofcontents
\newpage

%% --- 正文内容开始 --- %%

\section{引言}

Vishwas 是 Claude Code 社区中最活跃的内容创作者之一。他在这篇文章中汇总了 50 条 Claude Code 使用技巧，来源包括 Anthropic 官方文档、Claude Code 核心开发者 Boris Cherny 的分享、社区经验以及他本人一年多的日常使用心得。

本文将这 50 条技巧按主题重新组织为 8 个板块，帮助读者系统性地掌握 Claude Code 从入门到进阶的完整工作流。

\begin{knowledgebox}{文章背景}
Claude Code 是 Anthropic 推出的官方命令行 AI 编程助手，运行在终端中，能够直接读写文件、执行 shell 命令、与 Git 交互。它支持 Sonnet 4.6 和 Opus 4.6 模型，最大上下文窗口可达 1M tokens。
\end{knowledgebox}

%% ============================================================
\section{快速上手与基础操作}
%% ============================================================

掌握以下基础操作可以显著提升日常使用效率。

\subsection{设置 cc 别名（Tip \#1）}

在 \texttt{\textasciitilde/.zshrc}（或 \texttt{\textasciitilde/.bashrc}）中添加别名，用 \texttt{cc} 代替 \texttt{claude} 启动会话，同时跳过所有权限确认弹窗。

\begin{lstlisting}[caption={cc 别名配置}, language=bash]
alias cc="claude --dangerously-skip-permissions"
\end{lstlisting}

\begin{warningbox}{谨慎使用 --dangerously-skip-permissions}
该 flag 的命名故意设计得"吓人"。只有在你完全理解 Claude Code 能对你的代码库做什么之后，才应启用此选项。它会跳过所有操作确认，包括文件删除和 shell 命令执行。
\end{warningbox}

\subsection{用 ! 前缀直接执行 Bash 命令（Tip \#2）}

在 Claude Code 交互界面中输入 \texttt{!git status} 或 \texttt{!npm test}，命令会立即执行，输出会进入上下文供 Claude 参考。比让 Claude 帮你跑命令更快。

\subsection{Esc 中断与 Esc+Esc 回滚（Tip \#3）}

\begin{itemize}
  \item \textbf{Esc}：立即中断 Claude 的当前操作，不丢失上下文，可以马上重新引导。
  \item \textbf{Esc+Esc}（或 \texttt{/rewind}）：打开 checkpoint 列表，可恢复代码、对话或两者。四种恢复选项：代码+对话、仅对话、仅代码、从某个 checkpoint 开始摘要。
\end{itemize}

\begin{importantbox}{Checkpoint 的局限}
Checkpoint 只追踪文件编辑操作。通过 Bash 命令造成的变更（数据库迁移、文件系统操作等）不会被 checkpoint 捕获，无法回滚。
\end{importantbox}

恢复上次会话：\texttt{claude --continue} 恢复最近一次对话；\texttt{claude --resume} 打开会话选择器。

\subsection{常用快捷键汇总（Tips \#16, \#17, \#27）}

\begin{table}[H]
\centering
\begin{tabular}{lp{9cm}}
\toprule
\textbf{快捷键} & \textbf{功能} \\
\midrule
\texttt{Ctrl+S} & 暂存当前正在编写的 prompt，处理完其他事情后自动恢复 \\
\texttt{Ctrl+B} & 将长时间运行的 Bash 命令放入后台，Claude 继续工作 \\
\texttt{Ctrl+G} & 在文本编辑器中直接编辑 Claude 提出的计划 \\
\texttt{Shift+Tab} & 在 Normal / Auto-Accept / Plan 三种权限模式间切换 \\
\texttt{Esc} & 中断当前操作 \\
\texttt{Esc+Esc} & 打开 checkpoint 回滚菜单 \\
\bottomrule
\end{tabular}
\caption{Claude Code 常用快捷键}
\end{table}

\subsection{命名与着色会话（Tip \#47）}

运行多个并行会话时，用 \texttt{/rename auth-refactor} 给会话加标签，用 \texttt{/color red} 设置提示栏颜色（支持 red, blue, green, yellow, purple, orange, pink, cyan）。五秒钟的操作能避免你在错误的终端里输入命令。

\subsection{自定义 Spinner 动词（Tip \#50）}

Claude 思考时终端显示的 spinner 动词（如"Flibbertigibbeting..."）可以自定义。只需告诉 Claude："Replace my spinner verbs with Harry Potter spells."，Claude 会自动生成列表。虽然是小事，但能让等待变得有趣。

\subsection{本章小结}

基础操作的核心在于：用别名简化启动、用 \texttt{!} 前缀快速执行命令、用 Esc 系列快捷键控制流程、用命名和颜色管理多会话。这些习惯一旦养成，日常交互效率会有质的提升。

%% ============================================================
\section{Prompt 工程与交互策略}
%% ============================================================

如何与 Claude 对话直接决定输出质量。以下技巧帮助你写出更有效的 prompt。

\subsection{用 ultrathink 触发深度推理（Tip \#7）}

\texttt{ultrathink} 是一个关键词，会将 effort 设为最高并触发 Opus 4.6 的自适应推理模式。Claude 会根据问题复杂度动态分配 thinking tokens。

\begin{importantbox}{何时使用 ultrathink}
适用于：架构决策、复杂 debug、多步推理。不适用于：变量重命名等简单任务（浪费 thinking tokens）。也可以用 \texttt{/effort} 命令永久设置推理强度。
\end{importantbox}

\subsection{用 Plan Mode 规划复杂任务（Tip \#11）}

对于多文件变更、不熟悉的代码、架构决策，先进入 Plan Mode（\texttt{Shift+Tab} 切换）。虽然多花几分钟，但能防止 Claude 花 20 分钟自信地解决错误的问题。

对于一句话就能描述的小改动，直接执行即可，跳过规划。

\subsection{直接贴原始数据，不要自己解释 Bug（Tip \#13）}

\begin{warningbox}{常见误区：用文字描述 Bug}
用文字描述 bug 往往会丢失 Claude 定位根因所需的细节。直接粘贴 error log、CI 输出或 Slack 对话，然后说"fix"。Claude 擅长从原始日志中追踪问题。
\end{warningbox}

也可以直接从终端 pipe 输出：

\begin{lstlisting}[caption={管道传输错误信息}, language=bash]
npm test 2>&1 | claude "fix the failing tests"
\end{lstlisting}

\subsection{用 @ 指定文件路径（Tip \#25）}

使用 \texttt{@src/auth/middleware.ts} 直接引用文件。Claude 虽然能自己搜索代码库，但每一步搜索都消耗 tokens 和上下文。直接指定文件跳过整个搜索过程。

\subsection{用模糊 Prompt 探索不熟悉的代码（Tip \#26）}

"What would you improve in this file?" 是一个很好的探索型 prompt。不是每个 prompt 都需要精确。当你想要新视角审视现有代码时，模糊问题给 Claude 发挥空间，能发现你自己不会想到去问的问题。

\subsection{让 Claude 反过来采访你（Tip \#44）}

当你无法完整描述需求时，让 Claude 来提问：

\begin{importantbox}{Interview 模式}
告诉 Claude："I want to build [feature]. Interview me to understand the full requirements before writing any code. Ask me one question at a time." Claude 会逐步引导你补全需求细节。完成后，开一个新会话用干净上下文执行。
\end{importantbox}

\subsection{用语音输入写更丰富的 Prompt（Tip \#23）}

运行 \texttt{/voice} 启用按键说话功能，按住空格键口述。语音 prompt 自然比打字包含更多上下文，因为口述时你会不自觉地解释背景、提到约束条件。需要 Claude.ai 账号（非 API key）。可以在 \texttt{\textasciitilde/.claude/keybindings.json} 中自定义按键。

\subsection{本章小结}

Prompt 工程的核心原则：复杂任务用 \texttt{ultrathink} 和 Plan Mode；贴原始数据而非文字描述；用 \texttt{@} 精确指向文件；在需求不明确时让 Claude 反向采访你。匹配推理强度与任务复杂度是控制成本的关键。

%% ============================================================
\section{会话管理与上下文控制}
%% ============================================================

Claude Code 的输出质量与上下文状态密切相关。管理好会话是长时间使用的关键。

\subsection{不同任务之间用 /clear 清空（Tips \#12, \#24）}

\begin{importantbox}{最重要的会话管理原则}
一个干净会话配合精准 prompt，胜过一个混乱的三小时长会话。不同任务？先 \texttt{/clear}。当你在同一个问题上纠正 Claude 超过两次，也应该 \texttt{/clear} 重新开始——上下文中堆积的失败尝试会"污染"后续输出。
\end{importantbox}

\subsection{扩展上下文窗口到 1M Tokens（Tip \#10）}

Sonnet 4.6 和 Opus 4.6 都支持 1M token 上下文窗口。在 Max/Team/Enterprise 计划中，Opus 自动升级到 1M。也可以在会话中用 \texttt{/model opus[1m]} 切换。

相关环境变量：
\begin{itemize}
  \item \texttt{CLAUDE\_CODE\_AUTO\_COMPACT\_WINDOW}：控制自动 compaction 触发时机
  \item \texttt{CLAUDE\_AUTOCOMPACT\_PCT\_OVERRIDE}：设置 compaction 百分比阈值
\end{itemize}

\subsection{引导 Compaction 保留关键信息（Tip \#21）}

当上下文自动压缩时，用命令引导 Claude 保留什么：

\begin{lstlisting}[caption={引导 compaction 示例}, language=bash]
/compact focus on the API changes and the list of modified files
\end{lstlisting}

也可以在 CLAUDE.md 中添加常驻指令："When compacting, preserve the full list of modified files and current test status."

\subsection{用 /btw 快速提问（Tip \#14）}

\texttt{/btw} 弹出一个覆盖层用于快速提问，不会进入对话历史。适合问"为什么选了这个方案？"或"另一个选项的权衡是什么？"主上下文保持干净。

\subsection{用 /branch 尝试不同方案（Tip \#43）}

\texttt{/branch}（或 \texttt{/fork}）在当前节点创建对话副本。在分支中尝试激进重构，如果成功就保留，失败了原始对话不受影响。与 \texttt{Esc+Esc} 回滚不同，两条路径同时存活。

\subsection{用 /loop 做周期性检查（Tip \#22）}

\begin{lstlisting}[caption={/loop 示例}, language=bash]
/loop 5m check if the deploy succeeded and report back
/loop 20m /review-pr 1234
\end{lstlisting}

支持 \texttt{s}, \texttt{m}, \texttt{h}, \texttt{d} 时间单位，默认 10 分钟。任务绑定到会话，3 天后过期，不会无限运行。适合监控部署、CI 流水线等场景。

\subsection{本章小结}

会话管理的关键：不同任务间 \texttt{/clear}、修正两次仍失败就重新开始、引导 compaction 保留关键信息、用 \texttt{/btw} 和 \texttt{/branch} 保持上下文干净。理解上下文窗口和 compaction 机制是高效使用 Claude Code 的基础。

%% ============================================================
\section{CLAUDE.md 与项目配置}
%% ============================================================

CLAUDE.md 是项目级的持久化配置，相当于给 Claude Code 的"项目说明书"。

\subsection{用 /init 生成然后精简（Tip \#28）}

CLAUDE.md 是项目根目录下的 Markdown 文件，给 Claude 提供持久指令：构建命令、编码规范、架构决策、仓库约定。每次会话开始时 Claude 都会读取它。

运行 \texttt{/init} 自动生成初始版本，但输出通常很臃肿。精简原则：如果你说不出某一行为什么存在，就删掉它。

\subsection{每一行都用 Litmus Test 检验（Tip \#29）}

\begin{importantbox}{CLAUDE.md 的黄金法则}
对 CLAUDE.md 的每一行都问：没有这行，Claude 会犯错吗？如果 Claude 本来就做得对，这行就是噪声。大约有 150--200 条指令的"预算"，超过后遵从度下降，而系统 prompt 已经占用了约 50 条。
\end{importantbox}

\subsection{让 Claude 自己更新 CLAUDE.md（Tip \#30）}

当 Claude 犯错时，说"update the CLAUDE.md file so this doesn't happen again"。Claude 会写入自己的规则，下次自动遵守。随着时间推移，CLAUDE.md 变成一个由真实错误驱动的活文档。

为防止文件无限膨胀，用 \texttt{@imports} 引用外部文件（如 \texttt{@docs/solutions.md}），CLAUDE.md 本身保持精简。

\subsection{用 .claude/rules/ 做条件加载（Tip \#31）}

在 \texttt{.claude/rules/} 目录下放置 Markdown 文件，按主题组织规则。通过 frontmatter 中的 \texttt{paths} 字段控制加载时机：

\begin{lstlisting}[caption={条件加载规则示例}, language=yaml]
---
paths:
  - "**/*.ts"
  - "**/*.tsx"
---
# TypeScript conventions
- Use strict mode
- Prefer interfaces over types
\end{lstlisting}

TypeScript 规则只在 Claude 处理 \texttt{.ts} 文件时加载，Go 规则只在处理 \texttt{.go} 文件时加载。

\subsection{用 @imports 按需引入（Tip \#32）}

用 \texttt{@docs/git-instructions.md}、\texttt{@README.md}、\texttt{@package.json} 甚至 \texttt{@\textasciitilde/.claude/my-project-instructions.md} 引用外部文档。Claude 在需要时才读取，不会每次会话都加载。

\subsection{本章小结}

CLAUDE.md 的核心理念：精简、针对性、活文档。用 \texttt{/init} 起步后立刻精简；每行都做 litmus test；让 Claude 从错误中自学；用 \texttt{.claude/rules/} 和 \texttt{@imports} 分散配置，保持主文件简洁。

%% ============================================================
\section{权限、安全与 Hooks}
%% ============================================================

Hooks 是 Claude Code 中确定性最高的控制机制，适合处理"必须每次都执行"的规则。

\subsection{CLAUDE.md 是建议，Hooks 是规则（Tip \#38）}

\begin{importantbox}{CLAUDE.md vs Hooks 的本质区别}
CLAUDE.md 是建议性的，Claude 大约 80\% 的时间会遵守。Hooks 是确定性的，100\% 执行。如果某件事必须无条件发生（格式化、lint、安全检查），用 Hook；如果是 Claude 应该考虑的指导方针，用 CLAUDE.md。
\end{importantbox}

\subsection{用 /permissions 白名单化安全命令（Tip \#33）}

不要再对 \texttt{npm run lint} 点一百次"approve"了。\texttt{/permissions} 让你将信任的命令加入白名单，不在列表中的命令仍然会弹出确认。

\subsection{用 /sandbox 隔离运行（Tip \#34）}

\texttt{/sandbox} 启用操作系统级隔离：文件写入限制在项目目录，网络请求限制在你批准的域名。macOS 使用 Seatbelt，Linux 使用 bubblewrap。

\begin{knowledgebox}{无人值守场景}
对于过夜迁移、实验性重构等无人值守任务，推荐在 Docker 容器中运行 Claude。容器提供完全隔离和轻松回滚。
\end{knowledgebox}

\subsection{PostToolUse Hook：自动格式化（Tip \#39）}

每次 Claude 编辑文件后自动运行格式化工具：

\begin{lstlisting}[caption={PostToolUse Hook 配置（.claude/settings.json）}, language=bash]
# PostToolUse hook
npx prettier --write "$CLAUDE_FILE_PATH" || true
\end{lstlisting}

\texttt{|| true} 防止格式化失败阻塞 Claude。注意：如果编辑器同时打开了相同文件，建议关闭 format-on-save，因为编辑器保存可能使 prompt cache 失效。

\subsection{PreToolUse Hook：拦截危险命令（Tip \#40）}

用 PreToolUse Hook 拦截 \texttt{rm -rf}、\texttt{DROP TABLE}、\texttt{TRUNCATE} 等危险命令。Hook 在执行前触发，危险命令不会被实际执行。

可以通过 \texttt{/hooks} 交互式设置，或直接告诉 Claude："Add a PreToolUse hook that blocks rm -rf, drop table, and truncate commands."

\subsection{Notification Hook：跨 Compaction 保留上下文（Tip \#41）}

长会话中 compaction 可能导致 Claude 丢失当前工作的上下文。设置一个 \texttt{Notification} hook，在 compaction 触发时自动重新注入关键信息：

\begin{itemize}
  \item 当前任务描述
  \item 已修改的文件列表
  \item 硬性约束条件（如"不要修改 migration 文件"）
\end{itemize}

\subsection{Stop Hook：完成时播放提示音（Tip \#48）}

添加 Stop hook，Claude 完成响应时播放系统提示音。启动任务后切换到其他工作，听到提示音再回来查看。

\subsection{始终手动 Review 关键逻辑（Tip \#42）}

\begin{warningbox}{人工审核不可省略的场景}
无论 Claude 生成的代码看起来多好，以下领域必须人工审核：
\begin{itemize}[nosep]
  \item 认证/授权流程（Auth flows）
  \item 支付逻辑（Payment logic）
  \item 数据变更/删除操作（Data mutations）
  \item 破坏性数据库操作（Destructive DB operations）
\end{itemize}
错误的 auth scope、配置错误的支付 webhook、或静默删除列的 migration 可能造成用户流失、资金损失或信任危机。
\end{warningbox}

\subsection{本章小结}

安全控制的层次结构：\texttt{/permissions} 管理命令白名单 $\to$ \texttt{/sandbox} 提供系统级隔离 $\to$ PreToolUse Hook 拦截危险操作 $\to$ PostToolUse Hook 自动格式化 $\to$ Notification Hook 保留上下文。CLAUDE.md 管建议，Hook 管规则，关键逻辑必须人工审核。

%% ============================================================
\section{自动反馈与质量保证}
%% ============================================================

让 Claude 自己验证自己的输出是提升质量最有效的方式。

\subsection{给 Claude 一个反馈循环（Tip \#4）}

\begin{importantbox}{2--3x 质量提升}
在 prompt 中包含测试命令、linter 检查或预期输出。Claude 运行测试、看到失败、自动修复，无需你介入。Claude Code 核心开发者 Boris Cherny 表示，仅此一项就能带来 2--3 倍的质量提升。
\end{importantbox}

对于 UI 变更，配置 Playwright MCP server，让 Claude 能打开浏览器、与页面交互、验证 UI 是否正常工作。

\subsection{安装语言级 Code Intelligence 插件（Tip \#5）}

LSP 插件让 Claude 在每次文件编辑后自动获得诊断信息：类型错误、未使用的 import、缺失的返回类型。Claude 在你注意到之前就能看到并修复问题。

\begin{knowledgebox}{这是影响最大的单个插件}
运行 \texttt{/plugin} 进入 Discover 标签浏览完整列表。支持 TypeScript、Python、Rust、Go、C\#、Java、Kotlin、Swift、PHP 等语言。需要系统上安装对应的 Language Server。
\end{knowledgebox}

\subsection{用 gh CLI 和其他命令行工具（Tip \#6）}

\texttt{gh} CLI 处理 PR、Issue、评论，不需要额外的 MCP server。CLI 工具比 MCP server 更节省上下文，因为不需要加载 tool schema。

对于 Claude 不认识的工具，告诉它："Use \texttt{sentry-cli --help} to learn about it, then use it to find the most recent error in production." Claude 会读 help 输出、理解语法、运行命令。

\subsection{对话式 PR Review（Tip \#46）}

不要让 Claude 做"一次性" PR review。在会话中与 Claude 对话式审查：
\begin{itemize}
  \item "Walk me through the riskiest change in this PR."
  \item "What would break if this runs concurrently?"
  \item "Is the error handling consistent with the rest of the codebase?"
\end{itemize}

对话式审查能发现更多问题，因为你可以深入到重要区域。一次性审查往往只标记风格问题，容易遗漏架构问题。

\subsection{本章小结}

质量保证的核心策略：在 prompt 中嵌入反馈循环（测试、lint）、安装 LSP 插件获取实时诊断、用 CLI 工具代替 MCP server 节省上下文、用对话式方法做 PR review。

%% ============================================================
\section{插件、MCP 与 Skills}
%% ============================================================

Claude Code 的扩展能力来自三个层面：Plugins、MCP Servers 和 Skills。

\subsection{Skills：按需加载的知识（Tip \#8）}

Skills 是 Markdown 文件，按需扩展 Claude 的知识。与每次会话都加载的 CLAUDE.md 不同，Skills 只在与当前任务相关时才加载。

在 \texttt{.claude/skills/} 目录创建，或通过 \texttt{/plugin} 安装自带 Skills 的插件。适合存放：API 约定、部署流程、编码模式等偶尔需要的专业领域知识。

\subsection{选择合适的 MCP Server（Tip \#36）}

推荐的 MCP Server 起步组合：
\begin{itemize}
  \item \textbf{Playwright}：浏览器测试和 UI 验证
  \item \textbf{PostgreSQL/MySQL}：直接查询数据库 schema
  \item \textbf{Slack}：读取 bug 报告和对话上下文
  \item \textbf{Figma}：设计稿转代码
\end{itemize}

Claude Code 支持动态工具加载（dynamic tool loading），server 定义只在 Claude 需要时才加载。

\subsection{设置输出风格（Tip \#37）}

运行 \texttt{/config} 选择输出风格：
\begin{itemize}
  \item \textbf{Explanatory}：详细、步骤式
  \item \textbf{Concise}：简洁、行动导向
  \item \textbf{Technical}：精确、专业术语
\end{itemize}

也可以在 \texttt{\textasciitilde/.claude/output-styles/} 下创建自定义输出风格文件。

\subsection{本章小结}

扩展能力选择策略：频繁需要的指令放 CLAUDE.md，偶尔需要的领域知识用 Skills，外部服务集成用 MCP Server，能用 CLI 的场景优先 CLI。输出风格按团队偏好设置。

%% ============================================================
\section{并行工作与多 Agent 协作}
%% ============================================================

Claude Code 支持多种并行工作模式，从单机 worktree 到多 Agent 团队协作。

\subsection{用 --worktree 做并行隔离开发（Tip \#15）}

\texttt{claude --worktree feature-auth} 创建一个带新分支的隔离工作副本。Claude Code 团队称这是最大的生产力解锁之一。

\begin{importantbox}{Worktree 最佳实践}
通常同时运行 2--3 个 worktree，每个有独立会话、独立分支、独立文件系统状态。本地 worktree 的上限是你的机器资源（CPU、内存）。如需更多并行度，可以考虑云容器方案（如 Builder.io）。
\end{importantbox}

\subsection{用 Subagent 保持主上下文干净（Tip \#19）}

"Use subagents to figure out how the payment flow handles failed transactions." 这会生成一个独立的 Claude 实例，有自己的上下文窗口。它读取文件、推理后返回简洁摘要。

内置类型：
\begin{itemize}
  \item \textbf{Explore}（Haiku）：快速文件搜索
  \item \textbf{Plan}（只读分析）：代码库推理
\end{itemize}

深度调查可能消耗一半上下文窗口，Subagent 将这些成本隔离在主会话之外。

\subsection{自定义 Subagent（Tip \#35）}

与临时使用不同，自定义 Subagent 保存在 \texttt{.claude/agents/}，预配置好模型和工具权限。例如：用 Opus 和只读工具的 security-reviewer agent，或用 Haiku 追求速度的 quick-search agent。

用 \texttt{/agents} 浏览和创建。可以设置 \texttt{isolation: worktree} 让 agent 拥有独立文件系统。

\subsection{Agent Teams：多会话协调（Tip \#20）}

\begin{knowledgebox}{实验性功能}
需要先启用 \texttt{CLAUDE\_CODE\_EXPERIMENTAL\_AGENT\_TEAMS} 环境变量。Team lead 分配任务给 teammates，每个 teammate 有独立上下文窗口和共享任务列表，可以直接互相通信。

建议从 3--5 个 teammates、每人 5--6 个任务开始。避免让两个 teammate 编辑同一文件（会导致覆写）。先从研究和审查任务开始练手。
\end{knowledgebox}

\subsection{一个 Claude 写代码，另一个 Claude 审查（Tip \#45）}

第一个 Claude 实现功能，第二个 Claude 从全新上下文出发像 Staff Engineer 一样审查。审查者不知道实现过程中的偷懒之处，会挑战每一个取巧。

同样的思路适用于 TDD：Session A 写测试，Session B 写代码通过测试。

\subsection{用 claude -p 做批量操作（Tip \#49）}

\begin{lstlisting}[caption={批量操作示例}, language=bash]
for file in src/*.ts; do
  claude -p "Update imports in $file" \
    --allowedTools Write,Read &
done
wait
\end{lstlisting}

\texttt{-{}-allowedTools} 限定每个文件允许的操作，\texttt{\&} 并行执行。适合格式转换、批量更新 import、独立文件的重复迁移。

\subsection{远程控制（Tip \#9）}

运行 \texttt{claude remote-control} 启动会话，然后从 \texttt{claude.ai/code} 或 iOS/Android 上的 Claude App 连接。会话在本地运行，手机/浏览器只是窗口。可以发消息、审批工具调用、随时监控进度。

\subsection{添加 Status Line（Tip \#18）}

Status line 是每个 Claude 回合后运行的 shell 脚本，在终端底部显示实时信息：当前目录、Git 分支、上下文使用量（按窗口占用率着色）。用 \texttt{/statusline} 快速设置。

\subsection{本章小结}

并行工作的层次：单任务用 Subagent 隔离调查成本 $\to$ 多分支用 Worktree 并行开发 $\to$ 跨会话用 Agent Teams 协作 $\to$ 批量文件用 \texttt{claude -p} 扇出处理。远程控制让你可以移动端监控长任务。

%% ============================================================
\section{总结与延伸}
%% ============================================================

这 50 条技巧覆盖了 Claude Code 使用的完整生命周期：

\begin{enumerate}
  \item \textbf{基础操作}：别名、快捷键、会话管理构成日常交互的骨架。
  \item \textbf{Prompt 工程}：匹配推理强度与任务复杂度，贴原始数据而非解释，让 Claude 采访你补全需求。
  \item \textbf{上下文控制}：频繁 \texttt{/clear}、引导 compaction、用 \texttt{/btw} 和 \texttt{/branch} 保持干净。
  \item \textbf{项目配置}：CLAUDE.md 精简且活、\texttt{.claude/rules/} 条件加载、\texttt{@imports} 按需引入。
  \item \textbf{安全与 Hooks}：CLAUDE.md 管建议，Hooks 管规则，关键逻辑必须人工审核。
  \item \textbf{质量保证}：反馈循环（测试+lint）、LSP 插件、对话式 PR review。
  \item \textbf{扩展能力}：Skills 按需加载、MCP Server 集成外部服务、CLI 优先。
  \item \textbf{并行工作}：Worktree、Subagent、Agent Teams、\texttt{claude -p} 各有适用场景。
\end{enumerate}

\begin{importantbox}{最核心的建议}
正如原文作者所说：你不需要全部 50 条。挑出上一次会话中最让你烦恼的那个问题，找到对应的技巧，明天就试用。一条真正落地的技巧，胜过五十条收藏夹里的书签。
\end{importantbox}

\subsection{拓展阅读}

\begin{itemize}
  \item Anthropic 官方 Claude Code 文档：\url{https://docs.anthropic.com/en/docs/claude-code}
  \item Boris Cherny 关于 Claude Code 架构的分享
  \item Vishwas 的 Claude Code 系列文章：\url{https://x.com/CodevolutionWeb}
  \item Claude Code Hooks 官方指南
  \item MCP Server 生态目录
\end{itemize}

%% --- 正文内容结束 --- %%

\end{document}
