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

This commit is contained in:
Alexey Martemyanov committed 2026-09-29 01:48:30 +06:00
1 parent 0f67b3791b
commit a553538217
2 files changed
+158 -27

No files matched your search

+32 -15
View File
@@ -1,7 +1,12 @@
# Балда → Callee + Prism: делегирование
> Обновлён 2026-09-29. Статус: **C0 закрыта, C1-C5 не начаты.**
> Обновлён 2026-09-29. Статус: **C0 закрыта. Топология пересмотрена: стек переезжает
> на Mac, на Kraken остаётся только MM-сервер.** C1-C5 не начаты.
> Часть [[personal/projects/balda/balda-mm-delegation-plan]].
> Опорная заметка по контрактам инструментов: [[personal/tech/callee-prism]].
>
> 🔴 **Открытая развилка (§6.7):** как давать доступ к `xcodebuild` / `lume` / `docker build` —
> узкий контейнер (три операции недоступны) или гибрид с хост-исполнителем. Определяет объём C1a.
---
@@ -664,19 +669,26 @@ scoped-пакеты так не индексируются.
## 7. Питфоллы
1. ⚠️ **`PROVIDERS` в мосте — argv-список.** Промпт должен остаться **одним**
последним элементом, иначе передача рвётся.
2. ⚠️ **`.env` не перебивает plist.** `--host` жёстко в `ProgramArguments`; смена
аргументов требует `bootout` + `bootstrap`. Проверка:
`lsof -nP -iTCP:8790 -sTCP:LISTEN` → должно быть `*:8790`.
3. ⚠️ **`prism/lifecycle` должен быть `Router`** — `Sequential` означает устаревший
1. 🔴 **Два инстанса Балды на один MM-бот = рвут WebSocket друг другу.** Симптом —
`bad_seq`, события не приходят. Mac-инстансу нужен **отдельный бот и токен**.
2. 🔴 **`docker.sock` в контейнер не монтировать никогда** — эквивалент root на хосте
(через сокет запускается контейнер с `-v /:/host`).
3. 🔴 **`~/.ssh` целиком не монтировать** — один ключ даёт доступ ко всем хостам.
Только конкретные ключи + `command=` в `authorized_keys`.
4. 🔴 **ACP-провайдер — дочерний процесс callee.** Движок на хосте + callee в контейнере
невозможны: один процесс-тред. Где callee, там и движки, и Script'ы.
5. 🔴 **Гейт `Human` защищает действие, но не возможность.** Права определяет процесс и
монтирование, не граф (§1.1a).
6. ⚠️ **`prism/lifecycle` должен быть `Router`** — `Sequential` означает устаревший
импорт, лечится `--force`.
4. ⚠️ **Provider `cmd` — одно имя файла, не shell-строка.** Аргументы — только
7. ⚠️ **Provider `cmd` — одно имя файла, не shell-строка.** Аргументы — только
в `extraArgs`.
5. ⚠️ **Никогда не маршрутизировать вывод модели в `cmd`/`extraArgs`.**
6. ⚠️ **Установки в контейнере не переживают пересборку** — том или `Dockerfile`.
7. ⚠️ **`docker-compose` (дефис) на Mac, `docker compose` (пробел) на Kraken.**
8. ⚠️ **Node `>= 22.15`** требуется адаптером (в образе 24.21.0).
8. ⚠️ **Никогда не маршрутизировать вывод модели в `cmd`/`extraArgs`.**
9. ⚠️ **Установки в контейнере не переживают пересборку** — том или `Dockerfile`.
10. ⚠️ **`docker-compose` (дефис) на Mac, `docker compose` (пробел) на Kraken.**
11. ⚠️ **Node `>= 22.15`** требуется адаптером (в образе 24.21.0).
12. ⚠️ **Динамических маунтов на macOS Docker нет** — только `up -d` с пересозданием.
Доступ к проектам — через рабочую копию в `~/agents` + git, не через маунт под задачу.
---
@@ -684,9 +696,13 @@ scoped-пакеты так не индексируются.
| Риск | Оценка | Митигация |
|---|---|---|
| 🔴 **Mac спит → бот не отвечает** | **высокий** | `caffeinate` / Energy Saver; MM-сервер на Kraken жив всегда, Mac переподключается |
| 🔴 **Развилка доступа к Xcode/lume/docker не решена** | **высокий** | решить до C1a (§6.7) |
| Хост-исполнитель = дыра в изоляции | средний | узкий набор операций (3 шт.), явный и названный |
| Два инстанса Балды конфликтуют по MM | средний | отдельный бот/токен для Mac-инстанса |
| Импорт `prism/*` устаревает при обновлении | средний | проверять `kind: Router` после каждого импорта |
| callee обновляется и меняет контракт | средний | пиннить версию в ресурсах |
| Мост теряет работоспособность после смены argv | низкий | бэкап `executor.py`, откат одной правкой |
| Переезд стека с Kraken не оправдается | средний | оставить Kraken-инстанс живым как запасной (§6.11) |
| Стоимость DeepSeek растёт | низкий | исполнитель-роли — короткие визиты |
| Установка в контейнер не переживёт пересборку | низкий | том или `Dockerfile` |
@@ -694,7 +710,7 @@ scoped-пакеты так не индексируются.
## 9. Порядок и запреты
**Порядок:** C1 → C2 → C3 → C4 → C5.
**Порядок:** C1 → C1a → C2 → C4 → C5. (C3 отменена.)
**НЕ трогать в `~/Developer/balda`:** `go.mod`, `Dockerfile.release`, `go.sum`,
`internal/apps/balda/app.go`, `internal/apps/balda/preflight.go` — вне PR-дерева,
@@ -702,7 +718,8 @@ scoped-пакеты так не индексируются.
См. [[personal/plans/balda-mm-pr-plan]] §5.
**НЕ начинать работу** без явного «поехали».
**Ничего не удалять** без отдельного подтверждения.
**Ничего не удалять** без отдельного подтверждения. В частности: Kraken-инстанс Балды,
образы для отката, диагностические контейнеры, старые теги.
---