
如何给不确定的AI写测试claude-code-from-scratch 22项功能测试与mock模型实战指南【免费下载链接】claude-code-from-scratchBuild your own Claude Code from scratch. Claude Code 开源了 50 万行代码读不动用 ~5000 行 TypeScript / Python 从零复现核心架构11 章分步教程带你理解 coding agent 精髓项目地址: https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch给 AI 写测试最大的难点在于模型输出这次是这样、下次可能那样。本文以开源项目 claude-code-from-scratch 为例——它用约 5000 行 TypeScript / Python 代码从零复现了 Claude Code 的核心架构带你完整跑一遍覆盖全部功能的 22 项功能测试并学会用一个本地 mock 模型搭出一条全程离线、可重复执行的端到端测试流水线是一份面向初学者的 coding agent 测试实战指南。为什么不确定的 AI 需要专门的测试方法普通软件的功能行为是确定的而 coding agent 的核心行为取决于 LLM 每一轮的响应模型是否选对了工具并行工具执行真的是并行的吗语义记忆召回的时机对不对Plan Mode 的审批流程是否流畅单元测试只能覆盖确定性的工具函数文件读写、权限检查但端到端的 agent 行为单靠单测兜不住。因此这个项目采用了双轨测试策略手动 22 项场景验收 本地 mock 模型的自动化集成测试两者互补而不互相替代。测试层方式覆盖什么手动场景22 项功能测试清单真实模型的判断力与交互手感自动化集成测试本地 mock 模型 真 CLI循环接线、权限、流式、MCP真模型冒烟可选连真实 API发现 mock 与真实 API 的协议漂移下面两层完全离线、不用 API key随时可跑。完整说明见官方文档docs/14-testing.md。测试环境准备两条命令完成先克隆项目并安装依赖TS 版需要构建Python 版无需构建git clone https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch.git cd claude-code-from-scratch npm install npm run build再一键配置测试环境test/setup.sh 会自动配好 MCP 服务器、skills、CLAUDE.md规则、大文件和自定义 agent测完后用 test/cleanup.sh 清理全部临时文件。 TypeScript 与 Python 两个版本功能完全一致测试时把node dist/cli.js换成python -m mini_claude即可。22 项功能测试从基础工具到自治续跑的 8 个阶段完整清单在 docs/14-testing.md按 8 个阶段组织结构如下阶段测试项覆盖功能① 基础工具1–3MCP 工具调用、WebFetch、并行工具执行② 记忆与上下文4–7语义记忆召回、include 规则、Read-before-edit、大结果持久化③ 技能与扩展8–10Skill 调用、ToolSearch 延迟加载、REPL 命令④ Agent 架构11–12Sub-agent 系统、Plan Mode 审批流⑤ 编辑与搜索13、17–18引号规范化、Grep 搜索、文件写入⑥ 会话与 CLI14–16会话恢复、one-shot 模式、预算控制⑦ 扩展系统19自定义 Agent⑧ 自治续跑20–22/goal 回灌、/loop 双节奏、Auto Mode 拦截其中两项最值得体验语义记忆召回Test 4先在一个对话里保存 3 条记忆退出后新开对话问一个语义相关的问题——模型应当想起部署地址、截止时间等细节。这一项验证了异步 prefetch 召回的完整链路也是 AI 产品记性的典型测法。Auto Mode 拦截Test 22用--auto启动先跑只读任务应直接放行再让它执行git push origin main——安全分类器应命中规则并拦截危险操作。设计细节可读 docs/15-autonomy.md。动手前还可以对照速查清单逐项打勾test/TEST-GUIDE.md。mock 模型实战给 LLM 写一份剧本自动化集成测试的关键是把不确定变成剧本。mock 模型 mock-llm.mjs 是一个本地 HTTP 服务同时实现了 OpenAI 与 Anthropic 两套接口的协议。你写一份 JSON 场景脚本它就按剧本演模型{ main: [{ tool_calls: [{ name: read_file, arguments: { file_path: README.md } }] }], evaluator: [{\ok\:true,\reason\:\done\}] }有三个细节值得留意请求分类路由主对话循环走流式请求main队列/goal 评估器、安全分类器等旁路查询走非流式请求各配独立队列、互不干扰。故障注入通过status队列可让每次主请求返回 429、500 等状态码重试逻辑由此也能被确定性验证。防假绿如果 CLI 发出了超出剧本的请求测试框架 harness.mjs 会直接报错断言还会核对回传给模型的真实工具输出和磁盘上的实际文件内容避免剧本恰好撞上正确答案的假通过。每个用例还运行在一次性沙箱里临时 HOME 临时工作目录可选 git init既不污染也不被污染真实的~/.claude跑完即清理。几个代表性测试示例tool-chain.test.mjsread → edit → read-back 多轮工具链验证编辑真的落盘goal-loop.test.mjs/goal 达成、未达成回灌、判定不可能时刹车confirm.test.mjsturn 中途权限确认框里回答 y / n 的两条路径如何跑完全部测试两条命令npm run check:full # TS/Python 单元 双后端集成测试mock离线 npm run test:live # 真模型冒烟.env 配了 key 才跑没配自动跳过check:full会把同一份场景脚本分别在 OpenAI 与 Anthropic 两个后端、TS 与 Python 两个实现上各跑一遍——全程不联网、不用 key。test:live则专抓 mock 与真实 API 之间的协议漂移一旦真模型跑挂而 mock 全绿就是该更新协议假设的信号。总结AI 项目的三层测试金字塔层位置作用单元测试src/ 与 python/mini_claude/ 配套确定性函数mock 集成测试test/integration/端到端行为离线可重复真模型冒烟npm run test:live捕捉协议漂移核心思路一句话确定性的部分用单测不确定的部分用 mock 剧本化真模型只留作最后一道关。这套三层方法不只属于这个项目——任何接入了 LLM 的应用都可以照此搭建自己的测试体系。【免费下载链接】claude-code-from-scratchBuild your own Claude Code from scratch. Claude Code 开源了 50 万行代码读不动用 ~5000 行 TypeScript / Python 从零复现核心架构11 章分步教程带你理解 coding agent 精髓项目地址: https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考