新闻详情

新闻详情

首页 / 资讯中心 / 详情

如何给不确定的AI写测试?claude-code-from-scratch 22项功能测试与mock模型实战指南

发布时间:2026/10/2 12:26:48来源:尧图网络
如何给不确定的AI写测试?claude-code-from-scratch 22项功能测试与mock模型实战指南
如何给不确定的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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于SpringBoot的电竞赛事管理系统:从选题到答辩的完整实战指南 2026/10/2 13:05:17

基于SpringBoot的电竞赛事管理系统:从选题到答辩的完整实战指南

做毕设选题的时候,我盯着屏幕看了半小时,教务管理系统、图书管理系统、网上商城……这些题目不能说不好,但每年答辩台上全是这些东西,评委问的问题都从“你这个项目做了什么”变成“你这个项目和隔壁组的有什么区别”。后来我选定…

阅读更多 →
用Node.js+Express从零搭建AI API服务:小项目实战入门 2026/10/2 13:05:10

用Node.js+Express从零搭建AI API服务:小项目实战入门

1. 为什么我劝你用一个小项目来学 AI 后端1.1 从“只会调 API”到“能自己搭服务”的分水岭很多人接触 AI 开发的第一步,是在某个聊天窗口里粘贴一段提示词,或者用 Python 脚本调一次大模型接口,看到返回结果就觉得自己“会 AI 了”。但真到了…

阅读更多 →
用FFmpeg将OGG和WAV批量转MP3:命令、参数与音质优化指南 2026/10/2 13:05:04

用FFmpeg将OGG和WAV批量转MP3:命令、参数与音质优化指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
智能制造概论课件拆解与实训映射:从PDF到可检索知识库的实操指南 2026/10/2 13:05:04

智能制造概论课件拆解与实训映射:从PDF到可检索知识库的实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ESP32S3 Sense开发板实战:摄像头+麦克风+AI语音拍照全攻略 2026/10/2 13:05:04

ESP32S3 Sense开发板实战:摄像头+麦克风+AI语音拍照全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
CKEditor跨浏览器粘贴图片上传PHP统一格式方案 2026/10/2 13:05:04

CKEditor跨浏览器粘贴图片上传PHP统一格式方案

写这篇东西的起因,是前阵子有个朋友在群里吐槽:项目用的CKEditor,用户从截图软件、微信、word里复制图片往编辑器里一贴,结果浏览器之间表现完全不一样。Chrome里粘贴变成base64大长串,Firefox里有些图片能传有些传不上…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