Dropstone Docs

GitHub

Usa Dropstone nei problemi e nelle pull request di GitHub.

Dropstone si integra con il tuo flusso di lavoro GitHub. Menziona /dropstone in qualsiasi commento e Dropstone eseguirà l'attività all'interno del tuo runner GitHub Actions.


Funzionalità

  • Triage dei problemi: Chiedi a Dropstone di esaminare un problema e spiegartelo.
  • Correzione e implementazione: Chiedi a Dropstone di correggere un problema o implementare una funzionalità. Lavorerà in un nuovo branch e invierà una PR con tutti i cambiamenti.
  • Sicuro: Dropstone viene eseguito all'interno dei runner di GitHub.

Installazione

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

dropstone github install

Questo ti guiderà attraverso l'installazione dell'app GitHub, la creazione del workflow e la configurazione dei segreti.


Configurazione manuale

Oppure puoi configurarlo manualmente.

  1. Installa l'app GitHub

    Vai a github.com/apps/dropstone-agent. Assicurati che sia installata nel repository di destinazione.

  2. Aggiungi il workflow

    Aggiungi il seguente file di workflow a .github/workflows/dropstone.yml nel tuo repository. Assicurati di impostare il model appropriato e le chiavi API richieste in env.

    name: dropstone
    
    on:
      issue_comment:
        types: [created]
      pull_request_review_comment:
        types: [created]
    
    jobs:
      dropstone:
        if: contains(github.event.comment.body, '/dropstone')
        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 Dropstone
            uses: blankline-org/dropstone-cli/github@latest
            env:
              DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
            with:
              model: dropstone/dropstone-pro
              # share: true
              # github_token: xxxx
    
  3. Archivia la tua chiave API nei segreti del repository

    Nelle Impostazioni della tua organizzazione o repository, espandi Secrets and variables a sinistra e seleziona Actions. Aggiungi DROPSTONE_API_KEY come nuovo segreto del repository.


Configurazione

  • model: Il tier di Dropstone da utilizzare. Uno tra dropstone/dropstone-fast, dropstone/dropstone-pro, o dropstone/dropstone-heavy. Questo è obbligatorio.

  • agent: L'agente da utilizzare. Deve essere un agente primario. Ricade su default_agent dalla configurazione o "build" se non trovato.

  • share: Se condividere la sessione di Dropstone. Predefinito a true per i repository pubblici.

  • prompt: Prompt personalizzato opzionale per sovrascrivere il comportamento predefinito. Usalo per personalizzare il modo in cui Dropstone elabora le richieste.

  • token: Token di accesso GitHub opzionale per eseguire operazioni come creare commenti, eseguire commit e aprire pull request. Per impostazione predefinita, Dropstone utilizza il token di accesso dell'installazione dall'app GitHub di Dropstone, quindi i commit, i commenti e le pull request appaiono come provenienti dall'app.

    In alternativa, puoi utilizzare il built-in GITHUB_TOKEN del runner GitHub Actions senza installare l'app GitHub di Dropstone. Assicurati solo di concedere i permessi richiesti nel tuo workflow:

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

    Puoi anche utilizzare personal access tokens(PAT) se preferito.


Eventi supportati

Dropstone può essere attivato dai seguenti eventi GitHub:

Tipo di eventoAttivato daDettagli
issue_commentCommento su un problema o PRMenziona /dropstone nel tuo commento. Dropstone legge il contesto e può creare branch, aprire PR o rispondere.
pull_request_review_commentCommento su righe di codice specifiche in una PRMenziona /dropstone durante la revisione del codice. Dropstone riceve il percorso del file, i numeri di riga e il contesto diff.
issuesProblema aperto o modificatoAttiva automaticamente Dropstone quando i problemi vengono creati o modificati. Richiede input prompt.
pull_requestPR aperta o aggiornataAttiva automaticamente Dropstone quando le PR vengono aperte, sincronizzate o riaperte. Utile per revisioni automatizzate.
schedulePianificazione basata su cronEsegui Dropstone secondo una pianificazione. Richiede input prompt. L'output va ai log e alle PR (nessun problema su cui commentare).
workflow_dispatchAttivazione manuale dall'interfaccia utente di GitHubAttiva Dropstone su richiesta tramite la scheda Actions. Richiede input prompt. L'output va ai log e alle PR.

Esempio di pianificazione

Esegui Dropstone secondo una pianificazione per eseguire attività automatizzate:

name: Scheduled Dropstone Task

on:
  schedule:
    - cron: "0 9 * * 1" # Every Monday at 9am UTC

jobs:
  dropstone:
    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 Dropstone
        uses: blankline-org/dropstone-cli/github@latest
        env:
          DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
        with:
          model: dropstone/dropstone-pro
          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 pianificati, l'input prompt è obbligatorio poiché non c'è un commento da cui estrarre le istruzioni. I workflow pianificati vengono eseguiti senza un contesto utente per il controllo dei permessi, quindi il workflow deve concedere contents: write e pull-requests: write se ti aspetti che Dropstone crei branch o PR.


Esempio di Pull Request

Rivedi automaticamente le PR quando vengono aperte o aggiornate:

name: dropstone-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: blankline-org/dropstone-cli/github@latest
        env:
          DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          model: dropstone/dropstone-pro
          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, Dropstone predefinisce la revisione della pull request.


Esempio di Triage dei problemi

Triage automatico dei nuovi problemi. Questo esempio filtra gli account più vecchi di 30 giorni per ridurre lo spam:

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: blankline-org/dropstone-cli/github@latest
        if: steps.check.outputs.result == 'true'
        env:
          DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
        with:
          model: dropstone/dropstone-pro
          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 è obbligatorio poiché non c'è un commento da cui estrarre le istruzioni.


Prompt personalizzati

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

- uses: blankline-org/dropstone-cli/github@latest
  with:
    model: dropstone/dropstone-pro
    prompt: |
      Review this pull request:
      - Check for code quality issues
      - Look for potential bugs
      - Suggest improvements

Questo è utile per applicare criteri di revisione specifici, standard di codifica o aree di interesse rilevanti per il tuo progetto.


Esempi

Ecco alcuni esempi di come puoi utilizzare Dropstone in GitHub.

  • Spiega un problema

    Aggiungi questo commento in un problema GitHub.

    /dropstone explain this issue
    

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

  • Correggi un problema

    In un problema GitHub, scrivi:

    /dropstone fix this
    

    E Dropstone creerà un nuovo branch, implementerà i cambiamenti e aprirà una PR con i cambiamenti.

  • Rivedi le PR e apporta modifiche

    Lascia il seguente commento su una PR di GitHub.

    /dropstone delete the attachment from S3 when the note is removed
    

    Dropstone implementerà il cambiamento richiesto e lo farà il commit nello stesso PR.

  • Rivedi righe di codice specifiche

    Lascia un commento direttamente su righe di codice nella scheda "Files" della PR. Dropstone rileva automaticamente il file, i numeri di riga e il contesto diff per fornire risposte precise.

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

    Quando commenti su righe specifiche, Dropstone riceve:

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

    Questo consente richieste più mirate senza la necessità di specificare manualmente i percorsi dei file o i numeri di riga.

Ctrl+I