Аудит выполнения screenpipe-daily-diagnostic — 03.07.2026
Аудируемый запуск: диагностика дня за 2026-07-02 (четверг). Скилл — не Bitrix, но фреймворк аудитора применён. Фокус запроса Анатолия: «ИИ открывает одну пустую вкладку и одну рабочую».
Метрики
| Показатель | Факт | Норма |
|---|---|---|
| Вызовов javascript_tool | 5 | ≤ 8 |
| Ошибок API / 403 / пустых | 0 | 0 |
[TRUNCATED] в выводе | 2 (крупный JSON) | 0–1 |
| Обходных путей | 1 (дозапрос полей после truncation) | 0 |
| Вызовов на сбор данных | 2 (probe + пагинация) | ≤ 5 |
| Открыто вкладок | 2 | 1 |
| Закрыто вкладок в конце | 1 | все свои |
| Осталось «мусорных» вкладок | 1 пустая | 0 |
| Read-only соблюдён | да | да |
| Отчёт записан в vault | да (перезапись) | да |
Оценка эффективности: ⭐️4/5 — данные собраны чисто и быстро, но после запуска осталась пустая вкладка.
Проблемы
🟡 Major
P101 — Остаётся пустая вкладка после запуска (именно то, что заметил Анатолий)
- Факт. Последовательность вызовов была такой:
tabs_context_mcp{createIfEmpty:true}→ создал новую группу с пустой вкладкой254361695(chrome://newtab/).tabs_create_mcp→ создал вторую вкладку254361696.- Вся работа со Screenpipe шла в
254361696. - В конце
tabs_close_mcp(254361696)→ закрыл только рабочую. Осталась пустая254361695.
- Корень.
tabs_context_mcpсcreateIfEmpty:trueсам создаёт готовую пустую вкладку («creates a new Window with a new tab group containing an empty tab which can be used for this conversation»). SKILL.md в шаге 2 дополнительно велит «Создай НОВУЮ вкладку» черезtabs_create_mcp. В итоге вкладок получается две: одна отcreateIfEmpty, одна отtabs_create_mcp. Шаг закрытия (строка 70) закрывает «вкладку Screenpipe, которую создавал» — то есть одну. Пустая отcreateIfEmptyостаётся сиротой. - Почему это важно. Запуск ежедневный по будням. Каждый прогон будет оставлять по одной пустой вкладке → за неделю накапливается 5 пустых вкладок в браузере пользователя. Данных не портит, но именно это и раздражает.
- В SKILL.md. Строки 14–15 (создание вкладки) и 70 (закрытие) — рассинхрон: создаётся 2 вкладки, закрывается 1.
🟢 Minor
P102 — [TRUNCATED] при возврате крупного JSON из javascript_tool
- Факт. Вызовы агрегации (
__agg,__agg2) вернули JSON, обрезанный в отображении на ~800 байт. Пришлось делать дозапрос отдельных полей (hourRec,topBlocks,bitrix,aiTools) шестым вызовом. - Корень. Лимит на размер строки, возвращаемой javascript_tool (тот же механизм, что P002 в базе Bitrix). Кириллица + большой объект = обрезка.
- Fix. Сохранять агрегат на
window.__agg, а наружу возвращать сразу узкими порциями (≤ ~600 симв. на вызов), а не одним большимJSON.stringify. Стоило одного лишнего вызова — некритично.
P103 — В отчёт не попал раздел детального разбора ИИ-задач по заголовкам
- Факт. Разбивка ИИ по инструментам сделана (Claude десктоп/браузер, Colab, NotebookLM, Qwen, Codex, ChatGPT), но «какие задачи ставились в ИИ» слито с разделом «Что сделано», отдельного подраздела нет.
- Оценка. Соответствие SKILL.md шаг 4 частичное; на качество вывода почти не влияет. Minor.
Предложения по улучшению SKILL.md
Улучшение 1 — Убрать вторую вкладку (главный фикс P101)
Где вставить: заменить строку 15 в разделе «# 2». Было:
- Создай НОВУЮ вкладку (запомни её tabId — её нужно будет закрыть в конце), перейди на http://localhost:3030/health...
Стало:
- Вкладку создавай РОВНО ОДНУ. Сначала вызови tabs_context_mcp БЕЗ createIfEmpty и посмотри группу:
· если группа пуста или её нет — вызови tabs_context_mcp{createIfEmpty:true}; он САМ создаёт готовую пустую вкладку — используй ИМЕННО ЕЁ, НЕ вызывай после этого tabs_create_mcp;
· если в группе уже есть вкладки — создай одну рабочую через tabs_create_mcp.
Запомни tabId рабочей вкладки. НЕ должно получиться двух вкладок. Затем перейди на http://localhost:3030/health...
Почему важно: это прямая причина «пустая + рабочая». createIfEmpty:true уже даёт пригодную вкладку — второй tabs_create_mcp лишний.
Улучшение 2 — Закрывать ВСЕ свои вкладки, а не одну (страховка P101)
Где вставить: заменить строку 70 в разделе «# 8». Было:
- ЗАКРОЙ вкладку Screenpipe, которую создавал (tabs_close_mcp по её tabId)...
Стало:
- ЗАКРОЙ за собой ВСЕ вкладки, которые появились из-за запуска. Перед закрытием вызови tabs_context_mcp
и закрой (tabs_close_mcp) как рабочую вкладку Screenpipe, ТАК И любую оставшуюся пустую вкладку
chrome://newtab/ в этой группе. После себя не оставляй ни одной открытой вкладки. (Если это
последняя вкладка группы — Chrome сам уберёт группу, это нормально.)
Почему важно: даже если вкладок случайно окажется две, финальный шаг гарантированно уберёт пустую.
Улучшение 3 — Возврат данных порциями (P102)
Где вставить: после строки в «# 3» про «агрегируй ВНУТРИ страницы». Текст:
- Крупные агрегаты держи на window.__agg, наружу возвращай узкими кусками (≤ ~600 симв. на вызов),
а не одним большим JSON.stringify — иначе кириллический вывод обрежется в [TRUNCATED].
Не использовать btoa/base64 — блокируется.
Почему важно: экономит 1 лишний дозапрос на каждом прогоне.
Что сработало хорошо
- Сбор данных чистый: 1 probe + пагинация до 2211 кадров одним циклом, сортировка по времени.
- Категоризация, тайминг (cap 90 сек), паузы (>120 сек), переключения — посчитаны корректно, цифры сошлись с эталоном 2026-07-02 (active 251 vs 254 мин — в пределах ±10–15%).
- Health прочитан до сбора: сразу видно audio_status=not_started → раздел встреч честно «данных нет».
- Read-only соблюдён, отчёт корректно перезаписан (файл на дату уже существовал).
- Вкладка Screenpipe в конце всё же закрыта (просто не единственная открытая).
Итог
Запуск технически чистый (5 вызовов, 0 ошибок, данные верны), но подтверждается жалоба Анатолия: остаётся одна пустая вкладка. Причина — связка tabs_context_mcp{createIfEmpty:true} (уже даёт вкладку) + лишний tabs_create_mcp (даёт вторую), а закрывается только одна. Главная правка — Улучшение 1 (создавать ровно одну вкладку) + Улучшение 2 (в конце закрывать все свои, включая пустую).