Skip to content

集成 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 KeyAnthropic API Key需要为 OpenCode 提供 AI 模型访问权限

1. 获取 Anthropic API Key

OpenCode 需要调用 AI 模型(如 Claude)来完成任务。你需要一个 API Key 来授权。

  1. 访问 Anthropic 控制台 并登录或注册。
  2. 在 API Keys 页面创建一个新的 Key。
  3. 复制并保存这个 Key。它只会显示一次,丢失后需要重新创建。

验证:你已成功复制了一个以 sk-ant- 开头的字符串。


第 1 步:安装 OpenCode GitHub App

🎯 目标:授权 OpenCode GitHub App 访问你的仓库,这是它能够读取代码、创建分支和 PR 的基础。

📝 操作

  1. 打开浏览器,访问 OpenCode GitHub App 的安装页面:https://github.com/apps/opencode-agent
  2. 点击页面右上角的 Install 按钮。
  3. 在弹出的窗口中,选择 Only select repositories,然后从下拉列表中选择你想要集成 OpenCode 的目标仓库。
  4. 点击 Install 完成授权。

验证: 安装成功后,你会被重定向到仓库的安装设置页面,或者在仓库的 Settings -> Integrations -> GitHub Apps 中看到 opencode-agent 已安装。

💡 提示:如果你希望 OpenCode 对所有仓库可用,可以选择 All repositories


第 2 步:在 GitHub Secrets 中存储 API Key

🎯 目标:安全地存储你的 Anthropic API Key,以便 Action 工作流在运行时可以安全地使用它。

📝 操作

  1. 进入你的 GitHub 仓库页面。
  2. 点击上方的 Settings 标签页。
  3. 在左侧菜单栏中,展开 Secrets and variables,然后点击 Actions
  4. 点击 New repository secret 按钮。
  5. Name 字段中输入 ANTHROPIC_API_KEY
  6. Secret 字段中粘贴你在前置准备中复制的 API Key。
  7. 点击 Add secret 保存。

验证: 保存后,你会在 Secrets 列表中看到 ANTHROPIC_API_KEY 条目,但它的值会被隐藏。


第 3 步:创建基础 Workflow 文件

🎯 目标:创建第一个 Workflow 文件,让 OpenCode 在 Issue 或 PR 评论中被提及 (/oc/opencode) 时自动运行。

📝 操作

  1. 在你的仓库根目录下,创建以下文件夹结构:.github/workflows/
  2. 在该文件夹中创建一个名为 opencode.yml 的文件。
  3. 将以下内容粘贴到文件中:
yaml
# .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_commenton.pull_request_review_comment 确保了 OpenCode 能对用户评论做出响应。
  • if 条件使用 contains 函数,只有当评论包含 /oc/opencode 时,才会触发任务,避免不必要的运行。
  • env 部分的 ${​{ secrets.ANTHROPIC_API_KEY }​} 是在安全地引用你在上一步创建的密钥。

验证

  1. 将上述文件提交并推送到你的 GitHub 仓库的主分支(如 mainmaster)。
  2. 在你的仓库中创建一个新的 Issue。
  3. 在 Issue 的评论区输入 /opencode explain this issue 并提交评论。
  4. 前往仓库的 Actions 标签页,你应该能看到一个名为 opencode 的工作流正在运行或已经完成。
  5. 回到 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 被创建或更新时自动进行代码审查。

yaml
# .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 注释。

yaml
# .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: writepull-requests: write 权限。


进阶技巧(可选)

掌握基础后,你可以尝试:

  1. 使用自定义 Agent:在 with 字段中添加 agent: "your-custom-agent",你可以创建并指定一个自定义 Agent 来执行特定类型的任务。
  2. 集成更多 LLM:除了 Anthropic,你还可以在 env 中添加 OPENAI_API_KEY 等环境变量,并在 model 字段中使用 openai/gpt-4o 等模型。
  3. 精细控制权限:如果你不想安装 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: 这通常是由于权限不足。请检查:

  1. 你是否正确安装了 OpenCode GitHub App?如果没有,请确保你在 Workflow 的 permissions 中授予了 contents: writepull-requests: write 权限。
  2. 如果你使用了 GITHUB_TOKEN,请在仓库的 Settings -> Actions -> General -> Workflow permissions 中,确保勾选了 Read and write permissions

Q3: 如何让 OpenCode 不在公开仓库中分享会话?A: 在 with 字段中添加 share: false。默认情况下,公开仓库的 share 值为 true


总结

恭喜你完成了本教程!🎉

回顾一下我们今天学到的核心内容:

  1. 安装与配置:你学会了如何安装 OpenCode GitHub App 并安全地存储 API Key。
  2. 基础工作流:你掌握了如何编写一个响应 Issue 评论的 Workflow 文件。
  3. 高级场景:你了解了如何为 PR 审查、定时任务和 Issue Triage 创建专用的 Workflow 文件。
  4. 自定义 Prompt:你学会了通过 prompt 字段来控制 OpenCode 的行为,使其更符合你的项目需求。