Skip to content

Commit 0f6ebe4

Browse files
committed
add claude code
1 parent 9dc1c30 commit 0f6ebe4

1 file changed

Lines changed: 133 additions & 0 deletions

File tree

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
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

Comments
 (0)