Claude Code CLI
命令行接口——工程化的统一入口
交互式开发、批处理、CI/CD — 一切从终端开始怎么脚本化
你有没有发现,Claude Code 交互式很好用,但没法融入自动化流程?
想自动化审查
每次 PR 提交后自动让 Claude 审查代码,生成 JSON 报告。但交互模式下你每次都得手动输入提示词。没法接入 CI。
想批量处理
50 个源文件都要生成文档。你不想一个个手动输入,但不知道怎么批量跑。
想统一模型配置
团队想统一用 Opus 做规划、Sonnet 做执行。但每个人都要自己配一遍,配置没法标准化。
两种模式
交互模式(默认)和打印模式(-p)
交互模式
多轮对话、Tab 补全、历史记录、Slash commands。
$ claude
$ claude "解释这个认证流程"
打印模式(-p)
单次查询后退出。可脚本化、可管道化、JSON 输出。
$ claude -p "这个函数做什么?"
$ cat error.log | claude -p "解释错误"
架构概览
CLI 如何连接终端、API 和输出
用户终端 → Claude Code CLI → REPL / 打印 / 恢复 → Claude API → 输出 → 终端|管道
核心标志
控制 CLI 行为的关键参数
| 参数 | 说明 | 示例 |
|---|---|---|
--remote | 在 claude.ai 上创建 web session | claude --remote "implement API" |
--remote-control, --rc | 使用 Remote Control 交互 | claude --rc |
--teleport | 将 web session 恢复到本地 | claude --teleport |
--teammate-mode | agent team 显示模式 | claude --teammate-mode tmux |
--channels | 订阅 MCP channel 插件 | claude --channels discord,telegram |
--chrome / --no-chrome | 启用/禁用 Chrome 集成 | claude --chrome |
-n, --name | 设置会话显示名称 | claude -n "auth-refactor" |
-v, --version | 输出版本号 | claude -v |
扩展标志
初始化、维护与模式控制
| 参数 | 说明 | 示例 |
|---|---|---|
--init / --init-only | 运行初始化 hooks | claude --init |
--maintenance | 运行维护 hooks 后退出 | claude --maintenance |
--disable-slash-commands | 禁用所有 skills 和 slash commands | claude --disable-slash-commands |
--verbose | 启用详细日志 | claude --verbose |
--input-format | 指定输入格式(text、stream-json) | claude -p --input-format stream-json |
--dry-run | 仅模拟执行 | claude --dry-run "review code" |
--interactive | 强制交互模式 | claude --interactive |
--unsafe | 允许更多自动化操作 | claude --unsafe |
--init 适合首次启动项目时自动配置环境;--dry-run 适合预览执行效果而不实际修改;--unsafe 仅在受信环境中使用。
命令速查
最常用的 CLI 命令
| 命令 | 说明 |
|---|---|
claude | 启动交互式 REPL |
claude "query" | 带初始提示启动 REPL |
claude -p "query" | 打印模式,查询后退出 |
cat file | claude -p "query" | 处理管道传入的内容 |
claude -c | 继续最近一次会话 |
claude -c -p "query" | 打印模式下继续会话 |
claude -r "session" | 恢复指定会话 |
claude -w | 在隔离 worktree 中启动 |
claude --bare "query" | 极简模式,跳过所有扩展 |
claude update | 更新到最新版本 |
claude auth login | 登录账号 |
claude auth status | 检查登录状态 |
claude mcp | 配置 MCP servers |
claude mcp serve | 作为 MCP server 运行 |
claude agents | 列出所有已配置的 subagents |
claude auto-mode defaults | 打印 auto mode 默认规则 |
claude remote-control | 启动远程控制服务 |
claude plugin install <name> | 管理插件(安装/启用/禁用) |
claude auth logout | 注销当前账号 |
模型与配置
通过参数控制模型、推理强度、权限和执行方式
| 参数 | 说明 | 示例 |
|---|---|---|
--model | 设置模型 | claude --model opus |
--effort | 推理强度 | claude --effort high |
--fallback-model | 后备模型 | --fallback-model sonnet |
--permission-mode | 权限模式 | claude --permission-mode plan |
# 短名称
$ claude --model sonnet # Sonnet(日常首选)
$ claude --model opus # Opus(复杂任务)
$ claude --model haiku # Haiku(快速任务)
# opusplan 别名:Opus 规划 + Sonnet 执行
$ claude --model opusplan "design and implement caching"
会话与恢复
# 给会话命名
$ claude --session feature-auth
# 从 GitHub PR 恢复
$ claude --from-pr 42
# 恢复最近一次会话
$ claude --resume-last
# 强制开启新会话
$ claude --new-session
# 分叉会话做实验
$ claude --fork-session "尝试另一种方案"
自动化专用
# 解锁 auto mode
$ claude --enable-auto-mode
# 通过 CLI 定义 subagent
$ claude --agent reviewer "审查代码"
# 禁用会话保存(敏感任务)
$ claude -p --no-session-persistence "query"
Effort 级别
三种方式控制推理强度
| 方式 | 命令 | 说明 |
|---|---|---|
| CLI 参数 | claude --effort high | 单次会话生效 |
| Slash command | /effort max | 交互模式中切换 |
| 环境变量 | CLAUDE_EFFORT=medium | 全局默认值 |
# 级别选项:low / medium / high / max
$ claude --model opus --effort high "设计架构"
# 快速任务用 low
$ claude --model haiku --effort low -p "格式化 JSON"
high/max,日常编码用 medium,简单格式化和查询用 low。
MCP 配置
通过 CLI 管理外部工具接入
| 参数 | 说明 | 示例 |
|---|---|---|
--mcp-config | 从文件加载 MCP 配置 | claude --mcp-config ./mcp.json |
--mcp | 启用指定 MCP 服务 | claude --mcp github |
--mcp-list | 列出可用 MCP 配置 | claude --mcp-list |
# 加载 GitHub MCP server
$ claude --mcp-config ./configs/github-mcp.json
# 严格模式:只允许指定的 server
$ claude --mcp-config ./configs/strict-mcp.json --mcp github
# 通过环境变量设置默认 MCP 配置
$ CLAUDE_MCP_CONFIG=~/.claude/mcp.json claude
CLAUDE_MCP_CONFIG 可以让所有会话自动加载 MCP 配置,无需每次手动指定。
高级参数
Checkpoint、模拟执行和安全控制
| 参数 | 说明 | 示例 |
|---|---|---|
--disable-auto-checkpoints | 禁用自动 checkpoint | claude --disable-auto-checkpoints |
--enable-auto-checkpoints | 启用自动 checkpoint | claude --enable-auto-checkpoints |
--interactive | 强制交互模式 | claude --interactive |
--dry-run | 仅模拟执行不修改 | claude --dry-run "review code" |
--unsafe | 允许更多自动化操作 | claude --unsafe |
# 长任务建议启用 checkpoint
$ claude --enable-auto-checkpoints "重构整个模块"
# 预览执行效果
$ claude --dry-run "删除所有未使用的 import"
# 调试 API 调用
$ claude --verbose -p "diagnose this issue"
Subagents
通过 JSON 定义自定义角色分工
# agents.json 格式
{
"code-reviewer": {
"description": "Expert code reviewer",
"prompt": "Focus on quality, security, best practices.",
"tools": ["Read", "Grep", "Glob", "Bash"],
"model": "sonnet"
},
"debugger": {
"description": "Debugging specialist",
"prompt": "Analyze errors, identify root causes.",
"tools": ["Read", "Edit", "Bash", "Grep"],
"model": "opus"
}
}
字段说明
必填:description(何时使用)、prompt(角色行为)。
可选:tools(工具白名单)、model(指定模型)。
优先级规则
CLI 定义(--agents)> 用户级(~/.claude/agents/)> 项目级(.claude/agents/)。
命令行定义会覆盖本次会话的用户级和项目级 agents。
# 使用方式
$ claude --agents ./configs/agents.json --agent reviewer
$ claude --agents '{"auditor":{"description":"security audit","prompt":"Find vulnerabilities.","tools":["Read","Grep"],"model":"opus"}}'
提示词定制
三种方式自定义 Claude 的行为
| 参数 | 行为 | 交互 | 打印 |
|---|---|---|---|
--system-prompt | 替换整个默认提示词 | ✅ | ✅ |
--append-system-prompt | 追加到默认提示词后 | ✅ | ✅ |
--system-prompt-file | 从文件加载 | ❌ | ✅ |
# 完整自定义人格
$ claude --system-prompt "你是一名资深安全工程师"
# 追加特定指令
$ claude --append-system-prompt "始终包含单元测试"
# 从文件加载(仅打印模式)
$ claude -p --system-prompt-file ./prompt.txt "review main.py"
输出控制
让 Claude 的输出可以被程序消费
# 纯文本(默认)
$ claude -p "解释这段代码"
# JSON 输出(供程序使用)
$ claude -p --output-format json "列出所有函数"
# 流式 JSON(实时处理)
$ claude -p --output-format stream-json "生成报告"
# Schema 验证的结构化输出
$ claude -p --json-schema '{"type":"object"}' "分析代码"
# 配合 jq 处理
$ claude -p --output-format json "find bugs" | \
jq '.[] | select(.severity=="high")'
# 流式输入格式
$ claude -p --input-format stream-json
jq 实用示例
# 提取多个字段
$ claude -p --output-format json "analyze" | \
jq '{summary, risk, recommendations}'
# 转成 CSV
$ claude -p --output-format json "list files" | \
jq -r '.files[] | [.name,.size] | @csv'
# 条件处理
$ claude -p --output-format json "check" | \
jq 'if .ok then "pass" else "fail" end'
jq 进阶用法
# 提取嵌套值
$ claude -p --output-format json "inspect" | \
jq '.details.metrics.coverage'
# 统计数组长度
$ claude -p --output-format json "find todos" | \
jq '.todos | length'
# 转换输出结构
$ claude -p --output-format json "review" | \
jq '{issues: [.issues[]|{file,line,msg}]}'
text(默认,人类阅读)、json(程序消费)、stream-json(实时流式处理)。配合 jq 可以进一步过滤和转换。
工具与权限
通过参数精确控制 Claude 能用哪些工具
# 只读安全审计
$ claude --tools "Read,Grep,Glob" -p "审查代码库"
# 允许特定 git 命令无需提示
$ claude --allowedTools "Bash(git status:*)" "Bash(git log:*)"
# 阻止危险操作
$ claude --disallowedTools "Bash(rm -rf:*)" "Bash(git push --force:*)"
# 限制自主操作 + 高级模型
$ claude --permission-mode plan --model opus "设计认证系统"
实战场景
七种最值得掌握的 CLI 用法
CI/CD 集成
$ claude -p --output-format json \
"run tests and summarize failures"
管道式处理
$ cat error.log | claude -p "解释错误"
$ git log --oneline -20 | claude -p "总结方向"
安全审计
$ claude --permission-mode plan \
-p "audit this repository"
批量处理
$ find src -name "*.ts" | \
xargs -I{} claude -p "review {}"
多会话工作流
$ claude --session feature-auth
$ claude --resume feature-auth
$ claude --fork-session "尝试另一种方案"
自定义 Agent
$ claude --agents ./agents.json \
--agent reviewer "审查代码"
JSON API 集成
$ result=$(claude -p \
--output-format json "summarize")
$ echo "$result" | jq '.summary'
与项目结构
CLI 的工作目录决定了 Claude 加载哪些配置
project/ ← 工作目录(--working-directory) ├── CLAUDE.md [自动加载] ├── .claude/ │ ├── settings.json [自动加载] │ ├── skills/ [自动发现] │ ├── agents/ [自动发现] │ └── commands/ [自动发现] └── src/ └── CLAUDE.md [按目录加载]
# 多目录协作
$ claude --working-directory ~/projects/app --add-dir ~/projects/shared
# 极简模式(跳过所有扩展)
$ claude --bare "简单提问"
CLAUDE.md、.claude/skills/ 等配置。
环境变量
通过环境变量设置默认值,适合团队统一配置
| 变量 | 说明 |
|---|---|
ANTHROPIC_API_KEY | API 密钥 |
CLAUDE_MODEL | 默认模型 |
CLAUDE_EFFORT | 默认推理强度 |
CLAUDE_OUTPUT_FORMAT | 默认输出格式 |
CLAUDE_MCP_CONFIG | 默认 MCP 配置 |
# 示例:环境变量配置
$ CLAUDE_MODEL=opus CLAUDE_EFFORT=high claude "设计架构"
.env 或 CI 配置中,全团队自动使用相同的模型和参数。
快速参考
最常用命令和参数组合模式
常用命令
# 交互式会话
$ claude
# 快速提问
$ claude -p "explain this repo"
# 继续上次对话
$ claude -c
# 为脚本输出 JSON
$ claude -p --output-format json "list classes"
参数组合模式
# 只读审查
$ claude --permission-mode plan -p "review"
# 高级模型 + JSON
$ claude --model opus -p --output-format json \
"analyze architecture"
# 自定义目录 + MCP
$ claude --working-directory ./backend \
--mcp-config ./mcp.json
排错指南
找不到 claude 命令
症状:终端提示 command not found: claude。
修复:确认 Claude Code 已安装且在 PATH 中。重新打开终端或运行 claude update。
API Key 问题
症状:报认证错误或连接失败。
修复:检查 ANTHROPIC_API_KEY 环境变量是否设置正确,key 是否过期,网络是否能访问 API。
工作目录错误
症状:在错误目录下运行,Claude 找不到 .claude/ 和 CLAUDE.md。
修复:用 --working-directory 明确指定,或在正确目录下运行。
CI 权限卡住
症状:CI 环境缺少交互式权限确认,命令卡住不动。
修复:使用 --permission-mode plan 或 bypassPermissions(仅限受信环境)。
输出过大
症状:JSON 输出太多,消费端处理不过来。
修复:用 --max-budget-usd 限制花费,或在提示词中限制输出条目数。
找不到会话
症状:-r 恢复时报错,说会话不存在。
修复:确认会话名称或 ID 正确。用 claude auth status 检查当前账号是否一致。
输出格式问题
症状:JSON 输出无法被程序解析。
修复:确保使用 --output-format json。如果是流式输出,加入 --include-partial-messages。
权限被拒绝
症状:工具调用被阻止或报权限错误。
修复:检查 --permission-mode 和 --allowedTools/--disallowedTools 配置,明确允许所需工具。
动手练习
用 CLI 生成一份结构化的代码审查报告
- 使用打印模式
- 输出 JSON 格式
- 结果保存到文件
- 限制最大花费 2 美元
参考答案
# 基本命令
$ claude -p --output-format json \
--max-budget-usd 2.00 \
"审查 src/ 目录下的所有 Java 文件,找出:
- 潜在的安全漏洞
- 代码质量问题
- 性能风险
每个问题包含:severity, file, line, description, suggestion" \
> code-review-report.json
# 配合 jq 提取高危问题
$ cat code-review-report.json | \
jq '.[] | select(.severity == "high")'
# CI/CD 中使用
$ claude -p --output-format json \
--permission-mode plan \
--max-budget-usd 1.00 \
"审查本次 PR 的改动,返回审查结论" \
>> pr-review-results.json
-p(非交互)、--output-format json(结构化)、--max-budget-usd(限制花费)、>(输出到文件)。
课程回顾
十章走完,从入门到工程化
到这里,你已经能
- 掌握最常用的 CLI 用法
- 控制输出格式和权限
- 理解与
.claude/和 hooks/plugins 的配合 - 把 CLI 集成进 CI/CD 和自动化脚本
延伸阅读
官方文档
- CLI Reference — 完整参数参考
- Interactive Mode — 交互模式文档
本章源文件 (点击查看完整内容)
README.md— CLI 完整使用指南