Понять работу06 / 20
Читайте изменения по требованиям
На этой странице
Когда Агент за один ход меняет десятки файлов, просмотр диффов файл за файлом мешает ответить на вопрос «зачем нужны эти изменения?». В Noea изменения хода можно сгруппировать по требованиям, на которые они отвечают, и вы увидите, какому из ваших предложений служит каждое изменение. Изменения, которые не отвечают ни на одно требование, перечислены отдельно в конце, а не смешаны с остальными.
Начните с карточки изменений
Если ход оставляет изменения в файлах, ответ заканчивается карточкой изменений. Если изменился один файл, её заголовок выглядит как «Edited grace.ts»; если несколько, то как «Changed 9 files», а рядом указано число добавленных и удалённых строк. Файлы, которые Агент изменил через командную строку, тоже учитываются.
После того как Explain обработает ход, вторая строка карточки выглядит как «2 intents · 1 unmatched»: сколько частей ваших требований отвечают изменения и сколько изменений не отвечают ни на одно. До этого во второй строке предлагается «Run Explain to group them».
Щёлкните в любом месте карточки, и панель кода откроется на вспомогательной панели в правой части основной области, показав все изменения хода. Сам чат дифф хода не повторяет.
Панель кода
Вверху панели показаны название чата и номер хода, например «Письмо о льготном периоде · Turn 2», и можно переключиться на другие ходы с изменениями в том же чате. Кнопка вверху справа показывает или скрывает список файлов, который может быть плоским или сгруппированным по папкам; для каждого файла указано число добавленных и удалённых строк, а щелчок переходит к нему. В заголовке каждого файла есть «Open with default app».
В диффе один столбец номеров строк: у добавленных и неизменённых строк показаны новые номера, а у удалённых — старые, приглушённым цветом. Неизменённые строки между изменениями сворачиваются в одну строку, которую можно раскрыть вплоть до всего файла. Если файл изменился ещё раз после хода, панель показывает только изменения этого хода и предлагает «Show current file».
Перетащите левый край вспомогательной панели, чтобы расширить панель кода. Закрытие лишь сворачивает вспомогательную панель; документ и чат слева остаются как были.
Группировка по требованиям
У панели два способа расположения, «By file» и «By intent». При «By intent»:
- Каждая группа — одна часть ваших требований. Её заголовок — текст этого абзаца, а документ и раздел, где он находится, мелким шрифтом над ним. Группы идут в порядке абзацев в ваших документах требований.
- Внутри группы изменения расположены по ключевым пунктам, затем по файлам. Каждый ключевой пункт — подзаголовок с его названием, за которым мелким шрифтом идёт первое предложение его раздела реализации.
- Каждое изменение показано только один раз. Если оно отвечает на несколько ключевых пунктов, оно попадает под главный, а остальные висят на нём метками.
- Последняя группа всегда «Other changes»: изменения, которые не отвечают ни на одно требование.
Каким расположением откроется панель, зависит от того, как далеко Explain продвинулся с этим ходом:
| Explain | Открывается |
|---|---|
| Ещё не обработал ход | По файлам |
| Идёт, и с этим ходом уже связаны объяснения | Переключается на «По требованиям», когда публикуется первое объяснение; абзацы, которые ещё исследуются, занимают место в своей группе |
| Завершился нормально | По требованиям |
| Не нашёл ни одного абзаца для исследования | По файлам, с пометкой «This turn didn't touch any explained intent.» |
В любой момент можно вернуться к расположению «By file».
На что отвечает каждое изменение
У каждого изменения ваши требования видны на трёх уровнях, от лёгкого к подробному:
- Метки рядом со строками: у строк, которые объяснение прямо цитирует, слева стоит тонкая нейтральная метка. Наведите на неё указатель, чтобы подсветить другие строки, цитируемые тем же объяснением, и увидеть название требования.
- Метки требований: ключевые пункты, на которые отвечает изменение, висят на его заголовке, не больше двух, а остальные сворачиваются в «+N intents». Наведите указатель на метку, чтобы увидеть абзац и первое предложение его объяснения; щёлкните, чтобы открыть документ в соседней области с этим объяснением.
- Блок требований: под каждым изменением свёрнутая строка сводки, например «2 intents · 1 gap». Раскройте её, чтобы увидеть текст каждого абзаца, на который отвечает изменение, и пункты внимания из его последнего объяснения.
Изменение связывается с вашими требованиями одним из трёх способов: «Cited by Explain» означает, что объяснение прямо цитирует эти строки; «Matched by lines» — изменение попадает в строки, которые цитирует объяснение; «Judged unaffected» — Explain проверил изменение и решил, что оно этот абзац не затрагивает. Изменение, охватывающее большую часть файла, или такое, прежнее содержимое которого сообщил Агент, а не прочитала Noea, по строкам не сопоставляется; панель помечает его «Not grouped by lines».
Отфильтруйте по одной части требований
«Filter by intent» вверху списка файлов показывает только изменения для одного абзаца или одного ключевого пункта. Выберите «No matching intent», чтобы увидеть только изменения, не отвечающие ни на одно требование.
Можно пойти и в обратную сторону, от требования к изменениям. Откройте объяснение абзаца в документе требований: раздел «Recent implementation» в конце примечания перечисляет ходы, которые недавно его изменили. Откройте один из них, и панель кода откроется на этом ходе, уже отфильтрованная по этому абзацу.
После чтения
«Other changes» не обязательно проблема; чаще это вспомогательные функции для тестов, форматирование или обновления зависимостей. Но если изменение бизнес-логики не отвечает ни на одно требование, стоит спросить, почему оно изменилось и должно ли оно быть в ваших требованиях.
Спросите Агента в чате или нажмите «Ask about this» слева от абзаца. О решениях, которые вы хотите сохранить, см. Запишите согласованное в требования.
Группировка зависит от результатов Explain. Если карточка всё время показывает «Run Explain to group them», проверьте «Explain automatically after implementing» и «Explain code-only turns» в Settings → Automation или просто щёлкните по ней; см. Когда код меняется.