no-mistakes e2e测试体系:recorded fixtures与fakeagent命令

发布时间:2026/8/30 13:41:58

no-mistakes e2e测试体系:recorded fixtures与fakeagent命令
no-mistakes e2e测试体系recorded fixtures与fakeagent命令【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakesno-mistakes 是一个git push 即质检的守护流水线工具把分支推送到名为no-mistakes的远端后守护进程会自动驱动 rebase、lint、test、review、CI 等步骤并调用 Claude、Codex、Grok、OpenCode、Antigravity 等 AI 代理完成代码审查与修复。为了让这套流水线本身可以被可靠地验证项目内置了一套 e2e端到端测试体系——用 fakeagent 命令 模拟真实 AI 代理用 recordfixture 录制的recorded fixtures录制固件回放真实协议报文让测试既离线、确定又能真实校验线格式。一、e2e 测试体系解决什么问题如果只用单元测试来验证流水线编排信号其实很弱真正的风险藏在真实 git 仓库 真实守护进程 真实代理 CLI 交互这条完整路径里。no-mistakes 的 e2e 测试直接运行编译出来的真实二进制对临时 git 仓库执行一次完整的用户推送分支 → 流水线跑完旅程见 internal/e2e/doc.go。但直接跑测试会撞上两堵墙要烧真金白银的 API 配额——每次调用 Claude/Codex 都是真实请求结果不确定——AI 的回复每次都不一样断言无法稳定通过。项目的答案是录制 回放开发时用recordfixture命令手工录制一次真实代理的输出测试时用fakeagent命令回放录制好的 recorded fixtures并记录每一次调用供断言。二、fakeagent 命令一个二进制冒充所有 AI 代理fakeagent 是真实 Claude、Codex、Grok、OpenCode、Antigravity CLI 的确定性替身cmd/fakeagent/main.go。它的巧妙之处在于一个二进制多副身份e2e 的测试脚手架 harness.go 把同一个 fakeagent 可执行文件软链接成claude、codex、grok、opencode、antigravity外加探测名agy等多个名字并置于 PATH 最前。fakeagent 启动时读取argv[0]的文件名决定自己是谁、该说哪种线协议。顺手堵住真实远端gh和tea也被链接成 fakeagent 的桩stub。e2e 中任何走错路的 GitHub/Gitea 调用都只会打到桩上——gh auth status直接报未认证失败即安全绝不可能意外创建真实 PR。全程留痕每一次调用都会以 JSONL 追加写入$FAKEAGENT_LOG时间、代理、参数、完整 prompt测试可以精确断言流水线到底给代理发了哪些提示词。用 Scenario YAML 驱动假代理行为fakeagent 的行为由$FAKEAGENT_SCENARIO指向的 YAML 文件决定scenario.go。每条规则是prompt 子串匹配 → 预置回复并且可以在回复前真正修改工作区文件——这就是修复轮能实际改动文件的方式actions: - match: review the diff text: found a bug structured: findings: [{message: nil dereference}] risk_level: high - match: # 兜底规则全部干净 text: no issues found不设置 Scenario 时fakeagent 返回内置的一切干净回复满足 no-mistakes 要求的所有 JSON Schema空 findings、低风险等级等。三、recordfixture 命令录制真实响应recorded fixtures 不是手写出来的而是真枪实弹录下来的。cmd/recordfixture 是一条手工操作、不进 CI 的录制命令注释里写得直白每次录制都会烧掉真实 API 配额go run ./cmd/recordfixture claude --out internal/e2e/fixtures/claude go run ./cmd/recordfixture codex --out internal/e2e/fixtures/codex go run ./cmd/recordfixture opencode --out internal/e2e/fixtures/opencode录制器自己不持有任何 Schema 知识——它只是调用真实 CLI把线协议输出原样落盘每个代理录制结构化输出和纯文本两种风味以 claude 为例见 claude.go。录完后还有一个关键收尾动作脱敏scrub.go——把录制者本机的 home 目录、临时目录、会话 UUID 等隐私信息替换成占位符保证可以安全地提交到公共仓库。最终的 fixtures 目录结构一目了然internal/e2e/fixtures代理固件文件claude / codex / antigravitystructured.jsonl、plain.jsonlopencodestructured/、plain/下的sse.txtsession.jsonmessage.json例如可以翻看 claude/structured.jsonl 里真实录制下来的流式 JSON 报文。四、回放机制让 e2e 成为真正的线格式回归检测回放逻辑在 fixture.go当FAKEAGENT_FIXTURE指向固件根目录时fakeagent 优先从代理/风味/下读取录制文件逐条回放真实的线协议报文仅在 Scenario 需要时修补个别响应字段读不到才回退到合成响应。测试脚手架在 NewHarness 中默认就设置好了FAKEAGENT_FIXTURE源码注释点明了这个设计的价值This is what makes the e2e a real wire-format check.这才是 e2e 成为真正线格式检查的关键它的意义在于如果上游代理的线格式发生了漂移重新录制一次就能产出新固件fakeagent 的回放自动跟上——不需要手工维护任何格式模拟器。测试既稳定离线、确定又不失真报文来自真实 CLI。五、如何运行 e2e 测试e2e 测试全部藏在e2e构建标签后面日常go test ./...不会跑到它们只能通过专用入口触发scripts/e2e.shmake e2e # 等价于 scripts/e2e.sh # 即 go test -tagse2e -count1 -timeout 480s ./internal/e2e/... ./internal/pipeline/steps/...每个测试用例由一套独立的 Harness 装配临时文件系统裸 origin 仓库 工作克隆、独立$NM_HOME、代理软链接目录、调用日志文件。更贴心的是守护进程也有临时所有权机制internal/e2edaemon每个用例申领一个并发槽位并把 daemon PID 登记进清单e2e.sh在退出时兜底清扫残留守护进程——即使测试进程被 SIGKILL下次跑套件时也会自动回收遗留 daemon不会污染你本机的真实服务。六、关键文件速查角色路径e2e 体系总说明internal/e2e/doc.go测试脚手架Harnessinternal/e2e/harness.gofakeagent 主入口cmd/fakeagent/main.goScenario 行为配置cmd/fakeagent/scenario.go固件回放逻辑cmd/fakeagent/fixture.go录制命令cmd/recordfixture/main.go录制脱敏cmd/recordfixture/scrub.go录制固件样本internal/e2e/fixtures/e2e 套件入口scripts/e2e.sh总结no-mistakes 的 e2e 测试体系用录制与回放优雅地解决了 AI 流水线测试的两大难题recordfixture在开发机上真实烧一次配额把各代理的线协议报文录成 recorded fixtures 并脱敏入库fakeagent则以一个二进制多链接的方式冒充所有 AI 代理乃至gh/teaCLI离线、确定、且全程留痕地回放这些报文。配合 Harness 的临时仓库与守护进程清单回收make e2e一条命令就能在干净环境里复现用户推送 → 流水线全程跑完的真实旅程——这对任何需要与真实 AI CLI 打交道的开源项目都是一套值得借鉴的确定性测试范本。【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

