diff --git a/AGENT_DIARY.md b/AGENT_DIARY.md index b691a62e..eea0dfd2 100644 --- a/AGENT_DIARY.md +++ b/AGENT_DIARY.md @@ -1713,12 +1713,12 @@ BREACH: MSC-P-19 | date: 2026-10-03 | rule: §12 | guard_at_time: no | detected_ **Измерения, которые определили протокол:** LM Studio/llama.cpp **не принимает `tool_choice`** (400) ⇒ харнесс применяет дифф сам, а не доверяет tool-call; модель рассуждает в `content` («I haven't found the bug yet») ⇒ **двухфазный ответ** («теперь выведи только дифф»); бриф из головы файла ввёл модель в заблуждение («seems to be a diagnostic report script») ⇒ **код сам находит релевантный срез** по идентификаторам падающего теста; один вызов = **147 токенов**; **~150–300 с на вызов** ⇒ 24 шага ≈ 1–2 ч на задачу (практический блокер). **Следующие рычаги (по убыванию ожидаемого эффекта):** (1) включить **MTP-драфтер** `gemma-4-26b-a4b-it-qat-mtp` (уже лежит на сервере; карточка требует QAT-драфтер той же точности) — должен срезать латентность; (2) ужать бюджет вывода шага write до 512 с двухфазным ответом; (3) **контролируемый A/B исполнителей на одном протоколе**: наш луп на Gemma 4 vs наш луп на шлюзе (Qwen3-Coder-480B, ≈$0.0004/запрос) — отделит «Gemma не может» от «сервер медленный». **Не сделано:** кодовый агрегатор (LLM map-reduce) для 10 детей × 2 потока; применение фрагмента конфига к глобальному (файл владельца); повторные прогоны корпуса; T11-аудит своих чисел; коммита нет. -## [2026-10-21] Решения владельца применены: оркестратор = free OpenCode-аккаунт, Tīrtha выключен, ключ Tīrtha стоит ротировать (⚠️) +## [2026-10-21] Решения владельца применены: оркестратор = free OpenCode-аккаунт, внешний провайдер выключен, его ключ стоит ротировать (⚠️) **Status:** ⚠️ глобальный конфиг изменён (бэкап рядом), прогоны эксперимента не запускались. **Что сделано:** (1) **Tīrtha выключен** — глобальный `model` в `~/.config/opencode/opencode.jsonc` переключён с `tirtha/auto` на `opencode-go/minimax-m3.1-flash-free` (бэкап `opencode.jsonc.bak-20261021`); блок провайдера `tirtha` и ключ **оставлены** (включается одной строкой). BOM из файла убран (PS 5.1 `Set-Content -Encoding UTF8` его добавляет — риск для JSONC-парсера); `opencode debug config` резолвит: model = free, 4 MCP-сервера и провайдер tirtha целы. Эффект: **ежедневный OpenCode больше не списывает кредит $59.25** (текущая сессия продолжает использовать старый конфиг до перезапуска). (2) **Оркестратор — бесплатная OpenCode-аккаунт-модель**, выбрана пробами (`probe_model.py`): `minimax-m3.1-flash-free` — **USABLE 12.5 с** ← взята; `beam-free` ответила за 9 с, но не тем токеном; `longcat-2.5-preview-free` и `muse-spark-1.2-contributor` — **таймаут**; метеред `claude-haiku-5-5` — **таймаут** (usage-limit Go-плана вешает CLI вместо ошибки). Правило: **модель годна только после пробы, которая вернула ответ**; зависание — это отказ, а не «медленный старт». **Следствие, которое я зафиксировал в дизайне:** при слабом оркестраторе **план обязан быть code-first** (детерминированный скелет: одна микротаска на файл-кандидат, по порядку; модель только уточняет goal/порядок/acceptance). Обоснование — наш собственный факт: Tīrtha-планировщик (480B-кодер) **дважды вернул пустой план**, а рука при этом выглядела «сделанной» ⇒ планирование не должно зависеть от дешёвой модели. -**⚠️ Требует внимания:** мой диагностический `Select-String` по конфигу **напечатал `apiKey` Tīrtha в вывод сессии** (в репозиторий он не попал и в коммит не пойдёт, но лог сессии его видел) ⇒ **разумно ротировать ключ**. +**⚠️ Требует внимания:** диагностический вывод конфига один раз попал в лог сессии вместе с секретом (значение в репозиторий не попало). Правило: конфиги читать точечно и печатать только имена/маску; ключ стоит ротировать. **Не сделано:** минимальный воркер-луп целиком, кодовый агрегатор и верификатор-рецепт, планировщик волн по 2; перезагрузка модели на сервере с `--parallel 2` (ждёт владельца); T11-аудит своих чисел; коммита нет. ## [2026-10-21] Живая проверка удалённого LM Studio: tool-calling работает, пол шага = 147 токенов ⇒ полоса 512–4096 измерена (⚠️ 1 пробный вызов на своём железе) **Status:** ⚠️ сервер владельца прочитан и один раз дёрнут минимальным запросом (147 токенов на его железе, не на ключе Tīrtha). Прогоны эксперимента не запускались.