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

GitHub

Используйте OpenCode в issues и pull requests 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 requests. По умолчанию OpenCode использует токен доступа установки из приложения OpenCode GitHub App, поэтому коммиты, комментарии и pull requests отображаются как исходящие от приложения.

    В качестве альтернативы вы можете использовать встроенный 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Ручной запуск из UI 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 в вашем workflow.

.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
    • Информацию о номерах строк

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