e2e-dev/decision 决策模型深度解析有界语义动作与断言完全指南【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2ee2e是新一代 AI 驱动的端到端测试框架其配套包e2e-dev/decision用决策模型返回概率分布答案的模型如 TypeSafe Jev来执行agent.act与agent.assert取代让大语言模型自由生成动作的传统做法。它的核心理念是有界语义动作与有界断言模型只能在固定的语义操作集合和元素索引里做选择每个选择附带概率断言则被约束为成立 / 不成立 / 不确定的三值判定天然可验证。为什么需要决策模型传统 LLM Agent 测试流程中模型以自由文本形式生成下一步动作这带来两个天然风险动作空间无限模型可以输出任意选择器、URL出错难以察觉结果不可验证模型觉得完成了就宣告完成缺少独立证据。决策模型把下一步做什么变成一道选择题运行时从最新的语义树构建有界动作空间模型只需从选项中挑出最佳答案并给出每个选项的概率分布。这让测试从创造性生成变成可校验的决策。维度LLM 自由生成决策模型有界动作输出形式自由文本选择器、URL、按键有界选项 概率出错检测难以察觉越界选择立即可判定成本每动作消耗大量 token每个动作一次 decide 调用视觉依赖常需截图不需要语义树即可 决策模型对自由文本零感知当选择是type时由一个小型文本模型来写字段值。这种双模型分工是它稳定的关键。有界语义动作模型能选什么执行器在每一轮从最新语义树构建有界的动作空间elements.ts模型只能从以下语义操作中选择tap激活按钮、链接、标签页或菜单项type向字段输入文本typeSecret把已声明的密钥填入字段submit用回车提交字段select从原生下拉框选择选项check切换复选框、单选框或开关scroll_up / scroll_down / back滚动视口或回退历史done / failed / blocked终局——声明完成、报告应用故障、或放弃上面的演示应用正是一个典型的决策模型操作对象NAME 输入框对应type操作GREET 按钮对应tap。在模型眼里页面不再是 HTML 堆而是一张元素表索引、角色、标签、当前值、可用操作一行一个。有界性体现在几个关键细节只命名元素索引模型只报元素编号真正的ctx.actions.tap等调用由运行时绑定执行elements.ts模型输出永远不会直接成为选择器、URL 或按键。255 个选项上限屏幕太大时视口内的元素优先入表超出的计入omitted模型仍可滚动去操作它们大页面不会卡死步骤。单目标直接派发某操作只有一个目标时不再问选哪个元素这个动作的代价就是一次 decide 调用questions.ts。无视觉截图从不到达模型纯 canvas、图片化的控件不在 v1 支持范围。文本怎么写入双模型协作决策模型回答往哪里写、做什么文本模型回答写什么。当决策模型选中type执行器把目标、字段标签、页面文本和最近动作交给文本模型取回要输入的精确字符串text.ts。三条原则保证安全绝不编造个人数据目标中没有给出该字段的值时返回null什么都不输入模型随后自行选择其他动作密码永不外传密码字段从不到达文本模型只有typeSecret会填充密钥保持为声明的句柄真实值只在运行时注入文本模型兼任判断层它被暴露为执行器的model因此waitFor与extract也复用它。每个动作发给决策模型的请求体在 questions.ts 中组装共享状态目标、非密钥参数、元素表、最近 10 个动作 操作问题 每个多目标操作的目标问题 存在多个密钥时的密钥问题。真正的模型调用、概率解析与步骤预算记账集中在 decide.ts整个步骤主循环见 executor.ts。有界断言三值判定 独立核查agent.assert中的决策模型不是自由评判者而是三值判定判定含义结果holds当前屏幕有可见证据证明目标成立断言通过fails当前屏幕有可见反证断言失败ASSERTION_FAILEDinconclusive证据不足以判断按失败处理绝不通融两道保险避免假通过只看当前屏幕断言规则明确要求模型仅凭可见证据作答证据不足永远不会变成通过questions.ts。done/failed 声明要过独立核查当决策模型声称完成了运行时会取一张全新屏幕独立追问这个任务完成了吗核查能看到已执行的动作和当前屏幕但看不到模型自己的推理声明被拒两次即结束步骤。此外还有minProbability与minConfidence两道置信门禁默认关闭types.ts开启后弱动作、弱完成判定、弱断言都会被拦下按不确定处理方便用成本换稳定性。快速上手三步配置决策模型第一步安装需要ai≥ 7.0.128pnpm add -d e2e-dev/decision ai-sdk/typesafe-ai openrouter/ai-sdk-provider第二步在 e2e 配置中指向决策模型import type { E2EConfig } from e2e; import { decisionExecutor } from e2e-dev/decision; import { typeSafeAi } from ai-sdk/typesafe-ai; import { openrouter } from openrouter/ai-sdk-provider; export default { agents: { default: { executor: decisionExecutor({ model: typeSafeAi.decisionModel(jev-latest), textModel: openrouter(inception/mercury-2.5), }), }, }, } satisfies E2EConfig;第三步测试代码保持自然语言无需额外参数await agent.act(Add a todo named Buy coffee, and verify it is listed.); await agent.assert(The todo list contains Buy coffee.);这些边界要心里有数使用决策模型前先明确它不做什么没有导航动作空间里没有navigate应用内跳转是对链接的tapURL 跳转请写在测试代码里app.openv1 不支持多选 listbox、拖拽、上传、悬停无视觉图片化的 UI纯 canvas、文字在图里不可识别255 选项上限超大屏幕靠滚动浏览从不阻塞。这些边界恰是它的安全感来源动作空间小而可枚举因此每个派发动作都被运行时授权每次模型调用都计入步骤预算每个失败都有明确错误码如MODEL_OUTPUT_INVALID、MODEL_PROVIDER_FAILED、AUTOMATION_UNSUPPORTED排障路径清晰。相关资料包 READMEpackages/decision/README.md官方决策模型指南docs/decision-models.mdx执行器主循环packages/decision/src/executor.ts动作空间构建packages/decision/src/elements.ts单元测试packages/decision/tests/【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考