本教程面向希望将Claude Code集成到CI/CD流水线中的开发者和DevOps工程师。你将学会使用官方 anthropics/claude-code-action@v1 构建自动化代码审查、Issue分类、定时维护等GitHub Actions工作流,掌握 --print 无头模式的脚本化调用,并通过Agent SDK实现程序化Agent编排。适用人群:有GitHub Actions基础的中高级开发者,团队技术负责人。
| 要求 | 说明 |
|---|---|
| GitHub仓库 | 一个你有管理权限的仓库 |
| Anthropic API Key | 在console.anthropic.com获取 |
| Claude Code CLI | npm install -g @anthropic-ai/claude-code |
| Node.js 18+ | Agent SDK运行环境 |
| GitHub Actions基础 | 了解workflow文件结构、secrets配置 |
/install-github-app最简单的接入方式是通过Claude Code终端内建的安装命令。
# 在项目根目录打开Claude Code
claude
# 在交互界面中执行
/install-github-app
该命令会引导你完成三个步骤: 1. 注册GitHub App — 跳转到Anthropic的GitHub App授权页面 2. 安装App到仓库 — 选择你要授权的仓库 3. 自动配置Secret — 将API Key写入仓库Secrets
限制:此快速启动方式仅适用于Anthropic直接API用户。如果你使用AWS Bedrock或Google Vertex AI,需要按Cloud Providers文档手动配置。
flowchart TB
subgraph 触发源
PR[Pull Request]
Comment[PR/Issue评论]
Issue[Issue事件]
Schedule[定时任务]
Manual[手动触发]
end
subgraph GitHub Actions
Checkout[检出代码]
ClaudeAction[claude-code-action@v1]
subgraph 模式自动检测
Interactive[交互模式<br/>无prompt → 监听@claude]
Agent[Agent模式<br/>有prompt → 立即执行]
end
StructuredOut[结构化输出]
end
subgraph 后续动作
PostComment[发布PR评论]
InlineReview[行内代码审查]
CreateIssue[创建Issue]
RetryCI[重试CI流水线]
end
PR & Comment & Issue & Schedule & Manual --> Checkout --> ClaudeAction
ClaudeAction --> Interactive & Agent
Interactive & Agent --> StructuredOut
StructuredOut --> PostComment & InlineReview & CreateIssue & RetryCI
v1版本引入了智能模式检测——不再需要手动指定 mode 参数:
| 场景 | 检测条件 | 运行模式 |
|---|---|---|
有人评论 @claude |
无 prompt 输入 |
交互模式 — 创建跟踪评论,逐步更新进度 |
配置了 prompt |
有 prompt 输入 |
Agent模式 — 立即执行,不创建跟踪评论 |
| PR审查/Issue分配 | 事件触发 + @claude | 交互模式 |
| 定时任务 | schedule 事件 + prompt |
Agent模式 |
创建 .github/workflows/claude-review.yml:
name: Claude Auto Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}
请审查此Pull Request,重点关注:
- 代码质量与最佳实践
- 潜在Bug或逻辑问题
- 安全隐患
- 性能考量
注意:PR分支已在当前工作目录中检出。
使用 `gh pr comment` 发布总体反馈。
使用 `mcp__github_inline_comment__create_inline_comment`(设置 confirmed: true)标注具体代码问题。
只发布GitHub评论,不要将审查文本作为消息提交。
claude_args: |
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*)"
预期结果: - PR创建或更新时,Claude自动开始审查 - 总体反馈以PR评论形式发布 - 具体代码问题以行内注释形式标注
常见问题:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Action未触发 | 权限不足 | 确认 pull-requests: write 权限已设置 |
| 评论未发布 | allowedTools 缺少工具 |
添加 Bash(gh pr comment:*) 到允许列表 |
| 审查过于笼统 | prompt不够具体 | 在prompt中加入具体检查清单 |
# 方式1:Anthropic API Key(最常用)
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# 方式2:OAuth Token
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# 方式3:Workload Identity Federation(企业推荐)
anthropic_federation_rule_id: ${{ secrets.FEDERATION_RULE_ID }}
anthropic_organization_id: ${{ secrets.ORG_ID }}
# 无需静态API Key,通过GitHub OIDC令牌认证
claude_args——万能配置通道v1版本将大部分配置统一到 claude_args 参数中,直接透传给Claude CLI:
claude_args: |
--max-turns 15 # 最大对话轮次
--model claude-4-0-sonnet-20250805 # 指定模型
--allowedTools Edit,Read,Write,Bash # 允许的工具
--disallowedTools WebSearch # 禁止的工具
--system-prompt "你是安全审计专家" # 自定义系统提示
--mcp-config '{"mcpServers":{...}}' # MCP服务器配置
--json-schema '{...}' # 结构化输出Schema
| v0.x参数 | v1替代方案 |
|---|---|
mode: "tag" |
删除,自动检测 |
direct_prompt |
prompt |
custom_instructions |
claude_args 中 --system-prompt |
max_turns: "10" |
claude_args: "--max-turns 10" |
model: "claude-..." |
claude_args: "--model claude-..." |
allowed_tools |
claude_args: "--allowedTools ..." |
mcp_config |
claude_args: "--mcp-config '{...}'" |
仅当涉及认证、API、安全配置文件的变更时触发:
name: Security Path Review
on:
pull_request:
types: [opened, synchronize]
paths:
- "src/auth/**"
- "src/api/**"
- "config/security.yml"
- "**/middleware/**"
jobs:
security-review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}
此PR修改了认证或API关键文件。请进行安全专项审查:
- 认证/授权流程漏洞
- 输入验证与过滤
- SQL注入或XSS风险
- API安全最佳实践
- 敏感数据泄露检查
claude_args: |
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*)"
对首次贡献者自动进行更详细的审查:
name: External Contributor Review
on:
pull_request:
types: [opened, synchronize]
jobs:
external-review:
if: github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}
CONTRIBUTOR: ${{ github.event.pull_request.user.login }}
这是来自 @${{ github.event.pull_request.user.login }} 的首次贡献。
请提供全面的审查,重点关注:
- 项目编码规范合规性
- 测试覆盖(单元和集成)
- 新功能文档
- 潜在破坏性变更
- License头部要求
保持友好但严格的审查态度。使用行内评论提供代码具体反馈。
claude_args: |
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr view:*)"
新Issue创建时自动分类并添加标签:
name: Issue Auto Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
issues: write
id-token: write
steps:
- uses: actions/checkout@v6
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
REPO: ${{ github.repository }}
ISSUE NUMBER: ${{ github.event.issue.number }}
分析此Issue并执行以下操作:
1. 判断Issue类型(bug/feature/question/docs)
2. 评估优先级(critical/high/medium/low)
3. 添加合适的标签
4. 如果是Bug,添加对应的组件标签
5. 发布一条欢迎评论,总结Issue内容
使用 `gh issue edit` 添加标签,使用 `gh issue comment` 发布评论。
claude_args: |
--allowedTools "Bash(gh issue edit:*),Bash(gh issue comment:*),Bash(gh label:*)"
Claude分析CI日志并返回结构化JSON,后续步骤根据结果自动决策:
name: CI Failure Analysis
on:
workflow_run:
workflows: ["CI"]
types: [completed]
branches: [main]
jobs:
analyze:
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
actions: read
steps:
- uses: actions/checkout@v6
- name: Analyze with Claude
id: analyze
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
CI流水线在 ${{ github.repository }} 的main分支上失败了。
分析失败日志,判断是否为flaky test(不稳定测试)。
返回JSON格式:
- is_flaky: boolean(是否为不稳定测试)
- confidence: 0-1(置信度)
- summary: string(失败摘要)
- suggested_fix: string(建议修复方案)
claude_args: |
--allowedTools "Bash(gh run view:*),Bash(gh run log:*),Read"
--json-schema '{"type":"object","properties":{"is_flaky":{"type":"boolean"},"confidence":{"type":"number"},"summary":{"type":"string"},"suggested_fix":{"type":"string"}},"required":["is_flaky","confidence","summary"]}'
- name: Auto-retry if flaky
if: fromJSON(steps.analyze.outputs.structured_output).is_flaky == true
run: |
echo "检测到不稳定测试,自动重试CI..."
gh workflow run CI --ref main
每周日自动扫描仓库健康状况:
name: Weekly Maintenance
on:
schedule:
- cron: "0 2 * * 0" # 每周日凌晨2点
workflow_dispatch: # 支持手动触发
jobs:
maintenance:
runs-on: ubuntu-latest
permissions:
contents: write
issues: write
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
REPO: ${{ github.repository }}
执行每周仓库健康巡检:
1. 检查 package.json 中的过时依赖
2. 运行 npm audit 扫描安全漏洞
3. 审查超过90天未处理的开放Issue
4. 检查最近提交中的 TODO 注释
5. 验证 README.md 中的示例是否仍然有效
6. 检查 CHANGELOG.md 是否需要更新
创建一个汇总Issue报告所有发现。
如果发现严重安全问题,也在相关开放PR中评论。
claude_args: |
--allowedTools "Read,Bash(npm:*),Bash(gh issue:*),Bash(gh pr:*),Bash(git log:*)"
将团队审查标准编码为prompt:
name: Team Checklist Review
on:
pull_request:
types: [opened, synchronize]
jobs:
checklist:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
track_progress: true # 启用进度跟踪评论
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}
按照团队检查清单审查此PR:
## 代码质量
- [ ] 遵循代码风格指南
- [ ] 无注释掉的代码
- [ ] 有意义的变量命名
- [ ] DRY原则
## 测试
- [ ] 新函数有单元测试
- [ ] 新端点有集成测试
- [ ] 边界情况覆盖
- [ ] 测试覆盖率 > 80%
## 文档
- [ ] README已更新
- [ ] API文档已更新
- [ ] 复杂逻辑有行内注释
## 安全
- [ ] 无硬编码凭据
- [ ] 输入验证已实现
- [ ] 无日志中的敏感数据
对每项检查是否满足,发布带结果的汇总评论。
claude_args: |
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*)"
--print 无头模式与脚本化调用当不需要GitHub Actions的完整集成时,可以直接在脚本中使用Claude Code的 --print 模式:
# 基本用法——输出到终端
claude -p "解释这个函数的作用"
# 管道输入——将文件内容传给Claude
cat src/auth.ts | claude -p "审查这段代码的安全问题"
# JSON输出格式
claude -p --output-format json "分析项目结构"
# 流式JSON输出(适合长时间任务)
claude -p --output-format stream-json "重构这个模块"
#!/bin/bash
# batch-review.sh — 批量审查所有待审查的PR
REPO="myorg/myproject"
PRS=$(gh pr list --repo "$REPO" --state open --json number --jq '.[].number')
for PR_NUM in $PRS; do
echo "=== 审查 PR #$PR_NUM ==="
# 获取PR diff
DIFF=$(gh pr diff "$PR_NUM" --repo "$REPO")
# 让Claude审查并生成评论
REVIEW=$(echo "$DIFF" | claude -p --output-format text \
"你是一名代码审查专家。审查以下diff,指出问题并给出建议。
只输出审查意见,不要其他内容。用中文回复。")
# 发布评论到PR
echo "$REVIEW" | gh pr comment "$PR_NUM" --repo "$REPO" --body-file -
echo "--- PR #$PR_NUM 审查完成 ---"
done
echo "全部完成!共审查 $(echo $PRS | wc -w) 个PR"
#!/bin/bash
# auto-fix-ci.sh — CI失败时自动尝试修复
set -e
# 1. 获取CI失败日志
LOGS=$(gh run view --log 2>/dev/null || echo "无法获取日志")
# 2. 让Claude诊断并修复
claude -p --output-format json \
"CI失败了。以下是日志:
$LOGS
请分析失败原因,返回JSON:
{\"fixable\": boolean, \"files_to_edit\": [...], \"description\": \"...\"}
" > /tmp/diagnosis.json
FIXABLE=$(cat /tmp/diagnosis.json | jq -r '.fixable')
if [ "$FIXABLE" = "true" ]; then
echo "Claude认为可以自动修复,开始修复流程..."
# 3. 让Claude实际执行修复
claude -p --allowedTools "Edit,Read,Bash(npm test:*)" \
"根据 /tmp/diagnosis.json 中的分析修复CI失败。
修复后运行测试验证。"
echo "修复完成,提交变更..."
git add -A
git commit -m "fix: 自动修复CI失败(Claude Code生成)"
git push
else
echo "Claude认为无法自动修复,需要人工介入"
cat /tmp/diagnosis.json | jq '.description'
fi
flowchart LR
Input[输入源] --> Claude[Claude Code --print]
subgraph 输入方式
File[文件管道<br/>cat file | claude -p]
Arg[命令行参数<br/>claude -p 'prompt']
Stdin[标准输入<br/>echo text | claude -p]
end
subgraph 输出格式
Text[text — 纯文本]
JSON[json — 结构化JSON]
Stream[stream-json — 流式JSON]
end
Claude --> Text --> Tools1[管道到其他CLI工具]
Claude --> JSON --> Tools2[jq解析/程序处理]
Claude --> Stream --> Tools3[实时处理/进度跟踪]
# 生成结构化输出供后续处理
claude -p --output-format json \
"列出src/目录下所有需要重构的文件,返回JSON数组" \
| jq -r '.[].file' \
| xargs -I {} claude -p "重构文件 {} 以提高可读性"
# 多步骤管道:分析 → 生成 → 验证
claude -p "分析测试覆盖率报告" < coverage/lcov.info \
| claude -p "根据分析结果生成测试用例" \
| claude -p "验证生成的测试是否合理,返回最终版本"
Claude Agent SDK(前身Claude Code SDK)将Claude Code的完整能力暴露为TypeScript/Python API:
# 安装TypeScript SDK
npm install @anthropic-ai/claude-agent-sdk
# 或Python SDK
pip install claude-agent-sdk
// auto-reviewer.ts
import { Agent } from "@anthropic-ai/claude-agent-sdk";
async function reviewPullRequest(repo: string, prNumber: number) {
const agent = new Agent({
apiKey: process.env.ANTHROPIC_API_KEY,
model: "claude-4-0-sonnet-20250805",
maxTurns: 15,
allowedTools: ["Read", "Bash"],
});
// 获取PR diff
const { stdout: diff } = await agent.run(
`Run: gh pr diff ${prNumber} --repo ${repo}`,
);
// 执行审查
const result = await agent.run(
`你是一名高级代码审查员。审查以下Pull Request变更:
仓库: ${repo}
PR编号: ${prNumber}
Diff内容:
${diff}
请提供:
1. 总体评价(1-10分)
2. 具体问题列表(含文件名和行号)
3. 改进建议
4. 安全风险提示`
);
// 发布审查评论
await agent.run(
`使用 gh pr comment ${prNumber} --repo ${repo} --body "${result.replace(/"/g, '\\"')}"
发布以上审查结果作为PR评论。`
);
console.log(`PR #${prNumber} 审查完成`);
return result;
}
// 批量审查
async function batchReview(repo: string) {
const agent = new Agent({
apiKey: process.env.ANTHROPIC_API_KEY,
maxTurns: 3,
});
const { stdout } = await agent.run(
`Run: gh pr list --repo ${repo} --state open --json number --jq '.[].number'`
);
const prNumbers = stdout.trim().split("\n").map(Number);
for (const num of prNumbers) {
try {
await reviewPullRequest(repo, num);
} catch (error) {
console.error(`PR #${num} 审查失败:`, error);
}
}
}
batchReview("myorg/myproject");
# ci_diagnostic_agent.py
import json
import os
from claude_agent_sdk import Agent
def diagnose_ci_failure(run_id: str, repo: str) -> dict:
"""诊断CI失败并返回结构化结果"""
agent = Agent(
api_key=os.environ["ANTHROPIC_API_KEY"],
model="claude-4-0-sonnet-20250805",
max_turns=10,
allowed_tools=["Read", "Bash"],
)
# 获取CI日志
agent.run(f"获取CI运行日志: gh run view {run_id} --repo {repo} --log")
# 结构化分析
result = agent.run(
prompt="分析CI失败日志,返回JSON格式的诊断结果",
json_schema={
"type": "object",
"properties": {
"root_cause": {"type": "string"},
"is_flaky": {"type": "boolean"},
"confidence": {"type": "number"},
"affected_files": {
"type": "array",
"items": {"type": "string"}
},
"suggested_fix": {"type": "string"},
"severity": {
"type": "string",
"enum": ["critical", "high", "medium", "low"]
}
},
"required": [
"root_cause", "is_flaky", "confidence",
"suggested_fix", "severity"
]
}
)
return json.loads(result)
# 批量处理所有失败的CI运行
def process_all_failures(repo: str):
agent = Agent(api_key=os.environ["ANTHROPIC_API_KEY"])
# 获取最近失败的工作流运行
runs = agent.run(
f"列出最近10次失败的CI运行: gh run list --repo {repo} "
f"--status failure --limit 10 --json databaseId --jq '.[].databaseId'"
)
for run_id in runs.strip().split("\n"):
diagnosis = diagnose_ci_failure(run_id, repo)
if diagnosis["is_flaky"] and diagnosis["confidence"] > 0.8:
print(f"⚠️ Run {run_id}: 不稳定测试(置信度 {diagnosis['confidence']})")
print(f" 建议: {diagnosis['suggested_fix']}")
else:
print(f"🔴 Run {run_id}: 真实失败")
print(f" 根因: {diagnosis['root_cause']}")
print(f" 严重度: {diagnosis['severity']}")
if __name__ == "__main__":
process_all_failures("myorg/myproject")
flowchart TB
subgraph 认证安全
APIKey[API Key存为Secret<br/>不要硬编码]
OIDC[优先使用OIDC<br/>Workload Identity Federation]
Scope[最小权限原则<br/>只授予必需权限]
end
subgraph 工具控制
Allow[白名单工具<br/>--allowedTools]
Disallow[黑名单工具<br/>--disallowedTools]
MaxTurns[限制轮次<br/>--max-turns]
end
subgraph 输出安全
NoSecret[结构化输出中<br/>排除敏感信息]
Sign[启用提交签名<br/>use_commit_signing]
Review[敏感操作<br/>人工review]
end
认证安全 & 工具控制 & 输出安全
| 场景 | 必需权限 | 推荐工具白名单 |
|---|---|---|
| PR代码审查 | contents: read, pull-requests: write |
mcp__github_inline_comment__create_inline_comment, Bash(gh pr comment:*) |
| Issue分类 | issues: write |
Bash(gh issue edit:*), Bash(gh issue comment:*) |
| 自动修复 | contents: write, pull-requests: write |
Edit, Read, Write, Bash(npm test:*) |
| 定时巡检 | contents: write, issues: write |
Read, Bash(npm:*), Bash(gh issue:*) |
# 策略1:限制对话轮次
claude_args: |
--max-turns 10
# 策略2:使用轻量模型做初步分析
claude_args: |
--model claude-4-0-sonnet-20250805
# 策略3:路径过滤——只处理关键文件变更
on:
pull_request:
paths:
- "src/**"
- "!**/*.test.ts" # 排除测试文件
# 策略4:条件触发——只对特定分支
on:
pull_request:
branches: [main, release/*]
# 策略5:使用结构化输出减少Token消耗
claude_args: |
--json-schema '{"type":"object","properties":{"approved":{"type":"boolean"},"issues":{"type":"array","items":{"type":"string"}}}}'
除了Anthropic直接API,还支持三大云平台:
# AWS Bedrock
- uses: anthropics/claude-code-action@v1
with:
use_bedrock: true
# 通过OIDC自动认证,无需API Key
# Google Vertex AI
- uses: anthropics/claude-code-action@v1
with:
use_vertex: true
# 通过OIDC自动认证
# Microsoft Foundry
# 参见 docs/cloud-providers.md
将上述知识整合为一个完整的代码质量自动化系统。
.github/
├── workflows/
│ ├── claude-review.yml # PR自动审查
│ ├── claude-triage.yml # Issue自动分类
│ ├── claude-maintenance.yml # 每周健康巡检
│ └── claude-ci-analysis.yml # CI失败分析
├── claude-prompts/
│ ├── review-template.md # 审查提示词模板
│ └── security-checklist.md # 安全检查清单
└── CLAUDE.md # 项目级Claude配置
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize, ready_for_review]
pull_request_review_comment:
types: [created]
jobs:
# 判断是否需要审查(跳过Draft PR)
check:
runs-on: ubuntu-latest
outputs:
should_review: ${{ steps.check.outputs.result }}
steps:
- id: check
run: |
if [ "${{ github.event.pull_request.draft }}" = "true" ]; then
echo "result=false" >> $GITHUB_OUTPUT
else
echo "result=true" >> $GITHUB_OUTPUT
fi
# 自动审查
auto-review:
needs: check
if: needs.check.outputs.should_review == 'true'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
track_progress: true
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}
AUTHOR: ${{ github.event.pull_request.user.login }}
BASE: ${{ github.base_ref }}
HEAD: ${{ github.head_ref }}
## 审查任务
对此Pull Request进行全面审查。
### 代码质量
- 遵循项目编码规范
- 无重复代码
- 合理的错误处理
- 清晰的函数/变量命名
### 安全审查
- 无硬编码凭据
- 输入验证充分
- 无注入风险
### 测试覆盖
- 新功能有对应测试
- 边界情况覆盖
### 性能考量
- 无不必要的循环/递归
- 合理的数据结构选择
- 无N+1查询风险
使用行内评论标注具体问题。
发布一条汇总评论,给出总体评分和关键发现。
claude_args: |
--max-turns 15
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Read"
# 交互式响应(处理@claude评论)
interactive:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request_review_comment'
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# 无prompt → 交互模式,响应@claude评论
claude_args: |
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Read,Edit"
# Project Configuration
## Code Style
- TypeScript strict mode
- ESLint + Prettier
- 2-space indentation
## Testing
- Run: `npm test`
- Coverage: `npm run test:coverage`
- Threshold: 80% line coverage
## Build
- Build: `npm run build`
- Lint: `npm run lint`
## Review Priorities
1. Security > Correctness > Performance > Style
2. All public APIs must have JSDoc comments
3. No `any` types without explicit justification
## CI Commands
- Full CI: `npm run ci` (lint + test + build)
| 训练营类型 | 适用性 | 预计时长 | 推荐模块 |
|---|---|---|---|
| DevOps工程师训练营 | ★★★★★ | 4小时 | 全部内容 |
| 全栈开发训练营 | ★★★★ | 3小时 | 第一~四部分 + 实战项目 |
| 团队技术负责人培训 | ★★★★★ | 3小时 | 第二~三部分 + 安全最佳实践 |
| AI工程化实战营 | ★★★★ | 5小时 | 全部内容 + Agent SDK深入 |
| GitHub Actions专项 | ★★★★★ | 2.5小时 | 第二~三部分 + 场景练习 |
前置知识要求:Git基本操作、YAML语法、至少一门编程语言(TypeScript/Python)。
-p模式详解[!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 等场景全覆盖。
