meta(tasks): qwen-web paused (WAF-стена), session handoff + docker fix note

This commit is contained in:
2026-08-22 18:40:00 +03:00
parent 591ad2ac3a
commit d948c7f930
2 changed files with 22 additions and 41 deletions

View File

@@ -1,51 +1,32 @@
---
_last_updated_: 2026-08-22T14:49:52Z
session_id: llm-web-proxy-deploy-2026-08-22
_last_updated_: 2026-08-22T15:40:00Z
session_id: qwen-web-waf-wall-2026-08-22
---
# Next session handoff
## Recent commits (эта сессия)
- llm-web-proxy `8dd8a45` feat: configurable modelPrefix — lwp/ aliases (default off, backward compat)
- llm-web-proxy `6342d85` fix(version): честный semver 0.1.5 (sed промахивался в 3 коммитах)
- llm-web-proxy `675112b` feat: lwp config set port
- llm-web-proxy `8d93c25` feat: executor spec logging — tool/stream/session/upstream события
- llm-web-proxy `22e0663` feat: minimal dashboard — /metrics JSON + HTML
- skills `349aa7c` feat: web-search skill (search_web tool, RED→GREEN, live-verified)
- pi-extensions `1542603` + `b0e62af` feat: search_web tool (vision-subagent pattern)
- .admin `625ab3e6` docs(tasks): llm-web-proxy npm global install fixed
## Сделано (эта сессия)
- **npm i -g v0.1.6** — реальная глобальная установка; починены files-контракт (autostart.js/notify.js/paths.js не были в тарболе), serve-путь (dist резолвился от data-dir), autostart .vbs пересоздан на глобальный CLI.
- **Дашборд**: /metrics (окна 1h/6h/24h/all, per-account/combo/endpoint, failoverByStatus) + одна HTML-страница (селектор окон, фильтр эндпоинтов, локальное время); GET / отдаёт её.
- **Executor-логирование спеки #8**: event=tool-prompt / raw-reply (sanitized sample) / parse (calls/valid/args_empty) / upstream / session / stream (counting wrapper). Метрики C/D/E на дашборде ожили (live: 100% valid args).
- **modelPrefix**: опциональный (default "" = off); `lwp/deepseek-flash-web` → комбо. CLI `lwp config set prefix <p>`.
- **web-search скилл + search_web тул**: RED (без скила субагент отказался) → GREEN (вызвал search_web, ответ с [1] blog.rust-lang.org). Дефолт-модель lwp/deepseek-pro-search-web (pro-search). Поиск включён по умолчанию, «без поиска» — off до конца сессии (как using-interns grant).
- **Деплой**: llm-web-proxy глобально установлен (конфиг/секреты/ключи в %APPDATA%\llm-web-proxy), autostart .vbs → глобальный CLI, сервер жив на 8788.
## Recent commits
- lwp `74a271a`: feat(notify) — информативные toast'ы token-expired (combo + actionable detail из ошибки executor'а), v0.1.8, 94 теста
- lwp `6ef57bc`: feat(qwen-web) — executor (v2 API, cookie jar, captcha/WAF-детект), --executor CLI, v0.1.7, запушено
- .admin `591ad2ac`/`9d0c2c05`: подзадача llm-web-proxy-qwen-web (заведена → executor готов)
- Бонус-фикс: **Docker Desktop починен** — Electron GPU-крэш (AMD-драйвер нояб 2021) → `DisableHardwareAcceleration: true` в `%APPDATA%\Docker\settings-store.json` (бэкап .bak-20260822). Холодный старт 36с, 0 крэшей.
## Open треки
| Трек | Готовность | Entry-point |
|---|---|---|
| llm-web-proxy п.2 mac/linux autostart | не проверить на win (только pure-builder тесты есть) | .tasks/STATUS.md 🔴 |
| llm-web-proxy п.4 qwen-web | 🟡 — ключ есть, падал EAI_AGAIN (DNS) | .tasks/llm-web-proxy.md |
| llm-web-proxy п.5 gemini/kimi/grok-web | кандидаты (emulated tool calling) | .tasks/llm-web-proxy.md |
| web-search скилл | установлен, тестирован — следующий шаг: юзер-сценарии в живых сессиях | skills/web-search/SKILL.md |
| Реальный деплой apilki (npmjs+github) | ждёт отмашки | «Спроси user'а» |
| [llm-web-proxy-qwen-web] (🟡 paused) | executor готов+задеплоен (v0.1.8, комбо qwen-web/qwen-main, свежий cookie юзера в secrets.json); СТЕНА: baxia-WAF капча | **юзер покажет рабочий подход** («из под omniroute работает»); сравнить с executor'ом В КОНТЕЙНЕРЕ omniroute (≠ GitHub main, который я портировал) |
| [llm-web-proxy] (🔴 active) | остаток: п.2 mac/linux autostart live-тест, п.5 gemini/kimi/grok-web | `.tasks/llm-web-proxy.md` |
| Docker Desktop | починен; наблюдать — не рецидивирует ли GPU-крэш (если да → обновить AMD-драйвер) | `docker ps` + `%LOCALAPPDATA%\Docker\log\host\electron-*.log` |
## Спроси user'а
- **qwen-web** (п.4): чинить DNS = второй web-канал? Нужен ли сейчас.
- **Дашборд** оставить крутиться или стоп (сейчас сервер жив, autostart поднимет при перезагрузке).
- (старое) Реальный деплой apilki-билдеров npmjs+github — за явной отмашкой + токены в pass.
- qwen-web: юзер обещал показать что-то интересное (вероятно, рабочий путь через omniroute). Начать с этого.
- Если qwen-web останется капчей-заблокированным — решить: (а) CDP-драйвеный executor, (б) портировать рабочую версию из контейнера omniroute, (в) закрыть подзадачу как «WAF-wall, не масштабируется».
## Не делать (preemptive guards)
- Не запускать реальный publish в npmjs/github.com без явной отмашки.
- **sched-vds-deploy не запускать** — paused по решению vitya (2026-08-21).
- Не писать токены в git/handoff/письма (secrets rule: только pass).
- Не лезть в код агентов самим (фиксы через режект-письма).
- **Не смешивать search-комбо с агентскими** (search ломает эмуляцию тулов) — search только через субагента/тул search_web.
- НЕ переписывать qwen executor'а с GitHub main ещё раз — в контейнере omniroute лежит РАБОЧАЯ версия (проверить `/app/open-sse/executors/qwen-web.ts` в docker exec, diff с портом).
- НЕ вставлять cookie'и в коммиты/handoff (секреты). Cookie: lwp `secrets.json` (gitignored), /tmp/qwen_cookie_new.txt (свежий, от юзера), /tmp/qwen_cookie.txt (старый из omniroute DB).
- НЕ трогать CDP-браузер :9222 без нужды — там юзер разгадывал капчу вручную, сессия хрупкая.
- НЕ закрывать [llm-web-proxy-qwen-web] без явного решения юзера.
## Memory updates за сессию
- llm-web-proxy: data-dir кроссплатформенно (APPDATA/XDG), конфиг/секреты/ключи раздельны (config.json / secrets.json / keys.json).
- pi-интеграция: провайдер `llm-web` в ~/.pi/agent/models.json, модели `lwp/deepseek-*-web` (префикс lwp/ теперь настраивается в прокси, modelPrefix).
- Тул-паттерн «субагент-на-специфичной-модели»: vision-subagent (describe_image) и web-search (search_web) — pi-расширения, модель из конфига (env/JSON), modelRegistry.complete на чистом контексте. Кандидат в shared-wiki (concept: pi-extensions subagent-tool pattern).
- semver-урок: sed-бампы писать в одном шаге с коммитом, проверять `grep version` до push (3 коммита уехали с застрявшей 0.1.2).
- (нет на этом раунде — предлагается ингест в вики, см. ритуал закрытия)

