< 返回版块

Linyuqiz 发表于 2026-06-23 18:30

Tags:Rust,GPUI,Paste

最近用 Rust + GPUI(Zed 那套 GPU 加速 UI 框架)写了个 macOS 原生桌面工具平台 Ramag:一个 App 把日常开发常用的小工具聚到一起,全部本地运行、数据本地加密。这次主要聊我自己天天在用的两个——数据库客户端剪贴板

一、数据库客户端:四种库,一个入口

MySQL / PostgreSQL / Redis / MongoDB 统一入口,连接表单里选 driver,多连接 Tab 并存。

  • 连接管理:密码 AES-GCM 加密落盘、主密钥进 macOS 钥匙串;连接测试;环境色标(dev / prod 一眼区分)。
  • SQL(MySQL / PostgreSQL):库表树(右键重命名 / 清空 / 删除带二次确认)、SQL 编辑器(语法高亮 + 补全 + ⌘⇧F 格式化 + ⌘⇧E EXPLAIN)、多语句执行、运行中可取消、结果集分页 / 单元格双击编辑 / 导出、DDL 查看、查询历史。
  • Redis:key 树按 : 折叠命名空间,5 万+ key 行级虚拟化不卡;String / Hash / List / Set / ZSet / Stream 全类型查看与编辑;value 支持 Raw / JSON / Hex / base64 切换并自动美化 JSON;TTL 管理、key / 前缀级删除。
  • MongoDB:database → collection 树、文档表格(嵌套字段扁平化、双击钻取嵌套数组 / 对象、编辑、导出)、find / aggregate 等原始命令执行;钻取深层时会在最左带上各级父文档 id,方便溯源。

二、剪贴板:全局热键,唤起即贴

  • 后台采集独立于窗口生死(关了主窗口照样记录);文本 / 图片(缩略图)历史全本地 AES-GCM 加密
  • 搜索、按类型筛选、来源应用黑名单、按条数 / 天数自动清理。
  • 全局热键 ⌘⇧V 从屏幕底部弹出悬浮抽屉,打字即过滤、⌘1~9 直贴第 N 张,选中即粘回原应用;历史索引化存储 + 内存窗口缓存,大量记录下唤起依旧很快。

另外还内置了一个 Git 可视化工具(diff / 提交 / 分支 / merge-rebase / blame…),暂不好用。

技术栈 / 一些实现上的点(给同好)

  • UI:GPUI(Zed 同款,GPU 加速、声明式);macOS 开 runtime shaders,免装完整 Xcode metal 工具链。
  • 架构:Clean Architecture 严格分层 + Cargo workspace 多 crate;domain 零业务依赖,加一个数据库 driver / 工具基本就是「实现一个 trait + 注册一行」。
  • 双 runtime 桥接:GPUI 内部跑 smol,而 sqlx / redis-rs / mongodb 都强依赖 tokio——用一个全局 tokio runtime + oneshot 把 future 跨 runtime 派发回来,避免在 smol 上下文直接 await tokio future 直接炸。
  • 存储:redb 做本地 KV,敏感字段 AES-GCM 加密、主密钥进系统钥匙串。

状态

个人项目,还在迭代(v0.0.1),但上面这些已经能日常用了。支持 macOS(Apple Silicon / Intel),make dmg 一条命令打包 .app / .dmg。

欢迎拍砖、提需求、点个 star 🙏


Ext Link: https://github.com/Linyuqiz/ramag

评论区

写评论

还没有评论

1 共 0 条评论, 1 页