Skip to content
finch-xuPublic

About

No Postman, Just GetCat! 用 Rust + GPUI 打造的原生跨平台 HTTP 接口调试工具

Topics

Resources

Stars

38 stars

Watchers

0 watching

Forks

Repository files navigation

简体中文 · English · 日本語
GetCat

GetCat

用 Rust + GPUI 打造的原生跨平台 HTTP 接口调试工具

No Postman, Just GetCat!

GPU 渲染 · 低资源占用 · 无需账号 · 数据全在本地 · No Electron, No Tauri, No WebView

License Rust GPUI macOS Linux Windows

DeepWiki 文档 · 官方网站

GetCat 主界面:左侧请求构造,右侧响应查看

亮点

  • 原生且轻快:GPU 渲染的原生窗口,不是 Electron / Tauri / WebView;macOS、Linux、Windows 三平台同一套界面。
  • 大响应不卡:流式接收、实时进度、随时取消;≤ 5 MB 用高亮编辑器,≤ 64 MB 按行虚拟化(照样能拖选、⌘C 复制),更大的落盘预览 + 一键保存,百 MB 响应也不会拖住界面。响应体与响应头都有一键复制。
  • 完整的请求构造:GET / POST / PUT / PATCH / DELETE / HEAD / OPTIONS;Path 参数(URL 中 {name})、Query、Headers;Body 支持 form-data(文本 / 文件字段,文件定长流式上传)、x-www-form-urlencoded、raw JSON / Text / XML、binary 整文件上传。
  • 大模型流式调试:SSE(text/event-stream)响应边收边显示,不必等流结束;自动识别 OpenAI Chat Completions / Responses 与 Anthropic Messages 的流格式,提供事件流 / 拼装文本 / 原始三种视图,附 TTFT、事件数、token 用量与生成速率统计。侧栏自带三家接口的请求模板(纯文本 / 含图片 / 流式),以及 MCP 两个协议时代的模板。
  • 命令进出自如:右侧栏可把当前请求转成 cURL / Python 示例,也能反过来粘一条 curl 命令导进来——浏览器「以 cURL 格式复制」的输出直接可用,没搬过来的选项会如实列出。
  • 变量与前后置操作:全局 / 分类 / 环境三层变量,{{var}} 与 {{$timestamp}} 替换;发送前设变量、响应后提取字段到变量与断言,不用写脚本;Postman environment 导入导出;敏感变量在界面上掩码显示。
  • 数据属于你:不存历史、不存响应、不上传任何东西。已保存请求、草稿、设置都是美化过的 JSON 文件,可手工编辑、可用 Git 管理。
  • 主题与语言跟随系统,也可固定浅色 / 深色、English / 中文 / 日本語;自绘标题栏,三平台外观一致。
  • 无障碍:所有控件都有可访问名称,屏幕阅读器可用。

安装

下载对应平台的包 GitHub Releases

平台文件下载说明
macOS(Apple Silicon)GetCat-macos-arm64.dmg全球下载 · 中国下载已签名公证,拖进「应用程序」即可
macOS(Intel)GetCat-macos-x64.dmg全球下载 · 中国下载
Linux(x64)GetCat-linux-x64.tar.gz全球下载 · 中国下载解压得到 getcat,系统要求见下
Linux(arm64)GetCat-linux-arm64.tar.gz全球下载 · 中国下载
Windows(免安装,x64) 推荐GetCat-windows-x64.exe全球下载 · 中国下载单文件,放哪都能跑,系统要求见下
Windows(免安装,arm64) 推荐GetCat-windows-arm64.exe全球下载 · 中国下载
Windows(安装版,x64)GetCat-windows-x64.msi全球下载 · 中国下载装到当前用户目录,不需要管理员;开始菜单可启动
Windows(安装版,arm64)GetCat-windows-arm64.msi全球下载 · 中国下载
兼容的 Linux 系统版本

支持 2022 年以后的主流桌面发行版:Ubuntu 22.04+、Debian 12+、Fedora 36+、Linux Mint 21+、openSUSE Leap 15.6+,以及 Arch、openSUSE Tumbleweed 等滚动发行版。这些系统的图形驱动开箱可用,不需要额外装什么。

