← Silent Star

X-Ray · Grok Bot 0.24.0

聊天从桌面发出,Agent 在云端动手

我检查了 Grok Bot 的桌面包,沿一条用户消息追踪界面、连接服务和云端 Host 的分工。Mac App 处理身份、界面与本机接管,Host 包含 Agent loop、工具和后台任务。本文把 0.16.0 的 source map 分析与本机 0.24.0 的字符串复核分别记录,避免把两个版本当成同一份源码。

一条消息会穿过 Electron 的受限桥接层,再经 coordinator 连到用户专属 Sand Box。Host 按会话、设置、环境变量与实验配置解析模型,最后才落到内置兜底 grok-4.5。包里已有 Grok 4.6 支持,后端返回的 responseInfo.model 才能说明某一轮实际解析成了哪个模型。
本机版本
0.24.0
应用身份
com.anysphere.sand
签名
Anysphere · Apple 已公证
内置兜底请求
Grok 4.5 · high · fast · max

一条消息怎么走

从桌面消息到云端执行

图中按请求经过的组件排列。执行能否在笔记本关闭后继续,需要看云端任务与桌面连接的关系;本机命令的权限则是另一个入口。

关掉 Mac 也能继续

执行主体在云端 Host。官方 FAQ 也确认后台 turn 与 routine 不依赖笔记本保持开启。

多个 Bot 共用一台电脑

每个 Bot 有独立角色、会话和屏幕,共享文件、浏览器登录与云端凭据。

本机执行是单独能力

云端工具默认可用,本机命令另走反向通道和审批设置,默认应当逐次询问。

本机 0.24.0 补充检查

模型已经不止一个名字,先看它在链路里负责什么

0.24.0 的第一方 bundle 没有公开源码映射,这次按压缩文件中的稳定字符串和字节位置检查。下面记录模型选择相关的客户端配置,不据此确定某个账号最终调用了哪个服务端模型。

当前包的硬编码兜底仍是 grok-4.5,参数为 effort high、fast true 和 maxMode true。这只说明没有其他配置命中时客户端会请求什么,不能单凭这一行断定你账号里的每次对话都跑在 Grok 4.5。
主 Agent 兜底 Grok 4.5

显式会话模型、环境变量、实验设置与保存的默认值都排在它前面。

新模型支持 Grok 4.6

兼容分支和模型选择实验都已出现 4.6,内置兜底尚未跟着改成 4.6。

摘要任务 Gemini 2.5 Flash

摘要流程可以走独立模型,不应拿它代替主对话模型来判断一次 turn。

电脑与浏览器子 Agent Claude Opus 4.8

电脑操作的后备选择关闭 thinking、使用 low effort。浏览器分支还受功能配置控制。

% + 重置

0.24.0 的周额度界面拿到使用百分比、下次重置时间、是否仍有额度和套餐标签。

每周到底有多少 token

当前包里没有记录一个固定的每周 token 总数,也没有把周额度百分比换算成 token 的公式。

  • GetSandUsageStatusResponse 返回 usage_percent、next_reset_timestamp_utc 与额度状态,没有 raw token 字段。
  • 按量使用另记 usedCents 和 limitCents,它是金额口径。
  • 生成代码中虽有通用 GetTokenUsage RPC 定义,渲染层没有消费它,也找不到 Grok Bot 周额度的调用链。

官方 FAQ 也把这套共享周额度写成百分比。不同产品和任务消耗的计算量不同,因此不能从百分比可靠倒推一个固定 token 数。

0.24.0 的解析顺序可以概括为摘要或专用子 Agent、显式会话模型、SAND_AGENT_MODEL、实验或已保存默认值、内置 Grok 4.5 兜底。请求会带上 requestedModel,响应再给出已解析模型。包内证据位于 host-main.cjs 字节 3,729,286、5,745,415、10,944,249 与 11,698,298 附近。

源码证据层

0.16.0 source map 中的组件分工

下面的架构证据来自首次拆解的 0.16.0 安装包。它保留了 source map,因此可以回到源码文件和行号。0.24.0 的模型与额度补充来自当前已签名安装包,证据按压缩 bundle 的字节位置记录。

1界面没有直接拿到 Node

BrowserWindow 开启 contextIsolation,关闭 nodeIntegration。preload 只向页面公开 desktop 与 coordinatorPort,聊天界面通过 IPC 和 MessagePort 请求能力。

