Чёрные окна на ноутбуке — найден настоящий источник
Узел NATALY-WIN-NB · 10.08.2026 09:34–09:38 · всё по прямому замеру, версии 1 и 2 этого разбора были неверны
120окон за 60 секунд (замер 09:34)
3после остановки (замер 09:37)
~2/секчастота шторма
23 миншёл до остановки
Что это за окна
Все окна одинаковые, с заголовком C:\Program Files\Git\usr\bin\ssh-keygen.exe. Это проверка криптоподписи посылок флота: наши машины подписывают сообщения друг другу, а получатель проверяет подпись программой ssh-keygen из состава Git for Windows. Она консольная, поэтому каждый вызов открывает окно Windows Terminal и тут же закрывает.
Кто её звал в цикле — цепочка родителей, снятая живьём:
Задача Планировщика «Regress Grid Nightly» (ночной прогон тестов)
└─ pythonw.exe regress_run.py PID 30860, стартовал 09:13
└─ pythonw.exe _test_quarantine_sig25.py
└─ ssh-keygen.exe -Y verify … ← окно, ~2 раза в секунду
Почему именно по утрам и почему «всё чаще»
- Задача «Regress Grid Nightly» заведена 06.08 в 18:52 и должна идти ночью в 02:40. Ноутбук ночью выключен, у задачи стоит «запустить при первой возможности» — поэтому пропущенный ночной прогон догоняется утром, ровно когда ты садишься работать. Сегодня он стартовал в 09:13 и к моменту замера шёл 23 минуты.
- Гаситель окон умер 07.08 в 16:23 — процесса нет, журнал обрывается на этой секунде. Раньше он давил такие окна за 30–50 мс. Первый утренний шторм после его смерти пришёлся на 08.08 — отсюда ощущение «стало резко хуже».
Корень в одной строке кода
Файл ~/.claude/scripts/fleet_sign.py зовёт ssh-keygen через subprocess.run(...) без флага CREATE_NO_WINDOW — строки 85, 140, 199. Родитель (pythonw.exe) своей консоли не имеет, поэтому Windows выдаёт каждому потомку новую консоль с окном.
Это касается не только ночного прогона: подпись и проверка подписи идут при каждом обмене по шине. Тест просто делает это сотнями раз подряд и превращает редкое мигание в шторм.
Что сделано прямо сейчас
- Прогон остановлен:
schtasks /end + снятие зависшего дочернего процесса.
- Проверено замером: 120 окон/мин → 3/мин.
- Задача не удалена и не отключена — она снова пойдёт завтра в 02:40, а если ноутбук будет выключен, снова догонит утром.
Чтобы не вернулось — три варианта, ни один не сделан
| Что | Эффект | Цена |
Корневой: добавить CREATE_NO_WINDOW в fleet_sign.py | окон не будет вовсе — ни в прогоне, ни при обычной работе шины | правка общая для флота; папка ~/.claude здесь receive-only, значит правка идёт посылкой через хаб, а не файлом на диске |
| Снять «запускать при первой возможности» у Regress Grid Nightly | утренних штормов не будет, ночные прогоны просто пропускаются | на ноутбуке, который ночью выключен, тесты не пойдут почти никогда |
| Перенести задачу на хаб (он всегда включён) | прогон идёт ночью там, где никто не смотрит в экран | надо согласовать с хабом |
Что я в этом разборе намерил неверно (две правки)
- Версия 1: обвинил обёртку
run_hidden.vbs. Опровергнуто опытом — она даёт 0 окон.
- Версия 2: назвал «~104 окна в сутки» и главным виновником Session Reaper. Цифра верна только для тихого промежутка: мой замер попал между прогонами. Реальный пик — 120 окон в минуту, и это другой источник.
Общий корень обеих ошибок один: я мерил там, где было удобно, и не проверил свой вывод против того, что ты видишь глазами. Твоё «десятки в минуту» было точнее моего прибора.
🧒 Простыми словами: ночью наши роботы должны прогонять проверку домашнего задания, но ноутбук ночью спит — и проверка запускается утром, когда ты садишься работать. Внутри неё есть шаг «проверить печать на письме», и на каждую печать выскакивает чёрное окошко. Печатей сотни, вот и мельтешение. Я проверку остановил, стало тихо. Чтобы не повторялось, надо научить программу проверять печати молча — это одна строчка, но её надо провести через главный компьютер.