BLUEPRINT
第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 URI | GET /.well-known/skill-sharing | 主要な発見方式。ドメイン配下のすべてのスキルのインデックスを返す | 提供者の全スキルを探索 |
| 直接URL | GET {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(呼び出しクライアント)
発見済みスキルのリモート呼び出しを担当:
- 標準化された呼び出しリクエストの構築
- 認証フローの処理
- 実行状態クエリの管理
- タイムアウトとエラーレスポンスの処理
