For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主要導覽
Codex

Codex use case

打造 Mac 應用程式殼層

使用 Codex 建構 Mac 原生 SwiftUI 應用程式殼層,包含側邊欄、詳細資料窗格、檢查器、指令與設定。

Difficulty 進階
Time horizon 1 小時

使用 Codex 和 Build macOS Apps 外掛程式,將應用程式構想打造成 Mac 原生 NavigationSplitView 應用程式;讓側邊欄選取狀態保持穩定、加入選單、工具列與鍵盤快速鍵,並將偏好設定移至專用的 Settings 場景。

最適合

  • 需要真正桌面殼層(含持續顯示的導覽、選單、工具列與鍵盤快速鍵)的新 Mac 應用程式構想,或以 iPad 和 Web 為優先的概念
  • 編輯器、資料庫、管理或審查工具;其中側邊欄的選取項目會驅動詳細資料窗格,而檢查器則提供次要中繼資料或動作
  • 設定應置於專用的偏好設定視窗,而非主要內容堆疊中另一個推入式畫面的 Mac 應用程式

Contents

    ← 所有使用案例

    打造 Mac 應用程式殼層

    使用 Codex 建構 Mac 原生 SwiftUI 應用程式殼層,包含側邊欄、詳細資料窗格、檢查器、指令與設定。

    使用 Codex 和 Build macOS Apps 外掛程式,將應用程式構想打造成 Mac 原生 NavigationSplitView 應用程式;讓側邊欄選取狀態保持穩定、加入選單、工具列與鍵盤快速鍵,並將偏好設定移至專用的 Settings 場景。

    進階
    1 小時

    使用 Codex 和 Build macOS Apps 外掛程式,將應用程式構想打造成 Mac 原生 NavigationSplitView 應用程式;讓側邊欄選取狀態保持穩定、加入選單、工具列與鍵盤快速鍵,並將偏好設定移至專用的 Settings 場景。

    進階
    1 小時

    最適合

    • 需要真正桌面殼層(含持續顯示的導覽、選單、工具列與鍵盤快速鍵)的新 Mac 應用程式構想,或以 iPad 和 Web 為優先的概念
    • 編輯器、資料庫、管理或審查工具;其中側邊欄的選取項目會驅動詳細資料窗格,而檢查器則提供次要中繼資料或動作
    • 設定應置於專用的偏好設定視窗,而非主要內容堆疊中另一個推入式畫面的 Mac 應用程式

    技能與外掛程式

    • 使用 macOS SwiftUI 模式、視窗管理、AppKit 互通性與建置/執行技能,建立側邊欄—詳細資料—檢查器版面配置、串接選單與設定,並透過以 Shell 為主的迭代流程驗證應用程式。
    Skill Why use it
    Build macOS Apps 使用 macOS SwiftUI 模式、視窗管理、AppKit 互通性與建置/執行技能,建立側邊欄—詳細資料—檢查器版面配置、串接選單與設定,並透過以 Shell 為主的迭代流程驗證應用程式。

    起始提示詞

    使用 Build macOS Apps 外掛程式,將 [describe your app idea] 打造成 Mac 原生 SwiftUI 應用程式殼層,包含側邊欄、詳細資料窗格、檢查器、指令與設定。 限制條件: - 先選擇場景模型。主視窗應優先使用 `WindowGroup`,並為偏好設定新增專用的 `Settings` 場景。 - 以 `NavigationSplitView` 建構主要 UI,包含明確的選取狀態、原生 `.sidebar` 清單、詳細資料區域,以及用於次要中繼資料或控制項的 `inspector(isPresented:)` 面板。 - 側邊欄列應維持原生且精簡:每列一個圖示、一行標題,最多再加一行簡短的次要文字。除非有充分的產品理由,否則不要將每一列包在大型自訂卡片中。 - 透過場景層級的 `commands`、`CommandMenu`、工具列按鈕和鍵盤快速鍵提供重要動作。不要讓手勢成為執行關鍵動作的唯一途徑。 - 視窗範圍內的 UI 狀態使用 `@SceneStorage`,偏好設定使用 `@AppStorage`,並使用明確由父層擁有的選取繫結來協調 sidebar/detail。 - 優先使用系統材質、語意色彩和標準側邊欄背景。只有在需要時,才為詳細資料或檢查器的內容卡片加入自訂樣式。 - 只有在 SwiftUI 無法俐落實現某項特定桌面行為時,才使用範圍精簡的 AppKit 橋接層。 - 建立或更新 `script/build_and_run.sh`,執行最小且有效的 build/run 檢查,並告訴我你實際使用的確切指令。 交付內容: - 場景結構和主要 sidebar/detail/inspector 檢視 - 選單、工具列和鍵盤快速鍵的串接 - 設定場景與偏好設定狀態模型 - 你加入的任何 AppKit 橋接層及其必要性 - build/run 驗證步驟,以及你建議的任何後續桌面 UX 改善
    使用 Build macOS Apps 外掛程式,將 [describe your app idea] 打造成 Mac 原生 SwiftUI 應用程式殼層,包含側邊欄、詳細資料窗格、檢查器、指令與設定。 限制條件: - 先選擇場景模型。主視窗應優先使用 `WindowGroup`,並為偏好設定新增專用的 `Settings` 場景。 - 以 `NavigationSplitView` 建構主要 UI,包含明確的選取狀態、原生 `.sidebar` 清單、詳細資料區域,以及用於次要中繼資料或控制項的 `inspector(isPresented:)` 面板。 - 側邊欄列應維持原生且精簡:每列一個圖示、一行標題,最多再加一行簡短的次要文字。除非有充分的產品理由,否則不要將每一列包在大型自訂卡片中。 - 透過場景層級的 `commands`、`CommandMenu`、工具列按鈕和鍵盤快速鍵提供重要動作。不要讓手勢成為執行關鍵動作的唯一途徑。 - 視窗範圍內的 UI 狀態使用 `@SceneStorage`,偏好設定使用 `@AppStorage`,並使用明確由父層擁有的選取繫結來協調 sidebar/detail。 - 優先使用系統材質、語意色彩和標準側邊欄背景。只有在需要時,才為詳細資料或檢查器的內容卡片加入自訂樣式。 - 只有在 SwiftUI 無法俐落實現某項特定桌面行為時,才使用範圍精簡的 AppKit 橋接層。 - 建立或更新 `script/build_and_run.sh`,執行最小且有效的 build/run 檢查,並告訴我你實際使用的確切指令。 交付內容: - 場景結構和主要 sidebar/detail/inspector 檢視 - 選單、工具列和鍵盤快速鍵的串接 - 設定場景與偏好設定狀態模型 - 你加入的任何 AppKit 橋接層及其必要性 - build/run 驗證步驟,以及你建議的任何後續桌面 UX 改善

    從 Mac 場景模型開始

    此使用案例旨在將應用程式構想打造成專為桌面設計的 Mac 應用程式殼層,而不是把觸控優先的堆疊勉強拉伸成桌面版。請 Codex 先選擇場景模型,再以穩定的側邊欄選取狀態、詳細資料區域,以及用於次要控制項或中繼資料的檢查器來設計主視窗。

    Mac 原生側邊欄與詳細資料應用程式殼層,側邊欄中有一個已選取項目,詳細資料窗格則顯示內容

    當你希望 Codex 套用這種桌面結構,並讓建置/執行迭代以 Shell 為主時,請使用 Build macOS Apps 外掛程式。其 macOS SwiftUI 模式技能很適合用於場景設計、側邊欄、檢查器、指令、設定,以及在 SwiftUI 尚無法完整實現某項 Mac 特有行為時加入小型 AppKit 橋接層。

    建構側邊欄、詳細資料窗格和檢查器

    若功能需要持續顯示的導覽與穩定的選取項目,應優先使用 NavigationSplitView。側邊欄列應維持原生且精簡,側邊欄採用系統背景,並將自訂卡片或密集的中繼資料留給詳細資料窗格或檢查器。

    struct LibraryRootView: View {
      @SceneStorage("LibraryRootView.selection") private var selection: Item.ID?
      @SceneStorage("LibraryRootView.showInspector") private var showInspector = true
    
      var body: some View {
        NavigationSplitView {
          List(selection: $selection) {
            ForEach(items) { item in
              Label(item.title, systemImage: item.systemImage)
                .tag(item.id)
            }
          }
          .listStyle(.sidebar)
          .navigationTitle("Library")
        } detail: {
          ItemDetailView(selection: selection)
            .inspector(isPresented: $showInspector) {
              ItemInspectorView(selection: selection)
            }
        }
      }
    }

    如果應用程式需要特殊的分割檢視尺寸、低階視窗協調或自訂回應者鏈行為,請 Codex 保留完整的 SwiftUI 殼層,只為該功能缺口加入所需的最小 AppKit 橋接層。

    將指令、工具列和快速鍵置於桌面層

    Mac 使用者應能從選單列、工具列和鍵盤快速鍵找到重要動作。請 Codex 以相同的應用程式動作為核心,串接場景層級的 commands、依上下文變化的選單項目和工具列按鈕,讓桌面使用者不必四處尋找只能透過手勢操作的控制項。

    @main
    struct LibraryApp: App {
      var body: some Scene {
        WindowGroup {
          LibraryRootView()
        }
        .commands {
          CommandMenu("Library") {
            Button("New Item") {
              // Create a new item.
            }
            .keyboardShortcut("n")
    
            Button("Toggle Inspector") {
              // Route this command to the focused window or selected item state.
            }
            .keyboardShortcut("i", modifiers: [.command, .option])
          }
        }
    
        Settings {
          LibrarySettingsView()
        }
      }
    }

    當指令應套用至目前的詳細資料項目時,請使用 FocusedValue、場景狀態或明確的選取狀態。若同一個快速鍵會在多處註冊,請 Codex 將所有權集中至一處,讓應用程式只有一條明確的指令路徑。

    將偏好設定放在 Settings

    對應用程式偏好設定,請使用專用的 Settings 場景,並透過 @AppStorage 長期保存使用者選擇。相較於在主要內容視窗內推入設定畫面,這通常更符合 Mac 的使用方式。

    struct LibrarySettingsView: View {
      @AppStorage("showItemMetadata") private var showItemMetadata = true
    
      var body: some View {
        TabView {
          Form {
            Toggle("Show Item Metadata", isOn: $showItemMetadata)
          }
          .tabItem { Label("General", systemImage: "gearshape") }
        }
        .frame(width: 460, height: 260)
        .scenePadding()
      }
    }

    先用提示詞描述應用程式概念,再驗證殼層

    使用本頁時,最好在提示詞中說明應用程式概念、主要內容物件和主要動作,再要求 Codex 優先依該工作流程建構桌面殼層。請智慧體執行小規模的建置/執行檢查,並摘要說明場景結構、指令串接、狀態所有權,以及任何必須以 AppKit 補足的邊界情況。

    實用技巧

    讓側邊欄維持原生樣式

    側邊欄列應使用一個圖示、一行標題,最多再加一行簡短的次要文字。將資訊更豐富的卡片、計數器和中繼資料移至詳細資料窗格或檢查器,讓來源清單仍能輕鬆瀏覽。

    避免將偏好設定藏在主要堆疊中

    如果某項使用者偏好會影響整個應用程式,請 Codex 將該控制項放在 Settings 中並搭配 @AppStorage,再透過應用程式選單提供進入點,而不要另行建立推入式設定畫面。

    僅用 AppKit 補足特定的桌面功能缺口

    如果功能需要開啟/儲存面板、第一回應者控制或自訂 NSView,請將 AppKit 限制在 SwiftUI 所擁有的狀態模型外圍,僅補足少量功能,而不要用 AppKit 重寫整個視窗。

    Tech stack

    Need

    分割檢視應用程式殼層

    Default options

    NavigationSplitView.sidebar 清單和 inspector(isPresented:)

    Why it's needed

    相較於觸控優先的推入式導覽,持續顯示的側邊欄、詳細資料窗格和檢查器更符合常見的 Mac 應用程式版面。

    Need

    桌面動作與設定

    Default options

    commandsCommandMenu、鍵盤快速鍵和 Settings 場景

    Why it's needed

    選單列動作、快速鍵和專用設定視窗,能讓這項功能更像真正的 Mac 應用程式,而不是把 iOS 畫面拉伸到桌面環境。

    Need

    狀態所有權

    Default options

    @State@SceneStorage@AppStorage 和明確的選取繫結

    Why it's needed

    Codex 無須習慣性加入檢視模型,也能讓側邊欄選取狀態、檢查器顯示狀態與使用者偏好維持可預測的行為。

    Need

    原生功能的備援途徑

    Default options

    透過範圍精簡的 NSViewRepresentableNSWindow 橋接層使用 AppKit

    Why it's needed

    只有在 SwiftUI 無法俐落實現平台行為時才使用 AppKit,同時讓 SwiftUI 繼續作為場景與選取狀態的單一事實來源。

    Need Default options Why it's needed
    分割檢視應用程式殼層 NavigationSplitView .sidebar 清單和 inspector(isPresented:) 相較於觸控優先的推入式導覽,持續顯示的側邊欄、詳細資料窗格和檢查器更符合常見的 Mac 應用程式版面。
    桌面動作與設定 commands CommandMenu 、鍵盤快速鍵和 Settings 場景 選單列動作、快速鍵和專用設定視窗,能讓這項功能更像真正的 Mac 應用程式,而不是把 iOS 畫面拉伸到桌面環境。
    狀態所有權 @State @SceneStorage @AppStorage 和明確的選取繫結 Codex 無須習慣性加入檢視模型,也能讓側邊欄選取狀態、檢查器顯示狀態與使用者偏好維持可預測的行為。
    原生功能的備援途徑 透過範圍精簡的 NSViewRepresentable NSWindow 橋接層使用 AppKit 只有在 SwiftUI 無法俐落實現平台行為時才使用 AppKit,同時讓 SwiftUI 繼續作為場景與選取狀態的單一事實來源。

    相關使用案例