Skip to content

v1.22.0

Choose a tag to compare

@github-actions github-actions released this 19 Jun 11:36
· 7 commits to master since this release

Накопительный релиз снижения перерасхода токенов на старте rlm_start: три улучшения «бюджет/глубина/подсказки» (Part 1–3, ранее закоммичены без бампа версии) + усечение списка расширений на конфигурациях с экстремальным их числом (Part 4). Весь функционал — read-only слой поверх стратегии/песочницы: схема индекса и BUILDER_VERSION (14) НЕ менялись, пересборка боевых индексов НЕ требуется.

Добавлено

  • Авто-выбор глубины анализа — новый дефолт effort="auto". Сервер берёт medium для простых запросов и high для многоаспектных (по маркерам сложности — жизненный цикл / механизм / сквозной анализ), вместо фиксированной глубины. Прецеденс: RLM_FORCE_EFFORT (env, жёсткий замок для админа) > явный effort агента > auto. Server-default числовых лимитов вызовов на тире задают RLM_MAX_EXECUTE_CALLS / RLM_MAX_LLM_CALLS (явные max_execute_calls / max_llm_calls тула их перекрывают — это НЕ hard cap). Итоговые значения видны в ответе (effective_effort + limits); если итоговые лимиты расходятся с пресетом effort, в начало стратегии дописывается правдивый баннер == SERVER LIMIT OVERRIDE ==.
  • Точные подсказки песочницы при ошибках вызова. NameError по угаданному имени хелпера → подсказка с реальным именем (известный алиас или fuzzy-поиск); неподдерживаемый именованный аргумент → реальная сигнатура хелпера (включая generic-IO grep/read_file/…). Меньше тупиковых вызовов на слабых моделях.

Изменено

  • Глобальный бюджет дампа перехватов расширений в стратегии (RLM_EXT_OVERRIDE_DETAIL, дефолт 0). Общий блок _extension_strategy на конфигурациях с большим числом расширений вываливал до 30 строк поимённых перехватов на каждое расширение без общего лимита — десятки тысяч символов в каждом rlm_start, в т.ч. в legacy-режиме full (УТ 11.5: 14 расширений / 1258 перехватов → ~64К символов / ~37К токенов, переплачивалось в каждой сессии). Теперь по умолчанию только счётчики на расширение + один указатель get_overrides('ИмяОбъекта'); поимённая детализация — opt-in через RLM_EXT_OVERRIDE_DETAIL (единый глобальный бюджет строк, не на расширение). Заодно устранён ложный маркер «… and more» в _format_overrides_summary на точной границе бюджета.
  • Усечение агент-facing списка расширений на старте до top-N по overrides (RLM_EXT_LIST_CAP, дефолт 20). На конфигурациях с экстремальным числом расширений (155 расширений / 604 перехвата) один и тот же список сериализовался триждыwarnings, поле extension_context.nearby_extensions и заголовок стратегии «CRITICAL — EXTENSIONS DETECTED» — раздувая ответ rlm_start до ~68.6К символов / ~39К токенов, что превышало токен-лимит инструмента: payload не влезал inline, агент в реальном клиенте получал ошибку вместо стратегии. Теперь при числе расширений > cap эти три представления (только ветка MAIN) ужимаются до top-N по числу overrides с полным детерминированным тай-брейком (-overrides, name, name_prefix, normcase(path)): warnings → короткая контекст-нейтральная сводка с числом расширений + указатель detect_extensions() (вместо конкатенации всех путей); nearby_extensions → top-N + машинно-очевидные companion-поля nearby_extensions_truncated / nearby_extensions_total / nearby_extensions_shown / extensions_hint; заголовок стратегии → top-N имён + строка «… +K more (detect_extensions())» + сводная строка по скрытым («… +K more extensions, N overrides total»). При числе расширений ≤ cap (подавляющее большинство конфигов) поведение байт-в-байт прежнее. Значение <=0 (в т.ч. -1) — без лимита; невалидный env → дефолт 20. На реальной конфигурации с 155 расширениями старт упал с ~39К до ~13К токенов (влезает inline). Полнота данных не теряется: полный список — detect_extensions() / get_overrides(); внутренний список объектов расширений и питание песочницы (extension_paths, все 155 путей) НЕ усекаютсяfind_module / find_attributes / parse_object_xml / read_procedure по «хвостовым» расширениям вне top-N работают как раньше. Усечение применяется только к ветке MAIN; сессии, открытые на одиночном расширении (EXTENSION-роль), не затрагиваются. Поиск и анализ не изменены.

Совместимость

  • Схема индекса и BUILDER_VERSION (14) НЕ менялись — пересборка не требуется. Все правки — read-only слой над стратегией/песочницей/ответом rlm_start, отдельный от индекса. Новых таблиц/колонок/индексов нет.
  • Soft-breaking (осознанный tradeoff): на конфигурациях с числом расширений > RLM_EXT_LIST_CAP поле extension_context.nearby_extensions отдаёт ТОЛЬКО top-N, а не весь список. Старый клиент, итерирующий это поле как полный список, на extreme-конфиге увидит усечённый. Митигировано явным булевым nearby_extensions_truncated: true + nearby_extensions_total / nearby_extensions_shown / extensions_hint (самодокументируемо и машинно-детектируемо) и полным списком через detect_extensions(). Для конфигов с числом расширений ≤ cap поведение прежнее. Альтернатива (token-overflow — инструмент вообще не отвечает inline) — хуже.
  • Дефолт глубины анализа сменён с фиксированного на auto (medium/high по маркерам сложности). Прежнее поведение «всегда high» воспроизводится явным effort="high" или RLM_FORCE_EFFORT=high.
  • Новые env-переменные: RLM_EXT_LIST_CAP, RLM_EXT_OVERRIDE_DETAIL, RLM_FORCE_EFFORT, RLM_MAX_EXECUTE_CALLS, RLM_MAX_LLM_CALLS — см. docs/ENV_REFERENCE.md и .env.example. Все опциональны, дефолты сохраняют разумное поведение.

Полный список изменений: CHANGELOG.md