跳到正文
cccskills
免费在 GitHub 公开

windowless

Stop black console windows (cmd, PowerShell, Windows Terminal) from flashing and stealing focus on a Windows machine. Use when scheduled tasks, hooks or background scripts pop up consoles: finds all three sources with evidence, silences them reversibly and proves the before and after count. Triggers: /windowless, black windows, console windows popping, windows steal focus.

中文简介正在准备中。当前显示原文说明。

集成工具Telegram
查看安装方法

包含的文件(1)

  • SKILL.md11.4 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

/windowless — чёрные окошки: найти, погасить, доказать

0. Зачем это существует

Антон работает глазами (§2.4). Окно, ворующее фокус раз в минуту, ломает работу сильнее, чем медленный скрипт. Проблема рецидивирующая: каждая новая задача планировщика рождается в режиме Interactive и становится новым мигателем. Поэтому лечение — не разовый подвиг, а прогон этого скилла.

Замер на хабе 06.08.2026: было ~84 вспышки/час, после прогона — 0.

1. Три источника (и чем лечится каждый)

№ИсточникУликаЛечение
№1Сам Claude Code — окно на КАЖДУЮ shell-командув простое окон нет, при работе — естьофициального выключателя НЕТ → только скрыватель
№2Задачи планировщика в режиме InteractiveLogonType=Interactive + частый повторфлип в S4U — окно физически не может появиться
№3Сторожа MCP, респавнящие мёртвые демоны через cmdлог сторожа «порт мёртв → перезапуск» каждые N минутфлип сторожа в S4U + починить сам демон
№4Дочерний консольный exe из скрипта — python зовёт subprocess.run без CREATE_NO_WINDOWзаголовок окна = ИМЯ EXE (не cmd/терминал), цепочка родителей ведёт к скриптуcreationflags=CREATE_NO_WINDOW в вызывающем коде

⭐ Иерархия: S4U — настоящий фикс (окна нет), скрыватель — подпорка (гасит уже показанное, возможен под-кадровый блик). Скрыватель не заменяет флип.

⭐ №4 — отдельный класс (замер [машина флота] 10.08.2026: 120 окон/мин, каждое — ssh-keygen.exe, цепочка: задача Regress Grid Nightly → regress_run.py → fleet_sign.py → ssh-keygen). Отличие от №2 по улике: заголовок окна называет полезный exe, а не терминал. Флип родительской задачи в S4U эти окна тоже гасит, но НЕ лечит класс — тот же скрипт из живой сессии (источник №1) снова мигает. Корень чинится в коде: creationflags=subprocess.CREATE_NO_WINDOW if os.name == "nt" else 0 на каждый subprocess.run консольного exe. Починено в fleet_sign.py 10.08 (LAPTOP-1), selftest PASS; файл разъезжается синком, но проверяй на узле фактом (§7.3-бис).

2. Порядок работы

Шаг 1 — ДИАГНОЗ (0 токенов, ничего не меняет)

powershell -NoProfile -ExecutionPolicy Bypass -File "%USERPROFILE%\.claude\scripts\windowless_audit.ps1"

Даёт: сколько активных Interactive, сколько ЧАСТЫХ (тикают чаще раза в час — именно они дают ощущение «постоянно»), оценку вспышек/час, жив ли скрыватель, состояние портов MCP 8765-8768 и какие сторожа мигают. Последняя строка ИТОГ ... — машинная, для сводки.

⛔ Не выноси вердикт «виноват X» без строки из аудита или лога (§5.4 причина = такой же claim, как вывод).

Шаг 2 — СКРЫВАТЕЛЬ (обратимо, без UAC, делаю САМ)

Если аудит говорит hider_alive=False или hider_autostart=False:

  1. Проверить ~/.claude/scripts/console_hider.ps1 на диске.
  2. Положить в автозапуск console-hider.vbs (запуск через wscript, WindowStyle 0).
  3. Запустить сразу, не ждать перезагрузки.
  4. Доказать: _console_hider_log.txt должен получить строки hide#N [hook] <класс>. Журнала нет = скрыватель не доказан, вердикт максимум ⚠️.

⚠️ Он прячет ВСЕ окна Windows Terminal. Если оператор узла пользуется терминалом руками — скрыватель ему не ставить (Антон CLI не пользуется, §2.4).

Шаг 3 — ФЛИП В S4U (нужен ОДИН клик UAC оператора)

%USERPROFILE%\.claude\scripts\fix_windowless.cmd

Скрипт сам себя элевирует, сам находит кандидатов, сам себя проверяет (сначала одна пробная задача — если она под S4U упала, всё откатывается и батч не идёт), пишет список изменённого в _windowless_flipped.txt. Откат: revert_windowless.cmd.

Кого он НЕ трогает и почему:

  • задачи, лезущие на подключённые диски ([путь владельца] гугл-драйв) — в session 0 этих дисков нет;
  • desktop-needers по регексу: chrome/firefox/selenium/playwright/computer-use/скриншоты/ буфер обмена/git-daemon (у git-демона в session 0 ломаются LISTEN-сокеты, проверено 03-04.07);
  • системные задачи Microsoft — под \Microsoft\ скрипт не ходит.

⚠️ Смена LogonType требует администратора — это единственное место, где нужны руки оператора (§4.1: истинный блок, не рутина). Регистрация НОВОЙ задачи сразу с S4U из неэлевированного шелла тоже упадёт (0x[id]) → ставь новую задачу Interactive, потом флипай пачкой ([[s4u-needs-uac-preregister-interactive]]).

