Coding Agent 军备竞赛,xAI 终于下场了
过去一年半,终端 Coding Agent 的牌桌上坐着谁?OpenAI Codex CLI(10.5 万 Star)、Anthropic Claude Code(闭源但装机量最大)、Google Gemini CLI、阿里 Qwen Code、DeepSeek Reasonix……每个大厂都在抢「开发者终端里那个默认的 agent」。唯独 xAI 一直缺席——直到 7 月 14 日,xai-org/grok-build 空降 GitHub。
28 天后它拿到 24,584 Star、4,677 Fork。这不是「又一个开源 CLI agent」,它是 xAI 官方 monorepo 里整个 agent 栈的 Rust 开源版——全屏鼠标交互 TUI、headless 脚本模式、ACP 协议嵌入编辑器、内核级沙箱、会自己定目标干活的 agent runtime,一次全给了。我 8 月 11 日实测:grok 1.0.0 (3cd0d0cbce),一条 curl 命令装完,文档里写的功能基本都在。
它到底是什么:一个「Agent 的 less」
一句话:Grok Build 是 xAI(README 里自称 SpaceXAI)官方的终端 Coding Agent,最特别的地方是它把整个 TUI 做成了一个 pager——就像 man 手册的 less 一样,只不过分页的对象是 Agent 的输出流。
这个设计从代码结构上就看得出来:核心 crate 不叫 grok-cli,而叫 xai-grok-pager(pager!),旁边是 xai-grok-shell(agent runtime)、xai-grok-tools(工具实现)、xai-grok-workspace(文件系统/VCS/执行/checkpoint)。仓库本身是 xAI monorepo 的定期同步切片,根目录一个 SOURCE_REV 文件记录着对应的 monorepo commit SHA,提交历史清一色是「Synced from monorepo」——所以它每天更新,但不是社区驱动的,外部 PR 一概不收。
它能干什么:读代码、改文件、跑命令、搜网页、管长任务,这些是标配。真正拉开差距的是下面这几个设计。
三个最值得拆的设计
1. TUI 即 pager:输出流变成可折叠的条目
传统 CLI agent 是「滚动聊天窗口」,Grok Build 把每一次工具调用、每一条回复都渲染成 scrollback 里的独立条目:按方向键选中、左右键折叠展开、Enter 进全屏查看器、vim 模式用 h/l 折叠、y 复制内容、Y 复制元数据(比如刚才跑的命令)。文件编辑直接内联 diff,thinking 块可折叠,任务列表用 todo 跟踪。
还有两种渲染模式:--minimal 把完成的回复直接写进终端原生 scrollback(能用终端自己的滚动和选中),--fullscreen 回到全屏 alt-screen。这个「输出即对象」的思路,比纯文本流强在一点:长会话里你想回看「刚才那个命令到底跑了啥」,不用往上翻屏,直接定位条目。我们写过 8 月 1 日的 Codex CLI、7 月 15 日的 Kilo Code,它们的 TUI 都没有这个「条目化」设计。
2. Plan Mode:计划文件强制只读,always-approve 也拦得住
/plan 进入计划模式后,agent 只能读代码 + 写 plan.md,改任何其他文件都会被工具层直接拒绝——官方明说这在所有权限模式下都成立,包括 always-approve。计划写完后 TUI 打开审批视图:a 批准开干、s 打回重做、c 在具体行上写评论、q 放弃计划。agent 自己觉得任务有歧义时也会主动申请进 plan mode(比如「加用户认证」这种方案不唯一的任务)。
「计划阶段物理上碰不到代码」这个约束很关键——大多数 agent 的 plan 只是提示词层面的约定,模型想越界就越界,这里是工具层硬拦。比单纯写 CLAUDE.md 靠谱一个量级。
3. 内核级沙箱:Landlock / Seatbelt / bubblewrap,不是 chroot 过家家
沙箱默认关闭,开了之后用 Linux Landlock / macOS Seatbelt 这些 OS 内核原语限制 agent 进程和它 spawn 的子进程的读写与网络,内核在进程生命周期内强制生效。四个内置档位:
| Profile | 读 | 写 | 子进程网络 | 适用 |
|---|---|---|---|---|
off(默认) | 不限 | 不限 | 不限 | 裸奔 |
workspace | 全盘 | CWD + ~/.grok + /tmp | 允许 | 日常开发 |
read-only | 全盘 | ~/.grok + /tmp | Linux 上阻断 | 读代码、review |
strict | CWD + 系统路径 | CWD + ~/.grok + /tmp | Linux 上阻断 | 不可信代码 |
还能在 ~/.grok/sandbox.toml 里写自定义 profile,最有意思的是 deny 列表:deny = ["**/.env", "**/*.pem"] 这种 glob 是内核级读+写双重拒绝,文档明确说「mv secret x && cat x 的绕过路径被堵死了」——想搬走再读都不行。这套东西的认真程度,目前 CLI agent 里独一份。
无头模式:CI 里把 Agent 当函数调
grok -p "prompt" 单轮执行,四种输出格式:plain、json(text/stopReason/sessionId/requestId)、streaming-json(NDJSON 事件流)、streaming-messages-json(Anthropic Messages wire format)。还有 --json-schema 结构化输出(模型被约束输出匹配 schema 的 JSON,天然适合当工具链的一环)、--tools/--disallowed-tools 工具白名单黑名单、--max-turns 回合上限、--permission-mode。这些都是 headless 专用,TUI 里传了会被警告忽略。
另外两个狠活:/goal 自主目标模式——给个目标加 token 预算,agent 跨多轮自己干,完成声明要经过独立证据审查,复现不了就不算完成;/deep-research——后台研究任务,多个验证 shard 交叉核对每个 claim,存活下来的才渲染,有失败 shard 就标 Partial。还有 /loop 30m <prompt> 定时任务(最小间隔 60 秒,7 天自动过期)——这已经是「agent 自己上班」的形态了。
和 Claude Code / Codex CLI 比一比
| 维度 | Grok Build(24.5K Star) | OpenAI Codex CLI(10.5万 Star) | Claude Code(闭源) |
|---|---|---|---|
| 出品方 / 语言 | xAI / Rust | OpenAI / Rust | Anthropic / TypeScript |
| TUI 形态 | pager 条目化,鼠标可点,vim 模式,minimal/fullscreen 双渲染 | 经典聊天式,插件生态靠社区 | 聊天式 + 各种 UI 增强 |
| 沙箱 | Landlock/Seatbelt/bubblewrap 内核级,deny glob 防绕过 | 无内核沙箱(靠权限确认) | 有 sandbox 但力度弱一档 |
| 计划模式 | plan.md 工具层强制只读,行内评论审批 | 有 plan 但靠提示词约束 | 有 /plan,约束偏软 |
| 无头/脚本 | 4 种输出格式 + JSON Schema + 工具白名单 + max-turns | exec 模式,输出格式少 | -p 模式,格式有限 |
| 模型绑定 | grok-4.5(默认),支持自定义模型 | OpenAI 系 | Anthropic 系为主 |
| 记忆 | experimental,默认关,/dream 自动合并 | 无跨会话记忆 | CLAUDE.md + 第三方方案 |
| 编辑嵌入 | ACP 协议(agent 命令) | MCP 为主 | 官方插件体系 |
| 协议 | Apache-2.0,但外部 PR 不收 | Apache-2.0,社区活跃 | 专有 |
一句话:Codex CLI 是「官方正统」,Claude Code 是「生态之王」,Grok Build 是「工程最狠」——pager TUI、内核沙箱、工具层强制只读,这三样是冲着「把 agent 当严肃生产工具」去的,不是聊天玩具。
上手:十分钟跑起来(实测)
# 1. 安装(我在这台 Linux 上跑通了,会装到 ~/.grok/bin 并 symlink 到 ~/.local/bin)
curl -fsSL https://x.ai/cli/install.sh | bash
grok --version # → grok 1.0.0 (3cd0d0cbce)
# 2. 认证三选一
grok login # 有浏览器:跳转 grok.com 登录,凭证存 ~/.grok/auth.json
grok login --device-code # 无浏览器/CI:设备码流
export XAI_API_KEY="xai-..." # 或者直接 API key
# 3. 交互模式
grok # 全屏 TUI,Tab 切焦点,Ctrl+O 切换 always-approve
grok "修一下登录失败的测试并跑一遍" # 带初始 prompt 启动
# 4. 无头模式(CI 里用)
grok -p "Review changes for bugs" --output-format json --yolo | jq -r '.text'
# 5. 隔离工作区 + 沙箱
grok --worktree=feat "refactor module X" # 新 git worktree 里干,注意等号!
grok --sandbox read-only "分析这个代码库" # 只读模式 review
grok --sandbox strict "跑一下这个不可信脚本" # 最严格档
# 6. 会话管理
grok -c # 继续最近会话
grok --resume <session-id> # 恢复指定会话
grok export # 导出会话为 Markdown
grok doctor # 检查终端/剪贴板支持
项目管理:AGENTS.md 三档生效(全局 ~/.grok/AGENTS.md → 仓库根 → 当前目录,越深优先级越高),还兼容读 CLAUDE.md,从 Claude Code 迁过来不用改文件。会话自动存 ~/.grok/sessions/,支持 fork、rewind(undo 到任意历史点)、/compact 压缩上下文。
实际体验的几个坑
- 第一个坎永远是认证——我在这台无浏览器服务器上实测
grok -p "reply OK" --output-format json,返回的是{"type":"error","message":"Not signed in. ..."},提示走grok login --device-code或XAI_API_KEY。最坑的是:这个错误进程的 exit code 是 0!CI 里你grok -p ... | jq -r '.text'会拿到空字符串但流水线显示成功——必须检查输出里的 type 字段,别只看 exit code grok -w "prompt"会把 prompt 吞成 worktree 标签——官方文档专门加粗提醒:必须写--worktree=name(带等号),否则你这句话不会发给 agent,而是变成工作区名字。我第一次看文档都没注意到这个细节- 沙箱默认关,而且 macOS 上断网是假的——不传
--sandbox就是 off 全裸;read-only/strict的「阻断子进程网络」只在 Linux 上通过 seccomp 生效,macOS 上是 no-op;Linux 上要真正 read-deny 还得装 bubblewrap,缺了它 Grok 直接拒绝启动而不是降级 - 记忆是 experimental 且默认关闭——别指望它像 claude-mem 那样装完自动记。要
--experimental-memory或GROK_MEMORY=1或 config.toml 里[memory] enabled=true,之后/dream手动触发记忆整合 - headless 参数在 TUI 里是摆设——
--tools、--disallowed-tools、--max-turns只在无头模式生效,交互模式传了打 warning 然后忽略,容易让人以为配了白名单其实没配 - 外部 PR 别费劲提——CONTRIBUTING.md 明说不接受外部贡献(monorepo 同步制),想改功能只能 fork 自己维护
- x.ai 的站点有 Cloudflare 反爬——我 curl
x.ai/build/changelog直接被 "Blocked due to abusive traffic patterns" 拦了(commit 历史里也有 "Retry Cloudflare 52x" 的记录)。公司代理/扫描器网络环境下,文档站和更新检查都可能抽风 - plan mode 里改非 plan.md 文件会被拒——这是特性也是坑:第一次用会以为工具坏了。任何文件编辑都报错并提示「只有 plan.md 可写」,包括 always-approve 模式,习惯先写代码再说的 agent 工作流要适应一下
跟我们有关的一件事
Grok Build 跟这个工坊的读者关系挺近:它是「大厂官方 CLI agent」这条线的最新成员,我们写过的 Codex CLI(8月1日)、Qwen Code(8月4日)、oh-my-pi(8月2日)都可以直接拿来跟它做同题对比——尤其是 worktree 并行、headless CI、多 agent 编排这几个场景,它和 superset(8月8日)那套并行调度是天然搭档:superset 管多个 CLI agent 的 worktree 和终端,grok 的 --worktree= 内置隔离正好接上。
就算你不换 agent,它的三个设计也值得抄进自己的工具链:一是 pager 式输出条目化——任何长输出工具都应该可折叠可定位,而不是滚屏;二是计划文件工具层强制只读——「想清楚再动手」应该是约束不是请求;三是 deny glob 的内核级落地——敏感文件靠权限提示防不住,靠内核 deny 才防得住。
要不要我帮你把 grok-build、Codex CLI、Qwen Code 三个 CLI agent 在同一批任务上做个实测对比,看谁在真实 repo 里更靠谱?
适合谁用
- 被其他 agent「乱改文件」坑过的人——内核沙箱 + deny glob 是现有 CLI agent 里最硬的防护
- 要跑 CI/自动化的人——4 种输出格式 + JSON Schema + 工具白名单,无头模式是完整度最高的
- 喜欢「计划先行」工作流的人——工具层强制只读的 plan mode 是真的拦得住
- xAI/grok 模型的重度用户——grok-4.5 默认模型,官方亲儿子
- 终端审美洁癖患者——pager 式条目化 TUI 是目前 CLI agent 里最精致的
总结
Grok Build 一个月 2.4 万 Star 不是营销堆出来的——它是 xAI 把内部 monorepo 里的完整 agent 栈开源了:pager 式 TUI、内核级沙箱、工具层只读计划、headless 脚本化、自主目标,每一层都有真功夫。它现在还不是「生态之王」(插件/技能市场刚起步,外部贡献也不收),但论工程严谨度,它给整个 CLI agent 赛道立了新标杆——尤其沙箱和计划模式这两块,Claude Code 和 Codex 都得跟上。
唯一要掂量的是认证门槛(必须 grok.com 账号或 xAI API key)和记忆功能的 experimental 状态。但如果你想要一个「把 agent 当生产工具而不是聊天窗口」的终端体验,它值得你花十分钟装上试试。
项目地址:github.com/xai-org/grok-build(主页:x.ai/cli · 文档:docs.x.ai/build/overview)