Текущая версия: 6.2.0
Ouroboros — локальный self-hosted агент с Telegram-интерфейсом, который работает в git-репозитории, умеет запускать инструменты (shell/git/web/browser/vision), вести память и проходить циклы эволюции.
- Точка входа:
launcher.py - Конфиг рантайма:
ouroboros.config.json - Основная логика:
supervisor/+ouroboros/
- Supervisor-слой: очередь задач, воркеры, маршрутизация входящих сообщений, события, git-операции, Telegram-клиент.
- Agent-слой: цикл выполнения инструментов, контекст, память, LLM-обвязка, review/метрики, фоновые процессы.
- Набор инструментов (
ouroboros/tools):core,git,github,shell,search,browser,vision,knowledge,review,control,health,compact_context,evolution_statsи др. - Тесты: smoke/unit тесты в
tests/. - Статическая документация:
docs/.
- Python 3.10+
- Linux/macOS окружение с доступом к git
- Telegram bot token
- Установите зависимости:
pip install -r requirements.txt- Скопируйте шаблон конфига и заполните значения:
cp ouroboros.config.example.json ouroboros.config.json- Запустите рантайм:
python launcher.pyФайл: ouroboros.config.json
Приложение читает именно JSON-конфиг через load_runtime_config() и затем экспортирует параметры в переменные окружения (включая OLLAMA_BASE_URL/OLLAMA_API_KEY для LLM-клиента).
Обязательные поля зависят от vcs_platform:
- Всегда:
telegram_bot_token - Для
github:github_token,github_user,github_repo - Для
gitea:github_user,github_repo+ хотя бы одно изgitea_base_urlилиgit_remote_url
Файл: .env.example
Этот файл — зеркальный шаблон env-переменных к ouroboros.config.json: те же ключи в формате окружения. Он не заменяет ouroboros.config.json, но нужен как справочник для деплоя/интеграций, где удобнее задавать env напрямую.
.
├── launcher.py
├── ouroboros/
│ ├── agent.py
│ ├── config.py
│ ├── loop.py
│ ├── llm.py
│ ├── memory.py
│ ├── review.py
│ └── tools/
├── supervisor/
│ ├── workers.py
│ ├── queue.py
│ ├── telegram.py
│ ├── git_ops.py
│ ├── state.py
│ └── events.py
├── tests/
├── docs/
└── ouroboros.config.example.json
Чтобы агент стабильно работал с tools и длинной историей (16k–32k), рекомендуется создать отдельную модель с зафиксированным num_ctx и использовать её как OUROBOROS_MODEL:
cat > Modelfile.32k <<'EOF'
FROM llama3.2:latest
PARAMETER num_ctx 32768
EOF
ollama create llama3.2-32k:latest -f Modelfile.32k
export OUROBOROS_MODEL=llama3.2-32k:latest
export OLLAMA_NUM_CTX=32768LLM-клиент Ouroboros делает idempotent warmup через /api/chat перед первым рабочим вызовом каждой модели, чтобы загрузить модель с нужным контекстом. По умолчанию используется стратегия OLLAMA_ENDPOINT_STRATEGY=single_v1 (единый endpoint /v1/chat/completions для всех запросов после warmup), что снижает риск случайной перезагрузки модели с меньшим контекстом.
make test # запуск тестов
make test-v # подробный запуск тестов
make health # метрики сложности/здоровья кода- Не коммитьте реальные токены/ключи в
ouroboros.config.json. - Используйте
.env.exampleтолько как шаблон.