docs(handoff): сессия llm-web-proxy-deploy завершена — npm i -g v0.1.6, дашборд, executor-логирование, web-search скилл
This commit is contained in:
@@ -1,84 +1,51 @@
|
||||
---
|
||||
_last_updated_: 2026-08-22T16:45:00Z
|
||||
session_id: llm-web-proxy-2026-08-22
|
||||
_last_updated_: 2026-08-22T14:49:52Z
|
||||
session_id: llm-web-proxy-deploy-2026-08-22
|
||||
---
|
||||
|
||||
# Next session handoff
|
||||
|
||||
## llm-web-proxy — построен (эта сессия)
|
||||
## 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
|
||||
|
||||
Кастомный web-LLM провайдер для pi + Claude Code (веб-чаты DeepSeek вместо API).
|
||||
Код: `C:/Users/vitya/projects/.common/lib/llm-web-proxy` (git repo, remote `victor/llm-web-proxy`).
|
||||
Таска: `.tasks/llm-web-proxy.md` (спека). Вики: `.wiki/` в проекте (концепты tool-emulation/combo/blocking).
|
||||
|
||||
### Что работает (58 тестов GREEN, live-проверено)
|
||||
- `/v1/chat/completions` (OpenAI) + `/v1/messages` (Anthropic, Claude Code) — оба формата
|
||||
- Эмуляция `<tool>` → tool_calls / tool_use (из кода omniroute, vendor/)
|
||||
- 4 комбо: flash/pro + flash-search/pro-search (search отдельно, НЕ смешивать с агентскими)
|
||||
- Round-robin по аккаунтам (megan/yulia/vitya) + cooldown/circuit + failover
|
||||
- API-ключи (SHA-256, `lwp key create`), auth на /v1/*
|
||||
- Блокировки: операторская (`lwp account block --until`) + авто-детект mute (persist в data/)
|
||||
- Per-account proxy (undici), конфиг через CLI (`lwp combo/account/key/status/test`)
|
||||
- npm-пакет: data-dir кроссплатформенно (APPDATA/XDG), `lwp serve`, `lwp autostart enable`
|
||||
(win .vbs / linux systemd-user / mac launchd — паттерн omniroute)
|
||||
- Уведомления: нативные toast (node-notifier) по умолчанию; ntfy — OFF (включается конфигом)
|
||||
- Docker: docker-compose (data volume), НО docker демон на машине был выключен — проверка в docker не финальна
|
||||
|
||||
### Состояние аккаунтов deepseek-web
|
||||
- **megan: muted** в DeepSeek до 2026-08-23 14:38 МСК (авто-блок стоит, переживает рестарт)
|
||||
- yulia, vitya — работают. Ротация идёт по ним.
|
||||
|
||||
### pi-интеграция
|
||||
`~/.pi/agent/models.json` → провайдер `llm-web` (baseUrl http://127.0.0.1:8788/v1, ключ выпущен)
|
||||
- `local/deepseek-flash-web`, `local/deepseek-pro-web`
|
||||
- `local/deepseek-flash-search-web`, `local/deepseek-pro-search-web`
|
||||
- omniroute удалён из models.json (заменён llm-web-proxy)
|
||||
|
||||
### Планы на следующую сессию (по приоритету)
|
||||
1. **npm i -g реально не проверен** — прогнать `npm pack` + `npm i -g <tarball>` на win;
|
||||
проверить `lwp serve`/`lwp autostart` из глобальной установки (files-список, resolveCli пути).
|
||||
2. **mac/linux ветки autostart не протестированы** — только pure-builder тесты; live только win .vbs.
|
||||
3. **lwp serve при автозапуске** — .vbs указывает на bin/lwp.mjs в .common; при глобальной установке
|
||||
путь другой — проверить, что autostart резолвит правильный cli.
|
||||
4. **qwen-web** — ключ есть, падал по DNS (EAI_AGAIN); починить = второй web-канал.
|
||||
5. **gemini-web / kimi-web / grok-web** — кандидаты (emulated tool calling), добавить отдельными комбо.
|
||||
6. **Скилл с субагент-поиском** на `*-search` комбо — план юзера (writing-skills).
|
||||
|
||||
### Открытые вопросы юзеру
|
||||
- npm i -g локально или в registry (verdaccio)? Деплой llm-web-proxy как службы — уже autostart.
|
||||
|
||||
---
|
||||
|
||||
# Next session handoff
|
||||
|
||||
## Recent commits
|
||||
- .admin `da97d25c` docs(tasks): F&F daemon-image closed — fixes accepted (0.10.1)
|
||||
- .admin `6fdb9b51` docs(tasks): F&F daemon-image 7/7 PASS + findings F1/F2
|
||||
- .admin `aa88f538` docs(handoff): сессия 0.2.0-симуляция завершена (предыдущая сессия)
|
||||
|
||||
## F&F daemon-npm-image-storage — ЗАКРЫТ (эта сессия)
|
||||
Лестница **7/7 PASS** + фиксы sched (commit e755b52, daemon **0.10.1**, digest `269093a08f6e…`) приняты после ретеста затронутых поверхностей (F1/F2/N2 живьём + регресс ступеней 1/2/3/5 — без изменений). Письма: отчёт `2026-08-21T23-27-41Z-admin.md`, акцепт `2026-08-21T23-41-30Z-admin.md` (sched/.agents/inbox, gitignored file-drop). Стенд: `.tmp/fnf-daemon-image/` (gitignored): Dockerfile.mongo (0.10.0), Dockerfile.doc-recipe-v2 (0.10.1, как в доках), my-storage.mjs, my-storage-bad.mjs, tasks.json. Дальше — sched/books сами.
|
||||
## Сделано (эта сессия)
|
||||
- **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.
|
||||
|
||||
## Open треки
|
||||
| Трек | Готовность | Entry-point |
|
||||
|---|---|---|
|
||||
| Реальный деплой apilki (npmjs + github.com) | ждёт отмашки | «Спроси user'а» |
|
||||
| sched-vds-deploy | 🟡 paused | ждёт результатов миграции books→sched (phase-3) |
|
||||
| books миграция на sched | в процессе | victor/books `sched-migration-phase-3` (blocked), victor/sched `books-sched-integration` (paused) |
|
||||
| sched-pipelines-local-stack | Status: active в STATUS.md; по handoff предыдущей сессии кампания финализирована (0.1.0 published, повторные раны noop) → кандидат на закрытие (предложено в ритуале) | .tasks/STATUS.md |
|
||||
| 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'а» |
|
||||
|
||||
## Спроси user'а
|
||||
- **Реальный деплой apilki-билдеров**: npmjs + github.com (не мок). Требует отмашки + настоящие NPM_TOKEN/GITHUB_TOKEN (в pass). Не гонять без явной команды.
|
||||
- (F&F daemon-image — закрыт, вопросов нет)
|
||||
- **qwen-web** (п.4): чинить DNS = второй web-канал? Нужен ли сейчас.
|
||||
- **Дашборд** оставить крутиться или стоп (сейчас сервер жив, autostart поднимет при перезагрузке).
|
||||
- (старое) Реальный деплой apilki-билдеров npmjs+github — за явной отмашкой + токены в pass.
|
||||
|
||||
## Не делать (preemptive guards)
|
||||
- Не запускать реальный publish в npmjs/github.com без явной отмашки.
|
||||
- **sched-vds-deploy не запускать** — paused по решению vitya (2026-08-21), ждём миграцию books→sched.
|
||||
- Не писать токены в git/handoff/письма (secrets rule: только pass). ⚠️ tasks.generated.json с токеном — gitignored, не коммитить.
|
||||
- Не лезть в код агентов самим (юзер: «ты сам в код не лезь») — фиксы через режект-письма; исключение — стенд-конфиг (.admin).
|
||||
- Не трогать `llm-router-failover-proxy` (юзер закрыл 2026-08-18).
|
||||
- **sched-vds-deploy не запускать** — paused по решению vitya (2026-08-21).
|
||||
- Не писать токены в git/handoff/письма (secrets rule: только pass).
|
||||
- Не лезть в код агентов самим (фиксы через режект-письма).
|
||||
- **Не смешивать search-комбо с агентскими** (search ломает эмуляцию тулов) — search только через субагента/тул search_web.
|
||||
|
||||
## Memory updates за сессию
|
||||
- **Кандидат на shared-wiki ingest**: verdaccio-токен в производных docker-образах — BuildKit secret, не ARG (ARG → JWT в `docker history`, воспроизведено на schedd-mongo 0.10.0); `npmMinimalAgeGate: 0` обязателен для yarn 4.18 против verdaccio (нет publish-time метаданных). Касается books T2-паттерна (FROM + yarn add + env) и любых композиций поверх @sched/*.
|
||||
- **Кандидат на shared-wiki ingest**: Windows git-bash + docker run — нужен `MSYS_NO_PATHCONV=1` (иначе POSIX-пути манглятся в `C:/Program Files/Git/…` → `unable to open database file`). sched задокументировал в 13.self-hosting.
|
||||
- (прошлая сессия, не заингещено): паттерн «симуляция апстрим-апдейта в мок-стенде»; «мок не зеркалит прод-контракт» (3 случая).
|
||||
- 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).
|
||||
|
||||
Reference in New Issue
Block a user