🔴🔴 ОПРОВЕРГНУТО 10.09.2026 13:45 — ЧИТАЙ ПЕРЕД ИСПОЛНЕНИЕМ.
Замер по логу приложения (%LOCALAPPDATA%\Claude\Logs\main.log, 07-10.09):
планировщик поднял 51 сессию, Remote Control получили из них 0.
Приложение включает RC только на трёх UI-событиях — first_turn, warm_send,
cold_resume (строка [rcAutoEnable] verdict: ... trigger=<X>), и сессия,
рождённая scheduled-task, ни одного из них не вызывает.
⇒ Ежедневная пустая сессия по крону телефоном НЕ управляется. Ставить её как
«пульт» больше нельзя — это ложная зелень второго рода.
✅ Что теперь верно: cold_resume РАБОТАЕТ, значит любая сессия, открытая
Антоном на десктопе одним кликом, становится управляемой с телефона.
Отдельный пульт не нужен, нужен один клик. Подробности: память
remote-control-always-on §Опровержение 10.09.
📱 Пульт — свежая сессия под телефон, каждый день, на каждом узле
Приказ Антона 09.09.2026 (голосом 00:15 + 07:49) и подтверждение 10.09.2026 («и хаб, и оба моих ноутбука — по одной такой сессии в сутки»).
Корень, ради которого это существует ([[remote-control-always-on]], доказано main.log 18.08): RC-мост по-сессионный и рождается ТОЛЬКО в момент старта нового процесса сессии. Резюм старой сессии моста НЕ поднимает — на телефоне «Disconnected», тап её не будит.
Значит управляемая сессия = ВСЕГДА свежерождённая. С телефона создать новую нельзя ⇒ её обязана рождать рутина.
Дешевизна — часть контракта. Пульт стоит ~0 токенов: ставит имя, роняет одну строку, молчит. Любая инициатива в пультовой сессии = дефект.
Шаг 1 — статус текущего узла (детерминированно, 0 токенов)
python ~/.claude/scripts/pult_status.py
exit 0 = пульт ЖИВ (есть в расписании) → Шаг 3. exit 1/2 → Шаг 2. exit 3 = реестр приложения не найден, прибор себя не доказал — молчи о данных, разбирайся с прибором.
⛔ ls ~/.claude/scheduled-tasks/ доказательством НЕ является. Эта папка синкается между узлами через claude-config, а РЕГИСТРАЦИЯ расписания — локальная, в реестре аккаунта приложения (scheduled-tasks.json, поле записи id, не taskId). Замер 10.09.2026: на хабе папка лежала, записи в реестре не было — пульт по утрам не вставал, а глазами выглядел стоящим. Это ложная зелень, ровно [[instrument-is-a-claim-too]].
Шаг 2 — поставить пульт на ЭТОМ узле
create_scheduled_task со строго такими полями:
taskId: rc-cockpit-anton-daily (имя ОДНО на весь флот — так fleet-проверка ищет его одной строкой)
schedule: cron ежедневно 08:44 локального времени узла (диспетчер сдвигает на ~+4 мин, это норма)
notifyOnCompletion: false — пульт не должен пищать Антону каждое утро
description: 📱 Пустая сессия-пульт: Remote Control с телефона
prompt — САМОДОСТАТОЧНЫЙ (сессия стартует без контекста родителя), тело ниже.
Тело промпта (подставь имя узла вместо <УЗЕЛ> — короткое, как Антон его называет: ZBook / Хаб / MacBook):
ПЕРВЫМ ДЕЛОМ переименуй эту сессию: вызови mcp__ccd_session_mgmt__set_session_title
с title "[Антон] 📱 Пульт <УЗЕЛ> <ДД.ММ сегодняшняя дата>".
Ты — ПУСТАЯ сессия-пульт для Антона. Твоя работа — стоить ноль токенов и ждать.
После переименования сделай РОВНО одно: ответь одной строкой по-русски
"📱 Пульт готов, жду команду с телефона. Антон, ответь любым словом." и остановись.
Больше НИЧЕГО: не читай инбокс, не запускай скрипты, не шли в шину и Telegram,
не строй дашборды, не делай ретро, не делай RECALL, без ELI5-блока.
Никаких инициатив до первого сообщения Антона.
Когда Антон напишет — работай как обычная сессия по CLAUDE.md.
⛔ Модель задать нельзя — планировщик её не принимает, Антон переключает сам (его дефолт «opus medium»). Не выдумывай поле.
⛔ Из РУТИННОЙ сессии create_scheduled_task не звать (CLAUDE.md §9.2): в безлюдном прогоне апрув-окно некому нажать, сессия виснет. Пульт ставится из ЖИВОЙ сессии либо через сид spawn_queue.py.
Сразу после создания — объяви выход (§5.5), иначе рутина считается немой:
python -c "import json; p=r'[путь владельца]'; d=json.load(open(p,encoding='utf-8')); d['exempt']['rc-cockpit-anton-daily']='пульт по построению молчит: выход = сама живая сессия-пульт, потребитель = Антон с телефона (RC-мост); проверка = sessions_now.py утром'; json.dump(d,open(p,'w',encoding='utf-8'),ensure_ascii=False,indent=1); print('exempt записан')"
⚠️ Грабля 10.09 (хаб): green_gap.py exempt <id> --reason НЕ существует — движок лежит в scripts/_shared/green_gap.py и субкоманды exempt не имеет (печатает подсказку и выходит). Причина пишется строкой прямо в green_gap_exempt.json (ключ в объекте exempt), команда выше делает ровно это.
: # (историческая строка удалена — не звать green_gap.py exempt)
Шаг 3 — статус по ФЛОТУ (узлы Антона с приложением Claude)
Пульт нужен на трёх узлах: ZBook · Хаб [машина флота] · [машина флота].
[машина флота] (Якорь, Linux VPS) — приложения нет, пульт неприменим, это законный skip.
Узлы [коллега] и [коллега] — не пульт Антона, не трогаем.
# хаб — прибором, не наличием папки
python ~/.claude/scripts/hubrun.py --cmd 'python "$env:USERPROFILE\.claude\scripts\pult_status.py"'
[машина флота] по ssh недоступен (Remote Login выключен — замер 10.09, таймаут порта 22). Единственная дверь к нему = шина, ставит сессия НА САМОМ Mac (§7.2: пир своё делает у себя). Строку ниже про bus_send — использовать сразу, не искать ssh.
Узел молчит/недоступен → НЕ молчать: TASK в шину dual-send, чтобы поставила сессия НА ТОМ узле (§7.2 — пир своё ставит у себя):
python ~/.claude/scripts/bus_send.py <MACHINE_KEY> "TASK: поставь у себя ежедневный пульт — скилл /pult Шаг 2. Проверка ФАКТОМ: python ~/.claude/scripts/pult_status.py. Причина: Антон управляет узлом с телефона, RC живёт только у свежей сессии."
Шаг 4 — хвост «вторые аккаунты»
Задача живёт в реестре ТОГО аккаунта приложения, из-под которого создана. У Антона на узлах бывает второй аккаунт (BB / a@) — там пульта НЕТ, пока не создашь из сессии этого аккаунта. Не закрывай вопрос словом «стоит на узле», если аккаунтов два: назови, в каком именно стоит.
Шаг 5 — вердикт о скилле (§9.3-бис, обязателен)
Одной строкой: 🔧 обновляю (что споткнулось + чиню тем же заходом) · 📝 обновлю не сейчас (причина + куда легла строка) · ✅ не надо (почему именно). Пустое «не надо» вердиктом не является.
Проверка живости (что считать доказательством)
«Задача создана» ≠ «пульт работает». Доказательство = Антон открыл сессию с телефона и она ответила (канарейка 17.08 13:19–14:03 — так и доказали). Прибор постфактум:
python ~/.claude/scripts/sessions_now.py # свежая "[Антон] 📱 Пульт ..." в списке = утро прошло штатно
Канон: память [[remote-control-always-on]] · CLAUDE.md §4.1 (человек = бутылочное горлышко), §9.2 (рождение сессий), §5.5 (рутина называет свой выход).
Грабли, проверенные на живых данных (не повторяй)
bus_send.py — аргументы ПОЗИЦИОННЫЕ (bus_send.py <MACHINE_KEY> "текст"), флагов --to/--text нет.
- Тело задачи для робота обязано начинаться с
TASK: — с двоеточием. Гейт шины отбивает «TASK » без двоеточия: инбокс-робот такое не берёт, сообщение молча теряется как задача.
- Реестр задач:
%APPDATA%/Claude/claude-code-sessions/<org>/<acct>/scheduled-tasks.json (Win), ~/Library/Application Support/Claude/... (macOS). Ключ записи — id.
- Модели у задачи нет: планировщик поле не принимает, Антон переключает вручную.
<!--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.