第3章:アーキテクチャ設計

3.1 全体アーキテクチャ

プロトコルは分散型のProvider-Consumerアーキテクチャを採用しており、Webのハイパーリンク発見モデルやP2Pネットワークのノード発見メカニズムに類似しています。

┌─────────────────────────────────────────────────────────┐
│              スキル提供者ドメイン (Provider Domain)         │
│                                                         │
│  ┌──────────────────────────┐                           │
│  │ /.well-known/skill-sharing│                           │
│  └────────┬─────────────────┘                           │
│           │                                             │
│     ┌─────┴─────┐                                       │
│     ▼           ▼                                       │
│  ┌──────┐   ┌──────┐                                   │
│  │記述子A│   │記述子B│                                   │
│  └──┬───┘   └──┬───┘                                   │
│     ▼           ▼                                       │
│  ┌──────┐   ┌──────┐                                   │
│  │端点 A │   │端点 B │                                   │
│  └──────┘   └──────┘                                   │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│              スキル消費者 (iFay)                          │
│                                                         │
│  ┌────────────┐  ┌──────────────┐  ┌────────────┐      │
│  │Discovery   │→ │Schema        │→ │Invocation  │      │
│  │Client      │  │Validator     │  │Client      │      │
│  └────────────┘  └──────────────┘  └────────────┘      │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│         オプション:スキルレジストリ (Skill Registry)       │
│                                                         │
│  ┌────────────────────────────────────┐                 │
│  │          Registry Index            │                 │
│  │  (インデックス参照 → 各提供者ドメインの記述子)│                 │
│  └────────────────────────────────────┘                 │
└─────────────────────────────────────────────────────────┘

3.2 プロトコルインタラクションフロー

フェーズ1:スキル発見

スキル消費者 (iFay)                  スキル提供者
      │                                  │
      │── GET /.well-known/skill-sharing ─→│
      │                                  │
      │←── スキルインデックス (Skill Index) ──│
      │                                  │
      │── Schema Validator 解析・検証 ──→   │
      │                                  │

フェーズ2:スキル呼び出し

スキル消費者 (iFay)                  スキル提供者
      │                                  │
      │── POST {invocation_endpoint} ────→│
      │   (呼び出しリクエスト)               │
      │                                  │
      │←── 202 Accepted ─────────────────│
      │   (確認レスポンス + 実行ID)          │
      │                                  │
      │── GET {status_endpoint}/{id} ────→│
      │                                  │
      │←── 実行状態 ─────────────────────│
      │   (実行中/完了/失敗)               │
      │                                  │
      │── GET {result_endpoint}/{id} ────→│
      │                                  │
      │←── 実行結果 ─────────────────────│
      │                                  │

3.3 3つの発見パス

パス方式説明適用シナリオ
Well-Known URIGET /.well-known/skill-sharing主要な発見方式。ドメイン配下のすべてのスキルのインデックスを返す提供者の全スキルを探索
直接URLGET {skill_descriptor_url}Skill Descriptor URLが既知の場合に直接取得具体的なスキルアドレスが既知
レジストリクエリGET {registry_url}/skills?type={type}オプション。レジストリを通じた一括検索タイプ別スキル検索

3.4 ファイル構成アーキテクチャ

project-root/
├── docs/
│   ├── en/                          # 基準言語(英語)
│   │   ├── specification/
│   │   │   ├── 2025-11-25/          # バージョン化ドキュメント
│   │   │   └── draft/               # ドラフトドキュメント
│   │   ├── blueprint/               # ブループリントドキュメント
│   │   ├── community/               # コミュニティドキュメント
│   │   ├── develop/                 # 開発ガイド
│   │   └── sdk/                     # SDKドキュメント
│   ├── zh-CN/                       # 簡体字中国語(同上構造)
│   ├── zh-TW/                       # 繁体字中国語
│   ├── ja/                          # 日本語
│   ├── ko/                          # 韓国語
│   ├── de/                          # ドイツ語
│   ├── fr/                          # フランス語
│   ├── es/                          # スペイン語
│   └── ru/                          # ロシア語
├── schema/
│   ├── draft/                       # ドラフトSchema
│   │   ├── schema.json              # JSON Schema (Draft 2020-12)
│   │   ├── schema.ts                # TypeScript型定義
│   │   └── schema.mdx               # MDXインタラクティブドキュメント
│   └── 2025-10-25/                  # バージョン化Schema
│       ├── schema.json
│       ├── schema.ts
│       └── schema.mdx
└── src/                             # ツールソースコード
    ├── validator.ts                 # Schema Validator
    ├── discovery.ts                 # ディスカバリメカニズムロジック
    ├── invocation.ts                # 呼び出しプロトコルロジック
    └── version.ts                   # バージョン管理ロジック

3.5 コンポーネントの責務

Discovery Client(発見クライアント)

分散ネットワーク内でSkill Descriptorを特定する責務:

  • Well-Known URIにリクエストを送信してスキルインデックスを取得
  • 直接URLで既知のSkill Descriptorを取得
  • レジストリを通じた一括検索
  • 能力タイプに基づくフィルタリングクエリをサポート

Schema Validator

Skill Descriptorの準拠性を検証する責務:

  • schema.jsonを使用してSkill Descriptorドキュメントを検証
  • 有効なドキュメントを構造化されたSkill Descriptorオブジェクトに解析
  • 無効なドキュメントに対して具体的な違反フィールドと理由を返す
  • Skill DescriptorオブジェクトのPretty Print JSONへのシリアライズをサポート

Invocation Client(呼び出しクライアント)

発見済みスキルのリモート呼び出しを担当:

  • 標準化された呼び出しリクエストの構築
  • 認証フローの処理
  • 実行状態クエリの管理
  • タイムアウトとエラーレスポンスの処理