@alibaba-group/open-code-review 1.7.13 → 1.7.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ru-RU.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <div align="center">
2
- <a href="https://alibaba.github.io/open-code-review/">
2
+ <a href="https://open-codereview.ai">
3
3
  <img src="imgs/logo-core.svg" alt="OpenCodeReview logo" width="180" />
4
4
  </a>
5
5
  <h1>OpenCodeReview</h1>
@@ -37,7 +37,7 @@ Open Code Review — это CLI-инструмент для код-ревью н
37
37
 
38
38
  Инструмент читает git-диффы, отправляет изменённые файлы настраиваемой LLM через агента с поддержкой вызова инструментов (tool use) и генерирует структурированные ревью-комментарии с точностью до строки. Агент может читать полное содержимое файлов, искать по кодовой базе, заглядывать в другие изменённые файлы за контекстом и выполнять глубокое ревью — а не только давать поверхностные замечания по диффу. Помимо ревью диффов, `ocr scan` позволяет проверять файлы целиком — удобно для аудита незнакомой кодовой базы или каталогов без значимого диффа.
39
39
 
40
- Подробнее на [официальном сайте](https://alibaba.github.io/open-code-review/).
40
+ Подробнее на [официальном сайте](https://open-codereview.ai).
41
41
 
42
42
  ![Highlights](imgs/highlights-en.png)
43
43
 
@@ -99,116 +99,19 @@ Open Code Review — это CLI-инструмент для код-ревью н
99
99
 
100
100
  #### Установка
101
101
 
102
- **Через NPM (рекомендуется)**
103
-
104
102
  ```bash
105
103
  npm install -g @alibaba-group/open-code-review
106
104
  ```
107
105
 
108
106
  После установки команда `ocr` доступна глобально.
109
107
 
110
- **Обновление**
111
-
112
- Если установка выполнена через NPM, обновите вручную до последней версии:
113
-
114
- ```bash
115
- npm install -g @alibaba-group/open-code-review@latest
116
- ```
117
-
118
- Установка через NPM также по умолчанию проверяет новые версии в фоне и обновляется автоматически. Чтобы отключить автообновления, задайте `OCR_NO_UPDATE=1`.
119
-
120
- Если вы устанавливали через install script или вручную скачанный бинарный файл, повторно запустите ту же команду установки/скачивания, чтобы заменить локальный бинарный файл последним релизом. Используйте `OCR_VERSION`, если нужно зафиксировать конкретный тег релиза.
121
-
122
- **Из GitHub Release**
123
-
124
- Установите свежий бинарный файл для вашей ОС/архитектуры одной командой (macOS / Linux):
125
-
126
- ```bash
127
- curl -fsSL https://raw.githubusercontent.com/alibaba/open-code-review/main/install.sh | sh
128
- ```
129
-
130
- Скрипт сам выбирает подходящий бинарный файл релиза, проверяет его контрольную сумму SHA-256 и устанавливает его как `ocr` в `/usr/local/bin`. Каталог установки можно переопределить через `OCR_INSTALL_DIR`, а версию релиза зафиксировать через `OCR_VERSION`:
131
-
132
- ```bash
133
- OCR_INSTALL_DIR="$HOME/.local/bin" OCR_VERSION=v1.3.13 \
134
- sh -c "$(curl -fsSL https://raw.githubusercontent.com/alibaba/open-code-review/main/install.sh)"
135
- ```
136
-
137
- В Windows (PowerShell 5.1+):
138
-
139
- ```powershell
140
- irm https://raw.githubusercontent.com/alibaba/open-code-review/main/install.ps1 | iex
141
- ```
142
-
143
- Скрипт сам выбирает подходящий Windows-бинарный файл релиза, проверяет его контрольную сумму SHA-256 и устанавливает его как `ocr.exe` в `%LOCALAPPDATA%\Programs\ocr`. Каталог установки можно переопределить через `OCR_INSTALL_DIR`, а версию релиза зафиксировать через `OCR_VERSION`:
144
-
145
- ```powershell
146
- $env:OCR_INSTALL_DIR = "$env:USERPROFILE\bin"
147
- $env:OCR_VERSION = "v1.3.13"
148
- irm https://raw.githubusercontent.com/alibaba/open-code-review/main/install.ps1 | iex
149
- ```
150
-
151
- Передача удалённого скрипта напрямую в shell выполняет код из интернета. Лучше сначала скачать и просмотреть скрипт:
152
-
153
- ```bash
154
- curl -fsSL https://raw.githubusercontent.com/alibaba/open-code-review/main/install.sh -o install.sh
155
- less install.sh && sh install.sh
156
- ```
157
-
158
- ```powershell
159
- irm https://raw.githubusercontent.com/alibaba/open-code-review/main/install.ps1 -OutFile install.ps1
160
- notepad install.ps1 # просмотрите, затем: .\install.ps1
161
- ```
162
-
163
- <details>
164
- <summary>Ручная загрузка (все платформы, включая Windows)</summary>
165
-
166
- Скачайте бинарный файл для вашей платформы со страницы [GitHub Releases](https://github.com/alibaba/open-code-review/releases):
167
-
168
- ```bash
169
- # macOS (Apple Silicon)
170
- curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-darwin-arm64
171
- chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
172
-
173
- # macOS (Intel)
174
- curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-darwin-amd64
175
- chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
176
-
177
- # Linux (x86_64)
178
- curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-linux-amd64
179
- chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
180
-
181
- # Linux (ARM64)
182
- curl -Lo ocr https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-linux-arm64
183
- chmod +x ocr && sudo mv ocr /usr/local/bin/ocr
184
-
185
- # Windows (x86_64) — переместите ocr.exe в каталог из вашего PATH
186
- curl -Lo ocr.exe https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-windows-amd64.exe
187
-
188
- # Windows (ARM64) — переместите ocr.exe в каталог из вашего PATH
189
- curl -Lo ocr.exe https://github.com/alibaba/open-code-review/releases/latest/download/opencodereview-windows-arm64.exe
190
- ```
191
-
192
- </details>
193
-
194
- **Из исходников**
195
-
196
- ```bash
197
- git clone https://github.com/alibaba/open-code-review.git
198
- cd open-code-review
199
- make build
200
- sudo cp dist/opencodereview /usr/local/bin/ocr
201
- ```
108
+ Другие способы установки (скрипт установки, бинарный файл из GitHub Release, сборка из исходников) описаны в [руководстве по установке](https://open-codereview.ai/docs/installation).
202
109
 
203
110
  #### Быстрый старт
204
111
 
205
112
  **1. Настройте LLM**
206
113
 
207
- **Перед запуском ревью необходимо настроить LLM.**
208
-
209
- OCR управляет конфигурацией LLM через единую систему **провайдеров (Provider)**. Множество популярных провайдеров встроено, также поддерживается добавление пользовательских провайдеров для подключения к приватным развёртываниям или другим совместимым эндпоинтам. Конфигурация хранится в `~/.opencodereview/config.json`.
210
-
211
- **Вариант A: интерактивная настройка (рекомендуется)**
114
+ Перед запуском ревью необходимо настроить LLM, если только вы не используете [режим делегирования](https://open-codereview.ai/docs/delegate).
212
115
 
213
116
  ```bash
214
117
  ocr config provider # Выбрать встроенного провайдера или добавить пользовательский
@@ -219,91 +122,9 @@ ocr config model # Выбрать модель для активно
219
122
 
220
123
  Интерактивный UI проведёт вас через выбор провайдера, ввод API-ключа и настройку модели, после чего автоматически проверит подключение.
221
124
 
222
- Выполните `ocr llm providers`, чтобы увидеть все встроенные провайдеры. У встроенных провайдеров предустановлены URL API и протокол достаточно указать API-ключ. Если соответствующая переменная окружения уже задана (например, `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`), API-ключ будет подхвачен автоматически.
223
-
224
- **Пользовательские провайдеры** также добавляются через интерактивный UI — потребуется указать имя, URL API, тип протокола (`anthropic` или `openai`) и API-ключ.
225
-
226
- **Вариант B: настройка через CLI (для CI/CD и неинтерактивных сред)**
125
+ Настройка через CLI, переменные окружения, пользовательские провайдеры и другие расширенные параметры описаны в [руководстве по конфигурации](https://open-codereview.ai/docs/configuration).
227
126
 
228
- Используйте `ocr config set` для записи конфигурации провайдера напрямую — подходит для скриптов и автоматизации.
229
-
230
- Использование встроенного провайдера:
231
-
232
- ```bash
233
- ocr config set provider anthropic
234
- ocr config set providers.anthropic.api_key your-api-key-here
235
- ocr config set providers.anthropic.model claude-sonnet-4-6
236
- ```
237
-
238
- Использование пользовательского провайдера (приватный шлюз или другой совместимый эндпоинт):
239
-
240
- ```bash
241
- ocr config set provider my-gateway
242
- ocr config set custom_providers.my-gateway.url https://my-llm-gateway.internal/v1
243
- ocr config set custom_providers.my-gateway.protocol openai
244
- ocr config set custom_providers.my-gateway.api_key your-api-key-here
245
- ocr config set custom_providers.my-gateway.model gpt-4o
246
- ```
247
-
248
- > Для пользовательских провайдеров `url` и `protocol` обязательны. Поддерживаемые протоколы: `anthropic`, `openai`, `openai-responses`.
249
-
250
- Дополнительные настройки:
251
-
252
- | Ключ | Описание |
253
- |------|----------|
254
- | `providers.<name>.auth_header` | Заголовок аутентификации: `x-api-key` или `authorization` (по умолчанию: `authorization`) |
255
- | `providers.<name>.extra_body` | Пользовательские JSON-поля, добавляемые в тело запроса |
256
- | `providers.<name>.extra_headers` | Пары `key=value`, разделённые запятыми — пользовательские HTTP-заголовки для каждого запроса |
257
- | `providers.<name>.models` | Список моделей для интерактивного выбора |
258
-
259
- **`extra_headers` (необязательно):** добавляет пользовательские HTTP-заголовки к каждому запросу к LLM API. Полезно для прокси, шлюзов или корпоративных эндпоинтов, требующих дополнительных заголовков (например, ID организации, ID трассировки). Формат — пары `key=value`, разделённые запятыми. Значения с запятыми заключается в двойные кавычки:
260
-
261
- ```bash
262
- ocr config set llm.extra_headers "X-Org-ID=org-123,X-Forwarded-For=\"1.2.3.4,5.6.7.8\""
263
- ```
264
-
265
- Дополнительные заголовки также можно задать для отдельного провайдера:
266
-
267
- ```bash
268
- ocr config set providers.anthropic.extra_headers "X-Org-ID=org-123"
269
- ```
270
-
271
- **Переменные окружения (наивысший приоритет)**
272
-
273
- Переменные окружения переопределяют настройки из файла конфигурации — удобно в CI/CD, где запись в конфиг-файл затруднена:
274
-
275
- ```bash
276
- export OCR_LLM_URL=https://api.anthropic.com/v1/messages
277
- export OCR_LLM_TOKEN=your-api-key-here
278
- export OCR_LLM_MODEL=claude-opus-4-6
279
- export OCR_USE_ANTHROPIC=true
280
- ```
281
-
282
- Чтобы использовать OpenAI Responses API (модели GPT-5.x / o-series), задайте `OCR_LLM_PROTOCOL` вместо `OCR_USE_ANTHROPIC`:
283
-
284
- ```bash
285
- export OCR_LLM_URL=https://api.openai.com/v1
286
- export OCR_LLM_TOKEN=your-openai-key
287
- export OCR_LLM_MODEL=gpt-5.4
288
- export OCR_LLM_PROTOCOL=openai-responses
289
- ```
290
-
291
- `OCR_LLM_PROTOCOL` принимает значения `anthropic`, `openai`, `openai-responses` и имеет приоритет над `OCR_USE_ANTHROPIC`, если заданы обе переменные.
292
-
293
- Также совместим с переменными окружения Claude Code (`ANTHROPIC_BASE_URL`, `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_MODEL`) и разбирает `~/.zshrc` / `~/.bashrc` в поисках соответствующих export'ов.
294
-
295
- > **Примечание для пользователей CC-Switch**: если вы используете [CC-Switch](https://github.com/farion1231/cc-switch) с включённым [routing service](https://www.ccswitch.io/en/docs?section=proxy&item=service), можно указать в `url` провайдера адрес прокси CC-Switch без дополнительной настройки:
296
- > - Для провайдера **Claude**: установите `providers.anthropic.url` в `http://127.0.0.1:15721`
297
- > - Для провайдера **Codex**: установите `url` соответствующего провайдера в `http://127.0.0.1:15721/v1`
298
- > - `api_key` может быть любым, настройки `extra_body` продолжают действовать
299
-
300
- **2. Проверьте подключение**
301
-
302
- ```bash
303
- ocr llm test
304
- ```
305
-
306
- **3. Запустите ревью**
127
+ **2. Запустите ревью**
307
128
 
308
129
  ```bash
309
130
  cd your-project
@@ -331,628 +152,24 @@ ocr delegate preview
331
152
  ocr delegate rule src/main.go src/handler.go
332
153
  ```
333
154
 
334
- ### Интеграция с кодинг-агентами
335
-
336
- OCR легко встраивается в ИИ-агентов для разработки в виде slash-команды, позволяя выполнять код-ревью прямо в рабочем процессе агента.
337
-
338
- #### Вариант 1: установка как Skill
339
-
340
- Установите скилл OCR в свой проект через `npx`:
341
-
342
- ```bash
343
- npx skills add alibaba/open-code-review --skill open-code-review
344
- ```
345
-
346
- Это установит скилл `open-code-review` из [реестра скиллов](skills/open-code-review/SKILL.md), который объясняет вашему кодинг-агенту, как вызывать `ocr` для код-ревью, классифицировать найденные проблемы по приоритету и при необходимости применять исправления.
347
-
348
- **Режим делегирования** если вы хотите, чтобы AI-агент сам выполнял ревью (OCR отвечает только за выбор файлов и разрешение правил, настройка LLM на стороне OCR не требуется):
349
-
350
- ```bash
351
- npx skills add alibaba/open-code-review --skill open-code-review-delegate
352
- ```
353
-
354
- Подробнее см. [skills/open-code-review-delegate/SKILL.md](skills/open-code-review-delegate/SKILL.md).
355
-
356
- #### Вариант 2: установка как плагин Claude Code
357
-
358
- Для [Claude Code](https://docs.anthropic.com/en/docs/claude-code) установите плагин с командой, выполнив в Claude Code:
359
-
360
- ```bash
361
- /plugin marketplace add alibaba/open-code-review
362
- /plugin install open-code-review@open-code-review
363
- ```
364
-
365
- Это зарегистрирует slash-команду `/open-code-review:review`, которая запускает OCR и автоматически фильтрует и исправляет найденные проблемы. Также предоставляется команда `/open-code-review:delegate-review` для режима делегирования (агент выполняет ревью своими силами, OCR отвечает за выбор файлов и разрешение правил).
366
-
367
- #### Вариант 3: установка как плагин Codex
368
-
369
- Для локального Codex установите плагин Open Code Review из этого репозитория:
370
-
371
- ```bash
372
- codex plugin marketplace add alibaba/open-code-review
373
- codex
374
- /plugins
375
- ```
376
-
377
- Для локального чекаута или форка:
378
-
379
- ```bash
380
- codex plugin marketplace add .
381
- codex
382
- /plugins
383
- ```
384
-
385
- Установите и включите `Open Code Review`, затем начните новый тред Codex и вызывайте плагин явно:
386
-
387
- ```text
388
- @Open Code Review review my current changes
389
- @Open Code Review review this branch against main
390
- @Open Code Review review and fix high-confidence issues
391
- ```
392
-
393
- Это зарегистрирует Codex-скилл, запускающий локальный CLI OCR:
394
-
395
- ```bash
396
- ocr review --audience agent
397
- ```
398
-
399
- Эта интеграция не меняет внутренний LLM-бэкенд OCR и не требует настройки эндпоинта OpenAI Responses API для Codex. Самому OCR по-прежнему нужен установленный и настроенный CLI `ocr`, как описано в разделе про настройку CLI.
400
-
401
- Руководство на корейском: [`plugins/open-code-review/CODEX.ko-KR.md`](plugins/open-code-review/CODEX.ko-KR.md)
402
-
403
- #### Вариант 4: установка как плагин Cursor
404
-
405
- Для [Cursor](https://www.cursor.com/) установите плагин Open Code Review из этого репозитория:
406
-
407
- ```
408
- cursor-plugin marketplace add alibaba/open-code-review
409
- ```
410
-
411
- Или добавьте маркетплейс вручную. В Cursor откройте `/plugins`, найдите `Open Code Review` и установите.
412
-
413
- Для локального чекаута или форка:
414
-
415
- ```
416
- cursor-plugin marketplace add .
417
- ```
418
-
419
- После установки вызывайте плагин в Cursor:
420
-
421
- ```text
422
- @Open Code Review review my current changes
423
- @Open Code Review review this branch against main
424
- @Open Code Review review and fix high-confidence issues
425
- ```
426
-
427
- Это зарегистрирует Cursor-скилл, запускающий локальный CLI OCR:
428
-
429
- ```bash
430
- ocr review --audience agent
431
- ```
432
-
433
- Эта интеграция не меняет внутренний LLM-бэкенд OCR. Самому OCR по-прежнему нужен установленный и настроенный CLI `ocr`, как описано в разделе про настройку CLI.
434
-
435
- #### Вариант 5: просто скопировать файл команды
436
-
437
- Для быстрой настройки без пакетных менеджеров достаточно скопировать файл команды, чтобы использовать slash-команду `/open-code-review` в Claude Code.
438
-
439
- **На уровне проекта** (общий для команды через git):
440
-
441
- ```bash
442
- mkdir -p .claude/commands
443
- curl -o .claude/commands/open-code-review.md \
444
- https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/claude-code/commands/review.md
445
- ```
446
-
447
- **На уровне пользователя** (личное глобальное использование во всех проектах):
448
-
449
- ```bash
450
- mkdir -p ~/.claude/commands
451
- curl -o ~/.claude/commands/open-code-review.md \
452
- https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/claude-code/commands/review.md
453
- ```
454
-
455
- Режим делегирования (настройка LLM на стороне OCR не требуется):
456
-
457
- ```bash
458
- # Уровень проекта
459
- mkdir -p .claude/commands
460
- curl -o .claude/commands/open-code-review-delegate.md \
461
- https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/claude-code/commands/delegate-review.md
462
-
463
- # Уровень пользователя
464
- mkdir -p ~/.claude/commands
465
- curl -o ~/.claude/commands/open-code-review-delegate.md \
466
- https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/claude-code/commands/delegate-review.md
467
- ```
468
-
469
- > **Требования**: Все способы интеграции требуют установки CLI `ocr`. Стандартный режим дополнительно требует настройки LLM — см. [Установка](#установка) и [Настройка LLM](#1-настройка-llm) выше. Режим делегирования **не требует** настройки LLM на стороне OCR.
470
-
471
- ### Интеграция с CI/CD
472
-
473
- OCR можно встроить в CI/CD-пайплайны для автоматического код-ревью Merge Request'ов / Pull Request'ов.
474
-
475
- Базовая команда для интеграции с CI:
476
-
477
- ```bash
478
- ocr review \
479
- --from "origin/main" \
480
- --to "<commit_sha>" \
481
- --format json
482
- ```
483
-
484
- Флаг `--from` принимает в качестве базы ref ветки (например, `origin/main`) или SHA коммита, а `--to` — SHA коммита или ref ветки в качестве head. В CI-окружениях для `--to` рекомендуется использовать SHA коммита: это корректно обрабатывает PR/MR из форков, у которых исходная ветка отсутствует в remote `origin`.
485
-
486
- Флаг `--format json` выводит машиночитаемый результат, удобный для разбора в CI-скриптах.
487
-
488
- Каждое замечание содержит два структурированных поля, чтобы CI-интеграции могли сортировать, группировать, фильтровать замечания или блокировать сборку без повторного разбора текста комментария:
489
-
490
- | Поле | Допустимые значения | Примечание |
491
- |------|---------------------|------------|
492
- | `category` | `bug`, `security`, `performance`, `maintainability`, `test`, `style`, `documentation`, `other` | Категория, к которой относится замечание. |
493
- | `severity` | `critical`, `high`, `medium`, `low` | Важность замечания. |
494
-
495
- В JSON-выводе эти два поля располагаются рядом с `content`, `start_line` и др. В терминале они отображаются перед комментарием как встроенный бейдж `[category · severity]`, цвет которого определяется важностью.
496
-
497
- Примеры интеграции — в каталоге [`examples/`](./examples/):
498
-
499
- - [`github_actions/`](./examples/github_actions/) — пример интеграции с GitHub Actions
500
- - [`gitlab_ci/`](./examples/gitlab_ci/) — пример интеграции с GitLab CI
501
- - [`gitflic_ci/`](./examples/gitflic_ci/) — пример интеграции с GitFlic CI
502
-
503
- #### GitHub Action
504
-
505
- Для GitHub в корне репозитория также поставляется готовая к использованию composite Action ([`action.yml`](./action.yml)). Вместо того чтобы вручную скриптовать `ocr review`, просто подключите её — она берёт на себя весь конвейер: checkout, установку OCR, запуск ревью, публикацию инлайн- и сводных комментариев, загрузку артефактов, а также повтор и идемпотентность:
506
-
507
- ```yaml
508
- - uses: alibaba/open-code-review@main
509
- with:
510
- llm_url: ${{ secrets.OCR_LLM_URL }}
511
- llm_auth_token: ${{ secrets.OCR_LLM_AUTH_TOKEN }}
512
- llm_model: ${{ vars.OCR_LLM_MODEL }}
513
- llm_use_anthropic: ${{ vars.OCR_LLM_USE_ANTHROPIC }}
514
- ```
515
-
516
- Для воспроизводимости зафиксируйте тег версии или SHA коммита. Полный демо-воркфлоу, а также полный список входов, выходов и режимов публикации комментариев (закреплённая сводка, инкрементальная неразрушающая публикация) см. в каталоге [`examples/github_actions/`](./examples/github_actions/).
517
-
518
- ## Команды
519
-
520
- | Команда | Алиас | Описание |
521
- |---------|-------|----------|
522
- | `ocr review` | `ocr r` | Запустить код-ревью на основе диффа |
523
- | `ocr scan` | `ocr s` | Ревью целых файлов (дифф не нужен) |
524
- | `ocr delegate preview` | `ocr d preview` | Предварительный просмотр файлов для ревью с метаданными режима/ссылок (LLM не требуется) |
525
- | `ocr delegate rule <path...>` | `ocr d rule` | Вывод правил ревью, сгруппированных по содержимому (LLM не требуется) |
526
- | `ocr rules check <file>` | — | Показать, какое правило ревью применяется к пути файла |
527
- | `ocr config provider` | — | Интерактивная настройка провайдера (встроенный, пользовательский или ручной) |
528
- | `ocr config model` | — | Интерактивный выбор модели для активного провайдера |
529
- | `ocr config set <key> <value>` | — | Установить значения конфигурации |
530
- | `ocr config unset custom_providers.<name>` | — | Удалить пользовательского провайдера |
531
- | `ocr llm test` | — | Проверить подключение к LLM |
532
- | `ocr llm providers` | — | Показать список встроенных LLM-провайдеров |
533
- | `ocr session list` | `ocr sessions list`, `ocr session ls` | Показать сохранённые сессии ревью |
534
- | `ocr session show <id>` | `ocr sessions show <id>` | Показать одну сессию и её checkpoint'ы по файлам |
535
- | `ocr viewer` | `ocr v` | Запустить WebUI-просмотрщик сессий на `localhost:5483` |
536
- | `ocr version` | — | Показать информацию о версии |
537
-
538
- ### Флаги `ocr review`
539
-
540
- | Флаг | Короткая форма | По умолчанию | Описание |
541
- |------|----------------|--------------|----------|
542
- | `--repo` | — | текущий каталог | Корень git-репозитория |
543
- | `--from` | — | — | Исходный ref (например, `main`) |
544
- | `--to` | — | — | Целевой ref (например, `feature-branch`) |
545
- | `--commit` | `-c` | — | Один коммит для ревью |
546
- | `--exclude` | — | — | Паттерны в стиле gitignore через запятую для пропуска файлов; объединяются с excludes из rule.json |
547
- | `--preview` | `-p` | `false` | Показать, какие файлы попадут в ревью, без запуска LLM |
548
- | `--resume` | — | — | Возобновить предыдущую совместимую сессию ревью диапазона или одного коммита |
549
- | `--format` | `-f` | `text` | Формат вывода: `text` или `json` |
550
- | `--concurrency` | — | `8` | Максимум одновременных ревью файлов |
551
- | `--timeout` | — | `10` | Таймаут конкурентной задачи в минутах |
552
- | `--audience` | — | `human` | `human` (показывать прогресс) или `agent` (только сводка) |
553
- | `--background` | `-b` | — | Необязательный контекст требований/бизнес-логики для ревью; при `--commit` автоматически заполняется из сообщения коммита |
554
- | `--background-file` | `-B` | — | Необязательный контекст требований/бизнес-логики из Markdown-файла; при совместном использовании с `--background` встроенное значение идёт первым |
555
- | `--model` | — | — | Выбрать или переопределить LLM-модель для этого ревью |
556
- | `--rule` | — | — | Путь к пользовательским JSON-правилам ревью |
557
- | `--max-tools` | — | встроенное | Максимум раундов вызова инструментов на файл; действует, только если больше значения шаблона по умолчанию |
558
- | `--max-git-procs` | — | встроенное | Максимум одновременных git-подпроцессов |
559
- | `--tools` | — | — | Путь к пользовательскому JSON-конфигу инструментов |
560
-
561
- #### Возобновляемые ревью и сессии
562
-
563
- Каждый запуск `ocr review` сохраняет локальный журнал сессии в
564
- `~/.opencodereview/sessions/`. Успешный текстовый вывод остаётся сфокусированным
565
- на результате ревью и не печатает session ID. Сохранённые сессии можно найти через
566
- `ocr session list/show`, а `--format json` добавляет `session_id` в машиночитаемый
567
- вывод. Если ревью диапазона или одного коммита было прервано, выберите сохранённую
568
- сессию с тем же целевым ревью и возобновите её:
569
-
570
- ```bash
571
- ocr session list
572
- ocr session show <session-id>
573
- ocr review --from main --to feature-branch --resume <session-id>
574
- ocr review --commit abc123 --resume <session-id>
575
- ```
576
-
577
- Возобновление намеренно строгое: поддерживаются только ревью диапазона веток и одного
578
- коммита, но не ревью рабочей копии. Текущие `--from/--to` или `--commit` должны
579
- совпадать с сохранённой сессией. `--preview` нельзя использовать вместе с `--resume`.
580
-
581
- При `--format json` возобновлённый запуск включает:
582
-
583
- - `session_id` — session ID текущего запуска
584
- - `resume.resumed_from` — исходный session ID
585
- - `resume.reused_files` — файлы, повторно использованные из сохранённых checkpoint'ов
586
- - `resume.rerun_files` — файлы, заново проверенные в текущем запуске
587
-
588
- ### Флаги `ocr session`
589
-
590
- | Команда | Флаг | По умолчанию | Описание |
591
- |---------|------|--------------|----------|
592
- | `ocr session list` | `--repo` | текущий каталог | Репозиторий, для которого нужно показать сессии |
593
- | `ocr session list` | `--json` | `false` | Вывести сводки сессий в JSON |
594
- | `ocr session list` | `--limit` | `20` | Ограничить количество сессий; `0` означает без ограничения |
595
- | `ocr session show <id>` | `--repo` | текущий каталог | Репозиторий, сессию которого нужно посмотреть |
596
- | `ocr session show <id>` | `--json` | `false` | Вывести метаданные сессии и элементы по файлам в JSON |
597
-
598
- ### Флаги `ocr scan`
599
-
600
- `ocr scan` проверяет целые файлы, а не дифф — удобно для аудита незнакомой кодовой базы, предмиграционного сканирования или любого каталога без значимого диффа. Работает и в каталогах без git (используется обход файловой системы с учётом `.gitignore`).
601
-
602
- | Флаг | Короткая форма | По умолчанию | Описание |
603
- |------|----------------|--------------|----------|
604
- | `--path` | — | весь репозиторий | Каталоги/файлы для сканирования через запятую |
605
- | `--exclude` | — | — | Паттерны в стиле gitignore через запятую для пропуска файлов; объединяются с excludes из rule.json |
606
- | `--preview` | `-p` | `false` | Показать список файлов для сканирования без запуска LLM |
607
- | `--max-tokens-budget` | — | `0` (без ограничений) | Ограничить суммарное потребление токенов; при превышении диспетчеризация прекращается |
608
- | `--no-plan` | — | `false` | Пропустить предварительное планирование по файлам |
609
- | `--no-dedup` | — | `false` | Пропустить дедупликацию похожих комментариев в рамках батча |
610
- | `--no-summary` | — | `false` | Пропустить сводку на уровне проекта |
611
- | `--batch` | — | `by-language` | Стратегия батчинга: `none`, `by-language` или `by-directory` |
612
- | `--format` | `-f` | `text` | Формат вывода: `text` или `json` (JSON включает поле `project_summary`) |
613
- | `--concurrency` | — | `8` | Максимум одновременных сканирований файлов |
614
- | `--rule` | — | — | Путь к пользовательским JSON-правилам ревью |
615
- | `--repo` | — | текущий каталог | Корень репозитория или каталога для сканирования |
616
-
617
- Перед каждым запуском `ocr scan` выводит приблизительную оценку стоимости в токенах. Используйте `--preview`, чтобы сначала посмотреть список файлов, и `--max-tokens-budget`, чтобы ограничить расход на больших репозиториях.
618
-
619
- ### Флаги `ocr delegate`
620
-
621
- `ocr delegate` — режим делегирования для AI-агентов. Он обеспечивает детерминированный
622
- выбор файлов и разрешение правил без вызова LLM — фактическое ревью выполняет
623
- хост-агент своими силами.
624
-
625
- | Подкоманда | Описание |
626
- |------------|----------|
627
- | `ocr delegate preview` | Вывод списка файлов для ревью с метаданными режима/ссылок |
628
- | `ocr delegate rule <path...>` | Вывод правил ревью, сгруппированных по содержимому |
629
-
630
- Обе подкоманды используют общие флаги:
631
-
632
- | Флаг | Сокращение | По умолчанию | Описание |
633
- |------|-----------|--------------|----------|
634
- | `--repo` | — | текущий каталог | Корень Git-репозитория |
635
- | `--from` | — | — | Исходная ссылка (например, `main`) |
636
- | `--to` | — | — | Целевая ссылка (например, `feature-branch`) |
637
- | `--commit` | `-c` | — | Один коммит |
638
- | `--exclude` | — | — | Паттерны исключения в стиле gitignore через запятую |
639
- | `--rule` | — | — | Путь к файлу с пользовательскими JSON-правилами |
640
- | `--background` | `-b` | — | Необязательный контекст требований/бизнеса |
641
- | `--background-file` | `-B` | — | Бизнес-контекст из Markdown-файла |
642
- | `--max-git-procs` | — | `16` | Макс. параллельных подпроцессов git |
643
-
644
- ## Примеры
645
-
646
- ```bash
647
- # Интерактивная настройка провайдера и модели
648
- ocr config provider
649
- ocr config model
650
- ocr llm providers
651
-
652
- # Удалить пользовательского провайдера
653
- ocr config unset custom_providers.my-gateway
654
-
655
- # Показать, какие файлы попадут в ревью (без вызовов LLM)
656
- ocr review --preview
657
- ocr review -c abc123 -p
658
-
659
- # Ревью изменений рабочей копии с настройками по умолчанию
660
- ocr review
661
-
662
- # Ревью диффа веток с заданной конкурентностью
663
- ocr review --from main --to my-feature --concurrency 4
664
-
665
- # Ревью конкретного коммита с подробным JSON-выводом
666
- ocr review --commit abc123 --format json --audience agent
667
-
668
- # Возобновить прерванное ревью диапазона или одного коммита
669
- ocr session list
670
- ocr session show <session-id>
671
- ocr review --from main --to my-feature --resume <session-id>
672
- ocr review --commit abc123 --resume <session-id>
673
-
674
- # Выбрать или переопределить модель для этого ревью
675
- ocr review --model claude-opus-4-6
676
- ocr review --commit abc123 --model claude-sonnet-4-6
677
-
678
- # Передать контекст требований для более прицельного ревью
679
- ocr review --background "Добавляем rate limiting в API логина"
680
-
681
- # Передать контекст требований из Markdown-файла
682
- ocr review --background-file ./docs/my_business_context.md
683
-
684
- # Совместить встроенный контекст с локальным файлом контекста (используются оба)
685
- ocr review --background "Фокус на аутентификации" --background-file ./docs/my_business_context.md
686
-
687
- # Использовать собственные правила ревью
688
- ocr review --rule /path/to/my-rules.json
689
-
690
- # Посмотреть, какое правило применяется к файлу
691
- ocr rules check src/main/java/com/example/Foo.java
692
- ocr rules check --rule custom.json src/main/resources/mapper/UserMapper.xml
693
-
694
- # Полнофайловое сканирование: сначала просмотреть список файлов (без вызовов LLM)
695
- ocr scan --preview
696
-
697
- # Сканировать весь репозиторий, ограничив расход ~500k токенов
698
- ocr scan --max-tokens-budget 500000
699
-
700
- # Сканировать подкаталог, пропустив сгенерированные/тестовые файлы
701
- ocr scan --path internal --exclude '**/*_test.go,**/generated/**'
702
-
703
- # Сканировать каталог без git с JSON-выводом (включает project_summary)
704
- ocr scan --repo /path/to/plain/dir --format json
705
-
706
- # Самое быстрое сканирование: пропустить планирование, дедупликацию и сводку проекта
707
- ocr scan --no-plan --no-dedup --no-summary
708
-
709
- # Режим делегирования — AI-агент выполняет ревью (настройка LLM не требуется)
710
- ocr delegate preview
711
- ocr delegate preview --from main --to feature-branch
712
- ocr delegate preview --commit abc123
713
- ocr delegate rule internal/handler.go internal/service.go cmd/main.go
714
-
715
- # Открыть историю сессий ревью в браузере
716
- ocr viewer
717
- ocr viewer --addr :3000
718
- ```
719
-
720
- ### Безопасность viewer'а
721
-
722
- Viewer отдаёт содержимое сессионных JSONL-файлов (сообщения запросов к LLM и ответы) по HTTP. На каждый запрос применяется allowlist по заголовку Host: loopback-имена (`localhost`, `127.0.0.0/8`, `::1`) и конкретный хост привязки разрешены всегда. Wildcard-привязки (`--addr :3000`, `--addr 0.0.0.0:3000`) и прочие не-loopback имена хостов нужно добавлять через переменную окружения `OCR_VIEWER_ALLOWED_HOSTS` (через запятую):
723
-
724
- ```bash
725
- OCR_VIEWER_ALLOWED_HOSTS=review.internal,ocr.lan ocr viewer --addr :3000
726
- ```
727
-
728
- Это блокирует атаки DNS rebinding на локальный viewer.
729
-
730
- ## Правила ревью
731
-
732
- OCR разрешает правила ревью по цепочке приоритетов из четырёх уровней. На каждом уровне действует принцип «первое совпадение побеждает»: если путь файла совпал с паттерном, используется это правило; иначе поиск продолжается на следующем уровне.
733
-
734
- | Приоритет | Источник | Путь | Описание |
735
- |-----------|----------|------|----------|
736
- | 1 (высший) | Флаг `--rule` | Путь, указанный пользователем | Явное переопределение из CLI |
737
- | 2 | Конфиг проекта | `<repoDir>/.opencodereview/rule.json` | Правила уровня проекта, можно коммитить в git |
738
- | 3 | Глобальный конфиг | `~/.opencodereview/rule.json` | Личные настройки пользователя |
739
- | 4 (низший) | Системные по умолчанию | Встроенный `system_rules.json` | Встроенные правила для распространённых языков и типов файлов |
740
-
741
- ### Формат файла правил
742
-
743
- Уровни 1–3 используют один и тот же JSON-формат:
744
-
745
- ```json
746
- {
747
- "rules": [
748
- {
749
- "path": "force-api/**/*.java",
750
- "rule": "Все новые методы должны проверять обязательные параметры на null",
751
- "merge_system_rule": true
752
- },
753
- {
754
- "path": "**/*mapper*.xml",
755
- "rule": "Проверять SQL на риски инъекций, ошибки в параметрах и незакрытые теги"
756
- }
757
- ]
758
- }
759
- ```
760
-
761
- - `path` поддерживает рекурсивное сопоставление `**` и расширение фигурных скобок `{java,kt}`.
762
- - `merge_system_rule` необязателен. Если указано `true`, совпавшее встроенное системное правило объединяется с этим пользовательским правилом.
763
- - Внутри каждого уровня правила проверяются в порядке объявления — побеждает первое совпадение.
764
- - Если файл правил не существует, он молча пропускается.
765
-
766
- **Поле `rule` поддерживает как встроенный текст, так и пути к файлам.** Система определяет тип автоматически:
767
-
768
- 1. Если значение содержит переносы строк → **встроенный текст** (многострочные правила никогда не считаются путями).
769
- 2. Если значение — одна строка, без пробелов, и заканчивается на `.md` / `.txt` / `.markdown` → **путь к файлу**.
770
- - Абсолютные пути (начинающиеся с `/`) используются напрямую.
771
- - Относительные пути проверяются в корне проекта. Выход за пределы директории (например, `../../etc/passwd.md`) блокируется. Если не найдены — выводится `[WARN]` и правило очищается (без fallback на inline).
772
- - Файл должен пройти проверку: допустимое расширение, ≤ 512 KB, цель симлинка также должна иметь допустимое расширение. При ошибке проверки правило очищается.
773
- 3. Иначе → **встроенный текст**.
774
-
775
- ```json
776
- {
777
- "rules": [
778
- {
779
- "path": "**/*mapper*.xml",
780
- "rule": "docs/sql-rules.md"
781
- },
782
- {
783
- "path": "**/*.java",
784
- "rule": "Always check for null safety and resource leaks"
785
- },
786
- {
787
- "path": "**/*.go",
788
- "rule": "shared/go-concurrency.md"
789
- },
790
- {
791
- "path": "**/*.py",
792
- "rule": "/Users/me/team-rules/python.md"
793
- }
794
- ]
795
- }
796
- ```
797
-
798
- - `docs/sql-rules.md` — относительный путь, загружается из `<project>/docs/sql-rules.md`.
799
- - `Always check for null safety…` — встроенная строка, используется напрямую.
800
- - `shared/go-concurrency.md` — относительный путь, аналогично.
801
- - `/Users/me/team-rules/python.md` — абсолютный путь, используется напрямую.
802
-
803
- > Абсолютные пути могут указывать на файлы вне директории проекта — это сделано намеренно. `rule.json` пишут мейнтейнеры проекта, это доверенный ввод. Команды могут хранить общие правила по единому пути (например, `/opt/company-rules/`) и не копировать их в каждый проект.
804
-
805
- ### Фильтрация путей
806
-
807
- Файлы правил также поддерживают поля `include` и `exclude`, управляющие тем, какие файлы попадают в область ревью:
808
-
809
- ```json
810
- {
811
- "rules": [
812
- {"path": "**/*.java", "rule": "Проверять null-безопасность"}
813
- ],
814
- "include": ["src/main/**/*.java", "lib/**/*.kt"],
815
- "exclude": ["**/generated/**", "vendor/**"]
816
- }
817
- ```
818
-
819
- **Приоритет решений фильтра (от высшего к низшему):**
820
-
821
- | Шаг | Условие | Результат |
822
- |-----|---------|-----------|
823
- | 1 | Файл бинарный | Исключён |
824
- | 2 | Путь совпадает с пользовательским паттерном `exclude` | Исключён |
825
- | 3 | Расширение файла не входит в список поддерживаемых | Исключён |
826
- | 4 | `include` настроен и путь совпадает | **В ревью** (шаг 5 пропускается) |
827
- | 5 | Путь совпадает со встроенным паттерном исключения по умолчанию (тестовые файлы и т. п.) | Исключён |
828
- | 6 | Ничего из перечисленного | В ревью |
829
-
830
- **Как это работает:**
831
-
832
- - `include` и `exclude` следуют той же цепочке приоритетов, что и правила ревью (`--rule` > конфиг проекта > глобальный конфиг). Действует **целиком самый приоритетный уровень, на котором include/exclude настроены** — паттерны разных уровней не объединяются.
833
- - `exclude` всегда сильнее `include` — файл, совпавший с обоими, исключается.
834
- - `include` работает как **обход встроенных паттернов исключения по умолчанию** (например, тестовых файлов), а не как эксклюзивный allowlist: файлы, не совпавшие ни с одним паттерном `include`, всё равно обычным образом проходят проверки фильтра по умолчанию.
835
- - Синтаксис паттернов: поддерживаются рекурсивное сопоставление `**`, односегментное `*` и расширение фигурных скобок `{a,b}`. Сопоставление регистронезависимое.
836
-
837
- **Встроенные паттерны исключения по умолчанию** (отфильтровывают тестовые файлы и т. п. — можно переопределить через `include`):
838
-
839
- ```
840
- **/*_test.go, **/*Test.java, **/*Tests.java, **/*_test.rs,
841
- **/*.test.{js,jsx,ts,tsx}, **/*.spec.{js,jsx,ts,tsx}, **/__tests__/**,
842
- **/src/test/java/**/*.java, **/src/test/**/*.kt,
843
- **/test/**/*_test.py, **/tests/**/*_test.py, **/*_test.py,
844
- **/*_spec.rb, **/spec/**/*_spec.rb, **/oh_modules/**
845
- ```
846
-
847
- ## Справочник по конфигурации
848
-
849
- Файл конфигурации: `~/.opencodereview/config.json`
850
-
851
- | Ключ | Тип | Пример |
852
- |------|-----|--------|
853
- | `provider` | string | `anthropic` \| `openai` \| `dashscope` \| `deepseek` \| `z-ai` |
854
- | `providers.<name>.api_key` | string | API-ключ провайдера |
855
- | `providers.<name>.url` | string | Переопределение base URL провайдера |
856
- | `providers.<name>.protocol` | string | `anthropic` \| `openai` \| `openai-responses` |
857
- | `providers.<name>.model` | string | Имя модели провайдера |
858
- | `providers.<name>.models` | array | Необязательный список моделей для интерактивного выбора |
859
- | `providers.<name>.auth_header` | string | `x-api-key` \| `authorization` |
860
- | `providers.<name>.extra_body` | object | JSON-объект, добавляемый в каждое тело запроса |
861
- | `providers.<name>.timeout_sec` | integer | Таймаут HTTP-запроса в секундах, по умолчанию `300` |
862
- | `providers.<name>.extra_headers` | string | HTTP-заголовки `key=value` через запятую |
863
- | `custom_providers.<name>.*` | — | Те же поля, что и `providers.<name>.*`, включая необязательное `models` |
864
- | `llm.url` | string | `https://api.openai.com/v1/chat/completions` |
865
- | `llm.auth_token` | string | `sk-xxxxxxx` |
866
- | `llm.auth_header` | string | Только для Anthropic: `x-api-key` \| `authorization` |
867
- | `llm.extra_body` | object | JSON-объект, добавляемый в каждое тело запроса |
868
- | `llm.timeout_sec` | integer | Таймаут HTTP-запроса в секундах, по умолчанию `300` |
869
- | `llm.extra_headers` | string | HTTP-заголовки `key=value` через запятую |
870
- | `llm.model` | string | `claude-opus-4-6` |
871
- | `llm.protocol` | string | `anthropic` \| `openai` \| `openai-responses`; имеет приоритет над `llm.use_anthropic` |
872
- | `llm.use_anthropic` | boolean | `true` \| `false` (устаревшее; предпочтительнее `llm.protocol`) |
873
- | `mcp_servers.<name>.command` | string | Команда для запуска MCP-сервера |
874
- | `mcp_servers.<name>.args` | array | Аргументы командной строки для MCP-сервера |
875
- | `mcp_servers.<name>.env` | array | Переменные окружения в формате `KEY=VALUE` |
876
- | `mcp_servers.<name>.tools` | array | Разрешённые имена инструментов (пусто = все инструменты) |
877
- | `mcp_servers.<name>.setup` | string | Команда настройки перед запуском сервера |
878
- | `language` | string | Любое название языка, например `English`, `Chinese` (по умолчанию: `English`) |
879
- | `telemetry.enabled` | boolean | `true` \| `false` |
880
- | `telemetry.exporter` | string | `console` \| `otlp` |
881
- | `telemetry.otlp_endpoint` | string | Адрес OTLP-коллектора |
882
- | `telemetry.content_logging` | boolean | Включать промпты в телеметрию |
883
-
884
- Переменные окружения имеют приоритет над файлом конфигурации.
885
-
886
- ### MCP-сервер
887
-
888
- Open Code Review поддерживает серверы [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), позволяя агенту ревью использовать внешние инструменты во время проверки кода через stdio-транспорт.
889
-
890
- Настройка MCP-серверов через CLI:
891
-
892
- ```bash
893
- # Добавить MCP-сервер
894
- ocr config set mcp_servers.<name>.command <command>
895
- ocr config set mcp_servers.<name>.args '["arg1","arg2"]'
896
- ocr config set mcp_servers.<name>.env '["KEY=VALUE"]'
897
- ocr config set mcp_servers.<name>.tools '["tool_name"]'
898
- ocr config set mcp_servers.<name>.setup '<setup command>'
899
-
900
- # Удалить MCP-сервер
901
- ocr config unset mcp_servers.<name>
902
- ```
903
-
904
- | Поле | Обязательно | Описание |
905
- |------|-------------|----------|
906
- | `command` | Да | Исполняемая команда для запуска MCP-сервера |
907
- | `args` | Нет | Аргументы командной строки для сервера |
908
- | `env` | Нет | Переменные окружения в формате `KEY=VALUE` |
909
- | `tools` | Нет | Разрешённые имена инструментов; если пусто — доступны все инструменты сервера |
910
- | `setup` | Нет | Shell-команда для выполнения перед запуском сервера (например, построение индекса) |
911
-
912
- > **Примечание:** Если имя MCP-инструмента конфликтует со встроенным инструментом, он будет пропущен с предупреждением. Таймаут команды `setup` составляет 5 минут.
913
-
914
- **Пример: добавление [CodeGraph](https://github.com/nicholasgasior/codegraph) для усиления анализа структуры кода**
915
-
916
- ```bash
917
- ocr config set mcp_servers.codegraph.command codegraph
918
- ocr config set mcp_servers.codegraph.args '["serve","--mcp"]'
919
- ocr config set mcp_servers.codegraph.tools '["codegraph_explore"]'
920
- ocr config set mcp_servers.codegraph.setup 'codegraph init && codegraph index'
921
- ```
922
-
923
- ### Переменные окружения
924
-
925
- | Переменная | Назначение |
926
- |------------|------------|
927
- | `OCR_LLM_URL` | URL эндпоинта LLM API |
928
- | `OCR_LLM_TOKEN` | API-ключ / токен авторизации |
929
- | `OCR_LLM_AUTH_HEADER` | Заголовок авторизации Anthropic (`x-api-key` или `authorization`) |
930
- | `OCR_LLM_EXTRA_HEADERS` | HTTP-заголовки `key=value` через запятую |
931
- | `OCR_LLM_MODEL` | Имя модели |
932
- | `OCR_LLM_PROTOCOL` | Протокол: `anthropic` \| `openai` \| `openai-responses`; имеет приоритет над `OCR_USE_ANTHROPIC` |
933
- | `OCR_LLM_TIMEOUT` | Таймаут HTTP-запроса в секундах (переопределяет `timeout_sec` из файла конфигурации) |
934
- | `OCR_USE_ANTHROPIC` | `true` = Anthropic, `false` = OpenAI Chat Completions (устаревшее; предпочтительнее `OCR_LLM_PROTOCOL`) |
935
-
936
- ## Телеметрия
937
-
938
- Интеграция с OpenTelemetry для наблюдаемости (спаны, метрики). По умолчанию выключена.
939
-
940
- ```bash
941
- ocr config set telemetry.enabled true
942
- ocr config set telemetry.exporter otlp
943
- ocr config set telemetry.otlp_endpoint localhost:4317
944
- ```
945
-
946
- Установите `telemetry.content_logging`, чтобы включать промпты и ответы LLM в экспортируемые данные.
947
-
948
- **Выбор протокола:** Переменная окружения `OTEL_EXPORTER_OTLP_PROTOCOL` определяет протокол экспорта:
949
-
950
- | Значение | Транспорт | Описание |
951
- |---|---|---|
952
- | `grpc` (по умолчанию) | gRPC | Порт по умолчанию 4317 |
953
- | `http/protobuf` | HTTP | Порт по умолчанию 4318 |
954
-
955
- **Формат endpoint:** `telemetry.otlp_endpoint` принимает базовый URL в формате `host:port` или `http://host:port` без компонента пути. SDK автоматически добавляет путь сигнала (например, `/v1/traces`) в соответствии со [спецификацией OTLP](https://opentelemetry.io/docs/specs/otlp/#otlphttp-request).
155
+ ## Документация
156
+
157
+ Полная документация доступна на **[open-codereview.ai/docs](https://open-codereview.ai/docs)**:
158
+
159
+ - [Быстрый старт](https://open-codereview.ai/docs/quickstart) установка и запуск первого ревью
160
+ - [Установка](https://open-codereview.ai/docs/installation) — все платформы и менеджеры пакетов
161
+ - [Справочник CLI](https://open-codereview.ai/docs/cli-reference) все команды и флаги
162
+ - [Правила ревью](https://open-codereview.ai/docs/review-rules) — кастомизация правил ревью, фильтрация и таргетинг по путям
163
+ - [Конфигурация](https://open-codereview.ai/docs/configuration) — ключи конфигурации и переменные окружения
164
+ - [MCP-сервер](https://open-codereview.ai/docs/mcp) расширение агента ревью внешними инструментами
165
+ - Интеграция с кодинг-агентами — встраивание OCR в Claude Code, Codex, Cursor и др.
166
+ - [Skill](https://open-codereview.ai/docs/agent-skill) — установка как переиспользуемый навык агента
167
+ - [Plugin](https://open-codereview.ai/docs/claude-code) установка как плагин Claude Code / Codex / Cursor
168
+ - [Режим делегирования](https://open-codereview.ai/docs/delegate) — агент ревьюит своей собственной LLM
169
+ - [Интеграция с CI/CD](https://open-codereview.ai/docs/cicd) GitHub Actions, GitLab CI, GitFlic CI и Gerrit
170
+ - [Просмотр сессий](https://open-codereview.ai/docs/viewer) — просмотр и воспроизведение сессий ревью в браузере
171
+ - [Телеметрия](https://open-codereview.ai/docs/telemetry) — интеграция с OpenTelemetry для наблюдаемости
172
+ - [FAQ](https://open-codereview.ai/docs/faq) частые вопросы и устранение неполадок
956
173
 
957
174
  ## Участие в разработке
958
175