Reef: инфраструктура непрерывного самоулучшения агентов

· 6 мин чтения
ai-agents continual-learning llm-training self-improving-agents tools
📂 Исходный код на GitHub

Первая open-source инфраструктура для непрерывно самоулучшающихся агентов: связывает инференс, обратную связь, обучение и версионирование. Обучает веса через Slime и SGLang или улучшает harness — промпты, правила и скиллы.

Reef: инфраструктура непрерывного самоулучшения агентов

Reef: инфраструктура непрерывного самоулучшения агентов

Reef — первая open-source инфраструктура для непрерывно самоулучшающихся агентов. Она связывает в один цикл инференс агента, сбор обратной связи, обучение и версионированную доставку обновлений. С её помощью можно обучать веса модели через Slime и SGLang или улучшать сам harness агента — промпты, правила и скиллы.

Проект опубликован под Apache-2.0, пакет называется reef-infra, требует Python 3.12+.

Когда использовать Reef

Reef нужен, когда агент должен становиться сильнее просто за счёт того, как вы с ним работаете:

Цель Путь обучения Что понадобится
Собственная усиленная модель Обучение весов Обучаемая модель, поддерживаемый GPU-стек, обратная связь для recipe
Самоулучшение harness Оптимизация harness Эндпоинт модели, репрезентативные задачи, evaluator — локальные GPU не нужны
Научные открытия Test-time training Среда выполнения, проверка корректности, измеримая цель

Как Reef встраивается в стек

Возможность Инференс-движок (vLLM, SGLang, …) RL-фреймворк (Slime, veRL, AReaL, …) Reef
Обслуживает живой трафик ✅ ❌ ✅
Обучает веса ❌ ✅ ✅
Управление версиями ❌ ❌ ✅
Непрерывная работа при обновлениях ❌ ❌ ✅
Эволюция за пределами весов (скиллы, harness) ❌ ❌ ✅

Как работает цикл

Каждый цикл обучения состоит из четырёх шагов:

  1. Serve — обслуживает запросы агента и записывает взаимодействия. Модули: service/ (запросы и записи), runtime/ (инференс и обновление артефактов).
  2. Observe — сопоставляет обратную связь с записанными взаимодействиями. Модули: storage/records.py (хранение), train/processors/ (сопоставление и допустимость фидбека).
  3. Grow — порождает обновление из допустимых записей. Модули: recipe/ (интеграция recipe), train/ (батчи и джобы).
  4. Commit — применяет настроенную политику отбора и публикует принятые обновления. Модули: train/evaluation/ (оценка кандидатов), artifact/ (история версий), surface/ (доставка).

Установка

Для артефактов и чекпоинтов нужен системный пакет git-lfs — Reef инициализирует Git LFS локально для своих репозиториев артефактов. Авторы рекомендуют uv:

uv venv && source .venv/bin/activate
uv pip install reef-infra
python3 -c "import reef; print(reef.__version__)"

Из исходников (нужно для разработки и training-примеров):

git lfs install
git clone https://github.com/Human-Agent-Society/reef.git
cd reef
uv venv && source .venv/bin/activate
uv pip install -e .
python3 -c "import reef; print(reef.__version__)"

Минимальный запуск — чистый inference-сервер:

uv run reef serve --inference.model-path Qwen/Qwen2.5-1.5B-Instruct

Два режима: веса и harness

Recipe деплоя определяет, какая поверхность обновляется — веса модели или harness агента.

Обучение весов

Пример запуска SAO-деплоя (arXiv:2607.07508) — из чекаута Reef, в окружении, удовлетворяющем GPU-требованиям:

uv pip install -e ".[slime]" && uv pip install --no-deps --group runtime

export MODEL_PATH="Qwen/Qwen2.5-1.5B-Instruct"
export REEF_TOKEN="reef-local"

reef serve -c recipes/sao/examples/imo_answerbench/serve.yaml \
  --inference.model-path "$MODEL_PATH" \
  --reef.port "8900"

curl -f http://127.0.0.1:8900/healthz

