乐于分享
好东西不私藏

从文档规则到可执行门禁:Test Agent Workflow Runner

从文档规则到可执行门禁:Test Agent Workflow Runner

系列:《让 AI Agent 真正交付测试结果》· 连载第 3 篇

上一篇我们提出了六层约束模型。但有个尴尬的问题:

你把规则写得再好,Agent 也可能跳过它。

它不是故意的。长对话压缩了早期规则,任务切换会忘记前置条件,它也可能“觉得”某步不需要就自己跳过。

所以我们需要把“应该做”升级为“必须做”。校验不通过,流程就推不动。

这就是 Test Agent Workflow Runner 的设计动机。

文档约束的四个技术瓶颈

第一,流程跳步。

Agent 从用例直接跳到下单,跳过环境确认和工具选型,最后测试结果无法证明目标功能。

第二,上下文丢失。

跨会话时,Agent 不知道上次做到哪了,容易重复执行或遗漏步骤。

第三,产物质量不可控。

标题存在但内容为空,表格全是占位符,看起来形式合格,实质上没有信息。

第四,流程灵活性不足。

有时只需要实施指南,却被迫走完整流程,效率反而降低。

Runner 三层架构

门禁校验:三层防线

当 Agent 说“这步做完了”时,Runner 不直接接受口头状态,而是执行三层校验。

第一层,依赖校验。

前置步骤必须完成。比如 execution_guide 依赖 tool_selection,那么工具选型未完成时,实施指南不能被标记完成。

第二层,存在性校验。

目标产物必须存在。没有产物文件,就不能只凭聊天里的描述推进流程。

第三层,内容校验。

标题、表格、有效数据必须合格。空标题、空内容、全占位符表格,都不能通过门禁。

目标产物模式:按需裁剪

不是每次都要走完整流程。Runner 支持四种目标模式。

execution_guide:步骤 1 到步骤 5,到实施指南为止,适用于只需要整理测试方案的场景。

execution_record:步骤 1 到步骤 6,到执行记录为止,适用于需要记录执行过程的场景。

report:步骤 1 到步骤 7,到最终报告为止,适用于需要输出正式报告的场景。

full:完整 8 步,包含反思沉淀,适用于完整测试实施闭环。

创建实例时指定 target,系统自动裁剪必经步骤。后续步骤标记为“当前目标不要求”,不阻塞当前目标完成。

状态持久化与中断恢复

所有状态写入本地 JSON 文件,不依赖 Agent 的对话记忆。

一个 run 实例至少包含:

run.json:运行标识、目标、当前步骤。

checklist.json:每步状态、完成时间、校验错误。

artifacts:每个步骤产出的文档。

中断恢复时,Agent 新会话开始后,必须先执行 status 读取运行状态,再执行 next 获取当前步骤、产物路径和校验要求。

关键约束是:禁止依赖聊天上下文推测进度,必须以持久化文件为唯一事实来源。

声明式配置:YAML 定义工作流

工作流通过 YAML 声明,不需要写代码。

配置中定义 workflow id、目标模式、步骤顺序、依赖关系、输出文件、必需标题和表格列要求。

新增步骤、修改校验规则、调整依赖关系,只需要改 YAML,无需改 Runner 代码。

与六层模型的对应关系

Runner 不是独立于方法论之外的工具,它是六层模型的技术保障层。

第 1、2 层的路由和需求,对应输入资料、测试范围等步骤,门禁重点是标题和基础内容校验。

第 3 层的实施设计,对应环境前置判断、工具选型和实施指南,门禁重点是必需标题、表格列和有效数据。

第 4 层的执行证据,对应执行记录,门禁重点是 case 状态、证据路径和执行结果。

第 5、6 层的判断和交付,对应最终报告,门禁重点是结论结构和必要章节。

第 6 层的沉淀,对应测试工程反思,门禁重点是规则缺口、流程缺口和建议沉淀项。

分层约束模型告诉 Runner 应该约束什么,Runner 告诉 Agent 必须做到什么。

幂等性:重复操作不破坏状态

Runner 的 complete 操作具备幂等性。

第一次 complete 某个步骤时,如果校验通过,步骤状态会被标记为 completed。

如果不小心重复 complete 同一个步骤,Runner 返回 already completed,不修改完成时间,不推进指针,也不影响后续步骤。

这点很重要。Agent 在长任务中可能重复执行命令,幂等性可以避免状态被误改。

设计哲学

Runner 的设计遵循几个原则。

轻量级:纯 Python CLI、YAML 配置、JSON 状态,不引入复杂依赖。

声明式:工作流通过配置定义,而不是硬编码。

可演进:方法论演进时,门禁系统可以同步演进。

不替代 Agent:Runner 不执行测试,只保证 Agent 不跳步。

本地优先:所有状态在本地,不依赖云服务。

要点总结

文档约束依赖 Agent 自觉,门禁系统把关键步骤变成强制校验。

三层校验覆盖依赖、产物存在性和内容质量,任一层失败都会阻止流程推进。

目标产物模式支持按需裁剪,不要求所有任务都走完整闭环。

状态持久化让跨会话恢复有据可依,不再依赖聊天记忆。

声明式配置让 workflow 可以随方法论演进,而不需要频繁改代码。

下篇预告

第 4 篇:实战验证——两个真实案例的完整闭环。

理论讲完了,来看真实案例。一个复杂业务功能、一个 Runner 自身测试,分别验证方法论的纠偏能力和门禁系统的技术保障能力。

本文基于真实期货交易系统测试项目实践总结。