swarmclaw: drag&drop картинок в чат (патч chat-input.tsx + dragdrop.patch для re-apply), vision-канал проверен

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
dttb
2026-06-12 01:38:31 +03:00
parent 1faa21eede
commit bc7b7223a9

View File

@@ -109,6 +109,12 @@ Device SwarmClaw (10.0.0.135) спарен на openclaw с `operator.admin` (ap
- **Как мерить:** `sqlite3 /root/.omniroute/storage.sqlite "SELECT tokens_in,tokens_cache_read FROM call_logs WHERE model LIKE '%opus-4-8%' ORDER BY timestamp DESC LIMIT 5"` на LXC 132. - **Как мерить:** `sqlite3 /root/.omniroute/storage.sqlite "SELECT tokens_in,tokens_cache_read FROM call_logs WHERE model LIKE '%opus-4-8%' ORDER BY timestamp DESC LIMIT 5"` на LXC 132.
- Урезаны Dirizhyor (0d388a87) + Ассистент (default, был сломан 0 tools — восстановлен через БД-INSERT). Прочие агенты Олега (Pochtalion/Бухгалтер/Бенелюкс/НИИКН-Ассистент/Nastavnik) — по 7 tools, не трогал. - Урезаны Dirizhyor (0d388a87) + Ассистент (default, был сломан 0 tools — восстановлен через БД-INSERT). Прочие агенты Олега (Pochtalion/Бухгалтер/Бенелюкс/НИИКН-Ассистент/Nastavnik) — по 7 tools, не трогал.
## Картинки/скриншоты в чат (2026-06-12)
- **Канал vision работает** — проверено end-to-end: upload PNG (`POST /api/upload`, header `x-filename`, → `data/uploads/`, `resolveImagePath` читает файл → base64 → `image_url` формат → OmniRoute → `cc/claude-opus-4-8` (input_modalities text+image) → агент описал картинку.
- **Из коробки работают:** вставка `Cmd+V` (`handlePaste` ловит `image/*` из clipboard) + кнопка «Add image». Vision-гейта по провайдеру НЕТ (не блокирует custom omniroute).
- **Drag&drop НЕ был реализован** (в `chat-input.tsx` не было `onDrop`). **Допатчил:** добавил `handleDrop/handleDragOver/handleDragLeave` + state `isDragging` + `onDrop` на корневой div (переиспользует `uploadAndAdd`). Патч сохранён: **`/opt/swarmclaw/dragdrop.patch`** (`git apply`).
- **Требует пересборки образа** (`docker compose build``npm ci` из кэша, переедет `next build` ~5-10 мин, затем `docker compose up -d`). **Слетает при `docker compose pull`/обновлении** → переприменить: `cd /opt/swarmclaw && git apply dragdrop.patch && docker compose build && docker compose up -d`.
## Схема API (для будущих правок headless) ## Схема API (для будущих правок headless)
- `POST /api/providers``{id,name,baseUrl,models[],requiresApiKey,isEnabled}` (type всегда `custom`), хранит JSON в таблице `provider_configs`. - `POST /api/providers``{id,name,baseUrl,models[],requiresApiKey,isEnabled}` (type всегда `custom`), хранит JSON в таблице `provider_configs`.
- `POST /api/agents` → zod `AgentCreateSchema`; обяз. `name`,`provider`; `ollamaMode` только `local|cloud|null` (не `off`). - `POST /api/agents` → zod `AgentCreateSchema`; обяз. `name`,`provider`; `ollamaMode` только `local|cloud|null` (не `off`).