Инференс-эндпоинт совместим с OpenAI и Anthropic: /v1/chat/completions и /v1/messages принимают тела запросов этих провайдеров. Запрос несёт заголовок x-reef-scenario — новое имя создаёт scenario с recipe из деплоя. Reef добавляет ответный заголовок x-reef-agent-record-id: это receipt, по которому позднее report находит взаимодействие. Отчёт может содержать числовый score, текстовый или структурированный feedback и перечень оцениваемых receipt'ов:

import os
import httpx

reef = httpx.Client(
    base_url="http://127.0.0.1:8900",
    headers={"Authorization": f"Bearer {os.environ['REEF_TOKEN']}", "x-reef-scenario": "hello-reef"},
    timeout=300,
)

# Send a provider-compatible inference request
response = reef.post(
    "/v1/chat/completions",
    json={
        "model": os.environ["MODEL_PATH"],
        "messages": [{"role": "user", "content": "Return exactly: reef is ready"}],
    },
)

response.raise_for_status()
receipt = response.headers["x-reef-agent-record-id"]
answer = response.json()["choices"][0]["message"]["content"]

# Sending report about the inference
matched = answer.strip() == "reef is ready"

reef.post(
    "/reef/report",
    json={"score": float(matched), "feedback": "matched" if matched else "wrong answer", "references": [receipt]},
).raise_for_status()

Когда recipe набирает достаточно обратной связи, он запускает training-шаг и синхронизирует обновлённые веса в serving-рантайм. Последующие запросы используют текущую версию без перезапуска Reef.

Эволюция harness

Reefine — встроенный recipe доработки harness: обычным языком, через API модели, без локальных GPU:

reef serve --recipe reefine \
  --inference.upstream-url http://127.0.0.1:11434 \
  --inference.upstream-model gemma4:26b

Reef слушает 127.0.0.1:8901 (состояние — в .reef/reefine/). Свою копию конфигурации деплоя можно передать через -c. В соседнем терминале создаётся scenario, ставится harness и запрашивается изменение:

curl -fsS -H "Content-Type: application/json" \
  -d '{"name": "my-harness"}' http://127.0.0.1:8901/reef/scenarios
curl -fsS -H "x-reef-scenario: my-harness" \
  'http://127.0.0.1:8901/reef/harness/install?adapter=pi' | bash

reef-pi evolve "when I ask you to fix a bug, reproduce it with a failing test first"

В сессии reef-pi команда /reefine <текст> делает тот же запрос. Модель оформляет изменение как скилл, запись в rules, agent-команду или pi-расширение; на Linux с изоляцией (bwrap и pasta) она может прогнать изменённый harness как coding-агент, прежде чем вернуть результат. Версии смотрятся через /versions, установка — /versions <version> install. Подробнее — туториал Reefine и гайд Reefine.

Рецепты и примеры

Recipe выбирается по типу задачи и по тому, что должно эволюционировать — веса или harness. Weight-рецепты требуют GPU-стека, harness-рецепты — только эндпоинта модели. Reefine входит в reef-infra, остальные лежат в recipes/:

Тип задачи Эволюционирует модель Эволюционирует harness Бенчмарки
Научные открытия TTT-Discover, Guidance-TTT — TriMul, circle packing, Erdős minimum overlap
Непрерывное обучение на потоке задач SAO Meta-Harness, GEPA AIME 2025, IMOAnswerBench, CEO-Bench, Terminal-Bench
Обучение на использовании OpenClaw-RL SkillClaw, Reefine GSM8K task stream, WildClawBench

Стартовый стек — recipes/basic/ (только запись). Небольшой разбор обратной связи, правок-кандидатов и публикации — в туториале по эволюции harness.

Документация и сообщество

Документация на reefinfra.ai/docs: Quickstart, HTTP API, «Write a recipe», эволюция harness и модели, каталог рецептов, core loop и глоссарий.

Участвовать можно через Discord, GitHub Discussions и гайд контрибьютора; уязвимости — по security policy. Roadmap — в issue #25.

Важные части Reef построены на проектах SGLang (инференс), slime (обучение весов) и cordis (эволюция harness).

Источник: https://github.com/Human-Agent-Society/reef