Kapitel 3: Architektur

3.1 Gesamtarchitektur

Das Protokoll verwendet eine dezentrale Provider-Consumer-Architektur, ähnlich dem Hyperlink-Entdeckungsmodell des Webs und dem Knotenentdeckungsmechanismus von P2P-Netzwerken.

┌─────────────────────────────────────────────────────────┐
│              Skill-Anbieter-Domain (Provider Domain)      │
│                                                         │
│  ┌──────────────────────────┐                           │
│  │ /.well-known/skill-sharing│                           │
│  └────────┬─────────────────┘                           │
│           │                                             │
│     ┌─────┴─────┐                                       │
│     ▼           ▼                                       │
│  ┌──────┐   ┌──────┐                                   │
│  │Desk.A│   │Desk.B│                                   │
│  └──┬───┘   └──┬───┘                                   │
│     ▼           ▼                                       │
│  ┌──────┐   ┌──────┐                                   │
│  │Endp.A│   │Endp.B│                                   │
│  └──────┘   └──────┘                                   │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│              Skill-Konsument (iFay)                       │
│                                                         │
│  ┌────────────┐  ┌──────────────┐  ┌────────────┐      │
│  │Discovery   │→ │Schema        │→ │Invocation  │      │
│  │Client      │  │Validator     │  │Client      │      │
│  └────────────┘  └──────────────┘  └────────────┘      │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│         Optional: Skill-Registry (Skill Registry)        │
│                                                         │
│  ┌────────────────────────────────────┐                 │
│  │          Registry Index            │                 │
│  │  (Index-Referenzen → Deskriptoren der Anbieter)      │
│  └────────────────────────────────────┘                 │
└─────────────────────────────────────────────────────────┘

3.2 Protokoll-Interaktionsfluss

Phase 1: Skill-Entdeckung

Skill-Konsument (iFay)               Skill-Anbieter
      │                                  │
      │── GET /.well-known/skill-sharing ─→│
      │                                  │
      │←── Skill-Index (Skill Index) ────│
      │                                  │
      │── Schema Validator Parsing ──→    │
      │                                  │

Phase 2: Skill-Aufruf

Skill-Konsument (iFay)               Skill-Anbieter
      │                                  │
      │── POST {invocation_endpoint} ────→│
      │   (Aufrufanfrage)                 │
      │                                  │
      │←── 202 Accepted ─────────────────│
      │   (Bestätigung + Ausführungs-ID)  │
      │                                  │
      │── GET {status_endpoint}/{id} ────→│
      │                                  │
      │←── Ausführungsstatus ────────────│
      │   (laufend/abgeschlossen/fehlgeschlagen) │
      │                                  │
      │── GET {result_endpoint}/{id} ────→│
      │                                  │
      │←── Ausführungsergebnis ──────────│
      │                                  │

3.3 Drei Entdeckungspfade

PfadMethodeBeschreibungAnwendungsfall
Well-Known URIGET /.well-known/skill-sharingHauptentdeckungsmethode. Gibt den Index aller Skills unter der Domain zurückAlle Skills eines Anbieters erkunden
Direkte URLGET {skill_descriptor_url}Direkter Abruf bei bekannter Skill Descriptor URLKonkrete Skill-Adresse bekannt
Registry-AbfrageGET {registry_url}/skills?type={type}Optional. Massensuche über RegistryTypbasierte Skill-Suche

3.4 Dateiorganisationsarchitektur

project-root/
├── docs/
│   ├── en/                          # Basissprache (Englisch)
│   │   ├── specification/
│   │   │   ├── 2025-11-25/          # Versionierte Dokumente
│   │   │   └── draft/               # Entwurfsdokumente
│   │   ├── blueprint/               # Blueprint-Dokumente
│   │   ├── community/               # Community-Dokumente
│   │   ├── develop/                 # Entwicklungsleitfäden
│   │   └── sdk/                     # SDK-Dokumente
│   ├── zh-CN/                       # Vereinfachtes Chinesisch
│   ├── zh-TW/                       # Traditionelles Chinesisch
│   ├── ja/                          # Japanisch
│   ├── ko/                          # Koreanisch
│   ├── de/                          # Deutsch
│   ├── fr/                          # Französisch
│   ├── es/                          # Spanisch
│   └── ru/                          # Russisch
├── schema/
│   ├── draft/                       # Entwurfs-Schema
│   │   ├── schema.json              # JSON Schema (Draft 2020-12)
│   │   ├── schema.ts                # TypeScript-Typdefinitionen
│   │   └── schema.mdx               # MDX-interaktive Dokumentation
│   └── 2025-10-25/                  # Versioniertes Schema
│       ├── schema.json
│       ├── schema.ts
│       └── schema.mdx
└── src/                             # Werkzeug-Quellcode
    ├── validator.ts                 # Schema Validator
    ├── discovery.ts                 # Entdeckungsmechanismus-Logik
    ├── invocation.ts                # Aufrufprotokoll-Logik
    └── version.ts                   # Versionsverwaltungs-Logik

3.5 Komponentenverantwortlichkeiten

Discovery Client (Entdeckungsclient)

Verantwortlich für die Lokalisierung von Skill Descriptors im dezentralen Netzwerk:

  • Anfragen an Well-Known URI senden, um den Skill-Index abzurufen
  • Bekannte Skill Descriptors über direkte URL abrufen
  • Massensuche über Registry
  • Filterabfragen basierend auf Fähigkeitstyp unterstützen

Schema Validator

Verantwortlich für die Validierung der Konformität von Skill Descriptors:

  • Verwendet schema.json zur Validierung von Skill Descriptor-Dokumenten
  • Parst gültige Dokumente in strukturierte Skill Descriptor-Objekte
  • Gibt bei ungültigen Dokumenten spezifische Verletzungsfelder und Gründe zurück
  • Unterstützt Serialisierung von Skill Descriptor-Objekten in Pretty Print JSON

Invocation Client (Aufrufclient)

Verantwortlich für den Remote-Aufruf entdeckter Skills:

  • Konstruktion standardisierter Aufrufanfragen
  • Verarbeitung des Authentifizierungsflusses
  • Verwaltung von Ausführungsstatusabfragen
  • Behandlung von Timeout- und Fehlerantworten