Dropstone Docs

GitHub

Utilisez Dropstone dans les problèmes et les demandes de fusion GitHub.

Dropstone s'intègre à votre flux de travail GitHub. Mentionnez /dropstone dans n'importe quel commentaire et Dropstone exécutera la tâche dans votre exécuteur GitHub Actions.


Fonctionnalités

  • Trier les problèmes : Demandez à Dropstone d'examiner un problème et de vous l'expliquer.
  • Corriger et implémenter : Demandez à Dropstone de corriger un problème ou d'implémenter une fonctionnalité. Il travaillera dans une nouvelle branche et soumettra une PR avec tous les changements.
  • Sécurisé : Dropstone s'exécute dans les exécuteurs de GitHub.

Installation

Exécutez la commande suivante dans un projet qui se trouve dans un dépôt GitHub :

dropstone github install

Cela vous guidera dans l'installation de l'application GitHub, la création du flux de travail et la configuration des secrets.


Configuration manuelle

Ou vous pouvez le configurer manuellement.

  1. Installez l'application GitHub

    Rendez-vous sur github.com/apps/dropstone-agent. Assurez-vous qu'elle est installée sur le dépôt cible.

  2. Ajoutez le flux de travail

    Ajoutez le fichier de flux de travail suivant à .github/workflows/dropstone.yml dans votre dépôt. Assurez-vous de définir le model approprié et les clés API requises dans 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. Stockez votre clé API dans les secrets du dépôt

    Dans les Paramètres de votre organisation ou dépôt, développez Secrets and variables sur la gauche et sélectionnez Actions. Ajoutez DROPSTONE_API_KEY comme nouveau secret du dépôt.


Configuration

  • model: Le niveau Dropstone à utiliser. L'un de dropstone/dropstone-fast, dropstone/dropstone-pro, ou dropstone/dropstone-heavy. C'est obligatoire.

  • agent: L'agent à utiliser. Doit être un agent principal. Revient à default_agent de la configuration ou "build" s'il n'est pas trouvé.

  • share: Indique s'il faut partager la session Dropstone. Par défaut true pour les dépôts publics.

  • prompt: Invite personnalisée optionnelle pour remplacer le comportement par défaut. Utilisez ceci pour personnaliser la façon dont Dropstone traite les demandes.

  • token: Jeton d'accès GitHub optionnel pour effectuer des opérations telles que la création de commentaires, la validation des modifications et l'ouverture de demandes de fusion. Par défaut, Dropstone utilise le jeton d'accès à l'installation de l'application GitHub Dropstone, de sorte que les validations, les commentaires et les demandes de fusion apparaissent comme provenant de l'application.

    Vous pouvez également utiliser le jeton GITHUB_TOKEN intégré de l'exécuteur GitHub Actions sans installer l'application GitHub Dropstone. Assurez-vous simplement d'accorder les autorisations requises dans votre flux de travail :

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

    Vous pouvez également utiliser des jetons d'accès personnel (PAT) si vous le préférez.


Événements pris en charge

Dropstone peut être déclenché par les événements GitHub suivants :

Type d'événementDéclenché parDétails
issue_commentCommentaire sur un problème ou une PRMentionnez /dropstone dans votre commentaire. Dropstone lit le contexte et peut créer des branches, ouvrir des PR ou répondre.
pull_request_review_commentCommentaire sur des lignes de code spécifiques dans une PRMentionnez /dropstone lors de l'examen du code. Dropstone reçoit le chemin du fichier, les numéros de ligne et le contexte de diff.
issuesProblème ouvert ou modifiéDéclenchez automatiquement Dropstone lorsque des problèmes sont créés ou modifiés. Nécessite une entrée prompt.
pull_requestPR ouverte ou mise à jourDéclenchez automatiquement Dropstone lorsque les PR sont ouvertes, synchronisées ou réouvertes. Utile pour les examens automatisés.
scheduleCalendrier basé sur cronExécutez Dropstone selon un calendrier. Nécessite une entrée prompt. La sortie va aux journaux et aux PR (pas de problème pour commenter).
workflow_dispatchDéclenchement manuel depuis l'interface GitHubDéclenchez Dropstone à la demande via l'onglet Actions. Nécessite une entrée prompt. La sortie va aux journaux et aux PR.

Exemple de calendrier

Exécutez Dropstone selon un calendrier pour effectuer des tâches automatisées :

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.

Pour les événements planifiés, l'entrée prompt est obligatoire car il n'y a pas de commentaire d'où extraire les instructions. Les flux de travail planifiés s'exécutent sans contexte utilisateur pour vérifier les autorisations, donc le flux de travail doit accorder contents: write et pull-requests: write si vous vous attendez à ce que Dropstone crée des branches ou des PR.


Exemple de demande de fusion

Examinez automatiquement les PR lorsqu'elles sont ouvertes ou mises à jour :

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

Pour les événements pull_request, si aucun prompt n'est fourni, Dropstone utilise par défaut l'examen de la demande de fusion.


Exemple de triage des problèmes

Triez automatiquement les nouveaux problèmes. Cet exemple filtre les comptes de plus de 30 jours pour réduire le 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.

Pour les événements issues, l'entrée prompt est obligatoire car il n'y a pas de commentaire d'où extraire les instructions.


Invites personnalisées

Remplacez l'invite par défaut pour personnaliser le comportement de Dropstone pour votre flux de travail.

- 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

Ceci est utile pour appliquer des critères d'examen spécifiques, des normes de codage ou des domaines d'intérêt pertinents pour votre projet.


Exemples

Voici quelques exemples de la façon dont vous pouvez utiliser Dropstone dans GitHub.

  • Expliquer un problème

    Ajoutez ce commentaire dans un problème GitHub.

    /dropstone explain this issue
    

    Dropstone lira l'ensemble du fil, y compris tous les commentaires, et répondra avec une explication claire.

  • Corriger un problème

    Dans un problème GitHub, dites :

    /dropstone fix this
    

    Et Dropstone créera une nouvelle branche, implémentera les modifications et ouvrira une PR avec les modifications.

  • Examiner les PR et apporter des modifications

    Laissez le commentaire suivant sur une PR GitHub.

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

    Dropstone implémentera la modification demandée et la validera dans la même PR.

  • Examiner des lignes de code spécifiques

    Laissez un commentaire directement sur les lignes de code dans l'onglet "Files" de la PR. Dropstone détecte automatiquement le fichier, les numéros de ligne et le contexte de diff pour fournir des réponses précises.

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

    Lors du commentaire sur des lignes spécifiques, Dropstone reçoit :

    • Le fichier exact en cours d'examen
    • Les lignes de code spécifiques
    • Le contexte de diff environnant
    • Les informations de numéro de ligne

    Cela permet des demandes plus ciblées sans avoir besoin de spécifier manuellement les chemins de fichiers ou les numéros de ligne.

Ctrl+I