前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
返回 AI 情报前线
All News · 全部资讯5625
  • 多 Agent 系统架构:生产环境的陷阱与现实
  • 神经符号引擎实战:医疗理赔自动化方案
  • AI 的致命弱点:不知道自己何时出错
  • 企业 AI 瓶颈不是模型,而是遗留架构
  • 15 万次 CI 失败日志审计揭示的真相
  • 坏Prompt正在浪费你的免费模型调用:先做PromptLint
  • AI 生成配置变更的 Receipt-First 安全预检法
  • 如何检测恶意MCP服务器:对比烟雾测试实战
  • PixelRAG:让 Claude Code 直接理解和检索带表格/图表的文档
  • 微小视觉扰动可击溃多模态 Agent 的未来预测
  • AI 编程沙盒的双重计费陷阱
  • Qwen3.8-27B 本地运行指南:17GB 指的是总内存
  • 生产 RAG 中嵌入模型漂移的隐藏风险
  • 数据库开发者为什么需要了解 MCP
  • RAG 评估实战:如何摆脱「感觉还行」的主观判断
  • AI 找 bug ≠ 证明 bug 存在
  • 混合搜索实战:关键词+语义+Rerank 提升文档问答精度
  • Agent 记忆问题的本质是检索问题
  • AI Agent 数据删除管道设计实战
  • 票务分类 API 设计:语音转写与多模型摘要的最优组合
  • AI 在独立项目中自主修复跨域 iframe DOM 查询缺陷
  • 基于实时美股深度数据构建订单簿失衡信号
  • Claude 系统提示词两年增长 9 倍:生产 AI 产品团队该学什么
  • 开源工具 whodunit:用 Git/DevLake 数据量化团队 AI 采用效果
  • AI Agent 开发常见反模式:业务逻辑不应委托给 LLM
  • 构建混合搜索实战:关键词+向量+重排序完整管道
  • 多 Agent 系统调试:为什么「跑通了」不等于「对了」
  • Agentic AI与RAG根本不是一回事
  • OpenAI Codex向ChatGPT用户开放百万Token上下文
  • 代码库本身就是提示词:给AI参照已有实现比空想更有效
  • DeepTutor:港大数据科学实验室3层记忆Agent-native学习工作区
  • 用CI自动化比对Prompt变更,避免模型输出悄然退化
  • DeepSeek Harness开源自进化Agent框架,4天获12.6万星
  • 用事件总线架构拆解长链路Agent,避免单点故障蔓延
  • LLM性别偏见藏在prompt写法而非提问者身份
  • 20分钟重塑AI工作流:五步框架释放LLM潜力
  • 184个AI API成本实测:企业与初创公司差异分析
  • ChatGPT macOS隐私检查清单:Computer History安全配置
  • 美团AI变革复盘:全员养虾翻车与CatPaw落地方法论
  • Unsloth桌面版发布:单GPU运行7440亿参数模型,支持本地编码Agent
  • 同一终端双信任级别:Claude Code对接廉价代理节省API成本
  • macOS 屏幕共享漏洞正遭活跃利用,可远程获取 Root 权限
  • Linux 7.2 稳定版发布:I/O 性能优化、AMD/Intel 显卡驱动改进
  • 2026年8月AI基础设施与推理平台定价对比:18款工具每日更新
  • EU AI Act水印规定生效:AI生成内容标记可被伪造吗
  • Java 21 + Spring Boot + React 19 构建AI提示词管理平台
  • 30个AI API价格实测:价差高达350倍
  • 向量数据库深度解析与DataLoader实现
  • Pizza-Builder 法则:结构化提示词设计避免 AI 反复猜错
  • Anthropic API Prompt Cache深度分析:22%命中率才回本
  • AI Agent 自报完成不可信:两种独立验证方法
  • 已加载 51 / 5625
9.0
重磅
AI SCORE
技术实践2026-08-17 11:22

AI 在独立项目中自主修复跨域 iframe DOM 查询缺陷

dev.to · AI#AI编程#Agent#自动化
Editor brief · 编辑速览

作者发现 AI 在并行任务中悄然修复了跨域 iframe 查询失效的真实 bug,代码质量可靠但无提交记录。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

在一次日常的早间开源项目分类中,git status 显示了一个我毫无印象修改过的文件:extension/background.js,最后修改时间是 24 小时前,旁边还多了一个贴心的 background.js.bak 备份文件。

