Получить AX Code · БесплатноДокументация

Эта страница переведена с английской документации. Команды, идентификаторы и примеры не изменены. Среда выполнения 7.24.4 · SDK 2.6.7. Английский оригинал

Использование памяти

Статус: текущий

Область: текущее состояние

Последняя проверка: 2026-09-13

Владелец: среда выполнения ax-code

AX Code делит машину с языковыми серверами, сборками репозитория, браузерами и любой локальной средой модели. Сервер TypeScript или анализатор Rust может занимать больше памяти, чем сам сервер AX Code. Эти процессы дают анализ кода и не являются голосовыми службами. Сумма RSS процессов может посчитать общие страницы больше одного раза.

Профили

AX_CODE_MEMORY_PROFILE принимает auto (по умолчанию), low или normal. При auto узел, сообщающий не больше 8 ГиБ физической оперативной памяти, выбирает low, остальные узлы выбирают normal. Неверные значения включают автоматическое определение. Определение смотрит на физическую оперативную память узла, а не на свободную память и не на предел памяти контейнера. В ограниченной виртуальной машине или контейнере при необходимости явно выберите low. Задайте переменную до запуска AX Code: уже работающий сервер она не перенастраивает.

AX_CODE_MEMORY_PROFILE=low ax-code

PowerShell:

$env:AX_CODE_MEMORY_PROFILE = "low"
ax-code
Поведение Обычный Низкий
Упреждающий запуск языкового сервера и прогрев чтения Включается явно через AX_CODE_LSP_PREWARM=1 Пропускается, даже если переменная прогрева задана
Кэш предыдущего исходного текста на клиент LSP Учёт удержанного содержимого 16 МиБ Учёт удержанного содержимого 4 МиБ
Параллельная инициализация LSP Существующее планирование сервера Одна инициализация за раз на процесс сервера
Параллельные семантические операции Существующие бюджеты сервера Две ожидаемые семантические операции на процесс сервера плюс существующие бюджеты сервера
Здоровые простаивающие языковые серверы Существующий жизненный цикл Можно остановить после пяти минут простоя, проверка примерно раз в минуту

В обоих профилях языковые серверы по умолчанию запускаются по запросу. Запуск и обычное чтение файлов не включают упреждающий семантический прогрев. Явная семантическая навигация, диагностика и индексация всё равно запускают нужный анализ, поэтому первый семантический запрос может занять больше времени. Чтобы вернуть упреждающий прогрев запуска и чтения на узле с достаточным запасом, задайте обе переменные до запуска:

AX_CODE_MEMORY_PROFILE=normal AX_CODE_LSP_PREWARM=1 ax-code

Упреждающий прогрев включает только точное значение 1. low всегда его подавляет. Эта настройка не завершает уже работающие серверы и не является глобальным запретом запуска LSP: правки, которым нужна диагностика, и явные семантические операции и индексация по-прежнему используют языковые серверы. Освобождение простаивающих процессов в низком режиме остаётся отдельным.

У кэша исходного кода также есть предел в 1000 записей. Его учёт включает консервативный запас на строки и ключи. Это не предел кучи V8 и не предел RSS. Файл, который не помещается, всё равно синхронизирует своё полное текущее содержимое с языковым сервером. Вытеснение из кэша не закрывает документ, пока запрос может в нём нуждаться.

Низкий режим ставит работу в очередь, а не пропускает анализ. Первое использование или использование после остановки по простою может занять больше времени. Выбранные и поставленные в очередь клиенты, ожидающие нижележащие RPC и ожидания диагностики защищены от остановки по простою. Запрос с тайм-аутом может оставить работу на стороне сервера: две ожидаемые операции не гарантируют лишь два вычисления внутри языковых серверов. Инвентаризация диагностики помечается как ухудшенная после освобождения по простою, потому что перезапуск одного файла не доказывает полное покрытие прежней рабочей области.

Эти пределы действуют внутри каждого процесса AX Code. Они не ограничивают общую оперативную память, не согласуют отдельные экземпляры AX Code, не ставят потолок кучам языковых серверов и не управляют компилятором, браузером или локальной моделью. Выбор модели, требуемый контекст промпта и команды проверки не меняются.

Удержание сеанса и свидетельств

TUI держит тяжёлые события расшифровки для просматриваемого сеанса. Неактивные сеансы хранят сводки, статус и ожидающие одобрения и вопросы. При открытии сохранённая история заново загружается из SQLite. Обычное окно показа — 100 сообщений с бюджетом сериализованной нагрузки 16 МиБ. Сначала освобождаются старые завершённые сообщения. Новейшее неделимое сообщение и восстановленная история Undo/Restore могут превысить мягкий бюджет. TUI показывает индикатор. Это пределы проекции, а не пределы устойчивой истории сеанса или контекста модели.

