1+ # .github/workflows/claude-assistant.yml
2+ name : Claude Code Assistant
3+
4+ # ====================================================================================
5+ # TRIGGERS
6+ # 该工作流会在多种 Issue 和 Pull Request 事件上触发,以确保全面覆盖。
7+ # ====================================================================================
8+ on :
9+ # === 自动分析任务的触发器 ===
10+ # 当 PR 被创建、更新代码、重新打开或编辑时触发
11+ pull_request :
12+ types : [opened, synchronize, reopened, edited]
13+ # 当 Issue 被创建、重新打开或编辑时触发
14+ issues :
15+ types : [opened, reopened, edited]
16+
17+ # === 交互式响应任务的触发器 ===
18+ # 当在 Issue 或 PR 中创建新评论时触发
19+ issue_comment :
20+ types : [created]
21+ # 当提交 PR review 时触发
22+ pull_request_review :
23+ types : [submitted]
24+ # 当在 PR review 中评论时触发
25+ pull_request_review_comment :
26+ types : [created]
27+
28+ # ====================================================================================
29+ # PERMISSIONS
30+ # 为工作流中的所有任务设置 GITHUB_TOKEN 的默认权限。
31+ # ====================================================================================
32+ permissions :
33+ contents : write # 允许读写文件和提交代码
34+ pull-requests : write # 允许在 PR 上评论、创建分支等
35+ issues : write # 允许在 Issue 上评论、添加标签等
36+ actions : read # 允许 Claude 读取 CI/CD 的结果
37+ id-token : write # Claude GitHub App 进行 OIDC 认证所需
38+
39+ jobs :
40+ # ====================================================================================
41+ # JOB 1: 自动分析 (AUTOMATION MODE)
42+ # 此任务在新 PR、PR 更新和新 Issue 上自动运行,无需 @ 提及即可提供主动分析。
43+ # ====================================================================================
44+ claude-auto-analysis :
45+ runs-on : ubuntu-latest
46+ # 仅在 PR 或 Issue 事件上运行此任务
47+ if : github.event_name == 'pull_request' || github.event_name == 'issues'
48+ steps :
49+ - name : Checkout Repository with Full History
50+ uses : actions/checkout@v4
51+ with :
52+ # 获取所有 git 历史记录,以便 Claude 拥有完整的上下文进行分析
53+ fetch-depth : 0
54+
55+ - name : Run Claude Proactive Analysis
56+ uses : anthropics/claude-code-action@v1
57+ id : claude-analysis
58+ env :
59+ # (可选) 对于拥有自定义部署或代理的用户。
60+ # 请将您的 URL 存储在名为 CLAUDE_BASE_URL 的 GitHub secret 中。
61+ ANTHROPIC_BASE_URL : ${{ secrets.CLAUDE_BASE_URL }}
62+ with :
63+ # 提供 'prompt' 会使此任务在自动化模式下运行。
64+ prompt : |
65+ 检测到一个新的更新。请执行一次全面的分析。
66+ - 如果这是一个新的 Pull Request,请进行彻底的代码审查。寻找潜在的错误,提出改进建议,检查代码风格的一致性,并验证文档是否已更新。
67+ - 如果这是一个新的 Issue,请分析其描述,建议相关标签,识别潜在的重复 Issue,并为开发者勾勒出可能的第一步。
68+ - 请积极主动,并提供尽可能有帮助的上下文。
69+
70+ # 使用 OAuth 令牌进行身份验证 (推荐)。请将其存储在名为 CLAUDE_CODE_OAUTH_TOKEN 的 secret 中。
71+ claude_code_oauth_token : ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
72+ # 或者,您也可以使用 API 密钥 (取消注释下一行)。
73+ # anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
74+
75+ # (可选) 授予 Claude 读取 CI/CD 结果的权限。
76+ additional_permissions : |
77+ actions: read
78+
79+ # 使用 claude_args 来配置 Claude 的核心能力。
80+ claude_args : |
81+ --model claude-sonnet-4-20250514
82+ --max-turns 25
83+ --system-prompt "你是一名世界级的 AI 软件工程师。请做到彻底、主动和乐于助人。你的目标是通过深入分析上下文并主动采取行动来提供最大价值。"
84+ --allowedTools "Edit,MultiEdit,Write,Read,Glob,Grep,LS,Bash"
85+
86+ # ====================================================================================
87+ # JOB 2: 交互式响应 (INTERACTIVE MODE)
88+ # 此任务在检测到评论中有 '@claude' 提及后运行,以提供按需帮助。
89+ # ====================================================================================
90+ claude-interactive-response :
91+ runs-on : ubuntu-latest
92+ # 仅在评论类事件上运行此任务
93+ if : >
94+ github.event_name == 'issue_comment' ||
95+ github.event_name == 'pull_request_review' ||
96+ github.event_name == 'pull_request_review_comment'
97+ steps :
98+ - name : Checkout Repository with Full History
99+ uses : actions/checkout@v4
100+ with :
101+ # 获取所有 git 历史记录,以便 Claude 拥有完整的上下文来响应请求
102+ fetch-depth : 0
103+
104+ - name : Run Claude Interactive Assistant
105+ uses : anthropics/claude-code-action@v1
106+ id : claude-interactive
107+ env :
108+ # (可选) 对于拥有自定义部署或代理的用户。
109+ # 请将您的 URL 存储在名为 CLAUDE_BASE_URL 的 GitHub secret 中。
110+ ANTHROPIC_BASE_URL : ${{ secrets.CLAUDE_BASE_URL }}
111+ with :
112+ # 不提供 'prompt' 会使此任务在交互模式下运行。
113+ # 它会自动扫描触发工作流的评论内容,寻找触发短语。
114+ # 此处无需 prompt。
115+
116+ # 使用 OAuth 令牌进行身份验证 (推荐)。请将其存储在名为 CLAUDE_CODE_OAUTH_TOKEN 的 secret 中。
117+ claude_code_oauth_token : ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
118+ # 或者,您也可以使用 API 密钥 (取消注释下一行)。
119+ # anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
120+
121+ # 默认的触发短语是 '@claude'。如果需要,您可以自定义。
122+ # trigger_phrase: "/claude"
123+
124+ # (可选) 授予 Claude 读取 CI/CD 结果的权限。
125+ additional_permissions : |
126+ actions: read
127+
128+ # 使用 claude_args 来配置 Claude 的核心能力。
129+ claude_args : |
130+ --model claude-sonnet-4-20250514
131+ --max-turns 25
132+ --system-prompt "你是一名世界级的 AI 软件工程师。请做到彻底、主动和乐于助人。你的目标是通过深入分析上下文并主动采取行动来提供最大价值。"
133+ --allowedTools "Edit,MultiEdit,Write,Read,Glob,Grep,LS,Bash"
0 commit comments