Skip to content
FunCoding

Search

Search docs, Skills and MCP

GitHub Actions 与评论任务

配置 GitHub App 或自带 token,在 issue、PR、计划任务中运行 OpenCode。

This page has not been translated into English yet. The original Chinese version is shown below.

GitHub 集成在 Actions runner 内执行任务。评论中输入 /opencode 或 /oc 可请求解释 issue、修复代码、创建 PR,或修改当前 PR;代码行评论会附带文件、行号与 diff 上下文。

安装与模型

在 GitHub 仓库目录运行:

opencode github install

向导会处理 GitHub App 安装、工作流与 secrets。手动配置时,先将 opencode-agent GitHub App 安装到目标仓库,再创建 .github/workflows/opencode.yml,并在 Actions secrets 中保存模型提供商 Key。

官方 Action 入口为 anomalyco/opencode/github@latest。model 必填,采用 provider/model;根据自己的已配置提供商选择实际可用标识,不需要照搬教程中的旧型号。

选择 GitHub 身份

模式配置要求
OpenCode GitHub App默认方式,通过 OIDC 交换 App installation token,工作流需要 id-token: write
调用方 tokenuse_github_token: true,通过环境变量 GITHUB_TOKEN 传入 token,不执行 OIDC 交换

调用方 token 可以是工作流提供的 token,也可以是作为 secret 保存的 PAT 或其他 App token。该模式不必安装 OpenCode GitHub App,也不要求 id-token: write;仍需按实际动作授予权限。

例如官方列出需要创建分支/PR/issue 时的权限:

permissions:
  contents: write
  pull-requests: write
  issues: write

这不是所有工作流都必须开启写权限。官方 checkout 示例使用 actions/checkout@v6 和 persist-credentials: false;不要把 checkout 凭据与 Agent 使用的 token 混为一谈。

事件与任务文本

事件任务来源和行为
issue_comment新建评论中的触发词与请求
pull_request_review_commentPR 代码行评论,带精确 diff 上下文
issuesissue 创建/编辑等;必须传 prompt
pull_requestPR 打开、同步、重新打开等;不传 prompt 时默认审查 PR
schedule定时运行;必须传 prompt,结果进入日志/PR
workflow_dispatchActions 手动运行;必须传 prompt,结果进入日志/PR

评论模式还需在工作流条件中筛选触发词。计划任务没有评论用户上下文可用于权限检查;预期创建分支和 PR 时需授予 contents: write 与 pull-requests: write。

官方 issue triage 示例增加“账号创建至少 30 天”的过滤条件,这是示例工作流自行设置的防滥用条件,不是 OpenCode 产品固定门槛。

Action 输入

输入含义
model必填,提供商/模型
agentprimary agent;未找到时回退配置 default_agent 或 build
share是否分享会话,公开仓库默认 true
prompt覆盖默认任务提示
mentions逗号分隔、大小写不敏感,默认 /opencode,/oc
variant提供商推理变体
oidc_base_urlOIDC 交换 API 地址,默认 https://api.opencode.ai,自建 App 时使用
use_github_token默认 false;启用调用方 token 模式

修改 mentions 后也要对应检查工作流的评论过滤条件。公开仓库的 Action 默认分享与普通 CLI 默认手动分享不同,内容范围见会话分享。

结果在哪里

issue 修复通常创建新分支及 PR;在已有 PR 请求修改会把变更提交到该 PR;解释和讨论任务会回复评论。任务运行在 runner,并不意味着模型请求一定留在 runner 内,仍取决于提供商配置。