首页 › tutorials › Claude Code自动化:Agent模式完全指南

Claude Code 自动化:Agent 模式与 -p 模式、Hooks、批量任务完全指南

概述

本教程面向已经熟悉 Claude Code 基础用法的开发者,深入讲解三大自动化核心能力:Headless 模式(-p 模式)、Hooks 事件系统、子 Agent 并行调度与批量任务。学完本教程,你将掌握将 Claude Code 嵌入 CI/CD 管道、编写事件驱动的安全防护、以及用循环 Agent 完成大规模自动化项目的全部技能。

适用人群:有一定 Claude Code 使用经验,希望提升自动化水平的后端/DevOps/全栈开发者。

前置条件

条件 说明
Claude Code ≥ 1.0 claude --version 确认
Node.js ≥ 18 Hooks 脚本运行环境
Python ≥ 3.8(可选) 复杂 Hooks 脚本需要
Git + GitHub CLI CI/CD 集成和 PR 自动化
基础 Shell 脚本能力 编写自动化循环和批处理

第一章:Headless 模式 —— 非交互式运行 Claude Code

1.1 核心概念

-p(--print)标志是 Claude Code 自动化的基石。它让 Claude Code 脱离交互式 REPL,接收一条 prompt、执行、输出结果后退出。本质上,它把 Claude Code 从一个对话工具变成了一个可编程的命令行工具。

flowchart LR
    A[Shell 脚本 / CI Pipeline] -->|claude -p "prompt"| B[Claude Code Headless]
    B --> C{工具调用}
    C -->|FileRead| D[读取文件]
    C -->|Bash| E[执行命令]
    C -->|Grep/Glob| F[搜索代码]
    C -->|Edit/Write| G[修改文件]
    D & E & F & G --> B
    B -->|stdout| H[结构化输出 JSON/Text]
    H --> A

1.2 基础用法

# 最简单的用法:传入 prompt,获取文本输出
claude -p "解释 src/auth.ts 文件的核心逻辑"

# 通过管道传入内容
echo "为以下代码写单元测试:$(cat src/utils.py)" | claude -p

# 获取 JSON 格式输出,方便程序解析
claude -p --output-format json "列出 src/ 目录下所有 TODO 注释"

# 流式 JSON 输出(适合实时处理)
claude -p --output-format stream-json "重构 src/api/ 下的错误处理"

1.3 关键 CLI 参数一览

参数 作用 示例
-p / --print 非交互模式,输出后退出 claude -p "task"
--output-format 输出格式:text / json / stream-json --output-format json
--allowedTools 限制可用工具,降低风险 --allowedTools "FileRead,Grep,Glob"
--max-turns 限制 Agent 循环轮次 --max-turns 5
--max-budget-usd 设置单次运行费用上限 --max-budget-usd 1.00
--model 指定使用的模型 --model claude-haiku-4-5-20251001
--system-prompt 注入系统级指令 --system-prompt "你是一个代码审查专家"
--dangerously-skip-permissions 跳过所有权限确认(仅限沙箱环境) 仅在 CI/Docker 中使用

1.4 实战:自动化代码审查脚本

#!/bin/bash
# auto-review.sh — 对比 main 分支,自动审查当前分支的变更

set -euo pipefail

DIFF=$(git diff main...HEAD --stat)
if [ -z "$DIFF" ]; then
  echo "没有发现与 main 分支的差异"
  exit 0
fi

echo "=== 开始自动代码审查 ==="

claude -p \
  --max-turns 3 \
  --allowedTools "FileRead,Grep,Glob" \
  --output-format text \
  --system-prompt "你是一位资深代码审查专家。审查时请关注:
1. 潜在的 Bug 和边界情况
2. 安全漏洞(注入、XSS、硬编码密钥)
3. 性能问题
4. 代码风格一致性
请用中文回复,每个问题给出严重级别(高/中/低)和修复建议。" \
  "请审查当前分支相对于 main 的所有代码变更:$(git diff main...HEAD)"

运行方式:

chmod +x auto-review.sh
./auto-review.sh

1.5 实战:JSON 输出 + 程序化处理

#!/bin/bash
# find-tech-debt.sh — 自动发现技术债务并生成报告

