Copy the cache key before moving ConversationRequest fields so ChatCompletionRequest::from compiles (E0382).
newgrok
xai-org/grok-build 的非官方 fork。上游是 xAI 的终端 coding agent(全屏 TUI grok);本仓库在其上叠了一组可回放的补丁。
本仓库与 xAI 无关。编出来的二进制会标成 grok [newgrok] <version>,不会和官方发行版搞混。
改代码、跟进上游、补丁怎么排,见 CONTRIBUTING.md。
这个 fork 多了什么
/rc — 当前会话镜像到 grok-glance
/rc 把你正在用的会话经 ACP 镜像到 grok-glance 服务器。终端里的 TUI 完全不受影响:不重启、不切 headless、不把会话交出去。glance 变成同一会话的第二个视图,两端都能跟 turn 流、发 prompt、打断正在跑的 turn,以及回答权限请求、提问和 plan 批准。两边都能答;谁先答谁赢,另一边的对话框会自己关掉。
/rc 开关
/rc on 连接(start / connect)
/rc off 断开(stop / disconnect)
/rc status 看链路状态
在 ~/.grok/config.toml 里配 glance:
[remote_control]
url = "wss://glance.example.com/api/acp/agent"
api_key = "glance_sk_..."
auto_start = false # 启动就连,不用先敲 /rc
GROK_RC_URL / GROK_RC_API_KEY / GROK_RC_AUTO_START 会覆盖文件里的值。API key 更适合走环境变量,不要把 bearer token 写进明文配置。服务端用 glance apikey add <name> 签发。
链路只活在当前会话里,退出即断,什么都不落盘。glance 连不上会退避重试,/rc status 会说明原因——对端挂了、慢了或中途被杀,都不会拖垮本地会话。远端 cancel 记成 Client("glance")(和按 Esc 同一类),远端 prompt 带 clientIdentifier,会话日志里分得清是谁做的。
专用工具优先
每个主会话用户 turn 会写入一份只写一次、之后不再改的 dispatch checklist,让模型在动手前先考虑 explore / search / read / plan / deep-research,而不是自己开一轮宽搜索,或拿 bash 去 cat / grep / find / ls。checklist 按当前工具集渲染进用户消息,前缀对 prompt cache 是稳定的。
如果 bash 还是做了有专用工具的文件操作,工具结果后面会跟一条 nudge(命令已经执行过了,只提醒下次换工具)。子 agent 同样会收到这条 nudge。
两段 reminder 在送给 compaction 摘要模型之前会被剥掉,避免把 agent 内部指令写进会话摘要。
会话级 prompt_cache_key
主 turn 会显式钉上会话级的 prompt_cache_key(就是 conversation id)。Responses 路径以前靠 x_grok_conv_id 回退也能走到同一把钥匙;钉死之后,Chat Completions 的 user 字段、以及 recap / /btw 这类复用父会话前缀的旁路调用,都会共用同一个 key。
刻意不按 agent 加后缀:那样会把旁路调用设计上要蹭的前缀缓存拆开。
从源码构建
make setup # 装 Rust 1.94.0 + dotslash/protoc(幂等,可重跑)
make apply # 用 upstream.rev + patches/ 生成 work/
make build # 编出 work/target/debug/xai-grok-pager
make run # 编完直接开 TUI
make setup 会把工具链装到 ~/.cargo,脚本自己把它加进 PATH。若要在交互 shell 里直接用 cargo:fish 执行 source ~/.cargo/env.fish,bash 执行 source ~/.cargo/env。
第一次启动会打开浏览器做官方登录,见上游的 authentication guide。打好补丁之后,更完整的用户手册在 work/crates/codegen/xai-grok-pager/docs/user-guide/(/rc 写在 slash commands 那一页)。
日常开发循环、跟进上游、以及 make 全表见 CONTRIBUTING.md。
许可
上游代码为 Apache-2.0(见 work/LICENSE)。patches/ 里的改动同样按 Apache-2.0 分发。