起因:一次被迫登录
去年底的一个下午,我在调试一个网关接口,Postman 弹了个更新提示。更新完,它让我登录。我看着进度条装完的 300 多 MB 应用,突然意识到一件事:我只是想发一个 HTTP 请求,什么时候需要先登录一个账号了?
我的接口数据在它的云端,我的环境变量存在别人的服务器上(虽然加密),我的团队协作被绑定在一个 SaaS 订阅上。作为一个后端开发者,我调试的恰恰是我自己公司的内部接口------带 token 的、带签名的、不能出内网的。这些请求记录躺在别人的云上,怎么看都不舒服。
我换了 Insomnia,被 Kong 收购后也开始推云。我试了 Bruno,它的"本地文件 + git 优先"理念我很认同------但这恰恰是问题:我想让团队里不熟 git 的测试同学也能用一个普通桌面应用管理接口,而不是把 .bru 文件的合并冲突甩给他们。
于是我做了大多数开发者都会做的那个决定:自己写一个。
我想要的东西,清单很短
- 快:冷启动一秒内,点开接口立刻能发请求;
- 本地优先:数据全在本地,一个文件目录拷走就是完整备份,不需要账号;
- 轻:安装包不应该比我要调试的服务本身还大;
- 调试之外的事顺手做掉:Mock 服务、断言测试、压测------我不想为一个接口工具再装三个软件;
- 能进 CI:测试不能只活在 GUI 里,要能跑在流水线上当质量门禁。
清单很短,做完花了 8 个月。
技术选型:为什么是 Tauri 2 + Rust
选型时摆在我面前三条路:Electron(生态最熟,但一个空壳就 150MB+)、原生(SwiftUI/Kotlin,三端写三遍)、Tauri(Rust 后端 + 系统 WebView)。
Tauri 2 当时刚 stable 不久,风险是真实存在的------生态不成熟、坑要自己踩。但账算下来很清晰:
- 安装包体积 :系统 WebView 渲染前端,Rust 侧只带业务逻辑。最终 Miyo 安装包 ~10 MB,是 Postman 的 1/30;
- 内存:常驻 ~40 MB,调试工具自己不该成为内存大户;
- Rust 生态白嫖:reqwest(HTTP 客户端)、tokio-tungstenite(WS)、sqlx(SQLite)、AES-GCM(加密)------这些领域 Rust 的库质量极高;
- 命令层天然隔离:Tauri 的插件机制让"前端能调什么"变成一份显式清单,权限由 tauri-build 自动生成,还有契约测试双向校验。
最终架构是清晰的三层:Vue 3 + Pinia 前端 → Tauri 插件命令层(40+ 个 IPC 命令)→ 纯 Rust 领域层(17 个 crate,无 UI 依赖)。领域层 crate 全部可以独立测试,miyo-test 测试引擎后来直接被复用成了 CLI。
几个值得说的设计决定
全量本地 + 加密变量。数据是一个 SQLite 文件放在系统数据目录,环境变量这类敏感值在落库前用 AES-256-GCM 加密,主密钥单独存放。备份导出是明文 JSON(方便导入其他工具),恢复时全量重映射 UUID------绝不覆盖现有数据。
Mock Server 内置。调试"对方接口还没好"的场景太常见了。Miyo 内置一个 axum mock,端口自动探测,规则可以配延迟和故障注入------前端同学不用再等后端,后端同学不用再等前端。
测试要能进 CI 。GUI 里写的断言测试,通过一个备份 JSON 直接交给 miyo-cli 无头跑,输出 JUnit 报告。接口回归,流水线直接红。这是我对"API 工具"这个品类最重要的一个判断:调试工具的终点是质量门禁。
AI Agent 集成。这是做了之后发现最上瘾的功能:配置一次 MCP Server,之后在 Claude Code / Cursor 里说一句"把这个 cURL 存到 Miyo 的用户服务项目里",接口就进来了。调试工具的入口从"复制粘贴"变成了"一句话"。
也说说踩过的坑
- sqlx 的迁移文件是内容校验和不可变的,改一个注释字符,所有老库启动直接失败------我们靠一条契约测试才在发版前拦住;
- Tauri 的图标是编译期嵌进二进制的,改了图标不重编 dev 包永远是旧的;
- 前端防抖镜像和全局快捷键的组合,会静默丢掉最后 150ms 的键入------这类"两个正确设计的组合产生错误"的 bug 最难查。
这些坑全部写进了仓库的 AGENTS.md 和测试里,细节都在 GitHub 上,欢迎来翻。
现状与诚实的不足
Miyo 现在是 v0.0.45,Apache-2.0,macOS / Windows / Linux 全平台安装包 + 自动更新。459 个自动化测试,四平台 CI。
还没做的,也直说:没有云端协作和团队权限(本地 git/S3 同步先行)、gRPC 还不能在 CLI 跑、集合的定时监控在计划里。
如果你也被 300MB 的 API 客户端和强制登录困扰过,试试 Miyo:下载地址,官网有完整的中英文档。觉得不错点个 star,遇到问题提 issue------每一个都会看。
如果你对 Tauri 2 的工程实践感兴趣,下一篇会拆解"如何把一个全功能桌面应用塞进 10MB"。