我之前的 code review 流程是这样的:写完代码,开 Claude Code,粘代码进去,输入 /review,等结果,再处理反馈。
整个流程没问题,但每次都要我手动触发。
后来我把这个步骤接进了 git hook:每次 git push,自动调用 Claude Code 跑一遍 review,结果写进 log 文件。我不需要在旁边,它自己跑完,我有空了再看结果。
这不是魔法,是 Claude Code 的 headless mode。
你还在手动触发,它其实可以自动跑。
什么是 Headless Mode
Headless mode 是 Claude Code 的非交互运行模式。不开终端 UI,不等用户输入,直接接收指令、执行、输出结果,然后退出。
claude -p "帮我 review 这个文件的错误处理" --output-format json
-p 参数直接传入提示词,处理完输出结果,进程结束。可以被脚本调用、git hook 触发、CI/CD 执行、cron job 定时运行。
几个实用场景
git push 时自动 code review
.git/hooks/pre-push:
#!/bin/bash
claude -p "review 最近一次 commit,检查边界条件和错误处理" \
--output-format text > .claude-review.log
CI/CD 里自动生成 PR 描述
git diff main...HEAD | claude -p "根据这个 diff 生成 PR 描述" --output-format text
定时检查文档是否过期
claude -p "检查 docs/ 目录下的文档,找出和当前代码不一致的地方" \
--output-format json > doc-audit.json
权限控制:headless 模式里要小心
原则:先给读权限,观察行为。确认符合预期,再考虑给写权限。
自动化 + 写权限是高风险组合。自动化 + 只读是低风险起点。先把「它会做什么」搞清楚,再决定「让不让它做」。
和 Hooks 的区别
第三篇讲的 Hooks 是「Claude Code 动作触发 shell 命令」。
Headless mode 是「shell 命令触发 Claude Code」。
两者方向相反,可以组合:用 cron 触发 headless 模式跑分析,分析完之后 hook 自动发通知。
找一个你现在手动重复的 Claude Code 操作,想想它能不能自动化。
你现在有哪些操作是在手动重复触发的?欢迎评论区说说。
这是「Claude Code 那些没人告诉你的用法」第十篇。关注不迷路。
更多 Java 工程实战与 AI 工具内容,欢迎关注公众号:SamLai 效率研习社