textmachine/docs/archive/prompts/LLM_TRANSPORT_RESEARCH_SESSION_PROMPT_2026-07-23.md

7.9 KiB
Raw Permalink Blame History

Промт ресёрч-сессии: обзор LLM-транспорта чужих харнессов (research/21)

АРХИВ (23.07.2026): ОТРАБОТАН ПОЛНОСТЬЮ. Сдан и залендён docs/research/21-llm-transport-survey.md (ревью-шапка с эрратумом и поправкой применимости — там). Все Q1Q7 закрыты; рекомендации DEFER до после пере-прогона; Q7-кандидаты ждут вендор-сверки. Инструкции ниже не исполнять — только история.

Статус: АКТИВЕН (выдан 20.07.2026, оркестратор №7). Роль — ресёрч (полигон-профиль). Идёт ПАРАЛЛЕЛЬНО операционному пере-прогону: backend/ строго read-only, НИКАКИХ патчей — рекомендации применяются только после пере-прогона отдельным решением. Это $0-сессия чтения кода: не запускать чужие CLI, не делать НИ ОДНОГО вызова моделей, ключи не трогать.

Материал

Склонировано в /home/ubuntu/projects/tmp/ (shallow, 20.07): codex (OpenAI, Apache-2.0) · gemini-cli (Apache-2.0) · grok-build (официальный xAI, Apache-2.0, open-sourced 15.07.2026) · goose (Block, Apache-2.0) · aider (Apache-2.0) · cline (Apache-2.0) · opencode (sst, MIT) · litellm (MIT-ядро; enterprise/ — иная лицензия, НЕ читать) · crush (Charm, FSL-1.1: читать можно, копировать НЕЛЬЗЯ) · openai-go + anthropic-sdk-go (референс официальных SDK).

Периметр: leaked-форки Claude Code — ВНЕ периметра: не искать, не клонировать, не открывать (контаминация независимой разработки). Официальный трекер/чейнджлог anthropics/claude-code — читать ОНЛАЙН (issues/CHANGELOG), код не разбирать.

Контекст нашей стороны (прочитать ДО чужого кода)

  1. CLAUDE.mddocs/README.md → CURRENT-STATE docs/PROGRESS.md.
  2. backend/internal/llm/ (весь пакет — наш транспорт: адаптеры, фейловер, таймауты) + backend/internal/pipeline/ratelimit.go + backend/configs/models.yaml (капабилити/цены/квирки).
  3. docs/experiments/00-provider-quirks.md (наш реестр квирков) + docs/architecture/04-unhappy-paths.md (~70 режимов отказа) + docs/experiments/08-cost-model-v2.md (деньги).

Вопросы (ранжированы; на каждый — вывод «что берём/что не берём и почему»)

Q1 — Prompt-cache дисциплина (потенциально $). Как харнессы раскладывают запрос под префикс-кеш (стабильный system/tools-префикс, порядок блоков, cache_control-маркеры у Anthropic, implicit/explicit cache Gemini, автокеш DeepSeek/GLM)? Наша боль: инъекция банка меняется от чанка к чанку — какой порядок блоков (промт-константы → банк → исходник) максимизирует cache-hit на deepseek-v4-flash/glm-5? Выход: конкретная рекомендация раскладки + оценка экономии по cost-model (cache-hit $0.0028 vs miss $0.14 — до ×50 на входе).

Q2 — Rate-limit адаптив. Парсинг retry-after/x-ratelimit-*, токен-бакеты, адаптивная конкурентность (AIMD?), очереди per-provider. Сверить с нашим rate-guard (фикс-пул волнового исполнителя). Особый интерес: Mistral (замечание к плану — их лимиты жёсткие, mistral = арм редактора пере-прогона).

Q3 — finish_reason таксономия. Как нормализуют across-provider (stop/length/content_filter/tool_calls + нестандарт), как детектят тихое усечение, что делают с partial-ответом. Сверить с нашим контрактом finish=stop-only и floor min_max_tokens (deepseek thinking ⊆ completion — субсет-модель).

Q4 — Таксономия ошибок retry/fatal. Классификация HTTP/сетевых/провайдерских ошибок, backoff-формы, идемпотентность (у кого есть idempotency-key кроме OpenAI?). Дифф против 04-unhappy-paths.md — чего у нас нет.

Q5 — Usage-учёт. Как считают reasoning/thinking-токены по провайдерам, cache-hit поля, атрибуция стоимости. Сверить с нашим ledger (Р7): есть ли поля usage, которые мы теряем/книжим неверно.

Q6 — Streaming vs non-streaming надёжность. Меньше ли у стриминга обрывов/таймаутов на длинных генерациях (наш режим отказа — тихие пропуски на выходе 28k)? SSE-реассемблинг, обработка обрыва посреди стрима, ретрай частичного. Вывод: есть ли довод менять наш non-streaming путь (сейчас — attempt_s 240 + ретраи).

Q7 — Issue-sweep по НАШИМ провайдерам (возможно, самое ценное). По трекерам всех склонированных + anthropics/claude-code онлайн: поиск по deepseek / zai / glm / gemini / mistral / grok / xai / kimi — жатва квирк-репортов (новые finish_reason, игнор параметров, депрекации, флейки) с датами и ссылками. Выход: таблица кандидатов в 00-provider-quirks.md (кандидаты! абсорбирует оркестратор после вендор-сверки — правило 10.07).

Метод (жёстко)

  • Каждое утверждение о чужом коде — с repo/file:line. README ≠ код: пересказ документации фактом о коде не считается.
  • Мандат самопроверки (12.07): спорные находки верифицировать чтением второго места в коде (call-site, тест); в отчёте помечать confidence.
  • Лицензии — в шапке отчёта per-repo. НИКАКОГО копирования чужого кода в textmachine: выход — отчёт-рекомендации; реимплементация — отдельное решение после пере-прогона.
  • .env не читать. Git textmachine не трогать (сессия не коммитит).

Выход

docs/research/21-llm-transport-survey.mdНЕ коммитить (лендит оркестратор). Структура: (1) топ-рекомендации, ранжированные по ожидаемому импакту ($ / надёжность), каждая с «какая наша метрика двинется и на сколько (оценка)»; (2) таблица quirk-кандидатов Q7 со ссылками; (3) per-question разборы с цитатами; (4) appendix per-repo (лицензия, что смотрели, что пропустили). Плюс короткое итоговое сообщение оркестратору.