Context locality from LLM outputs
Aug. 30th, 2026 03:26 pmЯ только что осознал ещё один fault domain при работе с LLM: violation of context locality.
Когда человек ковыряется в коде, его фокус обычно очень слоёно-углублённый (общее понимание что в целом, хорошее понимание текущей подсистемы, почти полное понимание модуля, полное понимание того куска с которым работает). Я понимаю, что можно заявить, что человек "ничего не понимает даже локально", но это всего лишь константа, на которую иерархия понимания умножается, а отношения между "всё в целом понимаю" и "хорошо знаю кусок с которым работаю сейчас" остаётся.
Если человек при своей работе сломал что-то далёкое, это обычно либо большая неудача, либо плохо организованный код. Мы стремимся изолировать куски кода, чтобы иметь возможность работать над обозримым.
И вот в эту картинку рабочего процесса врывается LLM. Хорошая LLM, astra, whatever. Которая вобрала в себя всё и одинаково хорошо понимает и этот кусок и соседний кусок и ещё другой соседний кусок.
Если произошла мискоммуникация между намерениями в коде и новыми изменениями, LLM может это заметить и подсветить. И тут, и там, и вот там, и вот там вот concern. Человек в такой ситуации понимает, что взял кусок не по рту и сдаёт назад, начинает делать осторожнее.
LLM же делает (правильно! но не правильно! мисскоммуникация) и поднимает 100500 concerns из разных доменов. Человек это либо игнорирует и делегирует llm разобраться (vibe), либо пытается понять. И вот тут-то начинает он Страдать, и чем тщательнее он думает, тем больнее он страдает.
Откуда страдания? От переключения контекста. Это принудительный мультитаскинг, на фоне которого вопрос от менеджера "ну как оно там?" отвлекающий от работы - это чистой воды умиление.
Это настоящий, самый страшный мультитаскинг, когда от человека ожидают peak competence в каждой подсвеченной проблеме. А каждая проблема со своим контекстом. И вот человек пытается это всё понять. А потом тут же понять. И снова понять. И снова. Это же невыносимая нагрузка, запредельная. Разумеется, человек ломается и впадает в vibe режим, либо ухватывается за маленький кусочек.
Мы долго ругали llm за то, что у них маленький контекст. llm отрастили контекст побольше. Помощнее. Их attention vector может придавить 20 человек насмерть своим размером.
Заметим, эта проблема одинаково болезненная как в plan стадии, так и в implement. Её нельзя решить с помощью лучших промптов или лучших скиллов. Это либо "поди сам разберись" (vibe), либо невыносимая нагрузка на человека.
Что делать? То же самое, что человек делает при знакомстве с большой кодовой базой большого проекта. Стремиться к локальности. Как? Не знаю. Очень чешутся руки сказать "делать как раньше делали и попроси llm проверить". Наверное, это не выход (нельзя игнорировать скорость и качество написания кода).
Значит, надо искать какой-то пограничный подход, который позволит человеку сохранять удобную для него структуру контекста. А вот как? (describe me problems with this idea within a human-comfortable context hierarchy... хаха, удачи с таким промптом).
Когда человек ковыряется в коде, его фокус обычно очень слоёно-углублённый (общее понимание что в целом, хорошее понимание текущей подсистемы, почти полное понимание модуля, полное понимание того куска с которым работает). Я понимаю, что можно заявить, что человек "ничего не понимает даже локально", но это всего лишь константа, на которую иерархия понимания умножается, а отношения между "всё в целом понимаю" и "хорошо знаю кусок с которым работаю сейчас" остаётся.
Если человек при своей работе сломал что-то далёкое, это обычно либо большая неудача, либо плохо организованный код. Мы стремимся изолировать куски кода, чтобы иметь возможность работать над обозримым.
И вот в эту картинку рабочего процесса врывается LLM. Хорошая LLM, astra, whatever. Которая вобрала в себя всё и одинаково хорошо понимает и этот кусок и соседний кусок и ещё другой соседний кусок.
Если произошла мискоммуникация между намерениями в коде и новыми изменениями, LLM может это заметить и подсветить. И тут, и там, и вот там, и вот там вот concern. Человек в такой ситуации понимает, что взял кусок не по рту и сдаёт назад, начинает делать осторожнее.
LLM же делает (правильно! но не правильно! мисскоммуникация) и поднимает 100500 concerns из разных доменов. Человек это либо игнорирует и делегирует llm разобраться (vibe), либо пытается понять. И вот тут-то начинает он Страдать, и чем тщательнее он думает, тем больнее он страдает.
Откуда страдания? От переключения контекста. Это принудительный мультитаскинг, на фоне которого вопрос от менеджера "ну как оно там?" отвлекающий от работы - это чистой воды умиление.
Это настоящий, самый страшный мультитаскинг, когда от человека ожидают peak competence в каждой подсвеченной проблеме. А каждая проблема со своим контекстом. И вот человек пытается это всё понять. А потом тут же понять. И снова понять. И снова. Это же невыносимая нагрузка, запредельная. Разумеется, человек ломается и впадает в vibe режим, либо ухватывается за маленький кусочек.
Мы долго ругали llm за то, что у них маленький контекст. llm отрастили контекст побольше. Помощнее. Их attention vector может придавить 20 человек насмерть своим размером.
Заметим, эта проблема одинаково болезненная как в plan стадии, так и в implement. Её нельзя решить с помощью лучших промптов или лучших скиллов. Это либо "поди сам разберись" (vibe), либо невыносимая нагрузка на человека.
Что делать? То же самое, что человек делает при знакомстве с большой кодовой базой большого проекта. Стремиться к локальности. Как? Не знаю. Очень чешутся руки сказать "делать как раньше делали и попроси llm проверить". Наверное, это не выход (нельзя игнорировать скорость и качество написания кода).
Значит, надо искать какой-то пограничный подход, который позволит человеку сохранять удобную для него структуру контекста. А вот как? (describe me problems with this idea within a human-comfortable context hierarchy... хаха, удачи с таким промптом).