RESULT=$(claude -p \
  --max-turns 4 \
  --allowedTools "FileRead,Grep,Glob" \
  --output-format json \
  "扫描整个项目,找出以下技术债务:
  1. 含有 TODO/FIXME/HACK 注释的代码
  2. 超过 300 行的函数
  3. 重复代码模式
  4. 缺少错误处理的异步函数
  以 JSON 格式输出结果,按严重程度排序。")

# 提取结果消息
echo "$RESULT" | jq -r '.result' > tech-debt-report.json
echo "报告已保存到 tech-debt-report.json"

# 可选:发送到 Slack
# jq -r '.result' tech-debt-report.json | slack-cli post --channel eng-alerts

1.6 常见问题与解决方案

问题 原因 解决方案
脚本挂起无输出 Claude 等待权限确认 添加 --allowedTools 限制工具,或确认权限已授权
API 费用超预期 Agent 循环过多 设置 --max-turns 和 --max-budget-usd
JSON 解析失败 输出包含非 JSON 内容 使用 --output-format json 确保格式正确
权限被拒绝 工具未授权 在 .claude/settings.json 中预授权所需工具

第二章:Hooks 事件系统 —— 为 Claude Code 添加"条件反射"

2.1 什么是 Hooks

Hooks 是 Claude Code 的可编程事件响应机制。你可以在特定事件发生时(如工具调用前、会话开始时、Agent 停止时)自动执行自定义脚本。可以把它理解为 Claude Code 的"中间件层"——在不修改 Claude Code 核心逻辑的前提下,注入自定义行为。

图表2

图表 2

2.2 Hook 事件类型

截至 2026 年初,Claude Code 支持 17+ 种 Hook 事件。以下是核心事件分类:

事件 触发时机 典型用途
PreToolUse 工具调用之前 安全拦截、输入验证、日志记录
PostToolUse 工具调用之后 自动格式化、通知、统计
SessionStart 会话启动时 加载项目配置、注入上下文
Stop Agent 准备退出时 循环拦截(Ralph Loop)、总结报告
SubagentStop 子 Agent 完成时 汇总子 Agent 结果
Notification 系统通知时 转发到 Slack/邮件

2.3 Hook 配置结构

Hook 在 .claude/settings.json(项目级)或 ~/.claude/settings.json(全局级)中配置:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/pre_bash.py"
          }
        ]
      },
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/pre_edit.py"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write $CLAUDE_FILE_PATH"
          }
        ]
      }
    ],
    "SessionStart": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "echo '项目规范已加载:请遵循 CLAUDE.md 中的编码规范'"
          }
        ]
      }
    ]
  }
}

2.4 Hook 脚本的输入输出协议

Hook 脚本通过 stdin 接收 JSON 输入,通过 exit code 控制行为:

输入格式(stdin JSON):

{
  "session_id": "abc123",
  "tool_name": "Bash",
  "tool_input": {
    "command": "rm -rf /tmp/test"
  }
}

Exit Code 语义:

Exit Code 含义 适用场景
0 允许继续,无额外信息 正常放行
0 + stderr 输出 允许继续,但向 Agent 显示反馈 警告提示
2 阻止操作,显示 stderr 中的消息 安全拦截

2.5 实战:危险命令拦截 Hook

创建 .claude/hooks/pre_bash.py:

#!/usr/bin/env python3
"""PreToolUse Hook: 拦截危险的 Bash 命令"""
import json
import sys
import re

def is_dangerous(command):
    normalized = ' '.join(command.lower().split())

    # 检测 rm -rf 及其变体
    dangerous_patterns = [
        r'\brm\s+.*-[a-z]*r[a-z]*f',
        r'\brm\s+.*-[a-z]*f[a-z]*r',
        r'\brm\s+--recursive\s+--force',
    ]

    # 检测危险路径
    dangerous_targets = ['/', '/*', '~', '$HOME', '..']

    for pattern in dangerous_patterns:
        if re.search(pattern, normalized):
            for target in dangerous_targets:
                if re.search(re.escape(target), normalized):
                    return True
    return False

def is_env_access(command):
    """检测对 .env 文件的访问"""
    env_patterns = [
        r'\bcat\s+.*\.env\b',
        r'\becho\s+.*>\s*\.env\b',
        r'\btouch\s+.*\.env\b',
    ]
    for pattern in env_patterns:
        if re.search(pattern, command):
            return True
    return False

# 读取 Hook 输入
data = json.load(sys.stdin)
tool_name = data.get("tool_name", "")
tool_input = data.get("tool_input", {})

