Wake Lock
SnakeFlow може блокувати перехід ОС у сон (і за бажання тримати монітор увімкненим), поки ви активно працюєте в редакторі або поки працює Quality Hub. Використовуються системні API (SetThreadExecutionState у Windows, caffeinate у macOS, systemd-inhibit у Linux).
Wake Lock не пов’язаний з обліком часу в Team Tracker →: трекер має власну двофакторну логіку (ActivityWatch + простій системи + фокус IDE) і не вважає «утримується wake lock» доказом роботи людини.
Два незалежні утримувачі
| Утримувач | Коли працює | Як накладається |
|---|---|---|
| Трекер активності | Перемикач у статус-барі ON (за замовчуванням) + devManager.wakeLock.enabled | Підписується на події редактора; викликає acquire('Activity') лише поки остання активність у межах idleThresholdSeconds. |
| Quality Hub | devManager.wakeLock.autoActivate + головний enabled | Окремий acquire('Quality Hub') на час повного прогону перевірок (незалежно від перемикача трекера). |
Обидва використовують один менеджер з лічильником посилань: якщо Quality Hub працює одночасно з трекером активності, refCount дорівнює 2, доки кожен шлях не відпустить лок. У підказці статус-бару показуються refCount і як довго триває поточне безперервне утримання, коли лок активний.
Що вважається «активністю»
Трекер активності не тримає лок усю тривалість VS Code task чи debug-сесії. onDidStartTask / onDidEndTask і старт/завершення дебагу лише оновлюють «годинник» активності — це сигнали, а не якорі. Довгограючий dev-сервер без нових сигналів відпускає лок після idleThresholdSeconds (за замовчуванням 120 с) тиші.
Події, що оновлюють годинник (із фільтрами):
- Правки тексту в реальних документах (
onDidChangeTextDocument) — схемиoutput,vscode-scm,git,vscodeігноруються. - Збереження (
onDidSaveTextDocument). - Виділення / курсор у редакторі (з debounce).
- Старт / кінець task — один імпульс на подію, а не «тримаємо доки task живий».
- Старт / завершення debug-сесії — те саме.
- Старт / кінець виконання команди в терміналі (якщо API VS Code доступний) — реальні запуски; не відкриття/закриття терміналу, фокус, зміна розміру (ці події прибрані як шумні).
Не прив’язано до Wake Lock: фаза «думає» в AI-чаті без правок файлів, пасивні file watchers без змін у документі, просто запущений сервер без перелічених сигналів.
Якщо треба тримати ПК уві час довгих фаз чату без edits — збільшіть devManager.wakeLock.idleThresholdSeconds (наприклад 300–600): Усі параметри →.
Довгограючі задачі та сон
Раніше будь-який запущений task міг тримати лок назавжди. Це виправлено: vite / watch без onDidEndTask більше не блокує сон після порогу простою.
Нюанс: якщо watcher пише файли під звичайним file:// у workspace, ці зміни все одно рахуються як активність (як правки агента). Шумні дерева краще не тримати в тому ж корені або збільшити поріг простою.
Попередження про довге утримання
devManager.wakeLock.maxHoldHours (за замовчуванням 4, 0 = вимкнено): якщо refCount лишається більше нуля безперервно довше за вказаний час — у лог пишеться попередження, можливе повідомлення з кнопками Release now / Show log. Примусового зняття немає (валідний дуже довгий прогін Quality Hub може перевищити ліміт).
Допомагає виявити витоки (завислий helper, шлях без release).
Файл логу
devManager.wakeLock.persistLog (за замовчуванням false): за увімкнення та наявності папки workspace рядки з каналу SnakeFlow: Wake Lock дублюються у:
<workspace>/.vscode/snakeflow-wakelock.log або <workspace>/.cursor/snakeflow-wakelock.log
залежно від IDE. Файл ротується після 1 МБ (попередній вміст → snakeflow-wakelock.log.1).
Діагностика
- Command Palette →
SnakeFlow: Wake Lock — Diagnose— стан менеджера,refCount, прапор активності, підказки ОС (наприкладpowercfg, де доступно). У Windowspowercfg /requestsчасто потребує підвищених прав для повного виводу. - Елемент статус-бару Wake: коли лок активний (
Awake), підказка показує refCount і тривалість утримання.
Швидкий довідник параметрів
Повні таблиці: Усі параметри → Wake Lock.
| Ключ | Роль |
|---|---|
devManager.wakeLock.enabled | Головний перемикач; якщо false — трекер активності та Quality Hub не отримують лок. |
devManager.wakeLock.autoActivate | Утримувати лок під час прогонів Quality Hub. |
devManager.wakeLock.idleThresholdSeconds | Простій редактора перед звільненням активнісного лока. |
devManager.wakeLock.keepDisplayAwake | Також тримати монітор (Windows ES_DISPLAY_REQUIRED; на частині Linux конфігурацій дисплей не блокується). |
devManager.wakeLock.maxHoldHours | Довге безперервне утримання → попередження. |
devManager.wakeLock.persistLog | Дзеркалити лог у snakeflow-wakelock.log. |
devManager.wakeLock.readyTimeoutMs / startRetries | Налаштування запуску helper-процесу. |
Див. також
- Team Tracker → — двофакторна активність, інтервал сну, ActivityWatch
- Quality Hub → — прогін перевірок, built-in, CLI
- Усі параметри →
- Довідник команд →