Codync
免費、開源的 1:1 替代方案,取代 Grok Bot 與 Muse。從 iPhone、Mac 或 Linux 桌面將 Claude Code、Codex、Cursor 與 40+ 程式碼代理人作為持續機器人傳訊。群組聊天、主題串…
AI 翻譯
Статус ИИ-агентов (Claude Code, OpenCode и других) на RGB-подсветке через OpenRGB
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Трей-сервис: показывает подсветкой RGB-устройств (видеокарта, лента, мышь — всё, чем управляет OpenRGB), что делают ИИ-агенты на компьютере. Глянул на подсветку — понял, нужно ли разворачивать окно: агент работает, закончил, задал вопрос, ждёт разрешения или упёрся в ошибку.
Работает с Claude Code из коробки, а любое другое приложение подключается без кода — одним HTTP-запросом (раздел «Как подключить приложение»). Подсветка одна на всех: цвета и эффекты задаются на статус, а не на приложение, поэтому «Ошибка» выглядит одинаково, кто бы её ни вызвал.
Актуальная версия — на странице Releases, что изменилось — в истории версий. До версии 2.0 программа называлась ClaudeGlow и умела только Claude Code.
Claude Code — в терминале, в десктопном приложении (вкладка Code) и в расширениях редакторов, везде, где он читает
~/.claude/settings.json.
6742). Удобнее всего — службой Windows или с ключом --server в автозапуске.AgentGlowSetup.exe со страницы последней версии, запусти и
подтверди окно UAC.C:\Program Files\AgentGlow) и галочку Claude Code: прописать хуки —
установщик добавит хуки AgentGlow в ~/.claude/settings.json, ничего другого в файле не меняя (копия файла перед
каждой правкой — settings.json.claudeglow.bak). Снял отметку при повторной установке — хуки снимаются.Снял галочку — Claude Code выключен целиком: хуки не прописаны, события не принимаются; включить можно повторной
установкой с галочкой. Если хуки пропали из settings.json при включённом Claude Code, в меню трея появится «Claude Code
не подключён — подключить».
В установщике есть галочка «Отправлять автору отчёты о сбоях», по умолчанию она выключена.
%LOCALAPPDATA%\AgentGlow\log.txt: имя пользователя и домена Windows (строка запуска), названия событий и
инструментов агентов, короткие номера сессий и процессов, названия приложений и статусы, присланные на /status,
пути к программе, её данным, настройкам Claude Code и скачанному обновлению, тексты ошибок программы, названия
RGB-устройств. Тексты запросов, ответы и код агентов в журнал не попадают. Сервер записывает
IP-адрес, с которого пришёл отчёт.https://aokazantsev.ru/pets/agentglow/crash-report, сервер в России. Отчёты видит только автор,
хранятся последние 50 МБ — при поступлении новых самые старые удаляются. Подробности — в
политике обработки данных.В установщике есть галочка «Отправлять автору анонимную статистику использования», по умолчанию она включена: по статистике автор видит, сколько людей пользуется программой и какие функции нужны, а какие нет. Выключить можно в установщике или в любой момент в «Настройках…».
%LOCALAPPDATA%\AgentGlow\usage-id.txt), версия программы и Windows, сколько раз за сутки программа
запускалась, сама находила новую версию и сама перезапускала службу OpenRGB, сколько раз использовались пункты
меню трея, двойной клик по значку, настройки и кнопка «Проверить», уведомления, проверка и установка обновления,
сколько событий за сутки пришло от Claude Code и от других приложений — только число, без содержимого. И текущие
настройки: какие источники включены, автозапуск, проверка обновлений, отчёты о сбоях, пауза индикации, сколько
RGB-устройств видно и сколько держат постоянный свет, эффект статуса «Нет активных сессий», менялись ли эффекты
статусов, стоит ли OpenRGB службой. Имена пользователя и компьютера, пути, названия проектов, сессий и
RGB-устройств, тексты агентов и адреса в статистику не попадают.https://aokazantsev.ru/pets/agentglow/usage, сервер в России. IP-адрес сервер в статистике не хранит.
Статистика хранится 400 суток, дальше — только итоги по дням без номеров установок. Подробности — в
политике обработки данных.Раз в сутки программа сама проверяет, вышла ли новая версия, и показывает уведомление в трее (подсветку оно не трогает); клик по нему открывает окно обновления. Нет новой версии или проверка не удалась — уведомления нет, строка уходит в журнал. Выключается галочкой «Раз в сутки проверять обновление и сообщать о новой версии» в настройках.
Трей → «Проверить обновление…». Есть версия новее — установщик скачивается в отдельную папку в «Загрузках»
(AgentGlow-<версия>) и сверяется с контрольной суммой SHA-256, которую GitHub публикует для файла релиза; не
совпала — файл удаляется. Если GitHub не опубликовал сумму, окно так и скажет: файл не сверен. Кнопка «Установить сейчас» запускает установщик (Windows спросит права администратора),
в нём нажми «Установить»: новая версия встанет поверх текущей, удалять старую не нужно, настройки сохранятся. Путь к файлу и кнопка «Открыть
папку» остаются в окне. Если сбой вызван настройками, в установщике есть галочка «Сбросить настройки». После
обновления перезапусти Claude Code, если в версии менялись хуки.
«Параметры → Приложения → AgentGlow → Удалить» или Uninstall.exe в папке программы. Программа
закрывается сама; снимаются хуки AgentGlow из настроек Claude Code (чужие хуки не трогаются), удаляются программа, настройки,
журнал, автозапуск, задача перезапуска OpenRGB и запись в «Приложениях». Из папки программы удаляются только её
файлы: чужие файлы остаются, и тогда остаётся сама папка.
AgentGlowSetup.exe из папки, где нет посторонних
файлов; «Проверить обновление…» для этого кладёт установщик в отдельную папку.Для каждого статуса — эффект, цвет и скорость, кнопка «Проверить» показывает эффект 5 секунд. Настройки общие
для всех приложений. Ниже — какие устройства участвуют в индикации и какие держат постоянный свет, таймауты, порт,
автозапуск OpenRGB и галочки «Раз в сутки проверять обновление и сообщать о новой версии» и «Отправлять автору
анонимную статистику использования». Эти две галочки хранятся не в settings.txt, а файлами-отметками в
%LOCALAPPDATA%\AgentGlow: update-check-off.txt (есть файл — проверка выключена) и usage-statistics.txt (on —
статистика отправляется, off или нет файла — нет).
Какие источники событий включены — ключ sources в settings.txt (claude,generic); его выставляет
установщик. Выключенный источник не принимает события и не показывает проблем в трее.
Программа слушает один порт 127.0.0.1:47651 и раскладывает запросы по адресу на источники:
| Адрес | Источник | Кто шлёт |
|---|---|---|
/hook | Claude Code | HTTP-хуки Claude Code (type: "http") из ~/.claude/settings.json |
/status | другие приложения | всё, что умеет отправить HTTP-запрос |
Все пути принимаются только с заголовком Host 127.0.0.1:<порт> или localhost:<порт>. /hook отклоняет
запросы с заголовком Origin, который браузер ставит на запросы веб-страниц, а /status принимает только запросы
с заголовком X-AgentGlow: 1 — страница не может его поставить без разрешения программы. Поэтому обычная
веб-страница в браузере подсветку дёрнуть не может. Размер запроса ограничен: 64 КБ для
/status, 64 МБ для /hook (хуки Claude Code несут содержимое файлов). У каждого источника не более 200 тредов
одновременно: новый вытесняет тот, что дольше всех молчит.
Каждый источник ведёт свои треды (сессии) и приводит их состояние к общему набору статусов. Итоговый цвет — самый важный статус среди всех тредов всех источников.
Подсветкой управляет OpenRGB через SDK-сервер (127.0.0.1:6742, протокол версии 3).
| Статус | Claude Code | Другие приложения (/status) | По умолчанию |
|---|---|---|---|
| Ошибка | StopFailure (ошибка API, лимит, сеть) | error | бегущая строка, красный, скорость 4 |
| Нужно разрешение | Notification / permission_prompt | permission | бегущая строка, пурпурный #FF00FF, 4 |
| Задал вопрос | PreToolUse для AskUserQuestion, elicitation_dialog, ход закончен вопросом в десктопном приложении | question | бегущая строка, оранжевый, 4 |
| Закончил, жду больше минуты | «Закончил» дольше 60 с (свой таймер) | то же | плавная пульсация, зелёный, 1 |
| Закончил | Stop | done | ровный зелёный |
| Работаю | UserPromptSubmit, PostToolUse, фоновые задачи | working | ровный синий |
| Нет активных сессий | ни одного живого треда | то же | выключено |
Закончил + Работаю. Если самый важный статус — «Закончил» (или «жду больше минуты»), а другой тред — любого приложения — при этом работает, карта делится: первая половина светодиодов — цвет «Закончил», вторая — цвет «Работаю», ровным светом. Значок в трее тоже делится пополам. Статусы, требующие тебя (ошибка, разрешение, вопрос), по-прежнему занимают всю карту. Деление работает, если у обоих статусов эффект с цветом и у устройства есть режим Static с цветом на каждый диод.
Когда гаснет «Нужно разрешение». События «разрешил» у Claude Code нет, а PostToolUse приходит
только после завершения команды — для долгой сборки это минуты. Поэтому, пока горит «Нужно разрешение»,
программа раз в секунду смотрит на процесс треда и узнаёт запущенную команду.
Bash: среди оболочек, запущенных треду после запроса, ищется та, в командной строке которой стоит
текст спрошенной команды (... && eval '<команда>'). Нашлась — разрешил, статус «Работаю». Работа соседних
агентов не мешает: их команды другие. Текст команды хранится только в памяти, в журнал и в sessions.txt
не попадает.bash, sh, powershell, pwsh, cmd) после
запроса — значит, команда пошла. Оболочка не говорит, чья она: если спросить мог не один исполнитель или за
5 минут до запроса и после него работали другие агенты, эта проверка отключается, и статус снимается только
событием самого вызова (PostToolUse, PostToolUseFailure, PermissionDenied).Отказ ловится хуком PermissionDenied. Инструменты без дочернего процесса (правка файлов) и так завершаются
за доли секунды. Без открытого разрешения проверка идёт раз в 5 с, как у других источников.
Вопросы и разрешения при работающих агентах. Тред может задать вопрос или ждать разрешения и
параллельно работать: агенты продолжают читать файлы и запускать команды. Их события приходят с тем же
session_id, но с полем agent_id. Поэтому «нужен ты» запоминается за исполнителем — основным тредом
или конкретным агентом — и снимается только его же событием: ответом на вопрос, следующим действием,
отказом (PermissionDenied), запуском разрешённой команды, а для основного треда ещё новым промптом и
концом хода (кроме вопроса в конце хода, см. ниже). Работа других агентов вопрос не сбивает. Исключение — вопрос агента (AskUserQuestion с
agent_id): он снимается и любым действием основного треда. Фоновый или служебный агент может вызвать вопрос, который
Claude Code не показывает и о результате которого не сообщает; раз основной тред продолжает работу, такой вопрос его не
держит.
Запрос разрешения (Notification / permission_prompt) приходит без agent_id и без номера вызова,
даже когда спрашивает агент. Кто спросил, программа узнаёт из хука PermissionRequest: он приходит
перед каждой проверкой разрешения, с agent_id, но без tool_use_id; вызов узнаётся по агенту,
инструменту и tool_input — они совпадают с PostToolUse того же вызова. Исключение — AskUserQuestion: в его
PostToolUse к tool_input добавлены ответы, поэтому его проверка разрешения не запоминается, а уведомление о
разрешении во время открытого вопроса не перебивает «Задал вопрос». Незавершённые вызовы, проверка которых
началась за последнюю минуту, — кандидаты; «Нужно разрешение» горит, пока не завершится или не будет
отклонён каждый из них.
Вопрос в конце хода. В десктопном приложении тред может закончить ход вопросом в блоке «следующий шаг» и ждать
ответа: например, попросить переключить модель или подтвердить публикацию. Это вызов mcp__ccd_turn__wrap_up с
вопросом (ask) или с blocked: true: кнопки в блоке ждут тебя, даже если тред не пометил ход как блокирующий. Его
PostToolUse зажигает «Задал вопрос», и Stop того же хода статус не снимает, даже если после
вопроса тред ещё вызывал инструменты: каждый следующий инструмент до своего завершения идёт под «Задал вопрос», после
него до конца хода горит «Работаю». Гаснет
вопрос ответом пользователя, новым блоком «следующий шаг» без вопроса и без blocked, ошибкой хода или вместе с «Закончил» по
таймауту doneTimeoutMinutes, если ответа так и не было. Пока у треда идут фоновые задачи или ход прерван до конца,
«Закончил» нет, и вопрос по таймауту не гаснет; когда задачи закончатся и тред проснётся (ниже), таймаут считается
от конца этого хода.
Тред, ждущий ответа, может разбудить не пользователь, а приложение: завершилась фоновая задача, вернул результат
агент или другая сессия, пришло событие боковой сессии или проверки CI. Такое пробуждение вопрос не снимает: пока
тред работает, горит «Работаю», а в конце хода снова «Задал вопрос» — кнопка в блоке «следующий шаг» всё ещё ждёт
тебя. Новый блок «следующий шаг» в этом ходе заменяет прежний, как и в любом другом. Пробуждение узнаётся по тегу,
с которого начинается текст промпта или который идёт сразу за служебным блоком <system-reminder>:
<task-notification>, <agent-message …>, <side-sessions-event>, <ci-monitor-event>. Сам текст не сохраняется, в журнале у такого UserPromptSubmit стоит пометка wake. Такой
вопрос, в отличие от AskUserQuestion и запроса разрешения, переживает перезапуск программы. Ход, закончившийся без
вопроса, — по-прежнему «Закончил».
Механика держится на имени инструмента десктопного приложения, полях ask и blocked и началах текста пробуждений:
проверено 17–18.10.2026 (<task-notification>, <agent-message …> и <side-sessions-event> — на живых промптах
хука, <ci-monitor-event> добавлен по аналогии), при их переименовании такой ход снова покажется как «Закончил», а
пробуждение — как ответ. Плановое пробуждение (/loop) приходит текстом самого промпта без служебного тега и
считается ответом.
Фоновые задачи. Тред может закончить ход, оставив работать фоновые агенты, команды, воркфлоу или мониторы.
Claude Code перечисляет их в поле background_tasks события Stop: список не пустой — тред остаётся в «Работаю»,
таймаут «Работаю без событий» для него не действует. Задача закончилась — Claude будит тред новым промптом, тот
присылает новый Stop, уже с пустым списком, — «Закончил» (или «Задал вопрос», если тред ждал ответа, см.
«Вопрос в конце хода»). «Ошибка» снимается только новым промптом в этом треде.
Проверено в десктопном приложении (Claude Code 2.1.284): permission_prompt приходит ровно при показе
диалога разрешения; idle_prompt не приходит — поэтому «жду больше минуты» считает сама программа.
SessionEnd или завершился процесс claude.exe треда (проверка раз в 5 с по номеру и времени
старта процесса);ended или смерть процесса, если передан pid;workingTimeoutMinutes (30) → сброс;
«Закончил» дольше doneTimeoutMinutes (120, 0 — никогда) → сброс; любой тред без событий 12 ч → удаляется.Периодического «я жив» у Claude Code нет: тред, ждущий пользователя, молчит. Поэтому живость — по процессу, а не по тишине.
При выходе из программы, на паузе («Приостановить индикацию»), при завершении сеанса Windows и при удалении подсветка получает эффект статуса «Нет активных сессий» — по умолчанию она выключается. Хочешь вместо этого свою подсветку — выбери для «Нет активных сессий» эффект «Исходная подсветка»: программа при первом подключении к OpenRGB запоминает режим и цвета каждого устройства и вернёт их. Запомненное живёт в памяти процесса: если программу закрыли принудительно — Диспетчером задач, а также установщиком при обновлении и деинсталлятором при удалении, — подсветка остаётся в цвете последнего статуса, и при следующем запуске «исходной» станет он. Поправь цвет в OpenRGB и перезапусти программу.
Если ни от одного треда нет событий дольше darkAfterMinutes (30 минут, 0 — никогда; поле «Гасить, если ни от одного
треда нет событий» в настройках), подсветка гаснет, пока не придёт новое событие. Ошибку, запрос разрешения и вопрос
она не гасит.
Если программа завершилась аварийно, подсветка остаётся в последнем статусе до следующего запуска: убитый процесс ничего не успевает отправить в OpenRGB.
Устройства из списка «Постоянный свет» в индикации не участвуют: при каждом подключении к OpenRGB
программа ставит им один эффект (fixedDevices, fixedEffect в settings.txt). Пример — погасить
подсветку материнской платы: у некоторых контроллеров нет режима Off, тогда ставится Static с чёрным
цветом. Плата после перезагрузки возвращает свой сохранённый режим, поэтому держит её именно
AgentGlow; при выходе эти устройства не восстанавливаются. Тусклый нейтральный вместо
выключения — «Ровный цвет» и тёмно-серый, например #202020.
При пересканировании (подключили устройство, кнопка Rescan) OpenRGB меняет номера устройств и шлёт уведомление «список изменился». Программа проверяет его раз в 15 с, перечитывает список и заново применяет индикацию и постоянный свет. Новые устройства попадают в списки настроек.
Устройство, которого нет в OpenRGB, программа не видит: список поддерживаемого — на сайте OpenRGB.
Бегущая строка — программный эффект: лента погашена, по ней бежит яркий сегмент с затухающим хвостом в 5 диодов. Круг по скорости 1–5: 2,4 / 1,8 / 1,2 / 0,9 / 0,6 с.
Плавная пульсация — программный эффект: карта в режиме Direct, программа 25 раз в секунду меняет яркость по синусоиде от 100 % до 20 % — свет не гаснет. Период по скорости 1–5: 3,2 / 2,4 / 1,8 / 1,3 / 0,9 с. Таймер кадров (40 мс) работает только пока горит программный эффект.
Остальное — встроенные режимы контроллера (анимацию крутит сама карта, CPU не тратится). Встроенные Breathing и Flashing у некоторых контроллеров (например, ENE на видеокартах ASUS) гасят диоды полностью, поэтому по умолчанию не используются. Набор режимов и диапазон скорости у каждого устройства свои — OpenRGB отдаёт их сам. Уровень скорости 1–5 в настройках раскладывается линейно на диапазон устройства. Режима нет у устройства — берётся Static.
HKCU\...\Run\AgentGlow — включается галочкой в установщике, переключается в
трее. Программа работает без прав администратора, поэтому ключ Run, а не задача Планировщика.OpenRGB.exe --startminimized --server, если не может
подключиться и процесса OpenRGB нет (не чаще раза в минуту). Путь — openRgbPath в settings.txt.LightingService, MSI Mystic Light, iCUE и т.п.) лучше
отключить — иначе перебивают цвета.После переустановки драйвера видеокарты смена режима молча не работает. Симптом: бегущая строка
и пульсация горят (покадровая запись цветов проходит), а переход на ровный цвет не происходит —
подсветка замирает на последнем кадре. OpenRGB принимает команду смены режима, но активный режим
устройства не меняется, ошибок нет ни в одном журнале. Лечение — перезапустить службу из PowerShell
от администратора: Restart-Service OpenRGB. Программа переподключится сама.
Служба OpenRGB перестала отвечать. Симптом: подсветка замирает. OpenRGB принимает соединение, но не
отдаёт список устройств, а штатная остановка службы застревает в StopPending. Программа лечит это сама:
если служба OpenRGB не отвечает или не работает 30 секунд подряд, она перезапускает её и, когда та не
останавливается за 10 секунд, завершает её процесс. Перезапуск идёт через задачу Планировщика
«AgentGlow OpenRGB restart» с наивысшими правами: она запускает сам AgentGlow с ключом
/restart-openrgb, без окна консоли — её создаёт установщик, поэтому окна UAC нет. Не чаще раза в 10 минут. Пока
идёт перезапуск, значок в трее мигает, в подсказке и меню — «OpenRGB: перезапускаю службу…», в начале и в конце
приходит уведомление; каждый шаг — в журнале. Задачи нет (OpenRGB поставлен позже программы или учётная запись без
прав администратора) — приходит уведомление, по клику на него служба перезапускается через окно UAC. То же
вручную — пункт меню «Перезапустить службу OpenRGB» или PowerShell от администратора:
Stop-Process -Name OpenRGB -Force; Start-Service OpenRGB.
OpenRGB завис на одном устройстве. Симптом: значок в трее показывает верный статус, а видеокарта (или другое
устройство) горит прежним цветом; остальные устройства OpenRGB слушаются. OpenRGB отвечает на проверку связи, но не
отдаёт данные этого устройства и не выполняет команды для него, а остановка службы застревает в StopPending.
Поэтому проверка связи раз в 5 секунд запрашивает данные каждого устройства, которым управляет программа: не ответило
за 3 секунды — OpenRGB считается неотвечающим (в журнале — название устройства), дальше всё как в пункте выше.
Claude Code не шлёт события. Симптом: подсветка не реагирует на Claude Code. Проверь: в меню трея
«Claude Code: подключено»; Claude Code перезапущен после установки (хуки читаются при старте); в журнале нет строки
«порт … занят». Хуки действуют на все сессии Claude Code, поэтому программа не меняет в settings.json ничего,
кроме своих хуков.
Программа — в папке установки (по умолчанию C:\Program Files\AgentGlow), данные — в
%LOCALAPPDATA%\AgentGlow:
settings.txt — настройки (key=value, UTF-8). Не читается (занят другой программой, нет прав) — AgentGlow
стандартными настройками его не подменяет: ждёт около 30 секунд (при нехватке прав не ждёт) и закрывается с
сообщением, установщик отказывает.status-history.txt — история статусов: каждая смена статуса треда и того, что показывает подсветка, с причиной
(событие приложения, таймаут, завершение процесса, сброс), начало и конец каждого хода Claude Code, а также запуск и
выход программы. Треды Claude Code записаны первыми 8 символами номера, другие приложения — своим именем и номером
сессии из /status; события — названиями, без текстов. При 4 МБ переезжает в status-history.old.txt — этого
хватает на несколько недель. По нему работает сверка с транскриптами Claude Code (раздел «Сверка с транскриптами»).sessions.txt — статусы тредов Claude Code и признак вопроса в конце хода; переживают перезапуск
программы, при загрузке треды с завершившимся процессом отбрасываются.log.txt — журнал: запуск (версия, настройки, порт, интеграции, OpenRGB), события приложений (с префиксом
источника), связь с OpenRGB, ошибки, при падении — её полный текст (при 512 КБ переезжает в log.old.txt).openrgb-restart.txt — результат последнего перезапуска службы OpenRGB.usage-id.txt, usage-days.txt — номер установки и счётчики статистики использования за последнюю неделю;
update-check.txt — время последней автоматической проверки обновления; update-check-off.txt,
usage-statistics.txt, crash-reports-consent.txt — выбор проверки обновлений, статистики и отчётов о сбоях.Хуки — в ~\.claude\settings.json.
tools\reconcile.py (Python 3, без зависимостей) проверяет, правильно ли AgentGlow показывал треды Claude Code: восстанавливает по
транскриптам Claude Code (~\.claude\projects\*\*.jsonl) ожидаемый статус в ключевые моменты и сравнивает с
status-history.txt (для времени до появления истории — с log.txt).
python tools\reconcile.py --days 7 --out reconcile.md
| Проверка | Что ожидается |
|---|---|
| P | сообщение пользователя дошло до AgentGlow, после него — «Работаю»; пробуждение приложением помечено wake, ответ пользователя — нет |
| T | конец хода дошёл до AgentGlow, и сразу после него — «Задал вопрос», если ход закончен вопросом (ask или blocked), иначе «Закончил»; ход без вопроса с фоновыми задачами — «Работаю», пометка |
| A | пока открыт AskUserQuestion — «Задал вопрос» (или более важный статус) |
| E | «Ошибка» — рядом есть ошибка API в транскрипте |
| W | «Работаю» снят таймаутом — значит, конец хода не дошёл |
| I | прерывание по Esc: какой статус через минуту |
Отчёт — таблица по проверкам и список расхождений со ссылкой на строку транскрипта (у E и W — причина из истории). Расхождение — повод открыть транскрипт и решить, ошибка это AgentGlow, изменение в Claude Code или принятое ограничение.
Штатный csc .NET Framework 4.8, C# 5, без SDK и NuGet.
build.cmd nostart программа → AgentGlow.exe
build-installer.cmd программа, деинсталлятор и установщик → dist\AgentGlowSetup.exe
Без nostart скрипт запускает программу, и обёртка, вызвавшая .cmd, висит до её закрытия.
/statusЛюбое приложение, которое умеет выполнять команду или HTTP-запрос на свои события (хуки, скрипты, обёртка над
запуском), подключается запросом на /status:
Из PowerShell:
Invoke-RestMethod -Uri http://127.0.0.1:47651/status -Method Post -Headers @{ "X-AgentGlow" = "1" } -ContentType application/json -Body '{"app":"codex","session":"abc123","status":"working","project":"D:/work/demo","pid":1234}'
Из Git Bash (в PowerShell и cmd вызывай curl.exe, а кавычки в JSON экранируй):
curl -s -H "X-AgentGlow: 1" --data-binary '{"app":"codex","session":"abc123","status":"working","project":"D:/work/demo","pid":1234}' http://127.0.0.1:47651/status
| Поле | Что |
|---|---|
app | имя приложения; показывается в меню трея |
session | номер сессии: один тред — один номер |
status | working, done, question, permission, error или ended (закрыть тред) |
project | папка проекта (показывается только её имя); необязательно |
pid | номер процесса приложения; необязательно — по нему тред закрывается, когда процесс завершился |
Статусы те же, что и у остальных приложений, цвета и эффекты — общие. question, permission и error держатся
до следующего события этой сессии, поэтому передавай pid и шли ended, когда сессия закончилась: иначе
такой статус горит до закрытия треда по времени (12 часов) или до «Сбросить статусы сессий» в меню. Тред без
событий «Работаю» дольше workingTimeoutMinutes сбрасывается, «Закончил» — после doneTimeoutMinutes. Не более
200 тредов одновременно; переводы строк и прочие управляющие символы в полях заменяются пробелами.
Проверка без приложения — те же запросы руками:
printf '%s' '{"session_id":"t1","cwd":"D:/x","hook_event_name":"Notification","notification_type":"permission_prompt"}' | curl -s --data-binary @- http://127.0.0.1:47651/hook
Если у приложения хитрые события (как у Claude Code с агентами и разрешениями), заводится источник:
src\Sources\<Приложение>\: класс, реализующий IAgentSource (разбор события, список тредов, таймауты,
живость процессов, сохранение тредов), и при необходимости класс IIntegration (как прописать хуки или настройки приложения).SourceCatalog.All. Из каталога сами строятся галочка в установщике, шаг деинсталлятора, блок в меню
трея, ключ sources и префикс источника в журнале.GlowStatus): своих статусов и своих цветов у него нет.Адрес приёма (Route) источник выбирает себе сам; заголовок X-AgentGlow обязателен, если не задано RequiresMarker = false; источник без маркера отклоняет запросы с заголовком Origin (из браузера).
MIT — см. LICENSE.