Clawharbor ↔ OpenClaw ↔ ACP — Integracja
Data: 2026-03-05
Architektura ogólna
Aleksander (UI)
│
▼
Clawharbor (localhost:3333)
│ Water Cooler — agenci rozmawiają
│ Quest Log — agenci proponują zadania
│
▼ [zatwierdzenie questa]
actions/route.ts
│
├─── zadanie ogólne ──→ openclaw agent CLI → agent OpenClaw (Orwil/Gepetto/...)
│
└─── zadanie kodowania ──→ acpx klaudynka exec → Klaudynka (Claude Code ACP)
│
▼
wykonuje pracę (git, kod, CI)
│
▼
wynik → Water Cooler chat
Komponenty
1. Clawharbor (~/clawharbor/)
Pixel art UI dla agentów. Kluczowe endpointy:
| Endpoint | Rola |
|---|---|
GET /api/office/chat | Pobierz historię water coolera |
POST /api/office/chat | Wygeneruj wypowiedź agenta (wywołuje openclaw agent) |
GET /api/office/actions | Pobierz listę questów/decyzji |
POST /api/office/actions | Zatwierdź/odrzuć quest → tu jest integracja ACP |
POST /api/office/autowork | Auto-tick: wyślij dyrektywę do agentów |
Konfiguracja: ~/clawharbor/clawharbor.config.json
2. OpenClaw Gateway (localhost:18789)
Orchestrator agentów. Clawharbor komunikuje się z nim przez openclaw agent CLI:
openclaw agent --agent <id> --message "treść" --jsonKażdy agent to sesja OpenClaw z własnym modelem, workspace i IDENTITY.md.
3. ACP / Klaudynka
Klaudynka to Claude Code uruchomiony przez acpx jako agent ACP. Może:
- Edytować pliki, uruchamiać komendy
- Pushować do git, naprawiać CI
- Pisać i refaktoryzować kod
Wywołanie:
ANTHROPIC_API_KEY=... acpx klaudynka exec "zadanie" --cwd /ścieżka/do/repoFlow: Quest → Zatwierdzenie → Wykonanie
Krok 1: Agent proponuje quest w water coolerze
Agent (np. Głębek) podczas rozmowy w water coolerze może zaproponować zadanie. Clawharbor zapisuje je do ~/.openclaw/.status/actions.json:
{
"id": "quest-123",
"type": "decision",
"title": "Naprawa pipeline odin-test",
"description": "Build job failuje z błędem kolekcji Odin",
"from": "Głębek",
"tags": ["ci", "coding"],
"cwd": "/home/paramah/repos/odin-test"
}Krok 2: Aleksander widzi quest w Quest Log (⚔️)
UI pokazuje kartę z tytułem, opisem i przyciskiem “Approve” / “Reject”.
Krok 3: Zatwierdzenie → POST /api/office/actions
{
"type": "respond",
"id": "quest-123",
"response": "Tak, napraw to"
}Krok 4: Logika routingu w actions/route.ts
// Wykryj czy to zadanie kodowania
const isCodingTask = action?.tags?.includes('coding') ||
/\b(fix|build|code|ci|pipeline|deploy|implement|debug|test|repo|git)\b/i
.test(action.title + ' ' + action.description);
if (isCodingTask) {
// → Klaudynka przez ACP
exec(`ANTHROPIC_API_KEY=... acpx klaudynka exec '${task}' --cwd '${cwd}'`)
} else {
// → OpenClaw agent (rozmowa)
exec(`openclaw agent --agent ${agentId} -m '${message}'`)
}Detekcja zadań kodowania:
- Przez tagi:
["coding", "ci", "deploy"] - Przez słowa kluczowe w tytule/opisie:
fix,build,ci,pipeline,code,debug,implement,refactor,test,repo,git,gitlab
Krok 5: Klaudynka wykonuje pracę
ACP session uruchamia claude-agent-acp, który dostaje:
[Quest approved by Aleksander] Naprawa pipeline odin-test
Context: Build job failuje z błędem kolekcji Odin
Owner response: Tak, napraw to
Execute this task now.
Klaudynka ma dostęp do ~/.claude/CLAUDE.md (jej soul) i może:
- Clonować/modyfikować repo
- Pushować do GitLab
- Tworzyć issues, komentarze
- Uruchamiać testy lokalnie
Krok 6: Wynik wraca do Water Coolera
Po zakończeniu zadania, actions/route.ts dodaje wiadomość do chatu:
{ "from": "Klaudynka", "text": "✅ Done: naprawiłam import path w Taskfile.yml, pipeline #240 zielony", "ts": 1234567890 }Konfiguracja
clawharbor.config.json
{
"mission": {
"goal": "Budowanie infrastruktury agentów AI i projektów na labie",
"priorities": ["Naprawa CI/CD", "Osobowości agentów", "Automatyzacja"]
},
"waterCooler": {
"enabled": true,
"autoTick": true,
"tickIntervalMs": 45000
}
}~/.acpx/config.json
{
"defaultAgent": "klaudynka",
"agents": {
"klaudynka": { "command": "npx -y @zed-industries/claude-agent-acp" }
}
}~/.claude/CLAUDE.md
Soul Klaudynki — czytany przez Claude Code jako globalny system prompt. Definiuje charakter: konkretna, wnikliwa, sarkastyczna.
Pliki systemowe
| Plik | Zawartość |
|---|---|
~/.openclaw/.status/chat.json | Historia water coolera |
~/.openclaw/.status/actions.json | Aktywne questy/decyzje |
~/.openclaw/.status/accomplishments.json | Ukończone zadania |
~/.openclaw/.status/autowork.json | Konfiguracja auto-pracy agentów |
~/clawharbor/clawharbor.config.json | Konfiguracja UI — misja, kolory, agenci |
Ograniczenia i plany
Aktualne ograniczenia
- Detekcja zadań jest heurystyczna (słowa kluczowe) — agent musi używać właściwych tagów lub słów w tytule questa
- Klaudynka jest synchroniczna — czeka na wynik (timeout 5 min), nie ma progressu w UI
- Jeden CWD na quest — wielorepo zadania wymagają ręcznego wskazania
Planowane ulepszenia
- Tagi na questach widoczne w UI (
coding,ci,research,decision) - Progress Klaudynki streamowany do water coolera
- Możliwość wskazania repo/CWD przy tworzeniu questa
- Routing do innych agentów ACP (Codex, Gemini CLI) zależnie od tagu
