auto-sync: 2026-05-14 10:10:01
This commit is contained in:
167
tasks/claude-cli-proxy/BRD.md
Normal file
167
tasks/claude-cli-proxy/BRD.md
Normal file
@@ -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 | Автор: Стрим 🌊*
|
||||
Reference in New Issue
Block a user