[2026-10-09] eagle: family/how-to/samsung-m2020.md personal/plans/balda-callee-prism-plan.md personal/plans/balda-mm-endtoend-plan.md personal/plans/balda-mm-phase4-agents.md personal/plans/balda-runtime-rebuild-mm-validation.md personal/projects/balda/balda-kraken-mm-deploy.md personal/projects/balda/balda-mm-delegation-plan.md personal/projects/balda/balda-valera.md personal/projects/balda/claudio-klaudiy.md personal/projects/balda/fast-rlm-integration.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-09 14:09:02 +06:00
1 parent c3d6d48141
commit b4747b5c09
16 files changed
+132 -66

No files matched your search

@@ -1,3 +1,8 @@
> [!WARNING] Исторический документ
> Не использовать как runbook текущей Balda. Актуальная локальная схема, пути и команды: [[personal/projects/balda/setup|Balda — актуальный локальный запуск]].
> Текущий контейнер: `balda-mm-mac`; config: `/Users/admin/Docker/balda-mm-mac/config/config.yaml`; Obsidian MCP: `type: http`, `http://host.docker.internal:3101/mcp`.
> Материал ниже сохранён только как история.
# Фаза 3 — Балда на Kraken + Mattermost (деплой)
> ⛔ **2026-09-29: СТЕК СНЕСЁН.** Контейнеры `balda-mm`, `balda-executor-mcp`, `obsidian-mcp`
@@ -1,3 +1,8 @@
> [!WARNING] Историческая схема Balda
> Не использовать пути, контейнеры, provider или MCP transport из этой заметки для текущего запуска.
> Канонический текущий runbook: [[personal/projects/balda/setup|Balda — актуальный локальный запуск]].
> Актуально: `balda-mm-mac`, `/Users/admin/Docker/balda-mm-mac/config/config.yaml`, Mattermost, Codex ACP, Obsidian `type: http` → `http://host.docker.internal:3101/mcp`.
# Balda 2.0 — Mattermost + распределённое делегирование (план)
> Создан 2026-09-25. Статус (обновлён **2026-09-28**): **Фазы 1-3 закрыты** (MM на Kraken ·
+5
View File
@@ -1,3 +1,8 @@
> [!WARNING] Историческая схема Balda
> Не использовать пути, контейнеры, provider или MCP transport из этой заметки для текущего запуска.
> Канонический текущий runbook: [[personal/projects/balda/setup|Balda — актуальный локальный запуск]].
> Актуально: `balda-mm-mac`, `/Users/admin/Docker/balda-mm-mac/config/config.yaml`, Mattermost, Codex ACP, Obsidian `type: http` → `http://host.docker.internal:3101/mcp`.
# Балда / Валера — эксплуатация & MCP debug
> ## ⛔ СНЕСЁН 2026-09-29 — агент удалён на Mac
@@ -1,3 +1,8 @@
> [!WARNING] Историческая схема Balda
> Не использовать пути, контейнеры, provider или MCP transport из этой заметки для текущего запуска.
> Канонический текущий runbook: [[personal/projects/balda/setup|Balda — актуальный локальный запуск]].
> Актуально: `balda-mm-mac`, `/Users/admin/Docker/balda-mm-mac/config/config.yaml`, Mattermost, Codex ACP, Obsidian `type: http` → `http://host.docker.internal:3101/mcp`.
# Клавдий (Claudio) — эксплуатация
## Расположение
@@ -1,3 +1,8 @@
> [!WARNING] Исторический документ
> Не использовать как runbook текущей Balda. Актуальная локальная схема, пути и команды: [[personal/projects/balda/setup|Balda — актуальный локальный запуск]].
> Текущий контейнер: `balda-mm-mac`; config: `/Users/admin/Docker/balda-mm-mac/config/config.yaml`; Obsidian MCP: `type: http`, `http://host.docker.internal:3101/mcp`.
> Материал ниже сохранён только как история.
# fast-rlm MCP HTTP integration with Balda
> ## ⚠️ СТАТУС (2026-09-25)
@@ -1,3 +1,8 @@
> [!WARNING] Историческая схема Balda
> Не использовать пути, контейнеры, provider или MCP transport из этой заметки для текущего запуска.
> Канонический текущий runbook: [[personal/projects/balda/setup|Balda — актуальный локальный запуск]].
> Актуально: `balda-mm-mac`, `/Users/admin/Docker/balda-mm-mac/config/config.yaml`, Mattermost, Codex ACP, Obsidian `type: http` → `http://host.docker.internal:3101/mcp`.
# Mattermost на Kraken — деплой (arm64)
> Создано 2026-09-26. Обновлено 2026-09-26. Статус: **✅ СЕРВЕР РАБОТАЕТ**.
+57 -64
View File
@@ -1,86 +1,79 @@
# Balda — Setup & Config
# Balda — актуальный локальный запуск
_Последнее обновление: 2026-06-24_
_Проверено: 2026-10-09._
## Хост
> Это основной runbook для текущей Balda на Mac. Старые документы про `balda-agent-valera-1`, Zulip и Kraken — исторические.
Mac (Eagle), **Colima** (arm64, 8 CPU, 24 GB RAM, 100 GB sparse disk). Контейнеры собираются из исходников в `~/Developer/balda/`.
## Текущая схема
**Важно:** `buildx_buildkit_arm64builder0_state` volume — основная причина зависаний Zulip при сборке. См. [[tech/docker-mac-disk-issues]].
- Хост: 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`.
| Бот | Порт | Провайдер | Dockerfile |
|-----|------|-----------|------------|
| **Валера** (`balda-agent-valera-1`) | `:8091` | DeepSeek | `Dockerfile` (одинаковый) |
| **Клавдий** (`claudio-agent-claudio-1`) | `:8092` | Claude (через proxy :3457) | `Dockerfile.claudio` (тот же + arm64 target) |
## Что применять какой командой
## Расположение
| Изменение | Действие |
|---|---|
| Только содержимое `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` после активации изменения |
| Item | Валера | Клавдий |
|------|--------|---------|
| Compose | `~/Docker/balda-agent/docker-compose.yaml` | `~/Docker/claudio-agent/docker-compose.yaml` |
| Config volume | `~/Docker/balda-agent/.config/balda/` | `~/Docker/claudio-agent/.config/balda/` |
| Env | `~/Docker/balda-agent/.env` | `~/Docker/claudio-agent/.env` |
| Dev repo (общий) | `~/Developer/balda/` | `~/Developer/balda/` |
`docker restart` перечитывает bind-mounted `config.yaml`, потому что Balda читает его при старте процесса. Он не перечитывает `.env` и не применяет изменения Compose.
**Важно:** оба бота собираются из одного репозитория `~/Developer/balda/` (normahq/balda fork). Разница — только в config.yaml (провайдер) и .env (Zulip credentials).
Принудительное `--force-recreate` для изменения только `config.yaml` не требуется.
## Образ
## Plugins и skills
- Собирается локально из `Dockerfile` (Go, multi-stage: golang:1.26 → alpine:3)
- Target: `linux/arm64` (статический Go бинарник)
- Image name: `balda-agent-valera:latest` / `claudio-agent-claudio:latest` (по имени compose проекта)
- Entrypoint: `/usr/local/bin/balda` (ELF arm64)
- Сеть: `balda_default` (bridge, внешняя, создаётся через docker network create)
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 ~/Docker/balda-agent
docker-compose restart # без пересборки, без перечитывания .env
docker-compose up -d # пересоздаёт контейнер с текущим .env
docker-compose build && docker-compose up -d # после изменений в коде
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
cd ~/Docker/claudio-agent
# те же команды
docker restart balda-mm-mac
```
**После изменений кода** (в `~/Developer/balda/`): `build && up -d` в каждом compose.
## Проверка
## .env (общие переменные)
```env
OPENAI_BASE_URL=https://api.deepseek.com/v1 # обязательна для deepseek provider
# для claude provider не нужна
```bash
docker ps --filter name=balda-mm-mac
docker logs --tail 120 balda-mm-mac
```
**Важно:** `docker-compose restart` не перечитывает `.env`. Только `docker-compose up -d`.
## Известные грабли
### 1. OPENAI_BASE_URL — обязательна для DeepSeek
Norma не читает `base_url` из config.yaml для `provider: deepseek`. Читает env `OPENAI_BASE_URL`.
Без неё запросы уходят на `api.openai.com` (401).
### 2. DOCKER_OPTS — пустая строка убивает старт
```env
DOCKER_OPTS={"max_tokens": 2048, "temperature": 0.7}
```
Не пустая строка! Иначе `strconv.ParseFloat: parsing ""` при старте.
### 3. exec format error на arm64
Симптом: контейнер в crash-цикле, логи повторяют `exec /usr/local/bin/balda: exec format error`.
Docker показывает `Up N hours` (накопленное время рестартов), но exec не работает.
**Причина:** контейнер создан с `Platform: linux/amd64` (старый Docker Desktop или первый run без platform). Образ arm64, контейнер amd64 — несовместимость.
**Фикс:** `docker-compose down; docker-compose up -d` — удаляет старый контейнер и создаёт новый с правильной платформой.
### 4. После перезапуска нужно @mention для создания сессии
Events API polling подхватывает сообщения только если есть активная сессия в теме.
После рестарта: написать `@Валера <текст>` (или `@Клавдий`).
В логах должны быть успешная инициализация Codex ACP, готовность provider и подключение Mattermost WebSocket.