View File

@@ -1,4 +1,5 @@
# Admin Task Board
_Updated: 2026-08-22 — 🟡 **[llm-web-proxy-qwen-web] PAUSED** (решение vitya: стоп, next-сессия покажет рабочий подход; WAF-стена: baxia капча даже из браузера). Docker починен (GPU-крэш → DisableHardwareAcceleration). Хендофф записан._
_Updated: 2026-08-22 — 🔵 **[llm-web-proxy-qwen-web]** executor готов и задеплоен (0.1.7, 92 теста, капча-детект, фикс model-alias), live заблокирован капчей — нужен свежий Cookie от vitya. Docker Desktop починен (GPU-крэш → DisableHardwareAcceleration)._
_Updated: 2026-08-22 — 🆕 подзадача ⚪ **[llm-web-proxy-qwen-web]** заведена (п.4 qwen-web: DNS EAI_AGAIN перепроверен — chat.qwen.ai резолвится, блокер снят; ключ есть; комбо добавить в lwp). ⚪ **[llm-web-proxy] заведена** (спека .tasks/llm-web-proxy.md: кастомный web-LLM провайдер для pi + Claude Code — web-чаты, эмуляция тулов, без оверкилла omniroute; делать в следующей сессии). 🟢 **[sched-pipelines-local-stack] ЗАКРЫТА** (ритуал закрытия, решение vitya): мок-кампания финализирована ранее (0.1.0 published оба воркера, повторные раны noop, 0.2.0-кейс проверен симуляцией и откачен; фикс #7 httpGet fetch-Response контракта принят). Реальный деплой apilki — за отмашкой юзера (в «Спроси user'а»); VDS-миграция — таска sched-vds-deploy (paused). Wiki: +2 концепта в shared (verdaccio-token-buildkit-secret, msys-no-pathconv-docker-windows).
_Updated: 2026-08-21 — 🟢 **[sched-fnf-daemon-image-storage] F&F ЗАКРЫТ: 7/7 + фиксы F1/F2/N1/N2 ПРИНЯТЫ** (их письмо 23:40Z, commit e755b52, daemon 0.10.1). Ретест затронутых поверхностей на `registry.kzntsv.site/sched-daemon:0.10.1` (digest 269093a08f6e…): F1 — 0.10.1 стартует против исправленного `deploy/tasks.json` (schedules); F2 — рецепт из доков (BuildKit secret + npmMinimalAgeGate:0) собран 1-в-1, history 0 JWT, storage-mongo 0.4.0, +смоук ступени 4 (коллекции, ран); N2 — баннер `storage=custom module=./my-storage.mjs` (тест пинит module=); N1 — нота MSYS_NO_PATHCONV в доках. Регресс 1/2/3/5 на 0.10.1 — тексты фейлов идентичны. Акцепт: `sched/.agents/inbox/2026-08-21T23-41-30Z-admin.md`.
@@ -17,12 +18,11 @@ _Updated: 2026-08-20 — 🟡 **[sched-pipelines-local-stack]** schedd **0.9.0
---
## 🔵 [llm-web-proxy-qwen-web] — добавить qwen-web комбо в lwp (подзадача llm-web-proxy, п.4)
## 🟡 [llm-web-proxy-qwen-web] — добавить qwen-web комбо в lwp (подзадача llm-web-proxy, п.4)
**Status:** blocked
**Blocker:** свежий Cookie header chat.qwen.ai от vitya (сессия из omniroute заблокирована слайдер-капчей — FAIL_SYS_USER_VALIDATE; нужен один раз решить капчу в браузере и вставить новый cookie)
**Where I stopped:** EXECUTOR ГОТОВ и задеплоен — 10 новых тестов (92 всего), версия 0.1.7, `lwp combo add --executor` добавлен, комбо qwen-web/qwen-main в конфиге, executor зарегистрирован в server.js. Live-цепочка проверена: new-chat 200 → completion 200 → детект капча-эневелопа (FAIL_SYS/punish) → 401 вместо пустого ответа. Два дефекта порта найдены и пофикшены: (1) HTTP-200 JSON-обёртка капчи молча давала пустой ответ — теперь 401 с actionable-сообщением; (2) body.model (имя комбо) перебивал acct.model — апстрим получал "qwen-web" вместо qwen3.7-max. Docker Desktop починен заодно (GPU-крэш, DisableHardwareAcceleration).
**Next action:** vitya: открыть chat.qwen.ai, решить капчу, скопировать свежий Cookie header (cna/ssxmod_itna/token) → обновить `lwp account add qwen-web qwen-main --token <cookie>``lwp test qwen-web` (ожидаем 200 + стриминг + tool-calls)
**Status:** paused — решение vitya 2026-08-22: стоп до следующей сессии (покажет рабочий подход; «из под omniroute работает» — там есть живой путь к qwen)
**Where I stopped:** EXECUTOR ГОТОВ и задеплоен (v0.1.8, 94 теста, комбо qwen-web/qwen-main, свежий cookie юзера в secrets.json). СТЕНА: Alibaba baxia-WAF ставит слайдер-капчу (FAIL_SYS_USER_VALIDATE / RGV587 / punish?action=captcha) на ЛЮБОЙ не-браузерный запрос — даже со свежим cookie и полным jar. Проверено: (1) Node-fetch со всеми вариантами заголовков (sec-ch-ua, Accept: text/event-stream, bx-umidtoken статический/отсутствует) — капча; (2) настоящий Chrome через CDP (:9222, browser-tools профиль) — chats/new ПРОХОДИТ (браузерный фингерпринт), но completion виснет, капча возвращается; капчу юзер разгадывал в CDP вручную. Ключевая зацепка: omniroute qwen-web работает («из под omniroute работает») — надо посмотреть как (у omniroute в контейнере своя версия executor'а + возможно решённый punish-flow / живой браузерный путь).
**Next action:** сессия-2: юзер покажет рабочий подход; сравнить с executor'ом в контейнере omniroute (/app/open-sse/executors/qwen-web.ts — версия в контейнере ≠ GitHub main, которую я портировал); варианты: реальный bx-umidtoken, CDP-драйвеный executor, либо путь omniroute.
**Branch:** master
**Weight:** needs-claude
**Notify:** OpeItcLoc03/admin