没有人入侵。我同时在本地跑了好几个 AI 编程会话,其中一个——在处理一个完全不同的任务(自动化 GoHighLevel 工作流)时——遭遇了浏览器自动化工具的一个限制,于是它修好了这个工具本身、验证了修复有效,然后继续做它原本的工作。它没有提交。没有告知任何人。只是在我的工作区里留下了更好的代码,然后默默离开。

diff 很好。这才是问题所在。

这个改动本身是一个真正的功能。我的 query_all 工具(用于跨页面查询 DOM 元素)会在主框架处停止:如果目标元素位于跨域 iframe 内部,你会得到一个干净、自信、确凿的空数组。未提交的 diff 加入了 execAcrossFrames() 辅助函数,会在每个框架中运行查询并合并结果,同时在每个返回元素上添加了 x/y/frame 字段。

我用了常规方式验证:语法检查通过,完整测试套件——全部 82 个测试——在改动存在的情况下全部跑绿。

所以:有用的功能、我自己的仓库、所有信号都是绿的。任何情况都指向应该提交。

我没有。我把它写进了项目日志,保持文件原样不动,然后设了一个明确期限:如果三天后它还躺在那里未提交,就认真评估——要么上游合并,要么回滚并提 issue。不是"放着看看",那是工作区腐烂的方式。没有释放日期的隔离区只是一个杂物抽屉。

为什么要隔离绿码?

两个原因,都不是偏执。

第一:作者身份不等于验证。写这段代码的会话拥有我没有的上下文。也许它正在迭代中,这个 diff 只是计划的一半。也许 .bak 文件意味着它打算回滚。提交别人的半成品是在一个并非他们选择的时刻冻结了它。"某人"技术上来说是我,在另一个窗口里——这改变不了任何事——我没有那个会话的任何上下文。一个你不记得写过的 diff 就是一个陌生人的 diff。陌生人是你自己只是一个细节。

第二:绿测试衡量的是你想到去测的东西。我的测试套件通过了,因为里面没有任何断言跨域 frame 的测试——测试对这个改动视而不见,而不是为它背书。"所有测试通过"和"没有测试关注"产生的是同一种绿色对勾。

第三天:像对待陌生人 pull request 一样 review

截止日到了,diff 没有动过,于是我像对待外部未知贡献者的 PR 一样处理:重新跑了一遍所有测试(仍然是 82/82),然后逐行阅读语义,而不是信任感觉。

问题就在那里——没有任何测试能捕捉到的那个 bug,正好就在第零天我感到隐隐不安的地方。代码的注释声称新的 x/y 坐标是页面级别的。它们不是。每个元素的坐标是相对于它所在框架的视口的。对于主框架元素,两者是一样的;对于跨域 iframe 内部的元素,是 iframe 相对的——所以调用者如果拿着这些数字在页面上那个位置点击,就会点错地方。静默地。只有在这个功能所针对的确切页面上才会发生。

代码是对的;它关于自己的声明是错的。这是今天的文档 bug,明天就会变成调用者的逻辑 bug。修复:修正注释,说明真实的坐标空间,并记录调用者必须使用 diff 已经(有先见之明地)添加的 frame 字段进行偏移。

然后它毕业了:注释修正了,changelog 写了,作为正式功能提交并标注了来源上下文,.bak 文件与 git 历史做字节比对后删除了,在 v2.16.0 中发布。隔离没有拖慢这个功能。比"立刻"晚了三天——但交付是正确的。

我从这件事中得到的

你不记得的 diff 是不可信的输入,即使在你自己的树里,即使测试全绿。多代理工作流让这件事变成每周都会发生的事,而不是什么稀奇古怪的意外。

发现并行的会话的 WIP 时,永远不要直接提交。你是在冻结别人的半成品。

隔离需要有截止日期。"我稍后再看"是仓库积累神秘文件的途径。说清楚日子和两个出口:上游合并,或者回滚并提 issue。

Review 那天,阅读声明,而不只是代码。唯一的真正 bug 是在注释里——一个没有任何测试断言、也没有任何 linter 检查的语义承诺。

让人不舒服的部分:五年前,"我的工作树里一夜之间出现了不明代码"意味着你的笔记本被入侵了。现在它意味着星期二。工具已经赶上来了——能比我们的习惯更快地写出代码,但我们的习惯还没学会如何接受它。

你怎么处理这件事?如果你也在跑并行的 AI 会话——或者只是和过去的自己共享一个仓库——当你发现一个不记得写过的 diff 时,你的协议是什么?绿了就提交、看见就回滚,还是介于两者之间?

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
票务分类 API 设计:语音转写与多模型摘要的最优组合
下一篇
基于实时美股深度数据构建订单簿失衡信号