191 lines
4.8 KiB
Markdown
191 lines
4.8 KiB
Markdown
# Retro Claude Team Console 🖥️✨
|
||
|
||
90'lar retro/pixel estetiğiyle hazırlanmış, Claude CLI oturumunu web arayüzünden yöneten deneysel bir ekip konsolu.
|
||
Amaç: tek bir web uygulaması üzerinden Claude oturumunu otomatik başlatmak, bir proje dizini seçmek, ekibi seçilen projeye bağlamak, canlı cevap akışını izlemek ve ekip üyelerinin yanıtlarını rol bazlı kartlarda görmek.
|
||
|
||
## Özellikler 🚀
|
||
|
||
- Uygulama açıldığında otomatik Claude oturumu başlatma
|
||
- `Select Project` ile aktif proje dizini seçme
|
||
- Proje seçildiğinde ekibi otomatik aktive etme
|
||
- Retro/pixel web konsol arayüzü
|
||
- Sol panelde ekip üyelerine göre ayrılmış kartlar
|
||
- Sağ panelde canlı ana akış ve prompt alanı
|
||
- Hedef kişiye göre yönlendirilmiş prompt gönderimi
|
||
- `Mazlum:`, `Simsar:`, `Aybuke:` gibi etiketli cevap formatı
|
||
- `Current Project` göstergesiyle aktif proje takibi
|
||
- `tmux` tabanlı PTY oturumu yönetimi
|
||
|
||
## Ekip Yapısı 👥
|
||
|
||
- Mazlum: Team Lead
|
||
- Berkecan: Frontend Developer
|
||
- Simsar: Backend Developer
|
||
- Aybuke: UI/UX Designer
|
||
- Ive: iOS Developer
|
||
- Irgatov: Trainee
|
||
|
||
## Teknoloji Yığını 🧰
|
||
|
||
- Node.js
|
||
- Express
|
||
- Socket.IO
|
||
- React
|
||
- Vite
|
||
- `tmux`
|
||
|
||
## Gereksinimler 📦
|
||
|
||
- Node.js
|
||
- npm
|
||
- `tmux`
|
||
- makinede erişilebilir bir `claude` binary
|
||
|
||
Kontrol etmek için:
|
||
|
||
```bash
|
||
node -v
|
||
npm -v
|
||
tmux -V
|
||
claude --version
|
||
```
|
||
|
||
## Ortam Değişkenleri 🔐
|
||
|
||
Örnek `.env`:
|
||
|
||
```env
|
||
API_KEY_PRO="..."
|
||
API_KEY_LITE="..."
|
||
ACTIVE_KEY=pro
|
||
|
||
ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic"
|
||
ANTHROPIC_MODEL="glm-5"
|
||
```
|
||
|
||
İsteğe bağlı değişkenler:
|
||
|
||
```env
|
||
PORT=3001
|
||
CLAUDE_BIN=claude
|
||
CLAUDE_SHELL=/bin/zsh
|
||
CLAUDE_ARGS=--dangerously-skip-permissions
|
||
WATCH_LOG_LIMIT=400
|
||
CHAT_CHUNK_LIMIT=2000
|
||
LOG_TO_CONSOLE=true
|
||
```
|
||
|
||
## Kurulum 🛠️
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
## Geliştirme Modu ▶️
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
Bu komut:
|
||
|
||
- backend'i `http://localhost:3001`
|
||
- frontend'i `http://localhost:3000`
|
||
|
||
adresinde çalıştırır.
|
||
|
||
## Production Build 📦
|
||
|
||
```bash
|
||
npm run build
|
||
npm run start
|
||
```
|
||
|
||
## Kullanım Akışı 🎮
|
||
|
||
1. Uygulamayı aç
|
||
2. Claude oturumunun otomatik başlamasını bekle
|
||
3. `Select Project` ile proje klasörünü seç
|
||
4. Sistem seçilen projede oturumu hizalayıp ekibi otomatik aktive etsin
|
||
5. Bir ekip üyesine ya da tüm takıma prompt yaz
|
||
6. Solda rol bazlı kartları, sağda canlı ana akışı takip et
|
||
|
||
## Proje Seçimi Mantığı 📁
|
||
|
||
- `Select Project` macOS klasör seçicisini açar
|
||
- Seçilen klasör backend tarafında aktif proje olarak tutulur
|
||
- UI'da `Current Project: ...` alanında seçili path görünür
|
||
- Proje seçilmemişse `Current Project: None` görünür
|
||
- Aktif session varsa Claude oturumu seçilen proje köküne yeniden hizalanır
|
||
- Team bootstrap prompt'u seçilen proje path'iyle birlikte yeniden kurulur
|
||
- Bundan sonraki tüm prompt'lar varsayılan olarak bu proje bağlamında yorumlanır
|
||
|
||
## Prompt Davranışı 🧠
|
||
|
||
Sistem şu mantıkla çalışır:
|
||
|
||
- Uygulama açıldığında session otomatik başlar
|
||
- Proje seçilmeden takım modu tam olarak devreye girmez
|
||
- Proje seçildiğinde ekip yalnızca o proje üzerinde çalışacak şekilde yönlendirilir
|
||
- Kullanıcı mesajında bir ekip üyesinin adı geçerse prompt o kişiye yönlendirilir
|
||
- Kısa takip mesajları mümkünse son hedef kişiye bağlanır
|
||
- Yanıtların `Mazlum:` / `Simsar:` gibi isim etiketiyle başlaması zorlanır
|
||
- Sağ paneldeki kartlar bu etiketlere göre doldurulur
|
||
- Irgatov yalnızca kahve ve basit ofis/lojistik işleriyle sınırlıdır; teknik görev üstlenmez
|
||
|
||
Örnek:
|
||
|
||
```text
|
||
Mazlum nasılsın?
|
||
```
|
||
|
||
Beklenen yanıt:
|
||
|
||
```text
|
||
Mazlum: İyiyim, teşekkür ederim!
|
||
```
|
||
|
||
## Proje Yapısı 🗂️
|
||
|
||
```text
|
||
server/
|
||
bootstrapPrompt.js
|
||
config.js
|
||
index.js
|
||
logService.js
|
||
ptyService.js
|
||
sessionManager.js
|
||
socketHandlers.js
|
||
teamConfig.js
|
||
|
||
web/
|
||
index.html
|
||
vite.config.js
|
||
src/
|
||
App.jsx
|
||
components/
|
||
hooks/
|
||
lib/
|
||
styles/
|
||
```
|
||
|
||
## Bilinen Notlar ⚠️
|
||
|
||
- Claude bazen gelen yönlendirme metnini literal yorumlayabilir; routing mantığı hâlâ iyileştirilmeye açık.
|
||
- Kart parser'ı etiketli cevap formatına dayanır; format bozulursa bazı mesajlar yanlış karta düşebilir veya hiç görünmeyebilir.
|
||
- `Auth conflict` uyarısı Claude tarafındaki oturum durumuna bağlı olarak görülebilir.
|
||
- Proje seçimi şu anda macOS klasör seçici (`osascript`) üzerinden yapılır.
|
||
- Bu proje şu anda deneysel bir konsol prototipi olarak düşünülmelidir.
|
||
|
||
## Yakın Yol Haritası 🛣️
|
||
|
||
- Kart parser'ını daha akıllı hale getirmek
|
||
- Kullanıcı mesajlarını da role bazlı akışta göstermek
|
||
- Watch/debug görünümünü opsiyonel olarak geri eklemek
|
||
- Session geçmişi ve kalıcı log desteği eklemek
|
||
- Ekip içi konuşmaları daha güvenilir ayrıştırmak
|
||
|
||
## Lisans 📄
|
||
|
||
Bu repo için henüz ayrı bir lisans dosyası tanımlanmadı.
|