Что даёт
Автоматическое ревью и описание pull request: простой шаг на curl, PR-Agent (Qodo Merge) или Claude Code как action; тот же ключ работает в любом другом шаге workflow.
Эндпоинт: POST https://api.morsmorii.ru/v1/chat/completions
Какую модель брать
ревью — claude-sonnet-5-5; описания и короткие тексты — claude-haiku-4-5
Ревью diff требует понимания кода — Sonnet 5.5; описания PR и changelog — короткие тексты, Haiku пишет их за копейки.
Ориентир стоимости
ревью MR на 300 строк: ~20 000 токенов на входе и 2 000 на выходе — около 19 ₽; сообщение коммита или описание MR на Haiku 4.5: ~3 000 токенов на входе — около 1 ₽
Конфигурация
Вместо sk-ВАШ_КЛЮЧ_MORSMORII подставьте ключ из раздела «API-ключи». Для инструмента лучше завести отдельный ключ с ограничением по моделям и бюджетом.
.github/workflows/ai-review.yml — ревью diff одним шагом
# Settings → Secrets and variables → Actions: MORSMORII_API_KEY
# (ключ ограничьте моделями claude-sonnet-5-5 и claude-haiku-4-5 и бюджетом)
name: AI review
on: pull_request
permissions:
contents: read
pull-requests: write
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- name: Ревью моделью Morsmorii
env:
MORSMORII_API_KEY: ${{ secrets.MORSMORII_API_KEY }}
GH_TOKEN: ${{ github.token }}
run: |
DIFF=$(git diff "origin/${{ github.base_ref }}...HEAD" | head -c 60000)
jq -n --arg d "$DIFF" '{model:"claude-sonnet-5-5",max_tokens:1500,
messages:[{role:"system",content:"Ты ревьюер кода. По-русски и кратко: ошибки, риски, что улучшить."},
{role:"user",content:$d}]}' > req.json
curl -sS --fail https://api.morsmorii.ru/v1/chat/completions \
-H "Authorization: Bearer $MORSMORII_API_KEY" \
-H "Content-Type: application/json" -d @req.json \
| jq -r '.choices[0].message.content' > review.md
gh pr comment "${{ github.event.pull_request.number }}" --body-file review.mdPR-Agent (Qodo Merge) как action: /review, /describe, /improve
name: PR-Agent
on:
pull_request:
types: [opened, reopened, ready_for_review]
issue_comment:
permissions:
issues: write
pull-requests: write
contents: read
jobs:
pr_agent:
runs-on: ubuntu-latest
steps:
- uses: qodo-ai/pr-agent@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI__KEY: ${{ secrets.MORSMORII_API_KEY }}
OPENAI__API_BASE: https://api.morsmorii.ru/v1
CONFIG__MODEL: openai/claude-sonnet-5-5
CONFIG__FALLBACK_MODELS: '["openai/claude-haiku-4-5"]'
CONFIG__CUSTOM_MODEL_MAX_TOKENS: "200000"
PR_DESCRIPTION__MODEL: openai/claude-haiku-4-5Claude Code в workflow (anthropics/claude-code-action@v1) — по документации, отвечает на @claude в PR
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
env:
ANTHROPIC_BASE_URL: https://api.morsmorii.ru # без /v1
ANTHROPIC_MODEL: claude-sonnet-5-5
ANTHROPIC_DEFAULT_HAIKU_MODEL: claude-haiku-4-5
steps:
- uses: actions/checkout@v4
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.MORSMORII_API_KEY }} # уйдёт как x-api-keyКак ограничить ключ
- В разделе «API-ключи» создайте отдельный ключ для этого инструмента — так расход виден отдельно, а отзыв не заденет остальное.
- В поле «Модели» оставьте только рекомендованные выше: ключ ответит 403 на любую другую модель.
- Задайте месячный бюджет в рублях: после него — 429 key_budget_exceeded, списание останавливается.
- В команде каждый сотрудник заводит свои ключи: расход по людям видно в разделе «Команда» и в
GET /v1/usage.
Тонкости
- Ключ — только в Secrets, не в файле workflow. Для CI заведите отдельный ключ с бюджетом: при превышении API ответит 429 key_budget_exceeded, и шаг упадёт, а не спишет лишнее.
- curl с --fail валит шаг на 4xx/5xx; в ответе есть x-request-id — его стоит приложить к обращению в поддержку.
- Большой diff обрезайте (head -c 60000 ≈ 15 тыс. токенов): на Sonnet 5.5 такое ревью стоит 10–20 ₽.