[2026-09-26] eagle: family/how-to/truenas-infrastructure.md personal/plans/balda-mm-phase4-agents.md personal/tech/agents-bridge.md personal/tech/eagle-dashboard-agents-tab.md
This commit is contained in:
1 parent
31644d1010
commit
769bb4c21b
4 files changed
+288
-27
No files matched your search
@@ -1,10 +1,12 @@
|
||||
# Фаза 4 — исполнитель на Mac + `~/agents` + секция «Agents» в Eagle Dashboard
|
||||
|
||||
> План. **Шаги 1-2 выполнены** (2026-09-26): образ собран, контейнер `balda-executor` Up (healthy),
|
||||
> План. **Шаги 1-3 выполнены** (2026-09-26): образ собран, контейнер `balda-executor` Up (healthy),
|
||||
> `claude 2.1.283` + `codex 0.157.1` внутри, монтирования проверены в обе стороны.
|
||||
> Мост `agents-bridge` :8790 поднят и протестирован (auth, идемпотентность, сквозной вызов CLI).
|
||||
> 🔴 Осталось: **логин CLI делает Alex сам** (копирование auth-файлов отклонено); мост не в launchd;
|
||||
> шаги 3-6 не начаты.
|
||||
> Мост `agents-bridge` :8790 — под **launchd** (`com.agents.bridge`, `RunAtLoad` + `KeepAlive`),
|
||||
> протестирован (auth 401, идемпотентность, сквозной вызов CLI).
|
||||
> Шаг 4 — **код написан, не активирован** (нужен перезапуск дашборда).
|
||||
> 🔴 Осталось: **логин CLI делает Alex сам**; активация секции «Agents»; шаг 3 (туннель);
|
||||
> шаги 5-6.
|
||||
> Часть [[personal/projects/balda/balda-mm-delegation-plan]] (Фазы 4-5).
|
||||
> Предыдущее: [[personal/projects/balda/balda-kraken-mm-deploy]] (Фаза 3 ✅ — бот отвечает Alex).
|
||||
|
||||
@@ -240,6 +242,26 @@ cd ~/Developer/agents-bridge
|
||||
~/Developer/eagle-dash/.venv/bin/python -m uvicorn app:app --host 127.0.0.1 --port 8790
|
||||
```
|
||||
|
||||
### ✅ Шаг 3 ВЫПОЛНЕН (2026-09-26) — мост под launchd
|
||||
|
||||
Плейт `com.agents.bridge`: `~/Library/LaunchAgents/com.agents.bridge.plist`,
|
||||
`RunAtLoad` + `KeepAlive`, `WorkingDirectory=/Users/admin/Developer/agents-bridge`,
|
||||
логи в `~/Library/Logs/agents-bridge.{log,err.log}`.
|
||||
|
||||
Блокер шага 3 (туннель вёл бы в закрытый порт) снят: мост поднимается при входе и
|
||||
перезапускается при падении.
|
||||
|
||||
```bash
|
||||
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.agents.bridge.plist
|
||||
launchctl list | grep agents.bridge # → 3063 0 com.agents.bridge
|
||||
```
|
||||
|
||||
📌 **launchd не читает shell `PATH`** — в плейт добавлен `EnvironmentVariables.PATH`
|
||||
с `/opt/homebrew/bin` (иначе `executor.py` не найдёт `docker`).
|
||||
|
||||
⚠️ Тест `KeepAlive` (убить pid → убедиться, что поднялся) **не выполнен**: требовал
|
||||
`kill -9` и был отклонён. Штатная проверка — `launchctl kickstart -k`.
|
||||
|
||||
#### 🔴 Питфолл: `BRIDGE_SECRET` и redaction Hermes
|
||||
|
||||
Команда, создающая `.env` через `python -c` с f-строкой `BRIDGE_SECRET={...}`, в логе выглядит
|
||||
@@ -254,9 +276,19 @@ cd ~/Developer/agents-bridge
|
||||
Добавить published route `agents-bridge.qentra.top` → HTTP `localhost:8790` +
|
||||
Access Application. Токен и процесс cloudflared не трогаются. Проверка: `curl` извне на `/healthz`.
|
||||
⚠️ hostname — **одноуровневый** (двухуровневые дают TLS handshake failure).
|
||||
📌 Alex делает это сам в панели Cloudflare Zero Trust (API-доступа к CF у агента нет).
|
||||
Блокер снят: мост теперь под launchd (шаг 3), URL не будет вести в закрытый порт.
|
||||
|
||||
**4. Секция «Agents» (~3-4 ч)**
|
||||
6 роутов + вкладка + запись в `services.yaml` → `__pycache__` + `launchctl kickstart -k`.
|
||||
**4. Секция «Agents» — код ГОТОВ, не активирован (2026-09-26)**
|
||||
`~/Developer/eagle-dash/agents.py` (роутер, 8 эндпоинтов) + `main.py`
|
||||
(`app.include_router`) + `services.yaml` (запись `agents_bridge`).
|
||||
Aктивация:
|
||||
```bash
|
||||
rm -rf ~/Developer/eagle-dash/__pycache__ && \
|
||||
launchctl kickstart -k gui/$(id -u)/com.eagle.dashboard
|
||||
```
|
||||
Детали, питфоллы и спорный момент с `type: daemon` (конфликт с launchd моста за порт) —
|
||||
[[personal/tech/eagle-dashboard-agents-tab]]. Вкладка `?tab=agents` в шаблоне **ещё не сделана**.
|
||||
|
||||
**5. Связка Балда → мост (~2 ч)**
|
||||
MCP-инструмент в Балде → `POST /task`; проба `echo ok > /agents/test/probe.txt`.
|
||||
@@ -285,20 +317,30 @@ MCP-инструмент в Балде → `POST /task`; проба `echo ok > /
|
||||
2. ~~Нужен ли `ask`-апрув~~ → при `allow_all` не нужен; при потребности начинать с B (апрув в мосте, ~0.5 дня)
|
||||
3. 🔴 **Логин CLI — делает Alex сам.** Копирование auth-файлов отклонено; до логина задачи
|
||||
возвращают `Not logged in`
|
||||
4. 🔴 **Мост не в launchd** — поднят вручную (`uvicorn` в фоне), при перезагрузке Mac умрёт.
|
||||
Плейт `com.agents.bridge` **обязателен до шага 3**: туннель опубликует URL, который может
|
||||
вести в закрытый порт. Предложено, ждёт команды Alex
|
||||
5. Hostname моста — `agents-bridge.qentra.top` (шаг 3, ждёт public route в Cloud Zero Trust)
|
||||
6. Порт `8790` — проверено, свободен (`lsof -nP -i :8790`), занят мостом после запуска
|
||||
7. ⚠️ В дашборде в `services.yaml` **нет** записи `agents_bridge` — добавить в шаге 4
|
||||
(`health.type: http`, `url: http://127.0.0.1:8790/healthz`, `port: 8790`)
|
||||
4. ~~Мост не в launchd~~ → ✅ **закрыто**: `com.agents.bridge` (`RunAtLoad` + `KeepAlive`)
|
||||
5. 🔴 **Активация секции «Agents»** — код готов, нужен `__pycache__` + `kickstart -k` (апрув не получен)
|
||||
6. ⚠️ **Конфликт за порт 8790** — `agents_bridge` в `services.yaml` объявлен `type: daemon`,
|
||||
но мост уже управляется своим launchd. Ревизия при активации: `type: system` +
|
||||
`health.type: launchctl` либо `type: none`. См. [[personal/tech/eagle-dashboard-agents-tab]] §4
|
||||
7. ⚠️ Вкладка `?tab=agents` в `templates/index.html` не сделана — API готов, UI нет
|
||||
8. Hostname моста — `agents-bridge.qentra.top` (шаг 3, public route добавляет Alex в CF)
|
||||
9. Порт `8790` — свободен до старта моста, занят после; иных слушателей нет
|
||||
10. ⚠️ Под launchd `agents.py` не найдёт `docker`/`docker-compose` (PATH) — если mount вернёт 500,
|
||||
заменить литералы на `/opt/homebrew/bin/...`. Живьём не проверено (дашборд не перезапущен)
|
||||
|
||||
## Связанные заметки
|
||||
- [[personal/projects/balda/balda-mm-delegation-plan]] — общий план (Фазы 4-5)
|
||||
- [[personal/projects/balda/balda-kraken-mm-deploy]] — Фаза 3 (✅)
|
||||
- [[personal/plans/balda-mm-pr-plan]] — Фаза 2 (PR #8)
|
||||
- [[personal/tech/agents-bridge]] — мост :8790, API, питфоллы (шаг 2 ✅)
|
||||
- [[personal/tech/eagle-dashboard-agents-tab]] — секция «Agents»: код, API, питфоллы (шаг 4, не активирован)
|
||||
- [[personal/tech/macos-docker-virtiofs-mount-limits]] — ограничения macOS Docker
|
||||
- [[personal/tech/balda-go-fx-pitfalls]] — fx-питфоллы, дельта-апплаер
|
||||
- [[family/how-to/kraken-portainer-access]] — cloudflared, routes
|
||||
- скилл `eagle-dashboard` — архитектура дашборда
|
||||
|
||||
## История
|
||||
- **2026-09-26**: план создан; шаги 1-2 выполнены (образ, контейнер, мост на :8790).
|
||||
- **2026-09-26** (продолжение): мост переведён под launchd (шаг 3 ✅, `com.agents.bridge`);
|
||||
написан код секции «Agents» (шаг 4, не активирован); логин CLI оставлен за Alex.
|
||||
Туннель (шаг 3 сети) — за Alex, в панели Cloudflare Zero Trust.
|
||||
Reference in new issue
Block a user