English
主导航
Codex

Codex 用例

构建 Mac 应用框架

使用 Codex 构建一个 Mac 原生 SwiftUI 应用外壳,包含侧边栏、详情面板、检查器、命令和“设置”。

难度 高级
时间周期 1h

使用 Codex 和 Build macOS Apps 插件,将应用构想转化为桌面原生应用,保持侧边栏选择稳定,添加菜单、工具栏和键盘快捷键,并将偏好设置移至专用的偏好设置窗口,而不是主内容堆栈中。 NavigationSplitView 新的 Mac 应用构想,或需要具备持久导航、菜单、工具栏和键盘快捷键的真实桌面外壳的 iPad 优先及 Web 优先概念 Settings scene.

适用场景

  • 编辑器、资源库、管理或审查工具,其中侧边栏选择驱动详情面板,检查器显示辅助元数据或操作
  • 设置应位于专用偏好设置窗口,而不是主内容堆栈中另一个推入式屏幕的 Mac 应用
  • Build macOS Apps 插件

目录

    ← 所有用例

    构建 Mac 应用框架

    使用 Codex 构建一个 Mac 原生 SwiftUI 应用外壳,包含侧边栏、详情面板、检查器、命令和“设置”。

    使用 Codex 和 Build macOS Apps 插件,将应用构想转化为桌面原生应用,保持侧边栏选择稳定,添加菜单、工具栏和键盘快捷键,并将偏好设置移至专用的偏好设置窗口,而不是主内容堆栈中。 NavigationSplitView 新的 Mac 应用构想,或需要具备持久导航、菜单、工具栏和键盘快捷键的真实桌面外壳的 iPad 优先及 Web 优先概念 Settings scene.

    高级
    1h

    使用 Codex 和 Build macOS Apps 插件,将应用构想转化为桌面原生应用,保持侧边栏选择稳定,添加菜单、工具栏和键盘快捷键,并将偏好设置移至专用的偏好设置窗口,而不是主内容堆栈中。 NavigationSplitView 新的 Mac 应用构想,或需要具备持久导航、菜单、工具栏和键盘快捷键的真实桌面外壳的 iPad 优先及 Web 优先概念 Settings scene.

    高级
    1h

    适用场景

    • 编辑器、资源库、管理或审查工具,其中侧边栏选择驱动详情面板,检查器显示辅助元数据或操作
    • 设置应位于专用偏好设置窗口,而不是主内容堆栈中另一个推入式屏幕的 Mac 应用
    • Build macOS Apps 插件

    技能与插件

    • 使用 Build macOS Apps 插件将 [描述您的应用构想] 转化为 Mac 原生 SwiftUI 应用外壳,包含侧边栏、详情面板、检查器、命令和“设置”。约束条件:- 首先选择场景模型。主窗口首选 `WindowGroup`,并为偏好设置添加专用的 `Settings` 场景。- 围绕 `NavigationSplitView` 构建主 UI,具有显式选择状态、原生 `.sidebar` 列表、详情界面,以及用于辅助元数据或控件的 `inspector(isPresented:)` 面板。- 保持侧边栏行轻量且原生:一个图标、一行标题,最多一行简短的辅助文本。除非有强烈的业务理由,否则不要将每行都包装在大型自定义卡片中。- 通过场景级别的 `commands`、`CommandMenu`、工具栏按钮和键盘快捷键暴露重要操作。不要将关键操作的唯一路径隐藏在手勢背后。- 使用 `@SceneStorage` 管理窗口范围的 UI 状态,`@AppStorage` 管理偏好设置,并使用父级拥有的显式选择绑定来协调侧边栏/详情。- 首选系统材质、语义颜色和标准侧边栏背景。仅在需要时对详情或检查器内容卡片添加自定义样式。- 仅当 SwiftUI 无法清晰地表达某个特定的桌面行为时,才使用狭窄的 AppKit 桥接。- 创建或更新 `script/build_and_run.sh`,运行最小可行构建/运行检查,并告诉我您使用的确切命令。交付物:- 场景结构和主侧边栏/详情/检查器视图- 菜单、工具栏和键盘快捷键连接- Settings 场景和偏好设置状态模型- 您添加的任何 AppKit 桥接及其必要性- 构建/运行验证步骤以及您建议的任何桌面用户体验后续跟进
    技能 为什么使用它
    使用 macOS SwiftUI 模式、窗口管理、AppKit 互操作以及构建/运行技能,创建侧边栏-详情-检查器布局,连接菜单和设置,并在外壳优先的循环中验证应用。 使用 Build macOS Apps 插件将 [描述您的应用构想] 转化为 Mac 原生 SwiftUI 应用外壳,包含侧边栏、详情面板、检查器、命令和“设置”。约束条件:- 首先选择场景模型。主窗口首选 `WindowGroup`,并为偏好设置添加专用的 `Settings` 场景。- 围绕 `NavigationSplitView` 构建主 UI,具有显式选择状态、原生 `.sidebar` 列表、详情界面,以及用于辅助元数据或控件的 `inspector(isPresented:)` 面板。- 保持侧边栏行轻量且原生:一个图标、一行标题,最多一行简短的辅助文本。除非有强烈的业务理由,否则不要将每行都包装在大型自定义卡片中。- 通过场景级别的 `commands`、`CommandMenu`、工具栏按钮和键盘快捷键暴露重要操作。不要将关键操作的唯一路径隐藏在手勢背后。- 使用 `@SceneStorage` 管理窗口范围的 UI 状态,`@AppStorage` 管理偏好设置,并使用父级拥有的显式选择绑定来协调侧边栏/详情。- 首选系统材质、语义颜色和标准侧边栏背景。仅在需要时对详情或检查器内容卡片添加自定义样式。- 仅当 SwiftUI 无法清晰地表达某个特定的桌面行为时,才使用狭窄的 AppKit 桥接。- 创建或更新 `script/build_and_run.sh`,运行最小可行构建/运行检查,并告诉我您使用的确切命令。交付物:- 场景结构和主侧边栏/详情/检查器视图- 菜单、工具栏和键盘快捷键连接- Settings 场景和偏好设置状态模型- 您添加的任何 AppKit 桥接及其必要性- 构建/运行验证步骤以及您建议的任何桌面用户体验后续跟进

    起始提示词

    从 Mac 场景模型开始
    从 Mac 场景模型开始

    此用例旨在将应用构想转化为感觉专为桌面(而非从触控优先堆栈拉伸而来)构建的 Mac 应用外壳。要求 Codex 首先选择场景模型,然后围绕稳定的侧边栏选择、详情界面和辅助控件或元数据的检查器来设计主窗口。

    当您希望 Codex 应用该桌面结构并保持构建/运行循环外壳优先时。其 macOS SwiftUI 模式技能非常适合场景设计、侧边栏、检查器、命令、设置以及当 SwiftUI 略显不足时针对特定 Mac 行为的小型 AppKit 桥接。

    A Mac-native sidebar and detail app shell with a selected item in the sidebar and content in the detail pane

    使用 构建 macOS Apps 插件 构建侧边栏、详情面板和检查器

    当功能受益于持久导航和稳定选定项时。保持侧边栏行原生轻量,让侧边栏使用系统背景,并将自定义卡片或密集元数据保留在详情面板或检查器中。

    在适合工作流的地方,优先选择 NavigationSplitView 如果应用需要不寻常的分割尺寸调整、底层窗口协调或自定义响应者链行为,请要求 Codex 保持 SwiftUI 外壳完整,并仅为该缺陷添加最小的 AppKit 桥接。

    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)
            }
        }
      }
    }

    在桌面层中放置命令、工具栏和快捷键

    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。这通常比在主内容窗口中推入设置界面更符合 macOS 的使用习惯。

    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 with @AppStorage 中,并通过应用菜单公开入口,而不是构建另一个推入式设置屏幕。

    将 AppKit 用于狭窄的桌面缺陷

    如果功能需要打开/保存面板、第一响应者控制或自定义 NSView,将 AppKit 作为 SwiftUI 拥有的状态模型周围的少量外围层来使用,而不是用 AppKit 重写整个窗口。

    技术栈

    需求

    Split-view 应用外壳

    默认选项

    NavigationSplitView, .sidebar 列表,以及 inspector(isPresented:)

    为何需要它

    持久的侧边栏、详情面板和检查器比触控优先的推入式导航更符合常见的 Mac 应用布局。

    需求

    桌面操作和设置

    默认选项

    commands, CommandMenu、键盘快捷键,以及 Settings 场景

    为何需要它

    菜单栏操作、快捷键和专用设置窗口使该功能感觉像一个真正的 Mac 应用,而不是拉伸到桌面的 iOS 屏幕。

    需求

    状态所有权

    默认选项

    @State, @SceneStorage, @AppStorage,以及显式的选择绑定

    为何需要它

    Codex 可以使侧边栏选择、检查器可见性和用户偏好设置变得可预测,而无需反射性地添加视图模型。

    需求

    原生逃生舱

    默认选项

    AppKit 通过狭窄的 NSViewRepresentable or NSWindow 桥接

    为何需要它

    仅将 AppKit 用于 SwiftUI 无法清晰表达的平台行为,同时将 SwiftUI 保持为场景和选择状态的唯一事实来源。

    需求 默认选项 为何需要它
    Split-view 应用外壳 NavigationSplitView , .sidebar 列表,以及 inspector(isPresented:) 持久的侧边栏、详情面板和检查器比触控优先的推入式导航更符合常见的 Mac 应用布局。
    桌面操作和设置 commands , CommandMenu 、键盘快捷键,以及 Settings 场景 菜单栏操作、快捷键和专用设置窗口使该功能感觉像一个真正的 Mac 应用,而不是拉伸到桌面的 iOS 屏幕。
    状态所有权 @State , @SceneStorage , @AppStorage ,以及显式的选择绑定 Codex 可以使侧边栏选择、检查器可见性和用户偏好设置变得可预测,而无需反射性地添加视图模型。
    原生逃生舱 AppKit 通过狭窄的 NSViewRepresentable or NSWindow 桥接 仅将 AppKit 用于 SwiftUI 无法清晰表达的平台行为,同时将 SwiftUI 保持为场景和选择状态的唯一事实来源。

    相关用例