diff --git a/decisions/2026-06-08-swarmclaw-lxc135-deploy.md b/decisions/2026-06-08-swarmclaw-lxc135-deploy.md index 4253a3d..82a7836 100644 --- a/decisions/2026-06-08-swarmclaw-lxc135-deploy.md +++ b/decisions/2026-06-08-swarmclaw-lxc135-deploy.md @@ -94,6 +94,14 @@ Device SwarmClaw (10.0.0.135) спарен на openclaw с `operator.admin` (ap - **Грабля: `agent.gatewayProfileId`** переключает chat-модель агента на gateway-провайдера (openclaw model «default») → `MODEL_NOT_FOUND 404`, агент перестаёт отвечать. **НЕ ставить** `gatewayProfileId` на агенте; openclaw_nodes сам берёт дефолтный gateway-профиль. Оставлять `gatewayProfileId: null`, provider `omniroute`. - **Полное управление (cron, agent-files SOUL/IDENTITY/.., models, deploy)** — только через UI (Providers → профиль «Antoshka») или SwarmClaw API напрямую (`/api/openclaw/{cron,agent-files,models,...}?profileId=gateway-0eaf65b0` с cookie `sc_auth`). Через агентский чат cron/файлы НЕ редактируются. +## Окно контекста агента = 8192 (баг!) → патч на 200K (2026-06-12) +Дирижёр жаловался на «ограничение окна» и просил пересадить себя на `claude-cli` + Anthropic-ключ. **Корень — НЕ модель и НЕ Max-лимит:** `getContextWindowSize(provider, model)` (`src/lib/server/context-manager.ts`) для незнакомого custom-провайдера `omniroute` не находит его ни в `PROVIDER_CONTEXT_WINDOWS[model]` (там `claude-opus-4-6`, нет `cc/claude-opus-4-8`), ни в `PROVIDER_DEFAULT_WINDOWS[provider]` (есть `anthropic/openclaw/google`, нет `omniroute`) → **fallback `8_192`**. При 4.8k токенов агент уже «на 58%» и паникует. OmniRoute при этом реально отдаёт `context_length: 1000000` для `cc/claude-opus-4-8`. +- **Чистого API-пути нет** — окна зашиты в бандл, `model_overrides` про подмену модели (heartbeat), provider-config `contextWindow` нигде не читается. +- **Фикс — патч каталога окон в бандле:** добавлен `omniroute:2e5` в `PROVIDER_DEFAULT_WINDOWS` (чанк `/app/.next/server/chunks/src_lib_server_06.*.js`, паттерн `goose:2e5,openclaw:128e3` → `...,omniroute:2e5,openclaw:128e3`). Проверено: `context-status` → `contextWindow: 200000`. Бэкап чанка `.bak-ctxwin`. +- **200K, не 1M:** консервативно (гарантированно для Opus). 1M ставить только после проверки, что Max-тракт `cc/*` реально принимает >200K (иначе переполнение → ошибка). +- **Устойчивость:** патч в бандле образа — слетает при `--force-recreate`/обновлении. Скрипт `/opt/swarmclaw/repatch-ctxwin.sh` переприменяет (idempotent). Запускать после каждого `docker compose pull`/update SwarmClaw. +- **Вывод про claude-cli:** не нужен. Ключ Anthropic не давать — проблема была чисто в неверно посчитанном окне. + ## Схема API (для будущих правок headless) - `POST /api/providers` → `{id,name,baseUrl,models[],requiresApiKey,isEnabled}` (type всегда `custom`), хранит JSON в таблице `provider_configs`. - `POST /api/agents` → zod `AgentCreateSchema`; обяз. `name`,`provider`; `ollamaMode` только `local|cloud|null` (не `off`).