Español
Documentación
GitHub

GitHub

Usa OpenCode en los issues y pull requests de GitHub.

OpenCode se integra con tu flujo de trabajo de GitHub. Menciona /opencode o /oc en tu comentario y OpenCode ejecutará tareas dentro de tu runner de GitHub Actions.


Características

  • Triaje de issues : Pídele a OpenCode que investigue un issue y te lo explique.
  • Corregir e implementar : Pídele a OpenCode que corrija un issue o implemente una función. Trabajará en una nueva rama y enviará un PR con todos los cambios.
  • Seguro : OpenCode se ejecuta dentro de tus runners de GitHub.

Instalación

Ejecuta el siguiente comando en un proyecto que esté en un repositorio de GitHub:

opencode github install

Esto te guiará a través de la instalación de la app de GitHub, la creación del workflow y la configuración de los secrets.


Configuración manual

O puedes configurarlo manualmente.

  1. Instala la app de GitHub Ve a github.com/apps/opencode-agent (opens in a new tab). Asegúrate de que esté instalada en el repositorio de destino.

  2. Agrega el workflow Agrega el siguiente archivo de workflow a .github/workflows/opencode.yml en tu repositorio. Asegúrate de establecer el model apropiado y las claves de API requeridas en env.

    .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
              # share: true
              # github_token: xxxx
  3. Almacena las claves de API en secrets En la configuración de tu organización o proyecto, expande Secrets and variables a la izquierda y selecciona Actions. Luego agrega las claves de API requeridas.


Configuración

  • model: El modelo a usar con OpenCode. Toma el formato provider/model. Esto es obligatorio.

  • agent: El agente a usar. Debe ser un agente primario. Recurre a default_agent de la configuración o a "build" si no se encuentra.

  • share: Si compartir la sesión de OpenCode. Por defecto es true para repositorios públicos.

  • prompt: Prompt personalizado opcional para anular el comportamiento por defecto. Úsalo para personalizar cómo OpenCode procesa las solicitudes.

  • token: Token de acceso de GitHub opcional para realizar operaciones como crear comentarios, hacer commit de cambios y abrir pull requests. Por defecto, OpenCode usa el token de acceso de instalación de la App de GitHub de OpenCode, por lo que los commits, comentarios y pull requests aparecen como provenientes de la app. Alternativamente, puedes usar el GITHUB_TOKEN integrado (opens in a new tab) del runner de GitHub Action sin instalar la App de GitHub de OpenCode. Solo asegúrate de otorgar los permisos requeridos en tu workflow:

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

    También puedes usar un token de acceso personal (opens in a new tab) (PAT) si lo prefieres.


Eventos compatibles

OpenCode puede activarse mediante los siguientes eventos de GitHub:

Tipo de eventoActivado porDetalles
issue_commentComentario en un issue o PRMenciona /opencode o /oc en tu comentario. OpenCode lee el contexto y puede crear ramas, abrir PRs o responder.
pull_request_review_commentComentario en líneas de código específicas de un PRMenciona /opencode o /oc mientras revisas código. OpenCode recibe la ruta del archivo, los números de línea y el contexto del diff.
issuesIssue abierto o editadoActiva automáticamente OpenCode cuando se crean o modifican issues. Requiere la entrada prompt.
pull_requestPR abierto o actualizadoActiva automáticamente OpenCode cuando se abren, sincronizan o reabren PRs. Útil para revisiones automatizadas.
scheduleProgramación basada en CronEjecuta OpenCode según un horario. Requiere la entrada prompt. La salida va a los logs y los PRs (no hay issue para comentar).
workflow_dispatchActivación manual desde la interfaz de GitHubActiva OpenCode bajo demanda desde la pestaña Actions. Requiere la entrada prompt. La salida va a los logs y los PRs.

Ejemplo de programación

Ejecuta OpenCode según un horario para realizar tareas automatizadas:

.github/workflows/opencode-scheduled.yml
name: Scheduled OpenCode Task
 
on:
  schedule:
    - cron: "0 9 * * 1" # Every Monday at 9am 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.

Para eventos programados, la entrada prompt es obligatoria, ya que no hay ningún comentario del que extraer instrucciones. Los workflows programados se ejecutan sin un contexto de usuario para verificar permisos, por lo que el workflow debe otorgar contents: write y pull-requests: write si esperas que OpenCode cree ramas o PRs.


Ejemplo de Pull Request

Revisa automáticamente los PRs cuando se abren o actualizan:

.github/workflows/opencode-review.yml
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

Para eventos pull_request, si no se proporciona ningún prompt, OpenCode revisa el pull request por defecto.


Ejemplo de triaje de issues

Triaje automático de nuevos issues. Este ejemplo filtra las cuentas con más de 30 días de antigüedad para reducir el spam:

.github/workflows/opencode-triage.yml
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.

Para eventos issues, la entrada prompt es obligatoria, ya que no hay ningún comentario del que extraer instrucciones.


Prompts personalizados

Anula el prompt por defecto para personalizar el comportamiento de OpenCode para tu workflow.

.github/workflows/opencode.yml
- 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

Esto es útil para aplicar criterios de revisión específicos, estándares de codificación o áreas de enfoque relevantes para tu proyecto.


Ejemplos

Aquí tienes algunos ejemplos de cómo puedes usar OpenCode en GitHub.

  • Explicar un issue Agrega este comentario en un issue de GitHub.

    /opencode explain this issue

    OpenCode leerá todo el hilo, incluidos todos los comentarios, y responderá con una explicación clara.

  • Corregir un issue En un issue de GitHub, escribe:

    /opencode fix this

    Y OpenCode creará una nueva rama, implementará los cambios y abrirá un PR con ellos.

  • Revisar PRs y hacer cambios Deja el siguiente comentario en un PR de GitHub.

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

    OpenCode implementará el cambio solicitado y lo hará commit en el mismo PR.

  • Revisar líneas de código específicas Deja un comentario directamente sobre las líneas de código en la pestaña "Files" del PR. OpenCode detecta automáticamente el archivo, los números de línea y el contexto del diff para proporcionar respuestas precisas.

    [Comment on specific lines in Files tab]
    /oc add error handling here

    Al comentar en líneas específicas, OpenCode recibe:

    • El archivo exacto que se está revisando
    • Las líneas de código específicas
    • El contexto del diff circundante
    • La información de los números de línea

    Esto permite solicitudes más dirigidas sin necesidad de especificar manualmente las rutas de archivo o los números de línea.