跳到正文

远端探针

VibeBar Probe 是普通 Linux 服务,不是 AI agent。它只读取白名单内的本地 CLI 用量元数据,在本机维护持久化账本与 outbox,并通过 Relay 把端到端密文发给 macOS 上的 Vibe Bar Core。

被观察机器无需开放入站端口。Probe、Relay、Core、Web 和未来 iOS 是彼此独立的 角色;不同用户之间不会共享 Workspace、凭据、Cursor 或加密密钥。

系统要求

  • 带 systemd 的 64 位 x86 Linux;
  • 能以 root 安装加固服务;
  • Workspace 已经纳管一台 Vibe Bar Core;
  • 能出站 HTTPS 访问 Control 服务与所选 Relay。

当前推荐的正式二进制版本是 v0.2.1。其他 CPU 架构仍可运行经过审查的源码构建, 但目前没有官方二进制资产。

1. 下载并校验

从公开 Probe 仓库下载 Bundle 与校验文件:

sh
gh release download v0.2.1 --repo AstroQore/vibebar-probe \
  --pattern 'vibebar-probe-0.2.1-linux-x86_64.tar.gz*'
sha256sum -c vibebar-probe-0.2.1-linux-x86_64.tar.gz.sha256
tar -xzf vibebar-probe-0.2.1-linux-x86_64.tar.gz
cd vibebar-probe-0.2.1-linux-x86_64

如果服务器没有 GitHub CLI,也可以直接用 curl 下载同一组公开资产:

sh
curl -fLO https://github.com/AstroQore/vibebar-probe/releases/download/v0.2.1/vibebar-probe-0.2.1-linux-x86_64.tar.gz
curl -fLO https://github.com/AstroQore/vibebar-probe/releases/download/v0.2.1/vibebar-probe-0.2.1-linux-x86_64.tar.gz.sha256
sha256sum -c vibebar-probe-0.2.1-linux-x86_64.tar.gz.sha256
tar -xzf vibebar-probe-0.2.1-linux-x86_64.tar.gz
cd vibebar-probe-0.2.1-linux-x86_64

校验没有输出 OK 就必须停止。

2. 安装

默认服务观察 /root 下受支持的 CLI Session 目录:

sh
sudo ./install.sh

要观察其他账号,让安装器解析该账号的真实 Home:

sh
sudo ./install.sh --observe-user example

安装器把不可变二进制放在 /opt/vibebar-probe/releases/,原子切换 /opt/vibebar-probe/current,安装 systemd 单元;配置与状态独立保存在 /etc/vibebar-probe/var/lib/vibebar-probe

3. 创建一次性纳管码

在 Mac 上打开 Vibe Bar 设置 → Remote Probe Sync,确认这台 Mac 是当前活跃 Core。然后在 Web 用户中心打开 Enroll device,为同一个 Workspace 创建一次性 Probe 码。

纳管码短时有效且只能使用一次。不要把它粘贴到 Issue、聊天、Service 文件或命令行。

4. 纳管并启动

不传 --code;CLI 会安全提示输入,避免写入 Shell History:

sh
sudo /opt/vibebar-probe/current/vibebar-probe enroll \
  --control-url https://vibebar.aqor.io \
  --home-directory /root \
  --alias "My server"
sudo systemctl enable --now vibebar-probe.service

如果安装时使用了 --observe-user,这里的 --home-directory 也要换成该用户的 Home。

从三层验证:

sh
sudo systemctl status --no-pager vibebar-probe.service
sudo /opt/vibebar-probe/current/vibebar-probe status
sudo journalctl -u vibebar-probe.service -n 50 --no-pager

再打开 Vibe Bar 的 Remote Machines 页面;Sequence 应继续增长,各数据源应显示 ok 等有界状态。

更新与回滚

按上面的方式下载并校验新 Bundle,解压后执行:

sh
sudo /usr/local/sbin/vibebar-probe-update \
  --bundle "$PWD/vibebar-probe-<version>-linux-x86_64"

更新器会校验包内所有文件与版本、运行离线自检、停止活跃 Probe 服务、创建 mode 0600 状态备份、原子切换 current,并要求重启后的服务持续健康;失败时恢复之前的 软链和 systemd 单元。纳管凭据、事实与待发密文 outbox 从不放在版本目录里。

旧的 0.1.x 源码/virtualenv 安装没有内置更新器。首次升级运行一次 0.2.1 安装器即可;原有配置与状态会保留,并迁移到二进制目录布局。可识别的旧 Python systemd 覆盖会在事务内备份并移除;遇到不完整或未知覆盖时会拒绝并回滚,不会猜测。

自动无人值守下载有意保持关闭。当前 SHA-256 可以发现传输损坏,但在固定 Ed25519 发布 Manifest 完成前,不能把 GitHub 当作无人值守更新的信任根。

Live、Delayed 与 Stale

Probe 会频繁扫描;没有新用量事实时,大约每五分钟发送一次状态 Heartbeat。Core 观察到至少两个批次后会学习这台机器自己的节奏:

  • Live:仍处在预期上报窗口内;
  • Delayed:错过了一个预期上报;
  • Stale:又错过了第二个窗口。

因此健康的五分钟 Heartbeat 不会在两分钟后就被误标成 Delayed。Delayed 本身也不 表示数据丢失:Probe 有持久化 outbox,Relay 在 Core ACK 之前会保留未消费密文。

把 Probe 并入总计

远端机器默认不加入成本总计,避免升级后静默改变你已经熟悉的数字。在 Remote Machines 页面或 设置 → Remote Probe Sync → Cost aggregation 打开 Include in totals

所选机器会与这台 Mac 的本地 Core Snapshot 合并,显示在 Overview,以及 Codex、 Claude、AntiGravity、Grok 的成本/Token 页面。选择与聚合都只发生在这台 Mac。 如果某个 Probe 扫描的就是这台 Mac 已经本地扫描的同一批 CLI Log,不要勾选, 否则会重复计算。

端到端加密与 Web 新鲜度

Probe 事实只加密给 Workspace 当前活跃 Core。Relay 在自己的节点保存密文和 Cursor; 托管数据库只保存账号、Workspace、纳管、目录与审计元数据。两者都无法计算你的 用量。

目前 Web 用户中心负责元数据与设备纳管,加密的 Web/iOS 用量视图尚未发布。未来 每个浏览器/iOS 设备都有独立、经 Core 批准的收件密钥,并在本地解密 Core 发布的 View Snapshot。Core 休眠时,Web/iOS 必须把最后 Snapshot 标为 Stale,不存在托管 明文降级。需要持续新鲜视图的用户,未来可以运行自己拥有的常在线 Headless Core。

故障排查

服务读不到 Provider 数据源

用正确的 --observe-user 重新运行安装器,或检查 /etc/systemd/system/vibebar-probe.service.d/10-observed-home.conf。不要给服务 整个 Home 的读取权;保持只读挂载仅覆盖文档列出的 Session 目录。

纳管提示没有活跃 Core

先在 Mac 上打开 Vibe Bar 并完成 Core 纳管。Probe 必须从经过认证的 Control 服务 获得活跃 Core 公钥,绝不会让 Relay 选择加密收件人。

更换 Core 后停止出数

Probe 0.2.x 会自动跟随认证后的 Core 密钥轮换(通常五分钟内)。检查版本和日志:

sh
/opt/vibebar-probe/current/vibebar-probe version
journalctl -u vibebar-probe.service -n 100 --no-pager

完整安全与更新设计见公开 Probe 仓库

基于 AGPL-3.0-only 许可证发布。