Русский
Документация
GitHub

GitHub

Используйте OpenCode в issues и pull-request'ах GitHub.

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


Возможности

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

Установка

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

opencode github install

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


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

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

  1. Установите приложение GitHub Перейдите на github.com/apps/opencode-agent (opens in a new tab). Убедитесь, что оно установлено в целевом репозитории.

  2. Добавьте workflow Добавьте следующий файл workflow в .github/workflows/opencode.yml в вашем репозитории. Убедитесь, что вы установили соответствующую model и необходимые API-ключи в env.

    .github/workflows/opencode.yml
    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. Сохраните API-ключи в secrets В настройках вашей организации или проекта разверните Secrets and variables слева и выберите Actions. И добавьте необходимые API-ключи.


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

  • model: Модель для использования с OpenCode. Принимает формат provider/model. Это обязательно.

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

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

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

  • token: Необязательный токен доступа GitHub для выполнения операций, таких как создание комментариев, коммит изменений и открытие pull-request'ов. По умолчанию OpenCode использует токен доступа установки из приложения OpenCode GitHub App, поэтому коммиты, комментарии и pull-request'ы отображаются как исходящие от приложения. В качестве альтернативы вы можете использовать встроенный GITHUB_TOKEN (opens in a new tab) раннера GitHub Action без установки приложения OpenCode GitHub App. Просто убедитесь, что вы предоставили необходимые разрешения в вашем workflow:

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

    Вы также можете использовать персональные токены доступа (opens in a new tab) (PAT), если предпочитаете.


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

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

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

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

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

.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.

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


Пример Pull Request

Автоматически проверяйте PR при их открытии или обновлении:

.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

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


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

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

.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.

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


Пользовательские промпты

Переопределите промпт по умолчанию, чтобы настроить поведение OpenCode для вашего рабочего процесса.

.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

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


Примеры

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

  • Объяснить issue Добавьте этот комментарий в issue GitHub.

    /opencode explain this issue

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

  • Исправить issue В issue GitHub напишите:

    /opencode fix this

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

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

    Delete the attachment from S3 when the note is removed /oc

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

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

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

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

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

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