Headless
Headless 这个词来自“无头浏览器”(Headless Browser)的概念——没有图形界面,但功能完整。claude code中的harness在终端里与 Claude 对话——你输入一句话,Claude 响应,你再输入,它再响应。这是交互模式。交互模式的好处是灵活,你可以随时调整方向、追问细节、确认操作。但它有一个根本限制——需要一个人类一直坐在屏幕前面。Headless 模式下的 Claude Code 没有交互式终端界面,但拥有和交互模式完全相同的代码分析能力、工具调用能力和推理能力。唯一的区别是:输入变成了一次性的 prompt,输出变成了 stdout 上的文本或 JSON,不再有来回对话。启用 Headless 模式的关键是 -p(或 --print)标志。这个标志的名字很直观,print,意思是“把结果打印出来就行,不要打开交互界面”。理解这一点很重要,因为 -p 不只改变了输出方式,更重要的是它改变了 Claude Code 的整个运行模型——从“持续对话”变成了“单次执行”。# 基本 headless 执行claude -p "解释这段代码是做什么的"# 从 stdin 读取输入cat code.py | claude -p "分析这段代码"# 结合文件内容claude -p "找出这个文件中的 Bug" buggy.js命令Headless 模式提供了一组命令行参数来精细控制执行行为。这些参数是你在自动化脚本和 CI 配置中最常用的控制手段。特别值得注意的是 --allowedTools 和 --max-turns 这两个参数,它们是安全防护的第一道防线,能有效限制 Claude 在无人监管环境中的行为边界。输出格式与管道集成Headless 模式支持三种输出格式,适用于不同的自动化场景。选择哪种格式,取决于你的下游消费者是谁——是人类读者、是程序解析器、还是实时监控系统。(1)Text 格式Text 是默认格式,也是最简单的格式。适用场景为日志记录、简单脚本、人工审查。它直接输出 Claude 的回复文本,没有任何元数据包装。如果你只是想在