• 脚本容易坏这个问题,解法是不写固定脚本。evomap 搞了一套 GEP 机制,我参考了他的做法用在了测试领域——把用例拆成"意图 + 验收条件"(不绑路径)和"成功执行过的参考路径 + 环境指纹"两层。每次跑之前对比环境指纹,变化小就复现旧路径,变化大就只看意图让 Agent 自己探索。路径有淘汰机制,成功加分失败扣分,低于阈值自动归档换新的。本质上是让 Agent 自己感知环境变了并切策略,而不是靠人维护固定步骤。

    Canvas 分层的问题:app.stage 遍历天然带层级,children 数组顺序就是渲染顺序,我输出时保留了 depth 和树路径,Agent 能直接看到嵌套关系。

    点击穿透和遮挡:遍历时用 visible/worldVisible 过滤不可见节点,点击坐标从 getBounds() 算中心点,事件是 PointerEvent dispatch 到 canvas DOM 上,引擎内部做 hitTest 处理穿透。遇到非标准渲染器不暴露 eventMode 的情况,退化成文字搜索 + 坐标点击兜底。

  • 加我 vx yuzhendeyoux 吧 付费暂时我不能提供比较好的服务 主业有点忙 可以多沟通

  • 关于无障碍树 / DOM 树稳定性的问题,分享几个我实际验证过有效的思路:

    1. 别用完整 DOM 树,做"有目的的提取" 我没有直接把无障碍树丢给模型,而是写了一个 get_page_snapshot 工具,只提取可交互元素(button/input/a/select + role 标注的元素)和叶子文本节点。再加两层过滤:只保留 getBoundingClientRect 可见的元素;装饰性空 div 直接跳过。这样中后台页面 2000+ 节点压到 40-50 个关键元素,token 成本可控,而且因为信息密度高了,模型定位反而更准。
    2. Canvas 单独做一套感知体系 Canvas 确实是黑盒,无障碍树完全没用。我的方案是直接注入 JS 遍历渲染引擎的场景图——比如 PixiJS 的 app.stage 可以递归遍历所有 children,拿到每个节点的类型、bounds、文字属性。等于给 Canvas 做了一个专用的 snapshot 工具。点击也不走 DOM 事件,而是算出目标元素 bounds 中心坐标后合成 PointerEvent 直接 dispatch 到 canvas 元素上。这个比视觉坐标猜测准得多,因为坐标是从渲染引擎实际数据算出来的。
    3. 建立工具降级链,而不是押单一方案 我的核心设计是一条优先级链: 常规页面:DOM 提取(click(target) 按文本/属性定位) Canvas 页面:先 canvas_inspect() 拿场景图 → canvas_click_element(path/text) 精准点击 都不行时:降级到 mouse_click_at(x,y) 坐标点击(DPR 自动校准) 最后兜底:CDP 层面的原始鼠标事件 关键是让 Agent 自己判断该用哪层,而不是人工预判。prompt 里写清楚优先级,模型很快就能学会"先试语义定位,不行再降级到坐标"。
    4. iframe 的坑比 DOM 深度更难搞 DOM 层级深其实不是最大的问题——过滤完通常都能控制住。真正头疼的是 iframe 嵌套。我的做法是:主页面交互元素 < 5 个时才去扫 iframe(大部分情况主页面够用),扫描时只取关键交互元素不取全量文本,避免上下文膨胀。

    总结一句话:不要试图让一棵树解决所有问题,而是分场景建不同的感知通道,然后让 Agent 按优先级自动切换。

  • 我后续会放出一个通用版本出来,会是本地客户端形态。核心不是把现在这套代码原样放出来,而是把 “AI 测试分身” 的能力抽象成一个大家能接自己系统、能本地跑、能看到执行过程和结果回放的版本,敬请期待

  • 有做转换的
    JSON 更像是用例的结构化载体,用于前端操作,查看、导出之类的 真正执行前,会再转换成 agent 更容易工作的任务上下文,用于给 pi 执行层做路径规划
    简单说:JSON 负责承载,agent prompt/context 负责执行,规划层负责判断

  • 哈哈确实有 AI 参与整理,具体想了解哪块

  • 木有

  • 我搬运一个 打完上午的工先

  • 你这个例子特别好,数据场景其实更能说明这个问题。
    很多时候 AI 缺的不是 “字段解释”,而是一个熟练的人在这个业务里形成的判断方式:为什么这条链路要这么看、哪个异常值得警惕、哪些数据变化背后其实是业务动作,而不只是数值变化。
    所以 “最小认知单元” 这个词挺准的。它不是知识条目,而是可复用的判断颗粒。agent 真正要长出来的也不是更大的知识库,而是在某个环境里积累这种判断颗粒,然后在下一次执行时能被调用。
    我的 vx yuzhendeyoux 欢迎沟通

  • 一直在别的地方写文章,如果还对这个大脑之外的用例生成、自动执行测试、业务 agent 评估等 agent 功能感兴趣的 uu,也可以在评论区留言