> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 構建你的第一個功能

從一處原生外殼改動到一個已驗證視窗的端到端演練。

## 初學者演練

先決條件：閱讀下面兩篇入門指南，完成 Desktop 本地安裝，並在編輯器中以根目錄開啟此儲存庫。外殼在啟動時把 SUPASTACK_APP_URL 作為終端設定讀取——而不是從已儲存的 .env 檔案中讀取。

簡而言之：工作區是一個團隊的單獨使用者、資料和設定。伺服器是可信後端；讓提供商金鑰遠離瀏覽器和電話程式碼。遷移是建立或更新表的版本化資料庫更改。人工智慧模型是回答的引擎；型號目錄是伺服器上可用型號 ID 和價格的列表。提供商是一種外部服務，例如人工智慧、電子郵件或計費服務。權利是允許工作區使用某項功能的授權。 Webhook 是一個服務傳送到另一個服務的 URL 的訊息。

1. 開啟 `.agents/skills/add-a-desktop-capability/SKILL.md`——或讓您的編碼代理照它執行——並做一處小的原生改動，例如新增一個 View 選單項或換一個召喚快捷鍵。

2. 執行 `cargo check`，啟動外殼，並在開啟的視窗中實際驗證該改動。

3. 在您計劃釋出的每個作業系統上重複驗證——托盤、快捷鍵和選單行為因平臺而異。

對自定義程式碼，寫明行為名稱、它影響的選單或快捷鍵，以及在每個作業系統上應發生的效果。把任務交給您的編碼代理，並要求它先讀 `AGENTS.md`、`.ai/PROJECT_CONTEXT.md` 以及將觸碰檔案的 `.ai/` 映象檔案；在編輯前列出檔案和檢查項；並向您展示 diff。使用示例值；切勿貼上真實金鑰。

[開始之前](https://supastack.dev/zh-tw/docs/desktop/before-you-start.md)

[終端基礎知識](https://supastack.dev/zh-tw/docs/desktop/terminal-basics.md)

[桌面本地設定](https://supastack.dev/zh-tw/docs/desktop/ship-in-5-minutes.md)

[座席提示和專案記憶體](https://supastack.dev/zh-tw/docs/desktop/agents.md)


## 先決定原生還是產品

使用者視為產品介面的一切——介面、資料、設定——屬於 web 應用，會自動出現在視窗中。只有作業系統層面的行為屬於 Rust：視窗、托盤、選單、全域性快捷鍵、開機自啟和更新檢查。

```
apps/desktop/src-tauri/src/lib.rs
apps/desktop/src-tauri/tauri.conf.json
apps/desktop/src-tauri/capabilities/default.json
```


## 保持 webview 沙箱最小化

Webview 只能呼叫 `capabilities/default.json` 列出的內容。需要新外掛的改動要在 `Cargo.toml` 中新增 crate、在 `lib.rs` 中註冊，並在 capabilities 中授予最小許可權——絕不使用萬用字元。

持久化的外殼狀態——視窗位置、縮放、更新通道、視窗偏好——通過附帶的 sidecar 存放在應用資料目錄中，而不是由您手工管理的檔案。


## 在每個目標作業系統上驗證

執行 cargo test，然後在 Windows、macOS 和 Linux 上開啟真實視窗：視窗狀態恢復、關閉到托盤、單例項聚焦，以及在您的改動生效時的召喚快捷鍵。一個作業系統通過並不能證明另外兩個也沒問題。

[原生選單和視窗偏好](https://supastack.dev/zh-tw/docs/desktop/menus.md)

[Desktop 測試清單](https://supastack.dev/zh-tw/docs/desktop/testing.md)


## 下一篇

[用編碼代理構建](https://supastack.dev/zh-tw/docs/desktop/agents.md)
