9  子代理与CLI

本章介绍 Claude Code 的两项高级能力:子代理可以将复杂任务拆分为多个独立实例并行处理;CLI 进阶用法可以将 Claude Code 融入自动化脚本和研究流程。

9.1 子代理(Subagents)

子代理是 Claude Code 将任务的一部分委派给一个独立 AI 实例来处理的机制。子代理拥有独立的上下文,不会和主对话互相干扰,非常适合处理需要专注深度或可以并行执行的子任务。

9.1.1 子代理的工作机制

你 → Claude Code(主代理)
         ├── 子代理 A:探索数据文件结构
         ├── 子代理 B:查找类似研究的方法
         └── 子代理 C:检查代码质量
         ↓
    汇总三个子代理的结果,给出综合建议

主代理判断哪些子任务可以独立执行,将其分配给专门的子代理并行处理,最后汇总结果。这个过程对用户是透明的——你只需描述整体需求,Claude Code 会自动决定是否以及如何委派子任务。

9.1.2 内置子代理类型

Claude Code 内置了几类专门化子代理:

类型 功能 适用场景
Plan 设计实现方案 复杂任务的前期规划
Explore 快速探索代码库 了解文件结构和函数位置
Code Reviewer 审查代码质量 提交前的代码检查

9.1.3 社科场景示例

场景一:并行调研

我需要了解三种不同的处理调查数据缺失值的方法:
列表删除法、多重填补和完整案例分析。
请对这三种方法做全面对比,包括适用条件、实现方式和 R 包推荐。

Claude Code 会为每种方法分别启动子代理并行调研,比串行逐一分析快得多。

场景二:代码审查

请帮我审查 scripts/regression_analysis.R,重点检查:
1. 统计方法是否正确
2. 变量定义是否和 CLAUDE.md 中描述的一致
3. 有没有影响可重复性的问题

Claude Code 会委派专门的代码审查子代理,比主对话直接审查更系统。

场景三:分步骤自动执行

完成以下分析流程:
1. 读取 data/cfps2020_clean.rds,检查数据结构
2. 对 education 和 occupation_isei 做探索性分析
3. 建立基准回归模型,加入控制变量后再建第二个模型
4. 输出对比表格到 output/

Claude Code 会将每个步骤分配给合适的子代理,并行或串行处理,最终汇总。


9.2 CLI 进阶用法

除了在 VS Code 中使用 Claude Code 的图形界面,你还可以通过终端命令行以更灵活的方式调用它。

9.2.1 非交互模式

使用 -p 参数让 Claude Code 直接执行任务并返回结果,不进入对话界面:

# 直接从命令行执行一次性任务
claude -p "审查 scripts/analysis.R 的代码质量,列出主要问题"

# 处理文件内容
cat data/survey_raw.csv | claude -p "概括这个数据集的结构"

# 处理命令输出
Rscript scripts/run_tests.R 2>&1 | claude -p "解释这些错误信息的原因"

这种方式特别适合在自动化脚本或 CI/CD 流水线中调用 Claude Code。

9.2.2 JSON 格式输出

加上 --output-format json 参数,输出可被程序解析的 JSON:

claude -p --output-format json "列出 scripts/ 目录下所有 R 文件的主要功能"

返回结构化数据,方便后续脚本处理。

9.2.3 会话管理

# 恢复上一次会话
claude -c

# 恢复特定命名会话
claude -r "cfps-analysis"

# 在对话中命名当前会话,方便下次恢复
/rename cfps-2024

在对话框中:

# 查看历史会话
/resume

# Fork 当前会话(保留历史,在新分支继续)
/fork

9.2.4 在终端中使用管道处理研究文件

# 让 Claude Code 解读统计输出
Rscript -e "summary(lm(y ~ x, data=df))" | claude -p "解释这个回归结果的含义"

# 批量处理多个数据文件
for f in data/raw/*.csv; do
  echo "文件: $f"
  claude -p "概括 $f 的结构和内容,50字以内"
done

# 读取论文 PDF 并提问
pdftotext paper.pdf - | claude -p "提取这篇论文的研究方法部分"
提示

在 Windows 上使用 Git Bash 执行上述命令。在 PowerShell 中管道行为略有不同,建议通过 VS Code 内嵌的终端调用 Claude Code。