更老的发行版跑不了:Ubuntu 20.04、Debian 11,以及 RHEL / Rocky / AlmaLinux 9 —— 下限是 glibc 2.35,它们都在这之下。

解压后直接运行 ./getcat 即可。想让它出现在应用列表(Ubuntu 的「显示应用程序」)与 Dock 里,打开 设置 → 通用 → 加入应用菜单:GetCat 会把启动项与图标写到 ~/.local/share 下,之后按 Super 键搜索 GetCat 就能启动,右键还能「添加到收藏夹」钉在 Dock 上;关掉开关即删除。Wayland 下窗口与 Dock 的图标也来自这份启动项,所以没打开开关时任务栏里显示的是通用图标。

启动项指向当前可执行文件,建议先把 getcat 放到固定位置再打开开关,例如:

tar -xzf GetCat-linux-x64.tar.gz
install -Dm755 getcat ~/.local/bin/getcat
~/.local/bin/getcat

挪动过文件的话,把开关关掉再打开一次,路径就会更新。

Linux 版本启动后黑屏,或报 Vulkan / 找不到 GPU

界面由 GPU 通过 Vulkan 渲染。桌面发行版通常自带驱动,先自检:

vulkaninfo --summary

没有输出、或提示找不到设备时,按显卡装驱动:

环境 命令
Ubuntu / Debian + Intel、AMD 显卡 sudo apt install mesa-vulkan-drivers
Fedora + Intel、AMD 显卡 sudo dnf install mesa-vulkan-drivers
Arch + Intel、AMD 显卡 sudo pacman -S vulkan-intel 或 vulkan-radeon
NVIDIA 显卡 装厂商专有驱动(如 nvidia-driver-550);开源的 nouveau 不提供 Vulkan
虚拟机 / 无独显 装 mesa-vulkan-drivers,会退到 lavapipe 软件渲染,能用但慢
兼容的 Windows 系统版本

需要 Windows 10 1803(2018 年 4 月更新)及以上,或 Windows 11。界面走 Direct3D 11 渲染,2010 年前后的显卡就够(feature level 10.1 起),不要求 DirectX 12。

两个版本都能用,推荐免安装版(ARM 设备,如骁龙笔记本,选 -arm64 后缀的包):

  • GetCat-windows-<arch>.exe(免安装,推荐):单文件,放 U 盘或任意目录直接双击,不写注册表。
  • GetCat-windows-<arch>.msi(安装版):装到 %LOCALAPPDATA%\Programs\GetCat,不需要管理员权限,开始菜单里会出现 GetCat,也能从「应用和功能」里卸载。

应用内的自动更新两者都支持:装了 MSI 的会拉新的 MSI 静默升级,免安装版直接替换 exe。

两个都还没做代码签名,首次运行 SmartScreen 会拦一下:免安装 exe 点「更多信息」→「仍要运行」;MSI 是安装包,拦得更明显一些,同样从「更多信息」进去放行。

使用

  1. 选方法、输入 URL,按 ⌘ Enter(Windows / Linux 为 Ctrl Enter)发送。
  2. 在 Params / Headers / Body 标签页填参数;URL 里的 {name} 会自动出现在 Path 参数表里。
  3. 响应区看状态 / 耗时 / 大小,Pretty / Raw 切换,⌘ F 在响应内搜索,或保存到文件。
  4. ⌘ S 保存请求到侧栏,之后点开即用。已保存请求支持单层分类:保存时选择或新建分类,侧栏按分类浏览。
操作 macOS Windows / Linux
发送 ⌘ Enter Ctrl Enter
新 Tab / 关闭 Tab ⌘ T / ⌘ W Ctrl T / Ctrl W
折叠侧栏 ⌘ B Ctrl B
保存请求 ⌘ S Ctrl S
响应内搜索 ⌘ F Ctrl F
设置 ⌘ , Ctrl ,

设置里可以调界面语言(跟随系统 / English / 中文 / 日本語)、请求超时、跳转、TLS 校验、编辑器字号,以及是否在启动时检查更新。

数据目录

