Przegląd modułu Chat
Moduł Chat umożliwia prowadzenie interaktywnych sesji konwersacyjnych z AI (Claude) w kontekście wybranych workerów. Każda sesja jest przechowywana jako para pytanie-odpowiedź (Q&A) w dedykowanym katalogu.
Architektura
Struktura katalogów
.chat/
└── {session-uuid}/
├── chat.json # Metadata sesji
├── container.log # Logi kontenera Docker (opcjonalne)
├── messages/
│ └── msg_{timestamp}_{id}.json # Para Q&A
└── llm_outputs/
└── {executor}_{timestamp}.json # Pełny output LLMPrzykład struktury
.chat/
└── example-session-uuid-123/
├── chat.json
├── container.log
├── messages/
│ ├── msg_20251006_120403_25255520-1652-4309-89cd-c36da0740d36.json
│ └── msg_20251006_120510_a1b2c3d4-5678-90ab-cdef-123456789abc.json
└── llm_outputs/
├── claude_20251006_120403.json
└── claude_20251006_120510.jsonFormaty plików
chat.json (Metadata sesji)
Plik zawiera wszystkie metadane sesji:
json
{
"session_id": "example-session-uuid-123",
"task_id": "TASK-001",
"task_link": "https://github.com/org/repo/issues/123",
"title": "Implementacja modułu zarządzania użytkownikami",
"description": "Konwersacja dotycząca implementacji nowej funkcjonalności...",
"author": "712020:499ddb09-7cab-4147-910d-d38e7b2fa575",
"workers": [
"SemBot Frontend (angular)",
"SemBot Backend (laravel)"
],
"executor": "claude",
"model": "claude-sonnet-4-5-20250929",
"docker_worker": "sb",
"created_at": "2025-10-02T10:30:00Z",
"updated_at": "2025-10-06T12:16:00Z",
"is_active": true,
"message_count": 9
}Pola metadata
| Pole | Typ | Opis |
|---|---|---|
session_id | string | UUID sesji |
task_id | string | ID powiązanego taska (opcjonalne) |
task_link | string | Link do zewnętrznego taska (opcjonalne) |
title | string | Tytuł sesji |
description | string | Opis konwersacji |
author | string | ID autora (mapowane na real name, GitHub, etc.) |
workers | array | Lista workerów używanych w sesji |
executor | string | Executor LLM (claude lub gemini) |
model | string | Konkretny model AI |
docker_worker | string | Tag workera Docker (opcjonalne) |
created_at | datetime | Data utworzenia |
updated_at | datetime | Data ostatniej aktualizacji |
is_active | boolean | Status aktywności |
message_count | integer | Liczba wiadomości |
messages/msg_*.json (Para Q&A)
Każda wiadomość to para pytanie-odpowiedź w jednym pliku:
json
{
"id": "25255520-1652-4309-89cd-c36da0740d36",
"timestamp": "2025-10-06T12:04:03Z",
"question": {
"content": "która jest godzina?",
"role": "user",
"timestamp": "2025-10-06T12:04:03Z"
},
"answer": {
"content": "Odpowiedź asystenta...",
"role": "claude",
"worker_name": "SemBot Frontend (angular)",
"executor": "claude",
"model": "claude-sonnet-4-5-20250929",
"output_path": "/path/to/llm_outputs/claude_20251006_120403.json",
"timestamp": "2025-10-06T12:04:08Z"
}
}Struktura Q&A
question - Część pytania użytkownika
content- treść pytaniarole- zawsze"user"timestamp- kiedy zadano pytanie
answer - Część odpowiedzi asystenta
content- treść odpowiedzirole- executor (np."claude")worker_name- nazwa workeraexecutor- typ executoramodel- użyty modeloutput_path- ścieżka do pełnego outputu LLMtimestamp- kiedy udzielono odpowiedzi
llm_outputs/*.json (Raw output LLM)
Pełny output z Claude CLI w formacie JSON Lines:
json
{"type":"system","subtype":"init","cwd":"/app/worker","session_id":"4d79af58-ef37-49f8-bb9e-cfeed2898aa6","model":"claude-sonnet-4-5-20250929"}
{"type":"assistant","message":{"id":"msg_018XwvgLh4edXPRubt5fdYqa","type":"message","role":"assistant","content":[{"type":"text","text":"Odpowiedź..."}]}}
{"type":"result","subtype":"success","duration_ms":4231,"total_cost_usd":0.038044}Format JSON Lines:
- Każda linia to osobny obiekt JSON
- Typy:
system,assistant,tool_use,result - Renderowany przez
utils.FormatClaudeOutput()- ten sam parser co w tasks
Sesje Claude Code CLI
Moduł Chat wykorzystuje funkcję session z Claude Code CLI:
bash
claude --session {session-uuid} --output /path/output.json "Pytanie..."Zalety sesji
✅ Historia zachowana automatycznie
- Claude "pamięta" poprzednie pytania i odpowiedzi
- Nie trzeba ręcznie przekazywać kontekstu
- Każde pytanie ma dostęp do całej historii sesji
✅ Jeden wątek konwersacji
- Wszystkie wiadomości należą do jednego wątku
- Spójna numeracja i kolejność
- Claude CLI zarządza stanem
✅ Identyfikacja przez UUID
- Każda sesja ma unikalny identyfikator
- Możliwość wznowienia sesji później
- Bezpieczne rozdzielenie różnych konwersacji
Ograniczenia
⚠️ Timeout sesji
- Claude CLI może mieć limit czasu nieaktywności
- System monitoruje czas sesji (domyślnie 5 minut przed timeout)
- Automatyczne zamykanie nieaktywnych sesji
⚠️ Kompatybilność wersji
- Parametr
--sessiondostępny od określonej wersji Claude CLI - Docker może używać starszej wersji niż lokalnie
- Sprawdź wersję:
claude --version