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

88 lines
5.8 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Balda — актуальный локальный запуск
Execution Broker, Telegram-одобрения и текущая приёмка: [[personal/projects/balda/execution-broker|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` (1 behind / 7 ahead после нового QA-only коммита upstream `9cb3c2d7`, конфликтов нет, дерево чистое).
Прежний 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-записи не переигрываются. Полные границы и логи — в карточке выше.
По явному запросу владельца ветка опубликована в `mallexxx/balda`; открыт [upstream PR #52](https://github.com/baldaworks/balda/pull/52), GitHub CI запустился. Изменения не развёрнуты; контейнер `balda-mm-mac` остаётся на прежнем образе. Публикация PR не меняет действующий сервис.
_Проверено: 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-входа:
```bash
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-конфигурация не поддерживается.
```yaml
mcp_servers:
obsidian:
type: http
url: http://host.docker.internal:3101/mcp
name: obsidian
```
После изменения только этого блока:
```bash
docker restart balda-mm-mac
```
## Проверка
```bash
docker ps --filter name=balda-mm-mac
docker logs --tail 120 balda-mm-mac
```
В логах должны быть успешная инициализация Codex ACP, готовность provider и подключение Mattermost WebSocket.