写一个 Coding Agent Harness and TUI

51 节,从零到一。每一节都是一块积木,叠起来就是一座塔。

今年 7 月,xAI 开源了 grok-build——SpaceXAI 的终端 AI 编程代理,50 多个 crate、三万多行 Rust。

我花了一周读完所有源码。读完之后我想:能不能写一个教程,让读者不读那三万多行,也能理解一个 coding agent harness 是怎么搭起来的?

这个系列就是答案。8 篇文章,51 个小节,从一行 reqwest::Client::new() 到一个功能完备的终端 AI 编程代理。每一节的代码都是可运行的,每个设计决策都标注了 grok-build 对应的源码位置。


你会学到什么

读完这 8 篇文章,你会拥有:

文章列表

#标题内容
1从零写一个会聊天的程序200 行 Rust,从 reqwest 调 LLM API 到封装流式客户端
2给它装上手和脚:Tool 系统设计Tool trait 抽象层,ReadFile + Bash 实现,ToolRegistry 注册表
3让 Agent 学会自己用工具Turn Loop 核心循环,AgentDefinition + Builder,Token 窗口保护
4让它会写代码:文件编辑工具链search_replace 精确编辑、Grep 搜索、Glob 发现、git diff 追踪
5给它一双眼睛:TUI 终端界面ratatui + crossterm 全屏界面,流式渲染,语法高亮
6拆分前后端:Agent 通讯协议JSON-RPC 2.0 + ACP、Unix Socket Server/Client、Leader 架构
7安全不是可选项:权限、沙箱与审计三模式审批、文件/命令双重沙箱、审批回调 UI、审计日志
8从能用到好用:Skills、Subagent、MCP可复用技能系统、子任务并发、外部工具协议、跨会话记忆

怎么读

每篇文章 6-7 个知识点,每节结构统一:做什么 → 为什么这样设计 → 代码 → 验证

代码是累积的。第 1 篇的 LlamaClient 在第 3 篇成为 Turn Loop 的核心依赖,第 5 篇的 TUI 在第 6 篇通过协议层连接到 Agent 后端。

配套代码在 tutorial-code/part-01-basics/part-08-advanced/,每个目录独立 cargo run

需要什么


grok-build 源码索引

本教程内容grok-build 对应文件
LLM 客户端shell/src/sampling/
Tool traitxai-tool-runtime/src/tool.rs
ToolRegistrytools/src/bridge.rs
ToolDefinitiontools/src/types/definition.rs:9-45
AgentDefinitionagent/src/config.rs
AgentBuilderagent/src/builder.rs
系统提示词agent/src/prompt/context.rs
Turn Loopshell/src/session/acp_session_impl/turn.rs
Compactionagent/src/compaction.rs
TUIpager/src/
事件循环pager/src/app/event_loop.rs
Scrollbackpager/src/scrollback/blocks/
Leader/Clientshell/src/leader/mod.rs
权限系统workspace/src/permission/
Skillstools/src/implementations/skills/
Subagentagent/src/prompt/subagent_prompts.rs
MCPshell/src/session/mcp_servers/
Memorytools/src/types/memory_backend.rs
Hooksshell/src/session/acp_session_impl/hooks_plugins.rs