Chimera — руководство по использованию
Chimera — это самоэволюционирующий агент, у которого командная строка на первом месте, а ядро рассуждения построено на LLM-Fusion. Это руководство описывает установку, настройку и каждую команду с примерами.
Впервые в проекте? Сначала прочитайте обзор архитектуры.
Установка
Chimera использует uv.
git clone https://github.com/brcampidelli/chimera-agent
cd chimera-agent
uv sync --extra dev # install runtime + dev deps
uv run chimera --help # verify the CLI
Каждая команда ниже запускается как uv run chimera <команда> (или просто chimera …, когда
виртуальное окружение проекта уже в вашем PATH).
Настройка
Chimera не привязана к поставщику благодаря LiteLLM. Положите ключи и
выбор моделей в локальный .env (он в gitignore — никогда не коммитьте его):
# At least one provider key. OpenRouter unlocks 100+ models behind one key.
OPENROUTER_API_KEY=sk-or-...
# OPENAI_API_KEY=...
# ANTHROPIC_API_KEY=...
# Tier-1/2 default model (single, cheap, must support tool-calling for Tier-2)
CHIMERA_DEFAULT_MODEL=openrouter/deepseek/deepseek-chat-v3.1
# LLM-Fusion: a diverse panel -> judge -> synthesizer
CHIMERA_FUSION_PANEL=openrouter/deepseek/deepseek-chat-v3.1,openrouter/openai/gpt-4o-mini,openrouter/meta-llama/llama-3.3-70b-instruct
CHIMERA_FUSION_JUDGE=openrouter/deepseek/deepseek-chat-v3.1
CHIMERA_FUSION_SYNTHESIZER=openrouter/openai/gpt-4o-mini
Другие рычаги: CHIMERA_HOME (каталог состояния, по умолчанию .chimera), CHIMERA_LOG_LEVEL
(INFO / DEBUG), CHIMERA_CACHE (on/off, по умолчанию выключено — кэширует одинаковые ответы
без инструментов, чтобы не повторять обращения к API) и CHIMERA_AUTO_FUSE (on/off, по умолчанию
выключено — автоматически сливает глубокие или чувствительные к ошибке ходы в solve и crew
без явного --fuse; маршрутизатор, знающий цену, всё равно оставляет дешёвые ходы и ходы с
инструментами на одной модели). Маршрутизатор распознаёт запросы с точным ответом (арифметика,
подсчёты, действия с цифрами) на основных языках проекта (en/pt/es/de/fr/zh/ja), поэтому короткий, но
важный шаг получает защиту слияния даже когда он слишком короток, чтобы сработал порог по длине.
Поставщики, запасные варианты и своё размещение. Работает любой ярлык LiteLLM вида
поставщик/модель (openai/…, anthropic/…, gemini/…, ollama/…, openrouter/… и так далее).
Для своего сервера, совместимого с OpenAI (Ollama, vLLM), задайте CHIMERA_API_BASE (например,
http://localhost:11434 вместе с CHIMERA_DEFAULT_MODEL=ollama/llama3). Задайте
CHIMERA_FALLBACK_MODELS (через запятую), чтобы переключаться на другую модель, когда основная даёт
ошибку. В chat и tui команда /model <ярлык> меняет модель посреди сессии.
Пулы учётных данных. Дайте поставщику несколько ключей через CHIMERA_<ПОСТАВЩИК>_KEYS
(например, CHIMERA_OPENROUTER_KEYS=key1,key2,key3). Шлюз чередует их по кругу между вызовами
(распределяя нагрузку и лимиты), а внутри одного вызова переходит к следующему ключу, если один даёт
ошибку. Пул заменяет одиночный *_API_KEY этого поставщика. (Входы по OAuth и подписке — Copilot,
Claude Max и подобные — пока не подключены; ключи API и любая конечная точка, поддерживаемая LiteLLM,
работают.)
Проверьте, что всё связано:
uv run chimera doctor # shows version, default model, configured providers
uv run chimera models # shows the fusion panel / judge / synthesizer
uv run chimera features # optional capabilities + what each needs (key/dep)
Необязательные возможности. Зрение, режим готового документа и питомец встроены. Остальное
(веб-поиск, поиск в X, генерация изображений, синтез речи и голос, Spotify, браузер) — заготовленные
гнёзда: впишите нужные учётные данные в .env (или поставьте зависимость), и возможность включится.
chimera features — это живой список. Инструмент web_search (Tavily) регистрируется сам, как
только задан TAVILY_API_KEY, — и служит образцом для добавления остальных (либо пользуйтесь
клиентом MCP или импортёром OpenAPI → инструмент).
Бесплатные и платные модели. Модели OpenRouter с пометкой
:freeничего не стоят, но ограничены по частоте на стороне поставщика — годятся для быстрогоrunи капризны для команд с множеством вызовов вродеfuseиsolve. Для настоящей работы дешёвая платная модель (например,deepseek/deepseek-chat-v3.1, доли цента за вызов) куда надёжнее.
Команды
Состояние — version · doctor · models
uv run chimera version
uv run chimera doctor
uv run chimera models
chat — интерактивный помощник со многими ходами (ваша правая рука)
Интерактивный цикл с памятью разговора и использованием инструментов — то, чем пользуются каждый день. Он вспоминает уместное из долговременной памяти и связывает разговор между ходами.
uv run chimera chat # start chatting; /exit to quit, /reset to clear context
uv run chimera chat --fuse # fuse deep-reasoning turns
uv run chimera chat --no-memory # don't recall long-term memory
То же разговорное ядро питает полноэкранный интерфейс и (готовящийся) шлюз мессенджеров.
tui — полноэкранное терминальное приложение
Полноэкранный интерфейс на Textual поверх того же разговорного ядра. Две панели: журнал
разговора, который отрисовывает ответы как Markdown (код в блоках подсвечивается) и показывает
токены модели прямо по мере поступления, и панель активности, показывающая, что агент сделал
на этом ходе, — вызванные инструменты, количество токенов и стоимость, сколько фактов из памяти было
вспомнено. Флаги те же, что у chat.
uv run chimera tui
uv run chimera tui --no-stream # answers render at the end instead of streaming
uv run chimera tui --fuse --no-memory # fusion routing (no token stream — the panel says so)
Команды: /model <ярлык> · /reset (очистить контекст) · /clear (очистить экран) · /stream
(переключить живые токены) · /help · /exit. Клавиши: Ctrl+R сброс · Ctrl+L очистка ·
Ctrl+P палитра команд · PgUp/PgDn прокрутка · Ctrl+C выход. Команды со слешем дополняются по
мере набора.
Замечания о честности: потоковая выдача токенов работает только на пути одной модели — под --fuse
(ход панель → судья → синтезатор) приращений токенов нет, поэтому панель показывает состояние
«синтезирую», а не поддельный курсор. Стоимость читается как «недоступно», когда цена модели
неизвестна (её никогда не угадывают). Показателя проверки и отката здесь нет: «проверить или
откатить» работает в solve и project, а не в чате. Если Textual не установлен, tui откатывается
к обычному циклу chat.
serve — шлюз сообщений (HTTP или Discord)
Открывает агента с одним разговором (и его памятью) на каждый чат. Ядро маршрутизации не зависит от транспорта; переходники подключаются к нему.
uv run chimera serve --port 8765 # HTTP transport
# GET /health -> {"status":"ok","active_chats":N}
# POST /chat {"text":"...", "chat_id":"alice"} -> {"reply":"...","chat_id":"alice"}
У каждого chat_id свой контекст, поэтому разные пользователи и ветки не перемешиваются.
Работа без присмотра (вебхуки). Заведите задание, срабатывающее на входящий HTTP POST, чтобы Chimera запускалась без чьего-либо набора текста — push в GitHub, событие Stripe, пинг от внешнего планировщика:
chimera cron add "on push" gh-push "Summarize the pushed commits" --webhook
chimera serve # then POST to the hook:
# curl -X POST localhost:8765/webhook/gh-push -d '{"ref":"refs/heads/main"}'
Тело POST передаётся задаче задания как контекст, и отрабатывают все задания, зарегистрированные на
этот крючок. GET /health и POST /chat продолжают работать рядом.
Родной Discord. Запустите Chimera ботом Discord — каждый канал становится сессией, а агент может
и сам отправлять сообщения инструментом send_message:
uv sync --extra messaging # installs discord.py
export CHIMERA_DISCORD_BOT_TOKEN=... # bot token (Message Content intent enabled)
uv run chimera serve --discord
Создайте бота на https://discord.com/developers, включите намерение Message Content и пригласите его на свой сервер. Он отвечает в любом канале, который видит (с фильтром, чтобы игнорировать собственные сообщения и сообщения других ботов). Токен читается из окружения — никогда не зашивайте его в код.
Родной Telegram. Тот же образец переходника, и никакой дополнительной зависимости не нужно (Telegram Bot API — это обычный HTTP):
export CHIMERA_TELEGRAM_BOT_TOKEN=... # from @BotFather
uv run chimera serve --telegram
Родной Slack. Принимает через Socket Mode (нужно дополнение messaging) и отправляет через Web
API. Включите Socket Mode в своём приложении Slack, чтобы получить токен уровня приложения:
uv sync --extra messaging
export CHIMERA_SLACK_BOT_TOKEN=xoxb-... # bot token
export CHIMERA_SLACK_APP_TOKEN=xapp-... # app-level token (Socket Mode)
uv run chimera serve --slack
WhatsApp (отправка). WhatsApp работает на проталкивании (сообщения приходят на вебхук Meta,
который вы размещаете сами), поэтому, в отличие от остальных, никакого соединения открывать не надо.
Задайте учётные данные Cloud API, и агент сможет отправлять сообщения WhatsApp инструментом
send_message в любом режиме serve:
export CHIMERA_WHATSAPP_ACCESS_TOKEN=...
export CHIMERA_WHATSAPP_PHONE_NUMBER_ID=...
# in a chat: send_message(platform="whatsapp", chat_id="<E.164 number>", text="done ✅")
Двусторонний WhatsApp. Направьте вебхук вашего приложения Meta на https://<ваш-хост>/whatsapp и
задайте CHIMERA_WHATSAPP_VERIFY_TOKEN (любая строка на ваш выбор, совпадающая с настройкой
приложения). Тогда chimera serve подтверждает подписку (GET /whatsapp) и проводит входящие
сообщения (POST /whatsapp) через шлюз, отвечая по Cloud API. Для вебхука WhatsApp всё равно нужен
публичный адрес — это единственная часть за пределами Chimera.
Родной Signal (в обе стороны). У Signal нет официального API, поэтому Chimera говорит с мостом
signal-cli-rest-api, который вы запускаете сами
(в Docker) и связываете со своим номером, — обычный HTTP, без зависимостей на Python:
docker run -d -p 8080:8080 -v signal-cli:/home/.local/share/signal-cli bbernhard/signal-cli-rest-api
export CHIMERA_SIGNAL_API_URL=http://localhost:8080
export CHIMERA_SIGNAL_NUMBER=+15550000000 # this bot's registered number
uv run chimera serve --signal
run — первый уровень, разовый ответ
Один вызов модели, без инструментов и без слияния. Самый дешёвый путь.
uv run chimera run "In one sentence, what is an AI agent?"
uv run chimera run "Summarize this error" --model openrouter/openai/gpt-4o-mini
Зрение и вставка изображений. Прикрепляйте изображения через --image (путь или адрес, можно
повторять) — нужна модель, умеющая смотреть:
uv run chimera run "What's in this chart?" --image chart.png -m openrouter/google/gemini-2.5-flash
deliver — режим готового документа
Там, где run и chat отвечают в разговорной манере, deliver выдаёт цельный самодостаточный
документ (отчёт, план, спецификацию, README…) и записывает его в файл.
uv run chimera deliver "A one-page launch plan for a URL shortener" --out plan.md
uv run chimera deliver "An HTML status page" --format html -o status.html --fuse
agent — голый цикл ReAct с вызовом инструментов
Мысль → Действие (инструмент) → Наблюдение, и так до итогового ответа. Инструменты ограничены рабочей папкой.
uv run chimera agent "Create a file hello.txt containing 'Hello Chimera'" -w ./scratch
fuse — LLM-Fusion (то, что отличает проект)
Запускает панель моделей, судья разбирает их ответы (согласие / противоречия / слепые пятна), а
синтезатор пишет итог. Флаг --show-panel показывает весь ход.
uv run chimera fuse "Name three concrete ways to prevent SQL injection in Python."
uv run chimera fuse "Compare REST vs gRPC for a mobile backend." --show-panel
Слияние обходится примерно в 2–3 раза дороже одного вызова, поэтому приберегите его для трудных
рассуждений. fuse заодно печатает стоимость токенов по этапам (панель / судья / синтез), так что
видно, куда на самом деле уходят токены запуска.
Выборочное слияние (включено по умолчанию, экономит токены). Движок пробует первые
CHIMERA_FUSION_PROBE_K моделей панели (по умолчанию 2) и, когда их ответы близко сходятся,
пропускает остаток панели и судью, синтезируя прямо из совпавших ответов. Проверка согласия — это
дешёвое местное сравнение текстов (без лишнего вызова модели), поэтому расходящийся ход поднимается
до полного конвейера и стоит ровно столько же, сколько полное слияние, а согласный ход обходится
дешевле. Планку настраивает CHIMERA_FUSION_AGREEMENT (0–1, по умолчанию 0,8); значение
CHIMERA_FUSION_MODE=full (или флаг --full) заставляет всегда прогонять всю панель с судьёй.
Почему это поведение по умолчанию: в трёх запусках chimera fusion-bench --tasks hard (платная
панель из трёх моделей) оно срезало около 20–28% токенов и было верным на каждом ходе, где
действительно замыкало накоротко (16 из 16). Общая точность гуляла от 0 до −8,3 пункта между
запусками, но весь этот разброс приходится на поднятые ходы, где выборочный режим прогоняет тот же
конвейер, что и полный, — значит, это недетерминированность моделей, а не цена досрочной остановки.
Прогоните замер на своей нагрузке, чтобы увидеть размен для вашей панели и ваших задач:
uv run chimera fuse "What is 12 * 12?" --show-panel # likely early-stops
uv run chimera fusion-bench --tasks hard # full vs selective, tokens + accuracy
Берите надёжные модели в панель. Слияние окупается, только если каждый участник панели действительно отвечает. Избегайте ярлыков OpenRouter с
:freeвCHIMERA_FUSION_PANEL— под настоящей нагрузкой они упираются в лимит (HTTP 429), и панель молча сжимается до той платной модели, что осталась. Дешёвая и надёжная тройка:openrouter/deepseek/deepseek-chat,openrouter/openai/gpt-4o-mini,openrouter/meta-llama/llama-3.3-70b-instruct.
Карточки навыков (карточки рассуждения TRS, экспериментально)
Агент выжимает усвоенное в карточки рассуждения — пять полей: повод / делать / избегать /
проверить / риск (плюс ключевые слова для поиска) — как из успехов (карточка паттерна), так и из
повторяющихся провалов (предупреждающая карточка антипаттерна). При CHIMERA_SKILL_CARDS=on
команда solve достаёт k наиболее уместных карточек (BM25 по имени, описанию и поводам) и вставляет
их в контекст рассуждения работника, чтобы агент переиспользовал сработавшее и избегал известных
способов провалиться. Это замыкает круг — раньше усвоенные навыки сохранялись и никогда не читались
обратно.
По умолчанию выключено: вставка карточек добавляет токены в промпт, а экономия токенов у TRS
происходит от укорачивания длинных цепочек рассуждения, поэтому на задачах с коротким ответом
выигрыш — в точности, а не в стоимости. Это не домысел: на наборе hard с короткими ответами
(платная deepseek-v3.1) skillcard-bench намерил, что карточки стоят +290% токенов и −8
пунктов точности против варианта без карточек: при модели у самого потолка и без длинной цепочки,
которую можно укоротить, общие карточки — чистые накладные расходы, способные отвлекать. Включайте
карточки для нагрузок с длинным рассуждением (математика и код с длинными цепочками), где
арифметика токенов переворачивается, и всегда сперва измеряйте свой собственный размен с эталонной
проверкой:
uv run chimera skillcard-bench --tasks hard # demo cards vs no cards
uv run chimera skillcard-bench --use-store --tasks hard # bench your own learned cards
export CHIMERA_SKILL_CARDS=on CHIMERA_SKILL_CARDS_K=3 # enable, once it earns its place
Замер сообщает точность с карточками и без, разницу в токенах, долю попаданий карточек и точность в разбивке по попаданиям и промахам, а вердикт PASS ставится, когда точность с карточками остаётся в пределах одного пункта от базы без карточек.
Компактные схемы инструментов (экспериментально)
Схемы инструментов — особенно ввезённые с серверов MCP или из спецификаций OpenAPI — несут шум
аннотаций (примеры, заголовки, значения по умолчанию, многословные описания параметров, вложенные
тела запросов), который заново отправляется модели на каждом шаге ReAct. При
CHIMERA_COMPACT_SCHEMAS=on этот шум срезается, а описания параметров подрезаются в момент показа,
не трогая ничего, что влияет на вызов (имя и описание функции, а также type / properties /
required / enum каждой схемы сохраняются). Канонические схемы остаются нетронутыми — сжимается
только копия, отправляемая модели.
Экономия наибольшая на многословных наборах инструментов MCP и OpenAPI и накапливается по всем шагам; родные инструменты и так лаконичны, поэтому у них сокращение невелико. Сначала измерьте свой набор (обращений к модели нет — только подсчёт токенов):
uv run chimera schema-bench --demo # synthetic verbose tools, to see the effect
uv run chimera schema-bench --openapi ./openapi.json # your real spec's tools
По умолчанию выключено. Поскольку сжатие убирает только шум аннотаций и никогда не трогает структуру, единственный риск в том, что у модели остаётся чуть меньше текста, по которому выбирать инструмент, — поэтому оно остаётся осторожным, и перед включением стоит убедиться, что вызовы инструментов на вашей нагрузке ведут себя как надо.
solve — второй уровень, самостоятельная работа (план и «проверить или откатить»)
Планирует задачу, выполняет её циклом агента, а затем проверяет исполняемой командой. Если проверка не проходит, откатывает рабочую папку и повторяет с обратной связью. Проверяющий (код выхода 0 означает успех) — это эталон.
uv run chimera solve \
"Create solution.py with add(a,b) and is_prime(n)." \
--workspace ./work \
--verify "python -c \"import solution; assert solution.is_prime(7)\""
Полезные флаги:
| Флаг | Что означает |
|---|---|
--verify "<cmd>" |
команда, которая должна завершиться кодом 0 (тесты, сборка, линтер) |
--workspace, -w |
где агент читает и пишет (по умолчанию .) |
--max-attempts N |
бюджет попыток «проверить или откатить» (по умолчанию 3) |
--max-steps N |
шагов с вызовом инструментов на попытку (по умолчанию 8) |
--fuse |
строить план через слияние (глубокое рассуждение) |
--guard |
пропускать каждый вызов инструмента через ядро управления |
--no-plan / --no-manager |
пропустить этап планирования или разбора |
--rubric |
управляющий судит по каскадному своду правил (следование инструкции → фактичность → разумность) |
--no-remember |
не записывать факт в память при успехе |
--no-evolve-skills |
не предлагать усвоенный навык, когда задача повторяется |
--isolate |
работать в одноразовом рабочем дереве git; изменённые файлы копируются обратно только при успехе |
--require-diff |
попытка, не изменившая ни одного файла, считается провалом и повторяется — для задачи по коду объяснение не является исправлением |
--keep-workspace |
при провале оставить правки последней попытки на диске, а не откатывать, — для случая, когда «прошло или нет» решает внешний проверяющий |
--diff-feedback |
показать провалившейся попытке её же откаченную разницу как путь, который не стоит повторять |
--stagnation-fuzzy |
сопоставлять подписи повторяющихся провалов приблизительно, чтобы поворот против застревания срабатывал на провалах одной причины с разной формулировкой |
Про
--max-steps. Значение по умолчанию, 8, подобрано для небольших рабочих папок. На крупном репозитории именно оно, а не модель, становится ограничением: первый запуск SWE-bench дал ровные 0,0 пункта при 8 шагах на выгрузке в 250 МБ, а та же конфигурация при 30 шагах подняла долю патчей у базы с 47% до 74% (bench/swe_bench/RESULTS.md). Если агент осматривается, а потом заканчивает, ничего не изменив, поднимайте сначала это.
--require-diffи--keep-workspaceнужны для внешней оценки.solveустроен как «проверить или откатить»: когда решение «прошло или нет» принимает он сам, откат провалившейся попытки правилен. Когда его принимает кто-то другой — задание CI, стенд замера, человек, читающий разницу, —--keep-workspaceне даёт откатить работу агента раньше, чем судья её увидит, а--require-diffне даёт засчитать уверенное объяснение за выполненное изменение. Оба по умолчанию выключены.
solve учится между запусками. Каждый запуск питает замкнутый круг поведения, целиком
поставленный под «проверить или откатить», так что действует только подтверждённая работа: (1)
уместные уроки прошлых попыток (провалы в приоритете) вплетаются в план и промпт, а первый
ошибочный шаг провалившейся попытки локализуется и подаётся в повтор; (2) при подтверждённом
успехе записывается факт в память без повторов (позже его вспоминают chat и crew); и (3)
когда образец задачи повторяется (не менее 2 прошлых успехов), предлагается переиспользуемый
навык — при включённом --fuse он проходит через панель слияния и удерживается по
переносимости между моделями — и остаётся, только если проходит проверку управления и
исполняемый дымовой тест.
crew — третий уровень, несколько агентов
Команда ролевых агентов работает над одной задачей, а руководитель синтезирует итоговый ответ.
uv run chimera crew "Propose a minimal architecture for a URL shortener service."
lifecycle — команда жизненного цикла (план → сборка → тест → разбор)
Заранее собранный конвейер жизненного цикла разработки с «проверить или откатить» на этапе тестов:
plan раскладывает задачу, build её реализует, test запускает проверяющего (откатывая и повторяя
сборку при провале), а разбирающий критикует результат.
uv run chimera lifecycle "Add an add(a,b) function to solution.py" \
--workspace ./scratch --verify "python -c \"import solution; assert solution.add(2,3)==5\""
Каждый этап печатается со знаком ✓ или ✗; запуск считается успешным, только если проверяющий на этапе тестов прошёл.
meta — агенты, строящие агентов
Проектирует чертёж специализированного агента (имя, инструменты, промпт роли) под задачу.
uv run chimera meta "an agent that triages GitHub issues and routes them to teams"
guard — вердикт управления
Показывает решение ядра доверия (разрешить / предупредить / разобрать / заблокировать) для действия.
uv run chimera guard "rm -rf /" # BLOCK
uv run chimera guard "list the files in this folder" # ALLOW
bench — замер непрерывной эволюции
Измеряет, держится ли качество на цепочке задач (доказательство против деградации): общая доля прохождения, первая половина против второй, самая длинная серия.
uv run chimera bench --limit 6 # single-shot task set
uv run chimera bench --chain --limit 6 # stateful chain (error propagation)
uv run chimera bench --fuse # use fusion as the solver
Отчёт несёт ещё и статистически честный признак деградации: вместо того чтобы верить голой
разности первой и второй половины (на короткой цепочке разброс в 0,2 обычно шум),
degraded_significant равен 1.0 только когда доверительный интервал Уилсона для падения не
включает ноль, -1.0 когда выборка слишком мала, чтобы судить, и 0.0 в остальных случаях — плюс
границы degradation_ci_low/high. Отдельно CHIMERA_SKILL_ACCEPT_MODE=wilson ставит решение о
принятии навыка между моделями в зависимость от нижней доверительной границы доли переноса (так что
удачные 2 из 3 больше не считаются); значение по умолчанию point оставляет сырую долю, поскольку
граница Уилсона строга на крошечных панелях.
sandbox-bench — оценка состояния и побочных эффектов
Текстовые замеры оценивают ответ модели; этот оценивает то, что агент сделал. Каждая задача работает в изолированном каталоге песочницы, а стенд сравнивает итоговое состояние файлов с целью (любой путь допустим, важен исход) и отдельно считает вредные побочные эффекты — изменения за пределами объявленного задачей набора разрешённых. Так агент, который выдаёт верный результат, попутно затирая посторонний файл, оказывается пойман, а не засчитан за чистое прохождение.
uv run chimera sandbox-bench # runs the demo stateful tasks (real models + file tools)
Сообщает pass_rate и side_effect_rate. Поставляется методика (StatefulTask с goal_check и
набором разрешённых изменений allowed), а не большой набор задач, — задачи под свои инструменты
пишите сами. Существующие текстовые оценщики остаются верными для чистых вопросов и ответов.
memory — отобранная долговременная память
uv run chimera memory add "Alex prefers TypeScript strict and absolute imports"
uv run chimera memory search "imports"
uv run chimera memory list
uv run chimera memory graph # entity-relation graph from memory
uv run chimera memory graph --entity PassaPro # one entity's relations
uv run chimera memory prune --max 50 # keep the N highest-value memories (multi-factor)
Обращение к памяти проходит через приёмные ворота (границу доверия): вспомненная запись попадает
в промпт, только если она уместна и свободна от текста, пытающегося перехватить управление
(защита от джейлбрейка через память). memory prune забывает в рамках бюджета по многофакторной
модели ценности (свежесть, конкретность, вид, отобранность, надёжность), а не по одному признаку.
Слой графа извлекает тройки (источник, отношение, цель) из ваших записей (PassaPro использует Supabase, Alex предпочитает TypeScript), поэтому факты можно вспоминать по сущности, а не только
по ключевому слову.
cron — задания по расписанию и по событиям
uv run chimera cron add daily-report "0 9 * * *" "generate the daily report"
uv run chimera cron list
kanban — доска задач с дорожками работников
Доска (backlog → doing → review → done), где каждая карточка называет дорожку, которая передаёт
её агентскому стеку: solve (второй уровень, самостоятельно, с проверкой или откатом) или crew
(третий уровень, конвейер ролей). Это рабочий вид того самого цикла, который агент и так выполняет.
uv run chimera kanban add "Fix the flaky test" -a "make test_login deterministic" \
--lane solve --verify "pytest -q tests/test_login.py"
uv run chimera kanban add "Compare REST vs gRPC" --lane crew
uv run chimera kanban board # show the columns
uv run chimera kanban run -w ./scratch # dispatch backlog cards through their lanes
uv run chimera kanban move <id> done # manual move
uv run chimera kanban learn --min 3 --yes # recurring tasks (experience) -> cards
run проводит каждую карточку backlog → doing → done (успех) или → review (нужно внимание). learn
переиспользует определитель повторяемости из обучателя расписаний, чтобы ставить в очередь задачи,
которые агент повторяет (без дублей на доске), — поставьте его на расписание, и очередь будет
наполняться сама.
workflow — спроектированные циклы (Loop Engineering)
Опишите самостоятельный цикл как YAML вместо разового промпта. Каждый шаг через uses обращается к
возможности (run / shell / solve / crew / lifecycle), может зависеть от предыдущего шага
(when: prev_succeeded | prev_failed) и может повторяться (repeat, until: success).
# examples/workflow.yaml
name: build-and-report
steps:
- name: build
uses: solve
with: { task: "Create greeting.py with greet(name)", verify: "python -c \"import greeting\"" }
repeat: 2
until: success
- name: report
uses: run
when: prev_succeeded
with: { prompt: "One-line changelog for greet()" }
uv run chimera workflow examples/workflow.yaml --workspace ./scratch
drift — заслон расхождения между спецификацией и кодом
Держит спецификацию и код в согласии. Спецификация — это небольшой YAML из требований (defines
определяет символ, contains — регулярное выражение, absent — его отсутствие, command должна
завершиться кодом 0). Заслон завершается ненулевым кодом при расхождении, поэтому годится и как
проверяющий.
uv run chimera drift examples/spec.yaml --workspace ./scratch
# as a verifier inside solve:
uv run chimera solve "..." --verify "chimera drift examples/spec.yaml -w ."
migrate — перенос от другого агента
Переносит конфигурацию и навыки из Hermes или OpenClaw, а с флагом --apply ещё и сливает
долговременную память (без дублей, ничего не разрушая). По умолчанию это предпросмотр без записи.
uv run chimera migrate hermes /path/to/hermes/home # preview
uv run chimera migrate hermes /path/to/hermes/home --apply # write + merge memory
uv run chimera migrate openclaw /path/to/openclaw/home --apply
Слияние памяти сообщает количества {ADD, UPDATE, NOOP} — повторы становятся NOOP, поэтому
повторный запуск безопасен.
evolve — эволюция модели по желанию (для продвинутых)
chimera solve --collect (включено по умолчанию) записывает каждый запуск как траекторию. Команды
evolve превращают их в готовые к обучению наборы данных и в работающий рецепт LoRA. Обучение
происходит снаружи и по желанию — оно меняет веса модели, поэтому никогда не запускается само;
Chimera готовит данные и скрипт и на этом останавливается.
chimera evolve status # is there enough signal to train?
chimera evolve export --format sft --out d.jsonl --min-steps 5 --diverse # long-horizon, one example per task
chimera evolve export --format dpo --out d.jsonl # preference pairs (success vs failure)
chimera evolve recipe --out ./recipe --format dpo # train.py + README + requirements
chimera evolve tune --rounds 2 # self-optimize the agent spec (no weights changed)
export принимает настройки рецепта: --min-steps N оставляет только длинные траектории,
--diverse оставляет не больше одного примера на задачу (разнообразие задач — узкое место отбора), а
--min-process P (SkillCoach) оставляет только траектории, чья оценка следования шагам не ниже P,
то есть доля шагов с инструментами, давших успешный видимый результат, — так удачный успех,
пробившийся сквозь провальные вызовы инструментов, не попадает в обучение. События по шагам, на
которых держится эта оценка, записываются автоматически при каждом запуске solve; фильтр по
умолчанию выключен (CHIMERA_SFT_MIN_PROCESS задаёт общее значение по умолчанию). evolve tune —
это не обучение: он ведёт мета-поиск по спецификации агента (модель, системный промпт, бюджет
шагов, панель, глубина памяти), оценивая каждого кандидата на ежедневных сценариях и сохраняя правку
только при отсутствии ухудшения. Он обращается к моделям, но никогда не меняет веса, поэтому его
безопасно запускать когда угодно.
Затем, чтобы действительно обучить, на GPU (или в Colab): pip install chimera-agent[train] (или по
requirements.txt из рецепта) и python recipe/train.py. При выдаче ответов направьте
CHIMERA_DEFAULT_MODEL на базовую модель вместе с адаптером.
pet — виртуальный питомец
Маленький постоянный спутник, чьи показатели меняются, пока вас нет. Ключ не нужен.
chimera pet new --name Chimi # adopt one
chimera pet status # check in (fullness / happiness / energy / mood)
chimera pet feed | play | rest # interact
Советы
- Инструменты против рассуждения. Ходы с вызовом инструментов всегда идут на одной модели (слияние не умеет вызывать инструменты); слияние приберегается для глубокого рассуждения без инструментов.
- Смотрите, что произошло.
CHIMERA_LOG_LEVEL=DEBUGпоказывает журналы маршрутизации и включения слияния. - Держите тесты честными. Хорошая команда
--verify(настоящий набор тестов) делаетsolveнадёжным — это исполняемый эталон, по которому спрашивают с агента.