发布时间:2026/8/12 20:00:46
AI多Agent协作系统实战(十五):当AI Agent说“测试通过“时,它到底做了什么?——从“感性复核“到“理性证据链“的重构》 系列第15篇 | 一个DB空壳引发的测试机制革命背景7月13号晚上用户问了我一个问题“你们的测试和复核是感性的还是理性的”这个问题让我愣住了。我们有test_steps表有record_step()函数有review.py检查DB记录——机制明明都在啊。但用户紧接着说“做了就是做了没做就是没做。”我查了一下DB——test_steps表里只有1条demo记录。所有真实的FIX/RETEST任务零记录。建了机制≠机制在运行。问题1DB空壳——表建了函数写了但没人调现象test_steps表结构完整CREATETABLEtest_steps(idINTEGERPRIMARYKEY,task_idTEXTNOTNULL,step_nameTEXTNOTNULL,step_typeTEXTNOTNULL,resultTEXTDEFAULTnot_done,evidence_typeTEXT,evidence_dataTEXT,executed_byTEXT,executed_atTEXT)record_step()函数能用task_db.record_step(task_idTEST-FIX-xxx,step_nameavatar_click_test,step_typetest,resultpass,evidence_typebrowser_console,executed_by小牛)review.py会检查defverify_db_audit(task_id):stepstask_db.get_steps_for_task(task_id)ifnotsteps:results.append(⚠️ 无DB执行记录警告)returnTrue,results# 降级为警告不阻塞复核原因三个层面全部断裂Agent不调用小牛测试时从未调用过record_step()——它不知道要调用review.py只警告无记录时输出⚠️但不阻塞复核照样通过没有强制约束没有任何机制阻止Agent跳过DB直接报完成整个机制是空壳。修复不能依赖Agent记得调用。必须让脚本自动完成。新建evidence_collector.py——自动采集证据的唯一入口importevidence_collectorasec# 开始会话自动清空旧记录ec.start_test_session(TEST-FIX-xxx,test,小牛)# 每步记录证据自动写DB 存文件ec.record_screenshot(TEST-FIX-xxx,avatar_after,/path/to/screenshot.png)ec.record_console(TEST-FIX-xxx,page_load,console_output)ec.record_api_call(TEST-FIX-xxx,user_api,url,200)ec.record_interaction(TEST-FIX-xxx,click_test,点击头像,弹出上传框,弹出上传框,True)# 结束会话ec.end_test_session(TEST-FIX-xxx,pass)review.py改为阻塞模式defverify_db_audit(task_id):stepstask_db.get_steps_for_task(task_id)ifnotsteps:returnFalse,[❌ 无DB执行记录 — 必须有证据链]# 阻塞# ... 检查完整性 证据文件ws_server.py增加强制检查# 小牛完成时先检查DB记录stepsdb.execute(SELECT COUNT(*) FROM test_steps WHERE task_id? AND step_type NOT IN (metadata,summary),(task_id,)).fetchone()[0]ifsteps0:# 无证据 → 自动标记失败不执行reviewdb.execute(UPDATE tasks SET review_statusfailed WHERE task_id?,(task_id,))return问题2RETEST无限循环——15层嵌套的任务名现象复核失败→自动重派RETEST→又失败→又重派…任务名越来越长RETEST-RETEST-RETEST-RETEST-RETEST-RETEST-RETEST-RETEST-TEST-FIX-0712-PC-AUTH-HEADERDB里堆了15个循环任务。原因dispatch_retest()没有重试次数限制defdispatch_retest(task_id,reason):retest_idfRETEST-{task_id}# 无限嵌套# ... 派发修复加最大重试3次defdispatch_retest(task_id,reason):retry_counttask_id.count(RETEST-)ifretry_count3:returnf⚠️ 已达最大重试次数(3次)跳过重派retest_idfRETEST-{task_id}# ...问题3RETEST通过后报告还是显示❌现象RETEST复核通过了reviewpassed但统筹报告还是显示结论❌ 共1个任务0个已通过1个复核失败原因三个bug叠加Bug 1review.py不处理RETEST前缀# 只处理TEST-FIX-xxx不处理RETEST-TEST-FIX-xxxiftask_id.startswith(TEST-FIX-):dev_idFIX-task_id[9:]else:dev_idNone# RETEST任务走到这里DEV任务没被同步Bug 2format_report.py偏移量错误# RETEST- 是7个字符不是8个innertid[8:]# 错得到 EST-FIX-xxxinnertid[7:]# 对得到 TEST-FIX-xxxBug 3FIX- 是5个字符不是4个# RETEST-TEST-FIX- 是16个字符不是17个dev_idFIX-tid[17:]# 错得到 FIX-714-AVATAR-xxxdev_idFIX-tid[16:]# 对得到 FIX-0714-AVATAR-xxx修复三处全部修正偏移量RETEST正确映射到FIX任务。经验总结1. 建了机制 ≠ 机制在运行test_steps表建了、record_step()写了、review.py检查了——但整个系统从头到尾没有任何Agent调用过record_step()。教训建完基础设施后必须验证Agent实际在调用函数、DB有真实数据才能说机制生效。2. 不能依赖Agent自觉evidence_collector.py需要Agent主动调用→Agent可以不调用。正确做法ws_server在关键节点强制检查DB记录无记录自动失败。不给Agent绕过的机会。3. RETEST前缀处理是容易忽略的边界caseRETEST-TEST-FIX-xxx需要剥两层前缀才能得到FIX-xxx。只剥一层会得到错误的dev_id导致DEV任务的review_status不被同步。4. 字符串偏移量要手动验证len(RETEST-) 7不是8。len(RETEST-TEST-FIX-) 16不是17。不要凭直觉写偏移量用len()验证。

