作为OpenCode的高级专家,经常有人问:这工具跟GitHub到底怎么配合?能不能像叫同事一样,在评论区喊一声就让AI干活?答案是肯定的。
OpenCode跟GitHub的集成方式其实挺直接------在Issue或PR的评论里提一句/opencode或者/oc,它就会在GitHub Actions的运行环境里把任务给执行了。整个过程不复杂,但有些细节值得拎出来说说。
能干什么活?
先说几个常见的用法场景。
解释问题(Triage issues):扔一个Issue给OpenCode,让它读一遍整个讨论串,然后给出一份清晰的说明。这对于刚接手项目或者对某块逻辑不熟的时候特别有用。
动手修Bug或开发功能(Fix and implement):跟它说"把这个修了",OpenCode会自己切一个新分支,把代码改好,最后提交一个Pull Request。从改代码到提PR,一条龙。
安全性:因为OpenCode跑在GitHub自己的Runner里面,所以访问权限、密钥这些东西都跟着仓库的配置走,不需要额外操心。
怎么装上去?
有两种方式:自动安装和手动配置。
自动安装
在项目根目录(得是一个GitHub仓库)下执行:
bash
opencode github install
然后跟着提示走------安装GitHub App、创建工作流文件、设置密钥,一路下一步就行。
手动配置
如果喜欢自己动手,也可以分三步来。
第一步:安装GitHub App
浏览器打开 github.com/apps/opencode-agent,确认把它安装到目标仓库上。

第二步:添加工作流
在仓库的.github/workflows/opencode.yml里放一个工作流文件。内容大致如下:
yaml
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
注意在env里面把要用到的模型和API密钥配上。
第三步:存储密钥
在组织或者项目的设置页面里,左侧找到"Secrets and variables" → "Actions",然后把需要的API密钥(比如上面的ANTHROPIC_API_KEY)添加进去。
配置项说明
手动配置的时候,with下面有几个关键参数:
model(必填):格式是provider/model,告诉OpenCode用哪个模型。agent(可选):指定用哪个主代理。如果不填,就回落到配置文件里的default_agent,再找不到就用"build"。share(可选):是否共享OpenCode会话。对于公开仓库,默认是true。prompt(可选):自定义的提示词,可以覆盖默认行为。比如定制OpenCode处理请求的方式。token(可选):GitHub访问令牌,用来创建评论、提交变更、发起PR等操作。默认情况下OpenCode会用自己App的安装令牌,所以提交、评论和PR都显示为来自这个App。
如果不打算安装OpenCode的GitHub App,也可以直接用GitHub Action自带的GITHUB_TOKEN。不过需要确保工作流里有对应的权限:
yaml
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
当然,用个人访问令牌(PAT)也是可以的。
支持哪些事件触发?
OpenCode可以响应多种GitHub事件,下面这个表格说得比较清楚:
| 事件类型 | 触发条件 | 细节 |
|---|---|---|
issue_comment |
在Issue或PR里评论 | 评论中包含/opencode或/oc。OpenCode会读取上下文,还能创建分支、开PR或者直接回复 |
pull_request_review_comment |
在PR的代码行上评论 | 代码审查时提到/opencode或/oc。OpenCode会拿到文件路径、行号和diff上下文 |
issues |
Issue被打开或编辑 | 自动触发,需要提供prompt输入 |
pull_request |
PR被打开或更新 | 自动触发(打开、同步、重新打开时),适合做自动化评审 |
schedule |
基于cron的定时 | 定时运行,需要提供prompt。输出会写到日志和PR里(没有Issue可以评论) |
workflow_dispatch |
从GitHub UI手动触发 | 按需运行,也需要提供prompt |
几个典型的场景示例
定时任务
比如每周一上午9点跑一次,扫一下代码里所有的TODO注释,然后汇总成摘要。如果发现值得处理的问题,就开一个Issue来跟踪。
工作流文件大概长这样:
yaml
name: Scheduled OpenCode Task
on:
schedule:
- cron: "0 9 * * 1"
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,才能让OpenCode去创建分支或PR。
PR自动审查
每次PR被打开、更新、重新打开或者变成"ready for review"状态时,自动跑一遍审查:
yaml
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
对于pull_request事件,如果没有提供prompt,OpenCode默认就会去审查这个PR。
Issue自动分流(Triage)
比如新开了一个Issue,先检查提Issue的账号注册时间是否超过30天------这样可以过滤掉一部分垃圾信息。满足条件再让OpenCode去处理:
yaml
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也是必填的。
自定义提示词
有时候默认的行为不满足需求,可以通过prompt覆盖掉。比如在PR审查时可以强制要求检查某些特定内容:
yaml
- 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
这样做的好处是可以针对项目的具体规范来定制审查标准,比如要求检查测试覆盖率、特定的代码风格、日志规范等等。
日常使用小例子
说几个最常用的操作。
解释一个Issue:直接在GitHub Issue下面留一条评论:
plain
/opencode explain this issue
OpenCode会把整个讨论串(包括所有评论)从头到尾读一遍,然后回复一段清晰的解释。
修复一个Issue:在Issue里说:
plain
/opencode fix this
然后OpenCode会创建一个新分支,把该改的代码改好,最后自动提交一个PR。
审查PR并顺手改点东西:在PR下面写一条评论,比如:
plain
Delete the attachment from S3 when the note is removed /oc
OpenCode就会按要求实现这个修改,并把改动提交到同一个PR里。
针对某几行代码进行审查:在PR的"Files"标签页里,直接在代码行上留评论。OpenCode会自动识别出文件路径、具体的代码行、周围的diff上下文和行号信息。这时候只要写:
plain
/oc add error handling here
就不用手动再重复一遍文件路径和行号了,非常方便。
小结
整体上,OpenCode跟GitHub的集成覆盖了从Issue解释、Bug修复到PR审查、定时维护的常见场景。配置起来并不复杂------要么一行命令装完,要么手动加个工作流文件再配好密钥。对于日常开发来说,相当于在代码托管平台里养了一个随时可以调用的AI助手。