Интеграция AI-агента
С 2.3.0 в MultiProg встроен IPC-мост, через который внешний AI-агент (Claude, Cursor, GLM, opencode или любой MCP-клиент) может управлять тем же Lua-движком, который крутит in-app Script Console. Агент кладёт файл-запрос в папку, MultiProg выполняет Lua и пишет файл-результат — всё в плоских JSON-файлах, без сокетов.
Это тот же mp.* API, что доступен в Script Console
(см. Scripting) — программирование, hex-буфер,
файлы, база таргетов, контрольные суммы.

Диалог Settings → AI Agent Integration с тумблером Enable, путём
к IPC-папке, строкой Auth token (Show / Copy / Regenerate) и кнопкой
Copy starter prompt for external agent.
Где включается
Settings → AI Agent Integration открывает диалог настройки.
Всё необходимое — там.
Диалог настроек
- Enable Agent IPC bridge — главный тумблер. Если выключен, файлы-запросы в папке игнорируются.
- IPC folder — папка, за которой следит MultiProg. По умолчанию — под пользовательским профилем; кнопки Browse…, Open folder и Copy path позволяют быстро направить агента в нужное место.
- Auth token — 64-символьный hex-токен на пользователя, обязательный в каждом запросе. Кнопки: Show / Hide, Copy, Regenerate. Регенерация отзывает любого клиента, который ещё держит старое значение.
- Copy starter prompt for external agent — генерирует готовый брифинг (пути, auth-токен, точки входа в протокол) и копирует в буфер обмена. Вставляете в агента, дописываете задачу, отправляете.
- Apply / Close — Apply переконфигурирует runner налету; перезапуск не нужен.
Токен лежит по пути %APPDATA%/KuragaTech/MultiProg/agent_token
(NTFS DACL — только текущий пользователь). Обращайтесь с ним как
с session secret — не коммитьте в исходники, не отдавайте обратно
в ответах агента.
CLI-флаги и переменные окружения
Есть два способа форс-включить мост снаружи GUI:
--agent-mode— флаг командной строки. Стартует MultiProg с включённым мостом на дефолтном пути IPC и с заблокированными по умолчанию деструктивными backend-операциями (write / erase / flash). Скрипту, которому нужно писать в железо, придётся явно разрешить черезmp.app.allow_hw_writes(true). В--agent-modeдиалог блокирует все контролы (показывает read-only баннер).MULTIPROG_AGENT_IPC_DIR— переменная окружения. Перекрывает путь к IPC-папке. Удобно для CI-пайплайнов. Поле пути в диалоге блокируется и показывает активное значение.
Приоритет переопределений (высший → низший):
--agent-mode > MULTIPROG_AGENT_IPC_DIR > сохранённые настройки
Что появляется в IPC-папке
Когда мост работает, MultiProg сам наполняет папку:
| Файл | Направление | Назначение |
|---|---|---|
AGENT_README.md | MP → агент | Главный справочник по протоколу. Перегенерируется при каждом запуске. Читать первым. |
agent_request.json | агент → MP | Следующий запрос к выполнению. Записать .tmp, затем переименовать — атомарная доставка. |
agent_result.json | MP → агент | Результат последнего запроса. |
agent_stream.log | MP → агент | Лайв-стрим mp.log.* для длинных скриптов (читайте tail'ом). |
agent_token | общий секрет | Per-user 64-hex auth-токен. Лежит в %APPDATA%/KuragaTech/MultiProg/, не в IPC-папке. |
session.lock | служебный | Защищает от гонки двух MultiProg на одной IPC-папке. |
Быстрый старт
- Открыть
Settings → AI Agent Integration. - Включить мост, выбрать (или принять) IPC-папку.
- Нажать Copy starter prompt for external agent.
- Вставить в AI-клиент (Claude Code, Cursor, opencode, GLM, любой MCP-агент), дописать задачу, отправить.
Стартовый prompt говорит агенту:
- прочитать
AGENT_README.mdради протокола; - сделать интроспекцию API запросом
print(mp.utils.json_encode(mp.app.api_surface())); - всегда передавать
authв каждом запросе, включаяcancelиop:"quit"; - выставлять
timeout_msна каждом запросе (watchdog по умолчанию — 10 минут); - для длинных операций следить за
agent_stream.log, не опрашивать result-файл; - избегать
mp.ui.*модальных диалогов в автономном режиме.
Связь со Script Console
- Тот же Lua-движок, тот же
mp.*API — всё, что можно сделать в Script Console, можно сделать через IPC. - Script Console крутит скрипты, которые вы печатаете в GUI; IPC-мост крутит скрипты, которые присылает агент в виде файлов.
- В одно время выполняется только один скрипт. Если занят Console —
IPC-запрос получит
reason:"busy"и должен повторить; и наоборот.
Безопасность
Любой процесс с правом записи в IPC-папку может выполнять код
от имени MultiProg. Выбирайте путь, который контролируете только вы.
64-символьный auth-токен аутентифицирует протокол, но реальная
граница доверия — права на запись в папку: как только request-файл
лёг, MultiProg прочитает поле auth и примет запрос, если оно
совпадёт.
- Auth-токен лежит под
%APPDATA%, где NTFS DACL ограничивает доступ только вашим пользователем. --agent-modeпо умолчанию блокирует деструктивные операции; чтобы прошить железо, скрипт должен явно вызватьmp.app.allow_hw_writes(true).- Операция Erase всегда требует подтверждения пользователя.
mp.backend.eraseиmp.backend.erase_blocksподнимают синхронный модальный диалог подтверждения в GUI на каждый вызов («Script requestedmp.backend.erase()on target XXX — Allow this erase?»), даже послеmp.app.allow_hw_writes(true)и даже вне--agent-mode. Флага-обхода нет. Erase стирает калибровку / серийники / pairing-данные, которых может не быть в вашем HEX, поэтому требуется человек у клавиатуры. Диалог блокирует запрос до ответа пользователя; отмена возвращает{false, "erase canceled by user"}. В момент появления диалога мост пишет[QT-WARN] mp.backend.<op>: GUI confirmation modal raised — …вagent_stream.log, чтобы агент, читающий лог tail'ом, видел причину «зависания». Закладывайте человека в IPC-флоу либо обходитесь без erase. - Стандартные Lua
os.*иio.*в движке песочничены — для работы с файловой системой и процессами используетсяmp.file.*,mp.app.list_dir,mp.app.run_process. - Отмена: отправьте
{ "id": <next>, "auth": "<token>", "cancel": true }— остановит выполняющийся скрипт. - Завершение:
{ "id": <next>, "auth": "<token>", "op": "quit" }— попросит MultiProg корректно завершиться. Мост напишет последний result-файл (reason: "quitting"), потом приложение закрывается.
Полный протокол
Полный формат запроса/ответа, все значения reason, модель «buffer
vs device», дисциплина автономного режима, семантика cancel,
streaming и угловые случаи — в файле AGENT_README.md, который
MultiProg кладёт в IPC-папку при каждом запуске. Это главный
справочник; начинайте оттуда, если пишете клиент.
Сам Lua API — в разделе Scripting и справочнике API.