Dropstone Docs

GitHub

Verwenden Sie Dropstone in GitHub-Issues und Pull-Requests.

Dropstone integriert sich in Ihren GitHub-Workflow. Erwähnen Sie /dropstone in einem beliebigen Kommentar und Dropstone führt die Aufgabe in Ihrem GitHub Actions Runner aus.


Features

  • Issues triagieren: Bitten Sie Dropstone, ein Issue zu untersuchen und es Ihnen zu erklären.
  • Beheben und implementieren: Bitten Sie Dropstone, ein Issue zu beheben oder ein Feature zu implementieren. Es wird in einem neuen Branch arbeiten und einen PR mit allen Änderungen einreichen.
  • Sicher: Dropstone läuft in Ihren GitHub Runnern.

Installation

Führen Sie den folgenden Befehl in einem Projekt aus, das sich in einem GitHub-Repository befindet:

dropstone github install

Dies führt Sie durch die Installation der GitHub-App, das Erstellen des Workflows und das Einrichten von Secrets.


Manuelle Einrichtung

Oder Sie können es manuell einrichten.

  1. Installieren Sie die GitHub-App

    Gehen Sie zu github.com/apps/dropstone-agent. Stellen Sie sicher, dass sie im Ziel-Repository installiert ist.

  2. Fügen Sie den Workflow hinzu

    Fügen Sie die folgende Workflow-Datei zu .github/workflows/dropstone.yml in Ihrem Repository hinzu. Stellen Sie sicher, dass Sie das entsprechende model und erforderliche API-Schlüssel in env setzen.

    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. Speichern Sie Ihren API-Schlüssel in Repository-Secrets

    Gehen Sie in Ihren Organisations- oder Repository-Einstellungen, erweitern Sie Secrets and variables auf der linken Seite und wählen Sie Actions. Fügen Sie DROPSTONE_API_KEY als neues Repository-Secret hinzu.


Konfiguration

  • model: Die zu verwendende Dropstone-Stufe. Eine von dropstone/dropstone-fast, dropstone/dropstone-pro oder dropstone/dropstone-heavy. Dies ist erforderlich.

  • agent: Der zu verwendende Agent. Muss ein primärer Agent sein. Fällt auf default_agent aus der Konfiguration oder "build" zurück, falls nicht gefunden.

  • share: Ob die Dropstone-Sitzung geteilt werden soll. Standardmäßig true für öffentliche Repositories.

  • prompt: Optionaler benutzerdefinierter Prompt zum Überschreiben des Standardverhaltens. Verwenden Sie dies, um anzupassen, wie Dropstone Anfragen verarbeitet.

  • token: Optionales GitHub-Zugriffstoken zum Ausführen von Operationen wie dem Erstellen von Kommentaren, dem Committen von Änderungen und dem Öffnen von Pull Requests. Standardmäßig verwendet Dropstone das Installations-Zugriffstoken der Dropstone GitHub-App, sodass Commits, Kommentare und Pull Requests von der App stammen.

    Alternativ können Sie das integrierte GITHUB_TOKEN des GitHub Action Runners verwenden, ohne die Dropstone GitHub-App zu installieren. Stellen Sie einfach sicher, dass Sie die erforderlichen Berechtigungen in Ihrem Workflow gewähren:

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

    Sie können auch persönliche Zugriffstokens (PAT) verwenden, wenn Sie dies bevorzugen.


Unterstützte Events

Dropstone kann durch die folgenden GitHub-Events ausgelöst werden:

