菜单

命令系统

相关源文件

命令系统是 ChatGPT 桌面应用程序的核心架构组件,它实现了前端 (React) 和后端 (Rust) 之间的无缝通信。它为基于 Web 的 UI 提供了一种结构化的方式,通过 Tauri 的 Command API 调用原生功能,使应用程序能够执行诸如控制 Webview、管理窗口状态、处理用户输入以及更改应用程序设置等操作。

有关整体系统架构的信息,请参阅 系统架构

命令系统架构

命令系统遵循请求-响应模式,其中前端组件调用命名命令,这些命令由后端中注册的 Rust 函数处理。这种架构实现了 UI 和原生功能之间的清晰分离。

来源

命令注册

命令在 Rust 中被定义为使用 Tauri 的 #[command] 属性修饰的函数。这些命令使用 invoke_handler 方法和 tauri::generate_handler! 注册到 Tauri 应用程序构建器中。

来源

命令类别

应用程序的命令可以分为几个功能组

视图管理命令

控制 Webview 导航和状态的命令

命令目的来源
view_reload重新加载主 Webview 中的当前页面src-tauri/src/core/cmd.rs8-16
view_url获取主 Webview 的当前 URLsrc-tauri/src/core/cmd.rs18-26
view_go_forward向前导航到主 Webviewsrc-tauri/src/core/cmd.rs28-36
view_go_back向后导航到主 Webviewsrc-tauri/src/core/cmd.rs38-46

窗口管理命令

控制窗口行为的命令

命令目的来源
window_pin切换窗口的“总在最前”状态src-tauri/src/core/cmd.rs48-60
set_view_ask启用或禁用提问界面并调整视图布局src-tauri/src/core/cmd.rs105-192

通信命令

处理 UI 和 ChatGPT 之间消息交互的命令

命令目的来源
ask_sync将消息内容同步到主视图src-tauri/src/core/cmd.rs62-70
ask_send将消息提交给 ChatGPTsrc-tauri/src/core/cmd.rs72-87

配置命令

管理应用程序设置的命令

命令目的来源
get_app_conf检索当前的应用程序配置src-tauri/src/core/cmd.rs100-103
set_theme更改应用程序主题src-tauri/src/core/cmd.rs89-98

来源

命令流程

命令流程遵循一个确定的顺序,从前端调用到后端执行和响应。

示例:处理主题更改

来源

与 UI 组件集成

应用程序的 UI 组件广泛使用命令系统来与后端交互。以下是一些关键示例:

标题栏组件集成

标题栏组件使用多个命令来控制应用程序行为

来源

提问组件集成

提问组件与后端通信以同步消息内容和发送消息

来源

命令实现细节

视图管理命令

视图管理命令展示了命令系统如何与 Tauri Webview API 交互

来源

消息处理命令

消息处理命令展示了后端如何处理来自前端的用户输入

来源

命令系统能力和权限

命令系统的能力在应用程序的能力配置文件中定义,其中指定了允许的系统资源和操作。

权限类别描述示例权限
窗口窗口管理功能window:allow-create, window:allow-start-dragging
WebviewWebview 操作能力webview:allow-create-webview, webview:allow-set-webview-focus
事件事件系统交互event:allow-emit, event:allow-listen
Shell系统 Shell 访问shell:allow-open, shell:allow-execute
操作系统操作系统信息访问os:allow-platform, os:allow-version

来源

结论

命令系统是 ChatGPT 桌面应用程序中连接前端 React 界面与后端 Rust 功能的关键架构组件。它提供了一个结构良好的界面,用于执行原生操作、管理应用程序状态以及实现丰富的用户交互。

该系统围绕一组小而集中的命令进行设计,每个命令负责特定的职责,例如 Webview 导航、配置管理、窗口行为和消息处理。这种设计实现了 UI 层和原生功能层之间的关注点分离。