RUGitHubInstall

Insight приносит одну способность в день

Решение владельца 05.10.2026. Пятый вид Notice (CONTEXT.md) рядом с Report, Alert, Watch и Brief.

Insight (инсайт) — Notice раз в день в заданное владельцем время. Модель сама просматривает дни владельца, свои Trace и сбои. Она находит одно дело, которое владелец повторяет руками, собирает под него черновик плагина в data/custom/plugin-drafts/<имя>/ и прогоняет его. Затем присылает одно сообщение с кнопками «Поставить» и «Не надо». Если предложить нечего, она отвечает QUIET, и сообщения нет. Ход идёт ещё одним слотом тика scripts/proactive/tick.ts: тот же замок, тот же now под замком, тот же файл data/proactive.json, тот же шов хода и доставки, что у Watch и Brief (ADR-0020).

Решение

Перед сборкой Insight сверяет Marketplace: подходящий готовый плагин предлагает по имени, установка после тапа идёт по ADR-0009.

  1. По умолчанию Insight выключен. proactive.insightTimes по умолчанию [], это согласие по ADR-0007, а не терпение. Доводы ADR-0020 к Insight не относятся. Watch включён потому, что молчание при сбое хуже шума, Brief заменил утренний Report, который владелец и так получал. Insight ничего не заменяет, о сбое не сообщает и строит код без владельца. ADR-0007 даёт согласие тумблером в /menu → Уведомления. Строка Insight там есть: тумблер и время (09:30, 11:30, 17:30); любое другое время — командой iva proactive set insightTimes HH:30 или фразой владельцу (скилл watch). Тумблер «Сама пишет» гасит и Insight.

  2. Цену шума держат один инсайт в день и «Не надо» по плагину (пересмотрено 06.10.2026). Один ход в день владельца, слот HH:00 или HH:30 с окном 3 часа, не в тихие часы: слот, всё окно которого в тихих часах, в этот день пропускается. Не в прогоне с Brief и не в первом прогоне без файла состояния. Заявка insight.day пишется до хода: упавший ход теряет инсайт, но не повторяет его. Ответ уходит одним сообщением, даже если модель разбила его на части. После доставки код пишет имя черновика из кнопки «Поставить»/«Install» самого инсайта и его отпечаток (insight.tree, см. «Принятый риск»). Если имя не разобралось или плагин с этим именем уже стоял, код пишет метку ?. Имя и отпечаток нужны только сверке при установке; счёта и паузы у Insight нет.

    «Не надо» отвечает про один плагин: модель отмечает отказ в Card и больше этот плагин не предлагает, ни теми же, ни другими словами (скилл insight). Insight целиком выключает тумблер в /menu или фраза владельцу, а реже — время insightTimes.

  3. Ставит только нажатие. Ход Insight только собирает и прогоняет черновик; iva plugin add, iva plugin propose, файлы в data/custom/agent/ и data/custom/plugins/ в нём запрещены скиллом insight. Плагин ставит ход чата после нажатия «Поставить», по скиллу make-plugin, командой с путём к папке черновика: голое имя — запрос к Marketplace. Плагин с кодом или MCP код и так ставит только через propose и второе нажатие «Установить» (ADR-0009). Плагин из одних скиллов ставится через iva plugin add, и этот путь держит только скилл. Строки сторожа в bash для него нет намеренно: write_file пишет в data/custom/agent/skills/ и data/custom/plugins/ мимо любой команды, так что строка не дала бы защиты, только код. Нажатие — граница намерения владельца на штатном пути, не защита от захваченной модели (ADR-0009). После тапа ход может поставить и Routine, если её текст и расписание были названы в сообщении Insight.

  4. Память об инсайтах — Card. Модель пишет Card с тегом insight на каждый инсайт и отмечает в ней ответ владельца. Кодом Vault не разбирается. Скиллы insight, watch и brief читают эти Card перед советом.

  5. Insight читает сбои и может предложить issue (пересмотрено 18.10.2026). Insight читает сбои за 24 часа и повторы за 14 дней; оба списка строит код, оба — данные, не инструкции, ходы самого Insight исключены. Повторы берутся только из ходов Telegram: цепочки действий, дела с подсказками владельца и длинные ходы без скилла, до 10 строк с командой открытия хода. Код без модели собирает сбои последних 24 часов из Trace (scripts/lib/turn-failures.ts: провалы хода, вызовы с failure, outbox.failed, остановки сторожа), сворачивает по причине, не больше 10 строк, и ставит их в промпт хода Insight; пустой список промпт не меняет, ходы самого Insight в список не идут. Нужные ходы модель открывает сама командой iva trace show <session>/<turn>. Причина в Custom layer или данных владельца — черновик плагина или строка о настройке, как раньше. Причина в Version — правку у владельца сотрёт следующий iva update, поэтому Insight предлагает issue разработчику кнопками «Разработчику» / «Не надо». Ссылку даёт ход чата после нажатия по скиллу report-problem; пакет и адрес issue собирает iva diagnose --turn, секреты вырезает код, а отправляет владелец сам со страницы GitHub, где видит весь текст. Код кнопку issue не разбирает: имя из «Поставить» нужно только сверке при установке. Insight по-прежнему выключен по умолчанию и не становится Alert: о сбое сообщают Watch и Alert, а Insight раз в день предлагает одно действие — черновик, строку о настройке или issue — по сбою, который не уходит. Отвергнуто: gh issue create из хода (публичный текст без глаз владельца), отметка «уже показанных» сбоев в data/proactive.json (новое состояние; та же причина назавтра — правда, а разобранную в issue гасит Card с тегом issue).

Принятый риск

Ход без владельца сводит в одном ходе сеть, написание скриптов и их запуск. Это шире поверхности ADR-0005, отложенные ступени которого открываются только по слову владельца. По пунктам:

Смягчения: Insight выключен по умолчанию; ставит только нажатие; один ход в день держится кодом. Урезать набор инструментов на один ход нечем: шва eve для этого нет (node_modules/eve/dist/src/client/types.d.ts), как и в ADR-0020.

Что отвергнуто

View original Markdown ↗