From dba3beb6485f38015c35b6cc6ba4e08bf8490cee Mon Sep 17 00:00:00 2001 From: dttb Date: Mon, 8 Jun 2026 23:27:53 +0300 Subject: [PATCH] =?UTF-8?q?swarmclaw:=20=D0=BE=D0=B1=D0=B0=20=D0=B0=D0=B3?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=B0=20=D0=BD=D0=B0=20OmniRoute/Opus=20(?= =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20default=20=D1=87=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B7=20=D0=91=D0=94),=20=D0=B3=D1=80=D0=B0=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=20claude-cli=20=D1=84=D0=BE=D0=BB=D0=BB=D0=B1=D0=B5=D0=BA/Sess?= =?UTF-8?q?ion=20not=20found/gateway=20health?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- decisions/2026-06-08-swarmclaw-lxc135-deploy.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/decisions/2026-06-08-swarmclaw-lxc135-deploy.md b/decisions/2026-06-08-swarmclaw-lxc135-deploy.md index b39bb40..f83b9c8 100644 --- a/decisions/2026-06-08-swarmclaw-lxc135-deploy.md +++ b/decisions/2026-06-08-swarmclaw-lxc135-deploy.md @@ -50,7 +50,9 @@ tags: [dttb, swarmclaw, openclaw, orchestrator, lxc, docker] 6. Локаль в LXC не настроена (`locale: Cannot set LC_*`) — косметика, при желании `locale-gen en_US.UTF-8`. 7. **Агент отвечал `Error: Missing credentials … OPENAI_API_KEY`** хотя OmniRoute ключ не требует. Причина: OpenAI-совместимый клиент внутри SwarmClaw отказывается слать запрос без непустого `apiKey`. **Фикс:** создать dummy-credential (`POST /api/credentials {provider:omniroute, apiKey:"omniroute-noauth-dummy"}` → `cred_0d2feda42f7b`) и привязать к провайдеру (`requiresApiKey:true` + `credentialId`) И к агенту (`PUT /api/agents/` — PATCH даёт 405). OmniRoute ключ игнорирует. После — агент Dirizhyor отвечает на Opus 4.8 (проверено: «работает», + сам диагностировал второй агент через tools). 8. **UI «No agents yet» + циклический логин в Chrome** = браузер держал старый JS-бандл (в логах `Failed to find Server Action`), ломались Server Actions (вход и загрузка). Сервер исправен (REST API через NPM HTTPS отдаёт auth+agents). Лечится чистым браузером (Yandex/инкогнито сработали сразу) или Clear site data в Chrome. SW/PWA нет, контейнер стабилен (0 рестартов). -9. **Дефолтный агент Assistant** сидит на провайдере `claude-cli` (в контейнере нет) + пустая модель → не отвечает. Удалён по решению Олега (`DELETE /api/agents/default`). Остался только Dirizhyor. +9. **Дефолтный агент Assistant/«Ассистент»** упорно падал `Claude CLI not found`. Корень в коде: `agent-runtime-config.ts` → `provider = seed.provider || 'claude-cli'` (хардкод-фоллбек). У default слетал/пустел provider → фоллбек на claude-cli (в контейнере нет). `POST /api/agents` не даёт задать фиксированный `id`, `PUT /api/agents/default` для пустого не помог. **Фикс: прямой `INSERT OR REPLACE INTO agents` в `data/swarmclaw.db`** — id=`default`, data = копия Dirizhyor (omniroute/opus/cred). App подхватывает без рестарта (loadAgents читает свежо). Теперь оба агента на OmniRoute/Opus. +10. **«Session not found» при тесте через curl** — нельзя слать в произвольный `agent-chat-*` ID; сессия создаётся UI/отдельно. Не баг агента — артефакт диагностики. Реальные сессии (созданные в UI) работают (`completed`). +11. **Gateway health «не обновлялась 30 мин / статус неизвестно»** — у RPC `/api/openclaw/gateway` есть только connect/disconnect/reload-mode; health-поле профиля (`status`,`lastCheckedAt`) обновляет фоновый probe, не RPC. `gateway.connect{profileId}` → `ok:true` (связь рабочая), но индикатор остаётся `unknown`. Косметика мониторинга, на работу не влияет. ## Схема API (для будущих правок headless) - `POST /api/providers` → `{id,name,baseUrl,models[],requiresApiKey,isEnabled}` (type всегда `custom`), хранит JSON в таблице `provider_configs`.