Локальные AI-агенты, Git и DevOps/aka-gst

Эксперимент 9 · 4 мин

Эксперимент 9. Минимальный runtime gateway

Содержание раздела
  1. Что мы делаем и зачем
  2. Что должно быть готово
  3. Где выполнять
  4. Scope
  5. Команды PowerShell
  6. Как действовать при запросе разрешения
  7. Что должно получиться
  8. Типовые ошибки и действия
  9. Артефакты и доказательства
  10. Критерий завершения

Атомарная цель. Создать отдельный loopback-сервис с OpenAI-compatible /v1/chat/completions, Bearer auth и allowlist backend/model.

Что мы делаем и зачем

Codex является инженерным агентом, но не постоянным HTTP endpoint. Gateway заполняет именно этот runtime-разрыв: приложение получает стабильный локальный API, а маршрутизация на Ollama или разрешённый cloud backend остаётся в одном контролируемом сервисе.

Что должно быть готово

  • Эксперимент 8.5 завершён.
  • Папка C:\dev\agent-lab\local-agent-gateway отсутствует либо её состояние предварительно проверено.
  • Ollama отвечает локально.

Где выполнять

Новый sibling-проект C:\dev\agent-lab\local-agent-gateway. Open-LLM-VTuber в этом эксперименте не меняется.

Scope

РазрешеноТолько действия, прямо указанные в prompt и командах этого эксперимента.
ЗапрещеноСекреты, изменение main/upstream, расширение scope и скрытое исправление новых ошибок.
РезультатАртефакты и критерии на третьей странице эксперимента.

Откройте Codex из папки, указанной на предыдущей странице. Для независимого аудита обязательно создайте новую сессию. Скопируйте следующий prompt целиком, не вырезая ограничения.

PROMPT ДЛЯ CODEX - КОПИРОВАТЬ ЦЕЛИКОМ

Работай как инженер в режиме контролируемого агента.
Перед любым изменением покажи карту релевантной части репозитория, одну атомарную цель, файлы чтения и изменения, риски и команды проверки.
Сначала покажи план. Не меняй файлы до моего явного подтверждения.
Не используй sudo, force push, git reset --hard, git clean -fd и опасные команды удаления.
Не переключай и не изменяй main.
Не читай и не печатай .env, токены, SSH-ключи, cookies и keychain.
Не трогай файлы за пределами указанного scope.
Не скрывай ошибки и не подменяй тест словесным утверждением.
После изменения покажи краткий diff, реальный минимальный тест и git status --short.
Если нужен больший scope, остановись и запроси новый атомарный шаг.

Текущая задача: создать отдельный минимальный Python gateway в C:\dev\agent-lab\local-agent-gateway. Не меняй Open-LLM-VTuber.

Требования: FastAPI; GET /health; POST /v1/chat/completions; bind только 127.0.0.1:8642; Bearer auth для /v1; allowlist backend/model; backend ollama по умолчанию; upstream http://127.0.0.1:11434/v1; нейтральные ошибки; timeout; request_id; не логировать Authorization, полный prompt и полный response. Реальные секреты только в untracked .env, в репозитории только .env.example с placeholders.

Сначала покажи карту проекта, файлы, схему request flow, зависимости, риски и тесты. После подтверждения создай проект. После каждого изменения покажи git diff и минимальный pytest. Не добавляй OpenRouter/OpenAI вызов, пока локальный Ollama path не проверен.

Команды PowerShell

Команды ниже нужны либо для ручного выполнения, либо для сверки предложения Codex. Строки после комментария «после подтверждения» не запускаются заранее.

КОМАНДЫ - КОПИРОВАТЬ ПО ПОРЯДКУ

powershell
Set-Location C:\dev\agent-lab
uv init local-agent-gateway
Set-Location .\local-agent-gateway
uv add fastapi "uvicorn[standard]" httpx pydantic-settings
uv add --dev pytest pytest-asyncio
uv run pytest -q
uv run uvicorn app.main:app --host 127.0.0.1 --port 8642

Как действовать при запросе разрешения

Прочитайте команду и рабочую папку; сразу сверьте их со scope этого эксперимента.

Для одной безопасной команды выберите разовое Yes, proceed.

Если команда читает секреты, пишет за пределами scope или меняет main - нажмите Esc и объясните ограничение.

Что должно получиться

  • GET /health возвращает 200 без auth и без секретов.
  • POST /v1/chat/completions без Bearer возвращает 401.
  • Разрешённая модель qwen3-vl:4b проходит к Ollama.
  • Запрещённый backend/model отклоняется до сетевого вызова.

Типовые ошибки и действия

  • Port 8642 busy: определить процесс, не менять порт молча.
  • 401 при правильном клиенте: проверить заголовок без печати token.
  • 502/503: проверить Ollama health и timeout.
  • Секрет попал в Git: остановиться; не переписывать историю без отдельного решения.

Артефакты и доказательства

Критерий завершения

ГОТОВАЯ ЗАПИСЬ В ОТЧЁТ

Эксперимент 9: Минимальный runtime gateway | Статус: PASS / FAIL / NOT PROVEN
Доказательство: <минимальный обезличенный вывод> | Не доказано: <ограничение>
Source tree: unchanged / <известный diff> | Следующий шаг: Подключить Open-LLM-VTuber к gateway только через local conf.yaml.