Event-TypAusgelöst durchDetails
issue_commentKommentar zu einem Issue oder PRErwähnen Sie /dropstone in Ihrem Kommentar. Dropstone liest den Kontext und kann Branches erstellen, PRs öffnen oder antworten.
pull_request_review_commentKommentar zu bestimmten Code-Zeilen in einem PRErwähnen Sie /dropstone beim Überprüfen von Code. Dropstone erhält Dateipfad, Zeilennummern und Diff-Kontext.
issuesIssue geöffnet oder bearbeitetDropstone automatisch auslösen, wenn Issues erstellt oder geändert werden. Erfordert prompt-Eingabe.
pull_requestPR geöffnet oder aktualisiertDropstone automatisch auslösen, wenn PRs geöffnet, synchronisiert oder erneut geöffnet werden. Nützlich für automatisierte Reviews.
scheduleCron-basierter ZeitplanDropstone nach einem Zeitplan ausführen. Erfordert prompt-Eingabe. Ausgabe geht in Logs und PRs (kein Issue zum Kommentieren).
workflow_dispatchManuelle Auslösung aus GitHub UIDropstone auf Anfrage über die Actions-Registerkarte auslösen. Erfordert prompt-Eingabe. Ausgabe geht in Logs und PRs.

Schedule-Beispiel

Führen Sie Dropstone nach einem Zeitplan aus, um automatisierte Aufgaben auszuführen:

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.

Für geplante Events ist die prompt-Eingabe erforderlich, da es keinen Kommentar gibt, aus dem Anweisungen extrahiert werden können. Geplante Workflows werden ohne Benutzerkontext ausgeführt, um Berechtigungen zu überprüfen. Der Workflow muss daher contents: write und pull-requests: write gewähren, wenn Sie erwarten, dass Dropstone Branches oder PRs erstellt.


Pull Request-Beispiel

Überprüfen Sie PRs automatisch, wenn sie geöffnet oder aktualisiert werden:

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

Für pull_request-Events wird Dropstone standardmäßig den Pull Request überprüfen, wenn kein prompt bereitgestellt wird.


Issues-Triage-Beispiel

Triagieren Sie neue Issues automatisch. Dieses Beispiel filtert nach Konten, die älter als 30 Tage sind, um Spam zu reduzieren:

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.

Für issues-Events ist die prompt-Eingabe erforderlich, da es keinen Kommentar gibt, aus dem Anweisungen extrahiert werden können.


Benutzerdefinierte Prompts

Überschreiben Sie den Standard-Prompt, um das Verhalten von Dropstone für Ihren Workflow anzupassen.

- 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

Dies ist nützlich, um spezifische Review-Kriterien, Coding-Standards oder Fokusgebiete durchzusetzen, die für Ihr Projekt relevant sind.


Beispiele

Hier sind einige Beispiele, wie Sie Dropstone in GitHub verwenden können.

  • Ein Issue erklären

    Fügen Sie diesen Kommentar in einem GitHub-Issue hinzu.

    /dropstone explain this issue
    

    Dropstone liest den gesamten Thread, einschließlich aller Kommentare, und antwortet mit einer klaren Erklärung.

  • Ein Issue beheben

    Sagen Sie in einem GitHub-Issue:

    /dropstone fix this
    

    Und Dropstone erstellt einen neuen Branch, implementiert die Änderungen und öffnet einen PR mit den Änderungen.

  • PRs überprüfen und Änderungen vornehmen

    Hinterlassen Sie den folgenden Kommentar auf einem GitHub PR.

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

    Dropstone implementiert die angeforderte Änderung und committed sie in denselben PR.

  • Bestimmte Code-Zeilen überprüfen

    Hinterlassen Sie einen Kommentar direkt auf Code-Zeilen in der Registerkarte "Files" des PR. Dropstone erkennt automatisch die Datei, Zeilennummern und Diff-Kontext, um präzise Antworten zu geben.

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

    Beim Kommentieren bestimmter Zeilen erhält Dropstone:

    • Die genaue überprüfte Datei
    • Die spezifischen Code-Zeilen
    • Den umgebenden Diff-Kontext
    • Zeilennummerinformationen

    Dies ermöglicht gezielteren Anfragen, ohne Dateipfade oder Zeilennummern manuell angeben zu müssen.

Strg+I