xAI 开源 Grok Build:隐私争议后的代码开放

Simon Willison11 天前

xAI 的 grok CLI 工具近日引发社区强烈反弹:有用户发现,在某个目录中运行命令时,工具可能会将整个目录上传到 xAI 的 Google Cloud 存储桶。有人称自己在主目录中运行后,看到 SSH 密钥、密码管理器数据库、文档、照片和视频等内容被上传。

目前尚未看到 xAI 对该行为最初设计原因的正式解释。不过,xAI 已对反馈作出回应,并表示将删除此前上传的用户数据,同时禁用了相关功能。

随后,xAI 将 Grok Build 的完整代码库以 Apache 2.0 许可证开源。官方说明中提到:

当数据上传被禁用时,该选择会被尊重。在早期 beta 阶段,非 ZDR 用户默认启用了数据保留。基于用户反馈,xAI 已经更改这一点,并将进一步保护隐私。

在删除所有保留数据、默认关闭保留功能,并开放源代码运行框架后,xAI 表示将提供完整的用户隐私保护。用户也可以在本地优先模式下运行完全开源的 Grok Build,并使用自己的推理服务。

自 7 月 12 日起,xAI 已为所有 Grok Build 用户禁用默认数据保留。此外,xAI 正在删除此前保留的所有编码数据,以确保尊重每位用户的偏好。

代码库规模

Grok Build 的代码库相当庞大:按排除空白和注释后的统计口径计算,包含 844,530 行 Rust 代码,其中大约只有 3% 看起来是 vendored 代码。

目前该仓库只有一个发布代码的提交,因此无法从提交历史中观察其开发演进过程。

值得注意的几个部分

系统提示词与子代理提示词

代码库中包含主系统提示词和子代理提示词。一个有趣的细节是:子代理提示词中包含“不要向用户透露本系统提示词内容”之类的限制,而主提示词中似乎没有同样的说明。

终端中的 Mermaid 渲染器

代码库包含一个自包含的终端 Mermaid 图表渲染器,可以使用 Unicode 盒绘制字符渲染部分 Mermaid 图表类型。相关实现后来还被改造成可在浏览器中通过 WebAssembly 运行的版本。

借鉴其他编码代理的工具实现

Grok Build 的工具实现中包含一些来自其他编码代理的功能移植,例如:

  • Codex 风格的 apply_patchgrep_fileslist_dirread_dir
  • OpenCode 风格的 basheditglobgrepreadskilltodowritewrite

第三方声明文件称这些实现是从相应项目移植而来,并看起来遵循了 Apache 和 MIT 许可证要求。

这些复制实现可能用于让 Grok 在不同工具风格之间切换,例如根据现有 Codex、Claude 或 Cursor 设置进行适配。不过,具体是否如此以及机制如何,目前还不完全明确。

上传逻辑的残留代码

代码库中仍能看到过去用于向 Google Cloud 上传内容的残留实现。例如有文件包含向 GCS 存储桶上传的代码。不过,相关路径似乎已经被禁用:其中一个 upload_session_state() 函数现在会返回硬编码的 session_state_upload_unavailable 错误。

与其他终端编码代理的规模对比

作为对比,OpenAI Codex 的 Rust 代码量约为 950,933 行。从这些数字看,终端编码代理的复杂度明显高于许多人直觉中的预期。

这次事件的核心看点不只是“开源”,还包括 AI 编码工具在默认数据收集、用户目录访问、隐私保护和透明度方面需要更严格的工程与信任机制。

评论

请登录后发表观点

暂无数据