Сегодня я наконец-то закончил оформление двух инструментов для разработки - библиотека постановки задач агентским обвязкам под названием 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)