From 0686d5b5a77294c0386be00d43498b2b43d58522 Mon Sep 17 00:00:00 2001 From: Stream Date: Thu, 14 May 2026 10:10:01 +0300 Subject: [PATCH] auto-sync: 2026-05-14 10:10:01 --- tasks/claude-cli-proxy/BRD.md | 167 ++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 tasks/claude-cli-proxy/BRD.md diff --git a/tasks/claude-cli-proxy/BRD.md b/tasks/claude-cli-proxy/BRD.md new file mode 100644 index 0000000..0b2eed7 --- /dev/null +++ b/tasks/claude-cli-proxy/BRD.md @@ -0,0 +1,167 @@ +# BRD: Claude CLI Proxy — подписка Max вместо токенов + +**Версия:** 1.0 +**Дата:** 2026-05-14 +**Автор:** Стрим 🌊 +**Статус:** Согласовано ✅ + +--- + +## 1. Контекст и цели + +### Что есть сейчас +- OpenClaw использует LLM через API-провайдеров (OpenRouter, Anthropic API, vibecode и др.) +- Каждый запрос = токены = деньги +- Dev-агент на Claude Opus 4.7 — самый дорогой потребитель (длинные сессии, большой контекст) + +### Проблема +Dev-агент сжирает токены как не в себя. Одна сессия разработки может стоить $5-15. При активной работе — $200-500/мес только на Dev. + +### Решение +У Славы есть подписка Claude Max ($100-200/мес) с щедрыми лимитами. Claude Code CLI умеет работать в non-interactive режиме (`claude -p`) с JSON/streaming выводом. Существует готовый open-source проект **CLIProxyAPI**, который оборачивает Claude Code CLI в OpenAI-compatible API. + +### Цель +Поднять CLIProxyAPI на mva154, авторизовать через Max подписку, подключить к OpenClaw как LLM provider для Dev-агента. Результат: Dev-агент работает по подписке, а не за токены. + +--- + +## 2. Архитектура + +``` +OpenClaw (контейнер) + ↓ HTTP POST /v1/chat/completions +CLIProxyAPI (контейнер на mva154, порт XXXX) + ↓ spawn claude -p --output-format stream-json +Claude Code CLI (внутри того же контейнера) + ↓ OAuth token (Max подписка) +Anthropic API (бесплатно в рамках подписки) +``` + +### Компоненты + +| Компонент | Что делает | +|-----------|-----------| +| CLIProxyAPI | Go-сервер, слушает HTTP, транслирует в вызовы Claude CLI | +| Claude Code CLI | Установлен в контейнере, авторизован через OAuth | +| OpenClaw config | Новый provider с baseUrl на CLIProxyAPI | + +--- + +## 3. Готовое решение: CLIProxyAPI + +**Репо:** https://github.com/router-for-me/CLIProxyAPI +**Язык:** Go +**Лицензия:** MIT +**Активность:** обновляется ежедневно, зрелый проект + +### Что умеет (релевантное для нас): +- Claude Code OAuth авторизация +- OpenAI-compatible `/v1/chat/completions` +- Streaming (SSE) и non-streaming режимы +- Очередь запросов (один CLI инстанс за раз) +- Function calling / tools support +- Multimodal input (text + images) + +### Что НЕ нужно: +- Multi-account load balancing (у нас один аккаунт) +- Gemini/Codex support (только Claude) +- Management UI (overkill) + +--- + +## 4. Лимиты и ограничения + +### Rate limits Max подписки +- **5-часовое скользящее окно** — бюджет обновляется каждые 5 часов от первого промпта +- **Недельный cap** — считается только активное compute-время +- **Пиковые часы** (5am-11am Pacific / 15:00-21:00 MSK) — расход x1.3-1.5 +- **Max 5x** ≈ 50-200 промптов/5ч, **Max 20x** ≈ до 800 промптов/5ч + +### ⚠️ Изменение с 15 июня 2026 +Anthropic анонсировали: `claude -p` (Agent SDK mode) будет тратить **отдельный** месячный "Agent SDK credit", не из интерактивного лимита. Детали пока неизвестны — нужно следить. + +### Риски +| Риск | Вероятность | Митигация | +|------|-------------|-----------| +| Anthropic закрутит гайки / ToS | Средняя | CLIProxyAPI — массовый проект, тысячи пользователей. Если закроют — закроют всем | +| Rate limit hit | Высокая при активной работе | Fallback на обычный API provider в OpenClaw | +| OAuth token протухнет | Низкая | Мониторинг + ре-авторизация | +| Agent SDK credit окажется маленьким | Неизвестно (после 15.06) | Оценить после запуска, возможно вернуться на API | + +--- + +## 5. Фичи + +### F-01: Контейнер CLIProxyAPI на mva154 + +**Описание:** Docker-контейнер с CLIProxyAPI + Claude Code CLI, авторизованный через OAuth. + +**Acceptance criteria:** +- Контейнер запускается и слушает порт +- `curl http://localhost:PORT/v1/models` возвращает список моделей +- Health check проходит + +--- + +### F-02: OAuth авторизация Claude Max + +**Описание:** Claude Code CLI внутри контейнера авторизован под Max подпиской Славы. + +**Acceptance criteria:** +- `claude auth status` показывает активную сессию +- `claude -p "hello"` возвращает ответ +- Не тратит API credits (использует подписку) + +--- + +### F-03: Интеграция с OpenClaw + +**Описание:** OpenClaw видит CLIProxyAPI как LLM provider и может отправлять запросы. + +**Acceptance criteria:** +- В `openclaw.json` добавлен provider +- Dev-агент может использовать модель через этот provider +- Streaming работает (ответы приходят по частям) + +--- + +### F-04: Fallback на API + +**Описание:** Если CLIProxyAPI недоступен или rate-limited — автоматический fallback на обычный API provider. + +**Acceptance criteria:** +- При 429/503 от прокси OpenClaw переключается на fallback модель +- Логируется факт fallback + +--- + +## 6. Этапы + +| # | Этап | Что делаем | Результат | +|---|------|-----------|-----------| +| 1 | Setup | Контейнер + CLIProxyAPI + Claude CLI | Работающий прокси | +| 2 | Auth | OAuth авторизация Max подписки | CLI отвечает на запросы | +| 3 | Integration | Подключение к OpenClaw как provider | Dev-агент работает через прокси | +| 4 | Hardening | Fallback, мониторинг, auto-restart | Продакшн-ready | + +--- + +## 7. Решения + +1. **Порт:** любой свободный (выберем при деплое) +2. **Подписка:** Max 5x ($100/мес) — ~50-200 промптов/5ч окно +3. **Доступ:** только из docker network mva154 (OpenClaw контейнер там же) +4. **Модель по умолчанию:** Sonnet (переключение на Opus через OpenClaw config при необходимости) + +--- + +## 8. Не в скоупе (пока) + +- Multi-account / ротация аккаунтов +- Использование для других агентов кроме Dev +- Кеширование ответов +- Web UI для мониторинга + +--- + +*Создано: 2026-05-14 | Автор: Стрим 🌊*