【免费下载链接】UniClipboardReal-time clipboard sync across all your devices — local-first, peer-to-peer, and end-to-end encrypted. No account. No cloud dependency. No central server.项目地址https://gitcode.com/gh_mirrors/unicl/UniClipboard点击查看免费下载UniClipboard 是一款开源的实时剪贴板同步工具主打本地优先local-first、点对点P2P传输与端到端加密无需账号、不依赖云服务或中心服务器。它的桌面端是一个很有意思的三语言协作工程Rust编写后台核心守护进程uniclipdGo/Wails负责桌面窗口、托盘与打包ReactTypeScript提供全部用户界面。本文带你快速看懂这套 UniClipboard 技术栈每种语言承担什么角色、三者如何通信协作、以及普通用户和开发者各自需要关心什么。一图看懂 UniClipboard 桌面应用的三语言分工先看一眼 UniClipboard 的桌面主界面——加密的历史记录、设备管理和设置页面全部由 React 渲染运行在 Go/Wails 提供的原生 WebView 窗口里整个仓库是一个 monorepo三种语言各占一方语言/框架所在目录负责什么Rustcrates/、apps/daemon/业务核心加密存储、P2P 同步、HTTP/WS 服务Go Wailsapps/gui-go/桌面外壳窗口、系统托盘、全局快捷键、自动更新Go纯命令行apps/cli-go/终端客户端uniclip面向脚本与服务器React TypeScriptapps/gui/共享前端源码所有页面、状态管理、API 客户端分工的关键原则写在架构文档 docs/architecture/module-boundaries.md 里业务权威永远归 RustGo 只做外壳React 只做界面。三层互不越界这也是 UniClipboard 桌面架构最值得关注的设计。Rust 核心uniclipd 守护进程是唯一的业务权威一个不依赖界面的后台程序uniclipd由 apps/daemon/ 构建它是一个与 GUI 完全解耦的 Rust 程序。剪贴板捕获、加密解密、设备配对、跨网络同步、历史数据库这些重活全部由它完成。依赖清单见 apps/daemon/Cargo.tomluc-engine同步、加密、设备信任等核心引擎以固定版本引入保证行为可复现uc-webserver基于 axum 的本地 HTTP WebSocket 服务是它与界面、CLI 的唯一通信通道uc-bootstrap把所有适配层接线成可运行引擎是架构中唯一允许同时依赖所有层的模块。这意味着即使你关掉主窗口后台同步照常进行重启界面只是重新连上而已。16 个 crate 的模块化工作区Rust 代码按职责拆分成一组 crate统一在根目录 Cargo.toml 的 workspace 中管理uc-platform剪贴板、系统钥匙串等平台适配、uc-observability日志与统计、uc-daemon-process进程管理、uc-desktop与界面框架无关的桌面宿主逻辑等。每个 crate 都明确规定可以依赖谁、禁止依赖谁从源头防止架构腐化。工程上也有讲究release 构建开启了lto thin与opt-level z压缩二进制体积dev 构建则单独为密码学和图片编码库开启了优化把一次剪贴板截图的 PNG 编码从约 3 秒压到 300 毫秒以内。Go/Wails 桌面外壳为什么是 Go 而不是 TauriUniClipboard 的桌面宿主曾经基于 TauriRust WebView后来整体迁移到了Go Wails v3退役记录见 docs/architecture/gui-go-tauri-retirement.md。目前 Go 宿主 apps/gui-go/ 是唯一的桌面外壳固定使用 Wailsv3.0.0-beta.28。外壳只做四件事按 apps/gui-go/AGENTS.md 的规则Go 层不写业务逻辑只负责窗口与托盘——创建主窗口、托盘菜单同步开关、设置、检查更新等六种语言标签、多窗口管理进程协调——发现并复用已有的uniclipd必要时拉起它GUI 退出时不停 daemon原生认证——通过本地 HTTP 交换短期会话令牌凭据不落到前端平台能力——全局快捷键唤起快捷面板、原生通知、minisign 签名校验的自动更新。与 CLI 共享同一份 Go 代码Go 侧还有一个聪明的做法路径解析、daemon 发现/进程管理、HTTP/WS 客户端等通用逻辑抽到了 packages/desktop-host-go/被 GUI 宿主和uniclip命令行共用同一实现避免两套逻辑漂移。React 前端一份源码OpenAPI 契约驱动UniClipboard 的界面源码集中在 apps/gui/src/技术栈相当现代见 apps/gui/package.jsonReact 19、Redux Toolkit 做状态管理、react-router 做路由、Tailwind CSS 做样式、Vite 8 构建并用 Vitest 做单元测试。类型安全的 API 客户端是怎么来的前端不手写任何 API 调用。Rust 端先把 daemon 的接口导出为 schema/openapi.json再执行仓库根的bun run gen:api由 apps/gui/openapi-ts.config.ts 配置的 openapi-ts 工具生成完整的 TypeScript SDK输出到src/api/generated/。也就是说Rust 改了接口前端类型跟着变接口不一致在编译期就会暴露。下面是设置页中本地加密搜索索引与存储用量的真实界面前端对这些状态的展示完全来自 daemon 下发的数据界面与平台彻底解耦前端源码里没有任何平台分支。原来调用 Tauri API 的 8 个tauri-apps/*模块在构建时被别名替换为 apps/gui-go/frontend/src/host/ 下的 Wails 适配器业务代码零改动。这正是一份 React 源码换宿主不换界面的落地方式详细说明在 apps/gui-go/README.md 的前端源码共享一节。三语言如何协作进程模型与数据流把前面三块拼起来UniClipboard 桌面端的运行模型可以概括为一条清晰的链路Rustuniclipd监听系统剪贴板把内容加密后写入本地数据库并向同空间的设备做 P2P 同步同时暴露本地 HTTP/WS 接口。Go/Wails 宿主启动或发现 daemon创建窗口把 React 应用装载进 WebView窗口关闭只是隐藏daemon 继续运行。React 应用通过生成的 SDK 读取 HTTP 快照、订阅 WebSocket 事件比如新剪贴板到达时历史列表实时刷新所有界面状态都来自 daemon 这一个权威来源。升级资料的本地迁移过程也能直观体现这一协作——进度条由 Rust 端计算并推送React 端只负责展示另外两位配角Go CLI 与 Rust 原生快捷面板uniclip 命令行Goapps/cli-go/ 是用 Go 编写的终端客户端面向 SSH 会话、脚本和无界面服务器配对、发送接收内容、管理设备成员全部通过 daemon 的 HTTP/WS 接口完成与 GUI 使用同一套路由和数据契约见 apps/cli-go/README.md。它还支持service start把 daemon 装成 Linux 的 systemd 用户服务或 macOS 的 launchd 登录项。GPUI 快捷面板Rust按快捷键呼出的快速粘贴面板 apps/quick-panel/ 是一个独立的原生应用用 Rust 的GPUI框架实现不走 WebView追求毫秒级唤起体验macOS 安装包默认随附可执行文件为uniclip-quick-panel。它的架构同样克制业务状态机放在 crates/quick-panel-core/界面只是薄壳后台数据依然来自uniclipd详见 apps/quick-panel/README.md。快速上手如何构建与开发这套 UniClipboard 桌面应用想体验或贡献仓库提供了清晰的开发入口日常开发仓库根目录执行bun wails:dev脚本 scripts/wails-dev.mjs 会依次构建 Rust daemon 与 Go 宿主并启动 Vite 开发服务器前端修改即时热更新前端测试与类型检查bun run test与bun run typecheck转发到 apps/gui/package.jsonRust 工作区根目录cargo build/cargo test覆盖全部生产 crate开发工具链已排除不干扰默认构建端到端验证apps/gui-go/e2e/ 提供了大量脚本在真实 WebView → HTTP/WS → Rust daemon 的完整链路上做断言并留存可复跑工件。小结为什么值得学这套架构UniClipboard 的 UniClipboard 技术栈不是三种语言各写各的而是用严格的模块边界把它们拧成一个整体Rust 守住数据安全与同步逻辑界面随便换都不影响核心Go/Wails 把窗口、托盘、更新这些脏活从核心里剥离且与 CLI 共享代码React 通过 OpenAPI 契约获得编译期类型安全一份源码服务整个桌面端。对想深入桌面应用架构的读者来说docs/architecture/ 目录下的 bootstrap、模块边界与 Tauri 退役等文档是理解这套设计的最佳入口。赞分享【免费下载链接】UniClipboardReal-time clipboard sync across all your devices — local-first, peer-to-peer, and end-to-end encrypted. No account. No cloud dependency. No central server.项目地址https://gitcode.com/gh_mirrors/unicl/UniClipboard点击查看免费下载相关推荐零基础入门Nrfr桌面端工具开发指南 - Go Wails React全栈实践零基础入门Nrfr桌面端工具开发指南 Go Wails React全栈实践 Nrfr是一款免Root的SIM卡国家码修改工具主要解决国际漫游时的兼容原生移动桌面应用Wails 框架深度解析使用 Go 与 Web 技术构建原生桌面应用Wails 框架深度解析使用 Go 与 Web 技术构建原生桌面应用 Wails 是一个面向 Go 开发者的开源框架它打破了Go 程序提供 Web 界面就桌面应用跨平台CLI前端Saltcorn权限管理用户角色和访问控制配置详解Saltcorn权限管理用户角色和访问控制配置详解 Saltcorn作为一款开源无代码应用构建平台提供了灵活而强大的权限管理系统帮助用户轻松配置用户角色和低代码后端前端数据库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考