initial commit

This commit is contained in:
2026-03-25 00:05:57 +01:00
commit 25c7d598ca
63 changed files with 5257 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
# Cykl życia Agent Pod
#sympozium #architektura #agent-pod
## Anatomia Agent Pod
Każdy agent run tworzy pod z następującymi kontenerami:
```
┌─────────────────────────────────────────────────────┐
│ Agent Pod (Job) │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │
│ │ Agent │ │ IPC Bridge │ │ Skill Sidecar│ │
│ │ Container │ │ Sidecar │ │ (kubectl, │ │
│ │ │ │ │ │ helm, etc.) │ │
│ │ - LLM loop │ │ - fsnotify │ │ │ │
│ │ - Tool exec │ │ - NATS pub │ │ - /workspace │ │
│ │ - /skills │ │ - /ipc │ │ - RBAC scope │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬───────┘ │
│ │ │ │ │
│ /workspace /ipc (tmpfs) /workspace │
│ /skills (ro) (RAM-backed) │
│ /ipc │
│ /tmp │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ MCP Bridge │ │ Sandbox │ │
│ │ (opcjonalny) │ │ (opcjonalny) │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────┘
```
## Woluminy
| Wolumin | Typ | Rozmiar | Cel |
|---------|-----|---------|-----|
| `workspace` | emptyDir | 1Gi | Współdzielone pliki robocze agent ↔ sidecary |
| `ipc` | emptyDir (RAM) | 64Mi | JSON IPC: agent → bridge → NATS |
| `skills` | Projected ConfigMap | - | Markdown instrukcje ze SkillPacks (read-only) |
| `tmp` | emptyDir | 256Mi | Tymczasowe pliki (read-only root FS) |
## [[SecurityContext]] agenta
Hardened security context - patrz [[SecurityContext]] dla wyjaśnienia poszczególnych pól:
```go
SecurityContext: &corev1.SecurityContext{
ReadOnlyRootFilesystem: &readOnly, // true - root FS read-only
AllowPrivilegeEscalation: &noPrivEsc, // false - blokuje setuid
Capabilities: &corev1.Capabilities{
Drop: []corev1.Capability{"ALL"}, // Drop ALL Linux capabilities
},
}
```
## Zasoby
| Kontener | CPU Request | CPU Limit | Memory Request | Memory Limit |
|----------|-------------|-----------|----------------|--------------|
| Agent | 250m | 1 | 512Mi | 1Gi |
| IPC Bridge | 50m | 100m | 64Mi | 128Mi |
| Sandbox | 100m | 500m | 256Mi | 512Mi |
## Fazy lifecycle
```
Pending → Running → Succeeded
→ Failed
→ Serving (tryb server)
```
### Pending
1. Walidacja polityki
2. Tworzenie ServiceAccount `sympozium-agent`
3. Tworzenie input ConfigMap (task, system prompt, memory)
4. Rozwiązywanie sidecars i RBAC
5. Tworzenie Job/Sandbox CR
### Running
- Polling statusu poda co 10 sekund
- Monitorowanie completion/failure
### Succeeded/Failed
1. Zbieranie logów poda (wynik agenta)
2. Ekstrakcja memory markers z outputu
3. Aktualizacja memory ConfigMap
4. Usuwanie efemerycznego RBAC
5. Pruning historii (domyślnie 50 runów per instancja)
6. Usuwanie finalizera
### Serving (tryb server)
- Deployment zamiast Job
- Service dla routowania
- Używany dla web-endpoint
- Długo żyjący, nie jest garbage-collectowany po zakończeniu
## Zmienne środowiskowe agenta
| Zmienna | Wartość |
|---------|---------|
| `AGENT_RUN_ID` | Nazwa AgentRun CR |
| `AGENT_ID` | ID konfiguracji agenta |
| `SESSION_KEY` | Klucz sesji |
| `INSTANCE_NAME` | Nazwa SympoziumInstance |
| `MODEL_PROVIDER` | openai/anthropic/azure/ollama |
| `MODEL_NAME` | Identyfikator modelu |
| `THINKING_MODE` | off/low/medium/high |
| `SPAWN_DEPTH` | Głębokość zagnieżdżenia sub-agenta |
| `TRACEPARENT` | W3C traceparent (OTel) |
---
Powiązane: [[Control Plane]] | [[Orchestrator - PodBuilder i Spawner]] | [[Skill Sidecars i auto-RBAC]]