Сегодня я наконец-то закончил оформление двух инструментов для разработки - библиотека постановки задач агентским обвязкам под названием Agent Shuttle и основанной на ней библиотеки под названием Qriterra для тестирования качества кода. Обе - части для более крупного проекта по мультиагентной оркестрации, над которым я работаю. Первая работает как библиотека и MCP на основе ее. Вторая же работает на основе Agent Shuttle и прогоняет проект по 80 четким правилам запахов кода, выдавая оценку качества.

Agent Shuttle может помочь вам в организации своих проектов автоматизации на базе агентских обвязок, а вторая выборочно (уж больно дороговата пока в токенах - от ~ 200 тыс. токенов). Сейчас я использую часто Agent Shuttle как MCP для Codex (поручая рядовые задачи по кодингу дешевому, но нравящемуся мне Gemini 3.8 Flash) и Antigravity (для планирования сложных вопросов через Codex GPT 6 Astra, например).

По плану в моем проекте Agent Shuttle должен стать основой взаимодействия между агентами, этакий протокол низкого уровня в сети. А Qriterra должна помогать измерять эффективность подходов и технологий по работе с агентами - т.е. насколько некое решение лучше одиночного агента с самой лучшей моделью, например. Другими словами - определить работает концепции на основе цифр, а не догадок.

Простой способ использовать библиотеки в своих проектах:

Установка:

python -m pip install "git+https://github.com/plartex/agent-shuttle.git"
python -m pip install "git+https://github.com/plartex/qriterra.git"

Agent Shuttle:

import asyncio
import socket
import sys
from pathlib import Path

from agent_shuttle import HarnessLaunch, ShuttleClient, connect_harness


def free_url():
    with socket.socket() as sock:
        sock.bind(("127.0.0.1", 0))
        return f"http://127.0.0.1:{sock.getsockname()[1]}"


async def main():
    harness = sys.argv[1] if len(sys.argv) > 1 else "codex"
    profile = Path(sys.argv[2]) if len(sys.argv) > 2 else None

    launch = HarnessLaunch(
        name=harness,
        url=free_url(),
        workspace=Path.cwd(),
        profile_path=profile,
    )
    async with connect_harness(launch) as connection:
        result = await ShuttleClient().ask(
            connection.url,
            "Объясни назначение этого проекта. Не меняй файлы.",
        )
        print(result.text)


asyncio.run(main())

Qriterra:

python -m qriterra evaluate file src/service.py --provider agent-shuttle:codex --rules long_method,large_class --json

Agent Shuttle MCP:

Запускайте сервер - .\.venv\Scripts\agent-shuttle.exe serve codex --workspace . --port 8765

Пример для Codex - добавьте в конфигурацию проекта .codex/config.toml (заменив C:/my-project на абсолютный путь:

[mcp_servers.agent_shuttle]
command = "C:/my-project/.venv/Scripts/python.exe"
args = ["-m", "agent_shuttle.mcp_server"]
tool_timeout_sec = 1800

[mcp_servers.agent_shuttle.env]
BRIDGE_CODEX_URL = "http://127.0.0.1:8765"

Что дальше?

В планах — добавить поддержку новых адаптеров для популярных LLM-агентов в Agent Shuttle, а в Qriterra расширить набор проверок: добавить детерминированный анализ производительности и трекинг ошибок.

Исходники на GitHub: Agent Shuttle | Qriterra. Буду рад звездам, тестированию и обратной связи по contact@alexanderkovalenko.net или @yourphonenumber (TG)