Files
obsidian-vault/personal/projects/balda/setup.md
T

5.6 KiB
Executable File
Raw Blame History

Balda — актуальный локальный запуск

Execution Broker, Telegram-одобрения и текущая приёмка: personal/projects/balda/execution-broker.

Broker-кандидат 2026-10-14: 0.1.0-rc.26 / b64a1ba, локальные проверки сохранены отдельно. Старая Balda 223b85ad / codex/production-readiness отклонена. Текущая codex/ingress-outbox-v2 / 085a0d43 синхронизирована merge’ем с upstream 9dcd3660 в /private/tmp/execution-broker-balda-upstream (0 behind / 7 ahead, дерево чистое).

Прежний replay-only фикс Telegram был недостаточен: webhook HTTP 200 предшествует handler. Теперь ответ и recovery-маркеры сохраняются атомарно в SQL, а worker восстанавливает continuation после рестарта без второго update; controls durably допускаются после continuation. Реальный single-update webhook regression с production control publisher прошёл десять failure/restart случаев для callback и текста. Самостоятельно проверен весь diff ветки (58 файлов); прошли финальный полный race-gate, обе storage integration suites, lint/architecture/security/migrations, projection/JetStream/ingress, native macOS MCP scenarios и build. SQLite migration 63 / PostgreSQL migration 28 требуют backup; исторические answered-записи не переигрываются. Полные границы и логи — в карточке выше.

Изменения остаются локальными и не развёрнуты; контейнер balda-mm-mac остаётся на прежнем образе. Выбор ветки или коммит не меняет действующий сервис.

Проверено: 2026-10-09.

Это основной runbook для текущей Balda на Mac. Старые документы про balda-agent-valera-1, Zulip и Kraken — исторические.

Текущая схема

  • Хост: Mac.
  • Контейнер: balda-mm-mac.
  • Канал: Mattermost.
  • Провайдер: Codex ACP.
  • Compose: /Users/admin/Docker/balda-mm-mac/docker-compose.yml.
  • Конфиг: /Users/admin/Docker/balda-mm-mac/config/config.yaml.
  • Состояние и managed plugins: /Users/admin/Docker/balda-mm-mac/state.
  • Рабочие каталоги: /Users/admin/Docker/balda-mm-mac/work.

Каталоги config, state и work bind-mounted в контейнер. Домашний каталог контейнера хранится в Docker volume balda_balda-home.

Что применять какой командой

Изменение Действие
Только содержимое config/config.yaml docker restart balda-mm-mac
.env, environment, mounts или service definition в Compose docker-compose up -d balda
Новый image/tag docker-compose pull && docker-compose up -d balda
Изменение исходного кода Собрать image, затем docker-compose up -d balda
Managed plugin Использовать /plugin install|upgrade|enable|disable|remove
Plugin/skill для уже открытой беседы /reset после активации изменения

docker restart перечитывает bind-mounted config.yaml, потому что Balda читает его при старте процесса. Он не перечитывает .env и не применяет изменения Compose.

Принудительное --force-recreate для изменения только config.yaml не требуется.

Plugins и skills

Managed plugin revisions в state неизменяемые и проверяются по digest. Их нельзя редактировать вручную в папке. Изменения устанавливаются через команды /plugin.

Каталог плагинов обновляется в работающем процессе после install/upgrade/enable/disable/remove. Уже созданная сессия закреплена за старым snapshot, поэтому для неё нужен /reset.

Файлы standalone skills редактировать можно, но существующая сессия также увидит новый snapshot только после /reset.

Codex ACP

Актуальный reasoning effort: medium.

Codex авторизация хранится в home-volume контейнера. Для headless-входа:

cd /Users/admin/Docker/balda-mm-mac
docker-compose run --rm --entrypoint codex balda login --device-auth

Obsidian MCP

Codex ACP поддерживает stdio и Streamable HTTP. SSE-конфигурация не поддерживается.

mcp_servers:
  obsidian:
    type: http
    url: http://host.docker.internal:3101/mcp
    name: obsidian

После изменения только этого блока:

docker restart balda-mm-mac

Проверка

docker ps --filter name=balda-mm-mac
docker logs --tail 120 balda-mm-mac

В логах должны быть успешная инициализация Codex ACP, готовность provider и подключение Mattermost WebSocket.