文章总结: GrokBuild是SpaceXAI推出的开源终端AI编程Agent,采用Apache2.0协议。它支持读代码、改文件、跑命令、搜索网页和管理长任务,提供全屏TUI、无头命令和ACP三种使用模式。技术亮点包括可组装的Agent定义、会话持久化、子Agent并行调查、权限判断与内核沙箱双层安全,以及Skill、MCP、插件和Hook扩展层。建议先从workspace沙箱试用中等规模仓库,再考虑接入CI或多Agent工作流。 综合评分: 85 文章分类: 安全开发
Grok Build:开源终端编程 Agent
原创
攻防路 攻防路
攻防录
2026年7月20日 06:00 北京
在小说阅读器读本章
去阅读
Grok Build 是 SpaceXAI 推出的开源终端 AI 编程 Agent,第一方代码采用 Apache 2.0 协议。它能读代码、改文件、跑命令、搜索网页和管理长任务,既可在全屏 TUI 中交互,也能进入 CI 或通过 ACP 接入编辑器。
项目地址:
https://github.com/xai-org/grok-build
官网:
https://x.ai/cli
文档:
https://docs.x.ai/build/overview
SpaceXAI
简介
Grok Build 安装后的命令是 grok。启动它,会得到一个支持鼠标和键盘的全屏终端界面。对话、思考过程、工具调用、文件 Diff、TODO 和子 Agent 状态都放在同一个滚动区域里。
这次开放的也不只是安装脚本或 SDK。公开仓库包含 grok CLI/TUI、Agent 运行时、工具系统、工作区、会话存储、上下文压缩、子 Agent、MCP、Skill、插件、Hook 和沙箱等完整代码。你可以直接阅读实现,也可以在 macOS 或 Linux 上从源码构建。
官方页面当前标注 Grok Build 由 Grok 4.5 驱动。同时,工具也允许在 ~/.grok/config.toml 里添加 OpenAI-compatible 自定义模型,不必把 Agent 外壳与单一模型配置绑死。
技术原理
同一套 Agent 运行时,三种使用入口
Grok Build 将“怎么显示”和“Agent 怎么工作”分开。交互 TUI、无头命令和 ACP 客户端最终都使用同一套 Agent 与工具能力。
| 模式 | 启动方式 | 输出形态 | 适合任务 |
| — | — | — | — |
| 交互 TUI | grok | 全屏界面、实时工具块和 Diff | 日常开发、调试、方案讨论 |
| Headless | grok -p "..." | 文本、JSON 或 NDJSON 事件流 | CI、脚本、Bot 和批处理 |
| ACP | grok agent stdio | JSON-RPC 与流式 Session Update | Zed、Neovim、Emacs 或自建客户端 |
源码中的主要边界也很清楚:
xai-grok-pager-bin
↓
xai-grok-pager 全屏 TUI、输入、滚动区、弹窗
↓
xai-grok-shell Agent 运行时、TUI / headless / ACP 入口
↓
xai-grok-agent 系统 Prompt、工具、模型、压缩策略
↓
xai-grok-tools 文件、命令、搜索、任务等工具
↓
xai-grok-workspace 文件系统、Git、执行、检查点和代码索引
TUI 部分采用类似 Elm 的 Action → Effect → State 结构。键盘、鼠标、ACP 消息和异步文件操作先被转换成 Action,再由分发层产生 Effect,避免把终端渲染和 Agent 业务逻辑混在一起。
Agent 不是一段 Prompt,而是可组装对象
xai-grok-agent 将一个 Agent 定义为系统 Prompt、工具集、权限模式、Skill、模型和上下文压缩策略的组合。用户可以用 Markdown + YAML frontmatter 定义项目或个人 Agent:
---
name: code-reviewer
description: Reviews code for quality and security
tools:
- read_file
- grep
- list_dir
permissionMode: plan
---
Review the code and report actionable findings by severity.
项目级 Agent 放在 .grok/agents/*.md,用户级 Agent 放在 ~/.grok/agents/*.md。定义文件可以限制工具、预加载 Skill、调整权限模式,也可以覆盖完整系统 Prompt。
会话持久化不只是保存聊天文本
Grok Build 会把会话自动保存到 ~/.grok/sessions/。每个 Session 包含:
updates.jsonl:ACP Session Update 事件流,是恢复对话的权威记录。chat_history.jsonl:实际发送给模型的原始消息。plan.json:TODO 与任务状态。rewind_points.jsonl:用于/rewind的文件快照。signals.json:Token、工具和 Turn 计数。compaction_checkpoints/:手动或自动上下文压缩的检查点。
JSONL 适合追加写入和流式恢复。小型状态则使用普通 JSON。本地会话搜索还会维护 SQLite FTS5 索引,用于在标题和历史 Prompt 中快速查关键词。
/rewind 会真正恢复文件快照,再截断后续对话;/compact 则在长会话里压缩早期历史,为当前任务腾出上下文。两者处理的分别是“文件改错了”和“对话太长了”。
子 Agent 有独立上下文,也能进独立 worktree
Grok Build 默认启用子 Agent。主 Agent 可以通过 spawn_subagent 把研究、实现、测试或审查分出去。每个子 Agent 有自己的上下文窗口,不需要把所有搜索过程都挤进主会话。
子 Agent 可按能力切换为 read-only、read-write、execute 或 all,也能在独立 Git worktree 中修改代码。主会话确认结果后,再通过 worktree apply 合并回主工作目录。
官网给出了一个典型任务:排查 p99 延迟回归时,同时让多个 explore 子 Agent 分别检查结账流程、基础设施、共享 Go 库、订单服务、履约任务和定价引擎。这是功能演示,不是性能 Benchmark,但很好地说明了并行调查的设计方式。
权限判断与内核沙箱是两层东西
Grok Build 默认会在执行命令或修改文件前请求批准。用户可以为 Bash、Read、Edit、Grep、MCP 和 WebFetch 设置 allow / ask / deny 规则。多个来源合并时,优先级始终是:
deny > ask > allow
这层控制“模型能不能请求这个工具”。沙箱则使用 Linux Landlock / seccomp 或 macOS Seatbelt 对整个 grok 进程及子进程做内核级限制,控制“请求已批准后,进程到底能访问什么”。
| Sandbox | 文件读取 | 文件写入 | 子进程网络 | 适合场景 |
| — | — | — | — | — |
| off | 不限 | 不限 | 允许 | 默认,无沙箱 |
| workspace | 全局可读 | CWD、~/.grok/、临时目录 | 允许 | 日常开发 |
| read-only | 全局可读 | 仅 ~/.grok/ 与临时目录 | Linux 阻断 | 代码审查 |
| strict | CWD 和必要系统路径 | CWD、~/.grok/、临时目录 | Linux 阻断 | 不信任代码 |
沙箱默认关闭,必须在新会话启动时通过 --sandbox 选择。一旦进程启动,限制不能在运行时放宽。
Skill、MCP、插件和 Hook 组成扩展层
Grok Build 支持 AGENTS.md、Skill、MCP Server、插件和 Hook。Skill 可按任务匹配自动加载,也可用斜杠命令手动调用;MCP 将 GitHub、数据库和外部服务做成工具;插件能将 Skill、Agent、Hook 和 MCP 组成一个安装包。
Hook 可以在工具调用前后执行脚本,用于审计、校验或阻止危险操作。但官方文档明确提醒:Hook 执行失败时默认 fail open,因此不应单独把 Hook 当成安全边界。
快速上手
- 安装预编译版本。
macOS、Linux、WSL 或 Git Bash:
curl -fsSL https://x.ai/cli/install.sh | bash
grok --version
Windows PowerShell:
irm https://x.ai/cli/install.ps1 | iex
grok --version
- 进入项目目录并首次登录。
cd ~/projects/my-app
grok
首次启动会打开浏览器登录。无浏览器的 CI 或远程环境可配置 XAI_API_KEY,也可使用 Device Code、OIDC 或外部认证程序。
Grok Build 全屏 TUI
- 让它先理解仓库。
Explain this repo.
@src/main.rs Walk me through this file.
@ 可引用文件、行号范围或目录。搜索默认遵循 .gitignore,并隐藏点文件。
- 启用适合日常开发的沙箱。
grok --sandbox workspace
workspace 允许读取系统上的依赖和工具,但将写入范围限制在当前目录、~/.grok/ 与临时目录。
- 在 CI 中做可解析的代码审查。
grok -p "Review changes for bugs and security issues" \
--output-format json \
--allow 'Read' \
--allow 'Grep' \
--allow 'Bash(git *)' \
--deny 'Bash(rm -rf *)'
官方文档还支持 streaming-json,可将文本、思考、工具调用和结束事件按 NDJSON 逐行输出。
如果想从源码编译,需要仓库锁定的 Rust 工具链、DotSlash 和 protoc。
cargo install dotslash
/usr/bin/env dotslash --help
cargo run -p xai-grok-pager-bin
源码编译目前明确支持 macOS 和 Linux;Windows 从这份公开源码构建尚属 best-effort。
使用场景
1. 多文件功能开发
任务示例: 读取现有登录流程,设计 JWT 轮换方案,修改中间件和刷新接口,最后运行测试。
技术要点: 复杂改动先进 Plan Mode,确认步骤后再允许编辑。使用 AGENTS.md 写入仓库级规则,避免每次重复解释。
2. 大仓库并行排查
任务示例: 遇到 p99 延迟回归,让多个 explore 子 Agent 分别检查不同服务和共享库,主 Agent 汇总根因。
技术要点: 调查类子 Agent 使用 read-only 能力模式。需要改代码时切换到独立 worktree,避免多个会话同时覆盖文件。
3. CI 自动代码审查
任务示例: 每次 PR 更新后,在流水线中读取 Diff,检查明显 Bug 和安全问题,输出 JSON 交给后续步骤。
技术要点: Headless 模式不能等待交互批准。为 CI 明确配置只读工具和窄命令白名单,不要简单开 --yolo。
4. 将 Grok Build 接进编辑器或内部工具
任务示例: 通过 grok agent stdio 将 Agent 接入 Zed、Neovim、Emacs 或自建开发者门户。
技术要点: ACP 使用 JSON-RPC 传输。客户端需要正确渲染 agent_message_chunk、agent_thought_chunk、tool_call、tool_call_update 和 plan 等 Session Update。
需要注意的点
- 公开仓库是从 SpaceXAI monorepo 定期同步的源码快照,根目录
SOURCE_REV记录对应的内部提交。这里不接受外部 PR 或未邀请补丁,“开源”不等于社区协作开发模式。 - 官方安装包支持 macOS、Linux 和 Windows;从公开树编译时,Windows 构建尚未系统测试。
- 沙箱默认关闭。
read-only和strict对子进程的网络阻断只在 Linux 上通过 seccomp 生效,macOS 上这项为 no-op。 ~/.grok/auth.json、MCP 凭据、Session JSONL 和内部日志都可能含敏感信息。在共享工作站或 CI 中要单独管理GROK_HOME和秘密注入。- 仓库和官方文档没有公布代码任务成功率、端到端耗时或对比其他 Agent 的 Benchmark。不宜用未经验证的“几倍提效”作为选型依据。
结尾
Grok Build 的完整度不只体现在会读代码和改文件。会话恢复、文件回滚、上下文压缩、子 Agent、worktree、ACP、权限规则和内核沙箱,才是它作为编程 Agent 工程底座的主要内容。
想试用时,可以先从一个中等规模、测试齐全的仓库开始。先用 workspace 沙箱跑一次代码理解和小修改,再决定是否把它接入 CI、MCP 或多 Agent 工作流。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:攻防录 攻防路 攻防路《Grok Build:开源终端编程 Agent》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论