swarmclaw: фикс окна контекста агента (8192 fallback -> 200K патч), claude-cli не нужен

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
dttb
2026-06-12 00:36:00 +03:00
parent a0be4f33e5
commit dcf0ba6308

View File

@@ -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`).