nixfred/blip · 上手攻略

  • 仓库:nixfred/blip
  • 链接:https://github.com/nixfred/blip
  • 分类:通讯工具 / macOS / iMessage
  • 作者:Jay
  • 更新:2026-09-05

这是什么

Blip 是一个在 Linux 桌面上收发 iMessage 的工具,通过让同一局域网(或 Tailscale 网络)内的 Mac 充当"网关"来实现——Mac 保持登录你的 Apple ID、运行 AppleScript 脚本处理消息,Linux 端只是一个轻薄的客户端界面(Omarchy 面板插件 + 独立 App)。

核心定位:不用 BlueBubbles 那种复杂服务端,不用 SIP 越狱,不用第三方 API,直接复用你家里那台 Mac。

⚠️ 前提条件:必须有一台 Mac(任何型号,能运行 macOS 并登录 Apple ID 且开启 SSH)充当网关。没有 Mac 就没有 Blip。


解决什么问题

iMessage 是苹果私有协议,只运行在 Apple 硬件上。Linux 用户面对 iPhone 的蓝气泡只有两个古老选项:拿起手机手动回复,或折腾 BlueBubbles / AirMessage 这类需要复杂服务端的东西。

Blip 用一种更简单的方式绕过这个限制:Mac 上运行 Messages.app、聊天记录存在 chat.db、AppleScript 可以驱动界面——Blip 把这些能力通过安全加固的 SSH 连接暴露给 Linux,Linux 端只负责渲染 UI 和发送指令。

核心痛点解决: - 不想在手机和电脑之间来回切换 - 需要在 Linux 桌面接收和发送 iMessage(尤其是工作/项目通知流) - 想要"蓝色气泡"的完整语义(已读回执、tapback、群聊命名规则等)


快速安装

环境要求

组件 要求
Linux 端 任意 Linux 发行版,已安装 Omarchy QuickShell(blip 的面板运行环境)
Mac 端 macOS(能运行 SSH,已登录 Apple ID,Messages.app 可用)
网络 Linux 与 Mac 在同一局域网,或通过 Tailscale / VPN 连通
Mac 端运行时 Bun(brew install bun,blip-setup 会提示安装)

安装步骤

# 1. 在 Linux 端安装 Omarchy QuickShell
# 参考:https://github.com/nixfred/omarchy(或各发行版的包管理器)

# 2. 在 Linux 端安装 blip
git clone https://github.com/nixfred/blip.git
cd blip
./install.sh

安装脚本会引导你: 1. 在 Mac 上创建专用 SSH 密钥(~/.ssh/blip_ed25519),并通过 blip-setup 将公钥复制到 Mac 2. 在 Mac 上配置 Automation(自动化)权限,允许 AppleScript 驱动 Messages.app 3. 在 Mac 上配置 bridge.conf(只需填写 [user@]host 即可)

⚠️ 安全注意:Mac 端的 SSH 密钥是受限的——只能运行 5 个 bridge 工具,不提供 shell 访问,不允许端口转发。这是安全审计(2026-08-31)的重要修复点,安装时请确保使用最新版本(≥ 2.3.3)。

启动 blip

# 方式一:从面板
# Omarchy 面板 → 点击 blip 图标

# 方式二:从命令行
qs ipc ... app

# 方式三:快捷键(若配置了全局快捷键)
SUPER+M(桌面环境默认快捷键)

核心用法

基本操作

操作 方法
打开 App 窗口 双击面板图标 / SUPER+M / 面板顶栏 ⇱ 按钮
打开/关闭面板 单击面板图标
刷新消息 中键点击面板
标记全部已读 右键 → mark all read
发送消息 在 App 窗口底部输入框输入,按回车
发送附件 拖拽文件到窗口 / Ctrl+V / /attach 命令
2FA 代码 自动检测并高亮显示(v2.3.3+)

命令行用法(通过 qs ipc

# 发送消息
qs ipc ... compose --text-stdin  # 从 stdin 读取消息体(安全,不走 argv)

# 搜索对话
qs ipc ... find "关键词"

# 打开指定对话
qs ipc ... goto <thread-id>

# 查看气泡列表
qs ipc ... bubbles

# 打开/关闭窗口
qs ipc ... window open|close|toggle

⚠️ 重要:v2.3.3 起,gotocomposebubblesthreadsfindnewchatwindow-gotoread 这些命令需要 bridge.conf 中设置 automation=on 才会执行(默认关闭,防止本地进程滥用)。statusopenclosetogglewindowapp 命令始终可用。

字体配置

Blip 默认使用 macOS 字体:优先 SF Pro → Inter → 当前主题字体。可以在 bridge.conf 中配置:

ui_font=theme        # 禁用自定义字体
ui_font_size=14      # 气泡文字大小(9–24 px)

典型适用场景

  1. 跨设备消息流统一管理:Linux 开发者/设计师,不想在手机和桌面之间来回切换,但需要实时接收 iPhone 上的通知(验证码、工作群消息等)

  2. Tailscale 远程 iMessage:Mac 不在本地时,通过 Tailscale VPN 连接,Linux 远程收发 iMessage

  3. AI Agent 集成:通过命令行 API(qs ipc ... compose)让 AI Agent 有能力发送和接收 iMessage

  4. 隐私敏感用户:不想用第三方云 API,完全本地控制(消息不经过任何第三方服务器)


坑与注意

⚠️ 关键限制

  • 没有 Mac 就没有 Blip:这不是 iMessage 的替代品,是 Mac 的 iMessage 能力在 Linux 上的投射
  • Mac 休眠则服务中断:Blip 会在面板上变灰并显示 slashed glyph,需要唤醒 Mac
  • Mac 端需要 Bun 运行时:不是 Python 或 Shell,macOS 默认不自带
  • 不重新实现 iMessage:协议仍是苹果私有,Blip 只是 AppleScript 的前端界面

安全边界

  • Mac 的 SSH 密钥是受限的(restrict,command="$HOME/.blip/bin/blip-dispatch"),但你日常使用的 SSH 密钥仍持有 Full Disk Access——这是 macOS 的权限模型,不是 Blip 的问题
  • v2.3.3+ 已修复:消息体通过 stdin 传输,不再出现在 argv 里(之前 osascript -e 会把消息内容放到命令行参数)
  • 2026-08-31 安全审计所有发现均已修复或记录在 docs/SECURITY.md

已知限制

  • 草稿(drafts)延迟删除($XDG_RUNTIME_DIR/blip),不在发送时立即清理
  • 缓存文件名包含 Mac 端附件的 ROWID(SQLite 行 ID),这是审计中已知的权衡
  • 群组 GUID 信任 Mac 端返回结果(由设计决定)

与同类对比

方案 Mac 依赖 SIP 越狱 服务端 消息存储
Blip ✅ 必须 ❌ 不需要 无(纯 AppleScript) Mac 本地 chat.db
BlueBubbles ✅ 必须 ❌ 不需要 ✅ 需要(自建或托管) 服务端存储
AirMessage ✅ 必须 ❌ 不需要 ✅ 需要(Android Server) 云端
Sendblue / Claw ❌ 不需要 ❌ 不需要 ✅ 第三方 API 第三方服务器

Blip 的核心优势是极简架构:不需要服务端,不需要越狱,不需要第三方云——只要一台 Mac 在家开着。


一句话推荐结论

如果你有一台 Mac 且经常在 Linux 上工作,Blip 是目前最干净、最安全、无第三方的 iMessage on Linux 方案——前提是 Mac 得一直开着。