# 115Desktop_sub Review

## 現況

- 目前主線是 `nodejs_project`：Electron 視窗 + Chrome/Edge Web Speech API + 本機 `127.0.0.1` HTTP bridge + `uiohook-napi` 全域熱鍵。
- `C#_project` 看起來較像早期 WinForms 原型，主功能密度明顯低於 Electron 版本。
- 辨識來源是瀏覽器 Web Speech API，優點是快、安裝輕；缺點是依賴 Chrome/Edge 與線上服務行為，離線與隱私掌控較弱。

## 建議優先改進

- 加語言選擇：目前 `voice.html` 固定 `recognition.lang = 'zh-TW'`，建議放到設定頁，至少支援 `zh-TW`、`zh-CN`、`en-US`、`ja-JP`。
- 加 API 狀態頁：顯示目前本機 port、最後一次字幕、Web Speech 支援狀態、麥克風授權狀態，方便現場 demo 排錯。
- 熱鍵可設定：`Shift + F2` 寫死在 `main.js`，建議設定化，並在註冊失敗時顯示可理解的 UI 訊息。
- 字幕輸出留歷史：目前偏即時 HUD，建議保留最近 30-60 秒 transcript，可複製、匯出 `.txt` 或 `.srt`。
- 加 MyAI Voice Agent API 模式：可選 Web Speech 或呼叫本專案 `agent_api.php?mode=transcribe`，讓 demo 能比較「瀏覽器即時字幕」與「Whisper/Breeze 高品質辨識」。

## 打包與維護

- `uiohook-napi` 對 Electron/Node ABI 敏感，建議固定 Electron 版本，並把 `npm run rebuild` 寫進打包流程說明。
- `extraResources.models` 目前保留，但 Web Speech 版本不需要大型模型；若沒有模型目錄，建議移除或註解避免打包混淆。
- 建議把 `voice.html` 的 recognition 與 fetch bridge 抽到獨立 JS，方便測試與切換辨識 provider。

## Rust 重寫可行性

- 可以做，但不建議趕在 2026-05-20 分享會前做完整重寫。
- Rust MVP 建議：
  - Tauri 做透明字幕視窗與設定頁。
  - `global-hotkey` 或 Tauri plugin 處理熱鍵。
  - 本機 HTTP bridge 使用 `axum`。
  - 即時辨識仍先走 Web Speech 頁面或外接 MyAI Voice Agent API；不要第一版就把 Whisper runtime 塞進 Rust。
- Rust 版價值在更小安裝包、更好權限邊界與長期穩定，不在短期 demo 速度。

## 分享會建議展示方式

- 先用 115Desktop_sub 展示「零模型、低門檻、即時字幕」。
- 再切到 MyAI Voice 展示「Whisper/Breeze 較完整的字幕、講者、檔案輸出」。
- 最後用 Agent API 說明這些功能如何被其他 AI agent 或 skill 串起來。