全栈前端的自动巡检与状态监控

全栈前端的自动巡检与状态监控

2026/8/30 13:41:58

全栈前端的自动巡检与状态监控后端健康接口返回成功,只能说明服务进程或某个依赖可响应,不能证明用户页面可用。静态资源缓存错配、脚本加载失败、前端运行时异常、登录态或关键接口错误,都可能让用户看到空页面或无法完成操作。前端巡检应覆…

智能后端实验失效后的定位证据

智能后端实验失效后的定位证据

2026/8/30 13:41:58

智能后端实验失效后的定位证据模型服务灰度出现超时或资源升高时,不能立刻把原因归为模型、数据库或事件循环。请求取消、重试、队列等待、上下文长度和下游可用性都可能产生相似信号。定位要先保留时间窗口内的 trace、指标、版本和配置,再逐层检查哪些…

MATLAB 2026最新版免费下载安装教程:许可证激活与报错排查

MATLAB 2026最新版免费下载安装教程:许可证激活与报错排查

2026/8/30 13:31:58

最近不少同学在准备课程设计、毕业设计或者科研实验时,第一件事就是安装 MATLAB。我也经常在后台收到私信问:“2026 版本在哪下载?安装包哪里有?为什么装完打开一直弹许可证错误?”说实话,这类问题并不难解…

智能体框架如何防止优化回退?AutoSaddler核心设计全解析

智能体框架如何防止优化回退?AutoSaddler核心设计全解析

2026/8/30 14:42:01

如果你正在做 Agent 应用,大概率遇到过这样一种状态:Demo 跑得不错,但没有人敢动 prompt。不是不想优化,而是每次调整都像抽卡。某次把工具调用成功率提升了 5 个点,用户意图分类却垮了;某次给 system prom…

文本框边框消失、箭头变圆点?draw.io 桌面版 Mermaid 导入异常完整排查与修复指南

文本框边框消失、箭头变圆点?draw.io 桌面版 Mermaid 导入异常完整排查与修复指南

2026/8/30 14:42:01

文本框边框消失、箭头变圆点?draw.io 桌面版 Mermaid 导入异常完整排查与修复指南 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop 先说结论:如果你在用 …

PowerShell 5个场景快速上手:排错与模块扩展

PowerShell 5个场景快速上手:排错与模块扩展

2026/8/30 14:42:01

PowerShell 5个场景快速上手:排错与模块扩展 【免费下载链接】PowerShell PowerShell for every system! 项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell PowerShell 是微软推出的跨平台命令行与脚本引擎,主打系统管理与自动化任务。本文带你从确认版本、…

CrewAI 单元测试:从第一个可运行用例到失败排查

CrewAI 单元测试:从第一个可运行用例到失败排查

2026/8/30 14:42:01

CrewAI 单元测试:从第一个可运行用例到失败排查 【免费下载链接】crewAI Framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tas…

如何让你和设计文件用同一套语言说话?开源设计工具 Penpot 完全指南

如何让你和设计文件用同一套语言说话?开源设计工具 Penpot 完全指南

2026/8/30 14:42:00

如何让你和设计文件用同一套语言说话?开源设计工具 Penpot 完全指南 【免费下载链接】penpot Penpot: The open-source design platform for Product teams that need scalable collaboration. 项目地址: https://gitcode.com/GitHub_Trending/pe/penpot Pen…

Joplin笔记应用:5平台一键同步,数据彻底握在自己手里

Joplin笔记应用:5平台一键同步,数据彻底握在自己手里

2026/8/30 14:32:00

Joplin笔记应用:5平台一键同步,数据彻底握在自己手里 【免费下载链接】joplin Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS. 项目地址: https://gitcode.com/GitHub_Trending/j…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…