# 邊緣 AI 開發平台 — 產品需求文件（PRD）

---

## 文件資訊

| 項目 | 內容 |
|------|------|
| 文件名稱 | 邊緣 AI 開發平台 PRD |
| 產品名稱 | （暫未定名，以下稱「本平台」） |
| 版本 | v2.6 |
| 日期 | 2026-03-01 |
| 狀態 | 更新中 |

---

## 目錄

**Part A — 競品分析（Case Study）**

- [A1. 競品概覽](#a1-競品概覽)
- [A2. 功能維度比較](#a2-功能維度比較)
- [A3. 使用者流程比較](#a3-使用者流程比較)
- [A4. 技術架構與裝置連線實作](#a4-技術架構與裝置連線實作)
- [A5. 商業模式與 SWOT](#a5-商業模式與-swot)
- [A6. 市場痛點與未滿足需求](#a6-市場痛點與未滿足需求)
  - [A6.3 TOP 3 痛點深度解析](#a63-top-3-痛點深度解析)

**Part B — 本平台產品設計**

- [B1. 產品定位與目標](#b1-產品定位與目標)
- [B2. MVP 核心流程設計](#b2-mvp-核心流程設計)
- [B3. 系統架構設計](#b3-系統架構設計)
  - [B3.7 硬體支援路線圖](#b37-硬體支援路線圖)
  - [B3.8 硬體技術規格](#b38-硬體技術規格)
- [B4. MVP 功能規格](#b4-mvp-功能規格)
  - [B4.5 已實作的額外功能](#b45-已實作的額外功能)
- [B5. 功能路線圖（Post-MVP）](#b5-功能路線圖post-mvp)
- [B6. 商業模式與策略](#b6-商業模式與策略)

**附錄**

- [C1. 術語對照表](#c1-術語對照表)
- [C2. 競品支援硬體清單](#c2-競品支援硬體清單)
- [C3. 參考來源](#c3-參考來源)

---

# Part A — 競品分析（Case Study）

> 本部分分析 **Edge Impulse Studio** 與 **SenseCraft AI** 兩個邊緣 AI 開發平台的功能、流程、技術架構和商業模式，作為本平台設計的參考依據。

---

## A1. 競品概覽

| 維度 | Edge Impulse Studio | SenseCraft AI |
|------|-------------------|---------------|
| **母公司** | Qualcomm Technologies（2025.3 收購） | Seeed Studio |
| **產品定位** | 專業級端到端邊緣 AI 開發平台 | 零程式碼視覺 AI 快速部署平台 |
| **核心訴求** | "Making edge AI accessible to every developer" | "Build Vision AI Sensors in 3 Steps" |
| **目標客群** | 嵌入式工程師、ML 工程師、IoT 開發者、企業 | 創客、AI 初學者、教育工作者、系統整合商 |
| **平台網址** | studio.edgeimpulse.com | sensecraft.seeed.cc/ai |
| **規模** | 250K+ 開發者、1K+ 企業 | 40K+ 硬體產品（軟體功能較新） |
| **定價** | Freemium（免費版 + 企業版客製報價） | 完全免費 |
| **API/SDK** | REST API + Python/Node.js/C++ SDK + CLI | 無公開 API/SDK |
| **多語系** | 僅英文 | 5 語（EN/簡中/法/西/日） |
| **前端框架** | React（推測） | Vue.js + Element UI |

### 核心發現

- **Edge Impulse**：成熟、全方位，覆蓋從資料收集到部署的完整 MLOps 流程，支援 40+ 硬體。但**學習門檻高、免費方案受限、企業版定價不透明**
- **SenseCraft AI**：輕量、易用，強調三步驟零程式碼體驗。但**僅限視覺 AI、硬體鎖定 Seeed 自家產品、功能初級**
- **共同缺口**：兩者都**嚴重缺乏部署後監控、模型漂移偵測、主動學習閉環**等 MLOps 後半段功能

---

## A2. 功能維度比較

### A2.1 共同功能

| 共同功能 | Edge Impulse 實作 | SenseCraft AI 實作 |
|---------|-------------------|-------------------|
| 無程式碼模型訓練 | 視覺化 Impulse 設計器 | 三步驟引導介面 |
| 影像分類訓練 | Classification (Keras) + Transfer Learning | TensorFlow (瀏覽器端 WebGL) |
| 物件偵測訓練 | FOMO / MobileNetV2 SSD / YOLO-Pro | YOLO-World (伺服器端) |
| 預訓練模型庫 | 公開專案庫 | 658+ 預訓練模型 |
| 裝置連線 | Web Serial API + daemon | Web Serial API (USB) |
| 即時推論預覽 | Live Classification 頁面 | Workspace Preview 面板 |
| 模型部署到裝置 | 多格式下載 + 燒錄 | 一鍵 Serial 燒錄 |

### A2.2 Edge Impulse 獨有功能

| 類別 | 功能 | 說明 |
|------|------|------|
| 感測器 | 多類型支援 | 音訊、IMU、心率、環境感測器、時間序列、表格 |
| 資料收集 | 合成資料生成 | DALL-E / Whisper / ElevenLabs |
| | AI 輔助標記 | GPT-4o / OWL-ViT / 自訂 LLM |
| | 雲端匯入 | Amazon S3 整合 |
| 特徵工程 | 處理區塊 | Spectral / Spectrogram / MFCC 等 10+ 區塊 |
| 模型訓練 | Expert Mode | 完整 Keras API 存取 |
| | BYOM | 匯入 TFLite / ONNX / SavedModel |
| 最佳化 | EON Tuner / Compiler | 貝氏搜尋 + 最佳化 C++ 生成（省 65% RAM） |
| 部署 | 15+ 格式 | Arduino / WebAssembly / Docker / TensorRT 等 |
| | 40+ 硬體 | Arduino / Nordic / Espressif / STM / NVIDIA 等 |
| 協作 | 團隊功能 | 協作者、Organization Hub、版本控管 |
| API | 完整 REST API | OpenAPI + CLI 工具群 + 多語言 SDK |

### A2.3 SenseCraft AI 獨有功能

| 類別 | 功能 | 說明 |
|------|------|------|
| 模型市集 | 658+ 模型庫 | 含篩選、模型卡片、按讚/收藏 |
| 應用商店 | 12+ 即用範本 | Home Assistant / Telegram / n8n 整合 |
| 快速訓練 | 文字即訓練 | YOLO-World 僅需輸入名稱即可偵測 |
| Workspace | 統一裝置管理 | 三欄佈局、Logger、WiFi/MQTT 配置 |
| 輸出 | 多協定原生支援 | MQTT / GPIO / Serial / LoRaWAN |
| UX | 完全免費 + 多語系 | 無付費牆、5 種語言 |

### A2.4 功能差異矩陣

| 功能維度 | Edge Impulse | SenseCraft AI | 優勢方 |
|---------|:-----------:|:------------:|:------:|
| 感測器類型廣度 | 音訊/IMU/影像/時序/心率/表格 | 僅影像(+初步振動/音訊) | EI |
| 硬體支援廣度 | 40+ 開發板，多廠商 | 5-6 款 Seeed 裝置 | EI |
| 模型類型多樣性 | 分類/偵測/迴歸/異常偵測/關鍵字 | 分類/偵測/分割 | EI |
| 特徵工程 | 10+ 處理區塊 | 無 | EI |
| 模型最佳化 | EON Tuner + Compiler + 量化 | 無 | EI |
| 部署格式 | 15+ 格式 | 僅裝置燒錄 | EI |
| API/SDK | REST API + 多語言 SDK + CLI | 無 | EI |
| --- | --- | --- | --- |
| 預訓練模型數量 | 公開專案 | 658+ 模型 | SC |
| 應用商店/範本 | 無 | 12+ 即用應用 | SC |
| 文字即訓練 | 無 | YOLO-World | SC |
| 入門門檻 | 中高 | 極低 | SC |
| 免費方案完整度 | 受限 | 完全免費 | SC |
| IoT 輸出整合 | 需自行實作 | MQTT/GPIO/Serial/LoRa 原生 | SC |
| --- | --- | --- | --- |
| 部署後監控 | 僅企業版 | 無 | 雙方均弱 |
| 模型漂移偵測 | 無 | 無 | 雙方均無 |
| 主動學習 | 無 | 無 | 雙方均無 |
| OTA 模型更新 | 有限 | 無 | 雙方均弱 |

---

## A3. 使用者流程比較

### A3.1 核心工作流程對照

```
Edge Impulse（11 步驟，專業完整）          SenseCraft AI（3-6 步驟，極簡快速）
═══════════════════════════════            ═══════════════════════════════

1. 建立專案                                1. 瀏覽模型庫 / 選擇預訓練模型
   ├── 選擇標記方法                            或 進入 Training 頁面
   └── 設定目標硬體
                                           2. 連接裝置 (USB Serial)
2. 收集/上傳資料                              ├── 選擇裝置類型
   ├── 裝置 / 手機 / 檔案上傳                  └── 瀏覽器 Serial Port 選擇
   ├── 合成資料生成
   └── 雲端匯入                            3. 部署模型到裝置
                                              └── 一鍵燒錄
3. 標記資料
   ├── 手動 / AI 輔助 (GPT-4o)            --- 如果需要訓練 ---
   └── 匯入預標記資料
                                           4. 建立類別 / 輸入目標名稱
4. 設計 Impulse
   ├── Input / Processing / Learning Block 5. 擷取訓練影像 或 僅輸入文字

5. 產生特徵 + Feature Explorer            6. Start Training
                                              ├── 瀏覽器端 (分類)
6. 訓練模型                                    └── 伺服器端 (偵測)
   ├── NN 架構 / Expert Mode / EON Tuner
                                           --- 結束 ---
7. 驗證（Model Testing / Live Classification）

8. 最佳化（量化 / EON Compiler）

9. 部署（選格式 → Build → Download）

10. 版本控管

11. 監控與迭代
```

### A3.2 關鍵差異

| 面向 | Edge Impulse | SenseCraft AI |
|------|-------------|---------------|
| 步驟數 | 11 步（完整 MLOps） | 3-6 步（快速部署） |
| 上手時間 | 數小時到數天 | 數分鐘到數小時 |
| 靈活度 | 高（每步可深度自訂） | 低（固定流程） |
| 狀態閘門 | 嚴格（需資料→需訓練→才能部署） | 寬鬆（可直接部署預訓練模型） |
| 訓練執行 | 雲端運算 | 瀏覽器端 / 伺服器端 |

---

## A4. 技術架構與裝置連線實作

### A4.1 技術架構比較

| 架構面向 | Edge Impulse | SenseCraft AI |
|---------|-------------|---------------|
| 前端框架 | React（推測） | Vue.js + Element UI |
| 渲染方式 | 伺服器端 + 客戶端混合 | 純 SPA (CSR) |
| 認證 | JWT + API Key + OAuth (Google/GitHub) | 跨域 iframe Cookie 共享 |
| 訓練後端 | 雲端 GPU 叢集 | 瀏覽器端 WebGL / 雲端 YOLO-World |
| 裝置連線 | Web Serial API + Node.js daemon + WebSocket | Web Serial API |
| 模型格式 | TFLite / ONNX / SavedModel + EON C++ | TFLite / ONNX / TensorRT / PyTorch |
| API | REST API (OpenAPI) + WebSocket | 無公開 API |
| 瀏覽器需求 | Chrome/Edge（瀏覽器模式）；daemon 不限 | 僅 Chrome/Edge/Opera |

### A4.2 SenseCraft AI — Web Serial API 實作

**技術方案：** 完全使用瀏覽器原生 Web Serial API（`navigator.serial`），零安裝。

**原始碼驗證：**

| 裝置 | 原始碼位置 | 鮑率 |
|------|-----------|------|
| Grove Vision AI V2 | `SenseCraft-Web-Toolkit/src/sscma/grove_ai_we2/deviceHimax.ts` | 921600 |
| XIAO ESP32S3 | `SenseCraft-Web-Toolkit/src/sscma/xiao_esp32s3/EspSerialDevice.ts` | 115200 |

**連線流程（Grove Vision AI V2）：**

```
瀏覽器 (Chrome/Edge/Opera)
    │
    ├── 1. navigator.serial.requestPort({ filters })  ← 使用者選擇裝置
    ├── 2. serial.open({ baudRate: 921600 })
    ├── 3. setRTS(false) → delay(100ms) → setRTS(true)  [Hard Reset]
    ├── 4. readLoop()  ← 持續讀取，解析 \r{JSON}\n 格式回應
    └── 5. write()     ← 發送 AT 命令或韌體資料
```

**韌體燒錄：** Grove Vision AI V2 使用 Xmodem 協定；ESP32S3 使用 `esptool-js`（ESPLoader 協定）。

**優點與限制：**

| 優點 | 限制 |
|------|------|
| 零安裝，開箱即用 | 僅 Chrome/Edge/Opera（無 Firefox/Safari） |
| 瀏覽器沙箱安全模型 | 每次開頁面需重新選裝置 |
| 無跨平台安裝問題 | 無法背景執行（關頁面即斷線） |
| 原始碼開源可參考 | 無法做裝置自動偵測 |

### A4.3 Edge Impulse — 雙模式架構

#### 模式 A：瀏覽器直連

UI 標示為「Connect using WebUSB」，但實際使用 **Web Serial API**（非 WebUSB）。適用瀏覽器中輕量資料收集。

#### 模式 B：Node.js Daemon（主要模式）

透過 npm 全域安裝的 CLI daemon，使用 `serialport` npm 套件（v8.0.8，C++ 原生模組），並透過 WebSocket 連線雲端。

**安裝需求：** Node.js 16+ / Python 3 / `npm install -g edge-impulse-cli`（需 node-gyp + C++ 編譯器）

**原始碼驗證：**

| 檔案 | 關鍵實作 |
|------|---------|
| `cli/serial-connector.ts` | `require('serialport')` — Node.js 串列埠通訊 |
| `cli/daemon.ts` | `new WebSocket(url)` — 連線 `wss://remote-mgmt.edgeimpulse.com` |

**Daemon 架構：**

```
┌──────────────────┐   WSS   ┌─────────────────┐  Serial  ┌──────────────┐
│  EI Studio (雲端) │◄═══════►│ Local Node.js   │◄════════►│ Edge Device  │
│  資料/訓練/部署   │         │ Daemon          │          │ (MCU)        │
└──────────────────┘         │ serialport npm  │          └──────────────┘
                             └─────────────────┘
```

**安裝痛點：** Node.js 版本依賴、原生模組需 C++ 編譯器、Python 依賴、全域安裝權限問題、跨平台差異。

### A4.4 兩平台連線技術比較

| 維度 | SenseCraft (Web Serial) | EI Daemon (Node.js) |
|------|------------------------|---------------------|
| 安裝需求 | 無 | Node.js + npm + C++ 編譯器 |
| 底層技術 | `navigator.serial` | `serialport` npm |
| 連線穩定性 | 受瀏覽器限制 | 原生，穩定性高 |
| 背景執行 | 不可 | 可 |
| 裝置偵測 | 手動選擇 | 自動偵測 |
| 鮑率切換 | 需斷線重連 | 動態切換 |
| 瀏覽器限制 | Chrome/Edge/Opera only | 無限制 |
| 適合場景 | 快速原型、教育 | 長時間收集、量產 |

---

## A5. 商業模式與 SWOT

### A5.1 定價模式

| 項目 | Edge Impulse | SenseCraft AI |
|------|-------------|---------------|
| 免費方案 | 3 專案 / 60 分鐘運算 / 3 協作者 / IP 歸平台 | 完全免費、無限制 |
| 付費方案 | Enterprise（客製報價）：無限運算、SSO、白標 | 無 |
| 收入模式 | SaaS 訂閱 + 企業授權 | 硬體銷售帶動 |

### A5.2 生態系

| 維度 | Edge Impulse | SenseCraft AI |
|------|-------------|---------------|
| 硬體生態 | 硬體中立（40+ 廠商） | Seeed 自有硬體 |
| 軟體生態 | 獨立平台 | SenseCraft 生態系（AI/HMI/Data/App） |
| 社群 | 250K+ 開發者、論壇、Discord | 模型分享社群、Dify 聊天機器人 |
| 開源 | 部分 SDK/CLI 開源 | Web Toolkit 開源 |

### A5.3 SWOT 分析

**Edge Impulse**

| | 正面 | 負面 |
|---|------|------|
| 內部 | 完整 MLOps、多感測器、40+ 硬體、EON 最佳化、250K+ 社群 | 學習曲線陡、免費版受限、企業版定價不透明、平台鎖定 |
| 外部 | Qualcomm 資源、邊緣 AI 市場成長 | 社群擔心硬體鎖定 Qualcomm、開源替代方案興起 |

**SenseCraft AI**

| | 正面 | 負面 |
|---|------|------|
| 內部 | 極低門檻、完全免費、658+ 模型、YOLO-World、多語系 | 僅視覺 AI、僅 Seeed 硬體、無 API/SDK、無版本控管 |
| 外部 | 創客/教育市場成長、模型市集先發 | 專業平台降門檻、硬體鎖定限天花板 |

---

## A6. 市場痛點與未滿足需求

### A6.1 痛點概覽

```
                    嚴重程度
                極高 ─────── 低
                 │
  ┌──────────────┼──────────────────┐
  │              │                  │
  │  [5] 監控維運 │  [1] 資料收集     │
  │  ● 部署後黑箱 │  ● 遠端收集困難   │
  │  ● 無漂移偵測 │  ● 品質檢測不足   │
  │  ● 無主動學習 │                  │
  │              │  [2] 資料標記     │
  │  [4] 部署     │  ● 手動標記耗時   │
  │  ● OTA 不足  │  ● 協作標記缺乏   │
  │  ● 跨硬體難  │                  │
  │              │  [3] 模型訓練     │
  │  [6] 協作     │  ● 簡易vs彈性矛盾 │
  │  ● 免費版受限 │  ● 可解釋性不足   │
  │  ● 無 CI/CD  │                  │
  └──────────────┴──────────────────┘
```

### A6.2 最嚴重的痛點 TOP 10

| # | 痛點 | 嚴重度 | 兩平台現況 |
|:-:|------|:-----:|-----------|
| 1 | 部署後監控完全空白 | 極高 | EI: 僅企業版 / SC: 無 |
| 2 | 缺乏模型漂移偵測 | 極高 | 雙方均無 |
| 3 | 無主動學習閉環 | 極高 | 雙方均無 |
| 4 | OTA 模型更新不足 | 高 | 雙方均弱 |
| 5 | 多感測器資料融合困難 | 高 | EI: 有限 / SC: 無 |
| 6 | 協作標記缺乏 | 高 | EI: 限企業版 / SC: 無 |
| 7 | 簡易性與彈性的矛盾 | 高 | 雙方均有 |
| 8 | 訓練結果可解釋性不足 | 高 | 雙方均缺 |
| 9 | 缺乏持續訓練管道 | 高 | 雙方均無 |
| 10 | 跨硬體移植成本高 | 高 | 雙方均有 |

### A6.3 TOP 3 痛點深度解析

以下針對排名前三的痛點進行深度解析，這三者環環相扣，構成完整的「模型維運（MLOps）後半段」。

#### 痛點 #1 — 部署後監控完全空白

**問題本質：** 模型燒錄到裝置後變成「黑箱」，無法得知它在現場跑得好不好。

目前不管是 Edge Impulse 還是 SenseCraft，模型部署後都缺乏以下資訊：
- 模型每天做了多少次推論？
- 信心分數的分佈如何？是否大量推論低於門檻？
- 裝置的 CPU/RAM 使用率、溫度是否正常？
- 裝置有沒有離線？離線多久了？

**具體場景：**

```
情境：把「瑕疵檢測模型」部署到工廠產線的 10 台裝置

沒有監控：
├── 某台裝置的攝影機鏡頭髒了 → 推論全錯 → 沒人知道
├── 某台裝置記憶體不足偶爾崩潰 → 漏檢 50 件瑕疵品 → 客訴才發現
└── 想知道模型整體表現 → 只能一台一台去現場看

有監控：
├── 儀表板即時顯示：10 台裝置、今日推論 12,340 次、平均信心 87%
├── 告警：「裝置 #3 過去 1 小時信心分數異常下降，請檢查」
└── 趨勢圖：「本週整體準確率從 92% 降到 85%」→ 該更新模型了
```

**兩平台現況：**

| 平台 | 部署後監控能力 |
|------|--------------|
| Edge Impulse | 僅 Enterprise 版提供有限的裝置管理，免費版完全沒有 |
| SenseCraft AI | 完全沒有。模型燒錄後與平台斷開連結 |

**類比：** 就像部署了一個 Web 服務後需要 Datadog / Grafana 做監控，AI 模型部署後也需要類似的可觀測性（observability），但目前沒有平台提供。

---

#### 痛點 #2 — 缺乏模型漂移偵測

**問題本質：** 模型訓練時的資料和實際運行時碰到的資料不一樣了，導致模型效能退化，但沒有機制自動偵測。

模型是用「某個時間點」收集的資料訓練的，但現實環境會變化。模型本身沒變，但輸入的資料分佈改變了，準確率就會悄悄下降。

**兩種漂移類型：**

| 類型 | 定義 | 例子 |
|------|------|------|
| **Data Drift（資料漂移）** | 輸入資料的統計分佈改變 | 訓練時用白天影像，實際運行有夜間場景；季節變化導致光線不同 |
| **Concept Drift（概念漂移）** | 輸入和目標之間的關係改變 | 「好產品」的定義變了（品質標準提高），但模型還用舊標準判定 |

**具體場景：**

```
情境：訓練了一個「農作物病蟲害偵測」模型，春天部署到田間

春天（訓練時）：
├── 光線充足、葉子翠綠、特定害蟲種類
└── 模型準確率 95% ✅

三個月後（夏天）：
├── 光線角度不同、葉子更大更深綠、出現新害蟲種類
├── 模型準確率悄悄降到 70% ❌
└── 沒有偵測機制 → 沒人知道

又三個月後（秋天）：
├── 落葉枯黃、光線更暗
├── 模型準確率降到 50%（跟隨機猜差不多）❌❌
└── 農民發現漏報太多才來投訴 → 為時已晚
```

**偵測方法（業界已知但尚未應用在邊緣 AI 平台）：**

```
邊緣端（裝置上，輕量）：
├── 監控推論信心分數的滑動平均
├── 信心分數持續下降 → 發出告警
└── 統計測試（KS 檢定、KL 散度）比較近期 vs 歷史分佈

雲端（上報後，精細）：
├── 比較訓練時的特徵分佈 vs 近期推論的特徵分佈
├── 視覺化報告：哪些特徵漂移了、漂移幅度
└── 自動分類：是 data drift 還是 concept drift
```

**兩平台現況：**

| 平台 | 漂移偵測能力 |
|------|------------|
| Edge Impulse | 完全沒有。即使企業版也無此功能 |
| SenseCraft AI | 完全沒有 |

**類比：** 漂移偵測就像汽車的儀表板警示燈——在引擎嚴重損壞之前提醒你該做保養了。目前的邊緣 AI 平台等於開車沒有儀表板。

---

#### 痛點 #3 — 無主動學習閉環

**問題本質：** 偵測到模型效能下降後，目前沒有自動化機制來修復，只能靠大量人工手動操作。

即使偵測到了漂移（假設有監控的話），目前的解決方案是：

```
手動去現場收集新資料 → 手動標記 → 手動重新訓練 → 手動燒錄到每台裝置
```

這個流程太慢、太貴，尤其當裝置數量超過幾十台時根本不可行。

**主動學習閉環的完整流程：**

```
┌──────────────────────────────────────────────────────────────┐
│                                                              │
│   ┌─────────┐    ┌──────────┐    ┌──────────┐    ┌────────┐│
│   │ 1. 裝置  │    │ 2. 篩選   │    │ 3. 標記   │    │4. 訓練 ││
│   │ 執行推論 │───►│ 低信心樣本│───►│ 人工確認  │───►│重新訓練││
│   │         │    │ 自動回傳  │    │ (AI 預標記│    │        ││
│   │         │    │         │    │  人工修正) │    │        ││
│   └─────────┘    └──────────┘    └──────────┘    └───┬────┘│
│        ▲                                             │      │
│        │          ┌──────────┐    ┌──────────┐       │      │
│        │          │ 6. OTA   │    │ 5. 驗證   │       │      │
│        └──────────│ 更新模型  │◄───│ 新舊比較  │◄──────┘      │
│                   │ 到裝置   │    │ 準確率提升 │              │
│                   │         │    │ 才推送    │              │
│                   └──────────┘    └──────────┘              │
│                                                              │
└──────────────── 持續循環，模型越來越好 ──────────────────────┘
```

**各步驟說明：**

| 步驟 | 動作 | 自動化程度 |
|------|------|-----------|
| 1. 裝置推論 | 模型在裝置上執行推論 | 全自動 |
| 2. 低信心樣本篩選 | 信心 < 門檻的樣本自動暫存，連網後批次上傳（省頻寬） | 全自動 |
| 3. 人機標記 | AI 先預標記 → 人工快速確認或修正（比從零標記快 10 倍） | 半自動 |
| 4. 重新訓練 | 累積足夠新資料後自動觸發訓練 | 全自動 |
| 5. 驗證 | 新舊模型自動比較，新模型更好才核准 | 全自動 |
| 6. OTA 更新 | 新模型無線推送到所有裝置，無需人跑去現場燒錄 | 全自動 |

**具體場景：**

```
接續農作物的例子，有了主動學習閉環：

夏天，模型看到一張影像，信心只有 45%（低於門檻 70%）
→ 判定為「不確定的樣本」，自動上傳到雲端

雲端 AI 預標記：「這可能是新種害蟲」
→ 農業專家只需點「確認」或修正標記（10 秒搞定）

累積 200 張新標記後，系統自動觸發重新訓練
→ 新模型準確率 93%（比漂移後的 70% 好很多）

系統自動比較：新 93% > 舊 70% → 核准部署
→ OTA 無線推送到所有田間裝置

結果：模型隨環境變化自動適應，不需要人跑去田裡
```

**為什麼叫「主動」學習？** 傳統 ML 是被動的——人類決定什麼時候收集資料。主動學習是**模型主動告訴你它不確定什麼**，讓你只標記最有價值的資料，用最少人力達到最大改善。

**兩平台現況：**

| 平台 | 主動學習能力 |
|------|------------|
| Edge Impulse | 完全沒有。有 API 可以手動上傳新資料，但無自動化閉環 |
| SenseCraft AI | 完全沒有。甚至沒有 API 可以程式化上傳資料 |

---

#### 三者的關係

```
部署後監控 ──── 發現問題 ───► 漂移偵測 ──── 確認原因 ───► 主動學習 ──── 解決問題
     │                           │                           │
     │ 「模型表現在下降」         │ 「因為環境變了」           │ 「自動修復」
     │                           │                           │
     └── 可觀測性（眼睛）────────┴── 診斷（大腦）────────────┴── 治療（手）
```

這三者串起來就是完整的「模型維運後半段」，也是目前**所有邊緣 AI 平台最大的功能空白**。任何平台若能率先提供這個閉環，將在市場上形成極強的差異化。

---

### A6.4 按使用者角色的痛點

| 角色 | 最痛的問題 |
|------|-----------|
| AI 初學者/創客 | 訓練效果不佳不知如何改善；免費資源不夠用 |
| 嵌入式工程師 | 部署整合工作量大；OTA 困難；跨硬體移植成本高 |
| ML 工程師 | 缺乏實驗追蹤；無 CI/CD；平台鎖定 |
| 產品經理/企業 | 部署後監控空白；模型漂移偵測無；協作不足 |
| 教育工作者 | EI 門檻高；SC 功能太少無法教進階概念 |

---

# Part B — 本平台產品設計

> 本部分定義本平台的產品定位、核心流程、系統架構和功能規格。

---

## B1. 產品定位與目標

### B1.1 市場定位

```
     入門門檻低 ──────────────────── 入門門檻高
        │                              │
        │  SenseCraft AI               │  Edge Impulse
        │  ● 極簡三步驟               │  ● 完整 MLOps
        │  ● 僅視覺 AI               │  ● 多感測器
        │  ● 硬體鎖定               │  ● 硬體中立
        │                              │
        │       ┌──────────────┐       │
        │       │  本平台       │       │
        │       │  定位         │       │
        │       │              │       │
        │       │  低門檻       │       │
        │       │  + 開放硬體   │       │
        │       │  + 漸進深度   │       │
        │       └──────────────┘       │
        │                              │
     功能簡單 ──────────────────── 功能完整
```

### B1.2 目標客群

| 客群 | 描述 | 核心需求 |
|------|------|---------|
| **主要** | 嵌入式/IoT 開發者 | 快速將 AI 模型部署到裝置，驗證效果 |
| **主要** | AI 初學者與創客 | 低門檻體驗邊緣 AI，零程式碼上手 |
| **次要** | 系統整合商 | 快速為客戶建置 AI 感測方案 |
| **次要** | 教育工作者 | 用於教學與工作坊的即時展示工具 |

### B1.3 核心價值主張

> **三步驟將預訓練 AI 模型部署到任何邊緣裝置，並即時驗證推論效果。**

- **簡單**：選模型 → 燒錄 → 看結果，三步完成
- **開放**：初期以 Kneron 晶片為核心，未來擴展至多廠商硬體
- **即時**：燒錄完成後立即在裝置上執行推論，結果即時回傳前端顯示
- **本地化**：透過本地端 Backend Server 操作裝置，穩定、安全、不受瀏覽器限制

### B1.4 差異化策略

| 策略 | 對比競品的差異 |
|------|--------------|
| **本地端 Server 架構** | SenseCraft 受 Web Serial API 瀏覽器限制；EI daemon 安裝痛苦。本平台使用單一執行檔，零依賴安裝 |
| **Kneron 晶片深度整合 → 逐步開放** | MVP 以 Kneron Dongle 為首要支援硬體，深度整合 Kneron 工具鏈；透過抽象層設計，未來擴展至其他廠商晶片 |
| **預訓練模型優先** | EI 強調從零訓練的完整流程。本平台 MVP 聚焦「選模型→部署→驗證」的最短路徑 |
| **即時推論視覺化** | 將裝置端推論結果即時串流到前端，提供直觀的效果驗證體驗 |

---

## B2. MVP 核心流程設計

### B2.1 核心流程總覽

```
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  Step 1          │     │  Step 2          │     │  Step 3          │
│  選擇預訓練模型   │ ──► │  燒錄到硬體       │ ──► │  裝置端即時推論   │
│                  │     │                  │     │                  │
│  ● 瀏覽模型庫    │     │  ● 連接裝置      │     │  ● 啟動推論      │
│  ● 篩選/搜尋    │     │  ● 選擇目標裝置  │     │  ● 即時結果串流  │
│  ● 查看模型資訊  │     │  ● 一鍵燒錄      │     │  ● 視覺化顯示    │
│  ● 確認相容性    │     │  ● 進度回報      │     │  ● 參數調整      │
└─────────────────┘     └─────────────────┘     └─────────────────┘
```

### B2.2 Step 1 — 選擇預訓練模型

**使用者故事：** 身為開發者，我希望能快速找到適合我裝置和應用場景的預訓練模型。

**流程：**

```
1. 進入模型庫頁面
2. 篩選條件：
   ├── 任務類型（影像分類 / 物件偵測 / ...）
   ├── 目標硬體（或自動偵測已連線裝置）
   └── 類別（人臉 / 車輛 / 工業 / 農業 / ...）
3. 瀏覽模型卡片
   ├── 模型名稱 + 縮圖
   ├── 支援的硬體清單
   ├── 效能指標（準確度 / 延遲 / 模型大小）
   └── 描述與使用場景
4. 選擇模型 → 進入詳情頁
5. 確認硬體相容性 → 點擊「部署到裝置」
```

**功能需求：**

| 需求 | 說明 | 優先級 |
|------|------|:------:|
| 模型庫瀏覽 | 卡片式列表，支援分頁或無限捲動 | P0 |
| 篩選與搜尋 | 依任務類型、硬體、關鍵字篩選 | P0 |
| 模型卡片 | 顯示名稱、縮圖、任務類型、支援硬體、大小 | P0 |
| 模型詳情頁 | 完整描述、效能指標、支援硬體、使用範例 | P0 |
| 硬體相容性檢查 | 選擇模型時自動比對已連線裝置是否相容 | P1 |
| 模型下載 | 從模型庫下載模型檔到本地 | P0 |

**驗收標準：**
- 使用者可在 30 秒內找到適合的模型
- 篩選後的結果正確反映篩選條件
- 模型詳情頁包含足夠資訊讓使用者判斷是否適用

### B2.3 Step 2 — 燒錄到硬體

**使用者故事：** 身為開發者，我希望能一鍵將選好的模型燒錄到我的裝置上。

**流程：**

```
1. 確認裝置已透過 USB 連接電腦
2. 本地端 Server 自動偵測裝置
   ├── 顯示裝置類型、連接埠、狀態
   └── 若未偵測到 → 提示安裝驅動或手動選擇
3. 選擇目標裝置（若有多個）
4. 點擊「燒錄」
5. 燒錄過程：
   ├── 前端顯示進度條（透過 WebSocket 即時更新）
   ├── 進入 bootloader（自動處理 RTS/DTR 信號）
   ├── 傳輸模型檔（Xmodem / esptool / 其他協定）
   └── 重啟裝置
6. 燒錄完成 → 自動跳轉到 Step 3
```

**功能需求：**

| 需求 | 說明 | 優先級 |
|------|------|:------:|
| 裝置自動偵測 | 本地 Server 偵測 USB 裝置並回報前端 | P0 |
| 裝置列表 | 顯示所有已連線裝置的類型、埠號、狀態 | P0 |
| 一鍵燒錄 | 點擊按鈕即開始燒錄流程 | P0 |
| 燒錄進度 | WebSocket 即時回報進度百分比 | P0 |
| 燒錄協定支援 | 支援目標硬體的燒錄協定（Xmodem / esptool / ...） | P0 |
| 錯誤處理 | 燒錄失敗時清楚的錯誤訊息與重試選項 | P0 |
| 裝置熱插拔 | 裝置插拔時即時更新裝置列表 | P1 |

**驗收標準：**
- 裝置接上 USB 後 5 秒內出現在裝置列表
- 燒錄過程中進度條平滑更新
- 燒錄失敗時提供可操作的錯誤訊息（非技術性 stack trace）
- 燒錄完成後裝置自動重啟並進入推論模式

### B2.4 Step 3 — 裝置端即時推論

**使用者故事：** 身為開發者，我希望燒錄完成後立即看到模型在裝置上的推論結果，以驗證效果。

**流程：**

```
1. 燒錄完成後，裝置重啟進入推論模式
2. 本地 Server 與裝置建立串列通訊
3. 裝置執行推論並透過串列埠回傳結果
4. 本地 Server 透過 WebSocket 將結果即時推送到前端
5. 前端顯示推論結果：
   ├── 影像分類：類別名稱 + 信心分數 + 即時圖表
   ├── 物件偵測：邊界框 + 類別 + 信心分數（疊加在影像上）
   └── 推論延遲、FPS 等效能指標
6. 使用者可即時調整：
   ├── Confidence Threshold 滑桿
   └── 其他模型參數（視裝置支援而定）
```

**功能需求：**

| 需求 | 說明 | 優先級 |
|------|------|:------:|
| 推論結果串流 | 裝置端推論結果透過 WebSocket 即時顯示 | P0 |
| 分類結果顯示 | 類別名稱 + 信心分數 + 即時長條圖 | P0 |
| 偵測結果顯示 | 邊界框繪製 + 類別標籤（若裝置有攝影機輸出） | P1 |
| 效能指標 | 推論延遲 (ms)、FPS | P0 |
| Confidence Threshold | 可調整的信心門檻滑桿 | P1 |
| 推論啟停控制 | 開始/停止推論的按鈕 | P0 |
| 裝置日誌 | 即時串列通訊日誌（展開/收合） | P1 |

**驗收標準：**
- 燒錄完成到首次推論結果顯示 < 5 秒
- 推論結果更新延遲 < 200ms（從裝置到前端顯示）
- Confidence Threshold 調整即時生效
- 推論過程中頁面不卡頓

### B2.5 使用者旅程圖

```
使用者情境：開發者想用 Kneron Dongle 部署一個人臉偵測模型

時間軸 ──────────────────────────────────────────────────►

[安裝階段]              [使用階段]
                        Step 1              Step 2           Step 3
 下載安裝               選擇模型             燒錄             即時推論
 本地 Server            ─────              ─────            ─────
    │                     │                  │                │
    ▼                     ▼                  ▼                ▼
 執行安裝檔           開啟瀏覽器          Dongle 自動偵測   結果即時顯示
 (1 分鐘)            瀏覽模型庫          點擊「燒錄」      「偵測到人臉
                     篩選：偵測          進度 10%→100%      信心 92%」
 啟動 Server         選：人臉偵測        裝置就緒
 (自動)              查看詳情+相容性                       調整 Threshold
                     點「部署」                           查看 FPS

 ◄── 約 1 分鐘 ──►  ◄── 約 1 分鐘 ──►  ◄── 約 1 分鐘 ──►  ◄── 持續 ──►

情緒曲線：
 😐 安裝            😊 找到模型        😊 一鍵搞定       🎉 成功了！
                   好簡單             正在燒錄...         效果不錯
```

---

## B3. 系統架構設計

### B3.1 整體架構

```
┌────────────────────────────────────────────────────────────────┐
│                        使用者電腦                               │
│                                                                │
│  ┌──────────────────┐    HTTP/WS      ┌──────────────────────┐ │
│  │  前端 Web App     │◄═════════════►│  本地端 Backend Server │ │
│  │  (瀏覽器)         │  localhost:PORT │                      │ │
│  │                  │                │  ● 裝置偵測/管理       │ │
│  │  ● 模型庫瀏覽     │                │  ● 串列埠通訊         │ │
│  │  ● 燒錄介面       │                │  ● 韌體燒錄          │ │
│  │  ● 推論結果顯示   │                │  ● 推論結果轉發       │ │
│  │  ● 裝置狀態       │                │  ● 模型檔管理        │ │
│  └──────────────────┘                └──────────┬───────────┘ │
│                                                  │ Serial/USB  │
│                                                  ▼             │
│                                        ┌──────────────────┐   │
│                                        │  Edge Device      │   │
│                                        │  (MCU / SBC)      │   │
│                                        └──────────────────┘   │
└────────────────────────────────────────────────────────────────┘
           │
           │ HTTPS（選用）
           ▼
┌──────────────────┐
│  雲端服務（選用）  │
│  ● 模型儲存庫     │
│  ● 使用者帳號     │
└──────────────────┘
```

### B3.2 本地端 Backend Server

**開發語言選擇：**

| 方案 | 優點 | 缺點 | 評估 |
|------|------|------|------|
| **Go 單一執行檔**（推薦） | 跨平台編譯簡單、無 runtime、單一 binary、串列埠函式庫成熟（`go.bug.st/serial`） | ML 生態系較弱（但本 Server 不做 ML） | 最適合 |
| **Rust 單一執行檔** | 效能極佳、無 runtime、`serialport-rs` 成熟 | 學習曲線陡、開發速度慢 | 備選 |
| **Node.js** | 開發快、前後端統一 | 需安裝 runtime、原生模組編譯問題 | 不建議（重蹈 EI 痛點） |
| **Python** | ML 生態強、開發快 | 需 runtime、打包體積大 | 可考慮 |
| **Tauri** | 桌面應用框架、原生存取 | 需安裝桌面應用、非 Web 架構 | 備選 |

**推薦方案：Go 編譯為單一執行檔**，使用者僅需下載一個檔案即可執行。

### B3.3 前後端通訊協定

**HTTP REST API — request/response 操作：**

```
GET  /api/devices                    → 列出已連線裝置
GET  /api/devices/:id                → 取得裝置詳細資訊
POST /api/devices/:id/connect        → 連線到裝置
POST /api/devices/:id/disconnect     → 中斷裝置連線
POST /api/devices/:id/flash          → 燒錄韌體/模型
GET  /api/devices/:id/status         → 取得裝置狀態
POST /api/devices/:id/command        → 發送命令
GET  /api/models                     → 列出可用模型
GET  /api/models/:id                 → 取得模型詳情
POST /api/models/:id/download        → 下載模型到本地
```

**WebSocket — 即時雙向資料流：**

```
ws://localhost:PORT/ws/devices/:id/inference       → 即時推論結果
ws://localhost:PORT/ws/devices/:id/log             → 即時裝置日誌
ws://localhost:PORT/ws/devices/:id/flash-progress  → 燒錄進度
ws://localhost:PORT/ws/devices/events              → 裝置插拔事件
```

### B3.4 裝置通訊抽象層

為支援多種硬體，設計裝置驅動的插件式架構：

```
┌─────────────────────────────────────────────┐
│            Device Manager                    │
│  ● 裝置偵測（USB 監聽）                       │
│  ● 裝置生命週期管理                           │
│  ● 路由到對應 Driver                         │
└─────────────────┬───────────────────────────┘
                  │
    ┌─────────────┼─────────────┐
    ▼             ▼             ▼
┌───────────┐ ┌───────────┐ ┌─────────┐
│ Driver A   │ │ Driver B   │ │ Driver C │
│ Kneron     │ │ Kneron     │ │ (未來    │
│ Dongle     │ │ Arduino /  │ │  擴充)   │
│ (MVP)      │ │ KNEO Pi    │ │          │
│            │ │ (Phase 1)  │ │ 非 Kneron│
│ Kneron SDK │ │ Kneron SDK │ │ 晶片     │
└───────────┘ └───────────┘ └─────────┘
```

每個 Driver 實作統一介面：

```
interface DeviceDriver {
    detect()         → 是否為此類裝置
    connect()        → 建立連線
    flash(binary)    → 燒錄模型/韌體
    startInference() → 啟動推論
    readInference()  → 讀取推論結果
    sendCommand()    → 發送命令
    disconnect()     → 中斷連線
}
```

### B3.5 技術挑戰與解決方案

| 挑戰 | 解決方案 |
|------|---------|
| HTTPS ↔ HTTP 混合內容 | 前端也由本地 Server 提供（同源）；或使用 `127.0.0.1`（Chrome loopback 特殊處理） |
| 連接埠佔用 | 自動偵測可用 port + 在固定路徑寫入 port 資訊 |
| 跨平台串列埠差異 | Go/Rust 串列埠函式庫已抽象化；Linux 處理 `dialout` 權限 |
| 裝置熱插拔 | 監聽系統 USB 事件（`udev` / `IOKit` / `WMI`） |
| 安裝/更新 | 各平台安裝包（`.dmg` / `.msi` / `.deb`）+ 自動更新 |
| 背景服務 | 系統服務（`launchd` / `systemd` / Windows Service）或系統匣 |
| CORS | `Access-Control-Allow-Origin` 設定（localhost 安全性可接受） |

### B3.6 對比競品的架構優勢

| 優勢 | vs SenseCraft (Web Serial) | vs EI Daemon (Node.js) |
|------|---------------------------|------------------------|
| 背景執行 | ✅ 關頁面不斷線 | ✅ 相同能力 |
| 裝置自動偵測 | ✅ 無需手動選擇 | ✅ 相同能力 |
| 瀏覽器無限制 | ✅ Firefox/Safari 均可 | ✅ 相同能力 |
| 安裝簡易 | ⚠️ 需安裝（但僅一個檔案） | ✅ 遠比 Node+npm+C++ 簡單 |
| 離線操作 | ✅ 完全離線 | ✅ 相同能力 |
| 高鮑率穩定 | ✅ 原生串列埠 | ✅ 相同能力 |

### B3.7 硬體支援路線圖

```
MVP                     Phase 1                 Phase 2+
──────────────          ──────────────          ──────────────
Kneron Dongle           Arduino 開發板           非 Kneron 晶片
(USB AI 加速棒)         (Kneron 晶片)           ──────────────
                        ──────────────          ● ESP32-S3
● 首要支援硬體          ● KNEO Pi               ● Arduino (非 Kneron)
● USB 連接              ● 其他 Kneron           ● NVIDIA Jetson
● Kneron NPU 推論        晶片開發板             ● 其他廠商
● Kneron SDK 整合                               ● 透過 Driver 插件擴充
```

**分階段策略：**

| 階段 | 支援硬體 | 說明 |
|------|---------|------|
| **MVP** | Kneron Dongle | USB AI 推論加速棒，插上即用。深度整合 Kneron SDK，實現模型部署與即時推論 |
| **Phase 1** | Arduino 開發板（Kneron 晶片）/ KNEO Pi | 擴展到同為 Kneron 晶片的其他載體，共用 Kneron SDK 工具鏈 |
| **Phase 2+** | 不限於 Kneron 晶片 | 透過 Driver 抽象層擴充至 ESP32、NVIDIA Jetson 等其他廠商硬體 |

**設計原則：** MVP 階段深度整合 Kneron 生態，但 Driver 抽象層從第一天就設計好，確保未來擴展硬體支援時不需重構核心架構。

### B3.8 硬體技術規格

#### Kneron KL720 USB Dongle（MVP 目標硬體）

| 規格項目 | 內容 |
|---------|------|
| **晶片型號** | Kneron KL720 AI SoC |
| **NPU** | 700 MHz，1.4 TOPS（INT8）；能效 0.9 TOPS/W |
| **DSP** | Cadence Tensilica VP6 DSP @ 500 MHz（NPU 協處理器） |
| **CPU** | Arm Cortex-M4 @ 400 MHz（系統控制） |
| **記憶體** | 128 MB LPDDR4（搭配 Winbond 1Gb LPDDR3 DRAM die） |
| **儲存** | SPI Flash + NAND Flash（容量依模組配置） |
| **USB 介面** | USB 3.0（Device mode）+ USB 2.0；主機端透過 USB 連接 |
| **其他介面** | MIPI-CSI-2（攝影機輸入）、SPI、SDIO、UART、I2C、GPIO |
| **影像輸入** | 支援 MIPI-CSI 攝影機模組（晶片層級） |
| **功耗** | 約 1.2 W（NPU 全速推論時） |
| **主機通訊** | 透過 libusb USB bulk transfer |
| **韌體架構** | 雙核 RTOS：SCPU（系統控制）+ NCPU（NPU 推論） |
| **韌體更新** | KneronDFUT 工具（支援 SCPU/NCPU firmware + NEF 模型燒錄） |
| **模型格式** | Kneron NEF（Neural Efficient Format）— 經量化與編譯的專用格式 |
| **外觀** | USB 隨身碟形式，即插即用 |

#### Kneron KL730 / KNEO Pi（Phase 1 目標硬體）

| 規格項目 | 內容 |
|---------|------|
| **晶片型號** | Kneron KL730 AI SoC |
| **NPU** | 第三代 KDP 系列可重配置 NPU，最高 8 TOPS（有效算力 4 TOPS） |
| **CPU** | 四核 Arm Cortex-A55（時脈待查） |
| **記憶體** | 待查（高於 KL720 的 128 MB） |
| **儲存** | 4 Gb SPI-NAND Flash + micro-SD 插槽 |
| **USB 介面** | USB 2.0 + USB 3.0 |
| **網路** | Ethernet（乙太網路） |
| **GPIO** | 40-pin（Raspberry Pi 相容排針） |
| **攝影機** | MIPI-CSI，支援最高 8MP @ 90fps 輸入、4K 60fps 處理 |
| **功耗** | 低功耗設計（具體數值待查） |
| **定位** | 開發板形式，類似 Raspberry Pi 的邊緣 AI 開發平台 |
| **SDK** | 與 KL720 共用 Kneron PLUS SDK |

#### 兩代晶片比較

| 比較項目 | KL720（MVP） | KL730（Phase 1） |
|---------|-------------|-----------------|
| NPU 算力 | 1.4 TOPS | 8 TOPS（約 5.7 倍） |
| CPU | Arm Cortex-M4（微控制器） | Arm Cortex-A55 四核（應用處理器） |
| 影像處理 | 基本 | 4K 60fps、8MP 90fps |
| 連接方式 | USB（Dongle 形式） | USB + Ethernet + GPIO 40-pin |
| SDK 相容 | Kneron PLUS SDK | Kneron PLUS SDK（相容） |
| 使用場景 | 筆電/桌機外接 AI 推論 | 獨立邊緣 AI 開發平台 |

#### Kneron 軟體工具鏈

**Kneron PLUS SDK（Platform Libraries Unified Software）：**

| 項目 | 說明 |
|------|------|
| **語言** | C/C++ 與 Python API |
| **通訊協定** | USB bulk transfer（基於 libusb） |
| **核心 API** | `kp_load_firmware()` — 上傳韌體（SCPU/NCPU）到裝置 |
|  | `kp_load_model()` / `kp_load_model_from_file()` — 上傳 NEF 模型到裝置 |
|  | `kp_load_model_from_flash()` — 從裝置 Flash 載入模型 |
|  | `kp_get_model_info()` — 取得模型資訊（CRC、Model ID） |
|  | `kp_get_system_info()` — 取得系統資訊（KN number、韌體版本） |
| **加密支援** | 支援上傳加密 NEF 模型 |
| **安裝需求** | Windows: Git for Windows SDK + libusb + cmake + Zadig（USB driver） |
|  | Linux: 需配置 USB 權限（udev rules） |
| **限制** | 不支援 SELinux 環境 |

**Kneron Toolchain（模型轉換工具）：**

| 項目 | 說明 |
|------|------|
| **工具名稱** | `ktc`（Kneron Toolchain Compiler） |
| **轉換流程** | ONNX → BIE（量化中間格式）→ NEF（部署格式） |
| **支援格式** | ONNX opset 11 / 12 |
| **功能** | 模型量化（INT8）、模型編譯、模型最佳化 |
| **API** | Python API（`ktc` 套件） |

**KneronDFUT（Device Firmware Update Tool）：**

| 項目 | 說明 |
|------|------|
| **功能** | 更新裝置韌體（SCPU firmware + NCPU firmware）及 NEF 模型 |
| **運作方式** | 透過 USB 將 `fw_scpu.bin` / `fw_ncpu.bin` 寫入裝置 Flash |
| **開機流程** | IPL（ROM）→ SPL（Flash）→ SCPU firmware → NCPU firmware |
| **平台支援** | Windows、Linux（含 Raspberry Pi OS） |
| **替代方案** | 可透過 Kneron PLUS SDK API 程式化執行相同操作 |

> **MVP 開發影響：** 本地端 Backend Server 需整合 Kneron PLUS SDK（透過 CGo 呼叫 C API 或獨立 Python subprocess），實現 USB 裝置偵測、NEF 模型上傳、韌體更新、推論啟動等核心操作。

---

## B4. MVP 功能規格

### B4.1 F1 — 預訓練模型庫與選擇

| 項目 | 規格 |
|------|------|
| **概述** | 提供可瀏覽、搜尋、篩選的預訓練模型庫 |
| **模型來源** | 初期以 Kneron 模型庫（支援 Kneron NPU 的預訓練模型）為主，未來擴展其他來源 |
| **模型卡片資訊** | 名稱、縮圖、任務類型、支援硬體、模型大小、準確度、描述 |
| **篩選維度** | 任務類型 / 硬體相容性 / 模型大小 / 關鍵字搜尋 |
| **模型格式** | Kneron NEF（Kneron 專用格式）為主；未來擴展支援 ONNX / TFLite 等 |
| **儲存** | 模型中繼資料可存雲端；模型檔下載到本地 Server 快取 |

### B4.2 F2 — 裝置連線與管理

| 項目 | 規格 |
|------|------|
| **概述** | 透過本地 Server 自動偵測、連線和管理 USB 裝置 |
| **裝置偵測** | 監聽 USB 事件，依 VendorId/ProductId 識別裝置類型 |
| **裝置資訊** | 裝置名稱、類型、連接埠、連線狀態 |
| **連線管理** | 建立/中斷串列連線、自動重連（斷線後） |
| **多裝置** | 支援同時連接多個裝置，各自獨立管理 |
| **驅動擴充** | 插件式 Driver 架構，新硬體透過新增 Driver 支援 |

### B4.3 F3 — 韌體/模型燒錄

| 項目 | 規格 |
|------|------|
| **概述** | 將選定模型燒錄到目標裝置 |
| **燒錄協定** | MVP 使用 Kneron PLUS SDK：`kp_load_model()` 上傳 NEF 模型、`kp_load_firmware()` 更新韌體；未來依 Driver 擴充 |
| **燒錄流程** | USB 連線 → `kp_load_model_from_file(nef_path)` 傳輸 NEF → 驗證 CRC → 裝置自動重啟 |
| **進度回報** | WebSocket 即時回報百分比，前端顯示進度條 |
| **錯誤處理** | 逾時重試、傳輸錯誤偵測、使用者可讀的錯誤訊息 |
| **安全性** | 燒錄前確認模型與裝置相容；提示使用者確認覆寫 |

### B4.4 F4 — 裝置端即時推論與結果顯示

| 項目 | 規格 |
|------|------|
| **概述** | 燒錄完成後，在裝置端執行推論並即時顯示結果 |
| **推論模式** | 裝置自動進入推論模式，或透過命令手動啟動 |
| **資料流** | 裝置 → Serial → 本地 Server → WebSocket → 前端 |
| **分類結果** | 類別名稱 + 信心分數 + 即時長條圖 |
| **偵測結果** | 邊界框座標 + 類別 + 信心分數（疊加在影像上，若有影像輸出） |
| **效能指標** | 推論延遲 (ms)、FPS |
| **互動控制** | Confidence Threshold 滑桿、開始/停止推論 |
| **裝置日誌** | 原始串列通訊日誌（可展開查看） |

### B4.5 已實作的額外功能

> 以下功能為 MVP 開發過程中額外實作，超出原始 PRD 範圍。共 11 項功能。

#### F5 — 多來源推論輸入

| 項目 | 規格 |
|------|------|
| **概述** | 除了攝影機之外，支援上傳圖片和影片作為推論輸入來源 |
| **輸入來源** | 攝影機（即時）、圖片上傳（JPG/PNG，支援單張與多張批次）、影片上傳（MP4/AVI/MOV）、影片 URL（直接連結、YouTube、RTSP） |
| **圖片推論** | 上傳圖片至後端，送入裝置 NPU 推論後回傳結果 |
| **批次圖片推論** | 上傳多張圖片（最多 50 張），後端逐張送入 NPU 推論，結果透過 WebSocket 即時串流回前端；前端提供縮圖列表、進度條、點擊切換瀏覽各張結果 |
| **影片推論** | 上傳影片或提供 URL，後端逐幀擷取送入裝置推論，結果透過 WebSocket 即時串流 |
| **YouTube 支援** | 透過 yt-dlp 解析 YouTube URL 取得直接影片連結，再進行影片推論 |
| **拖放上傳** | 圖片 tab 支援 drag & drop 拖放上傳，拖入時顯示高亮邊框提示 |
| **UI 設計** | Tab 式切換（攝影機 / 圖片 / 影片），影片 tab 內再切換上傳檔案或貼上 URL |

#### F6 — 多語系支援（i18n）

| 項目 | 規格 |
|------|------|
| **概述** | 完整的前端多語系支援，支援英文與繁體中文切換 |
| **支援語言** | English (en)、繁體中文 (zh-TW) |
| **實作方式** | 自訂 TypeScript i18n 系統，不依賴外部框架（無 next-intl / react-i18next） |
| **翻譯字典** | 約 130+ 翻譯 key，按功能分區（common, nav, dashboard, devices, models, camera, inference, settings, errors） |
| **型別安全** | `TranslationKey` 型別由 `Paths<TranslationDict>` 遞迴產生，提供所有 key 的自動完成，缺 key 時 TypeScript 報錯 |
| **切換方式** | Settings 頁面語言下拉選單，切換後即時生效（無需重新整理） |
| **持久化** | 語言設定透過 Zustand persist 儲存至 localStorage |

#### F7 — 深色模式

| 項目 | 規格 |
|------|------|
| **概述** | 支援淺色和深色主題切換 |
| **實作方式** | ThemeSync 元件監聽 Zustand store 的 theme 設定，同步更新 `<html>` 的 `class` 屬性（`dark`） |
| **CSS 方案** | 使用 Tailwind CSS 的 `dark:` variant，搭配 CSS custom properties |
| **切換方式** | Settings 頁面主題選擇 |
| **持久化** | 主題設定透過 Zustand persist 儲存至 localStorage |

#### F8 — 儀表板（Dashboard）

| 項目 | 規格 |
|------|------|
| **概述** | 首頁儀表板提供平台總覽，包含統計卡片、快速操作和即時資訊 |
| **統計卡片** | 模型數量、裝置數量、已連線裝置數、燒錄次數 |
| **快速操作** | 「瀏覽模型」、「管理裝置」、「上傳模型」按鈕，快速導航到對應頁面 |
| **活動時間線** | 顯示最近 10 筆系統活動（模型上傳/刪除、裝置連線/斷線、燒錄開始/完成/錯誤） |
| **已連線裝置** | 即時顯示目前已連線的裝置列表及狀態 |

#### F9 — 裝置偏好設定

| 項目 | 規格 |
|------|------|
| **概述** | 每台裝置可設定自訂名稱和備註 |
| **自訂名稱** | alias 欄位，例如「實驗室裝置 #1」 |
| **備註** | 自由文字備註欄位 |
| **持久化** | 透過 Zustand persist 儲存至 localStorage，以 deviceId 為 key |

#### F10 — 模型比較

| 項目 | 規格 |
|------|------|
| **概述** | 模型庫內可選取最多 3 個模型進行並排比較 |
| **比較面向** | 準確率、FPS、模型大小、延遲、任務類型 |
| **UI 設計** | Dialog 式比較表，含指標長條圖視覺化 |
| **操作方式** | 在模型列表勾選後點擊「比較」按鈕 |

#### F11 — 自訂模型上傳

| 項目 | 規格 |
|------|------|
| **概述** | 使用者可上傳自訂 .nef 模型檔案到模型庫 |
| **上傳資訊** | 模型檔案（.nef）、模型名稱、描述、任務類型、標籤、輸入尺寸、量化方式 |
| **驗證** | 必填欄位驗證（檔案、名稱、任務類型、標籤） |
| **模型管理** | 自訂模型可在模型詳情頁刪除 |

#### F12 — 設定頁面

| 項目 | 規格 |
|------|------|
| **概述** | 集中管理應用程式設定 |
| **伺服器設定** | 顯示 API URL 和 WebSocket URL（唯讀） |
| **外觀設定** | 主題切換（淺色/深色）、語言切換（EN/zh-TW） |
| **關於** | 顯示平台版本資訊 |
| **恢復預設** | 一鍵恢復所有設定至預設值 |

#### F13 — 裝置健康狀態與連線歷史

| 項目 | 規格 |
|------|------|
| **概述** | 裝置詳情頁顯示健康狀態和連線歷史 |
| **健康狀態** | 狀態、韌體版本、運行時間、最後活動時間 |
| **連線歷史** | 按時間排列的連線/斷線事件紀錄 |

#### F14 — 批次圖片推論

| 項目 | 規格 |
|------|------|
| **概述** | 支援一次上傳多張圖片進行批次推論，適用於工業檢測等需要大量圖片驗證的場景 |
| **上傳方式** | 檔案選擇器多選、拖放上傳（drag & drop），上限 50 張 |
| **處理方式** | 後端逐張送入 NPU 推論（硬體限制），結果透過 WebSocket 即時串流回前端 |
| **進度顯示** | 進度條顯示已處理 / 總數，縮圖列表標示完成（✓）/處理中（⏳）/待處理（編號） |
| **結果瀏覽** | 水平捲動縮圖列表，點擊切換檢視不同圖片的推論結果（BBox overlay + 分類結果） |
| **UI 設計** | 批次模式下自動隱藏手動推論按鈕，inference panel 顯示批次進度卡片 |

#### F15 — 攝影機自動偵測

| 項目 | 規格 |
|------|------|
| **概述** | 進入 workspace 時自動偵測系統是否有可用攝影機，無攝影機時自動停用攝影機功能 |
| **偵測方式** | 後端透過 ffmpeg 偵測系統攝影機（macOS: AVFoundation, Windows: DirectShow） |
| **無攝影機行為** | Camera tab 自動 disabled、預設切換至 Image tab、顯示「未偵測到攝影機」提示訊息 |
| **有攝影機行為** | 維持原有攝影機推論功能不變 |

#### F16 — 跨平台安裝與分發

| 項目 | 規格 |
|------|------|
| **概述** | 提供一行指令安裝體驗，涵蓋 binary 下載、環境設定、硬體偵測，支援 macOS 與 Windows |
| **macOS/Linux 安裝** | `curl -fsSL https://gitea.innovedus.com/.../install.sh \| bash`，自動偵測 OS + 架構（darwin/linux + amd64/arm64） |
| **Windows 安裝** | `irm https://gitea.innovedus.com/.../install.ps1 \| iex`，自動下載 zip、解壓、加入 PATH |
| **安裝步驟** | 4 步驟自動化：(1) 下載 binary + 資料檔 (2) 安裝 USB 驅動（libusb）(3) 建立 Python venv + pyusb (4) 檢查環境 + 偵測硬體 |
| **安裝目錄** | macOS: `~/.edge-ai-platform/`、Windows: `%LOCALAPPDATA%\EdgeAIPlatform` |
| **解除安裝** | macOS: `rm -rf ~/.edge-ai-platform && sudo rm -f /usr/local/bin/edge-ai-server`、Windows: 刪除目錄 + 移除 PATH |
| **啟動依賴檢查** | Server 啟動時自動檢查 ffmpeg、yt-dlp、python3，缺少時顯示對應平台的安裝指引 |
| **GoReleaser 打包** | 跨平台 archive 自動產出（darwin amd64/arm64 tar.gz、windows amd64 zip），含 binary + data + scripts |
| **Kneron 硬體偵測** | 安裝完成時自動偵測 USB Kneron 裝置（KL520/KL720/KL730），使用 pyusb；KL720 KDP legacy 裝置提示韌體更新 |

#### F17 — 圖形化安裝與解除安裝程式

| 項目 | 規格 |
|------|------|
| **概述** | 提供非技術人員可使用的桌面 GUI 安裝精靈，雙擊即可完成所有安裝步驟（server binary、Python 環境、系統依賴、硬體驅動），無需開終端機或輸入任何指令 |
| **目標平台** | macOS (.dmg → .app) + Windows (.exe installer) |
| **技術方案** | Go + Wails v2（WebView-based GUI），前端以 HTML/CSS/JS 實作安裝畫面，後端 Go 執行實際安裝邏輯。共用 Go 工具鏈，無需額外 runtime |
| **安裝精靈流程** | 6 步驟：(1) 歡迎頁 + 授權協議 → (2) 安裝路徑選擇 → (3) 元件選擇（必要/可選）→ (4) 自動安裝 + 即時進度 → (5) 硬體偵測結果 → (6) 完成 + 啟動選項 |
| **必要元件（自動安裝）** | edge-ai-server binary（含嵌入式前端）、Python 3 venv + numpy + opencv-python-headless + pyusb、Kneron 韌體檔案（KL520 + KL720）、NEF 預訓練模型、libusb（USB 裝置通訊） |
| **可選元件** | ffmpeg（攝影機/影片串流）、yt-dlp（YouTube 影片下載） |
| **自動依賴解析** | macOS: 自動安裝 Homebrew（若未安裝）→ `brew install libusb python3 ffmpeg`；Windows: 自動下載 Python embedded + libusb DLL，免管理員權限 |
| **即時進度顯示** | 每個安裝步驟獨立顯示進度條 + 狀態文字（下載中 → 解壓中 → 設定中 → 完成），失敗時顯示錯誤訊息 + 重試按鈕 |
| **硬體偵測** | 安裝完成後自動掃描 USB Kneron 裝置，顯示偵測到的晶片型號（KL520/KL720）、韌體版本、連線狀態；KL720 KDP legacy 裝置提示一鍵韌體更新 |
| **解除安裝** | 內建解除安裝功能：刪除 server binary + Python venv + 資料檔案 + symlink/PATH，macOS 提供拖曳到垃圾桶 + 深度清理選項，Windows 整合「新增或移除程式」 |
| **安裝目錄** | macOS: `~/.edge-ai-platform/`（不需 sudo）、Windows: `%LOCALAPPDATA%\EdgeAIPlatform\`（不需管理員） |
| **安裝完成動作** | 可選擇立即啟動 server + 自動開啟瀏覽器（`http://localhost:3721`）、建立桌面捷徑、設定開機自動啟動 |
| **更新支援** | 偵測現有安裝版本，僅更新 binary + 新模型，保留使用者資料（custom-models、設定檔）與 Python venv |
| **打包產出** | macOS: `EdgeAI-Installer.dmg`（含 .app + 背景圖 + Applications 捷徑）、Windows: `EdgeAI-Setup.exe`（NSIS + Wails 包裝） |
| **安裝體積** | 完整安裝約 300-400 MB（binary ~10MB + 模型 ~73MB + Python venv ~250MB + firmware ~2MB） |

#### F18 — Kneron 硬體通訊整合（KL520 + KL720）

| 項目 | 規格 |
|------|------|
| **概述** | 雙晶片 Kneron USB Dongle 完整通訊管線已驗證，涵蓋 USB 偵測、晶片感知連線、韌體載入/更新、模型載入、即時推論與多模型後處理 |
| **支援裝置** | Kneron KL520 (VID 0x3231, PID 0x0100, USB 2.0) + KL720 (PID 0x0720 KDP2 / PID 0x0200 KDP legacy, USB 3.0) |
| **晶片感知架構** | Driver 從 `device_type` 或 `product_id` 自動推導晶片類型（KL520/KL720），所有行為依晶片動態調整 |
| **KL520 USB Boot** | 無板載 Flash 韌體，每次連線自動上傳 fw_scpu.bin + fw_ncpu.bin；每 USB session 僅能載入一個模型（Error 40 限制），換模型需 reset + bridge restart |
| **KL720 Flash-based** | KDP2 韌體預燒在 SPI Flash，連線免上傳韌體；無 Error 40 限制，可自由切換模型 |
| **KL720 KDP→KDP2 更新** | KL720 出廠可能為舊版 KDP 韌體（PID=0x0200），透過 DFUT magic bypass (`0x1FF55B4F`) 連線後以 `kp_update_kdp_firmware_from_files()` 永久更新為 KDP2；更新後 PID 變為 0x0720 |
| **SDK** | Kneron PLUS SDK v3.1.2，從 C 原始碼編譯為 macOS dylib（Apple Silicon 透過 Rosetta 2 執行） |
| **通訊架構** | Go Server → JSON-RPC (stdin/stdout) → Python Bridge (`kneron_bridge.py`) → Kneron PLUS SDK (kp) → USB → KL520/KL720 |
| **支援模型** | Kneron NEF 格式，10+ 預訓練模型。KL520: Tiny YOLO v3、YOLOv5s、FCOS、ResNet18、SSD 人臉偵測。KL720: YOLOv5s、FCOS、ResNet18 |
| **跨晶片模型路徑** | `resolveModelPath()` 自動將 `data/nef/kl520/kl520_20001_...` 替換為 `data/nef/kl720/kl720_20001_...`（依連線晶片），跨平台模型自動選用正確的 NEF 檔案 |
| **推論延遲** | KL520: ~25ms（Tiny YOLO v3, 224×224）、KL720: 更快（USB 3.0 + 更強 NPU） |
| **後處理引擎** | 多模型自動偵測：Tiny YOLO v3（雙尺度 7×7+14×14）、YOLOv5s（三尺度 P3/P4/P5）、FCOS（5 層特徵金字塔）、SSD 人臉偵測、ResNet18 分類（Top-5 softmax） |
| **Letterbox 校正** | 自動讀取 `hw_pre_proc_info` 的 padding 參數，修正 bbox 座標以對應原始圖片比例 |
| **輸出格式** | 統一 `InferenceResult` JSON：taskType (detection/classification)、latencyMs、detections[{label, confidence, bbox}]、classifications[{label, confidence}] |
| **Python Bridge 指令** | `scan`、`connect`（含 `device_type` 參數）、`load_model`、`inference`、`reset`（KP_RESET_REBOOT）、`disconnect` |
| **Error 40 處理** | KL520: `restartBridge()` → 重建整個 Python 子進程 → 重新連線 + 載入模型。KL720: 先直接 retry → 若失敗才 fallback 到 bridge restart |
| **驗證結果** | KL520: 街道場景 8 物件偵測正確；KL720: KDP→KDP2 韌體更新成功（0x0200→0x0720）、connect/flash/inference 流程驗證 |

---

## B5. 功能路線圖（Post-MVP）

### B5.1 總覽

```
MVP（當前）
├── 預訓練模型庫
├── 裝置連線與燒錄
└── 裝置端即時推論

Phase 1 — 訓練能力（基礎差異化）
├── F05  影像分類訓練（瀏覽器端或伺服器端）
├── F06  物件偵測訓練
├── F07  資料收集與標記工具
├── F08  模型可解釋性儀表板
└── F09  資料品質檢測

Phase 2 — MLOps 能力（關鍵競爭力）
├── F10  部署後監控平台
├── F11  模型漂移偵測引擎
├── F12  OTA 模型更新管道
├── F13  主動學習閉環
└── F14  自動化 MLOps 管道

Phase 3 — 進階功能（長期差異化）
├── F15  LLM 驅動的模型設計助手
├── F16  多感測器融合
├── F17  邊緣端持續學習
├── F18  聯邦學習支援
└── F19  合規與安全框架
```

### B5.2 Phase 1 — 訓練能力

| 功能 | 說明 | 對標競品 |
|------|------|---------|
| **F05 影像分類訓練** | 使用者上傳影像 + 標記 → 訓練分類模型 → 部署 | EI: Keras Transfer Learning / SC: 瀏覽器端 WebGL |
| **F06 物件偵測訓練** | 框選標記 → 訓練偵測模型 → 部署 | EI: FOMO/YOLO / SC: YOLO-World |
| **F07 資料收集與標記** | 多類型標記（邊界框/多邊形/關鍵點）、AI 預標記、協作標記 | EI: GPT-4o 標記 / SC: 僅框選 |
| **F08 模型可解釋性** | Grad-CAM 熱力圖、錯誤分析、信心度分佈、邊界案例 | 雙方均缺 |
| **F09 資料品質檢測** | 重複偵測、離群值、類別平衡分析、品質評分 | EI: Data Explorer 但無自動建議 / SC: 無 |

### B5.3 Phase 2 — MLOps 能力

| 功能 | 說明 | 市場現況 |
|------|------|---------|
| **F10 部署後監控** | 推論統計、裝置健康、告警規則、群組管理 | 邊緣 AI 最大功能空白 |
| **F11 漂移偵測** | 邊緣端輕量偵測 + 雲端深度分析、自動告警 | 無任何平台提供 |
| **F12 OTA 更新** | 差分更新、分階段發佈、回滾機制、A/B 測試 | 雙方均弱 |
| **F13 主動學習** | 低信心樣本採集 → 人機標記 → 自動再訓練 → 部署 | 完整閉環不存在 |
| **F14 MLOps 管道** | 拖放式 pipeline、觸發機制、品質閘門、CI/CD | 雙方均無 |

### B5.4 Phase 3 — 進階功能

| 功能 | 說明 |
|------|------|
| **F15 LLM 模型助手** | 自然語言描述需求 → 自動推薦模型架構與訓練策略 |
| **F16 多感測器融合** | 多通道同步收集、時間對齊、多模態融合訓練 |
| **F17 邊緣端持續學習** | 裝置端微調最後幾層，隱私保護 |
| **F18 聯邦學習** | 多裝置協同訓練、差分隱私 |
| **F19 合規安全** | 公平性審計、PII 偵測、對抗攻擊測試、合規報告 |

### B5.5 優先級矩陣

```
                    高影響力
                      │
         F10 監控     │    F13 主動學習
         F11 漂移偵測  │    F15 LLM 助手
         F12 OTA      │    F18 聯邦學習
                      │
  低實作難度 ─────────┼──────────── 高實作難度
                      │
         F05 分類訓練  │    F16 多感測器融合
         F08 可解釋性  │    F17 邊緣端學習
         F09 品質檢測  │    F19 合規框架
         F07 標記工具  │    F14 MLOps 管道
         F06 偵測訓練  │
                      │
                    低影響力
```

---

## B6. 商業模式與策略

### B6.1 定價策略

| 方案 | 內容 | 對標 |
|------|------|------|
| **免費版** | 模型庫瀏覽、裝置燒錄、即時推論、基礎訓練 — 核心功能完全免費 | 比 EI 更寬鬆（無專案數/運算時間限制） |
| **Pro 版**（未來） | 進階訓練功能、模型監控、OTA 更新、團隊協作 — 透明月費定價 | 比 EI Enterprise 更平易 |
| **Enterprise**（未來） | SSO、白標、私有部署、SLA、優先支援 | 類似 EI Enterprise |

### B6.2 生態系規劃

| 維度 | 策略 |
|------|------|
| **硬體** | MVP 以 Kneron Dongle 為核心 → Phase 1 擴展至 Kneron Arduino / KNEO Pi → Phase 2+ 開放非 Kneron 晶片，透過 Driver 插件支援多廠商 |
| **模型** | 開放模型市集，整合公開模型庫 + 允許社群貢獻 |
| **社群** | 開源 Driver SDK，鼓勵社群貢獻硬體支援 |
| **整合** | API 優先設計，未來可整合 CI/CD、IoT 平台等 |

---

# 附錄

## C1. 術語對照表

| 術語 | Edge Impulse 用語 | SenseCraft AI 用語 | 本平台用語 |
|------|------------------|-------------------|-----------|
| ML Pipeline | Impulse | 訓練流程 | （MVP 不含） |
| Feature Engineering | Processing Block | （無） | （MVP 不含） |
| Model Training | Learning Block | Training | （Post-MVP） |
| Model Deployment | Deployment (Build) | Deploy to device | 燒錄到裝置 |
| Live Testing | Live Classification | Preview / Invoke | 即時推論 |
| Device Management | Devices | Workspace | 裝置管理 |
| Pre-trained Models | 公開專案 | 模型庫 | 模型庫 |

## C2. 競品支援硬體清單

**Edge Impulse 支援硬體（40+）：**
- Arduino: Nano 33 BLE Sense, Nicla (Sense ME/Vision/Voice), Portenta H7, UNO Q
- Nordic: nRF52840/5340/54L15/7002/9160/9161/9151 DK, Thingy:53/91
- Espressif: ESP-EYE, ESP32-S3
- STM: B-L475E-IOT01A, STM32N6570-DK
- Renesas: CK-RA6M5, EK-RA8D1, RZ/G2L, RZ/V2L, RZ/V2H
- Silicon Labs: Thunderboard Sense 2, xG24 Dev Kit
- Raspberry Pi: Pi 4 & 5, Pico
- NVIDIA: Jetson Orin & Nano
- 其他: Syntiant, TI, Qualcomm, Sony Spresense, Particle Photon 2

**SenseCraft AI 支援硬體（6 款）：**
- Grove Vision AI V2
- XIAO ESP32S3 Sense
- SenseCAP A1102
- SenseCAP Watcher
- reCamera
- NVIDIA Jetson (reComputer)

## C3. 參考來源

### 競品分析來源

| 來源 | 說明 |
|------|------|
| Edge Impulse PRD | 透過 Playwright 自動化測試在 2026-02-11 驗證的完整平台分析 |
| SenseCraft AI PRD | 透過網頁爬取和截圖在 2026-02-09 完成的完整平台分析 |
| Edge Impulse 論壇 | forum.edgeimpulse.com 常見問題模式分析 |
| 社群討論 | Reddit (r/embedded, r/MachineLearning, r/tinyML) |
| 產業報告 | TinyML Foundation 報告、MLSys 會議論文 |
| 競品資料 | Roboflow、Google Teachable Machine、SensiML、Arduino Cloud |

### 技術實作來源

| 來源 | 類型 | 說明 |
|------|------|------|
| `github.com/Seeed-Studio/SenseCraft-Web-Toolkit` | GitHub | SenseCraft 開源 Web 工具套件 |
| `src/sscma/grove_ai_we2/deviceHimax.ts` | 原始碼 | Grove AI V2 Web Serial 連線（921600 baud） |
| `src/sscma/xiao_esp32s3/EspSerialDevice.ts` | 原始碼 | XIAO ESP32S3 Web Serial + ESPLoader（115200 baud） |
| `github.com/edgeimpulse/edge-impulse-cli` | GitHub | EI CLI 工具，daemon 實作 |
| `cli/serial-connector.ts` | 原始碼 | EI daemon 串列埠通訊（`serialport` npm v8.0.8） |
| `cli/daemon.ts` | 原始碼 | EI daemon WebSocket 連雲端架構 |
| `docs.edgeimpulse.com/docs/tools/edge-impulse-cli/cli-installation` | 文件 | CLI 安裝指南 |
| `wicg.github.io/serial/` | W3C 標準 | Web Serial API 規格 |
| `pkg.go.dev/go.bug.st/serial` | Go 套件 | Go 串列埠通訊（建議方案） |

### Kneron 硬體與 SDK 來源

| 來源 | 類型 | 說明 |
|------|------|------|
| `mouser.com/catalog/specsheets/Kneron_01292021_KL720B3421B.pdf` | Datasheet | KL720 AI SoC 初步規格書（Version 0.8） |
| `mouser.com/.../Kneron_KP73B703A_M1__KL730_KNEOPi_HDK_V2_0_Spec` | Datasheet | KL730 KNEO-Pi V2.0 HDK 規格書 |
| `doc.kneron.com/docs/720_2.2.0/introduction/` | 官方文件 | KL720 SDK v2.2.x 文件中心 |
| `doc.kneron.com/docs/plus_python/api_document/V1.3.0/kp/core/` | API 文件 | Kneron PLUS Python SDK — kp.core API 參考 |
| `doc.kneron.com/docs/plus_c_api/api_reference_1.1.x/kp_core.h/` | API 文件 | Kneron PLUS C API — kp_core.h 參考 |
| `github.com/kneron/host_lib` | GitHub | Kneron USB Dongle Python 範例 |
| `kneron.com/page/soc/` | 官方頁面 | Kneron 邊緣 AI 晶片產品總覽（KL520/KL720/KL730） |
| `kneron.com/news/blog/178/` | 官方部落格 | KL730 AI 晶片發佈公告 |
| `cnx-software.com/2020/09/02/kneron-kl720-arm-cortex-m4-ai-soc/` | 媒體報導 | KL720 技術規格分析（CNX Software） |
| `winbond.com/.../high-bandwidth-1gb-lpddr3-helps-kneron-kl720/` | 合作夥伴 | Winbond LPDDR3 搭配 KL720 資訊 |

---

*文件版本：v2.4 | 日期：2026-02-28 | 狀態：更新中*
