[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:
Alexey Martemyanov committed 2026-09-26 19:00:19 +06:00
1 parent 31644d1010
commit 769bb4c21b
4 files changed
+288 -27

No files matched your search

+49 -11
View File
@@ -87,18 +87,35 @@ GET /tasks?limit=N → последние задачи (для дашбор
## Запуск
**Сейчас — вручную** (launchd ещё не сделан, см. открытый пункт 4 плана):
**Под launchd** (с 2026-09-26) — плейт `com.agents.bridge`:
| Параметр | Значение |
|---|---|
| Label | `com.agents.bridge` |
| Plist | `~/Library/LaunchAgents/com.agents.bridge.plist` |
| Program | `~/Developer/eagle-dash/.venv/bin/python -m uvicorn app:app --host 127.0.0.1 --port 8790` |
| WorkingDirectory | `/Users/admin/Developer/agents-bridge` |
| `RunAtLoad` / `KeepAlive` | `true` / `true` |
| Логи | `~/Library/Logs/agents-bridge.log` (+ `.err.log`) |
| `PATH` в EnvironmentVariables | `/opt/homebrew/bin:...` — launchd не читает shell-PATH |
```bash
cd ~/Developer/agents-bridge
~/Developer/eagle-dash/.venv/bin/python -m uvicorn app:app --host 127.0.0.1 --port 8790
```
Проверка:
```bash
# установка/переустановка
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.agents.bridge.plist
# перезапуск
launchctl kickstart -k gui/$(id -u)/com.agents.bridge
# статус (pid, last exit)
launchctl list | grep agents.bridge
# проверка
curl -s http://127.0.0.1:8790/healthz
```
Проверено 2026-09-26: `bootstrap` → exit 0, в `launchctl list` строка `3063 0 com.agents.bridge`,
`/healthz` = `status: ok`. ⚠️ Процедура убийства pid для проверки `KeepAlive` **не выполнялась** —
команда требует `kill -9` и была отклонена пользователем, не повторять без явной команды.
Ручной запуск (если launchd отключён) — тем же `uvicorn`, но это аварийный путь.
⚠️ На macOS `docker compose` **не работает** — только `docker-compose` (см. план, шаг 1).
---
@@ -132,10 +149,27 @@ auth-файлов из `~/.claude`/`~/.codex` отклонено, не пред
как `timeout` с причиной `bridge restarted while task was running`. Иначе они навсегда
висят активными и блокируют слот лимита.
### 4. Мост не переживает перезагрузку
### 4. Мост не переживает перезагрузку — ✅ ЗАКРЫТО
Пока нет launchd-плейта `com.agents.bridge`, процесс живёт только в текущей сессии.
Это **блокер для шага 3** (туннель опубликует URL, ведущий в закрытый порт).
Решено 2026-09-26: плейт `com.agents.bridge` (`RunAtLoad` + `KeepAlive`), поднят через
`launchctl bootstrap`. Шаг 3 (туннель) больше не блокирован.
⚠️ Остаётся непроверенным поведение `KeepAlive` при падении процесса: тест требовал
`kill -9` по pid моста и был отклонён. Проверить можно `launchctl kickstart -k`
(штатный путь) либо перезагрузкой Mac.
### 5. launchd не видит `docker` — `PATH` задавать в плейте
`ProgramArguments` использует абсолютный путь к python, но `executor.py` вызывает
`docker` и `docker-compose` из `PATH`. При запуске под launchd `PATH` = `/usr/bin:/bin`,
поэтому `docker` (`/opt/homebrew/bin/docker`) не находится. В плейт добавлен блок
`EnvironmentVariables.PATH` с `/opt/homebrew/bin` первым. Симптом без него:
`docker не найден в PATH процесса моста` в `stderr` задачи.
### 6. Мост слушает только `127.0.0.1`
`BRIDGE_HOST=127.0.0.1` — намеренно. Наружу выставляется туннелем (шаг 3), не пробросом
порта. Не менять на `0.0.0.0` без Access Application на стороне Cloudflare.
---
@@ -159,7 +193,11 @@ curl -s -o /dev/null -w "%{http_code}\n" -X POST http://127.0.0.1:8790/task \
- [[personal/plans/balda-mm-phase4-agents]] — план Фазы 4 (шаги 1-2 ✅)
- [[personal/tech/macos-docker-virtiofs-mount-limits]] — почему bind-mount вместо symlink
- [[personal/projects/balda/balda-mm-delegation-plan]] — общий план делегирования
- `~/Developer/agents-bridge` — код моста
## История
- **2026-09-26**: создан, поднят на :8790, протестирован (auth 401, идемпотентность,
сквозной вызов CLI). Не в launchd. Логин CLI — за Alex.
сквозной вызов CLI). Логин CLI — за Alex.
- **2026-09-26** (продолжение): переведён под launchd (`com.agents.bridge`,
`RunAtLoad` + `KeepAlive`, pid 3063), добавлен `EnvironmentVariables.PATH`.
Шаг 3 разблокирован; проверка `KeepAlive` при падении не выполнена (отклонён `kill -9`).