Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

概述

用 Rust 构建 Coding Agent — 动手实践教程,在 mini-claw-code-starter 模板里从零搭建自己的 AI coding agent,架构参考 Claude Code

想找最初的 V1 教程?已归档至 archive/v1-book/en/(中文版见 archive/v1-book/zh/)。

你将构建什么

读完本书,你就有了一个完整的 coding agent,能做到:

  • 连接 LLM,通过兼容 OpenAI 的 HTTP provider
  • 调用工具:bash、文件读/写/编辑,统一用 Tool trait 封装
  • 自主循环SimpleAgent 驱动 provider-工具循环,直到任务完成
  • 流式推送事件,通过 channel 让 UI 实时展示进度
  • 确定性测试,用 MockProvider 返回预设响应,无需真实 API
  • 安全策略:权限引擎、安全检查、hook 三重保障
  • 加载项目说明,从 CLAUDE.md 和分层配置中读取

架构

starter 代码库采用扁平模块结构:

mini-claw-code-starter/src/
  types.rs          -- Messages, tools, ToolSet, Provider trait, TokenUsage
  agent.rs          -- SimpleAgent (the core agent loop) and AgentEvent
  mock.rs           -- MockProvider for deterministic testing
  streaming.rs      -- SSE parsing, StreamAccumulator
  instructions.rs   -- InstructionLoader (CLAUDE.md discovery)
  permissions.rs    -- PermissionEngine
  safety.rs         -- SafetyChecker, SafeToolWrapper
  hooks.rs          -- Hook trait, HookRegistry
  planning.rs       -- PlanAgent (two-phase plan/execute)
  config.rs         -- Config, ConfigLoader, CostTracker
  context.rs        -- SystemPromptBuilder
  providers/
    openrouter.rs   -- OpenRouterProvider (real HTTP backend)
  tools/            -- Tool implementations (bash, file read/write/edit)

怎么用这本书

先看第 1–3 章。 三章短小精悍,不到一小时就能从零跑起一个 agent:

  1. 第一次 LLM 调用 — 实现 MockProvidertest_mock_
  2. 第一次工具调用 — 实现 ReadTooltest_read_
  3. Agentic 循环 — 实现 single_turnSimpleAgenttest_single_turn_test_simple_agent_

之后继续第 4–18 章,深入完整架构:流式、权限、hook、计划模式、配置等。

mini-claw-code-starter crate 里的 stub 实现带有 unimplemented!() 占位和说明注释,告诉你该做什么。读完章节,填好 stub,跑测试验证。

跑测试检查进度:

# 跑某章的测试(用下表对应的测试名称)
cargo test -p mini-claw-code-starter test_mock_

# 跑所有测试
cargo test -p mini-claw-code-starter

前置条件

  • Rust(edition 2024,1.85+)
  • 了解 async Rust 基础(async/awaittokio
  • OpenRouter API key(实时 provider 章节需要)

章节路线图

入门

第 N 章主题需编辑的文件测试命令
1第一次 LLM 调用src/mock.rstest_mock_
2第一次工具调用src/tools/read.rstest_read_
3Agentic 循环src/agent.rstest_single_turn_test_simple_agent_

第一部分:核心 Agent

第 N 章主题需编辑的文件测试命令
4消息与类型src/types.rs(已预填)test_mock_
5aProvider 与流式基础src/mock.rssrc/streaming.rstest_mock_test_streaming_parse_test_streaming_accumulator_
5bOpenRouter 与 StreamingAgentsrc/providers/openrouter.rssrc/streaming.rstest_openrouter_test_streaming_stream_chat_test_streaming_streaming_agent_
6工具接口src/tools/read.rs(第 2 章已完成,重新阅读)test_read_
7Agentic 循环(深度解析)src/agent.rs(第 3 章已完成,重新阅读)test_single_turn_test_simple_agent_

第二部分:Prompt 与工具

第 N 章主题需编辑的文件测试命令
8系统 Promptsrc/instructions.rsinstructions
9文件工具src/tools/write.rssrc/tools/edit.rs(read.rs 第 2 章已完成)test_read_test_write_test_edit_
10Bash 工具src/tools/bash.rstest_bash_
11搜索工具(扩展章节,无 stub)(无测试)
12工具注册表src/types.rs(ToolSet,已预填,重新阅读)test_multi_tool_

第三部分:安全与控制

第 N 章主题需编辑的文件测试命令
13权限引擎src/permissions.rspermissions
14安全检查src/safety.rssafety
15Hooksrc/hooks.rshooks
16计划模式src/planning.rsplan

第四部分:配置

第 N 章主题需编辑的文件测试命令
17配置层级src/config.rssrc/usage.rsconfigcost_tracker
18项目说明src/instructions.rssrc/context.rsinstructionscontext_manager

附加内容(暂无章节,stub 与测试已就绪)

主题需编辑的文件测试命令
AskTool(用户输入)src/tools/ask.rsask(加 --ignored 运行)
SubagentTool(子 agent)src/subagent.rssubagent(加 --ignored 运行)
交互式 CLIexamples/chat.rscargo run --example chat(填好 stub 后运行)

开始构建。