12 KiB
2026-05-14 — Claude CLI Proxy + TRI max-aggregation
Claude CLI Proxy — ГОТОВО ✅
Что сделано
- Проект:
tasks/claude-cli-proxy/(BRD, DEV_TASK, PROJECT.md) - Суть: CLIProxyAPI (Go, open-source) оборачивает Claude Code CLI в OpenAI-compatible API
- Деплой: Docker контейнер
claude-cli-proxyна mva154 (82.22.50.71) - OAuth: авторизован через Max 5x подписку Славы (claude-homenet542@gmail.com)
- Сеть:
openclaw_openclaw-network, доступен изopenclaw-gatewayпо имениclaude-cli-proxy:8317 - Порт: 127.0.0.1:8317 (не наружу)
OpenClaw интеграция
- Provider
claude-cli-proxyдобавлен вopenclaw.json - Dev-агент переключен на
claude-cli-proxy/claude-sonnet-4-20250514 - Доступные модели: sonnet-4, sonnet-4-6, opus-4, opus-4-7, opus-4-6, haiku-4-5
- Gateway перечитал конфиг (SIGHUP)
Лимиты
- Max 5x: ~50-200 промптов/5ч окно
- ⚠️ С 15.06.2026 — Agent SDK credit отдельный (детали TBD)
Переавторизация (если токен протухнет)
docker compose downdocker run --rm -it -p 54545:54545 -v $(pwd)/auth:/root/.cli-proxy-api eceasy/cli-proxy-api:latest /CLIProxyAPI/CLIProxyAPI --claude-login --no-browser- SSH туннель + открыть URL в браузере
docker compose up -d
TRI тайлы — max-агрегация для мелких зумов ✅
Проблема
На мелких зумах (5-8) вся карта TRI жёлтая — bilinear resampling усредняет значения.
Решение
Python max-pool (factor=10) на raw TRI single-band → colorize → tile. GDAL 3.4 не поддерживает -r max, поэтому numpy.
Результат
- Zoom 5: 6 тайлов, все непустые, 52% visible — преобладает оранжевый/красный
- Zoom 6-8: контраст есть, плоские участки прозрачные
- Zoom 10-12: full-res, без изменений
- Общий размер: 520M
Ждём фидбек Славы
Нужно подтверждение что на карте теперь видно где холмисто.
CLIProxyAPI — дебаг и фикс (14.05.2026)
Проблема
Dev-агент не мог работать через claude-cli-proxy/claude-sonnet-4-6 — получал "FailoverError: network connection error". При этом curl из того же контейнера работал.
Корневая причина
HTTP_PROXY=http://xray:10809 и HTTPS_PROXY=http://xray:10809 в environment контейнера openclaw-gateway направляли ВСЕ HTTP-запросы через Xray прокси. Xray не мог зарезолвить внутренний docker hostname claude-cli-proxy → connection error.
curl работал потому что обрабатывает прокси иначе для внутренних хостов.
Фикс
- Добавлен
NO_PROXY=claude-cli-proxy,localhost,127.0.0.1,172.19.0.0/24в/home/slin/openclaw/docker-compose.yml - Убран
reasoning: trueиз всех моделей cli-proxy в openclaw.json (парсер не извлекал content) - Пересоздан контейнер:
docker compose up -d openclaw-gateway
Конфиг провайдера (рабочий)
"claude-cli-proxy": {
"baseUrl": "http://claude-cli-proxy:8317/v1",
"apiKey": "dummy",
"api": "openai-completions",
"models": [...] // без reasoning:true
}
Уроки
- SIGHUP НЕ перечитывает конфигурацию провайдеров (models.providers) — нужен полный рестарт
- HTTP_PROXY влияет на Node.js HTTP клиент для ВСЕХ запросов, включая внутренние docker
- NO_PROXY обязателен для внутренних сервисов в docker network
- CLIProxyAPI поддерживает и OpenAI формат, и нативный Anthropic Messages API
2026-05-14 — Claude CLI Proxy + TRI max-aggregation
Claude CLI Proxy — ГОТОВО ✅
Что сделано
- Проект:
tasks/claude-cli-proxy/(BRD, DEV_TASK, PROJECT.md) - Суть: CLIProxyAPI (Go, open-source) оборачивает Claude Code CLI в OpenAI-compatible API
- Деплой: Docker контейнер
claude-cli-proxyна mva154 (82.22.50.71) - OAuth: авторизован через Max 5x подписку Славы (claude-homenet542@gmail.com)
- Сеть:
openclaw_openclaw-network, доступен изopenclaw-gatewayпо имениclaude-cli-proxy:8317 - Порт: 127.0.0.1:8317 (не наружу)
OpenClaw интеграция
- Provider
claude-cli-proxyдобавлен вopenclaw.json - Dev-агент переключен на
claude-cli-proxy/claude-sonnet-4-6 - Доступные модели: sonnet-4, sonnet-4-6, opus-4, opus-4-7, opus-4-6, haiku-4-5
- Gateway перечитал конфиг (SIGHUP)
Лимиты
- Max 5x: ~50-200 промптов/5ч окно
- ⚠️ С 15.06.2026 — Agent SDK credit отдельный (детали TBD)
Переавторизация (если токен протухнет)
docker compose downdocker run --rm -it -p 54545:54545 -v $(pwd)/auth:/root/.cli-proxy-api eceasy/cli-proxy-api:latest /CLIProxyAPI/CLIProxyAPI --claude-login --no-browser- SSH туннель + открыть URL в браузере
docker compose up -d
TRI тайлы — max-агрегация для мелких зумов ✅
Проблема
На мелких зумах (5-8) вся карта TRI жёлтая — bilinear resampling усредняет значения.
Решение
Python max-pool (factor=10) на raw TRI single-band → colorize → tile. GDAL 3.4 не поддерживает -r max, поэтому numpy.
Результат
- Zoom 5: 6 тайлов, все непустые, 52% visible — преобладает оранжевый/красный
- Zoom 6-8: контраст есть, плоские участки прозрачные
- Zoom 10-12: full-res, без изменений
- Общий размер: 520M
Ждём фидбек Славы
Нужно подтверждение что на карте теперь видно где холмисто.
CLIProxyAPI — дебаг и фикс (14.05.2026)
Проблема
Dev-агент не мог работать через claude-cli-proxy/claude-sonnet-4-6 — получал "FailoverError: network connection error". При этом curl из того же контейнера работал.
Корневая причина
HTTP_PROXY=http://xray:10809 и HTTPS_PROXY=http://xray:10809 в environment контейнера openclaw-gateway направляли ВСЕ HTTP-запросы через Xray прокси. Xray не мог зарезолвить внутренний docker hostname claude-cli-proxy → connection error.
curl работал потому что обрабатывает прокси иначе для внутренних хостов.
Фикс
- Добавлен
NO_PROXY=claude-cli-proxy,localhost,127.0.0.1,172.19.0.0/24в/home/slin/openclaw/docker-compose.yml - Убран
reasoning: trueиз всех моделей cli-proxy в openclaw.json (парсер не извлекал content) - Пересоздан контейнер:
docker compose up -d openclaw-gateway
Конфиг провайдера (рабочий)
"claude-cli-proxy": {
"baseUrl": "http://claude-cli-proxy:8317/v1",
"apiKey": "dummy",
"api": "openai-completions",
"models": [...] // без reasoning:true
}
Уроки
- SIGHUP НЕ перечитывает конфигурацию провайдеров (models.providers) — нужен полный рестарт
- HTTP_PROXY влияет на Node.js HTTP клиент для ВСЕХ запросов, включая внутренние docker
- NO_PROXY обязателен для внутренних сервисов в docker network
- CLIProxyAPI поддерживает и OpenAI формат, и нативный Anthropic Messages API
CLIProxyAPI — проблема cloaking + rate limit (14.05.2026)
Проблема 2: System prompt не доходит до модели
После фикса NO_PROXY запросы доходят, но Dev-агент отвечает "I don't see a Your Role section" — CLIProxyAPI инжектит system prompt Claude Code поверх нашего (cloaking).
Попытка фикса: anthropic-messages API
- Переключил
api: "anthropic-messages",baseUrl: http://claude-cli-proxy:8317(без /v1) - Добавил
User-Agent: claude-cli/2.1.44header для bypass cloaking - Результат: запрос дошёл до Anthropic, но получил 429 rate limit
Открытие: два разных rate limit bucket'а
/v1/chat/completions(OpenAI формат) → идёт через Claude Code CLI → тот же bucket что у Славы в терминале → работает/v1/messages(Anthropic формат) → идёт напрямую в Messages API → отдельный rate limit → 429
Текущий статус
api: "openai-completions"работает без rate limit, но cloaking затирает system promptapi: "anthropic-messages"обходит cloaking, но попадает в rate limit- CLIProxyAPI v7.0.6 не имеет опции отключить cloaking (PR #3328, #2709 не смержены)
Варианты решения
- Обновить CLIProxyAPI до latest (может PR уже в main)
- Добавить
"cloak": "passthrough"в auth JSON (если поддерживается) - Использовать openai-completions + жить с cloaking (system prompt частично работает)
- Fallback на vibecode для Dev-агента (текущий workaround)
Текущий workaround
Dev-агент работает на vibecode/claude-sonnet-4.6 — стабильно, без проблем.
Enduro Trails — UI улучшения ✅
Что сделано (через Dev-агента на vibecode/claude-sonnet-4.6)
- Zoom-индикатор — в правом верхнем углу,
z12 - Масштабная линейка — перенесена в правый верхний угол
- Кнопка Поиск (🔍) — в тулбаре, Nominatim geocoding, центрирование карты
- Объединение zoom + scale —
z7 · 30 кмв одну строку - Возврат ScaleControl — линейка под текстом
- Финальная переделка — одна строка: линейка с расстоянием внутри + номер зума справа (
[——— 30 km ———] z10)
UI тесты
- Написаны тест-кейсы:
tasks/enduro-trails/TEST_CASES_UI_SEARCH.md(11 тестов) - Результат: 8 PASS, 2 FAIL (кнопка ✕ не видна), 1 flaky
- Отчёт:
tasks/enduro-trails/reports/ui-search/report.md
Баг: кнопка ✕ закрытия поиска не видна
- Цвет сливается с тёмной темой
- Нужно сделать контрастнее/крупнее
- Не критично — панель закрывается повторным кликом на "Поиск"