Files
obsidian-sympozium/03-CRD/PersonaPack.md
2026-03-25 00:05:57 +01:00

4.1 KiB

PersonaPack

#sympozium #crd #personapack

Definicja

PersonaPack to CRD bundlujący wiele pre-konfigurowanych person agentów. Aktywacja packa powoduje automatyczne tworzenie SympoziumInstances, Schedules i memory seeds.

Plik: api/v1alpha1/personapack_types.go

Analogia

PersonaPack jest dla agentów AI tym, czym Helm Chart dla aplikacji K8s - deklaratywny bundle który controller "rozpakowuje" w konkretne zasoby.

Spec

apiVersion: sympozium.ai/v1alpha1
kind: PersonaPack
metadata:
  name: platform-team
spec:
  enabled: true                # Dopóki false - katalog; true - controller stampuje
  description: "Core platform engineering team"
  category: platform
  version: "1.0.0"

  authRefs:                    # Credentials (ustawiane przy aktywacji)
    - provider: openai
      secret: platform-team-openai-key

  policyRef: restrictive       # Wspólna polityka
  baseURL: ""                  # Override dla lokalnych providerów

  channelConfigs:              # Mapowanie kanał → secret
    telegram: telegram-creds

  skillParams:                 # Parametry per-skill
    github-gitops:
      REPO: my-org/my-repo

  taskOverride: "Focus on reducing MTTR"  # Nadpisanie celów

  excludePersonas:             # Wyłączone persony
    - cost-analyzer

  channelAccessControl:
    telegram:
      allowedSenders: ["123456"]

  agentSandbox:                # Kernel-level isolation dla wszystkich
    enabled: true
    runtimeClass: gvisor

  personas:
    - name: security-guardian
      displayName: "Security Guardian"
      systemPrompt: |
        You are a Kubernetes security specialist...
      model: claude-sonnet-4-20250514
      skills:
        - k8s-ops
        - sre-observability
      toolPolicy:
        allow: [execute_command, read_file, fetch_url]
      channels:
        - telegram
      schedule:
        type: heartbeat
        interval: "30m"
        task: "Run security audit on all namespaces"
      memory:
        enabled: true
        seeds:
          - "Track CVEs found in previous scans"
          - "Remember cluster topology changes"

Mechanizm aktywacji

PersonaPack (enabled: false) → Katalog (TUI pokazuje jako dostępny)
                                     ↓
                              Użytkownik aktywuje (TUI wizard / kubectl patch)
                                     ↓
PersonaPack (enabled: true, authRefs set) → Controller stampuje:
  ├── Secret: platform-team-openai-key
  ├── SympoziumInstance: platform-team-security-guardian
  │   ├── SympoziumSchedule + ConfigMap memory (seeded)
  ├── SympoziumInstance: platform-team-sre-watchdog
  │   ├── SympoziumSchedule + ConfigMap memory (seeded)
  └── SympoziumInstance: platform-team-platform-engineer
      └── SympoziumSchedule + ConfigMap memory (seeded)

Wbudowane packi

Pack Kategoria Agenty Opis
platform-team Platform Security Guardian, SRE Watchdog, Platform Engineer Bezpieczeństwo, health, manifest review
devops-essentials DevOps Incident Responder, Cost Analyzer Triage incydentów, right-sizing
developer-team Development 7 agentów (Tech Lead, Backend/Frontend Dev, QA, Code Reviewer, DevOps, Docs Writer) Pełny zespół dev

Status

status:
  phase: Pending|Ready|Error
  personaCount: 3
  installedCount: 3
  installedPersonas:
    - name: security-guardian
      instanceName: platform-team-security-guardian
      scheduleName: platform-team-security-guardian-schedule

ownerReferences

Wszystkie wygenerowane zasoby mają ownerReference → PersonaPack. Usunięcie packa = garbage collection całego zespołu.

Znaczenie architektoniczne

PersonaPacks rozwiązują problem Day 1 Experience - zamiast ręcznie tworzyć Secret + Instance + Schedule + Memory per agent, użytkownik:

  1. Wybiera pack w TUI
  2. Podaje klucz API
  3. Cały zespół agentów jest gotowy

To także wzorzec Infrastructure as Code dla AI Teams - deklarujesz zespół agentów w YAML, controller realizuje intent.


Powiązane: PersonaPacks - zespoły agentów | SympoziumInstance | SympoziumSchedule