From b45e39f50d1a6462ae068710ab1b880f34d2ba78 Mon Sep 17 00:00:00 2001 From: Stream Date: Mon, 25 May 2026 08:10:01 +0300 Subject: [PATCH] auto-sync: 2026-05-25 08:10:01 --- tasks/image-gen/BRD.md | 47 +++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/tasks/image-gen/BRD.md b/tasks/image-gen/BRD.md index 77153a3..25256e8 100644 --- a/tasks/image-gen/BRD.md +++ b/tasks/image-gen/BRD.md @@ -2,7 +2,8 @@ --- created: 2026-05-24 -status: approved +updated: 2026-05-25 +status: approved (v1.1 — bugfixes applied) --- ## Назначение @@ -28,10 +29,11 @@ status: approved Агент матчит объекты/стили → собирает промпт (рус→англ) Промпт = base_template(s) + style + уникальные детали из запроса + quality enhancers ↓ -scripts/generate.py --prompt "..." --negative "..." --model "..." --ratio "9:16" --count 1 +scripts/generate.py --prompt "..." --negative "..." --model "..." --ratio "9:16" --count 1 \ + --tg-chat-id "126472752" ↓ -API → сохранить JPG в ~/images/image-gen/YYYY-MM-DD/ → отправить в Telegram -Подпись: "Model: recraft-v4.1-pro | <саммари промпта на русском>" +API → сохранить JPG в ~/.openclaw/workspace/temp/image-gen/YYYY-MM-DD/ → отправить в Telegram +Подпись авто-генерируется: "🎨 Model: \n📐 | \n📝 ..." ↓ Агент спрашивает: "Сохранить промпт в избранное?" ``` @@ -147,30 +149,36 @@ Negative: deformed limbs, distorted hands... ``` generate.py - --prompt "..." # финальный промпт (английский) - --negative "..." # negative prompt (из params/models.md) + --prompt "..." # финальный промпт (английский, мин 10 chars) + --negative "..." # negative prompt (опционально, по умолчанию из params/models.md) --model "recraft/..." # или "group:all_v4" --ratio "9:16" # aspect ratio (дефолт: 9:16) --count 1 # вариантов на модель (дефолт: 1) --provider "openrouter" # openrouter | a2e (дефолт: openrouter) - --save-dir "~/images/image-gen/YYYY-MM-DD/" - --tg-caption "..." # подпись: "Model: X | <саммари>" + --save-dir "..." # опционально (дефолт: ~/.openclaw/workspace/temp/image-gen/YYYY-MM-DD/) + --tg-chat-id "126472752" # обязательный, Telegram chat_id для delivery + --image-size "2K" # 1K, 2K, 4K + --models-md "..." # опционально, путь к params/models.md ``` Скрипт: 1. Читает API ключ из `.env` (OPENROUTER_API_KEY / A2E_API_TOKEN) -2. Если `--model group:all_v4` — запускает параллельно для всех моделей группы -3. Сохраняет каждую картинку: `YYYY-MM-DD_HH-MM-SS_.jpg` -4. Отправляет в Telegram через `openclaw message send --media ` +2. Парсит `negative_prompt` из `params/models.md` если не передан `--negative` +3. Валидирует промпт (минимум 10 символов) +4. Если `--model group:all_v4` — последовательно генерирует для каждой модели группы +5. Retry 429 с exponential backoff: 5с → 10с → 20с +6. Сохраняет каждую картинку: `YYYY-MM-DD_HH-MM-SS_.jpg` +7. Отправляет в Telegram через `openclaw message send --media ` +8. Считает раздельно: `generated_ok` vs `sent_ok` --- ## `.env` переменные (только там, нигде больше) ``` -OPENROUTER_API_KEY=... # нужно добавить (если ещё нет) -A2E_API_TOKEN=... # ✅ уже есть -TELEGRAM_BOT_TOKEN=... # ✅ уже есть +OPENROUTER_API_KEY=*** # ✅ уже есть +A2E_API_TOKEN=*** # ✅ уже есть +TELEGRAM_BOT_TOKEN=*** # ✅ уже есть TELEGRAM_CHAT_ID=... # ✅ уже есть ``` @@ -195,3 +203,14 @@ TELEGRAM_CHAT_ID=... # ✅ уже есть 5. Написать `SKILL.md` 6. Протестировать: запустить `generate.py` с тестовым промптом, убедиться что картинка сохранена и отправлена в TG 7. Упаковать скилл: `package_skill.py ~/.openclaw/skills/image-gen/` + +## Changelog + +- **2026-05-25 v1.1** — Bugfix release: + - ✅ Negative prompt auto-parsed from `models.md` (no manual `--negative` required) + - ✅ 429 retry with exponential backoff (5s → 10s → 20s, max 3 attempts) + - ✅ Separate `generated_ok` / `sent_ok` counters (TG failure ≠ success) + - ✅ A2E graceful skip before loop (early exit, clear message) + - ✅ Prompt validation before API call (min 10 chars) + - ✅ Correct save-dir path (`workspace/temp/image-gen/` not `~/images/`) + - ✅ Removed false `--tg-caption` param from CLI spec