Tworzenie niestandardowego paska statusu dla Claude Code z monitorowaniem VPS w czasie rzeczywistym
Deweloperzy pracujący z Claude Code na wielu serwerach napotykają konieczność ciągłego przełączania kontekstu, aby sprawdzić stan infrastruktury. Rozwiązaniem jest własny pasek statusu, wyświetlający kluczowe metryki sesji i monitorowanie VPS bez opuszczania edytora.
Architektura systemu monitorowania
System zbudowany jest na dwóch komponentach: lekkim demonie do sondowania serwerów i skrypcie klienckim do wyświetlania danych. Demon vps-poller.sh wykonuje zapytania SSH do wskazanych serwerów co 30 sekund, zbierając cztery kluczowe metryki:
- Obciążenie pamięci operacyjnej (RAM)
- Obciążenie procesora (CPU)
- Wypełnienie przestrzeni dyskowej
- Czas pracy systemu (uptime)
Otrzymane dane są buforowane w plikach JSON w katalogu /tmp/, co pozwala skryptowi klienckiemu statusline.sh natychmiast odczytywać aktualne informacje bez dodatkowych zapytań sieciowych. Takie podejście eliminuje opóźnienia w głównym interfejsie Claude Code.
Kluczowe zalety architektury:
- Minimalne obciążenie sieci dzięki buforowaniu
- Zerowe opóźnienie przy wyświetlaniu statusu
- Modularność: demon może być uruchamiany niezależnie
- Wsparcie dla wielu serwerów jednocześnie
Realizacja autofokusu na aktywnym serwerze
Jednym z głównych problemów przy pracy z wieloma VPS jest konieczność wizualnego określenia, z którym serwerem następuje interakcja w danym momencie. System rozwiązuje to poprzez automatyczną analizę logów Claude Code.
Skrypt analizuje ostatnie 20 KB transkrypcji sesji, stosując dwie strategie określania aktywnego serwera:
- Wyszukiwanie komend SSH (
ssh,scp,sftp) i dopasowywanie adresów IP do wcześniej skonfigurowanej listy serwerów - Zapasowe wyszukiwanie po nazwach serwerów MCP dla użytkowników pracujących wyłącznie przez Model Context Protocol
Przykład działania systemu:
# Użytkownik pracuje z serwerem main przez SSH
▶ main●(R:42% D:55%) new● sec●
# Przełączenie na serwer sec przez MCP
main● new● ▶ sec●(R:61% D:70%)
# Serwer new pod wysokim obciążeniem (wyświetlany zawsze)
▶ main●(R:42% D:55%) new◉(R:92%) sec●
System używa różnych wskaźników do wyświetlania stanu:
- ● — normalna praca
- ◉ — podwyższone obciążenie (RAM > 85% lub dysk > 90%)
- ✗ — serwer niedostępny
- ↻ — ostatni restart
- ▶ — aktywny w bieżącym momencie serwer
Integracja z Claude API i kalkulacja kosztów
Pasek statusu integruje się z Claude API, aby wyświetlać aktualne informacje o limitach użycia i obliczać koszt sesji. System automatycznie rozpoznaje typ konta użytkownika:
- Dla subskrybentów Claude Max wyświetlana jest teoretyczny koszt sesji
- Dla użytkowników API pokazywana jest faktyczna suma wydatków
Metryki związane z Claude API:
- Używany model — wyświetlany jest obecny model (np. Opus 4.6)
- Wypełnienie kontekstu — wizualizowany jest pasek postępu z kolorową indykacją (zielony → żółty → czerwony)
- Pozostałość kwot — pokazywane jest procentowe wykorzystanie 5-godzinnych (H) i tygodniowych (W) limitów
- Koszt sesji — obliczona suma, która zostałaby wydana przy użyciu API
System buforuje dane z Claude API na 2 minuty, aby zmniejszyć obciążenie, i używa tokena OAuth z systemowego magazynu poświadczeń.
Instalacja i konfiguracja systemu
Proces instalacji jest zoptymalizowany pod minimalny czas wdrożenia. Główna metoda to użycie Claude Code do wykonania komend instalacyjnych.
Szybka instalacja przez Claude Code:
Sklonuj https://github.com/CreatmanCEO/claude-statusline i zainstaluj przez install.sh --ru
Ręczna instalacja dla zaawansowanych użytkowników:
git clone https://github.com/CreatmanCEO/claude-statusline.git ~/claude-statusline
bash ~/claude-statusline/install.sh --ru
Konfiguracja monitorowania VPS:
- Dodaj serwery do pliku konfiguracyjnego
~/.claude/statusline.conf - Ustaw parametr
SHOW_VPS=remote - Zdefiniuj listę serwerów w
VPS_SERVERS - Uruchom demona monitorowania:
~/claude-statusline/vps-poller.sh start
Specyfika dla różnych platform:
- Linux/macOS: pełne wsparcie wszystkich funkcji
- Windows: instalacja tylko przez Claude Code (nie PowerShell)
- Wymagany jest preinstalowany bash i narzędzie jq do przetwarzania JSON
Co jest istotne
• Natychmiastowe monitorowanie VPS — wyświetlanie stanu serwerów bez przełączania kontekstu między narzędziami
• Automatyczny fokus — system określa aktywny serwer na podstawie analizy logów Claude Code
• Integracja z Claude API — kalkulacja kosztu sesji i wyświetlanie limitów użycia w czasie rzeczywistym
• Minimalne wymagania — rozwiązanie działa na czystym bashu z jq, bez zależności od Node.js czy innych środowisk
• Wieloplatformowość — wsparcie Linux, macOS i Windows (z ograniczeniami)
Rozwiązywanie problemów z kompatybilnością
W trakcie rozwoju i testowania zidentyfikowano i usunięto kluczowe problemy z kompatybilnością:
Problemy z uprawnieniami w Windows:
- Komenda
chmodnie działa w PowerShell - Rozwiązanie: przepisanie instrukcji instalacji do wykonania wyłącznie przez Claude Code
Różnice w przechowywaniu tokenów OAuth:
- Windows przechowuje tokeny w pliku
.credentials.json - Systemy Unix używają
.credentialsbez rozszerzenia - Rozwiązanie: dodanie sprawdzania obu opcji w skrypcie
Przetwarzanie JSON z zagnieżdżonymi cudzysłowami:
- Użycie
echoprowadziło do tworzenia nieprawidłowego JSON - Rozwiązanie: zastąpienie przez
printfz poprawnym ekranowaniem
Określanie ścieżki do bash w Windows:
- Komenda
command -v bashzwraca ścieżkę ze spacjami - Rozwiązanie: użycie bezpośredniego wywołania
bashbez sprawdzania ścieżki
Wszystkie poprawki zostały wprowadzone w ciągu jednego dnia po pierwszej publikacji, pokazując zalety podejścia open-source w rozwoju.
Zaawansowane możliwości i dostosowanie
System wspiera kilka trybów wyświetlania i konfiguracji pod konkretne workflow dewelopera.
Konfigurowalne segmenty paska statusu:
- Informacje o Git: obecna gałąź i status zmian
- Statystyki kodu: dodane i usunięte linie podczas sesji
- Metryki czasowe: długość bieżącej sesji pracy
- Integracja z narzędziami systemowymi: wsparcie MCP i innych protokołów
Optymalizacja wydajności:
- Minimalne użycie zasobów: demon zużywa mniej niż 1% CPU
- Efektywne buforowanie: dane są aktualizowane tylko przy zmianach
- Leniwe ładowanie: nieużywane moduły nie są inicjalizowane
Projekt rozwija się z uwzględnieniem opinii społeczności. Planowane ulepszenia obejmują wsparcie dodatkowych protokołów monitorowania, rozszerzoną personalizację wyglądu i integrację z innymi narzędziami dewelopera.
— Editorial Team
Brak komentarzy.