From d948c7f93090b672bc62ffbd85d5dd8dec47ee9c Mon Sep 17 00:00:00 2001 From: vitya Date: Sat, 22 Aug 2026 18:40:00 +0300 Subject: [PATCH] =?UTF-8?q?meta(tasks):=20qwen-web=20paused=20(WAF-=D1=81?= =?UTF-8?q?=D1=82=D0=B5=D0=BD=D0=B0),=20session=20handoff=20+=20docker=20f?= =?UTF-8?q?ix=20note?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .tasks/NEXT_SESSION.md | 53 ++++++++++++++---------------------------- .tasks/STATUS.md | 10 ++++---- 2 files changed, 22 insertions(+), 41 deletions(-) diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index 64c7937..6e0d13e 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -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

`. -- **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). +- (нет на этом раунде — предлагается ингест в вики, см. ритуал закрытия) diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 960767d..7c86d8d 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -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 ` → `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