if tool_name == "Bash":
    command = tool_input.get("command", "")

    if is_dangerous(command):
        print("⛔ 安全拦截:检测到危险的 rm 命令。请确认操作目标后手动执行。", file=sys.stderr)
        sys.exit(2)

    if is_env_access(command):
        print("⚠️ 警告:正在访问 .env 文件,请确保不会泄露敏感信息。", file=sys.stderr)
        sys.exit(0)  # 允许但警告

sys.exit(0)  # 正常放行

在 .claude/settings.json 中注册:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/pre_bash.py"
          }
        ]
      }
    ]
  }
}

2.6 实战:PostToolUse 自动格式化 Hook

每次 Claude 编辑代码文件后自动运行 Prettier 和 ESLint:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/auto_format.sh"
          }
        ]
      }
    ]
  }
}

.claude/hooks/auto_format.sh:

#!/bin/bash
# 自动格式化 Hook:在 Claude 编辑文件后运行

# 从 stdin 读取 Hook 数据
DATA=$(cat)
FILE_PATH=$(echo "$DATA" | jq -r '.tool_input.file_path // empty')

if [ -z "$FILE_PATH" ]; then
  exit 0
fi

# 根据文件扩展名选择格式化工具
case "$FILE_PATH" in
  *.ts|*.tsx|*.js|*.jsx)
    npx prettier --write "$FILE_PATH" 2>/dev/null
    npx eslint --fix "$FILE_PATH" 2>/dev/null
    ;;
  *.py)
    python3 -m black "$FILE_PATH" 2>/dev/null
    python3 -m isort "$FILE_PATH" 2>/dev/null
    ;;
  *.go)
    gofmt -w "$FILE_PATH" 2>/dev/null
    ;;
esac

# 输出反馈给 Agent
echo "✅ 已自动格式化: $FILE_PATH" >&2
exit 0

2.7 实战:SessionStart Hook —— 注入项目上下文

#!/bin/bash
# .claude/hooks/session_start.sh
# 在每次会话开始时向 Agent 注入项目规范

echo "📋 项目规范提醒:
- 本项目使用 TypeScript 严格模式
- 所有 API 端点必须有输入验证
- 提交前确保测试通过
- 数据库迁移使用 Drizzle ORM
- 禁止使用 any 类型" >&2

exit 0

2.8 Stop Hook 的妙用:Ralph Loop

Stop Hook 最强大的用途是创建 自循环 Agent——当 Claude 想退出时,Hook 拦截退出并注入新的 prompt,让 Agent 持续工作直到满足条件。这就是 Claude Code 官方 ralph-wiggum 插件的核心原理:

图表3

图表 3

官方 Ralph Wiggum 插件的 Stop Hook 核心逻辑:

#!/bin/bash
# hooks/stop-hook.sh — Ralph Loop 的核心

DATA=$(cat)
RESULT=$(echo "$DATA" | jq -r '.result // empty')
COMPLETION_PROMISE="COMPLETE"
MAX_ITERATIONS=50

# 检查是否包含完成信号
if echo "$RESULT" | grep -q "$COMPLETION_PROMISE"; then
  echo "🎉 任务完成!" >&2
  exit 0  # 允许退出
fi

# 检查迭代次数
ITERATION_FILE="/tmp/ralph_iteration"
CURRENT=$(cat "$ITERATION_FILE" 2>/dev/null || echo "0")
CURRENT=$((CURRENT + 1))
echo "$CURRENT" > "$ITERATION_FILE"

if [ "$CURRENT" -ge "$MAX_ITERATIONS" ]; then
  echo "⏰ 达到最大迭代次数 ($MAX_ITERATIONS),退出循环。" >&2
  exit 0
fi

# 注入 prompt 继续循环
echo "⏳ 第 $CURRENT/$MAX_ITERATIONS 次迭代。继续工作..." >&2
PROMPT=$(cat /tmp/ralph_prompt)
echo "$PROMPT" >&2  # 将 prompt 输出到 stderr,Agent 会看到

exit 0

第三章:子 Agent 调度与并行执行

3.1 子 Agent 架构

Claude Code 的 Task 工具允许主 Agent 派遣专门的子 Agent 并行处理独立任务。每个子 Agent 拥有独立的上下文窗口,不会污染主对话的历史记录。

