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 当前会话(保留历史,在新分支继续)
/fork9.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。