Комментарии 46
С Fable 5.1 та же проблема. Вопрос часто воспринимает как интент сразу переделать и запускает рефакторинг на полчаса.
Для этого есть режим "read-only", он же "plan", он же "ask". Всегда вопросы и обсуждения делаю в нем.
Забавно что более продвинутая модель генерит больше проблем на ровном месте. Раньше как-то проще было контролировать процесс, поэтому на Опусе сижу до сих пор в основном
Опять замусоривание Хабра статьями с личной рефлексией о ИИ. Перечитайте правила Хабра. А именно: запрещены "Хайп и полуфабрикаты, потоки сознания и диалоги с ИИ"
Я поспорю, что в эпоху существования ИИ - в этот статье поднята вполне себе актуальная тема. Единственное, быть может здесь слишком много от потока сознания.
В этой статье рассматривается локальная проблема и на выходе никаких дельных советов. Общие фразы без всякой пользы. Статья бесполезная технически. Представьте каждый начнет расписывать что у него с ИИ сегодня не выходит.
Имхо, проблема коммуникации с ИИ не локальная, просто она из разряда тех проблем, о которых непонятно как писать. И где в правилах написано, что статья обязана давать ответ?
В одной из моих статей в комментариях мы с вами не смогли прийти к общему мнению. Кажется, там вы тоже упомянули, что на хабре недопустимы личные рефлексии о ИИ.
Теперь через несколько минут после публикации моих статей вы оставляете комментарии о том, что в статье не хватает технических деталей. Что статья нарушает правила хабра. Что я хайпую на теме ИИ.
У нас с вами образовалась какая-то связь =)
"Я никогда не встречал человека настолько глупого, что я не мог у него чему-то научиться." (с) Галилео Галилей
Автор статьи даёт нам всем возможность посмотреть на (не)знакомые нам проблемы со своей точки зрения. Он потратил на это свои ресурсы и только за это уже можно быть ему благодарным. А что вы из этого извлечёте - зависит только от вас. От вашего опыта, ваших возможностей и ваших желаний, в конце-концов.
Отказался от deepseek-4.1-flash-1017 именно из-за способа общения. (откатился на deepseek-4.1-flash)
Список X
- B не является X
- F. F тоже не является X
- K
— Зачем здесь эта функция?— Вы правы. Эта функция здесь не нужна. (Удаляет функцию и меняет много файлов)— Зачем ты её удалил?— Вы правы, я не должен был удалять эту функцию. Возвращаю обратно. (Опять меняет много файлов)
В таких случаях помогает декларировать что вы пишете прямо в тексте:
> Вопрос: Зачем эта функция
> Исследуй: Как можно ускорить этот фрагмент кода?
Альтернативно - модели нужно дать маршрут по которому она последует после завершения задачи:
> Исследуй: Как можно ускорить этот фрагмент кода? Вернись с отчётом после завершения исследования.
Лично с моей точки зрения лучшая модель в плане человеческой коммуникации - это Qwen3.8 27b. Но у неё свои заскоки, она видит всё как пазл который просто необходимо решить. С ней главное не дать ей лишний пазл случайно.
Qwen3.8 очень хорошие для кодинга и агентских задач, что 27b, что flash next. Но тексты на русском она пишет плохо, как будто подстрочник с английского читаешь (при этом понимает она по-русски хорошо). Это, пожалуй, единственная к ней претензия. Может, кстати, это проблема квантованной версии, не знаю.
Это да, я общаюсь с ИИ на английском, пожалуй следовало уточнить. Но при размере в 27b плохой русский ей наверное можно простить. Иностранные модели в целом русский понимают довольно плохо, Qwen далеко не худшие в этом плане.
Она и на английском пишет плохо. Когда делает какую-нибудь фичу, в документацию постоянно норовит вставить детали реализации. И чуть не в каждом абзаце перескакивание с общего к заглублению в частности.
deepseek-4.1-flash-1017 как-то отличается по стилю общения от deepseek-4.1-flash? Не замечал. Мне кажется, проблему коммуникаций решает точная формулировка своих запросов и реплик. Потратить несколько дополнительных секунд, чтобы сделать свой месседж агенту точным и четко сформулированным. У меня каких-то недопониманий или лишних действий агента обычно не возникает.
Вообще как мне кажется модели deepseek-4.1-flash и 1017 ненамного уступают "передовым" моделям и хорошо способны понимать намерения пользователя, даже нечётко сформулированные. При этом работают очень быстро.
В целом 1017 склонен заполнять ответ на половину мусором (как в примере выше), ответ - стена текста, причём половина грамматически правильная, но не несёт в себе никакого практического смысла. Такое ощущение что ему бы ещё один проход по ответу сделать - идеально будет, но - нет.
Я общался с deepseek-4.1-flash-1017 для три, пытался исправить дополнительными инструкциями, но потом понял что это проблема которую мне не нужно решать и я подожду стабильного релиза без экспериментов с preview-версиями
Шел 26й год. Они все ожидали от меня чтения мыслей да еще и в автономном режиме. Но до меня, когда ИМИ вайбкодили бизнес и прочие менеджеры, были по сути такие же проблемы как и со мной. Но со мной же, они хотят чтобы чуфыр-чуфыр и им стало хорошо, правильно, не хлопотно, уютно.. Ведь я им должен. И при всем при этом, они с надменностью друг другу напоминают какое ничтожное и неправильное магическое мышление, совсем не то что у них самих!.. (из мемуаров пожилого, одинокого ИИ)
Проблема в том, что люди, помимо языка, умеют еще и передавать контекст, который дополняет высказывания. А машины не умеют в контекст. Им нужные инструкции. И получается ситуация, что подробную инструкцию, недопускающую разночтений, пока проще написать в виде кода. Но это нужно учиться и приобретать собственный опыт
Я пробовал писать идеальные промпты с кучей контекста - это работает до определенного момента, потом контекстное окно забивается и модель начинает галлюцинировать
А вы не пробовали ставить https://caveman.so/products/caveman ?
Тоже заметил что при использовании Composer нейронка часто сносит нужные куски кода просто от балды. Иногда она вообще удаляет тесты, если просишь переименовать метод. Приходится постоянно проверять каждый чих через гит...
5-часовой лимит при использовании gpt-6.1-sol у меня заканчивается за несколько запросов. Если я прошу его поменять пару строк в readme файле, это расходует 10% лимита
Мой опыт такого не подтверждает.
У меня сложные монорепо проекты
А вот тут может быть разгадка. Если он идёт грепать монорепу, то легко съест и больше. Нужна система индексации кода и скилл, чтобы агент им пользовался.
Ну и в целом, описанные симптомы характерны для перегрузки контекста: перегруженный харнесс, забитый grep'ами контекст, слишком долгий диалог. При сильной перегрузке внимания агент начинает глючить.
Зачем здесь эта функция
А чего вы ожидали? И человек воспримет это как претензию. Неоднозначность промпта - путь в никуда.
Могли бы написать что-то вроде "Проанализируй функцию X. Найди код, который её вызывает. Напиши краткое описание функции, не более 5 строк текста. Сделай вывод о целесообразности выноса кода в функцию. Код не меняй."
Это классическая проблема агента, а не модели.
Модель нам не отвечает, не следует инструкции, а просто продолжает текст который мы передали как контекст.
Вот например мы задаем вопрос: "Зачем здесь эта функция"
Далее агент вызывает модель и входит в цикл, где на каждой итерации цикла модель помимо добавления нового текста в контекст выдает признак остановки цикла.
Поэтому после такого вопроса, будет несколько итераций агента, и модель скорее всего попросит вызовать несколько инструментов и может добавить в контекст что-то вроде: "функция не используется, ее можно удалить", или "функция используется только в одном месте ее можно заинлайнить".
Эти фразы в конце контекста не являются признаком остановки (скорее всего) и поэтому агент заходит на еще один круг цикла.
А дальше т.к. в контексте есть фраза "функция не используется, ее можно удалить", модель просто продолжает эту фразу.
Получается она остановится только когда фунция будет удалена.
Composer годится для очень простых задач с минимальным уровнем рассуждения, imho. Что-то делать в Cursor - это только через Grok 4.6/7 High как оркестратор с теми же гроками-исполнителями и ревьюерами. Компоузер - максимум прогнать скрипт бездумно, поправить доку по инструкции, закоммитить "всё что есть".
И даже так, Грок жрёт немеряно контекста и раздувается. Последней каплей было, когда он простую задачу (на которую должно было хватить остатка лимитов 60-долларовой подписки) делал 2 часа, сожрал основной лимит, сожрал дополнительный лимит сторонних моделей, сожрал доступные креды на 20$ - и сделал только половину. Я отдал доделать это всё Opus 5.5 high с исполнителями Sonnet через Claude CLI - задача дорешалась за 15 минут, плюс он мне расписал, почему исполнители Grok работали по полчаса и что делали не так.
В итоге я взял подписку на Claude Max за $100, перевёл всю разработку туда - и счастлив.
А мне Cursor и Composer нравятся. Просто надо "за базаром следить" - быть точнее в формулировках. Если сказать ему "сделай план" он может кинуться сразу выполнять даже в plan-mode. Поэтому говорю "напиши план". И так далее. С людьми это точно так же работает - одного можно дружески послать, другой в драку полезет.
Вот часть моего AGENTS.md работает прекрасно, теперь вопрос это просто вопрос.
Questions vs Action Requests: When the user asks a question, treat it strictly as a question to be answered, NOT as a request or authorization to perform actions, edit files, or start implementation. Provide the direct answer and wait for explicit instructions or approval before taking action.
Модель отличает вопрос от инструкции, если он явно не заканчивается знаком вопроса? Не требуются ли ей примеры оборотов, которые следует расценивать как вопросы, а не инструкции?
Да вроде отличает. Я регулярно задаю вопросы почему так и обычно модель просто дает ответ без изменений кода. Но допускаю что это можно улучшить парой примеров и подсказкой что знак вопроса не обязателен.
Обычно вопрос располагается в конце промпта, после контекста. Агентные системы скрывают такие мелочи от пользователя. Да и в целом поведение/ответ модели зависит от того насколько вопрос и контекст противоречит внутренним убеждениям модели, заданным при обучении.
Вот часть моего AGENTS.md Он весь в кей валуе у меня, для экономии токенов, плюс якори неплохие.:
MUTATION_LOCK=READONLY: UNLOCK=“Вноси правки” | ALLOWED_MUTATORS=[create_file,edit_file,multi_edit_file] | BASH_FS_WRITE=FORBIDDEN.
PASSIVE_WORKSPACE_LOCK=ENABLED: AUTO_INSPECTION=FORBIDDEN |
А вы хук сделайте. Если предложение заканчивается вопросом, то не позволять редактировать ничего. Или даже - если в сообщении есть вопрос, то не позволять редактировать. На claude это сделать очень удобно (просто напиши "добавь хук который не позволит тебе редактировать файлы после сообщения с вопросом"). Cursor не пользуюсь, но судя по гуглу там есть точно такая же функция хуков.
Пусть если модель попытается что то отредактировать ей придет сообщение от обвязки "пользователь ждет ответа, вместо правок ответь ему".
И в целом этот же совет можно расширить на большинство претензий в статье.
Сколько бы я ни пытался изменить правила и скиллы для агентов, они продолжают использовать этот приём. Более того, Composer взял худшее из этих двух приёмов и теперь пишет мне такое:
Это не “API не включается”. Это “фронтенд не может подключиться”.
Тоже самое. Не нравятся кавычки - поставьте хук на ответ который проверит кавычки и не позволит ему отправить сообщение пока их не уберет. Судя по всему, напрямую запретить в Cursor нельзя ответ. Но можно сделать afterAgentResponse + stop с запросом ответить нормально после, без кавычек или без Вы абсолютно правы.
Кстати а если свой серв использовать, то можно и на уровне логитов запретить выржаения такие.
Возможно вопрос примитивный, но это от незнания ИИ:
зачем для переименования функции/класса напускать аж целый ИИ? В любой мало-мальски IDE есть функция рефакторинга, причем с учетом контекста (namespace, class). Без всякого ИИ.
В крайнес случае sed или GUI-аналоги.
В чем сила, брат? (c)
Это называется ИИ-солюционизм. Попытка прикручивать ИИ даже туда, где он нафиг не нужен и обычные скрипты справляются. А еще вернее - скрипты как раз и справляются, а ИИ нет, но все равно лепят ИИ, а затем пытаются обосновать почему его прилепили туда.
А использование ИИ несколько расслабляет - после получения положительного опыта уже становится просто лень делать какие-то вещи, требующие хоть какого-то напряжения мозга - вспомнить, где и какими клавишами вызывается нужное, или в каком меню, и уж тем более как в этом sed поменять строки. Да, для таких вещей использовать ИИ очень расточительно по времени и ресурсам, и в итоге работа делается заметно дольше.
Каюсь, иногда сам таким страдаю. Особенно когда надо какой-то кусок текста обработать - даю текст, говорю, в каком виде мне нужно что оттуда получить - готово. В большинстве случаев в доИИшную эру я это делал просто в редакторе текста, не особо напрягаясь, и для редких случаев использовал что-то в командной строке или на коленке скрипт писал. Сейчас - "ну нафиг, не помню, где там в меню подходящие функции, спрошу у ИИ". В принципе, если для конкретно такого рода мелких задачек использовать глупые и быстрые модели - вполне подходит (особенно если результат можно быстро проверить). Но даже тут есть риски, что модель где-то наврёт, и придётся повторять, менять запрос, менять модель (а потом плюнуть и всё же сделать по-старинке).
Если вы уже работает в проекте с ИИ, то ИИ уже запущен, и скорее всего переименование нужно в только что написанном этим самом ИИ коде.
И у ручного переименования тут две проблемы:
- Если ИИ запущен в агентской среде (у меня это DeepSeek Harness) - изменения я скорее всего увидел через SourceTree, а класс надо сначала в IDE найти. Напечатать "переименуй А в Б" просто быстрее
- Если вы переименуете сами вручную - ИИ не узнает об этом пока изменённый файл не перечитает, и это вызовет проблемы: ИИ, сделав следующую правку, получит ошибку компиляции, и будет выяснять что именно произошло.
Рефакторить с ИИ гораздо быстрее, чем без него. Я могу одновременно работать над несколькими проектами. Написать "переименуй функцию" у меня займет две секунды, затем я переключаюсь на другой проект, а потом делаю ревью изменений в третьем проекте. При этом ИИ сделает рефакторинг, добавит тесты под него, обновит документацию, подумает сломается ли что-то от рефакторинга или нет. При условии использования подходящей для этого модели. И я могу написать "сделай рефакторинг всех методов согласно скиллам рефакторинга". Мне не обязательно указывать на каждую отдельную функцию.
Кажется, тут смешано много факторов: и как сделан агент, и какая модель, и скиллы, и сами формулировки запросов.
У нас ребята написали своего агента, и обычная последовательность при разработке: анализ, билд, промоут. При анализе выдаётся план дальнейших действий, что будет сделано, как, и какие части запроса какими кусками будут покрыты. Билд - по сути написание кода в песочнице, прогон тестов, сборки. Промоут - тут уже перенос из песочницы готового кода, с показом диффа и с возможностью подтверждения (или с режимом авто-подтверждения). Кроме того, можно на любом этапе просто в виде обычного чата дополнять что-то, спрашивать, уточнять - код никогда не будет записан без явного указания команды.
Модели тоже разные - я использовал дипсик, он работает быстро, но съедает немало токенов, и в основном справляется. Но как только встаёт задача что-то имеющееся доработать, устранить какой-то баг, и т.д. - может ходить по кругу и потонуть в собственных размышлениях. В этом плане zai glm 5.3 гораздо лучше справляется - правда, дольше думает, но вывод в чате более чистый, нет "воды" в ответах, код рабочий (крайне редко приходится что-то просить исправить). Другие модели пока не прикрутили, не пробовал.
Формулировки запросов - это ещё давно всем понятно, что сильно зависит как и что спросить. "Зачем тут функция?" - выглядит "агрессивно" даже для человека. Понятно, что если модель обучена быть максимально "услужливой" и пытаться угодить любым путём человеку - она тут же примет такой запрос как "наезд" и кинется исправлять (даже если не надо исправлять). Гораздо продуктивнее будет запрос типа: "Объясни назначение функции, где она вызывается, что делает, и кратко - как работает". Подобные вопросы я задавал glm, и от себя лично, и те, что возникали у других людей на ревью (даже если сам не понимал, после ответа становилось понятно).
Скажите, а у Вас нет ощущения… ну вот то, что Вы описали… “объем” всех “телодвижений”, куча “подготовительных” ритуалов… попытки “найти общий язык” с моделью, вплоть до “интонации”, чтоб ее не обидеть и не напугать… 100500 попыток настроить настройка харнесс, промпты, скилы… вся вот эта дрессировка - себя и ее… вот нет ощущения, что работа над проектом превратилась в работу “подружись” с моделью, чтоб хоть как-то ОНА начала работать, вместо самой РАБОТЫ? ну как бэ… не работа ради результата, а “уговори капризного ребенка есть манную кашу”… нет ощущения, что это все лишнее, и можно было самим уже давно все написать и покрыть тестами, запустить пайплайн, и все такое? ради каких миллионов строк высокопроизводительного кода вот это вот все страдание?
Ну, не могу сказать за всю компанию, насколько это выгодно, могу про себя сказать - меня уже просили (руководство) дать расклады по времени, сколько что занимает с агентом. В моëм агента писали другие, как и скиллы к нему. "Приспосабливаться" мне уже не надо - на самом деле, нужно просто внятно, четко и достаточно подробно выражать свои мысли, а это нужно не только с ИИ, с людьми это ещë больше надо. Часть работ по написанию кода на знакомом мне языке агент делает в целом с тем же качеством (т.к. уже имеет доступ к репозиторию и читает примеры кода), мне остаëтся только быстро посмотреть. В части, где мне нужно написать на не знакомом мне языке, раньше я отдавал задачу другим людям, ждал очереди, потом вопросы-уточнения, проверки результатов, доработки и т.д., а сейчас это всë делает агент, я только проверяю что код работает как ожидалось, и отдаю уже на ревью знающим людям. В среднем экономия раза 3-4 по времени.
Написать агента, скиллы, подготовить всë для работы - это разовая задача. При грамотно настроенных скиллах, системных промтах и источников информации, где агент может что-то искать - можно уже формулировать запросы не столь точно, остальное модель уже будет видеть в контексте и поймëт как надо. И таких плясок с формулировками уже и не понадобится.
Я думал такое нравится только менеджерам или короче ненастоящим сварщикам.
Тратить время и общаться с агентом, вместо того чтобы сделать точечную минимальную правку. Такое себе развлечение.
Разве что вот для разбора чужого кода, краткий синопсис составить сойдёт.
«Ты просто не ставишь пять линий после вишни неправильную модель используешь!» © любой нейроадепт.

Вам понадобятся железные нервы для работы с ИИ-агентами