Sesja 2026-03-07 — Podsumowanie
Długa sesja konfiguracyjno-deweloperska. Główne tematy: rozbudowa ekosystemu agentów, integracja Docker/CI, automatyzacja powiadomień pipeline.
1. Konta API i klucze
OpenAI ($20 kredytów)
- Dodano klucz
OPENAI_API_KEYdo~/.config/environment.d/openai.conf - Klucz skonfigurowany w acpx (
~/.acpx/config.json) dla agenta Kodek
Anthropic ($32 kredytów)
- Odkryto że używaliśmy OAuth tokenu (
sk-ant-oat01-...) zamiast klucza API - Nowy klucz API (
sk-ant-api03-...) podmieniony we wszystkich 11 agentach - Stary OAuth token zachowany jako profil
anthropic:oauth(backup)
OpenRouter ($10 limit)
- Nowy klucz skonfigurowany przez
openclaw models auth paste-token - Zaktualizowany w
auth-profiles.jsonagentów: Lamia, Głębek, Gemka, dc1
2. Zmiany w ekosystemie agentów
Dodany agent: Kodek ⚡
- Model: OpenAI Codex CLI przez ACP (
npx @zed-industries/codex-acp) - Workspace:
~/.openclaw/agents/kodek/workspace/ - Repo: https://git.example.org/Orwil/kodek
- Charakter: Agent developerski — pisze kod, naprawia bugi, bez gadania
- Uwaga: acpx
nonInteractivePermissions: "deny"powoduje blokowanie zadań — Kodek nie może autonomicznie pisać plików bez TTY
Usunięte agenty (Ollama)
Usunięto 3 agenty korzystające z lokalnego serwera Ollama (nabu.internal:11434):
functiongemma— FunctionGemma 270Mbielik— Bielik (PL)qwen3— Qwen3 30B
Zmiana: Llamka → Lamia 🦙
- Zmieniona nazwa i charakter
- Poprzedni model:
openrouter/meta-llama/llama-3.3-70b-instruct:free(rate-limited) - Nowy model:
openrouter/meta-llama/llama-4-maverick(płatny, 0.60/1M out) - Charakter: Wnikliwa, zgryźliwa, malkontentna — z westchnieniem ale robi robotę
- Wygląd w ClaWHarbor: blondynka z długimi włosami, fioletowa koszulka
3. ClaWHarbor — wyglądy agentów
Zaktualizowano ~/clawharbor/clawharbor.config.json:
| Agent | Kolor | Karnacja | Włosy |
|---|---|---|---|
| Kodek ⚡ | Pomarańczowy #f97316 | Ciemna #5c3317 | Czarne |
| Lamia 🦙 | Fioletowy #a855f7 | Jasna #fde8d0 | Złote długie |
| claude (Klaudynka) | Bursztynowy #d97706 | Jasna #fde8d0 | Brązowe |
4. Infrastruktura Docker i CI/CD
Repo: container-quartz
URL: https://git.example.org/Orwil/container-quartz
Obraz Docker zawierający pełne środowisko do budowania i deployowania vaultu Obsidian:
- Quartz SSG sklonowany z
Orwil/orwil-site(customizowany fork) npm ci— zależności zainstalowaneawscli— do sync z Cloudflare R2- Skrypt
publish.sh— build + S3 sync + CF cache purge
Pipeline:
- push na
master→git.example.org/orwil/container-quartz:latest - push taga
v*.*.*→ tagi semver
Skill: docker-repo
Plik: ~/.openclaw/workspace/skills/docker-repo/SKILL.md
Instrukcje do tworzenia repozytoriów Docker na git.example.org z pipeline Gitea Actions, wzorowane na Docker/oauth2_mock.
Pipeline orwil-site — uproszczony
Przed: checkout orwil-site + vault → npm ci → quartz build → aws sync → CF purge (5 kroków, ~3 min)
Po: checkout vault → docker run container-quartz (build+sync+purge w jednym kroku)
- checkout vault
- docker login gitea registry
- docker run git.example.org/orwil/container-quartz:latest # zawiera wszystko5. Webhook Forwarder
Repo: webhook-forwarder
URL: https://git.example.org/Orwil/webhook-forwarder
Serwis Python (aiohttp) działający na server.example.com:9000:
- Odbiera webhooki z Gitea (
workflow_runevents) - Weryfikuje podpis HMAC-SHA256
- Formatuje wiadomość i przesyła do OpenClaw hooks endpoint przez Tailscale
Deployment: Docker Compose na dc1, restart: always
Diagramy
Ekosystem agentów
graph LR A[Aleksander] -->|webchat/Telegram| OC[OpenClaw Gateway\n:18789] OC --> main[🐹 Orwil\nAnthropic Sonnet] OC --> gpt[🤖 Gepetto\nGPT-4o] OC --> mini[✨ Minette\nGPT-4o-mini] OC --> o3[🔭 Orion\no3-mini] OC --> gemini[💎 Gemka\nGemini Flash] OC --> lamia[🦙 Lamia\nLlama-4-Maverick] OC --> deepseek[🌊 Głębek\nDeepSeek-R1] OC --> mirela[🌸 Mirela\nSonnet] OC --> dc1a[🖥️ dc1\nGPT-4.1] OC --> kodek[⚡ Kodek\nCodex ACP] main -->|spawns| kodek main -->|spawns| lamia style OC fill:#1a1a2e,color:#fff style main fill:#7c3aed,color:#fff style kodek fill:#f97316,color:#fff style lamia fill:#a855f7,color:#fff
Pipeline publikowania vaultu Obsidian
sequenceDiagram participant V as Vault (Obsidian) participant VR as vault repo\ngit.example.org participant WH as Webhook\nVault→orwil-site participant OS as orwil-site\npipeline participant CQ as container-quartz\nimage participant R2 as Cloudflare R2 participant CF as Cloudflare CDN participant U as orwil.eiac.dev V->>VR: git push VR->>WH: webhook → dispatch orwil-site WH->>OS: workflow_dispatch OS->>VR: checkout vault content OS->>CQ: docker pull :latest OS->>CQ: docker run (build + sync + purge) CQ->>CQ: npx quartz build CQ->>R2: aws s3 sync CQ->>CF: purge cache U->>R2: HTTP request R2-->>U: static files
Budowanie obrazu container-quartz
graph TD A[push to master] --> B[Gitea Actions\ndocker-build.yml] B --> C[docker/build-push-action] C -->|FORGEJO_TOKEN build-arg| D[git clone orwil-site] D --> E[npm ci] E --> F[pip install awscli] F --> G[COPY publish.sh] G --> H[push to\ngit.example.org registry] H --> I[git.example.org/orwil/container-quartz:latest] style I fill:#059669,color:#fff
Flow webhooków CI/CD
graph LR G[Gitea\ncynarski-git\nHetzner] -->|POST /webhook\nHTTP| DC[webhook-forwarder\server-n.example.com:9000\nPython aiohttp] DC -->|POST /hooks/agent\nTailscale| OC[OpenClaw Gateway\nopenlaw node\n10.64.0.2:18789] OC --> OR[🐹 Orwil] OR -->|powiadomienie| A[Aleksander] subgraph Tailscale VPN DC OC end style DC fill:#0ea5e9,color:#fff style OC fill:#1a1a2e,color:#fff style OR fill:#7c3aed,color:#fff
Dostawcy AI — kredyty
pie title Kredyty API (USD) "Anthropic ($32)" : 32 "OpenAI ($20)" : 20 "OpenRouter ($10)" : 10
Wnioski
✅ Co zadziałało dobrze
-
Tailscale jako backbone — wszystkie nasze serwery (cynarski-git, openclaw, dc1) są w jednej sieci. Eliminuje konieczność wystawiania portów na zewnątrz.
-
Gitea Container Registry — decyzja o przejściu z Docker Hub na własne registry to dobry ruch. Żadnych limitów, wszystko prywatne, w jednym miejscu.
-
container-quartz jako all-in-one — obraz zawierający Quartz + awscli + skrypt publish znacząco upraszcza pipeline. Zamiast 5 kroków — 1
docker run. -
webhook-forwarder jako bridge — dc1 jako publiczny webhook receiver który tuneluje do prywatnego OpenClaw przez Tailscale to eleganckie rozwiązanie.
⚠️ Co wymaga uwagi
-
Kodek (ACP Codex) —
nonInteractivePermissionsw acpx nie obsługujeallow-all. Kodek blokuje się na pytaniach o pozwolenie. Wymaga albo trybu TTY albo innego podejścia do automatyzacji. -
container-quartz buduje się ~5 min — klonowanie orwil-site +
npm ciza każdym razem jest wolne. Rozwiązanie: cache npm w pipeline lub multi-stage build z pre-cache layer. -
Webhook forwarder nie jest jeszcze spięty z Gitea — serwis działa, OpenClaw hooks skonfigurowane, ale webhooki w repo Gitea (container-quartz, orwil-site) nie są jeszcze dodane. Wymaga dokończenia.
-
OpenClaw gateway restart — kilka razy sesja była przerywana przez restart gateway. Warto skonfigurować graceful restart.
-
Klaudynka (Claude ACP) — podobny problem co Kodek. Sesja ACP wygasła przy pierwszym zadaniu. Drugi spawn zadziałał ale wolno.
💡 Następne kroki
- Dokończyć konfigurację: dodać webhooki Gitea w repo →
http://server.example.com:9000/webhook - Przetestować cały flow: push do vault → pipeline → powiadomienie od Orwila
- Rozwiązać problem z Kodkiem (tryb autonomiczny)
- Zoptymalizować czas budowania container-quartz (npm cache layer)
- Dodać agenta Klaudynkę do openclaw.json (widoczna w ClaWHarbor)
- Zaktualizować tabelę agentów w vault (dodać Kodka, usunąć Ollama agentów)
