| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- ---
- title: GitHub
- description: Usa OpenCode in issue e pull request su GitHub.
- ---
- OpenCode si integra nel tuo workflow GitHub. Menziona `/opencode` o `/oc` in un commento e OpenCode eseguira' i task dentro il runner di GitHub Actions.
- ---
- ## Funzionalità
- - **Triage delle issue**: chiedi a OpenCode di indagare su una issue e spiegartela.
- - **Fix e implementazioni**: chiedi a OpenCode di risolvere una issue o implementare una feature. Lavorera' su un nuovo branch e inviera' una PR con tutte le modifiche.
- - **Sicuro**: OpenCode gira all'interno dei runner GitHub.
- ---
- ## Installazione
- Esegui il comando seguente in un progetto che si trova in un repo GitHub:
- ```bash
- opencode github install
- ```
- Questo ti guidera' nell'installazione della GitHub app, nella creazione del workflow e nella configurazione dei secret.
- ---
- ### Configurazione manuale
- In alternativa, puoi configurarlo manualmente.
- 1. **Installa la GitHub app**
- Vai su [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). Assicurati che sia installata sul repository di destinazione.
- 2. **Aggiungi il workflow**
- Aggiungi il seguente file workflow in `.github/workflows/opencode.yml` nel tuo repo. Assicurati di impostare il `model` appropriato e le API key richieste in `env`.
- ```yml title=".github/workflows/opencode.yml" {24,26}
- 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. **Salva le API key nei secret**
- Nelle **impostazioni** della tua organizzazione o progetto, espandi **Secrets and variables** sulla sinistra e seleziona **Actions**. Poi aggiungi le API key richieste.
- ---
- ## Configurazione
- - `model`: il modello da usare con OpenCode. Usa il formato `provider/model`. E' **obbligatorio**.
- - `agent`: l'agente da usare. Deve essere un agente primario. Se non trovato, usa `default_agent` dalla config o `"build"`.
- - `share`: se condividere la sessione OpenCode. Di default e' **true** per repository pubblici.
- - `prompt`: prompt personalizzato opzionale per sovrascrivere il comportamento di default. Usalo per personalizzare come OpenCode processa le richieste.
- - `token`: token di accesso GitHub opzionale per eseguire operazioni come creare commenti, committare modifiche e aprire pull request. Di default, OpenCode usa l'installation access token della OpenCode GitHub App, quindi commit, commenti e pull request risultano provenire dalla app.
- In alternativa, puoi usare il [token integrato `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) del runner GitHub Actions senza installare la OpenCode GitHub App. Assicurati solo di concedere i permessi necessari nel workflow:
- ```yaml
- permissions:
- id-token: write
- contents: write
- pull-requests: write
- issues: write
- ```
- Se preferisci, puoi anche usare un [personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT).
- ---
- ## Eventi supportati
- OpenCode puo' essere attivato dai seguenti eventi GitHub:
- | Tipo evento | Attivato da | Dettagli |
- | ----------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
- | `issue_comment` | Commento su una issue o PR | Menziona `/opencode` o `/oc` nel commento. OpenCode legge il contesto e puo' creare branch, aprire PR o rispondere. |
- | `pull_request_review_comment` | Commento su specifiche righe in una PR | Menziona `/opencode` o `/oc` durante una review. OpenCode riceve path file, numeri di riga e contesto del diff. |
- | `issues` | Issue aperta o modificata | Attiva automaticamente OpenCode quando le issue vengono create o modificate. Richiede l'input `prompt`. |
- | `pull_request` | PR aperta o aggiornata | Attiva automaticamente OpenCode quando le PR vengono aperte, sincronizzate o riaperte. Utile per review automatiche. |
- | `schedule` | Pianificazione basata su cron | Esegue OpenCode a pianificazione. Richiede l'input `prompt`. Output nei log e nelle PR (nessuna issue su cui commentare). |
- | `workflow_dispatch` | Trigger manuale dalla UI GitHub | Attiva OpenCode on-demand dalla tab Actions. Richiede l'input `prompt`. Output nei log e nelle PR. |
- ### Esempio con schedule
- Esegui OpenCode a pianificazione per eseguire task automatizzati:
- ```yaml title=".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.
- ```
- Per gli eventi schedulati, l'input `prompt` e' **obbligatorio** dato che non c'e' un commento da cui estrarre le istruzioni. I workflow schedulati girano senza un contesto utente per i controlli di permesso, quindi il workflow deve concedere `contents: write` e `pull-requests: write` se ti aspetti che OpenCode crei branch o PR.
- ---
- ### Esempio di pull request
- Review automatica delle PR quando vengono aperte o aggiornate:
- ```yaml title=".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
- ```
- Per gli eventi `pull_request`, se non viene fornito alcun `prompt`, OpenCode fa di default la review della pull request.
- ---
- ### Esempio di triage delle issue
- Triage automatico delle nuove issue. Questo esempio filtra gli account piu' vecchi di 30 giorni per ridurre lo spam:
- ```yaml title=".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.
- ```
- Per gli eventi `issues`, l'input `prompt` e' **obbligatorio** dato che non c'e' un commento da cui estrarre le istruzioni.
- ---
- ## Prompt personalizzati
- Sovrascrivi il prompt di default per personalizzare il comportamento di OpenCode nel tuo workflow.
- ```yaml title=".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
- ```
- E' utile per imporre criteri specifici di review, standard di codice o aree di focus rilevanti per il progetto.
- ---
- ## Esempi
- Ecco alcuni esempi di come puoi usare OpenCode su GitHub.
- - **Spiega una issue**
- Aggiungi questo commento in una issue GitHub.
- ```
- /opencode explain this issue
- ```
- OpenCode leggera' l'intero thread, inclusi tutti i commenti, e rispondera' con una spiegazione chiara.
- - **Risolvi una issue**
- In una issue GitHub, scrivi:
- ```
- /opencode fix this
- ```
- OpenCode creera' un nuovo branch, implementera' le modifiche e aprira' una PR con i cambiamenti.
- - **Rivedi PR e fai modifiche**
- Lascia il seguente commento su una PR GitHub.
- ```
- Delete the attachment from S3 when the note is removed /oc
- ```
- OpenCode implementera' la modifica richiesta e la committera' nella stessa PR.
- - **Rivedi righe specifiche di codice**
- Lascia un commento direttamente sulle righe di codice nella tab "Files" della PR. OpenCode rileva automaticamente file, numeri di riga e contesto del diff per fornire risposte precise.
- ```
- [Comment on specific lines in Files tab]
- /oc add error handling here
- ```
- Quando commenti su righe specifiche, OpenCode riceve:
- - Il file esatto in review
- - Le righe di codice specifiche
- - Il contesto del diff circostante
- - Informazioni sul numero di riga
- Questo permette richieste piu' mirate senza dover specificare manualmente path file o numeri di riga.
|