Repository navigation
LexiQode 0.2.6
Скачайте LexiQode-0.2.6-win32-x64.zip, распакуйте куда угодно и запустите
LexiQode.exe. Ничего не устанавливается, права администратора не нужны. Сверьте
скачанное с файлом .sha256, приложенным рядом. Настройки и данные лежат вне папки
программы, поэтому распаковка поверх прежней версии их не трогает.
Это патч к 0.2.5: два способа, которыми ход заканчивался без единого слова на экране,
и цикл, который защита перестала замечать. Все три найдены в сохранённых разговорах,
а не предположены.
Что исправлено
Зацикливание перестало замечаться: считались только вызовы подряд
В 0.2.5 защита была намеренно сужена до подряд идущих одинаковых вызовов, чтобы не
останавливать ходы, которые действительно работают: тест → правка → тест. Сужение
оставило без защиты ровно тот цикл, на который вы жалуетесь, и это видно в
сохранённых разговорах: в одном чате cd core && python -m pytest tests -q
встречается 23 раза, а cd app && node --test test/*.test.js — 14 раз, и ни
одной остановки. Причина в том, что у модели, которая делает между одинаковыми
вызовами что-то другое, никогда не набирается трёх одинаковых вызовов подряд.
Теперь измеряется не повтор вызова, а отсутствие прогресса: тот же вызов, вернувший
тот же результат. Результат изменился — счётчик сбрасывается, потому что
изменившийся результат и есть работа. Порог взят из ваших же чатов: в 65 ходах
остальных разговоров одинаковых пар «вызов+результат» больше двух раз не встречается
ни разу, а в зацикленном чате пять ходов доходят до трёх.
Модели говорится, почему повтор бесполезен — «результат не менялся столько-то раз,
значит то, что вы правите, до этого вызова не доходит». Уведомление в окне и две
попытки исправиться остались как были; если и они не помогли, ход заканчивается и
говорит об этом.
Пустой ответ заканчивал ход молча
Разговоры останавливались на пустом сообщении.
В записанной истории два последних ответа — assistant без текста и без единого
вызова инструмента: на «Продолжай работу» — пусто, на «ау» — снова пусто. Ни ошибки,
ни ответа, ни объяснения: пустой ответ считался ответом.
Теперь пустой ответ ответом не считается: модель получает ограниченное число
напоминаний (два), после чего ход заканчивается, а окно называет причину и говорит,
что с этим делать. Отдельно назван случай, когда ответ обрывается на пределе вывода,
— с подсказкой увеличить «ответ не более» в профиле или выключить рассуждения: так
бывает, когда рассуждения модели занимают весь предел вывода, и напоминание этого не
исправит.
Обрыв потока уходил наружу из цикла
Тест test_cut_off_stream.py был написан на этот случай и падал: при обрыве
соединения httpx.ReadError вылетал из цикла наружу, поэтому не было ни события о
конце хода, ни сообщения об ошибке. Со стороны это тот же симптом — чат просто
останавливается. Теперь обрыв потока сообщается как ошибка провайдера и виден в
разговоре; оба теста этого случая проходят.
Что ещё стоит знать
- 235 тестов окна, 221 тест ядра. Замеры, открывающие окно, запускайте по одному:
два окна перекрывают друг друга, и кадры у фонового окна тормозятся. - Новый замер
probe-chat-recovery.cjsпроверяет исправленное в живом окне: цикл
замечается ровно на третьем одинаковом результате и ход заканчивается как
repeated, а пустой ответ получает два напоминания и заканчивается как
empty_answer— с надписью на экране в обоих случаях. - Если у вас включены рассуждения, а ответы и раньше обрывались пустыми, начните с
двух настроек профиля: «ответ не более» (предел вывода) и кнопка рассуждений рядом
с выбором модели.