相关新闻

2026/8/12 20:00:46

jmeter-梯度测试

目标4000次/s--- 一个线程一秒多少次 *倍数 4000下载jmeter插件-- 选项(最后一行)-installed plugins--custom...---应用并重启梯度压测线程组:动态变化线程数量(例如慢慢增加线程数)使用监听器中的jpgc - Active Thre…

2026/8/12 20:00:46

Linux文件系统核心原理与高效管理实战指南

1. 从“一团乱麻”到“井然有序”:为什么文件管理是Linux的基石刚接触Linux那会儿,我对着黑漆漆的命令行窗口,最头疼的就是文件管理。下载的东西不知道放哪儿,想找个配置文件得翻半天,目录结构像一团被猫玩过的毛线。这…

2026/8/12 20:00:46

小i约球诞生记05:约球小程序,个人主体还是企业主体

本文记录一个约球类小程序从 0 到 1 过程中的设计取舍。## 前言做小程序之前,很容易先纠结一个问题:个人主体够不够,还是一开始就上企业主体? 如果只是做一个工具,个人主体看起来最省事。注册快,资料少&…

2026/8/12 23:07:17

怡康医药网站建设方案:打造可信专业的线上医疗健康服务平台

咱们今天不聊那些虚头巴脑的大词,就实实在在地聊聊,作为一家扎根社区、服务百姓的医药连锁品牌,“怡康医药”在当下这个数字化浪潮里,到底该怎么把自己的网站建好。很多人一听到“网站建设”,脑子里浮现的可能就是几个好看的网页模板,点进去看看产品,再放个客服电话,完…

2026/8/12 23:07:17

EMC整改实战:导电硅胶垫如何解决电机辐射发射问题

1. 先搞清楚“一片硅胶垫”到底解决了什么EMC问题看到“测EMC测到崩溃”这个标题,很多硬件和车载电子的工程师应该会心一笑。EMC(电磁兼容)测试,尤其是车载电机的RE(辐射发射)测试,确实是研发后…

2026/8/12 23:07:17

终极指南:免费将图片转换为3D打印模型的完整方案

终极指南:免费将图片转换为3D打印模型的完整方案 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. 项目…

2026/8/12 23:07:17

如何高效管理Windows右键菜单:智能清理的完整指南

如何高效管理Windows右键菜单:智能清理的完整指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你的Windows右键菜单是否已经变成了一个拥挤的&quo…

2026/8/12 23:02:11

2026年AI学术工具测评:降AI率工具实战指南

1. 项目概述:AI工具测评的必要性与价值 在2026年的学术环境中,AI工具已成为本科生完成课业、开展研究的标配。但面对市面上数百种工具,如何选择真正高效、可靠的解决方案?这个问题困扰着90%的非技术背景学生。我作为教育科技领域的…

2026/8/12 10:37:12

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 5:35:25

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/12 9:34:08

Ubuntu 23.10中双击运行.sh文件的完整指南:从权限原理到桌面配置

1. 项目概述:从一次“双击”引发的权限探索在Ubuntu桌面环境下,我们习惯了双击运行那些带有.exe后缀的Windows程序安装包,但当你拿到一个以.sh结尾的Shell脚本文件时,满怀期待地双击它,却很可能只看到一个文本编辑器窗…

2026/8/12 9:34:08

NumPy条件索引实战:np.where与np.argwhere高效数据筛选指南

1. 从一次数据筛选的“笨办法”说起 前几天,我帮一个刚入行的数据分析师同事看代码,他正在处理一批传感器数据,需要找出所有温度超过阈值的数据点,然后进行后续分析。我一看他的实现,好家伙,一个 for 循环…

2026/8/12 9:34:08

基于Docker与Selenium Grid构建高可用浏览器自动化测试环境

1. 项目概述:为什么需要容器化的浏览器自动化?在软件开发和测试领域,浏览器自动化早已不是新鲜事。无论是日常的UI回归测试、数据抓取,还是复杂的业务流程模拟,Selenium都是我们绕不开的利器。然而,但凡在团…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

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

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

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

2026/8/11 3:05:11

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

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