10 KiB
Executable File
Balda — актуальный локальный запуск
Проверено: 2026-10-15 по обоим работающим контейнерам, Compose, конфигурации и реальным MCP-вызовам.
Обзор: personal/projects/balda/balda. Broker, готовность кандидата и оставшаяся работа: personal/projects/balda/execution-broker.
Что работает сейчас
| Параметр | Фактическое значение |
|---|---|
| Хост / контейнер | Mac / balda-mm-mac |
| Канал | Mattermost |
| Provider | codex, type codex_acp, reasoning effort medium |
| Образ обоих инстансов | balda-balda:upstream-ee312646-b1, image ID sha256:2f2294dd0ae3061f5e1f74f15d002f10a3c4075aaf57d6bcf97b57c9f6b95a4f |
| Balda source | ee3126460a8f6e2667e9941f4ef68c5f5872b216; Linux ARM64 binary SHA256 945763163b29cd6190d21775c4ee46c7c54d1a98cea59f7109c30dbe5b6f460c |
| Compose | /Users/admin/Docker/balda-mm-mac/docker-compose.yml |
| Активный конфиг | /Users/admin/Docker/balda-mm-mac/config/config.yaml |
| State / plugins | /Users/admin/Docker/balda-mm-mac/state |
| Workspace | /Users/admin/Docker/balda-mm-mac/work |
| Home volume | balda_balda-home, mounted в /home/node |
Config bind-mounted в /workspace/.config/balda read-only для контейнера; state и work доступны ему на запись. Файл ~/Developer/balda/.config/balda/config.yaml относится к отдельному dev checkout и не управляет этим контейнером.
Eagle и общие инструменты
Eagle работает на том же Mac в balda-mm-eagle; Compose, config, state и work находятся в /Users/admin/Docker/balda-mm-eagle/, service — eagle, отдельный home volume — balda_eagle-home. Образы обоих инстансов одинаковы. Авторизации Codex раздельные; при обновлении home volumes сохранены. Серверная проверка: models endpoint отвечает HTTP 200 у обоих. У @balda реальная генерация в отдельной ephemeral read-only сессии завершилась ответом AUTH_OK и turn.completed; исходный аккаунт сохранён. После перечитывания credentials Mattermost websocket подключён, существующие беседы не сбрасывались. Не копировать auth между разными аккаунтами.
У обоих включены одинаковые Obsidian, Execution Broker и Prism MCP, одинаковые права runtime и managed plugin execution-broker rc.32. Проверены реальные initialize/tools-list: Obsidian — 15, Broker — 26, Prism — 5 инструментов; списки совпадают. Eagle дополнительно имеет asana-readonly, URL http://asana-readonly:3100/mcp в приватной Docker-сети. Отдельный контейнер balda-eagle-asana-readonly не публикует порт на хост. Реальное чтение Asana прошло; все пять операций изменения и запись заметок в файл отклоняются сервером.
В обоих конфигурациях provider codex_acp, reasoning medium, явный model отсутствует. Последние записи Codex подтверждают gpt-6.1-sol у обоих. При выравнивании инструментов настройки основной модели не менялись. balda.nats.max_store у обоих — 16gb.
Продолжение задач
В этой версии generic webhooks выполняют изолированные задания. Они не продолжают исходную сессию. Старые routes.*.path, envelope.target, key_from_body, mode и fallback_to удалены из конфигурации; listener задаётся через balda.http. Сейчас он слушает loopback 127.0.0.1:8095.
Плагин rc32 использует balda.state и штатный balda.session.wait: наблюдатель вооружается до Start/retry и возвращается в исходную сессию. Managed lifecycle и restart-контракт проверены; conversational acceptance с реальной моделью ещё открыт. Старые callbacks Broker на :8090 приостановлены, недоставленные cursors сохранены. Native wait acceptance не является подтверждением доставки сообщения провайдером.
Оба инстанса имеют также одинаковые пять глобальных Codex skills и одинаковую Codex tool policy; различий не найдено. Обновление плагина выполнено штатной переустановкой из нового operator source с сохранением plugin-data/execution-broker, старых revisions/catalog snapshots и содержимого прежнего marketplace. Существующие сессии не сбрасывались.
Изменения и перезапуск
| Изменение | Действие |
|---|---|
Только host config/config.yaml |
docker restart balda-mm-mac: процесс перечитывает конфигурацию при старте |
.env, environment, mounts, service definition |
Из каталога Compose: docker-compose up -d balda |
| Новый image | Сначала получить или собрать выбранный образ, затем docker-compose up -d balda; в действующем Compose нет build-секции |
| Код в checkout | Сам по себе не обновляет образ; нужен отдельный build и применение выбранного image |
| Изменение catalog / skills существующей беседы | Обычный /reset для выбора текущего capability snapshot |
docker restart не применяет изменения Compose или .env. --force-recreate для изменения только config.yaml не требуется. До смены image сохраняют согласованный state backup и прежний image/config для отката.
Plugins, skills и инструкции
Managed plugin revisions неизменяемые; вручную редактировать их содержимое в state нельзя. Документация проекта описывает управление пакетами через Backoffice → Operations → Plugins: Installed/Marketplaces, review exact revision, install/upgrade/enable/disable/rollback/remove. Проверять доступность поверхности на используемой версии, а не переносить команды из архивных runbooks: plugins reference.
Management не сбрасывает существующие сессии. Новая сессия выбирает текущий catalog; существующая принимает capabilities через обычный /reset. Standalone skills также редактируются отдельно от уже закреплённого session snapshot.
personal/projects/balda/soul содержит сверенный снимок balda.global_instruction. personal/projects/balda/workspace-context описывает runtime.providers.codex.system_instructions; сейчас отдельное значение не настроено. Редактирование заметки не меняет работающий конфиг.
Codex ACP
Reasoning effort в активном конфиге — medium. Авторизация CLI хранится в home volume. Для восстановления существующего @balda: docker exec -it balda-mm-mac codex login --device-auth, завершить вход в исходный аккаунт и проверить реальный запрос к провайдеру. codex login status подтверждает только наличие локальной авторизации и сам по себе не доказывает действительность токена на сервере. При необходимости перезапустить Balda для перечитывания auth; /reset не требуется. Для отдельного headless-входа используется команда из каталога Compose:
docker-compose run --rm --entrypoint codex balda login --device-auth
Obsidian MCP
Проверенный блок активной конфигурации находится в runtime.mcp_servers:
runtime:
mcp_servers:
obsidian:
type: http
url: http://host.docker.internal:3101/mcp
Используется Streamable HTTP. Для Codex ACP SSE-конфигурацию из старых заметок не переносить. После изменения этого блока нужен перезапуск Balda.
Диагностика
docker ps --filter name=balda-mm-mac
docker logs --tail 120 balda-mm-mac
Проверять успешный startup provider и подключение Mattermost. Не копировать токены, cookie или login URLs из логов в заметки.
Архив старых схем и шаблонов: personal/projects/archive/balda-reference-before-2026-10-14.