swarmclaw: фикс чатов на iPad/Safari (NPM proxy_buffering off для SSE-стрима)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
dttb
2026-06-09 13:15:15 +03:00
parent 4d7e9c3879
commit 5371b6aa36

View File

@@ -70,6 +70,17 @@ SwarmClaw имеет раздел **Knowledge** (`/api/knowledge`), и аген
## OmniRoute «out of usage» = баг версии (2026-06-09) ## OmniRoute «out of usage» = баг версии (2026-06-09)
Агенты на `cc/claude-opus-4-8` начали падать `400 You're out of extra usage`. Оказалось — НЕ лимит Max, а баг устаревшего OmniRoute (стоял 3.8.7, актуально 3.8.16). Обновление вылечило. Грабля апдейта: entry-point переехал `app/server.js``dist/server.js` → поправлен `ExecStart` в `omniroute.service` (иначе crash-loop). Подробно — [[../claude-memory/omniroute]] + memory `feedback_omniroute_update`. Агенты SwarmClaw остаются на **Opus 4.8** (Sonnet Олега не устроил). Агенты на `cc/claude-opus-4-8` начали падать `400 You're out of extra usage`. Оказалось — НЕ лимит Max, а баг устаревшего OmniRoute (стоял 3.8.7, актуально 3.8.16). Обновление вылечило. Грабля апдейта: entry-point переехал `app/server.js``dist/server.js` → поправлен `ExecStart` в `omniroute.service` (иначе crash-loop). Подробно — [[../claude-memory/omniroute]] + memory `feedback_omniroute_update`. Агенты SwarmClaw остаются на **Opus 4.8** (Sonnet Олега не устроил).
## iPad/iPhone Safari — чаты не отвечали (2026-06-09)
На Mac (Chromium/Yandex) чаты работали, на iPad Safari открывалось, но ответы агента не приходили. Причина — чат отдаёт ответ через **SSE** (`text/event-stream` из `POST /api/chats/[id]/chat`), а NPM (nginx) по умолчанию буферизирует proxy → Safari iOS/iPadOS строг к буферизированному стриму. **Фикс — `advanced_config` у NPM-хоста #32:**
```
proxy_buffering off;
proxy_request_buffering off;
proxy_set_header X-Accel-Buffering no;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
```
После reload — чаты на iPad заработали. Покрывает и iPhone. (Применять к любому SSE/стрим-сервису за NPM.)
## Схема API (для будущих правок headless) ## Схема API (для будущих правок headless)
- `POST /api/providers``{id,name,baseUrl,models[],requiresApiKey,isEnabled}` (type всегда `custom`), хранит JSON в таблице `provider_configs`. - `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`). - `POST /api/agents` → zod `AgentCreateSchema`; обяз. `name`,`provider`; `ollamaMode` только `local|cloud|null` (не `off`).