← Документация

Обзор изменений

Читайте дифф в осмысленном порядке, а не в алфавитном.

Раздел: workflows · Статус: draft · Релиз-проверка: v1.18.2

Обзор изменений

Дифф отсортирован по путям файлов — а это почти никогда не тот порядок, в котором изменение имеет смысл. Обзор переупорядочивает его: связанные правки группируются в остановки (stops), каждая остановка объясняет, что код теперь делает иначе, и остановки упорядочены так, чтобы каждая опиралась на предыдущую.

Он объясняет и упорядочивает. Он не судит ваш код и не выносит вердиктов — для этого есть Review.

Открывается по иконке Walkthrough в правом рейле или по кнопке AI walkthrough в панелях Changes и Pull Request. Обе просто открывают панель; ничего не генерируется, пока вы не нажмёте Generate walkthrough.

Как помечается остановка

Каждая остановка называет, о чём она, объясняет это в паре предложений и затем показывает ровно тот код, который описывает. У некоторых остановок рядом с заголовком стоит маленький тег:

ТегЧто означает
Key changeЭта остановка двигает остальное изменение или несёт большую часть его риска. Читайте её внимательно и первой.
ContextВспомогательное изменение, включено, чтобы остальное имело смысл. Можно пробежать по диагонали.
(без тега)Обычный шаг в порядке чтения.

Тег говорит о том, куда вложить внимание, а не о качестве кода. Остановка никогда не помечается из-за найденной в ней проблемы — обзор не сообщает находок, степеней серьёзности и вердиктов. Нужна оценка кода — это действие Review в Git и GitHub.

Единственные отметки, сообщающие о проблеме, — Outdated и Not covered, и обе касаются устаревания самого обзора, а не вашего кода — см. ниже.

Что он может просмотреть

ОбластьЧто покрывает
All uncommittedВсё ещё не закоммиченное: staged, unstaged и новые файлы
StagedТолько то, что вошло бы в коммит прямо сейчас
UnstagedРабочее дерево и новые файлы
This branchКаждый коммит на ветке, которого нет на её базе
Pull requestИзменение в том виде, в каком оно есть на GitHub

This branch — это не «незапушенные коммиты», а всё, что ветка добавляет к своей базе, запушено или нет. Поэтому после коммита, но до пуша, она и pull request намеренно различаются: одна показывает, что вы сделали, другой — что сейчас видят ревьюеры.

Каждая область хранится отдельно, так что переключение между ними ничего не теряет.

Выбор модели

Обзоры по умолчанию используют вашу маленькую модель. Другую можно выбрать в Settings → Sessions → Changes Walkthrough Model или для отдельного ревью в шапке панели — пригодится, когда изменение достаточно рискованное, чтобы заслужить модель посерьёзнее.

Пикер предлагает только модели, умеющие возвращать структурированный вывод, — без него обзор не собрать. Если модель слишком мала для диффа, генерация откажет с объяснением, а не молча обрежет вход: обзор, написанный по половинке диффа, звучит уверенно, но неверен.

При повторном открытии панели показывается модель, которая сделала текущий результат, так что Regenerate повторяет той же моделью, пока вы не поменяете её.

Выбор языка

Обзоры по умолчанию пишутся на языке вашего интерфейса. Языковой пикер в шапке панели исходит из него, и для отдельного ревью можно выбрать любой другой язык, на который переведён OpenChamber, — направленное объяснение полезно только на языке, который вы свободно читаете.

Переводится только проза. Идентификаторы, пути файлов и имена API остаются ровно такими, как в вашем коде, — то, что называет остановка, по-прежнему можно искать.

Когда на выбранном языке ещё ничего не сгенерировано, панель продолжает показывать имеющийся обзор и сообщает об этом, а не опустошается. Нажмите Generate walkthrough, чтобы получить его на новом языке.

Стоимость и кэширование

Ничего не генерируется само по себе. Генерация начинается только по вашей команде, и перегенерация тоже ручная.

Результаты кэшируются под точное содержимое диффа. Верните рабочее дерево в прежнее состояние — и прежний обзор вернётся бесплатно, без обращения к модели. Язык и модель обе входят в ключ, поэтому каждая комбинация хранится отдельно: как только у диффа есть обзор на двух языках, переключение между ними мгновенное и ничего не стоит.

Генерация выполняется на сервере OpenChamber, а не во вкладке браузера. Перезагрузите страницу или закройте панель — она продолжит идти; вернётесь — результат уже ждёт. Останавливает только кнопка Cancel.

Честность про устаревание

Каждая остановка привязана к точному содержимому описываемого кода, поэтому панель может сказать, когда код ушёл вперёд:

  • Outdated steps — код, который описывала остановка, изменился или исчез. Обзор всё ещё показывается, помеченный, чтобы вы решили, перегенерировать ли.
  • Not covered — изменения в текущем диффе, которые не описывает ни одна остановка. Сюда входят правки, сделанные после генерации, изменения, которые обзор счёл рутинными, а также локфайлы и прочие сгенерированные файлы, намеренно исключённые из входа модели. Все они перечислены в конце потока, чтобы ничего не исчезало молча.

Перегенерация переписывает, а не латает: прежний обзор уходит модели как контекст, чтобы точные части выжили, и всё заново привязывается к текущему коду.

Заметки

  • Можно комментировать любую строку обзора точно так же, как в дифф-вьюхе; комментарии прикрепляются к компоузеру чата.
  • Доступно на десктопе и планшетных ширинах. Не предлагается в VS Code-расширении и мобильном приложении.
  • Ревью pull request’а требует подключённого GitHub-аккаунта — см. GitHub Issues и PR.

Связанное