/opencode 评论驱动 Issue 修复与 PR 审查在日常开发中,Issue 分类、Bug 修复、PR 审查这些重复性工作往往占据了开发者大量时间。虽然 OpenCode 作为终端里的 AI 编程助手已经足够强大,但它的能力被局限在本地终端中——只有你打开终端时才能使用。如果能让 AI 直接出现在 GitHub 的 Issue 和 Pull Request 里,任何协作者都能随时调用它,那将是怎样一番体验?
OpenCode 官方提供了与 GitHub 的原生集成方案:只要在评论中提及 /opencode 或 /oc,OpenCode 就会在你的 GitHub Actions 运行器(runner)里执行任务,自动创建分支、提交代码、打开 PR。本文将从零开始,带你完整掌握这套工作流。
在开始配置之前,先了解这套集成为我们带来了什么:
fix this,OpenCode 会自动在新分支中实现修改并提交 PR。这意味着团队成员不需要安装任何本地环境,只要会发评论,就能借助 AI 完成从分析到提交 PR 的全流程。
如果你的项目已经在 GitHub 上,最简单的方式是直接运行安装命令:
opencode github install
这个命令会引导你完成三步操作:安装 GitHub App、创建工作流文件、配置 secrets。全程交互式,基本不需要手动处理。
有些场景下你可能希望手动控制每一个细节(比如在 CI 里自动部署工作流文件),下面介绍手动配置的完整流程。
前往 github.com/apps/opencode-agent,确保它被安装到目标仓库。
在仓库中创建 .github/workflows/opencode.yml,这是整个集成的核心:
name: opencode
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
opencode:
if: |
contains(github.event.comment.body, '/oc') ||
contains(github.event.comment.body, '/opencode')
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
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
工作流通过 if 条件判断评论里是否包含 /oc 或 /opencode 关键字,只有命中时才触发。model 是必填参数,格式为 provider/model。
在仓库的 Settings → Secrets and variables → Actions 中添加你的 API key(如 ANTHROPIC_API_KEY)。这是 AI 执行任务时使用的模型凭证。
OpenCode 的 GitHub Action 支持多种事件触发方式,下面是完整的对照表:
| 事件类型 | 触发时机 | 说明 |
| --- | --- | --- |
| issue_comment | Issue 或 PR 上的评论 | 评论中含 /opencode 即触发,可读上下文、建分支、开 PR |
| pull_request_review_comment | PR 代码行上的评论 | 自动获取文件路径、行号和 diff 上下文 |
| issues | Issue 被创建或编辑 | 自动分类,需提供 prompt |
| pull_request | PR 被打开或更新 | 自动审查代码,需配合 prompt |
| schedule | Cron 定时任务 | 需提供 prompt,输出到日志和 PR |
| workflow_dispatch | GitHub UI 手动触发 | 需提供 prompt |
想每周一早上 9 点让 AI 自动扫描代码库中的 TODO 注释并汇总?使用 schedule 事件:
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
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: |
Review the codebase for any TODO comments and create a summary.
If you find issues worth addressing, open an issue to track them.
注意:定时任务没有评论可以提取指令,所以 prompt 是必填项。同时因为运行在无人值守环境,工作流需要显式授予 contents: write 和 pull-requests: write 权限,AI 才能创建分支和 PR。
当 PR 被打开、同步或重新开启时自动触发代码审查,省去人工初审环节:
name: opencode-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: read
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 }}
with:
model: anthropic/claude-sonnet-4-20250514
use_github_token: true
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
这里通过 GITHUB_TOKEN 实现只读审查(contents: read、pull-requests: read),更符合安全最小权限原则。如果没有提供 prompt,OpenCode 默认会执行 PR 审查。
面对涌入的 Issue,可以用 issues 事件实现自动化分类。下面的示例还通过检查账号年龄来过滤垃圾 Issue:
name: Issue Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Check account age
id: check
uses: actions/github-script@v7
with:
script: |
const user = await github.rest.users.getByUsername({
username: context.payload.issue.user.login
});
const created = new Date(user.data.created_at);
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
return days >= 30;
result-encoding: string
- uses: actions/checkout@v6
if: steps.check.outputs.result == 'true'
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
if: steps.check.outputs.result == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review this issue. If there's a clear fix or relevant docs:
- Provide documentation links
- Add error handling guidance for code examples
Otherwise, do not comment.
issues 事件同样要求必须提供 prompt,因为 AI 无法从评论中提取指令。
prompt 参数让我们可以完全定制 OpenCode 的行为,从而适配团队的编码规范或审查标准。比如强制审查标准:
- uses: anomalyco/opencode/github@latest
with:
model: anthropic/claude-sonnet-4-5
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
配置完成后,团队里的任何人都可以通过评论触发 AI 工作流:
解释一个 Issue:
/opencode explain this issue
OpenCode 会读取整个讨论串(包括所有评论),然后给出清晰的问题解释。
修复一个 Issue:
/opencode fix this
OpenCode 会自动创建新分支、实现修改,并提交一个包含全部改动的 PR。
在 PR 上请求修改:
Delete the attachment from S3 when the note is removed /oc
OpenCode 会实现这个改动并提交到当前 PR。
针对特定代码行请求帮助:
在 PR 的 "Files" 标签页直接对某行代码评论:
[评论具体代码行] /oc add error handling here
OpenCode 会自动感知文件、行号和 diff 上下文,无需手动指定文件路径。
GITHUB_TOKEN 相应权限,或使用个人访问令牌(PAT)。permissions 中声明 contents: write、pull-requests: write、issues: write;只读审查场景则只声明 read 权限。OpenCode 与 GitHub 的集成,本质上是把"AI 编程助手"从本地终端搬到了协作核心的代码托管平台。通过 issue_comment、pull_request、schedule 等事件组合,你可以构建出覆盖"Issue 分类 → Bug 修复 → PR 审查 → 定时巡检"的完整自动化闭环。整个配置只需要一个 YAML 文件,团队成员零学习成本即可参与。
建议从最简单的 /opencode explain this issue 开始试用,再逐步叠加自动审查和定时任务,让 AI 真正成为你团队的常驻开发力量。