Repository navigation
LexiQode 0.2.5
LexiQode 0.2.5
Скачайте LexiQode-0.2.5-win32-x64.zip, распакуйте куда угодно и запустите
LexiQode.exe. Ничего не устанавливается, права администратора не нужны. Сверьте
скачанное с файлом .sha256, приложенным рядом. Настройки и данные лежат вне папки
программы, поэтому распаковка поверх прежней версии их не трогает.
Это выпуск с новой возможностью и с исправлением того, что мешало работать:
ассистент теперь умеет спрашивать, а не догадываться, и перестал останавливаться
там, где он на самом деле работал.
Что нового
Ассистент спрашивает, когда решение за вами
Раньше у агента не было способа задать вопрос. Когда для задачи не хватало
решения, которое может принять только человек — какой из двух подходов выбрать,
какой файл имеется в виду, какое поведение считается правильным, — у него
оставалось два выхода: угадать или повторить вызов в надежде на другой результат.
Второе и выглядело как зацикливание.
- Инструмент
ask_user. Агент задаёт вопрос и ждёт ответа: ход
останавливается и продолжается с вашим ответом, как с результатом вызова.
Таймаута нет — вопрос не имеет безопасного ответа по умолчанию, а придумать
ответ за вас значит вернуться к тому же угадыванию. - Варианты ответа — кнопки, как в Cursor. Один клик отвечает. Рядом — поле
для своего ответа, если ни один вариант не подходит; Enter отправляет. - Вопрос виден в ленте чата отдельной карточкой, синей, а не жёлтой: жёлтая
карточка — это запрос разрешения на действие, и путать их нельзя. - Инструмент выдан трём режимам: Agent, Plan и Debug. В Ask и Review его нет
намеренно: эти режимы существуют, чтобы отвечать по прочитанному коду, и вопрос
там был бы способом уйти от ответа. - Отмена хода освобождает ожидание. Раз таймаута нет, отмена — единственное,
что может закончить ожидание, и она это делает. - Если пользователя нет — например, при запуске без окна — инструмент
сообщает об этом как о результате, а не висит вечно.
Что исправлено
Ассистент останавливался там, где он работал
Детектор зацикливания считал одинаковые вызовы, даже когда между ними была
настоящая работа. Обычный ритм исправления — запустить тесты, поправить файл,
запустить тесты снова — выглядел для него как повтор, и ход обрывался на середине
у работающего агента. Это хуже, чем не замечать зацикливание вовсе.
- Считаются только подряд идущие одинаковые вызовы. Любой другой вызов
разрывает цепочку: «тесты → правка → тесты» — это работа, а «тесты → тесты →
тесты» без ничего между ними — по-прежнему зацикливание.
Ассистент не знал, что его остановили
Сообщение «ход остановлен: агент повторил вызов» рисовалось в окне и не
попадало в разговор. Модель не видела причины остановки, поэтому в следующем
ходу повторяла то же самое, и вы видели одно и то же сообщение снова и снова.
- Причина остановки записывается в разговор. Модель читает, какой именно
вызов повторился, сколько раз и что делать вместо этого. - Одно автоматическое продолжение. Получив объяснение, агент продолжает ход
сам, без вашего участия, и может сменить подход. - Бюджет попыток — четыре на ход. Он считает попытки, а не неудачи: отличить
вылеченный эпизод от невылеченного по одному вызову между ними невозможно, и
притворяться, что можно, значит либо обрывать здоровый ход, либо позволить
крутиться вечно. Четыре — достаточно, чтобы ход, который действительно
исправлялся несколько раз, не обрывался рано, и мало, чтобы зацикливание
закончилось, а не тянулось до предела шагов. - В окне видно, что происходит: «Агент повторил один и тот же вызов. Ему
сказано об этом, и он пробует другой подход».
Карточка вопроса не помещалась в панель чата
- Длинный текст распирал карточку. Карточка — это grid, а grid-элемент по
умолчанию отказывается быть уже своего содержимого: один длинный путь в вопросе
выталкивал карточку за край панели. Теперь перенос работает, и текст остаётся
внутри. - Длинные варианты ответа переносятся, а не вылезают одной строкой: у кнопки
по умолчанию запрещён перенос и фиксированная высота, и вариант с путём внутри
ломал раскладку. - Текст на кнопке виден при наведении. Подсветка при наведении подменяла фон
кнопки, а цвет текста оставался от другого правила — на карточке вопроса подпись
варианта становилась нечитаемой.
Что ещё стоит знать
- 226 тестов окна и 204 теста ядра.
- Новые тесты ядра:
test_ask.py(8) — вопрос блокирует ход, ответ доходит до
модели, отмена освобождает ожидание, без пользователя инструмент не висит;
test_repeat_recovery.py(8) — модель получает объяснение, автопродолжение
работает, бюджет конечен;test_repeat_with_work.py(3) — работа между
вызовами не считается зацикливанием;test_episode_budget.py(2) — вылеченные
эпизоды не обрывают ход, но бюджет всё равно конечен. - Новые тесты окна:
question-style.test.js(6) — карточку нельзя распереть
текстом, вариант переносится, текст читается при наведении, все CSS-переменные
определены; два теста вcore-routes.test.js— имена полей/api/answer
совпадают с тем, что читает ядро, и событиеquestion_requestдействительно
пересылается и обрабатывается. - Три теста в
test_server.pyпроверяют вопрос через настоящий HTTP: вопрос
блокирует ход, ответ доходит до модели, отмена освобождает ожидание. - Проверено на живом окне: вопрос задан, ход ждал ответа, ответ вернулся как
результат инструмента, работа продолжилась. Детектор повторов проверен там же:
три одинаковых вызова подряд останавливают ход, а шесть вызовов с чередованием —
нет.