Git Hooks + 定时任务:把 Claude Code 嵌入任何自动化流程

Git Hooks + 定时任务:把 Claude Code 嵌入任何自动化流程

系列第 4 篇 · 前置:第 1 篇第 2 篇第 3 篇


前三篇解决了"怎么调"和"怎么串"。这一篇解决"什么时候调"------让 Claude Code 自动在你需要的时候触发。


先澄清:Claude Code Hook ≠ Git Hook

这两个是完全不同的东西,只是都叫 "Hook":

Claude Code Hook Git Hook
配置文件 .claude/settings.json .git/hooks/<事件名>
谁触发 Claude Code 执行工具时 你执行 git commit
管什么 Claude 的 Edit/Bash 行为 git 的操作流程

Git Hook 不看是谁调了 git commit,只看 git commit 有没有被执行。 你在 Claude Code 交互模式里说"帮我提交",Claude 在后台跑 git commit------Git Hook 一样触发。


实战一:提交前自动类型检查

创建 .git/hooks/pre-commit

bash 复制代码
#!/bin/bash
echo "🔍 TypeScript 类型检查..."

cd ~/my-project
npx tsc --noEmit 2>&1

if [ $? -ne 0 ]; then
  echo "❌ 类型检查未通过,提交已阻止"
  exit 1
fi

echo "✅ 通过"
exit 0
bash 复制代码
chmod +x .git/hooks/pre-commit

之后每次 git commit,无论你手动敲还是 Claude 代劳,都会先跑检查。不通过就阻止。

如果想更智能------不用固定脚本,而是让 Claude 判断结果:

bash 复制代码
#!/bin/bash
result=$(cd ~/my-project && \
  claude -p "运行 npx tsc --noEmit,输出 JSON:{errors: 错误数}。只输出 JSON。" \
    --allowed-tools "Bash" --model haiku --max-turns 1)

errors=$(echo "$result" | jq -r '.errors')

if [ "$errors" -ne 0 ]; then
  echo "❌ $errors 个类型错误,提交已阻止"
  exit 1
fi
exit 0

实战二:AI 自动写 commit message

创建 .git/hooks/prepare-commit-msg

bash 复制代码
#!/bin/bash
# 只在用户没有手动写 message 时触发
if [ "$2" = "" ]; then
  echo "🤖 AI 正在生成 commit message..."
  git diff --cached --stat | \
    claude -p "根据上面的变更生成英文 commit message。格式 type(scope): 描述,不超过 72 字符。只输出 message。" \
      --allowed-tools "Read" --model haiku > "$1"
  echo "✅ 已生成"
fi

之后直接 git commit(不带 -m),Claude 自动帮你写。


三条底线

  • .git/hooks/ 不会被 git 跟踪,换电脑要重新配置
  • 紧急跳过:git commit --no-verify
  • 删掉对应文件 = 关闭 Hook

实战三:定时任务(系统 cron + Headless)

每天自动搜 AI 热点,整理到你本地文档。

第一步:写脚本

bash 复制代码
#!/bin/bash
# ~/scripts/daily-ai-brief.sh
claude -p "搜索过去 24 小时最重要的 AI 新闻(5 条以内),每条 100 字中文摘要,保存到 ~/Documents/daily-ai-brief.md。如果文件已存在,追加到 # $(date +%Y-%m-%d) AI 早报 标题下。" \
  --allowed-tools "WebSearch,WebFetch,Write,Read" \
  >> /tmp/claude-cron.log 2>&1
bash 复制代码
chmod +x ~/scripts/daily-ai-brief.sh
# 先手动跑一次确认没问题:
~/scripts/daily-ai-brief.sh

第二步:配置 cron

复制代码
crontab -e

加入:

bash 复制代码
# 每天早上 9:07(不选整点,避开 cron 执行高峰)
7 9 * * * /bin/bash /Users/geek/scripts/daily-ai-brief.sh

为什么要用独立脚本,而不是直接把命令写在 crontab 里? crontab 中 % 是换行符,$(date +%Y-%m-%d) 里的 % 会破坏命令。写成 .sh 文件避免了这个问题,也方便单独测试。

