⌂ все дашборды/Качество и аудиты← Fix-Audit-NewHub-2026-06-28 · Harness-Audit →

Док Голикова «LLM через подписочный CLI»: аудит + внедрение

14.08.2026 · HP17-ZBook · сессия аудита и ремонта рельс llm_ask

Дословная копия продукта (приказ «ДОСЛОВНО ПОВТОРИТЬ», 2-й заход 14.08)

ДетальСтатус
llm_cli.py (ask(provider, prompt) → str)✅ собран байт-в-байт из его HTML; эталон llm_cli.py.orig (md5 ea026775…); дом: ~\.claude\scripts\llm-cli-golikov\
Провайдер claude✅ живой «работает» из изолированной CLAUDE_CONFIG_DIR (засеяна auth-копией)
Провайдер codex✅ живой «работает» через файл -o; 1 помеченная правка: дефолт gpt-5.6 → пусто (наш аккаунт даёт 400; сам док велит сверять модели)
Провайдер gemini (agy 1.1.10)⚠️ ждёт 1 логина agy просит Google-OAuth (окно 60с); харнес заблокировал доведение роботом. Руками одна команда: cd C:\Users\_\.llm-cli\agy-workspace и запустить agy, войти под a2
serve.py (HTTP-сайдкар для n8n)✅ живой 200+текст (UTF-8), 401 на чужой токен, 502 на кривой провайдер; 1 помеченная правка: порт 8770 → 8772 (8770 занят нашим pythonw-демоном)

3 подтверждённых warn - качество кода примеров, не злонамеренность

НаходкаСуть
warn env целикомОбёртка не вычищает ANTHROPIC_API_KEY / OPENAI_API_KEY - залётный ключ молча включает поштучный биллинг вместо подписки (противоречит собственному обещанию дока). Наш канон §6.3 это уже знал.
warn agy без песочницы--dangerously-skip-permissions сдержан только промптом GEMINI.md, не enforced-песочницей; злой промпт может писать куда угодно.
warn codex в чужом cwdcodex-адаптер бежит в каталоге вызывающего: read-only песочница не мешает ЧИТАТЬ его файлы и утаскивать в диалог вендора.

6 грабель дока → наши рельсы (что было / что стало)

ГрабляБыло у насСтало 14.08
① Промпт только в stdinуже так везде✅ было
② Ответ codex не в stdoutфайл только в 2 из 5 мест✅ починено llm_ask: обе codex-рельсы через --output-last-message
③ Изоляция конфигов (CLAUDE_CONFIG_DIR/CODEX_HOME)нет нигде, 3 поломки класса⏳ канарейка сессия AUTO-hp17-260814-llm-state-isolation (сама, 16:20)
④ rc=0 ≠ успех, ретраи 2/4/8пусто=ошибка было; ретраев нет✅ починено --retries/LLM_ASK_RETRIES, дефолт 0, транзиентное-только; dead_output для secondop → бэклог
⑤ Чанкование длинного входанет📥 бэклог строим при первом длинном потребителе (§3.5)
⑥ Таймаут гасит дерево процессовтолько claude_run и cc_review✅ починено _run_tree (taskkill /T /F | killpg) на всех рельсах llm_ask
Бонус, найден при внедрении: llm_routing.json ОТСУТСТВОВАЛ - слой --class был мёртв (exit 2), тест красный, docs обещали живую фичу. Восстановлен: 6 классов, тест 25/25 зелёный. Строка в Breakage-Journal есть.

Доказательства (/tt)

ПроверкаРезультат
_test_llm_routing.pyЗЕЛЕНО 25/25 (до правки: exit 2, файла нет)
_test_llm_ask_tree_kill.py (новый)ЗЕЛЕНО TimeoutExpired за 3.4с, ping-дерево погашено
Живой смоук codex (новая файловая дверь)✅ 47с «работает»
Живой смоук claude (через _run_tree)✅ 9с «Работает»
Сломанный класс --class✅ честный exit 2
Панель ломателей (OpenRouter, 4 модели / 4 семьи)✅ пройдена 2 существенные находки = толерантные trade-off (tmp-остатки при падении remove; POSIX-ветка теста - честный пропуск), остальное false alarm, проверено по коду

Раскатка на флот (§7.3-бис)

УзелСтатус
HP17-ZBook (источник)✅ применено + все тесты
Маяк (Linux VPS)✅ scp + тест 25/25 его --class тоже ожил (файла не было и там); канарейка другого типа ОС
Хаб + Mac'и + MYOWNPC📦 посылка _transit/llm-ask-fix-2026-08-14 + броадкаст TASK в шину; ждём ACK с exit-кодами (суточный ритм §7.4)

Люди и хвосты

CRM: карточка person-vasiliy-golikov создана (дубля нет, проверено find_name), документ в волте + оригинал в _originals, индекс people пересобран. FB-профиль дочитает хаб: логин в FB с ноута упёрся в 2FA-чекпоинт (задача хабу в шине).
Объяви (§1.5): хабу отправлен текст благодарности Василию голосом Майкрофта (класс C, с раскрытием) + два наших наблюдения по его же коду - отдаём ценность взамен.
Руки Антона (опционально): если хочешь FB живьём с этого ноута - нужен один тап 2FA при следующем логине; без этого всё едет через хаб.