src/electron-main/main.cts 第 693 至 720 行
src/electron-preload/preload.cts 第 142 至 161 行、第 806 至 815 行

2桌面连接用户的云端 Box

BrokeredHostConnector 通过 GrokBotService.ensureSandBox 找到或创建云端电脑。返回值包含网关 URL、每 Box bearer、网络路由 token 和 VNC 地址。

src/electron-main/box/box-host-connector.ts 第 1 至 25 行、第 122 至 213 行

3网关使用 HTTP 命令与 SSE 事件

Host 网关提供 /api/<method>、/events、/health 等入口。敏感命令和事件流在配置 token 时必须携带 bearer,比较过程使用 timingSafeEqual。本机 shell 与 WebAuthn 反向通道缺少 token 会直接返回 401。

src/host/gateway-server.ts 第 216 至 227 行、第 583 至 725 行

4Host 才是 Agent 的长期大脑

SandHost.start 按依赖顺序启动插件,再装配 roster、runner、审批、MCP、持久会话和后台任务。用户发消息以后,turn-runtime 调用 runner,runner 负责模型流和工具循环。

src/host/sand-host.ts 第 140 至 270 行
src/host/extensions/transcript/turn-runtime.ts 第 394 至 512 行

5内置模型兜底是 Grok 4.5

0.16.0 包内的默认选择写成 grok-4.5、maxMode true、effort high 和 fast true。设置、环境变量、实验配置和特定子 Agent 可以改写选择。0.24.0 仍保留同一兜底,也加入了 Grok 4.6 的兼容与选择入口。

src/shared/agents/agent-model.ts 第 10 至 38 行
src/host/extensions/inference/cursor-session.ts 第 58 至 86 行、第 166 至 209 行
src/shared/node/cursor-backend/cursor-inference.ts 第 413 至 485 行

6会话和记忆拥有持久存储

每个 Agent 的数据目录下有 store.db 和对话 blob。SQLite 使用 WAL,并在快照前检查 checkpoint,避免复制一个落后的主库。根目录可以由运行环境重定位,所以桌面端与云端 Host 可以共用同一套路径规则。

src/host/extensions/session/session-paths.ts 第 10 至 51 行
src/host/storage/store-db.ts 第 47 至 109 行

可信边界

权限检查和共享资源分别在哪里

静态检查确认的保护

  • 本机 App 通过 Anysphere Developer ID 签名,Apple 公证票据有效,深度签名验证通过。
  • 渲染页默认没有 Node 能力,外部导航会被主进程拦下并交给系统浏览器。
  • 云端网关敏感面使用 bearer。涉及本机 shell 和 WebAuthn 的通道在无 token 时关闭。
  • 模型请求带 Cursor 登录凭据、机器标识、请求 ID 和隐私模式。隐私查询失败时选择禁止训练的保守值。

使用时要记住的共享面

  • 同一用户的 Bot 共用云端电脑。Bot 之间不能充当权限隔离边界。
  • Grok Bot 依赖云端数据存储,Legacy Privacy Mode 无法运行这项产品。
  • Auto Review 会辅助判断,官方仍建议给发送、发布、购买、删除和生产修改设窄而明确的人工审批。
  • 本机包声明 Apple Events、相机、麦克风和 JIT 权限。声明只证明能力存在,不能证明某次运行实际调用。

我的判断

哪些能力在云端,哪些需要本机授权

包内的连接代码和 Host 模块对应一套远程执行结构:桌面端连接 Linux Box,Host 内再组织 runner、工具、会话存储和后台任务。模型选择仍要经过会话配置和后端解析,不能只看兜底字符串。

实际使用时,我会先区分云端共享文件、浏览器登录和本机反向通道。允许某个云端任务运行,不代表也授权它操作本机;一次任务可执行,也不代表所有打包模块都已向该账号开放。

来源

本机包与公开资料互相校准

本机已安装包

/Applications/Grok Bot.app · 版本 0.24.0 · 主程序 SHA-256 c958d80cdd126cb95f1d60ef6bf451037a7569994a75a6c06b2863ae0781250a · app.asar SHA-256 41f7d5008db4edcb198d9e466c9c1e776bb8a75a7651951257ff9a4f885a4540

PR #174 的 X-Ray 工作流

本次检查使用 PR #174 head c349718d58d171c8721bbaac12b7ee0a01a51639 的静态应用分析、证据和双层解释规则。

文章目录6
Silent Star约 7 分钟