集成 OpenCode GitHub Action 实现自动化代码审查与任务处理教程
📚 分类: DevOps / CI/CD ⏱️ 预计耗时: 30 分钟 🎯 难度: 中级 🔧 环境要求: 拥有一个 GitHub 仓库,并具备仓库的管理员权限。
你将学到什么
完成本教程后,你将能够:
- [ ] 理解 OpenCode GitHub Action 的核心功能与工作原理。
- [ ] 在 GitHub 仓库中安装 OpenCode GitHub App 并配置安全凭证。
- [ ] 编写针对不同场景(如 Issue 评论、PR 审查、定时任务)的 Workflow 配置文件。
- [ ] 通过自定义 Prompt 控制 OpenCode 的行为,实现代码审查、问题修复和自动任务处理。
最终效果
你将拥有一个集成到 GitHub 仓库的 AI 助手。当你在 Issue 或 PR 的评论中输入 /opencode 或 /oc 时,OpenCode 会自动运行,根据你的指令执行代码审查、问题修复、创建 Pull Request 等任务,并将结果直接反馈到对话中。
前置准备
在开始前,请确认你的环境满足以下条件:
| 检查项 | 要求 | 说明 |
|---|---|---|
| GitHub 仓库 | 任意公开或私有仓库 | 你将在此仓库中配置 OpenCode |
| 仓库权限 | 管理员 (Admin) | 需要安装 GitHub App 和创建 Secrets |
| API Key | Anthropic API Key | 需要为 OpenCode 提供 AI 模型访问权限 |
1. 获取 Anthropic API Key
OpenCode 需要调用 AI 模型(如 Claude)来完成任务。你需要一个 API Key 来授权。
- 访问 Anthropic 控制台 并登录或注册。
- 在 API Keys 页面创建一个新的 Key。
- 复制并保存这个 Key。它只会显示一次,丢失后需要重新创建。
✅ 验证:你已成功复制了一个以 sk-ant- 开头的字符串。
第 1 步:安装 OpenCode GitHub App
🎯 目标:授权 OpenCode GitHub App 访问你的仓库,这是它能够读取代码、创建分支和 PR 的基础。
📝 操作:
- 打开浏览器,访问 OpenCode GitHub App 的安装页面:https://github.com/apps/opencode-agent。
- 点击页面右上角的 Install 按钮。
- 在弹出的窗口中,选择 Only select repositories,然后从下拉列表中选择你想要集成 OpenCode 的目标仓库。
- 点击 Install 完成授权。
✅ 验证: 安装成功后,你会被重定向到仓库的安装设置页面,或者在仓库的 Settings -> Integrations -> GitHub Apps 中看到 opencode-agent 已安装。
💡 提示:如果你希望 OpenCode 对所有仓库可用,可以选择 All repositories。
第 2 步:在 GitHub Secrets 中存储 API Key
🎯 目标:安全地存储你的 Anthropic API Key,以便 Action 工作流在运行时可以安全地使用它。
📝 操作:
- 进入你的 GitHub 仓库页面。
- 点击上方的 Settings 标签页。
- 在左侧菜单栏中,展开 Secrets and variables,然后点击 Actions。
- 点击 New repository secret 按钮。
- 在 Name 字段中输入
ANTHROPIC_API_KEY。 - 在 Secret 字段中粘贴你在前置准备中复制的 API Key。
- 点击 Add secret 保存。
✅ 验证: 保存后,你会在 Secrets 列表中看到 ANTHROPIC_API_KEY 条目,但它的值会被隐藏。
第 3 步:创建基础 Workflow 文件
🎯 目标:创建第一个 Workflow 文件,让 OpenCode 在 Issue 或 PR 评论中被提及 (/oc 或 /opencode) 时自动运行。
📝 操作:
- 在你的仓库根目录下,创建以下文件夹结构:
.github/workflows/。 - 在该文件夹中创建一个名为
opencode.yml的文件。 - 将以下内容粘贴到文件中:
# .github/workflows/opencode.yml
name: opencode # 工作流名称
on: # 定义触发事件
issue_comment: # 当 Issue 或 PR 有新的评论时触发
types: [created]
pull_request_review_comment: # 当 PR 的代码行被评论时触发
types: [created]
jobs:
opencode: # 定义任务
# 运行条件:仅当评论内容包含 '/oc' 或 '/opencode' 时才执行
if: |
contains(github.event.comment.body, '/oc') ||
contains(github.event.comment.body, '/opencode')
runs-on: ubuntu-latest # 运行环境
permissions:
id-token: write # 权限:用于与 GitHub API 交互
steps:
- name: Checkout repository # 第一步:检出代码
uses: actions/checkout@v6
with:
fetch-depth: 1
persist-credentials: false # 禁用默认的 Git 凭证,使用 OpenCode 的凭证
- name: Run OpenCode # 第二步:运行 OpenCode Action
uses: anomalyco/opencode/github@latest # 使用最新版本的 Action
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} # 从 Secrets 中读取 API Key
with:
model: anthropic/claude-sonnet-4-20250514 # 指定使用的 AI 模型
# agent: "build" # 可选:指定使用的 Agent
# share: true # 可选:是否公开会话,公开仓库默认为 true🤔 为什么要这样做?
on.issue_comment和on.pull_request_review_comment确保了 OpenCode 能对用户评论做出响应。if条件使用contains函数,只有当评论包含/oc或/opencode时,才会触发任务,避免不必要的运行。env部分的${{ secrets.ANTHROPIC_API_KEY }}是在安全地引用你在上一步创建的密钥。
✅ 验证:
- 将上述文件提交并推送到你的 GitHub 仓库的主分支(如
main或master)。 - 在你的仓库中创建一个新的 Issue。
- 在 Issue 的评论区输入
/opencode explain this issue并提交评论。 - 前往仓库的 Actions 标签页,你应该能看到一个名为
opencode的工作流正在运行或已经完成。 - 回到 Issue 页面,如果一切顺利,OpenCode 应该已经回复了一条评论,对 Issue 进行了解释。
⚠️ 常见错误:
- Action 运行失败,提示
ANTHROPIC_API_KEY未找到:请检查你在第 2 步中创建的 Secret 名称是否完全匹配(包括大小写)。 - Action 未触发:检查你的
.yml文件是否被正确放置在.github/workflows/目录下,并且分支名称无误。
第 4 步:配置高级功能(可选)
🎯 目标:根据不同的场景(如 PR 审查、定时任务、Issue Triage),创建更专业的 Workflow 文件。
场景一:自动审查 Pull Request
创建一个新文件 .github/workflows/opencode-review.yml,用于在 PR 被创建或更新时自动进行代码审查。
# .github/workflows/opencode-review.yml
name: opencode-review
on:
pull_request: # 监听 PR 事件
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read # 只需要读取代码
pull-requests: read # 只需要读取 PR 信息
issues: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 使用内置 Token 来发表评论
with:
model: anthropic/claude-sonnet-4-20250514
use_github_token: true # 启用使用 GITHUB_TOKEN 发表评论
prompt: | # 自定义 Prompt
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements💡 提示:
- 对于
pull_request事件,如果不提供prompt,OpenCode 会默认执行代码审查。 GITHUB_TOKEN是 GitHub Action 运行时自动生成的临时 Token,无需手动创建。它被用于让 OpenCode 在 PR 中发表审查评论。
场景二:定时执行自动化任务
创建一个新文件 .github/workflows/opencode-scheduled.yml,每周一早上 9 点自动运行,检查代码中的 TODO 注释。
# .github/workflows/opencode-scheduled.yml
name: Scheduled OpenCode Task
on:
schedule:
- cron: "0 9 * * 1" # 定时器:每周一 9:00 UTC
jobs:
opencode:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write # 需要写入权限来创建分支或 Issue
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: | # 对于定时任务,Prompt 是必需的
Review the codebase for any TODO comments and create a summary.
If you find issues worth addressing, open an issue to track them.⚠️ 注意:对于 schedule 事件,由于没有用户评论来提取指令,prompt 输入是必需的。同时,定时任务运行时没有用户上下文,如果需要创建分支或 PR,必须在 permissions 中显式授予 contents: write 和 pull-requests: write 权限。
进阶技巧(可选)
掌握基础后,你可以尝试:
- 使用自定义 Agent:在
with字段中添加agent: "your-custom-agent",你可以创建并指定一个自定义 Agent 来执行特定类型的任务。 - 集成更多 LLM:除了 Anthropic,你还可以在
env中添加OPENAI_API_KEY等环境变量,并在model字段中使用openai/gpt-4o等模型。 - 精细控制权限:如果你不想安装 OpenCode GitHub App,可以使用
GITHUB_TOKEN,但需要在工作流的permissions字段中明确声明所需权限(如contents: write,pull-requests: write)。
常见问题 (FAQ)
Q1: 报错 Error: Input required and not supplied: model 怎么办?A: 这说明你没有在 with 字段中指定 model。请确保添加 model: anthropic/claude-sonnet-4-20250514 或你选择的其他模型。
Q2: OpenCode 无法创建分支或 PR?A: 这通常是由于权限不足。请检查:
- 你是否正确安装了 OpenCode GitHub App?如果没有,请确保你在 Workflow 的
permissions中授予了contents: write和pull-requests: write权限。 - 如果你使用了
GITHUB_TOKEN,请在仓库的Settings->Actions->General->Workflow permissions中,确保勾选了 Read and write permissions。
Q3: 如何让 OpenCode 不在公开仓库中分享会话?A: 在 with 字段中添加 share: false。默认情况下,公开仓库的 share 值为 true。
总结
恭喜你完成了本教程!🎉
回顾一下我们今天学到的核心内容:
- 安装与配置:你学会了如何安装 OpenCode GitHub App 并安全地存储 API Key。
- 基础工作流:你掌握了如何编写一个响应 Issue 评论的 Workflow 文件。
- 高级场景:你了解了如何为 PR 审查、定时任务和 Issue Triage 创建专用的 Workflow 文件。
- 自定义 Prompt:你学会了通过
prompt字段来控制 OpenCode 的行为,使其更符合你的项目需求。