博客

Linux 上的 ChatGPT 和 Claude 桌面应用

常用网站 · · 约 6 分钟

OpenAI 和 Anthropic 现在都有 Linux 桌面应用,各自只支持少数几个发行版,用其他发行版或者想多登一个账号时,可以用 Pake CLI 把 chatgpt.com 或 claude.ai 放进独立窗口,跑在系统的 WebKitGTK 上,代价是要自己构建,页面还可能被机器人验证拦住。

OpenAI 和 Anthropic 提供什么

OpenAI 的 Linux 应用页面写到,ChatGPT 桌面应用在 Linux 上处于预览阶段,用 .deb、.rpm 包安装,Arch 上用脚本安装,Linux 预览版里还没有 Computer Use。Anthropic 的安装说明把 Linux 版 Claude Desktop 标为 beta,它的 Linux 文档写的要求是 Ubuntu 22.04 及以上或 Debian 12 及以上,x86_64 或 arm64,其他基于 Debian 的发行版也许能用但没有测试过,Fedora 和 RHEL 目前不支持,Linux beta 里还没有 Computer Use 和语音输入。

官方 Linux 应用Pake 窗口
ChatGPT预览,Ubuntu 24.04 LTS 和 26.04 LTS、Debian 13、Fedora 43 和 44、Arch Linux,x64 和 ARM64WebKitGTK 里的 chatgpt.com
ClaudeBeta,Ubuntu 22.04 LTS 及以上、Debian 12 及以上,x64 和 arm64WebKitGTK 里的 claude.ai

用的是列出的发行版,就装厂商自己的应用,ChatGPT 那边还带 Codex,Claude 的付费套餐里还有 Claude Code 和 Cowork,Pake 窗口只加载网站,这些工具都没有。它适合两份列表都没覆盖的发行版,比如 openSUSE,或者想用另一个名字多登一个账号,做法见同一个网站的两个账号。Anthropic 自己的文档把非 Debian 系的用户指向它的 CLI,那是和聊天窗口不同的产品。Perplexity 的官方应用和网页窗口怎么选,见 Perplexity 桌面版。

构建之前需要什么

Linux 上打包用的是 Pake CLI,需要 Node.js 20.9 及以上、Rust 1.85 及以上,以及你所用发行版的 WebKitGTK 开发包。Ubuntu 上的清单在进阶用法里,包括 libwebkit2gtk-4.1-dev、libgtk-3-dev、libayatana-appindicator3-dev 和 libssl-dev 等,缺 Rust 的话交互式构建会问你要不要安装,其余步骤见快速上手。

用 CLI 构建

npm install -g pake-cli
pake https://chatgpt.com --name ChatGPT
pake https://claude.ai --name Claude

第一次构建要编译依赖,需要几分钟。Pake 会读 /etc/os-release,Debian 和 Ubuntu 上生成 .deb 和 AppImage,Fedora、RHEL、Rocky、AlmaLinux 和 openSUSE 上生成 .rpm 和 AppImage,也可以用 --targets 只要一种格式。

pake https://chatgpt.com --name ChatGPT --targets deb
pake https://claude.ai --name Claude --targets appimage

rpm、Arch 的 zst 以及 deb-arm64 这类 arm64 形式见命令行参数。Linux 上名字会变成小写,空格换成连字符,所以 --name ChatGPT 生成的文件名是 chatgpt。

安装生成的包

文件会出现在当前目录。.deb 像别的本地包一样安装,其他格式按 CLI 常见问题来。

sudo apt install ./chatgpt.deb
sudo dnf install ./chatgpt.rpm
chmod +x ./claude.AppImage
./claude.AppImage

常见问题里还写到,在 Arch 或 Fedora 上本地构建的 AppImage 可能因为找不到 WebKitNetworkProcess 而崩溃,Arch 上改用 --targets zst,再用 sudo pacman -U 安装。纯 Wayland 合成器下 AppImage 能打开但点击和按键没反应的话,常见问题让你先用 PAKE_LINUX_WEBKIT_SAFE_MODE=0 启动,这样启动后窗口反而一片空白的话,再换成 =1。

值得带上的选项

窗口默认是 1200 × 780,--width 和 --height 可以改。--always-on-top 让聊天压在编辑器上面,--activation-shortcut "CmdOrControl+Shift+G" 设一个全局快捷键,不传就是空的。--show-system-tray 加一个托盘图标,--hide-on-close 让关掉窗口后应用继续运行,Linux 上它默认关。--enable-find 加上 Ctrl F 页面搜索,每个应用都有 Ctrl =、Ctrl -、Ctrl 0 缩放和 Ctrl R 刷新,见快捷键。把网站放进菜单栏或托盘和让网页应用始终置顶讲的这两种行为,是按 Mac 和 Windows 应用写的,CLI 上有对应的同名选项。

测试登录、上传和语音

页面跑在 WebKitGTK 里而不是 Chrome,所以依赖它之前,先登录、发一条消息、传一个文件、试一下语音。CLI 常见问题提醒过,有些网站,ChatGPT 就是其中之一,会在页面前面放 Cloudflare 检查,WebKitGTK 经常卡在循环里,加 --user-agent 也一样。检查是在识别非标准的浏览器引擎,Pake 没有可靠的办法绕过它,窗口一直过不了检查的话,就用官方应用或浏览器。

窗口里 Google 可能拒绝登录,加 --new-window 也一样,见登录排查。--microphone 和 --camera 只在 macOS 上生效,所以语音能不能用取决于页面在 WebKitGTK 里能做什么。拖放上传需要 --enable-drag-drop,不加 --incognito 才能在退出后保持登录,退出再打开一次确认。

它在底层怎么工作

Linux 上的 Pake 应用是一个 Tauri 外壳,用系统的 WebKitGTK 画页面,所以用的引擎取决于你的发行版带的是哪个版本,而不是打包进去的 Chromium。这就是包很小的原因,也是一个很重的聊天页面在网页进程里会占几百 MB 内存的原因,常见问题说这个数字由引擎和页面决定,与 Pake 无关,不同发行版上表现不同也出于同一个原因。网站自己的更新在下次加载页面时出现。深色模式取决于你的 WebKitGTK 是否跟随窗口主题,以及网站是否支持 prefers-color-scheme,这是 --dark-mode 文档里的说法。

用新版 CLI 重新构建

网站在窗口里会自己更新,外面的 Pake 运行时不会。要换上新的运行时,先更新 pake-cli,再用同样的网址和 --name 运行同一条命令,应用就保持原来的身份。

出问题时怎么查

  • 构建卡在 AppImage 这一步,常见问题给的办法是 NO_STRIP=1、装全依赖清单,或者改成构建 deb。
  • 第一次构建好像卡住了,它在编译 Rust 依赖,要几分钟。
  • 页面一直在验证界面里循环,就是上面的 Cloudflare 情形,换官方应用或浏览器。
  • 每次启动都被登出,检查有没有设 --incognito。

常见问题

Pake 在 Linux 上有像 Mac 和 Windows 那样的应用吗?

没有,桌面应用只覆盖 Mac 和 Windows,Linux 上用 CLI 构建。

该选哪种包格式?

Debian 和 Ubuntu 用 deb,Fedora 一类用 rpm,Arch 用 zst,想要便携的就用 AppImage。

每个账号能各跑一份吗?

用不同的 --name 构建两份,Pake 会按网址和名字各派生一个标识,两份是分开安装的,先确认第二份确实处于未登录状态,再去登录。