确认配置生效:

复制代码
crontab -l

实战四:批量处理 + 自动修复

bash 复制代码
#!/bin/bash
# 遍历所有数据文件,批量生成视频
DATA_DIR="~/project/src/data"
LOG="/tmp/video-batch.log"

for file in "$DATA_DIR"/*.ts; do
  name=$(basename "$file" .ts)
  echo "[$(date +%H:%M:%S)] 生成 $name ..." | tee -a "$LOG"
  
  (cd ~/project && \
    claude -p "用 $file 生成横版和竖版视频。完成后输出 JSON:{name: $name, files: [路径]}。" \
      --allowed-tools "Bash,Read,Write,Edit") >> "$LOG" 2>&1
done

编译 + 自动修复:

bash 复制代码
#!/bin/bash
DIR="~/my-project"

result=$(cd "$DIR" && \
  claude -p "运行 npx tsc --noEmit,输出 JSON:{errors: 错误数}。只输出 JSON。" \
    --allowed-tools "Bash" --model haiku --max-turns 1)

errors=$(echo "$result" | jq -r '.errors')

if [ "$errors" -eq 0 ]; then
  echo "✅ 通过"
  exit 0
fi

echo "❌ $errors 个错误,自动修复中..."
claude -p "上面 tsc 输出了 $errors 个编译错误。逐一修复所有类型错误,不修改业务逻辑。" \
  --allowed-tools "Edit,Read,Bash" --continue --max-turns 5

echo "修复完成,重新检查..."

速查表

bash 复制代码
# 喂数据给 Claude
命令 | claude -p "对这个数据做什么" --allowed-tools "..."

# 拿数据出来
claude -p "..." --output-format json | jq '.key'

# 两头都接
数据命令 | claude -p "..." --allowed-tools "..." | 消费命令

# Git Hook 模板
.git/hooks/pre-commit + Headless = 提交前自动检查

# Cron 模板
crontab + .sh 脚本 + Headless = 定时自动化

练习建议

按以下顺序,10 分钟之内全部跑通:

  1. claude -p "一句话解释 TypeScript" --model haiku
  2. claude -p "读取 package.json,统计依赖数量" --allowed-tools "Read"
  3. ls src/ | claude -p "分析这些文件名" --model haiku
  4. 写一个 .sh 脚本,加上 #!/bin/bashchmod +x,跑通

五步走完,Headless 的核心用法就全掌握了。后续按需查阅各篇详细说明。


系列结束。四篇涵盖了 Headless 模式从入门到自动化嵌入的全部内容。

相关推荐
9i编程1 小时前
手敲重构学透 Multi-Agent 代码(上):逐行拆解 AgentScope 1.0.8,从「跑通了但没懂」到真懂了
人工智能·openai·ai编程
libokaifa1 小时前
Claude Code 的工程化落地:插件(Plugin)篇
ai编程
Canace2 小时前
Harness Engineering 到底在做什么
前端·人工智能·ai编程
Canace2 小时前
用 AI 写了一天代码,为什么反而更累了?
前端·人工智能·ai编程
王莹月2 小时前
文生图接口的提示词写多长合适?nano banana pro / gpt-image-2 实测长度与负面词
gpt·ai·chatgpt·ai作画·aigc·agi
u0102789403 小时前
AI 办公:技术演进路径与落地实践困境探析
人工智能·aigc
ajassi200013 小时前
AI语音智能体开发日记(十二)GX8006 固件定制指南——从双唤醒词到 UART 音频传输
人工智能·ai·ai编程
DisonTangor14 小时前
【SeeDream开源平替】MiniMax H3 重磅开源:全模态视频生成新标杆,2K 画质 + 原生立体声,15 秒大片一键生成!
人工智能·ai作画·开源·aigc·音视频
JavaGuide14 小时前
爽用 DeepSeek V4 Flash、GLM-5.2、Qwen3.8 Max、GPT 5.6 Luna,OpenCode 太香了!
ai编程·claude