Salta ai contenuti

GitHub

Usa OpenCode nelle issue e pull-request di GitHub.

OpenCode si integra con il tuo flusso di lavoro GitHub. Menziona /opencode o /oc nel tuo commento, e OpenCode eseguirà attività all’interno del runner GitHub Actions.


Caratteristiche

  • Triaging delle issue: Chiedi a OpenCode di esaminare una issue e spiegartela.
  • Correggere e implementare: Chiedi a OpenCode di correggere una issue o implementare una funzionalità. Lavorerà in un nuovo ramo e invierà una PR con tutte le modifiche.
  • Sicuro: OpenCode viene eseguito all’interno dei runner del tuo GitHub.

Installazione

Esegui il seguente comando in un progetto che si trova in un repository GitHub:

Terminal window
opencode github install

Questo ti guiderà attraverso l’installazione dell’app GitHub, la creazione del flusso di lavoro e l’impostazione dei segreti.


Configurazione manuale

Oppure puoi configurarlo manualmente.

  1. Installa l’app GitHub

    Vai su github.com/apps/opencode-agent. Assicurati che sia installata sul repository di destinazione.

  2. Aggiungi il flusso di lavoro

    Aggiungi il seguente file di flusso di lavoro a .github/workflows/opencode.yml nel tuo repository. Assicurati di impostare il model appropriato e le chiavi API richieste in 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
    - 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. Archivia le chiavi API nei segreti

    Nelle impostazioni della tua organizzazione o progetto, espandi Secrets and variables a sinistra e seleziona Actions. Aggiungi le chiavi API richieste.


Configurazione

  • model: Il modello da usare con OpenCode. Prende la forma di fornitore/modello. Questo è richiesto.

  • agent: L’agente da usare. Deve essere un agente primario. Torna a default_agent dalla configurazione o "build" se non trovato.

  • share: Se condividere la sessione OpenCode. Predefinito a true per repository pubblici.

  • prompt: Prompt personalizzato opzionale per sovrascrivere il comportamento predefinito. Usalo per personalizzare come OpenCode elabora le richieste.

  • token: Token di accesso GitHub opzionale per eseguire operazioni come la creazione di commenti, il commit delle modifiche e l’apertura di pull request. Per impostazione predefinita, OpenCode usa il token di accesso di installazione dall’app GitHub OpenCode, quindi commit, commenti e pull request appaiono come provenienti dall’app.

    In alternativa, puoi usare il GITHUB_TOKEN integrato del runner GitHub Action senza installare l’app GitHub OpenCode. Assicurati solo di concedere i permessi richiesti nel tuo flusso di lavoro:

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

    Puoi anche usare token di accesso personali(PAT) se preferisci.


Eventi supportati

OpenCode può essere attivato dai seguenti eventi GitHub:

Tipo di eventoAttivato daDettagli
issue_commentCommento su una issue o PRMenziona /opencode o /oc nel tuo commento. OpenCode legge il contesto e può creare rami, aprire PR o rispondere.
pull_request_review_commentCommento su righe di codice specifiche in una PRMenziona /opencode o /oc durante la revisione del codice. OpenCode riceve il percorso del file, numeri di riga e contesto diff.
issuesIssue aperta o modificataAttiva automaticamente OpenCode quando le issue vengono create o modificate. Richiede input prompt.
pull_requestPR aperta o aggiornataAttiva automaticamente OpenCode quando le PR vengono aperte, sincronizzate o riaperte. Utile per revisioni automatiche.
scheduleProgrammazione basata su cronEsegui OpenCode secondo un programma. Richiede input prompt. L’output va ai log e alle PR (nessuna issue su cui commentare).
workflow_dispatchAttivazione manuale dall’interfaccia GitHubAttiva OpenCode su richiesta tramite la scheda Actions. Richiede input prompt. L’output va ai log e alle PR.

Esempio di programmazione

Esegui OpenCode secondo un programma per eseguire attività automatizzate:

.github/workflows/opencode-scheduled.yml
name: Scheduled OpenCode Task
on:
schedule:
- cron: "0 9 * * 1" # Ogni lunedì alle 9 AM 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
- 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.

Per eventi programmati, l’input prompt è richiesto poiché non c’è un commento da cui estrarre istruzioni. I flussi di lavoro programmati vengono eseguiti senza contesto utente per il controllo dei permessi, quindi il flusso di lavoro deve concedere contents: write e pull-requests: write se ti aspetti che OpenCode crei rami o PR.


Esempio di pull request

Revisiona automaticamente le PR quando vengono aperte o aggiornate:

.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
- uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements

Per eventi pull_request, se non viene fornito prompt, OpenCode per impostazione predefinita revisionerà la pull request.


Esempio di triage delle issue

Triage automatico delle nuove issue. Questo esempio filtra gli account di più di 30 giorni per ridurre lo 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'
- 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.

Per eventi issues, l’input prompt è richiesto poiché non c’è un commento da cui estrarre istruzioni.


Prompt personalizzati

Sovrascrivi il prompt predefinito per personalizzare il comportamento di OpenCode per il tuo flusso di lavoro.

.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

Questo è utile per far rispettare criteri di revisione specifici, standard di codifica o aree di focus rilevanti per il tuo progetto.


Esempi

Ecco alcuni esempi di come puoi usare OpenCode in GitHub.

  • Spiegare una issue

    Aggiungi questo commento in una issue GitHub.

    /opencode explain this issue

    OpenCode leggerà l’intero thread, inclusi tutti i commenti, e risponderà con una spiegazione chiara.

  • Correggere una issue

    In una issue GitHub, di’:

    /opencode fix this

    E OpenCode creerà un nuovo ramo, implementerà le modifiche e aprirà una PR con le modifiche.

  • Revisionare le PR e apportare modifiche

    Lascia il seguente commento su una PR GitHub.

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

    OpenCode implementerà la modifica richiesta e la farà commit nella stessa PR.

  • Revisionare righe di codice specifiche

    Lascia un commento direttamente sulle righe di codice nella scheda “File” della PR. OpenCode rileva automaticamente il file, i numeri di riga e il contesto diff per fornire risposte precise.

    [Commento su righe specifiche nella scheda File]
    /oc add error handling here

    Quando commenti righe specifiche, OpenCode riceve:

    • Il file esatto in fase di revisione
    • Le righe di codice specifiche
    • Il contesto diff circostante
    • Informazioni sui numeri di riga

    Questo permette richieste più mirate senza bisogno di specificare percorsi di file o numeri di riga manualmente.