GitHub
在 GitHub issues 和 pull requests 中使用 OpenCode。
OpenCode 与你的 GitHub 工作流集成。在评论中提及 /opencode 或 /oc,OpenCode 将在你的 GitHub Actions 运行器中执行任务。
# 功能#
- 分类 issues:让 OpenCode 查看 issue 并向你解释。
- 修复和实现:让 OpenCode 修复 issue 或实现功能。它将在新分支中工作并提交包含所有更改的 PR。
- 安全:OpenCode 在你的 GitHub 运行器中运行。
# 安装#
在 GitHub 仓库中的项目中运行以下命令:
bashopencode github install
这将引导你安装 GitHub 应用、创建工作流程和设置密钥。
## 手动设置#
或者你可以手动设置。
-
安装 GitHub 应用
前往 github.com/apps/opencode-agent↗。确保它安装在目标仓库上。
-
添加工作流程
将以下工作流程文件添加到你仓库中的
.github/workflows/opencode.yml。确保在env中设置适当的model和所需的 API 密钥。yaml1# .github/workflows/opencode.yml 2name: opencode 3 4on: 5 issue_comment: 6 types: [created] 7 pull_request_review_comment: 8 types: [created] 9 10jobs: 11 opencode: 12 if: | 13 contains(github.event.comment.body, '/oc') || 14 contains(github.event.comment.body, '/opencode') 15 runs-on: ubuntu-latest 16 permissions: 17 id-token: write 18 steps: 19 - name: Checkout repository 20 uses: actions/checkout@v6 21 with: 22 fetch-depth: 1 23 24 - name: Run OpenCode 25 uses: anomalyco/opencode/github@latest 26 env: 27 ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} 28 with: 29 model: anthropic/claude-sonnet-4-20250514 30 # share: true 31 # github_token: xxxx -
在密钥中存储 API 密钥
在你的组织或项目设置中,展开左侧的Secrets and variables并选择Actions。添加所需的 API 密钥。
# 配置#
-
model:与 OpenCode 一起使用的模型。格式为provider/model。这是必需的。 -
agent:要使用的代理。必须是主代理。如果未找到,回退到配置中的default_agent或"build"。 -
share:是否分享 OpenCode 会话。对于公共仓库默认为 true。 -
prompt:可选的自定义提示以覆盖默认行为。使用此选项自定义 OpenCode 处理请求的方式。 -
token:可选的 GitHub 访问令牌,用于执行创建评论、提交更改和打开 pull requests 等操作。默认情况下,OpenCode 使用 OpenCode GitHub App 的安装访问令牌,因此提交、评论和 pull requests 显示为来自应用。
# 支持的事件#
OpenCode 可以由以下 GitHub 事件触发:
| 事件类型 | 触发方式 | 详情 |
|---|---|---|
issue_comment | 在 issue 或 PR 上评论 | 在评论中提及 /opencode 或 /oc。OpenCode 读取上下文并可以创建分支、打开 PR 或回复。 |
pull_request_review_comment | 在 PR 中的特定代码行上评论 | 在审查代码时提及 /opencode 或 /oc。OpenCode 接收文件路径、行号和差异上下文。 |
issues | Issue 打开或编辑 | 当 issues 创建或修改时自动触发 OpenCode。需要 prompt 输入。 |
pull_request | PR 打开或更新 | 当 PR 打开、同步或重新打开时自动触发 OpenCode。适用于自动审查。 |
schedule | 基于 cron 的计划 | 按计划运行 OpenCode。需要 prompt 输入。输出到日志和 PR(没有 issue 可评论)。 |
workflow_dispatch | 从 GitHub UI 手动触发 | 通过 Actions 标签页按需触发 OpenCode。需要 prompt 输入。输出到日志和 PR。 |
## 计划示例#
按计划运行 OpenCode 执行自动化任务:
yaml1# .github/workflows/opencode-scheduled.yml 2name: Scheduled OpenCode Task 3 4on: 5 schedule: 6 - cron: "0 9 * * 1" # 每周一 UTC 时间 9 点 7 8jobs: 9 opencode: 10 runs-on: ubuntu-latest 11 permissions: 12 id-token: write 13 contents: write 14 pull-requests: write 15 issues: write 16 steps: 17 - name: Checkout repository 18 uses: actions/checkout@v6 19 20 - name: Run OpenCode 21 uses: anomalyco/opencode/github@latest 22 env: 23 ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} 24 with: 25 model: anthropic/claude-sonnet-4-20250514 26 prompt: | 27 审查代码库中的任何 TODO 注释并创建摘要。 28 如果发现值得处理的问题,打开一个 issue 来跟踪它们。
## Pull Request 示例#
当 PR 打开或更新时自动审查:
yaml1# .github/workflows/opencode-review.yml 2name: opencode-review 3 4on: 5 pull_request: 6 types: [opened, synchronize, reopened, ready_for_review] 7 8jobs: 9 review: 10 runs-on: ubuntu-latest 11 permissions: 12 id-token: write 13 contents: read 14 pull-requests: read 15 issues: read 16 steps: 17 - uses: actions/checkout@v6 18 - uses: anomalyco/opencode/github@latest 19 env: 20 ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} 21 with: 22 model: anthropic/claude-sonnet-4-20250514 23 prompt: | 24 审查此 pull request: 25 - 检查代码质量问题 26 - 寻找潜在的 bug 27 - 建议改进
# 自定义提示#
覆盖默认提示以自定义 OpenCode 对工作流程的行为。
yaml1- uses: anomalyco/opencode/github@latest 2 with: 3 model: anthropic/claude-sonnet-4-5 4 prompt: | 5 审查此 pull request: 6 - 检查代码质量问题 7 - 寻找潜在的 bug 8 - 建议改进
这对于强制执行与项目相关的特定审查标准、编码规范或重点领域很有用。
# 示例#
以下是如何在 GitHub 中使用 OpenCode 的一些示例。
-
解释 issue
在 GitHub issue 中添加此评论。
/opencode explain this issueOpenCode 将阅读整个线程(包括所有评论),并回复清晰的解释。
-
修复 issue
在 GitHub issue 中说:
/opencode fix thisOpenCode 将创建新分支、实现更改并打开包含更改的 PR。
-
审查 PR 并进行更改
在 GitHub PR 上留下以下评论。
Delete the attachment from S3 when the note is removed /ocOpenCode 将实现请求的更改并将其提交到同一个 PR。
-
审查特定代码行
直接在 PR 的"Files"标签中的代码行上留下评论。OpenCode 自动检测文件、行号和差异上下文以提供精确响应。
[在 Files 标签中的特定行上评论] /oc add error handling here