Files
ClaudeMeter/README.md
T
wenil 4083609b12 feat: ClaudeMeter — Wear OS rate-limit tracker for Claude Code
- wear: Compose for Wear UI, polls api.anthropic.com, shows 5h/7d utilization
- mobile: companion app — token input + Data Layer API + WiFi ADB install
- ADB pairing via libadb-android (SPAKE2 + TLS), pm install on watch
- Build: AGP 8.7.3, Gradle 8.13, Kotlin 1.9.22, compileSdk 35
2026-06-19 11:43:24 +03:00

78 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Claude Meter — лимит Claude Code на часах
Минимальное Wear OS приложение для Galaxy Watch 6 Classic (и любых Wear OS 3+).
Опрашивает `api.anthropic.com` так же, как [Clawdmeter](https://github.com/HermannBjorgvin/Clawdmeter),
но без ESP32/демона/BLE — часы ходят на API сами по WiFi.
Показывает:
- **5h** — загрузка 5-часового окна (%) и минуты до сброса
- **7d** — загрузка недельного окна (%) и минуты до сброса
- **status** — `normal` / `banned` / `unknown`
Цвет: зелёный <70%, янтарь 7090%, красный ≥90%.
## Архитектура (минимум)
- **mobile** (телефон) — одно приложение, две функции:
1. Поле ввода OAuth-токена + кнопка «Отправить токен» (через Wearable Data Layer).
2. Установка wear APK на часы по WiFi ADB — без компьютера, прямо с телефона.
Использует [dadb](https://github.com/mobile-dev-inc/dadb) — pure-Kotlin ADB-клиент.
Wear APK встроен в mobile APK (assets), копируется при установке.
- **wear** (часы):
- `TokenReceiverService``WearableListenerService`, ловит `/token` даже когда app закрыто.
- `TokenStore``EncryptedSharedPreferences` (токен шифруется на устройстве).
- `ApiPoller` — один `HttpURLConnection` POST к `api.anthropic.com/v1/messages`
(`max_tokens=1`, haiku — самый дешёвый запрос ради rate-limit заголовков).
- `MainActivity` — Compose for Wear, авто-опрос при запуске + кнопка «Обновить».
## APK
После `./gradlew assembleDebug`:
- `mobile/build/outputs/apk/debug/mobile-debug.apk` — для телефона (27 МБ, включает wear APK)
- `wear/build/outputs/apk/debug/wear-debug.apk` — для часов (22 МБ, можно ставить и вручную)
## Установка
### Шаг 1: поставить mobile APK на телефон
```
adb install -r mobile/build/outputs/apk/debug/mobile-debug.apk
```
Или скопировать APK на телефон и открыть.
### Шаг 2: включить отладку по WiFi на часах
1. На часах: Settings → About watch → тапнуть 7 раз по «Build number» → Developer mode.
2. Settings → Developer options → **Debug over WiFi** → включить.
3. Запомнить IP-адрес (показан в Developer options под «Debug over WiFi»).
### Шаг 3: установить wear APK с телефона
1. Открыть **Claude Meter Setup** на телефоне.
2. В секции «2. Установка приложения на часы» ввести IP часов и порт (5555).
3. Нажать «Установить на часы».
4. При первом подключении — подтвердить RSA-ключ на часах (появится диалог).
5. Готово — приложение Claude Meter появилось на часах.
> ADB-ключ генерируется один раз, хранится в `filesDir` приложения на телефоне.
> При следующих установках подтверждение на часах не нужно.
### Шаг 4: отправить токен
1. Скопировать `accessToken` из `~/.claude/.credentials.json` на ПК.
2. В секции «1. Токен Claude Code» вставить токен → «Отправить токен».
3. На часах открыть **Claude Meter** — увидит токен → покажет проценты.
Токен протухает (OAuth) — перепастить на телефоне, «Отправить» снова.
`// ponytail: token on-device, re-paste on OAuth expiry.`
## Где взять токен
Claude Code хранит OAuth-токен в `~/.claude/.credentials.json`:
```json
{"claudeAiOauth": {"accessToken": "***..."}}
```
## Что добавлять потом (не сейчас)
- **Фоновое обновление** — `WorkManager` periodic (~15 мин). Сейчас по тапу + при запуске.
- **Complication на циферблате** — always-on виджет с %. Больше бойлерплейта, делаем когда v0 зайдёт.
- **График истории** — Room + простая диаграмма. YAGNI пока.
- **Авто-рефреш токена** — если Claude Code добавит refresh-token flow. Сейчас ручная перепоставка.