auto-sync: 2026-05-25 08:10:01

This commit is contained in:
Stream
2026-05-25 08:10:01 +03:00
parent bb2f7ec971
commit b45e39f50d

View File

@@ -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: <model>\n📐 <ratio> | <size>\n📝 <prompt>..."
Агент спрашивает: "Сохранить промпт в избранное?"
```
@@ -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_<model>.jpg`
4. Отправляет в Telegram через `openclaw message send --media <path>`
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_<model>.jpg`
7. Отправляет в Telegram через `openclaw message send --media <path>`
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