Skip to content

3.5 CLI 高级用法 — 把 Claude Code 嵌入你的工作流

学习目标

学完这节课,你将能够:

  • 使用管道模式将文件或命令输出传给 Claude Code 处理
  • 在脚本和 CI/CD 中使用非交互模式
  • 用 JSON 输出格式对接其他程序
  • 通过预算控制防止意外超支

管道模式 — 让 Claude Code 处理任何输入

Unix 哲学的核心思想之一:小程序通过管道组合成强大的工作流。Claude Code 完美支持这个理念。

基本用法

-p(print)参数启用管道模式,Claude Code 会读取标准输入、处理、输出结果,然后退出。不进入交互对话。

bash
# 审查一个文件
cat src/auth.ts | claude -p "审查这段代码的安全性"

# 解释一段错误日志
tail -100 /var/log/app.log | claude -p "分析这些错误日志,找出根因"

# 给函数写文档注释
cat src/utils.py | claude -p "给每个函数添加 docstring"

[截图: cat + pipe + claude -p 的终端执行效果,显示输入的代码和输出的审查结果]

实用组合

管道模式的威力在于和其他命令组合:

bash
# 审查 Git 最近的改动
git diff HEAD~1 | claude -p "审查这些改动,关注潜在的 Bug"

# 分析测试失败原因
npm test 2>&1 | claude -p "分析这些测试失败的原因并给出修复建议"

# 解释一个复杂命令
echo "find . -name '*.py' -exec grep -l 'import os' {} +" | claude -p "解释这个命令做了什么"

# 将 CSV 转换为 Markdown 表格
cat data.csv | claude -p "把这个 CSV 转换为 Markdown 表格"

# 代码翻译:Python 转 TypeScript
cat utils.py | claude -p "将这段 Python 代码翻译为 TypeScript"

[截图: git diff | claude -p 审查 Git 改动的实际效果]

重定向输出到文件

管道模式的输出可以重定向到文件,实现自动化处理:

bash
# 生成 API 文档并保存
cat src/routes/*.ts | claude -p "根据这些路由文件生成 API 文档" > docs/api.md

# 批量处理多个文件的审查报告
for f in src/*.ts; do
  echo "=== $f ===" >> review-report.md
  cat "$f" | claude -p "简要审查这段代码" >> review-report.md
done

非交互模式 — 脚本和自动化中使用

管道模式 (-p) 本身就是非交互的。但你也可以不通过管道、直接传入提示词:

bash
# 直接传入提示词(不从 stdin 读取)
claude -p "在当前目录创建一个 .gitignore 文件,适合 Node.js 项目"

# 指定工作目录
claude -p "分析这个项目的依赖结构" --project ~/my-app

在 CI/CD 中使用

Claude Code 可以嵌入你的持续集成流水线:

yaml
# GitHub Actions 示例
- name: AI Code Review
  run: |
    git diff ${{ github.event.before }}...${{ github.sha }} | \
      claude -p "审查这些代码改动,输出 JSON 格式的问题列表" \
      --output-format json \
      --max-budget-usd 0.50
bash
# 在部署脚本中使用
#!/bin/bash
ERRORS=$(npm run build 2>&1)
if [ $? -ne 0 ]; then
  echo "$ERRORS" | claude -p "分析构建错误并给出修复步骤" 
  exit 1
fi

[截图: GitHub Actions 中 Claude Code 自动审查 PR 的运行日志]


JSON 输出 — 方便程序处理

当你需要把 Claude Code 的输出对接到其他程序时,JSON 格式是最可靠的选择。

bash
# 输出 JSON 格式
claude -p "列出这个项目用到的所有第三方依赖及其版本" --output-format json

输出示例:

json
{
  "result": "...",
  "cost_usd": 0.03,
  "duration_ms": 4521,
  "model": "claude-sonnet-4-20250514"
}

结合 jq 处理 JSON

bash
# 提取纯结果文本
claude -p "分析这段代码" --output-format json | jq -r '.result'

# 获取花费金额
claude -p "审查代码" --output-format json | jq '.cost_usd'

流式 JSON 输出

对于长输出,可以使用流式 JSON 模式,实时获取每一块输出:

bash
claude -p "详细分析项目架构" --output-format stream-json

每一行是一个独立的 JSON 对象,方便逐行解析:

json
{"type":"text","content":"## 项目架构分析\n\n"}
{"type":"text","content":"### 目录结构\n\n"}
...
{"type":"result","cost_usd":0.05,"duration_ms":8200}

预算控制 — 防止意外超支

Claude Code 按 token 计费,一个复杂任务可能消耗大量 token。预算控制帮你设定上限。

--max-budget-usd

限制单次调用的最大花费(单位:美元):

bash
# 限制单次最多花 1 美元
claude -p "重构整个项目的错误处理" --max-budget-usd 1.00

# 在自动化脚本中使用低预算
claude -p "快速审查这个 PR" --max-budget-usd 0.25

如果达到预算上限,Claude Code 会停止当前任务并告诉你原因。已经完成的工作不会丢失。

[截图: 达到预算上限时终端显示的提示信息]

查看花费

交互模式下随时查看:

/cost

命令行查看历史花费:

bash
# 查看最近的花费统计
claude cost

预算管理建议

场景建议预算
代码审查(单文件)$0.10 - $0.25
功能开发(中等复杂度)$0.50 - $2.00
大型重构$2.00 - $5.00
CI/CD 自动化(每次触发)$0.25 - $0.50
探索性问答$0.05 - $0.10

更多 CLI 参数速查

bash
# 指定模型
claude -p "快速回答" --model claude-sonnet-4-20250514

# 继续上次的会话
claude --resume

# 显示版本
claude --version

# 指定权限模式
claude --permission-mode acceptEdits

# 不加载 MCP 服务(加速启动)
claude --no-mcp

# 显示详细日志(调试用)
claude --verbose

实战:打造你的 AI 工具链

把以上能力组合起来,你可以打造一套完整的 AI 辅助工具链:

bash
# ~/.bashrc 或 ~/.zshrc 中添加别名

# 快速审查当前 Git 改动
alias ai-review='git diff | claude -p "审查这些代码改动" --max-budget-usd 0.50'

# 解释错误日志
alias ai-log='tail -50 /var/log/app.log | claude -p "分析最近的错误" --max-budget-usd 0.25'

# 生成 commit message
alias ai-commit='git diff --cached | claude -p "为这些改动生成一个规范的 commit message,只输出 message 本身" --max-budget-usd 0.10'

# 快速代码审查并输出 JSON
alias ai-audit='claude -p "审查当前目录的代码质量,输出JSON格式的问题列表" --output-format json --max-budget-usd 1.00'

[截图: 终端中使用 ai-review 别名快速审查 Git 改动的效果]


小结

  • 管道模式 (-p):把 Claude Code 变成 Unix 管道中的一环,组合无限可能
  • 非交互模式:脚本和 CI/CD 中自动调用,无需人工干预
  • JSON 输出 (--output-format json):结构化输出,方便程序解析
  • 预算控制 (--max-budget-usd):给每次调用设上限,防止意外超支
  • 通过 shell 别名把常用组合固化下来,打造你的个人 AI 工具链

安全提示:在 CI/CD 中使用 Claude Code 时,注意不要将敏感的环境变量(API 密钥、数据库密码)通过管道传给 Claude Code。虽然 Anthropic 不会用对话数据训练模型,但最佳实践是避免将密钥出现在任何对话中。使用 --max-budget-usd 防止自动化流水线中的意外高额消费。

用 Claude Code 构建,用 VitePress 驱动