Claude Code 工程实战:GitHub Actions 质量门控 + Compaction 防御 + 团队规模化

13 阅读3分钟

CI/CD 集成 + 团队规模化适配策略

本文是「Claude 企业级工程实战手册」专栏第 10 篇。完整 GitHub Actions 配置、Compaction 衰退防御三大策略、三种团队规模适配方案。


一、GitHub Actions CI 质量网关

# .github/workflows/claude_gate.yml
name: Claude 代码质量网关
on:
  pull_request:
    types: [opened, synchronize]

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

      - uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: 提取变更文件
        id: changed
        run: echo "files=$(git diff --name-only origin/main...HEAD | tr '\n' ' ')" >> $GITHUB_OUTPUT

      - name: Claude Headless 审查
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          npx @anthropic-ai/claude-code --bare -p \
            "审查 PR 变更文件:${{ steps.changed.outputs.files }}
            检查:并发安全、SQL 注入、API 格式一致性、错误处理完整性。
            发现 P0 隐患时在末尾加 CI_GATE_FAILED,否则加 CI_GATE_PASSED。" \
            --allowedTools "Read,Glob,Grep" \
            --permission-mode dontAsk \
            --max-turns 10 \
            --output-format text > claude_report.md

      - name: 发布 PR 评论
        uses: actions/github-script@v7
        if: always()
        with:
          script: |
            const fs = require('fs');
            const report = fs.readFileSync('claude_report.md', 'utf8');
            github.rest.issues.createComment({
              ...context.repo,
              issue_number: context.payload.pull_request.number,
              body: `## Claude 自动审查\n\n${report}`
            });

      - name: 判定结果
        run: |
          grep -q "CI_GATE_FAILED" claude_report.md && exit 1 || echo "通过"

关键参数--bare 屏蔽本地配置保证 CI 纯净;--allowedTools "Read,Glob,Grep" 只给只读权限;--max-turns 10 防止无限循环。


二、Compaction 衰退防御

问题

Context 达到 95% 时,Auto-Compaction 触发有损总结,CLAUDE.md 的规则和安全禁忌被稀释遗忘。

防御一:重写 compactPrompt

{
  "compactPrompt": "压缩会话历史时,必须完整保留:1)CLAUDE.md 中所有禁忌规则;2)未解决的 TODO;3)安全拦截规范。严禁泛化合并。"
}

防御二:60% 时主动压缩

# Context 达 60% 时主动触发,附加业务锚点
/compact focus on the payment service refactor and security constraints

不要等系统被迫压缩,那时认知已经退化。

防御三:PostToolUse 规则重注入

#!/bin/bash
# .claude/hooks/post_compact_reinject.sh
if [ -f ".claude/context_essentials.txt" ]; then
  echo "📌 [规则重注入] 以下核心规则在压缩后仍然有效:"
  cat ".claude/context_essentials.txt"
fi
# .claude/context_essentials.txt
【安全禁忌】
- 严禁拼接 SQL 字符串
- 严禁硬编码密钥
- 严禁生产环境未审查的 DDL

【测试要求】
- 所有新功能必须有集成测试
- 覆盖率不低于 90%

三、团队规模化适配

小微团队(2-5 人)

本周就能做完:
☐ 项目根目录创建 CLAUDE.md(技术栈 + 禁忌 + 构建命令)
☐ PostToolUse 自动格式化 Hook
☐ PreToolUse 高危命令拦截 Hook
不需要:CI 集成、专职 AI 工程师、复杂 Skills 体系

中型团队(5-15 人)

新增角色:AI Engineering Lead(兼职,负责维护配置)

两周完成:
☐ CLAUDE.md 按模块拆分到 .claude/rules/
☐ 建立共享 Skills 库(code-review / incident / security)
☐ 接入 GitHub Actions CI 质量网关
☐ 建立 Prompt 版本管理流程
☐ 统一 compactPrompt 配置

大型企业(15 人以上)

新增部门:AI 基础设施工程部门

一到两月完成:
☐ MDM 统一分发 managed-settings.json
☐ 禁止个人直接修改 Claude Code 配置
☐ 集中式 MCP 企业网关(API 审计 + 数据脱敏)
☐ 全链条 Token 成本监控和归因
☐ 接入 Claude Compliance API
☐ 审计日志接入 SIEM

四、失败模式速查

症状根本原因解决方案
Claude 反复问同样问题CLAUDE.md 缺少关键上下文/init 重建,补齐构建命令
代码合并后格式混乱缺少 PostToolUse 格式化 Hook添加 post_write_format.sh
长会话后输出质量下降Auto-Compaction 丢失规则compactPrompt + 60% 主动 /compact
Token 成本意外飙升5 分钟 Cache 穿透低频任务停用 Cache
团队成员用法差异大缺乏标准化配置settings.json 进 Git
生产高危操作未被拦截只有软性禁止PreToolUse 物理拦截 exit 2

下一篇:11. Claude API 高级用法


专栏导航 · Claude 企业级工程实战手册

⬅️ 上一篇:09. Claude Code Agent Skills 升级:从 Slash 命令到带 YAML Frontmatter 的结构化技能包 ➡️ 下一篇:11. Claude API 高级用法:流式输出 / 批处理 / Cache 叠加节省 95% 成本

本专栏共 14 篇,系统覆盖 Claude 模型选型 / Prompt 工程 / Claude Code 工作流 / API 高级用法 / MCP / RAG / AI 安全合规全链路。欢迎收藏:Claude 企业级工程实战手册