---
name: cebersresearch-gigachat-web
description: CebersResearch — неофициальный GigaChat-3-Ultra через анонимный реверс-прокси giga.chat (gigachat-web)
metadata: 
  node_type: memory
  type: project
  originSessionId: bec80f54-b944-4b3d-b98e-48e98f0f3e05
---

Неофициальный «бесплатный» GigaChat в [[cebersresearch_overview]] вдобавок к официальному [[cebersresearch_gigachat]]. Модель `research/gigachat-ultra` = **GigaChat-3-Ultra** (реально GigaChat-3.5-432B-A28B), доступна **анонимно** через веб-бэкенд giga.chat.

Сервис `~/Разработки/gigachat-web` на мини (venv py3.12, FastAPI, launchd `com.cebers.gigachat-web`, `127.0.0.1:1720`, OpenAI-совместимо). Скрипт `gcweb_app.py` (НЕ app.py — pgrep не матчит кириллический путь «Разработки», нужен ascii-хвост; process_match=`gcweb_app.py`).

**Механика (вскрыта через Claude-in-Chrome):** giga.chat аноним, без Sber ID. Отправка `POST /api/smartproxy/api/prelogin/api/v0/sessions/request` тело `{text,model:"GigaChat-3-Ultra",agent:"cc540466-…"}`, ответ SSE (delta / message.value). Идентичность: заголовки x-device-id/x-project-id/x-sm-user-id (стабильны, в identity.json) + **HttpOnly-кука `gc_public`** (JWT, aud GIGACHAT_PRELOGIN, жизнь ~310с). DBSC НЕ используется — кука портируема на мини (IP-привязки нет).

**Живучесть:** ротирует токен **только `/sessions/request`** (GET /users НЕ ставит Set-Cookie!). Прокси само-рефрешит gc_public из Set-Cookie на каждом запросе (проверенный путь = `c.stream`+http2, НЕ `c.post`); keepalive дренирует минимальный чат-пинг за 60с до истечения. Первичный минт `gc_public` — через OIDC-хендшейк Салют ID (привязан к браузеру).

**Алерт (v0.6.6):** `/healthz` → 503 только после `HARDFAIL_SEC=180с` непрерывных неудач рефреша (`fail_since`); транзиент = 200 (само-рефреш чинит молча). 503 → тайл degraded → TG-алерт (в dashboard_config `notifications.telegram.events` включают degraded). Восстановление → running.

**Голос в /research (v0.6.6):** GigaChat-3-Ultra = 4-й фолбэк синтеза в `_do_synthesis` (FreeModel→DeepSeek→Qwen→GigaChat-Ultra), дефолт не меняется.

**САМО-ИСЦЕЛЕНИЕ (v0.6.7) — реимпорт из браузера БОЛЬШЕ НЕ НУЖЕН:** `refresh_cookie.py` (Playwright headless chromium в venv gigachat-web) минтит свежую анонимную сессию сам: свежий контекст=холодный старт→SPA минтит gc_public через OIDC→скрипт читает HttpOnly-куку через `ctx.cookies()` БЕЗ url (грабля: Path=/api, url-фильтр её прячет) + ловит x-* заголовки из smartproxy-запросов→пишет identity.json+gc_public.txt, верифицирует чатом (~6с). `_remint_sync()` в gcweb_app.py зовёт его при отказе keepalive ИЛИ при старте с мёртвой кукой (cooldown 120с), перезагружает identity в процессе. Каждый минт = НОВЫЙ анонимный юзер (device/project/user id меняются — берём консистентным набором). Проверено: мусор в gc_public.txt→рестарт→авто-минт→healthz ok.

**Дашборд auto_restart для тайла gigachat_web ВЫКЛЮЧЕН** (пер-карточный override `auto_restart:{enabled:false}`) — рестарт мёртвую куку не чинил и добивал keepalive; теперь чинит self-heal. degraded теперь редок; при отказе self-heal >180с → одно 503 (полезный алерт).

**Историческая грабля (до v0.6.7):** ручной реимпорт из DevTools. Хрупко (против ToS, Sber может прикрыть) → официальный путь [[cebersresearch_gigachat]] = фолбэк. Детали: Obsidian Projects/CebersResearch Changelog v0.6.5-0.6.7 + Decisions D-giga-3.
