[2026-09-29] eagle: personal/plans/balda-callee-prism-plan.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-29 01:13:04 +06:00
1 parent 8542180db6
commit afabb21c25
1 file changed
+93
+93
View File
@@ -147,6 +147,99 @@ spec:
---
## 2.5 Карта стека: кто кого дёргает
```
ВЫ (Mattermost / Telegram)
│ задача словами
▼
Балда-оркестратор — Kraken, balda-mm:0.1.13, DeepSeek
│ понимает задачу, читает Obsidian, решает куда идти, отвечает
│ НЕ пишет код, НЕ собирает, НЕ ходит по хостам
▼ MCP-инструмент executor_run
balda-executor-mcp — Kraken, :8890, HTTP + X-Bridge-Secret
│ транспорт без логики
▼ Cloudflare Tunnel (agents-bridge.qentra.top)
мост agents-bridge — Mac, :8790, launchd
│ транспорт без логики: идемпотентность, таймаут 900с, лимит 1
▼ docker exec
callee — Mac, контейнер balda-executor
│ ДВИЖОК ВОРКФЛОУ: компилирует граф, валидирует целиком до запуска
│ МОДЕЛИ НЕ СОДЕРЖИТ: дирижёр — раздаёт роли, гоняет циклы, собирает артефакт
├─ Role ────► ACP-процесс ───► МОДЕЛЬ (DeepSeek / позже Codex)
├─ Script ──► shell на Mac: git, docker build, xcodebuild, pytest
└─ Human ───► пауза, ответ реплаем в треде MM
▼
bd (Beads) — трекинг Story → Tasks, живёт между сессиями
```
### Кто есть кто
| Компонент | Где | Что это |
|---|---|---|
| Балда | Kraken | Оркестратор верхнего уровня: понимает смысл задачи |
| balda-executor-mcp | Kraken | Проброс по HTTP, логики нет |
| мост `:8790` | Mac | Идемпотентность, таймаут, лимит 1, логики нет |
| **callee** | Mac | Движок воркфлоу. Граф, роли, циклы. **Не модель** |
| Role / DynamicRole | Mac | Узел, который зовёт модель |
| **ACP** | Mac | Протокол «редактор ↔ агент». Транспорт, не модель |
| **dsh / dsh-acp** | Mac | Адаптер: отдаёт DeepSeek по протоколу ACP |
| **Codex / Claude CLI** | Mac | Агент-харнесс: модель + умение править файлы и запускать команды |
| **bd (Beads)** | Mac | Память задач: что сделано, что нет |
| **prism** | Mac | Воркфлоу: specify → design → breakdown → human → apply → verify |
| tunnels | — | Cloudflare: Kraken→Mac по HTTP. **Не VPN** |
| **lume** | Mac | macOS-виртуалки. Только для задач, требующих настоящую macOS |
📌 **`callee` не умеет ничего сам** — ни думать, ни писать код. Он берёт описание графа,
проверяет его и по шагам вызывает: роль → модель, скрипт → shell, human → пауза.
Вся содержательная работа — либо в модели через Role, либо в shell через Script.
📌 **Модель ≠ агент-харнесс.** `dsh-acp` только отдаёт DeepSeek. `codex` — харнесс:
модель плюс умение править файлы, запускать команды, искать. Через ACP callee зовёт и то,
и другое.
### Разбор сценариев
| Сценарий | Механизм | Где исполняется | Статус |
|---|---|---|---|
| Настроить на **Mac** | `Script` → локальный shell | контейнер, только `~/agents` | ⚠️ `~/Developer` не смонтирован |
| Настроить на **TrueNAS** | `Script` → `ssh truenas_admin@mallexxx.duckdns.org` | контейнер | ❌ `~/.ssh` не смонтирован |
| Настроить на **Kraken** | `Script` → `ssh kraken` | контейнер | ❌ ssh не настроен; 🔴 риск потерять канал управления |
| Собрать **Xcode** | `Script` → `xcodebuild` | **lume VM с macOS** | ❌ в Linux-контейнере невозможно |
| Тесты в **lume** | `Script` → `lume` | **хост Mac** | ❌ `lume` стоит на хосте, не в контейнере |
| Собрать **докер-образ** | `Script` → `docker build` | **хост Mac** | ❌ `docker.sock` не смонтирован |
🔴 **Корень:** шесть сценариев делятся на две группы, и текущая схема закрывает одну.
| Группа | Сценарии | Где |
|---|---|---|
| В контейнере | файлы Mac, git, Linux-сборки | `balda-executor` |
| **Вне контейнера** | TrueNAS/Kraken по ssh, Xcode, lume, docker build | нужен доступ к хосту |
**Причина одна:** контейнер изолирован. Нет `docker.sock`, `~/.ssh`, `lume`, Xcode, `~/Developer`.
### Как закрывать: роли по исполнителям
| Вариант | Суть | Оценка |
|---|---|---|
| **A. Роли по исполнителям** ✅ | контейнер чистый для Linux-задач; для остального роли ходят через `ssh` на хост и узлы. Требует `~/.ssh:ro` в контейнер + `ssh admin@host.docker.internal` | изоляция сохраняется; роли явно описаны в графе: «linux-задача», «macOS-задача», «удалённый хост» |
| B. Дать контейнеру больше прав | смонтировать `docker.sock`, `lume`, `~/Developer` | проще, но контейнер теряет изоляцию — одну из причин своего существования |
**Решение: A.**
### Чего нет в схеме (докрутить в C1)
| Нужно | Статус |
|---|---|
| `~/.ssh` в контейнере | ❌ |
| `docker.sock` | ❌ |
| `lume` в контейнере | ❌ (стоит на хосте, v0.5.3) |
| ssh с контейнера на Kraken/TrueNAS | ❌ |
| lume VM как исполнитель | ❌ VM есть (`macos-15-golden`, `macos-27-golden`, `uitest-26.4.1-golden`, `pdf-hud-macos27`), интеграции нет |
| Разделение ролей по хостам | ❌ в графе не описано |
---
## 3. Prism — таск-трекинг
### 3.1 Callee и prism — независимые установки