Видеть состояние без переключения учётной записи Windows
Проекты распределены между двумя учётными записями Windows, и в каждой работает своя подписка Codex и своя копия репозитория. Подобное разделение помогает контролировать контекст и нагрузку, но добавляет повторяющуюся проверку: завершилась ли задача во второй сессии и сколько недельного лимита там осталось?
Панель должна отвечать на четыре вопроса:
- Завершилась ли задача во втором аккаунте?
- Сколько недельного лимита осталось на каждом аккаунте?
- Когда сбросится окно лимита?
- Насколько свежие данные отображаются на кнопке?
Основной контур не получает тексты промптов, ответы и локальные файлы второй учётной записи. Для индикатора достаточно агрегированного состояния.
Архитектура решения
Сборщик запускается внутри каждой Windows-сессии и читает локальные структурированные события. Во второй учётной записи bridge-процесс превращает их в небольшой JSON-снимок, а Dashboard writer проверяет оба снимка и готовит состояние кнопок Stream Deck.
Между учётными записями не передаются промпты, ответы, пути к проектам и учётные данные.
Граница решения
Это локальная интеграция, а не официальный публичный API Codex. Формат событий может измениться, поэтому парсер и набор проверок требуют небольшой кастомной разработки.
Минимальный контракт данных
Снимок хранит только поля, которые нужны для интерфейса, значения в примере синтетические.
{
"account": "work",
"limitId": "codex",
"weeklyRemainingPercent": 69,
"resetAt": 1786400000,
"status": "ACTIVE",
"activeTasks": 1,
"eventAt": 1786399000,
"publishedAt": 1786399005,
"health": "OK"
}
Поле limitId защищает от случайного чтения другого лимита. eventAt показывает время последнего события,
а publishedAt помогает определить, не остановился ли bridge.
Интерфейс не должен начать показывать неверные данные
Каждый снимок проходит проверку до отрисовки:
- имя учётной записи совпадает с ожидаемым;
limitIdравенcodex;- процент находится в диапазоне от 0 до 100;
- время сброса содержит корректную временную метку;
- возраст снимка не превышает 15 минут;
- число активных задач неотрицательное.
Если проверка не пройдена, кнопка становится серой и показывает N/A. Последнее успешное значение не маскируется под свежее.
Три состояния, которые быстро считываются
В учётной записи есть хотя бы одна незавершённая задача.
Открытых выполнений нет, можно запускать следующую задачу.
Снимок устарел, повреждён или не прошёл проверку.
Событие начала задачи открывает выполнение, а события завершения и прерывания закрывают его. Если одновременно работают несколько задач, то кнопка сохраняет общий статус, а поле activeTasks хранит их количество.
Разная частота обновления и самовосстановление
Лимит меняется небыстро, поэтому обычный интервал опроса составляет пять минут. Возле нуля, при временной недоступности источника и около времени сброса интервал сокращается до 30 секунд, а активность задач проверяется раз в пять секунд.
Сборщик читает хвост изменившихся файлов и хранит небольшой кэш. Снимки записываются атомарно, то есть временный файл заменяет предыдущий только после полной записи. Процессы запускаются через Планировщик заданий Windows и контролируются heartbeat-проверкой.
Негативные сценарии входят в обязательную проверку, включая повреждённый JSON, остановленный bridge, устаревший снимок, смену недельного окна, несколько параллельных задач и прерванное выполнение.
Нет необходимости переключаться между учётными записями Windows
Stream Deck убрал постоянные переходы во вторую Windows-сессию ради одной проверки завершённой задачи или лимита.
Этот принцип переносится на другие рабочие процессы. Если пользователь регулярно открывает систему только ради одного состояния, это состояние стоит вынести в отдельный постоянно видимый индикатор.
Юнифай Консалт
Разберём рабочий процесс и найдём подходящую точку автоматизации
Определим, где достаточно небольшого инструмента, а где нужен полноценный цифровой продукт.
Обсудить задачу
Обсудить задачу