平台 目录
macOS ~/Library/Application Support/GetCat/
Linux $XDG_DATA_HOME/getcat/(默认 ~/.local/share/getcat/)
Windows %APPDATA%\GetCat\data\
workspace.json          # Tab 顺序、侧栏、分栏方向、主题偏好
requests/<ulid>.json    # 一个已保存请求一个文件
drafts/<tab-id>.json    # 一个 Tab 一个草稿
settings.json           # 应用设置

写入是原子的(临时文件 → 替换),崩溃不会留下半个文件;解析失败的文件会被改名为 .corrupt-<时间> 并跳过。Header 里的 Authorization 等以明文保存(与 Postman / Insomnia 本地库一致),Unix 上文件权限 0600。

二次开发

架构

crates/
├─ getcat-core   # 无 UI 的核心:请求模型、发送(reqwest + tokio)、大响应分档与落盘、JSON 文件存储
└─ getcat-app    # GPUI 界面:Workspace / RequestTab 状态、设置对话框、应用内更新
  • UI 框架是 Zed 的 gpui + GPUI Kit(gpui-component 组件库),按 Kit 0.6 官方形态只依赖 crates.io 的 gpui-kit 一个包,由它锁定配套的 gpui 版本。
  • 网络在 tokio 运行时里跑,结果通过 channel 回到 GPUI 主线程;后台处理(美化 / 建索引)被 catch_unwind 包裹,panic 只会显示为"后台处理异常"。
  • 持久化没有数据库:getcat-core/src/store 负责读写,写入走独立线程并做 500 ms 合并。

构建与调试

  • Rust ≥ 1.97(edition 2024)。macOS 不需要额外工具链;Linux 需要 Vulkan 与 Wayland / X11 / fontconfig 头文件(清单见 .github/workflows/ci.yml);Windows 需要 MSVC 工具链,Direct3D 11 已含在 Windows SDK 里。
  • 应用 logo:crates/getcat-app/assets/logo/cat.png 是去背的原画,scripts/gen-logo.py 把它合成成三份产物 —— app 内嵌的 getcat.png、macOS 图标源 resources/macos/getcat-1024.png、Windows exe 图标 resources/windows/getcat.ico;改 logo 后手动重跑脚本并提交产物(CI 不生成,需要 pip install pillow numpy)。
  • Windows 的 exe 图标与版本信息由 crates/getcat-app/build.rs 嵌入,只在 Windows 上原生编译时生效(从 macOS 交叉编译出的 exe 没有图标)。安装包定义在 crates/getcat-app/resources/windows/GetCat.wxs,需要 WiX v6:dotnet tool install --global wix --version 6.*。
cargo run -p getcat-app                         # 运行
cargo test --workspace                          # 单元 + wiremock + gpui TestAppContext 测试
RUST_LOG=debug cargo run -p getcat-app          # 调整日志级别
cargo run -p getcat-app --features inspector    # 元素检查器:⌘⌥I / Ctrl+Shift+I 查看 id / role
GETCAT_UPDATE_CHECK=1 cargo run -p getcat-app   # 开发构建也在启动时检查更新(只检查不安装)

本地测试接口:tools/testserver/server.py 是一个零依赖(只用 Python 标准库)的小 server,专门提供难伺候的接口 —— 慢响应、超大响应体(1 / 5 / 10 / 20 / 50 MB)、chunked 滴流、大模型 SSE 流(OpenAI / Anthropic 两种事件格式,含 usage)、最小 MCP 端点、任意状态码、中途断连、超多超长响应头,用来手工验证大响应分档、流式进度与取消。启动后打开首页就是带参数说明的接口清单,每个示例都能一键复制完整 URL 粘到 GetCat。

python3 tools/testserver/server.py                             # 127.0.0.1:8765,首页即接口清单
python3 tools/testserver/server.py --port 9000 --host 0.0.0.0  # 换端口 / 让同网段设备也能访问

提交前:cargo fmt --all、cargo clippy --workspace --all-targets -- -D warnings、cargo test --workspace。CI 会在三平台跑构建与测试,并用 cargo-deny 拦截 copyleft 依赖。

许可证

Apache-2.0。第三方依赖清单见 THIRD-PARTY.md。

About

No Postman, Just GetCat! 用 Rust + GPUI 打造的原生跨平台 HTTP 接口调试工具

Topics

Resources

Stars

38 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages