Open WebUI: ENABLE_FORWARD_USER_INFO_HEADERS=true — фикс потери контекста cptr (проброс X-OpenWebUI-Chat-Id)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
dttb
2026-06-30 14:38:49 +03:00
parent 7600adea4f
commit b9478cc0fd
2 changed files with 6 additions and 0 deletions

View File

@@ -32,6 +32,11 @@ tags: [dttb, mac, ai, agent, open-webui, cptr, netbird, macos-tcc]
- «Рулить откуда угодно» работает, пока **Mac в домашней сети** (Open WebUI без NetBird тянется только по 10.0.0.180). Для полного роуминга — добавить NetBird на LXC 142 (отложено).
- Мозг агента зависит от NetBird на Маке (100.70.92.138). NetBird ляжет → агент без мозга (`reference_mac_sudo` для рестарта).
## ⚠️ Грабля 2: cptr теряет контекст между ходами в Open WebUI
**Симптом:** в UI Олег ответил «Да» на предложение агента — cptr: «мы ещё ничего не обсуждали». Каждое новое сообщение приходило как пустая сессия.
**Причина:** cptr — агент с **серверной сессией**, склеивает ходы по заголовку **`X-OpenWebUI-Chat-Id`** (без него — каждый запрос = новая сессия, историю из тела он НЕ использует). Open WebUI по умолчанию этот заголовок **не шлёт** (`ENABLE_FORWARD_USER_INFO_HEADERS` не задан = false). Проверено напрямую: при стабильном `X-OpenWebUI-Chat-Id` cptr помнит (ход2 без истории в теле → верный ответ); без него — забывает.
**Фикс:** на Open WebUI (LXC 142) выставлен `ENABLE_FORWARD_USER_INFO_HEADERS=true` (форвардит `X-OpenWebUI-User-*` + `X-OpenWebUI-Chat-Id`). Это env, не persistent-config → контейнер пересоздан: `docker inspect open-webui` → дамп всех env в `/root/owui.env`, добавлен флаг, `docker run … --env-file /root/owui.env` (том `open-webui` тот же, логины/токены живы; старый контейнер держал как `open-webui-old` для отката, затем удалил). E2E через Open WebUI с одним `chat_id`: ход1 «ок» → ход2 (без истории) «73» = контекст держится.
## Проверено (e2e)
chat.dttb.ru → `cptr/ai` → агент на Маке → `hostname; sw_vers; ls ~/Desktop|wc -l` = `MacBookPro.lan` / `macOS` / `16`. Список `~/Desktop` совпал с реальным. Прямой вызов cptr `/v1` и через Open WebUI — оба ок.

View File

@@ -244,6 +244,7 @@ tags: [dttb, proxmox]
| Бэкенд | OmniRoute `http://10.0.0.179:20128/v1` (OpenAI-совместимый; ключ коннекта = **пустая строка**, НЕ dummy — с непустым неизвестным ключом OmniRoute отдаёт 0 моделей) → 242 модели; дефолт `cc/claude-opus-4-8` (делит Max-кап с german/openclaw/swarmclaw/code-server, бывает 400 «out of extra usage», fallback `kr/claude-sonnet-4.5`) |
| Авторизация | встроенная Open WebUI (1 admin = Олег). Открытую регистрацию выключать в Admin Panel → Settings (env `ENABLE_SIGNUP` не рулит — persistent config в БД) |
| Коннекты | 5 OpenAI-бэкендов: idx0 OmniRoute, idx1 German/Hermes (`hermes-agent`), idx2 GLM z.ai, idx3 openclaw/Антошка, **idx4 cptr (Mac)** (`cptr/ai` — агент на Маке Олега, `http://10.0.0.180:8000/v1`, рулит реальными файлами Мака; мозг OmniRoute via NetBird). Был песочница LXC 146 → перенаправлен на Mac 2026-06-30, см. [[../../decisions/2026-06-30-cptr-on-mac]] |
| ⚠️ env-флаг для cptr | `ENABLE_FORWARD_USER_INFO_HEADERS=true` (добавлен 2026-06-30) — иначе Open WebUI не шлёт `X-OpenWebUI-Chat-Id`, и **агент cptr теряет контекст между ходами** (каждое сообщение = новая сессия). Это env, не persistent-config → контейнер пересоздан с `--env-file /root/owui.env` (туда сдамплены все 44 env через `docker inspect`, добавлен флаг); том `open-webui` сохранён |
| Назначение | Личный веб-клиент «как ChatGPT» поверх OmniRoute. Грабли: первый старт тянет embedding-модель с HuggingFace (~1 ГБ, медленно из РФ → DNS контейнера = 1.1.1.1 против FakeIP роутера). См. [[../../decisions/2026-06-22-open-webui-deploy]] |
---