091、非交互模式与管道输入:自动化脚本中的 Claude Code 调用与结果处理上周五凌晨两点,我被一条告警短信吵醒——生产环境的日志分析流水线挂了。排查后发现,问题出在一个本该自动执行的 Claude Code 调用上:脚本里用了claude命令,但没处理非交互模式下的输出格式,结果解析 JSON 时直接崩溃。更坑的是,这个脚本在开发环境跑得好好的,因为开发机上有 TTY,Claude Code 默认走了交互模式,输出带了 ANSI 转义和进度条。一到生产环境的 Docker 容器里,没有 TTY,输出变成了纯文本,格式全变了。这个坑让我意识到,很多人(包括之前的我)对 Claude Code 的非交互模式理解太浅。今天这篇笔记,就把我踩过的坑和总结的套路写清楚。非交互模式到底怎么触发?Claude Code 判断是否进入非交互模式,核心看两点:stdin 是否被重定向,以及是否有 TTY。简单说:如果你在终端直接敲claude,有 TTY,走交互模式如果你用echo "xxx" | claude或者claude input.txt,stdin 被重定向,自动切非交互如果你在 Docker 里跑claude且没分配-t,