Dropstone Docs

GitHub

Используйте Dropstone в GitHub issues и pull-requests.

Dropstone интегрируется с вашим рабочим процессом GitHub. Упомяните /dropstone в любом комментарии, и Dropstone выполнит задачу внутри вашего GitHub Actions runner.


Возможности

  • Сортировка issues: Попросите Dropstone разобраться с issue и объяснить его вам.
  • Исправление и реализация: Попросите Dropstone исправить issue или реализовать функцию. Он будет работать в новой ветке и отправит PR со всеми изменениями.
  • Безопасность: Dropstone работает внутри ваших GitHub runners.

Установка

Выполните следующую команду в проекте, который находится в GitHub репозитории:

dropstone github install

Это проведет вас через установку GitHub приложения, создание workflow и настройку secrets.


Ручная настройка

Или вы можете настроить это вручную.

  1. Установите GitHub приложение

    Перейдите на github.com/apps/dropstone-agent. Убедитесь, что оно установлено в целевом репозитории.

  2. Добавьте workflow

    Добавьте следующий файл workflow в .github/workflows/dropstone.yml в вашем репозитории. Убедитесь, что установили соответствующий model и необходимые API ключи в 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. Сохраните ваш API ключ в repository secrets

    В Settings вашей организации или репозитория разверните Secrets and variables слева и выберите Actions. Добавьте DROPSTONE_API_KEY как новый repository secret.


Конфигурация

  • model: Уровень Dropstone для использования. Один из dropstone/dropstone-fast, dropstone/dropstone-pro или dropstone/dropstone-heavy. Это обязательно.

  • agent: Агент для использования. Должен быть основным агентом. Возвращается к default_agent из конфига или "build", если не найден.

  • share: Делиться ли сессией Dropstone. По умолчанию true для публичных репозиториев.

  • prompt: Опциональный пользовательский prompt для переопределения поведения по умолчанию. Используйте это для настройки того, как Dropstone обрабатывает запросы.

  • token: Опциональный GitHub access token для выполнения операций, таких как создание комментариев, коммиты и открытие pull requests. По умолчанию Dropstone использует installation access token из Dropstone GitHub App, поэтому коммиты, комментарии и pull requests появляются как от приложения.

    Альтернативно, вы можете использовать встроенный GITHUB_TOKEN GitHub Action runner без установки Dropstone GitHub App. Просто убедитесь, что предоставили необходимые разрешения в вашем workflow:

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

    Вы также можете использовать personal access tokens(PAT), если предпочитаете.


Поддерживаемые события

Dropstone может быть запущен следующими GitHub событиями:

Тип событияЗапущеноДетали
issue_commentКомментарий на issue или PRУпомяните /dropstone в вашем комментарии. Dropstone читает контекст и может создавать ветки, открывать PRs или отвечать.
pull_request_review_commentКомментарий на конкретные строки кода в PRУпомяните /dropstone при рецензировании кода. Dropstone получает путь файла, номера строк и контекст diff.
issuesIssue открыта или отредактированаАвтоматически запустить Dropstone при создании или изменении issues. Требует ввод prompt.
pull_requestPR открыта или обновленаАвтоматически запустить Dropstone при открытии, синхронизации или переоткрытии PRs. Полезно для автоматизированных рецензий.
scheduleРасписание на основе CronЗапустить Dropstone по расписанию. Требует ввод prompt. Вывод идет в логи и PRs (нет issue для комментария).
workflow_dispatchРучной запуск из GitHub UIЗапустить Dropstone по требованию через вкладку Actions. Требует ввод prompt. Вывод идет в логи и PRs.

Пример расписания

Запустить Dropstone по расписанию для выполнения автоматизированных задач:

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.

Для запланированных событий ввод prompt обязателен, так как нет комментария для извлечения инструкций. Запланированные workflows работают без контекста пользователя для проверки разрешений, поэтому workflow должен предоставить contents: write и pull-requests: write, если вы ожидаете, что Dropstone создаст ветки или PRs.


Пример Pull Request

Автоматически рецензировать PRs при их открытии или обновлении:

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

Для событий pull_request, если prompt не предоставлен, Dropstone по умолчанию рецензирует pull request.


Пример сортировки Issues

Автоматически сортировать новые issues. Этот пример фильтрует аккаунты старше 30 дней для снижения спама:

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.

Для событий issues ввод prompt обязателен, так как нет комментария для извлечения инструкций.


Пользовательские prompts

Переопределите prompt по умолчанию для настройки поведения Dropstone под ваш workflow.

- 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

Это полезно для применения конкретных критериев рецензии, стандартов кодирования или областей фокуса, релевантных для вашего проекта.


Примеры

Вот несколько примеров того, как вы можете использовать Dropstone в GitHub.

  • Объясните issue

    Добавьте этот комментарий в GitHub issue.

    /dropstone explain this issue
    

    Dropstone прочитает весь поток, включая все комментарии, и ответит с четким объяснением.

  • Исправьте issue

    В GitHub issue скажите:

    /dropstone fix this
    

    И Dropstone создаст новую ветку, реализует изменения и откроет PR с изменениями.

  • Рецензируйте PRs и вносите изменения

    Оставьте следующий комментарий на GitHub PR.

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

    Dropstone реализует запрошенное изменение и закоммитит его в тот же PR.

  • Рецензируйте конкретные строки кода

    Оставьте комментарий непосредственно на строках кода во вкладке "Files" PR. Dropstone автоматически определяет файл, номера строк и контекст diff для предоставления точных ответов.

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

    При комментировании конкретных строк Dropstone получает:

    • Точный файл, который рецензируется
    • Конкретные строки кода
    • Окружающий контекст diff
    • Информацию о номерах строк

    Это позволяет делать более целевые запросы без необходимости вручную указывать пути файлов или номера строк.

Ctrl+I