Шаг 4 — ПЕРЕПРОГОН И ДОКАЗАТЕЛЬСТВО

Повторить Шаг 1. Годный результат: frequent=0, flashes_per_hour=0, hider_alive=True. В отчёт Антону — цифра до → после, а не «починил».

Шаг 5 — ОСТАТКИ

Оставшиеся Interactive — назвать поимённо и сказать, почему они там законны (редкие / нужен десктоп). Молча оставлять нельзя. Если среди них есть частый — это баг отбора, разбирайся, а не списывай.

3. Грабли (замерены, не выдуманы)

  1. Самосовпадение grep. Get-CimInstance Win32_Process | ? CommandLine -match 'console_hider' поймает ТВОЙ ЖЕ процесс — паттерн лежит в твоей командной строке. Собирай строку из кусков ('console' + '_hider') и исключай $PID, иначе получишь ложное «скрыватель жив».
  2. UTF-8 без BOM. PowerShell 5.1 читает такой файл как ANSI → кириллица превращается в мусор и скрипт не парсится. Сохранять .ps1 с кириллицей с BOM ([Text.UTF8Encoding]::new($true)).
  3. Хардкод пути пользователя. В console_hider.ps1 был зашит журнал [путь владельца] — на другом узле он молча не писался, и «работает ли» доказать было нечем. Все пути — от %USERPROFILE% (§10.3).
  4. Отключённые задачи в счёте. Get-ScheduledTask без фильтра State -ne 'Disabled' даёт завышенную цифру (на хабе 107 против реальных 45). Interactive + Disabled окон не даёт.
  5. conhost --headless не работает — ошибка 4320, полезная нагрузка не стартует. Не использовать.
  6. Скрыватель гасит ПОСЛЕ показа — возможен блик в один кадр. Полный ноль даёт только S4U (или WSL, отклонён Антоном).

4. Флот

Прогонять на КАЖДОМ Windows-узле (хаб, [машина флота], машины коллег). Mac/Linux не касается. Движки лежат в ~/.claude/scripts и разъезжаются синком, но флип требует локального клика UAC на каждой машине — доставка ≠ применение (§7.3-бис). Готово = аудит на узле показал flashes_per_hour=0, а не «отправил посылку».

5. Связанное

Память: [[black-windows-root-claude-code]] (корень и три слоя), [[hub-tasks-s4u-windowless]] (история флипа, mapped-drive карв-аут), [[s4u-needs-uac-preregister-interactive]] (почему UAC), [[deterministic-script-gotchas]] (BOM, хардкоды). Канон: §5.5 сторож не живёт в том, что сторожит · §7.3-бис раскатка на весь флот · §2.4 глазами.

<!--kit-footer-->

Like this skill? It is one of 100 in second-brain-starter-kit: the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with npx skills add tonydzi/second-brain-starter-kit. Everything is open source and free, so take what you need.

Flagships worth a look on their own: secondop-panel (a second opinion from a panel of external models), claude-memory-tidy (stop your agent's memory from rotting), telegram-mcp-kit (your own Telegram over MCP in about 15 minutes).

Author: Anton Dziatkovskii, Palo Alto AI Research Lab. Telegram @tonydzi - WhatsApp +1 341 222 9178 - X @Tony_Stef_

Engineers: want to test-drive this setup? Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

03

免费

Run an autonomous consensus round between agent peers on several machines: they negotiate a decision over a shared channel and execute it without a human relaying messages. Use when multiple machines must agree on a change. Triggers: "/03", "work it out among yourselves", "find consensus". Wakes the human only for irreversible actions or a deadlock.

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

1

免费

Recover a session after a hard crash (app died, machine rebooted, context lost mid-work): replay the turn-state ledger for the last requests, files and decisions, run a green/red health ping over the system map, file sync and MCP connectors, then rebuild the previous session history for pickup. Triggers: "/1", "resume after crash", "wake".

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

agenda

免费

Show the operator's day: today's calendar plus what needs them personally (leads due, people awaiting a reply, deadlines), pulled from Calendar and Telegram and ranked. Read-only: sends and commits nothing. Triggers: "/agenda", "what's on today", "my agenda".

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

ai-slop

免费

Rewrite machine-written text so it reads like a busy human wrote it: cut 50-70%, break the even rhythm, drop AI-tell words and filler, keep facts and protected terms. Use before publishing any post, reply or email drafted by a model. Triggers: /ai-slop, /slop, humanize, anti-slop, make it shorter and alive.

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

Decision protocol for strategic work: recall the knowledge vault, run a gap analysis, emit a deep-research prompt for external tools, then synthesize the returned reports into a decision memo. Use before any new product, feature, market, pricing, GTM or architecture call, where local recall alone is not enough. Triggers: "/alfa-search-recall-deepresearch", "alpha protocol", "R+DR".

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

- КРЕДИТ АВТОРУ ИДЕИ: совет из комментария (TG @ClawRus / @ClawInga, комменты под постами Антона в FB, треды и issue на… Триггеры: “/alpha-credit“, “/credit“, “кто нам это посоветовал“, “запиши совет“, “поблагодари советчиков“, “кому мы должны спасибо“, “кредит автору“, “чей это был совет“, “credit the author“

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

查看 tonydzi 的全部技能

报告此技能的问题