第三章:架構設計

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 協定互動流程

階段一:技能發現

技能消費者 (iFay)                    技能提供者
      │                                  │
      │── GET /.well-known/skill-sharing ─→│
      │                                  │
      │←── 技能描述符索引 (Skill Index) ───│
      │                                  │
      │── Schema Validator 解析驗證 ──→    │
      │                                  │

階段二:技能呼叫

技能消費者 (iFay)                    技能提供者
      │                                  │
      │── POST {invocation_endpoint} ────→│
      │   (呼叫請求)                       │
      │                                  │
      │←── 202 Accepted ─────────────────│
      │   (確認回應 + 執行ID)              │
      │                                  │
      │── GET {status_endpoint}/{id} ────→│
      │                                  │
      │←── 執行狀態 ─────────────────────│
      │   (進行中/已完成/失敗)             │
      │                                  │
      │── GET {result_endpoint}/{id} ────→│
      │                                  │
      │←── 執行結果 ─────────────────────│
      │                                  │

3.3 三種發現路徑

路徑方式說明適用情境
Well-Known URIGET /.well-known/skill-sharing主要發現方式,回傳網域下所有技能的索引探索某個提供者的全部技能
直接 URLGET {skill_descriptor_url}已知技能描述符 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 驗證器
    ├── discovery.ts                 # 發現機制邏輯
    ├── invocation.ts                # 呼叫協定邏輯
    └── version.ts                   # 版本管理邏輯

3.5 元件職責

Discovery Client(發現用戶端)

負責在去中心化網路中定位技能描述符:

  • 向 Well-Known URI 發起請求取得技能索引
  • 透過直接 URL 取得已知技能描述符
  • 透過註冊表進行批次檢索
  • 支援基於能力類型的篩選查詢

Schema Validator(Schema 驗證器)

負責驗證技能描述符的合規性:

  • 使用 schema.json 驗證技能描述符文件
  • 解析有效文件為結構化 Skill Descriptor 物件
  • 對無效文件回傳具體違規欄位和原因
  • 支援將 Skill Descriptor 物件序列化為 Pretty Print JSON

Invocation Client(呼叫用戶端)

負責遠端呼叫已發現的技能:

  • 建構標準化的呼叫請求
  • 處理認證流程
  • 管理執行狀態查詢
  • 處理逾時和錯誤回應