claude -c -p 命令

结合会话恢复和打印模式执行一次性查询

概述

claude -c -p "query" 命令结合了会话恢复和打印模式,允许您在继续最近对话的同时执行一次性查询,适合脚本和自动化场景。

命令语法

claude -c -p "query" [选项]

功能描述

这个命令结合了两个功能:

  • -c--continue):加载最近的对话会话
  • -p--print):通过 SDK 执行查询,然后退出

这允许您:

  • 在之前对话的上下文中执行查询
  • 获取查询结果而不进入交互模式
  • 保持对话的连续性

使用示例

基本用法

claude -c -p "检查类型错误"

代码审查

claude -c -p "审查最近的代码变更"

测试结果分析

claude -c -p "分析测试失败的原因"

结合输出格式

claude -c -p "总结当前进度" --output-format json

指定模型

claude -c -p "优化性能" --model claude-4-opus

使用场景

CI/CD 集成

# 在 CI/CD 流程中继续之前的对话
claude -c -p "运行测试并分析结果" --output-format json

定期检查

# 定期检查项目状态
claude -c -p "检查代码质量" --output-format json

自动化报告

# 生成进度报告
claude -c -p "生成进度报告" --output-format json > report.json

批量任务

# 执行多个相关任务
claude -c -p "任务1" --output-format json > result1.json
claude -c -p "任务2" --output-format json > result2.json
claude -c -p "任务3" --output-format json > result3.json

高级用法

结合多个选项

claude -c -p "任务" --model opus --output-format json --verbose

错误处理

#!/bin/bash
# 执行查询并处理错误
result=$(claude -c -p "任务" --output-format json 2>&1)
if [ $? -ne 0 ]; then
  echo "错误: $result"
  exit 1
fi
echo "$result" | jq '.result'

超时控制

# 设置超时
timeout 60 claude -c -p "长时间任务"

实际应用示例

自动化工作流

#!/bin/bash
# 每天自动检查项目状态
echo "=== 每日检查 ==="

# 检查代码质量
claude -c -p "检查代码质量" --output-format json > quality.json

# 检查测试状态
claude -c -p "检查测试状态" --output-format json > tests.json

# 生成报告
claude -c -p "生成每日报告" --output-format json > report.json

echo "检查完成"

持续集成

# GitHub Actions 示例
name: Daily Check
on:
  schedule:
    - cron: '0 9 * * *'
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Check Code Quality
        run: |
          result=$(claude -c -p "检查代码质量" --output-format json)
          echo "$result" | jq '.issues' > issues.json

与其他命令的对比

命令加载会话进入 REPL输出格式适用场景
claude -c交互式继续交互式工作
claude -c -p可指定脚本和自动化
claude -p可指定独立查询
claude -r "id" -p指定会话可指定精确控制会话

上下文保持

对话历史

-c 标志会加载完整的对话历史,包括:

  • 之前的查询和响应
  • 代码生成和修改
  • 文件访问记录
  • 工具调用历史

上下文限制

  • 上下文长度:对话历史有长度限制,过长的历史可能被截断
  • 上下文相关性:如果查询与之前对话不相关,上下文可能没有帮助
  • 上下文更新:新的查询会更新对话上下文

常见问题

问题答案
查询会修改会话吗?是的,查询会更新对话上下文
可以使用其他会话吗?不可以,-c 只加载最近的会话,需使用 -r
上下文会保留多久?保留在会话文件中,直到被删除或覆盖
查询失败会影响会话吗?不会修改会话,但会记录错误信息

注意事项

  • 会话依赖:需要当前目录中有可用的会话
  • 上下文相关:查询应该与之前对话相关
  • 输出格式:建议使用 --output-format json 便于脚本解析
  • 会话更新:查询会更新对话上下文,影响后续的 -c 调用

On this page