Когда куча V8 приближается к жёсткому пределу, бюджет расшифровки сужается автоматически (до пола 2 МиБ при 90% использования кучи), чтобы удержанный набор сбрасывался до того, как процесс достигнет FatalProcessOutOfMemory. После 80% TUI также показывает предупреждение с предложением /compact или перезапуска. Давление спадает после полной сборки мусора, но уже вытесненная история остаётся отсутствующей, пока её не загрузят снова.

Части, пришедшие раньше родительского сообщения, используют ограниченную область ожидания (128 идентификаторов сообщений / 1 МиБ). Если ожидающее содержимое приходится освободить, TUI предлагает перезагрузку из сохранённой истории. Поздние события для вытесненных сообщений не могут навсегда воссоздать осиротевшие части.

Кэш свидетельств по умолчанию ограничен в памяти (128 записей / 4 МиБ сериализованных значений на экземпляр). RocksDB остаётся включаемым явно. Смена только сервера кэша не уменьшает вызовы инструментов модели. См. Кэш свидетельств.

Вывод фоновых команд

Непрочитанный фоновый вывод использует закрытые временные файлы вместо удержания многомегабайтных строк JavaScript для каждой завершённой оболочки. Каждый файл — кольцо UTF-8 на 2 МиБ. Самый старый непрочитанный вывод сверх предела отбрасывается и помечается. До 32 кольцевых файлов резервируют не больше 64 МиБ на процесс. Когда слоты диска заполнены, самый старый завершённый буфер может истечь. Владение активной оболочкой не вытесняется. Чтение возвращает удержанный непрочитанный вывод по частям и освобождает его слот на диске.

Реестр допускает 16 активных оболочек на сеанс и 32 на процесс и хранит не больше 16 завершённых записей на сеанс и 64 на процесс. Завершённый вывод истекает через 30 минут (проверка при доступе и примерно раз в минуту). Списки команд и описаний — это превью с потолком 8 КиБ / 1 КиБ. Выполненная команда не меняется. У воспроизведения наблюдателя отдельные пределы: 64 КиБ и 128 записей на оболочку, с общепроцессным бюджетом байтов 2 МиБ. Неполное воспроизведение помечается.

bash_output сообщает целостность вывода отдельно от настоящего кода выхода процесса. Отброшенный, истёкший или нечитаемый вывод — неполное свидетельство проверки, даже если команда завершилась с кодом ноль. Эти замечания остаются видимыми, когда используется фильтр вывода. Отсутствующая запись может значить, что её уже потребили или вытеснили. Недоступный вывод не доказывает, что проверка прошла.

Файлы используют закрытый временный каталог, принадлежащий процессу (0700), и файлы 0600 на POSIX. Чтение, удаление сеанса, очистка удержания и обычный выход процесса освобождают принадлежащие файлы. Буфер на диске — не устойчивое к сбою хранилище сеанса. Принудительное завершение или сбой могут оставить закрытый временный каталог. Автоматическая уборка между процессами не реализована, поэтому предел 64 МиБ описывает текущий процесс, а не накопленные остатки сбоев. Ошибки очистки файловой системы сообщаются и не освобождают резерв квоты неудачного файла. Синхронный ограниченный ввод-вывод файлов избегает неограниченных очередей записи, но может добавить задержку на медленной временной файловой системе.

Выбор нагрузки

На стеснённых узлах сначала используйте облачного провайдера, один активный сеанс написания кода и небольшой репозиторий. Крупные сборки и дополнительные сеансы агента запускайте, только когда у машины есть запас. Локальному выводу нужен отдельный бюджет на веса, кэш KV и контекст и накладные расходы среды выполнения. Рекомендации по оборудованию облачного провайдера к нему не относятся.

Для обычной работы используйте упакованный CLI. pnpm run dev — рабочий процесс участника с исходным кодом и другой ценой запуска и загрузки модулей. Смотрите AX Code вместе с дочерними языковыми серверами и сборками в Activity Monitor или в мониторе процессов платформы. Сниженный предел кэша не устанавливает фиксированного уменьшения физической памяти.

Изменения памяти имеют детерминированные проверки удержания и семантической эквивалентности. Они не квалифицированы нагрузочным тестом на физическом Mac с 8 ГБ. Низкий режим не гарантирует, что произвольный проект поместится на машине с 8 ГБ.