图表4

图表 4

3.2 内置子 Agent 类型

类型 用途 可用工具
general-purpose 通用研究、多步骤任务 全部工具
Explore 快速代码库搜索 只读工具(不可编辑)
Plan 架构设计、实现规划 只读工具(不可编辑)

3.3 自定义子 Agent

在 .claude/agents/ 目录下创建 Markdown 文件即可定义自定义子 Agent:

<!-- .claude/agents/security-scanner.md -->
---
name: security-scanner
description: 专门扫描代码中的安全漏洞
tools:
  - Read
  - Grep
  - Glob
  - Bash
model: claude-haiku-4-5-20251001
---

你是一位安全审计专家。你的任务是:

1. 扫描给定目录下的所有源代码文件
2. 检查以下安全漏洞:
   - SQL 注入
   - XSS 跨站脚本
   - 命令注入
   - 硬编码密钥/密码
   - 不安全的反序列化
3. 对每个发现的问题,给出:
   - 文件路径和行号
   - 严重级别(严重/高/中/低)
   - 修复建议

输出格式为 Markdown 表格。

使用时在对话中通过 Task 工具调用,或直接在 prompt 中提及该子 Agent。

3.4 并行子 Agent 的调度模式

模式一:Fan-out(扇出)—— 同一任务,多角度分析

图表5

图表 5

这正是官方 code-review 插件的工作方式——启动 4 个并行 Agent 独立审查 PR,每个 Agent 从不同角度分析,然后用置信度评分过滤掉误报(低于 80 分的直接丢弃),最终只输出高置信度的审查意见。

模式二:Pipeline(管道)—— 串行依赖,逐步深化

图表6

图表 6

官方 feature-dev 插件采用这种模式:先探索代码库,再设计方案,最后实现。

模式三:Map-Reduce(映射归约)—— 大规模批量任务

图表7

图表 7

3.5 实战:并行子 Agent 批量重构

假设你需要将项目中所有 API 端点添加输入验证。可以创建一个自定义 Agent 并在主会话中批量调度:

<!-- .claude/agents/validation-adder.md -->
---
name: validation-adder
description: 为单个 API 端点文件添加输入验证
tools:
  - Read
  - Edit
  - Grep
  - Glob
model: claude-sonnet-4-6
---

你是一个代码重构专家。给定一个 API 路由文件,你需要:

1. 读取文件内容
2. 找到所有没有输入验证的端点
3. 使用 zod schema 添加请求体验证
4. 添加适当的错误处理中间件
5. 确保不破坏现有功能

项目使用的技术栈:Express.js + TypeScript + zod

然后在主会话中:

请找到 src/routes/ 下的所有路由文件,然后为每个文件启动一个
validation-adder 子 Agent 并行添加输入验证。

第四章:批量任务与持续 Agent 循环

4.1 /batch 命令

Claude Code 内置了 /batch 命令,用于对多个目标执行相同的操作:

/batch "为以下文件添加 JSDoc 注释" src/**/*.ts

/batch 的工作流程: 1. 展开文件 glob 模式 2. 为每个文件(或文件组)启动独立的 Agent 3. 并行执行相同的 prompt 4. 汇总所有结果

4.2 /simplify 命令

/simplify 是另一个内置命令,专门用于代码审查和简化:

/simplify

它会启动 3 个并行 Agent 对你的代码变更进行审查: 1. 可读性审查:检查命名、结构、复杂度 2. 冗余检测:发现重复代码和过度抽象 3. 简化建议:提出更简洁的实现方式

4.3 Continuous Claude —— 持续循环 Agent

Continuous Claude 是一个开源工具(github.com/AnandChowdhary/continuous-claude),它将 Claude Code 包装在一个持续循环中,自动完成"编码 → 创建 PR → 等待 CI → 合并"的完整生命周期:

# 安装
curl -fsSL https://raw.githubusercontent.com/AnandChowdhary/continuous-claude/main/install.sh | bash

# 使用:自动增加测试覆盖率
continuous-claude \
  --prompt "增加测试覆盖率,直到覆盖率达到 80%" \
  --max-runs 10

其工作流程:

图表8

图表 8

关键设计——上下文持久化:每次迭代结束后,Agent 将进度和发现写入 SHARED_TASK_NOTES.md。下一次迭代时,新的 Claude Code 实例读取该文件,获得之前的上下文。这解决了 LLM 上下文窗口有限的根本问题。

