mcpField
T
tauri

tauri

github.com/oakoss开发21102 次安装12 周前更新
代码仓库

关于 tauri

Tauri 是用于构建桌面和移动应用的框架,面向使用 Web 技术构建界面、以 Rust 编写后端的开发者。它利用操作系统 WebView,并通过基于能力的权限系统连接前端与 Rust 命令。

主要功能

  1. 01使用 Web 技术构建应用界面
  2. 02使用 Rust 编写后端逻辑
  3. 03通过操作系统 WebView 渲染界面
  4. 04以前端 IPC 调用 Rust 命令
  5. 05按窗口配置能力与权限

适用场景

  1. 01开发跨平台桌面或移动应用
  2. 02集成托盘、通知或文件系统
  3. 03构建需要细粒度权限控制的应用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oakoss/agent-skills --skill tauri

安装后在 Claude Code 中输入/tauri确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
distribution.md
ipc-commands.md
plugin-system.md
project-setup.md
security-model.md
sidecar-protocols.md
state-management.md
system-tray.md
window-management.md

详细介绍

Tauri

概述

Tauri 是一个用于构建桌面和移动应用的框架,使用 Web 技术(HTML、CSS、JavaScript/TypeScript)构建 UI,使用 Rust 编写后端逻辑。它利用操作系统的 Webview,而不是捆绑浏览器引擎,因此生成的二进制文件体积小、速度快。IPC 层通过基于能力的权限系统,将前端连接到 Rust 命令。

适用场景: 带 Web UI 的跨平台桌面/移动应用、系统级集成(托盘、通知、文件系统)、需要较小安装包的应用,以及需要精细权限控制的安全敏感型应用。

不适用场景: 没有原生功能需求的纯 Web 应用;严重依赖 Node.js API 且没有迁移到 Rust 的路径的 Electron 应用;团队没有能力维护 Rust 代码的项目。

快速参考

模式API / 配置要点
创建项目cargo create-tauri-app 或 pnpm create tauri-app搭建 Rust 后端和前端框架
定义命令#[tauri::command] fn name() {}必须在 generate_handler! 中注册
从前端调用invoke('cmd_name', { arg: value })返回 Promise,参数使用 camelCase JSON
发送事件(前端)emit('event-name', payload)全局事件,所有监听器都会收到
监听事件listen('event-name', handler)返回取消监听函数
管理状态app.manage(MyState {}) + State<'_, MyState>无需 Arc;需要可变性时使用 Mutex
创建窗口WebviewWindowBuilder::new(app, label, url)每个窗口的标签必须唯一
系统托盘TrayIconBuilder::new().menu(&menu).build(app)需要启用 Cargo 的 tray-icon 功能
添加插件(Rust).plugin(tauri_plugin_name::init())在 Builder 调用链中注册
添加插件(前端)@tauri-apps/plugin-name每个插件对应一个 NPM 包
定义能力src-tauri/capabilities/*.json限定到特定窗口,并在构建时合并
授予权限"permissions": ["plugin:scope"]未明确授予权限时,无法访问命令
Sidecar 二进制文件tauri.conf.json bundle.externalBin名称必须与 {name}-{target_triple} 匹配
自定义协议tauri::Builder::default().register_uri_scheme_protocol拦截自定义 scheme:// URL
自动更新tauri-plugin-updater + JSON endpoint需要代码签名
应用打包/签名cargo tauri build通过环境变量进行平台专属签名

常见错误

错误正确做法
多次调用 generate_handler!将所有命令传递给同一次 generate_handler! 调用
在异步命令参数中使用 &str在异步命令中使用所有权型 String 类型
忘记为插件添加 capability在 src-tauri/capabilities/*.json 中添加权限标识符
将状态封装在 Arc 中Tauri State 会在内部处理引用计数
在 .await 位置之间使用 std::sync::Mutex对跨越多个 await 的持锁异步命令使用 tokio::sync::Mutex
sidecar 二进制文件名称错误二进制文件必须命名为 {name}-{target_triple}(例如,mybin-x86_64-pc-windows-msvc)
假设所有窗口共享 capability每个窗口/webview 都有按标签限定的 capability
使用 SystemTray(v1 API)在 v2 中使用 tauri::tray 模块中的 TrayIconBuilder
启用 updater 前未对应用签名自动更新器要求所有平台都具有有效的代码签名
使用窗口标题进行安全决策capability 使用窗口的标签,而非标题

委派

  • 命令模式探索:使用 Explore Agent
  • 安全审查:使用 Task Agent
  • 代码审查:委派给 code-reviewer Agent

如果有 rust 技能,请将 Rust 语言模式、错误处理和异步/并发任务委派给它。 如果有 react-patterns 技能,请将 React 前端模式委派给它。 如果有 svelte 技能,请将 Svelte 前端模式委派给它。 如果有 vite 技能,请将构建工具和开发服务器配置委派给它。 如果有 github-actions 技能,请将 CI/CD 流水线和发布工作流配置委派给它。

参考

评论

支持 Markdown