0005 — Клиент AI использует сырой HTTP, не Anthropic SDK
Контекст
Каждая AI функция (generation стратегии, self-repair, risk guard, post-mortems) вызывает Anthropic API. Зависимость SDK добавляет переходную поверхность, которую мы не контролируем, связывает наш release cadence к их, и скрывает точной wire контракт, который нам нужен для рассуждения о устойчивости и стоимости.
Решение
IAiClient вызывает Anthropic над сырым HTTP через typed HttpClient — намеренно не SDK. AiFeatureService является единственным оркестратором, разделенным Web endpoints, MCP AiTools и AiRiskGuard. Вся поверхность гейтирована на AppOptions.Ai.ApiKey: без ключа, каждая функция возвращает AiResult.Fail и приложение работает без изменений.
Последствия
- Нет ключа требуется для построения, тестирования или E2E — CI и локальный dev запускают полное приложение без AI.
- Мы владеем request/response формой, retry/timeout политикой и token accounting явно.
- Новые Anthropic функции должны быть подключены вручную; мы торгуем удобством для контроля и меньшей поверхности зависимости. Смотрите
claude-apiссылка для текущих model ids и параметров.