Imported from wyddy7/rimworld-avatar (
AGENTS.md). Install upstream withnpx skills add wyddy7/rimworld-avatar. Copyright stays with the author.
Avatar AI Reforged — спецификация и инструкции для агентов
Этот файл — единый источник правды по проекту: PRD, фазы, тесты, коммиты. Им могут пользоваться Cursor / другие IDE-агенты (если проект настроен читать AGENTS.md). Это не автоматический конфиг библиотеки LangChain deepagents.
0. AGENTS.md и библиотека deepagents (важно не путать)
| Что | Читает ли само «из коробки» |
|---|---|
| Cursor / правила репозитория | Зависит от настроек продукта; часто AGENTS.md задают как контекст для coding-агента. Это не магия pip install deepagents. |
Python-пакет deepagents |
Не подгружает AGENTS.md автоматически. Инструкции задаются через system_prompt=... в create_deep_agent(...). |
Минимальный паттерн из доков:
from deepagents import create_deep_agent
agent = create_deep_agent(
tools=[...],
system_prompt="...", # сюда можно вручную вставить суть из AGENTS.md
)
1. Problem (Проблема)
Оригинальный графический стиль мода rimworld-avatar (пиксель-арт 80x96) технически устарел. Мод использует сложную модульную систему (Paper Doll / Конструктор), где лица собираются динамически из отдельных слоев-ассетов (Отдельно челюсть, рот, глаза, волосы). Ручная замена и перерисовка сотен модульных элементов невозможна.
2. Vision (Видение)
Создать систему на Python (стек uv, Pillow, rembg, LangChain, deepagents), которая:
Оркестрация: deepseek-chat анализирует папки оригинала и формирует промпты для ИЗОЛИРОВАННЫХ частей тела, понимая, что генератор не должен рисовать целое лицо.
Генерация: gemini-3.1-flash-image-preview создаёт HD-модули (только губы, только волосы) в едином инди-стиле по референсу.
Интеграция: Идеальное математическое авто-выравнивание (Auto-Alignment) сгенерированных частей по координатам оригинальных пикселей для сборки Asset-only Addon.
3. Технологический стек и окружение
ОС разработки: Windows
Стек: Python 3.12+, uv, deepagents, python-dotenv, pillow, rembg.
API: OpenRouter (OPENROUTER_KEY в .env).
Секреты: .env не коммитить!
4. План реализации: фазы, SC, тесты до коммита, коммит
Phase 1: Environment & Discovery (Окружение и маппинг)
Задача: Настроить uv проект и создать базу модульных ассетов.
Действие: Скрипт парсит структуру rimworld-avatar/Textures/... и формирует mapping.json.
Критично: Скрипт обязан определять AssetCategory (HeadShape, Mouth, Eyes, Hair, Body) исходя из названия папки или файла. Это нужно для Phase 3.
SC: mapping.json содержит пути, AssetCategory и оригинальные размеры (80x96).
Коммит: phase1: uv scaffold and modular asset mapping
Phase 2: OpenRouter Tooling (Инструментарий API)
Задача: Создать клиент для OpenRouter (deepseek-chat + gemini-3.1-flash-image-preview).
SC: Интеграционный тест возвращает текст от DS и PNG от Gemini.
Коммит: phase2: OpenRouter client
Phase 3: DeepAgent Modular Logic (Интеллектуальная генерация частей)
Задача: Агент читает mapping.json и генерирует ИЗОЛИРОВАННЫЕ детали (спрайты конструктора), а не целых людей.
[!WARNING]
ПРАВИЛА ГЕНЕРАЦИИ (System Prompt для Оркестратора):
В image_url для Gemini передается ТОЛЬКО ОДИН эталонный референс стиля (Рё на красном фоне).
Оркестратор обязан менять шаблон в зависимости от AssetCategory:
Шаблон для Глаз/Рта/Челюсти (Features):
"An isolated 2D game UI asset of a [КАТЕГОРИЯ: pair of deadpan eyes / single simple mouth / blank jawline outline]. STYLE RULES: EXACTLY like the red-background reference. Minimalist indie webcomic aesthetic. Thick, ultra-crisp black ink outlines. Pure flat #FFFFFF white skin / Pure unshaded colors. Solid bright red background (#FF0000). CRITICAL: DRAW ONLY THE [КАТЕГОРИЯ]. DO NOT DRAW A FULL HEAD. DO NOT DRAW A FACE AROUND IT. Single continuous isolated object in the center."
Шаблон для Причесок и Одежды (Hair/Apparel):
"An isolated 2D game asset of [ОПИСАНИЕ: messy black hair / olive-green collared shirt]. STYLE RULES: EXACTLY like the red-background reference. Minimalist indie webcomic aesthetic. Thick, crisp black ink outlines. Flat unshaded colors. Solid bright red background (#FF0000). CRITICAL: DRAW ONLY THE [Hair/Clothing]. DO NOT DRAW THE CHARACTER WEARING IT. It must be an isolated item, like a paper-doll cutout."
SC: Агент успешно генерирует изолированные объекты (только рот, только волосы) на красном фоне.
Коммит: phase3: deepagents logic with modular paper-doll prompting
Phase 4: Post-Processing & Strict Auto-Alignment (Пост-обработка и авто-выравнивание)
Задача: Удаление фона и математически точная подгонка изолированных ассетов (рта, глаз) под координаты оригинальных пиксельных спрайтов.
Действие алгоритма (Pillow):
rembg вырезает сплошной красный фон (#FF0000).
Скрипт вычисляет Bounding Box у сгенерированной ИИ изолированной детали.
Скрипт открывает соответствующий оригинальный пиксельный файл (напр. старый прозрачный рисунок челюсти) и находит его Bounding Box (позицию X, Y на родном холсте 80x96).
Скрипт переносит ИИ-деталь на новый прозрачный холст (например 160×192, что в 2 раза больше). Координаты центра ИИ-детали должны математически соответствовать Центр_старого_куска * 2.
SC: PNG в режиме RGBA, прозрачный фон. В игре глаза, губы и контур лица совпадают друг с другом без сдвигов.
Коммит: phase4: background removal and strict bounding-box auto-alignment
Phase 5: Addon Integration (Сборка мода)
Задача: Генерация структуры аддона RimWorld.
Действие: Формирование About.xml (loadAfter: bolphen.avatar), сохранение файлов в Assets/Textures/ с сохранением оригинальных названий файлов (чтобы конструктор мода их нашел).
SC: Аддон подхватывается игрой. При загрузке аватара в меню игры HD-части конструктора корректно наслаиваются друг на друга (волосы лежат на черепе, рот под глазами).
Коммит: phase5: Addon build scripts and folder structure