4.4 自己写一个简单的 Agent 循环

不想安装额外工具?一个 while 循环就够了:

#!/bin/bash
# agent-loop.sh — 最简 Agent 循环

PROMPT_FILE="agent-task.md"
NOTES_FILE="AGENT_NOTES.md"
MAX_ITERATIONS=20

# 初始化笔记文件
if [ ! -f "$NOTES_FILE" ]; then
  echo "# Agent 进度笔记" > "$NOTES_FILE"
  echo "" >> "$NOTES_FILE"
  echo "## 任务" >> "$NOTES_FILE"
  cat "$PROMPT_FILE" >> "$NOTES_FILE"
fi

for i in $(seq 1 $MAX_ITERATIONS); do
  echo "=== 迭代 $i/$MAX_ITERATIONS ==="

  RESULT=$(claude -p \
    --max-turns 10 \
    --output-format text \
    "你正在进行第 $i 次迭代(共 $MAX_ITERATIONS 次)。

    请阅读 $NOTES_FILE 了解之前的进度。

    你的核心任务是:$(cat $PROMPT_FILE)

    规则:
    1. 每次只做有意义的进展,不要试图一次完成全部工作
    2. 完成后更新 $NOTES_FILE,记录你做了什么、发现了什么、下一步应该做什么
    3. 如果你认为任务已经全部完成,在输出的最后一行写上 TASK_COMPLETE
    4. 如果遇到无法解决的问题,在最后一行写上 TASK_BLOCKED 和原因")

  echo "$RESULT"

  # 检查完成信号
  if echo "$RESULT" | grep -q "TASK_COMPLETE"; then
    echo "🎉 任务完成!"
    break
  fi

  if echo "$RESULT" | grep -q "TASK_BLOCKED"; then
    echo "⚠️ Agent 遇到阻碍,需要人工干预。"
    break
  fi
done

echo "=== Agent 循环结束 ==="

4.5 实战:多仓库批量操作

对一组 Git 仓库执行批量操作:

#!/bin/bash
# batch-repos.sh — 对多个仓库执行相同的 Claude Code 任务

REPOS=("api-gateway" "user-service" "payment-service" "notification-service")
TASK="升级所有依赖到最新版本,修复所有 breaking changes,确保测试通过"
MODEL="claude-sonnet-4-6"

for repo in "${REPOS[@]}"; do
  echo "=== 处理 $repo ==="
  cd "/projects/$repo" || continue

  claude -p \
    --max-turns 15 \
    --model "$MODEL" \
    "$TASK。项目:$repo。完成后运行测试确保一切正常。"

  echo "=== $repo 处理完毕 ==="
  cd - || exit
done

并行版本(使用 & 后台运行):

#!/bin/bash
# batch-repos-parallel.sh — 并行处理多个仓库

REPOS=("api-gateway" "user-service" "payment-service" "notification-service")
TASK="升级所有依赖到最新版本,修复所有 breaking changes,确保测试通过"

for repo in "${REPOS[@]}"; do
  (
    echo "=== 开始处理 $repo ==="
    cd "/projects/$repo" || exit 1

    claude -p \
      --max-turns 15 \
      --output-format json \
      "$TASK。项目:$repo。" \
      > "/tmp/claude-result-$repo.json" 2>&1

    echo "=== $repo 处理完毕 ==="
  ) &
done

# 等待所有后台任务完成
wait
echo "=== 所有仓库处理完毕 ==="

# 汇总结果
for repo in "${REPOS[@]}"; do
  echo "--- $repo ---"
  jq -r '.result // .error' "/tmp/claude-result-$repo.json" 2>/dev/null || echo "处理失败"
done

第五章:CI/CD 集成

5.1 GitHub Actions 集成

Claude Code 提供了官方的 GitHub Actions 集成。通过在 PR 上 @claude 即可触发 AI 审查:

# .github/workflows/claude-review.yml
name: Claude Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Claude Code Review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          claude -p \
            --max-turns 3 \
            --allowedTools "FileRead,Grep,Glob" \
            --output-format text \
            "审查这个 PR 的代码变更,关注安全漏洞、性能问题和代码质量。
            Diff: $(git diff origin/main...HEAD)"

5.2 自动 Issue 处理

# .github/workflows/claude-issue-handler.yml
name: Claude Issue Handler

on:
  issues:
    types: [labeled]

jobs:
  auto-fix:
    if: contains(github.event.label.name, 'claude-fix')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Process Issue
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          ISSUE_TITLE="${{ github.event.issue.title }}"
          ISSUE_BODY="${{ github.event.issue.body }}"

          claude -p \
            --max-turns 10 \
            --dangerously-skip-permissions \
            "根据以下 Issue 描述修复代码:
            标题:$ISSUE_TITLE
            内容:$ISSUE_BODY

            修复后运行测试确保通过。"

      - name: Create PR
        run: |
          BRANCH="fix/issue-${{ github.event.issue.number }}"
          git checkout -b "$BRANCH"
          git add -A
          git commit -m "fix: resolve #${{ github.event.issue.number }}"
          git push origin "$BRANCH"
          gh pr create \
            --title "fix: ${{ github.event.issue.title }}" \
            --body "Closes #${{ github.event.issue.number }}" \
            --base main

5.3 安全最佳实践

在 CI/CD 中使用 Claude Code时务必遵循以下安全准则:

图表9

图表 9

安全措施 配置方式 原因
限制工具 --allowedTools "FileRead,Grep,Glob" 防止 Agent 修改代码或执行命令
费用上限 --max-budget-usd 2.00 防止循环导致 API 费用暴增
轮次上限 --max-turns 5 防止 Agent 无限循环
禁用遥测 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 CI 环境不需要遥测
沙箱执行 Docker 容器 隔离 Agent 的文件系统和网络访问

第六章:综合实战项目 —— 全自动代码质量守护者

将本章所有知识整合,构建一个完整的自动化代码质量系统:

6.1 项目结构

project/
├── .claude/
│   ├── settings.json          # Hooks 配置
│   ├── agents/
│   │   ├── security-scanner.md
│   │   ├── test-writer.md
│   │   └── doc-generator.md
│   └── hooks/
│       ├── pre_bash.py        # 危险命令拦截
│       ├── auto_format.sh     # 自动格式化
│       └── session_start.sh   # 会话上下文注入
├── scripts/
│   ├── auto-review.sh         # 自动代码审查
│   ├── agent-loop.sh          # Agent 循环
│   └── batch-repos.sh         # 多仓库批量操作
└── .github/
    └── workflows/
        ├── claude-review.yml
        └── claude-issue-handler.yml

6.2 完整的 settings.json

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/pre_bash.py"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/auto_format.sh"
          }
        ]
      }
    ],
    "SessionStart": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/session_start.sh"
          }
        ]
      }
    ]
  },
  "permissions": {
    "allow": [
      "FileRead",
      "Grep",
      "Glob",
      "Bash(npm test)",
      "Bash(npm run lint)",
      "Bash(git status)",
      "Bash(git diff*)"
    ]
  }
}

