GitHub

在 GitHub issues 和 pull requests 中使用 OpenCode。

OpenCode 与你的 GitHub 工作流集成。在评论中提及 /opencode 或 /oc,OpenCode 将在你的 GitHub Actions 运行器中执行任务。


# 功能#

  • 分类 issues:让 OpenCode 查看 issue 并向你解释。
  • 修复和实现:让 OpenCode 修复 issue 或实现功能。它将在新分支中工作并提交包含所有更改的 PR。
  • 安全:OpenCode 在你的 GitHub 运行器中运行。

# 安装#

在 GitHub 仓库中的项目中运行以下命令:

bash
opencode github install

这将引导你安装 GitHub 应用、创建工作流程和设置密钥。


## 手动设置#

或者你可以手动设置。

  1. 安装 GitHub 应用

    前往 github.com/apps/opencode-agent↗。确保它安装在目标仓库上。

  2. 添加工作流程

    将以下工作流程文件添加到你仓库中的 .github/workflows/opencode.yml。确保在 env 中设置适当的 model 和所需的 API 密钥。

    yaml
    1# .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
  3. 在密钥中存储 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 接收文件路径、行号和差异上下文。
issuesIssue 打开或编辑当 issues 创建或修改时自动触发 OpenCode。需要 prompt 输入。
pull_requestPR 打开或更新当 PR 打开、同步或重新打开时自动触发 OpenCode。适用于自动审查。
schedule基于 cron 的计划按计划运行 OpenCode。需要 prompt 输入。输出到日志和 PR(没有 issue 可评论)。
workflow_dispatch从 GitHub UI 手动触发通过 Actions 标签页按需触发 OpenCode。需要 prompt 输入。输出到日志和 PR。

## 计划示例#

按计划运行 OpenCode 执行自动化任务:

yaml
1# .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 打开或更新时自动审查:

yaml
1# .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 对工作流程的行为。

yaml
1- 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 issue
    

    OpenCode 将阅读整个线程(包括所有评论),并回复清晰的解释。

  • 修复 issue

    在 GitHub issue 中说:

    /opencode fix this
    

    OpenCode 将创建新分支、实现更改并打开包含更改的 PR。

  • 审查 PR 并进行更改

    在 GitHub PR 上留下以下评论。

    Delete the attachment from S3 when the note is removed /oc
    

    OpenCode 将实现请求的更改并将其提交到同一个 PR。

  • 审查特定代码行

    直接在 PR 的"Files"标签中的代码行上留下评论。OpenCode 自动检测文件、行号和差异上下文以提供精确响应。

    [在 Files 标签中的特定行上评论]
    /oc add error handling here