6.3 端到端工作流

flowchart TD
    A[开发者提交 PR] --> B[GitHub Actions 触发]
    B --> C[claude -p 代码审查]
    C --> D{审查结果}
    D -->|发现问题| E[评论到 PR]
    D -->|通过| F[等待人工确认]

    G[开发者本地编辑] --> H[Claude Code 交互模式]
    H --> I{PreToolUse Hook}
    I -->|危险命令| J[拦截 ❌]
    I -->|安全命令| K[执行]
    K --> L{PostToolUse Hook}
    L --> M[自动格式化]
    M --> N[继续工作]

    O[/batch 模式] --> P[并行处理多文件]
    P --> Q[批量添加测试/文档]

    R[大型任务] --> S[agent-loop.sh]
    S --> T[持续迭代直到完成]

    style J fill:#E74C3C,color:white
    style F fill:#2ECC71,color:white
    style M fill:#3498DB,color:white

延伸阅读

训练营适用性评估

维度 评估
适合训练营类型 DevOps 自动化训练营、AI 工程师训练营、高级开发者训练营
预计教学时长 4-6 小时(含动手实践)
难度级别 中高级(需要 Shell 脚本和 CI/CD 基础)
推荐实验环节 1) 编写并测试一个 PreToolUse Hook 2) 用 -p 模式实现自动化审查 3) 配置一个 Agent 循环完成小型项目
前置课程 Claude Code 入门篇(Round 1)和 Skills 开发实战(Round 2)

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入