<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>666Ai测评</title><link>http://testai666.cn/</link><description>Recent content on 666Ai测评</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sun, 18 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://testai666.cn/index.xml" rel="self" type="application/rss+xml"/><item><title>国产模型的差距！（3D建模测评）</title><link>http://testai666.cn/posts/%E5%9B%BD%E4%BA%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E5%B7%AE%E8%B7%9D3d%E5%BB%BA%E6%A8%A1%E6%B5%8B%E8%AF%84/</link><pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E5%9B%BD%E4%BA%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E5%B7%AE%E8%B7%9D3d%E5%BB%BA%E6%A8%A1%E6%B5%8B%E8%AF%84/</guid><description>&lt;p&gt;提示词：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用pybullet创建一个机械臂可以夹起物体的实例，思考完直接给我运行代码不要有其他动作&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;测试时间： &lt;img loading="lazy" src="http://testai666.cn/posts/images/08bb9ee499784936960b43357047607e.png"&gt;&lt;/p&gt;
&lt;p&gt;测试结果：&lt;/p&gt;
&lt;table&gt;
&lt;thead&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;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;claude-5sonnet&lt;/td&gt;
&lt;td&gt;顺利抓起方块，动作流畅，耗时短&lt;/td&gt;
&lt;td&gt;api调用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT6&lt;/td&gt;
&lt;td&gt;能抓起物体，但是有空隙&lt;/td&gt;
&lt;td&gt;网页端&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hy4preview&lt;/td&gt;
&lt;td&gt;顺利抓起方块，动作生硬，代码生成耗时5分钟+&lt;/td&gt;
&lt;td&gt;网页端&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;qianwen3.7&lt;/td&gt;
&lt;td&gt;无法抓起方块，方块巨大&lt;/td&gt;
&lt;td&gt;网页端&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;deepseek&lt;/td&gt;
&lt;td&gt;不是抓的，是吸的&lt;/td&gt;
&lt;td&gt;网页端&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT5.6-luna&lt;/td&gt;
&lt;td&gt;更拉，模型异常&lt;/td&gt;
&lt;td&gt;api调用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gemini-3.8-flash&lt;/td&gt;
&lt;td&gt;没有抓起物体&lt;/td&gt;
&lt;td&gt;api调用&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;没有抓起物体，耗时巨长&lt;/td&gt;
&lt;td&gt;网页端&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;截图：&lt;/p&gt;
&lt;p&gt;claude5:&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/417bc51b0a5e4a66b0d2b96518388d4d.gif"&gt;&lt;/p&gt;
&lt;p&gt;gpt6：&lt;/p&gt;
&lt;p&gt;hy4:&lt;img loading="lazy" src="http://testai666.cn/posts/images/6b281af1b1124b6d8d2beeb431ed8209.gif"&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/dbe195d41bfd4a0996bab8fcd77079e0.png"&gt;&lt;/p&gt;
&lt;p&gt;qianwen：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/cf4b6cf6deb04307b42807cd0dd9e068.gif"&gt;&lt;/p&gt;
&lt;p&gt;deepseek：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/8b5c5f90991a465fb0cbcd887310cb39.gif"&gt;&lt;/p&gt;
&lt;p&gt;GPT5.6-luna：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/6f713558b9144a16bfa838169fbfcc60.gif"&gt;&lt;/p&gt;
&lt;p&gt;-3.8-flash：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/18fdff4187a34365bb3f12520cc15e39.gif"&gt;&lt;/p&gt;
&lt;p&gt;百度文心助手：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/7ccbd838b65047d5b5378503ed48bbd3.gif"&gt;&lt;/p&gt;
&lt;p&gt;豆包：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/7a53d55a72c448be88c286a88d49eba2.gif"&gt;&lt;/p&gt;
&lt;p&gt;代码：&lt;a href="https://gitee.com/haolixu/aitest"&gt;https://gitee.com/haolixu/aitest&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/167897081?spm=1011.2415.3001.5331"&gt;国产模型的差距！（3D建模测评）&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>agent企业项目实战（2）</title><link>http://testai666.cn/posts/agent%E4%BC%81%E4%B8%9A%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%982/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/agent%E4%BC%81%E4%B8%9A%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%982/</guid><description>&lt;p&gt;今天现在实现了中用到的adb device状态显示。接下来搞任务管理和详情页。公司的claude太好用了 白嫖的感觉太爽了。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/c2c493defe674537b5c3a9ad869467b9.png"&gt;&lt;/p&gt;
&lt;p&gt;这个需要记一下：&lt;/p&gt;
&lt;p&gt;完整判断逻辑（最终版）：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;条件&lt;/th&gt;
&lt;th&gt;状态&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;无 MTBF.log + adb 不在线&lt;/td&gt;
&lt;td&gt;🔌 离线&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;无 MTBF.log + adb 在线&lt;/td&gt;
&lt;td&gt;⚪ 空闲&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MTBF.log 2分钟内有写入&lt;/td&gt;
&lt;td&gt;🟢 运行中&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;有 CaseExecutionStatistics.log 且 ≤24h&lt;/td&gt;
&lt;td&gt;✅ 已完成&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MTBF.log 2~10分钟内&lt;/td&gt;
&lt;td&gt;🟢 运行中&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MTBF.log 超24小时 + adb 不在线&lt;/td&gt;
&lt;td&gt;🔌 离线&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MTBF.log 超24小时 + adb 在线&lt;/td&gt;
&lt;td&gt;⚪ 空闲&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MTBF.log 10分钟~24小时无更新&lt;/td&gt;
&lt;td&gt;⚠️ 出错了&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;以下是问题总结：&lt;/p&gt;
&lt;h3 id="2026-06-20-工作总结"&gt;2026-06-20 工作总结&lt;/h3&gt;
&lt;h4 id="-重构上午"&gt;🏗️ 重构（上午）&lt;/h4&gt;
&lt;table&gt;
&lt;thead&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;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;本机 UNC 读取替代 shell_server /logdir&lt;/td&gt;
&lt;td&gt;✅ log_monitor.py 封装状态判断&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;server.py 代理层，前端统一走 localhost:8080&lt;/td&gt;
&lt;td&gt;✅ 解决跨域，统一鉴权&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Git 版本控制初始化，每次改文件前 commit&lt;/td&gt;
&lt;td&gt;✅ 已建仓库，20+ commits&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="-功能完善下午"&gt;⚙️ 功能完善（下午）&lt;/h4&gt;
&lt;table&gt;
&lt;thead&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;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;device_poller.py：每60秒轮询，写缓存，状态变化弹窗告警&lt;/td&gt;
&lt;td&gt;✅ 26台设备全部追踪&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;offline 判断：结合 adb 在线状态（从注册中心拉取）&lt;/td&gt;
&lt;td&gt;✅ 无 MTBF.log + adb 不在线 → offline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;状态逻辑调整：done 加 ≤24h 限制，空闲 badge 改绿色&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;新增 lunzhou-cwf19 / lunzhou118（QCS8550_LE_1_0-Full SKU）&lt;/td&gt;
&lt;td&gt;✅ 3台设备各自识别&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h4 id="-今日--修复"&gt;🐛 今日 修复&lt;/h4&gt;
&lt;table&gt;
&lt;thead&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;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;server.py 卡住不响应&lt;/td&gt;
&lt;td&gt;UNC 读取无超时，阻塞线程&lt;/td&gt;
&lt;td&gt;ThreadPoolExecutor + timeout=12s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;start_time 格式 2026:06:20&lt;/td&gt;
&lt;td&gt;replace(&amp;rsquo;-&amp;rsquo;,&amp;rsquo;:&amp;rsquo;,2) 把日期也替换了&lt;/td&gt;
&lt;td&gt;分段处理日期和时间&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lunzhou26 两台设备误判 idle&lt;/td&gt;
&lt;td&gt;poller 启动时注册中心为空&lt;/td&gt;
&lt;td&gt;重启 poller 后正常&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;新主机不显示&lt;/td&gt;
&lt;td&gt;localStorage 有旧数据，默认列表不触发&lt;/td&gt;
&lt;td&gt;STORE_KEY v2→v3 强制重新初始化&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;启动任务报 null 错误&lt;/td&gt;
&lt;td&gt;hideStartModal() 先清空 _startCtx&lt;/td&gt;
&lt;td&gt;先复制到局部变量再 hide&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/4f11efc8e1cc49b8ab174abe47f4a713.png"&gt;&lt;/p&gt;</description></item><item><title>agent企业项目实战（1）</title><link>http://testai666.cn/posts/agent%E4%BC%81%E4%B8%9A%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%981/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/agent%E4%BC%81%E4%B8%9A%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%981/</guid><description>&lt;p&gt;公司最近在用qwenpaw学习和skill,领导让在项目中使用提高效率，我也有此想法故开始了实践。目前实现了我项目中用到的测试主机的C盘容量监控总共21台以下是效果图：&lt;img loading="lazy" src="http://testai666.cn/posts/images/7ca7fedf1c494a9294443f987b1fd273.png"&gt;&lt;/p&gt;
&lt;p&gt;后续还想增加空闲占比太低则弹出提示。以下是Ai总结：&lt;/p&gt;
&lt;h3 id="磁盘监控系统--实现总结"&gt;磁盘监控系统 — 实现总结&lt;/h3&gt;
&lt;h4 id="一目标"&gt;一、目标&lt;/h4&gt;
&lt;p&gt;批量查询多台 机器的 C 盘空闲/总容量，生成可视化前端页面，并定时自动刷新。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="二核心文件"&gt;二、核心文件&lt;/h4&gt;
&lt;table&gt;
&lt;thead&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;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;check_all_disks.ps1&lt;/td&gt;
&lt;td&gt;C:\Users\xli23\Desktop\workStation\&lt;/td&gt;
&lt;td&gt;查询所有机器磁盘，输出 JSON&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;disk_status.json&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;查询结果数据文件，供前端读取&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;disk_dashboard.html&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;前端可视化页面&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;server.py&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;Python HTTP 服务，端口 8080&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h4 id="三实现方法"&gt;三、实现方法&lt;/h4&gt;
&lt;h5 id="1-磁盘查询"&gt;1. 磁盘查询（）&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;用&lt;code&gt;dir \\主机\共享名&lt;/code&gt;获取空闲字节数&lt;/li&gt;
&lt;li&gt;用&lt;code&gt;Scripting.FileSystemObject.GetDrive()&lt;/code&gt;获取总容量&lt;/li&gt;
&lt;li&gt;计算空闲占比，按阈值打状态标签：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;amp;lt; 5%&lt;/code&gt;→&lt;strong&gt;critical&lt;/strong&gt;（红）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;amp;lt; 15%&lt;/code&gt;→&lt;strong&gt;warning&lt;/strong&gt;（黄）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;≥ 15%&lt;/code&gt;→&lt;strong&gt;ok&lt;/strong&gt;（绿）&lt;/li&gt;
&lt;li&gt;访问失败 →&lt;strong&gt;offline&lt;/strong&gt;（灰）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;结果输出为&lt;code&gt;disk_status.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="2-前端页面--js"&gt;2. 前端页面（ + JS）&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;读取&lt;code&gt;disk_status.json&lt;/code&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;点击刷新按钮重新读取 JSON&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="3--服务python"&gt;3. 服务（Python）&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;server.py&lt;/code&gt;用&lt;code&gt;http.server&lt;/code&gt;在端口 8080 提供静态文件服务&lt;/li&gt;
&lt;li&gt;访问地址：&lt;code&gt;http://localhost:8080/disk_dashboard.html&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="4-qwenpaw-cron"&gt;4. （QwenPaw Cron）&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;每小时整点自动执行 PS 脚本刷新数据&lt;/li&gt;
&lt;li&gt;Cron 表达式：&lt;code&gt;0 * * * *&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Job ID：&lt;code&gt;c04dc361-a7f4-4b4a-be1d-d13cba681e61&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="四机器共享名规律"&gt;四、机器共享名规律&lt;/h4&gt;
&lt;table&gt;
&lt;thead&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;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;HP Z2 系列&lt;/td&gt;
&lt;td&gt;lunzhou66/67/68/71/74/98 等&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;c_drive&lt;/td&gt;
&lt;td&gt;HP Mini 800（STARLAB）&lt;/td&gt;
&lt;td&gt;lunzhou85-93/96/112/118/119 等&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;其他&lt;/td&gt;
&lt;td&gt;lunzhou41/lunzhou-cwf19&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h4 id="五遇到的问题及"&gt;五、遇到的问题及&lt;/h4&gt;
&lt;table&gt;
&lt;thead&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;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ping 判断离线但实际在线&lt;/td&gt;
&lt;td&gt;短主机名无法解析，需加 .ap.qualcomm.com&lt;/td&gt;
&lt;td&gt;改用 net view 或直接访问共享路径验证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\lunzhou37\C 超时&lt;/td&gt;
&lt;td&gt;DNS 解析失败，主机名不通&lt;/td&gt;
&lt;td&gt;改用 IP \10.64.29.14\C 访问&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;共享名不统一&lt;/td&gt;
&lt;td&gt;不同机型共享名不同（C vs c_drive）&lt;/td&gt;
&lt;td&gt;先用 net view \主机 查共享名再访问&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PowerShell 多行命令在 cmd 中报错&lt;/td&gt;
&lt;td&gt;cmd 不支持换行脚本&lt;/td&gt;
&lt;td&gt;改写为 .ps1 文件再用 -File 执行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Get-PSDrive 无法查远程共享总容量&lt;/td&gt;
&lt;td&gt;只支持本地驱动器&lt;/td&gt;
&lt;td&gt;改用 Scripting.FileSystemObject.GetDrive()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System.IO.DriveInfo 不支持 UNC 路径&lt;/td&gt;
&lt;td&gt;.NET 限制&lt;/td&gt;
&lt;td&gt;改用 COM 对象 Scripting.FileSystemObject&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;前端 fetch 本地 JSON 被 CORS 拦截&lt;/td&gt;
&lt;td&gt;浏览器安全限制&lt;/td&gt;
&lt;td&gt;用 server.py 起 HTTP 服务解决&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PowerShell 中文输出乱码&lt;/td&gt;
&lt;td&gt;cmd 编码问题&lt;/td&gt;
&lt;td&gt;改用英文输出&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lunzhou41 无 C 盘共享&lt;/td&gt;
&lt;td&gt;该机器只共享了 IoTAutomationLog 和 Sahara&lt;/td&gt;
&lt;td&gt;经测试 \lunzhou41\C 实际可访问，直接用&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/162106077?spm=1011.2415.3001.5331"&gt;agent企业项目实战（1）&lt;/a&gt;
作者: lixusocool&lt;/p&gt;</description></item><item><title>Camera 调试问题总结</title><link>http://testai666.cn/posts/camera%E8%B0%83%E8%AF%95%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/camera%E8%B0%83%E8%AF%95%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93/</guid><description>&lt;h2 id="1-qtiqmmfsrc-不支持-num-buffers"&gt;1. &lt;code&gt;qtiqmmfsrc&lt;/code&gt; 不支持 &lt;code&gt;num-buffers&lt;/code&gt;&lt;/h2&gt;
&lt;h3 id="现象"&gt;现象&lt;/h3&gt;
&lt;p&gt;在 &lt;code&gt;gst-launch-1.0&lt;/code&gt; 命令中加入：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qtiqmmfsrc camera&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; num-buffers&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;报错：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WARNING: erroneous pipeline: no property &amp;#34;num-buffers&amp;#34; in element &amp;#34;qmmfsrc0&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="结论"&gt;结论&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;qtiqmmfsrc&lt;/code&gt; 不是标准 &lt;code&gt;videotestsrc&lt;/code&gt; 一类元素，不支持 &lt;code&gt;num-buffers&lt;/code&gt; 属性。&lt;/p&gt;
&lt;h3 id="处理方式"&gt;处理方式&lt;/h3&gt;
&lt;p&gt;改用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;timeout&lt;/code&gt; 控制时长&lt;/li&gt;
&lt;li&gt;或后续用 &lt;code&gt;identity&lt;/code&gt; / &lt;code&gt;multifilesink&lt;/code&gt; / 后处理方式控制帧数&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-直接-imagejpeg--filesink-生成空文件"&gt;2. 直接 &lt;code&gt;image/jpeg&lt;/code&gt; + &lt;code&gt;filesink&lt;/code&gt; 生成空文件&lt;/h2&gt;
&lt;h3 id="现象-1"&gt;现象&lt;/h3&gt;
&lt;p&gt;下面这类命令可以跑起来，但输出的 jpg 是 0 字节：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qtiqmmfsrc camera&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; ! &lt;span style="color:#e6db74"&gt;&amp;#39;image/jpeg,width=3840,height=2160&amp;#39;&lt;/span&gt; ! filesink location&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/tmp/snapshot.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="原因"&gt;原因&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;filesink&lt;/code&gt; 本身只是写字节流，不适合直接拿来当“单张拍照”的最终输出方式。&lt;/p&gt;
&lt;h3 id="处理方式-1"&gt;处理方式&lt;/h3&gt;
&lt;p&gt;改用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;... ! multifilesink location&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/tmp/snapshot%d.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后再挑选某一帧复制成最终文件。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-前几十帧是黑图"&gt;3. 前几十帧是黑图&lt;/h2&gt;
&lt;h3 id="现象-2"&gt;现象&lt;/h3&gt;
&lt;p&gt;直接启动摄像头后保存的前几帧是黑的，后面帧才正常。&lt;/p&gt;</description></item><item><title>Rust 重写 IoT 自动化框架 - 阶段 1：核心功能</title><link>http://testai666.cn/posts/rust-%E9%87%8D%E5%86%99-iot-%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A1%86%E6%9E%B6/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/rust-%E9%87%8D%E5%86%99-iot-%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A1%86%E6%9E%B6/</guid><description>&lt;h2 id="-前置准备"&gt;📋 前置准备&lt;/h2&gt;
&lt;h3 id="1-安装-rust"&gt;1. 安装 Rust&lt;/h3&gt;
&lt;h4 id="windows-安装步骤"&gt;Windows 安装步骤：&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;下载 Rust 安装器&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;访问：https://rustup.rs/&lt;/li&gt;
&lt;li&gt;或直接下载：https://win.rustup.rs/x86_64&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;运行安装器&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 下载后运行 rustup-init.exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 选择默认安装选项（按 1 然后回车）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;验证安装&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 重新打开 PowerShell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rustc --version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cargo --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;配置国内镜像（可选，加速下载）&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 创建配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir $env:USERPROFILE\.cargo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;notepad $env:USERPROFILE\.cargo\config.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;添加以下内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;source&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;crates-io&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;replace-with&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#39;ustc&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;source&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ustc&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;registry&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;https://mirrors.ustc.edu.cn/crates.io-index&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="2-安装-vs-code-rust-插件推荐"&gt;2. 安装 VS Code Rust 插件（推荐）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;rust-analyzer&lt;/strong&gt;: Rust 语言服务器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CodeLLDB&lt;/strong&gt;: 调试器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;crates&lt;/strong&gt;: 依赖管理&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-第-1-步创建项目结构"&gt;🏗️ 第 1 步：创建项目结构&lt;/h2&gt;
&lt;h3 id="11-创建新项目"&gt;1.1 创建新项目&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd C:\Users\xli23\Desktop\uv-env
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cargo new iot-automation-rust
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd iot-automation-rust
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="12-项目结构"&gt;1.2 项目结构&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;iot-automation-rust/
├── Cargo.toml # 项目配置和依赖
├── src/
│ ├── main.rs # 程序入口
│ ├── lib.rs # 库入口
│ ├── cli.rs # 命令行参数
│ ├── config/ # 配置模块
│ │ ├── mod.rs
│ │ ├── parser.rs
│ │ └── global.rs
│ ├── device/ # 设备模块
│ │ ├── mod.rs
│ │ └── adb.rs
│ ├── test/ # 测试模块
│ │ ├── mod.rs
│ │ ├── base.rs
│ │ └── runner.rs
│ └── utils/ # 工具模块
│ ├── mod.rs
│ └── logger.rs
├── tests/ # 集成测试
└── examples/ # 示例代码
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="-第-2-步配置-cargotoml"&gt;📝 第 2 步：配置 Cargo.toml&lt;/h2&gt;
&lt;p&gt;创建 &lt;code&gt;Cargo.toml&lt;/code&gt; 文件：&lt;/p&gt;</description></item><item><title>项目摄像头测试用例总结</title><link>http://testai666.cn/posts/%E9%A1%B9%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E6%80%BB%E7%BB%93/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E9%A1%B9%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E6%80%BB%E7%BB%93/</guid><description>&lt;h2 id="1-摄像头测试用例主要位置"&gt;1. 摄像头测试用例主要位置&lt;/h2&gt;
&lt;h3 id="python-测试用例目录"&gt;Python 测试用例目录&lt;/h3&gt;
&lt;p&gt;主要在这些目录下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Case/Products/*/AUSanity/Camera/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/*/Stability/Camera.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/*/PreFlight/Camera.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/*/Sanity/Camera.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_1_1/Camera/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/Camera/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/*/Robotics/*camera*.py&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;典型文件包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/Camera.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX586.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX686.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraOV9282.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraGMSL.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX766.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX688.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraOV64B40.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraS5K3M5.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraConcurrency.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QCS8625_LE_1_0/AUSanity/Camera/*.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/*.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QCS610_LE_1_0_C2/Stability/Camera.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/Stability/Camera.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_1_1/Camera/CameraGST.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_1_1/Camera/CameraHAL3.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_1_1/Camera/CameraFRandLBT.py&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="plan-配置目录"&gt;Plan 配置目录&lt;/h3&gt;
&lt;p&gt;摄像头命令和计划主要在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Plan/*/*/Config/Camera/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan/*/*/Config/Camera/TestCommands/*.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan/*/*/Config/PreFlight/*Camera*.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan/*/*/Config/Stability/*Camera*.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;典型配置文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/GSTCommands.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/SevenCameraCommends.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/USBCameraCommands.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/LBT_GSTCommands.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/LBT_HAL3Commands.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan/LE/QCS8550_LE_1_0/Config/Camera/TestCommands/CameraGST_commands.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan/LE/QCS610_LE_1_0_C2/Config/Camera/QCS610_LE_1_0_C2_Camera_LBT_test_plan.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-qrb5165_ubun_2_0-摄像头用例"&gt;2. QRB5165_UBUN_2_0 摄像头用例&lt;/h2&gt;
&lt;h3 id="21-ausanity-单摄基础功能"&gt;2.1 AUSanity 单摄基础功能&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;文件路径&lt;/th&gt;
&lt;th&gt;用例 / 用例族&lt;/th&gt;
&lt;th&gt;测试点&lt;/th&gt;
&lt;th&gt;Pass 条件&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX577Preview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX577 预览，3840x2160，60fps，dump YUV&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/data/output/camera/&lt;/code&gt; 下生成 &lt;code&gt;IMX577_Preview*.yuv&lt;/code&gt;，且文件大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX577Snapshot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX577 预览 + 拍照，输出 JPG&lt;/td&gt;
&lt;td&gt;pipeline 进入 PLAYING；生成 &lt;code&gt;IMX577_Snapshot_*.jpg&lt;/code&gt;；文件大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX577LiveSnapshot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX577 边录像边拍照，H.264 mp4 + JPG&lt;/td&gt;
&lt;td&gt;pipeline 进入 PLAYING；生成 &lt;code&gt;IMX577_Live_Snapshot_*.jpg&lt;/code&gt; 且大小 &amp;gt; 0；同时拉取 &lt;code&gt;IMX577_h264.mp4&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX586.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX586Preview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX586 预览，4K YUV dump&lt;/td&gt;
&lt;td&gt;生成 &lt;code&gt;IMX586_Preview*.yuv&lt;/code&gt; 且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX586Snapshot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX586 拍照，JPG 输出，8000x6000&lt;/td&gt;
&lt;td&gt;pipeline 进入 PLAYING；生成 &lt;code&gt;IMX586_Snapshot_*.jpg&lt;/code&gt; 且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX586LiveSnapshot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX586 live snapshot + H.264 录像&lt;/td&gt;
&lt;td&gt;生成 &lt;code&gt;IMX586_Live_Snapshot_*.jpg&lt;/code&gt; 且大小 &amp;gt; 0；生成或拉取 &lt;code&gt;IMX586_h264.mp4&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX686.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX686Preview / Snapshot / LiveSnapshot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX686 预览、拍照、边录边拍&lt;/td&gt;
&lt;td&gt;对应 YUV/JPG/MP4 文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraOV9282.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraOV9282&lt;/code&gt; 相关用例&lt;/td&gt;
&lt;td&gt;OV9282 tracking camera 预览 / RAW10 dump&lt;/td&gt;
&lt;td&gt;输出 &lt;code&gt;.raw10&lt;/code&gt; 或预览 dump 文件，文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraGMSL.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraGMSL&lt;/code&gt; 相关用例&lt;/td&gt;
&lt;td&gt;GMSL 摄像头预览、RAW12、录像、快照&lt;/td&gt;
&lt;td&gt;输出 &lt;code&gt;.raw12&lt;/code&gt; / &lt;code&gt;.mp4&lt;/code&gt; / &lt;code&gt;.jpg&lt;/code&gt; 等目标文件，且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="22-stability-摄像头稳定性与并发"&gt;2.2 Stability 摄像头稳定性与并发&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;文件路径&lt;/th&gt;
&lt;th&gt;用例 / 用例族&lt;/th&gt;
&lt;th&gt;测试点&lt;/th&gt;
&lt;th&gt;Pass 条件&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_2_0/Stability/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX577SnapshotDisplayPreview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX577 display preview + snapshot&lt;/td&gt;
&lt;td&gt;生成 &lt;code&gt;snapshot*&lt;/code&gt; 文件，大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX577LiveSnapshotDisplayPreview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX577 预览 + 录像 + live snapshot&lt;/td&gt;
&lt;td&gt;子进程 &lt;code&gt;IMX577LSDPCon&lt;/code&gt; 执行成功；snapshot 和 mp4 都存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DualCameraConcurrency&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;双摄并发：IMX577 live snapshot + OV9282 tracking preview&lt;/td&gt;
&lt;td&gt;两个并发子进程都 Pass；主摄 snapshot/video 成功，tracking camera preview 成功&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;FourIMX577Concurrency&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;四路 IMX577 并发录像&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/data/output/&lt;/code&gt; 中生成 &lt;code&gt;mux0_264.mp4&lt;/code&gt;、&lt;code&gt;mux1_264.mp4&lt;/code&gt;、&lt;code&gt;mux2_264.mp4&lt;/code&gt;、&lt;code&gt;mux3_264.mp4&lt;/code&gt;，全部大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SevenCameraConcurrency&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;七摄并发：2 路 IMX577、3 路 OV9282、2 路 GMSL&lt;/td&gt;
&lt;td&gt;所有 7 个子摄像头进程都 Pass；IMX577 要生成 jpg + mp4；OV9282 要生成 raw10；GMSL 要生成 raw12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;TwoOV9282DisplayPreview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;两路 OV9282 同时 display preview&lt;/td&gt;
&lt;td&gt;两路 pipeline 都成功进入 PLAYING，日志中有 &lt;code&gt;Pipeline state change was successful&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_2_0&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;TwoGMSLDisplayPreview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;两路 GMSL 同时 display preview&lt;/td&gt;
&lt;td&gt;两路 GMSL 子进程都 Pass，日志中有 pipeline 成功状态&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="23-camera-通用-gsthal3lbt-测试"&gt;2.3 Camera 通用 GST/HAL3/LBT 测试&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;文件路径&lt;/th&gt;
&lt;th&gt;用例 / 用例族&lt;/th&gt;
&lt;th&gt;测试点&lt;/th&gt;
&lt;th&gt;Pass 条件&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_1_1 / 2_0 复用&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_1_1/Camera/CameraGST.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GSTCamera&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;从 JSON 读取 GStreamer 命令，执行单摄/多摄 preview、video、snapshot、参数测试&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pipeline_res&lt;/code&gt;、&lt;code&gt;video_res&lt;/code&gt;、&lt;code&gt;preview_res&lt;/code&gt; 全部为 True&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_1_1 / 2_0 复用&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraStartStopSequence&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;多摄启动/停止顺序组合测试&lt;/td&gt;
&lt;td&gt;所有排列组合的 pipeline、video、preview 检查均通过；没有失败子目录&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_1_1 / 2_0 复用&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraLongDuration&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;长时间 Camera 稳定性测试&lt;/td&gt;
&lt;td&gt;在 &lt;code&gt;GlobalVariable.test_time&lt;/code&gt; 内循环检查：pipeline 正常、video 正常、preview 正常、GST log 无错误、无 coredump&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_1_1 / 2_0 复用&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_1_1/Camera/CameraHAL3.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraHAL3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;使用 &lt;code&gt;camx-hal3-test&lt;/code&gt; 测 HAL3 preview/video/snapshot&lt;/td&gt;
&lt;td&gt;app 启动成功；preview/video/snapshot dump 存在且大小 &amp;gt; 0；无 crash dump；性能用例 fps 达标&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_1_1 / 2_0 复用&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraHAL3LongDuration&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;HAL3 长时间测试&lt;/td&gt;
&lt;td&gt;指定时间内多轮 dump 检查均正常；无 crash；最后设置 PASS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QRB5165_UBUN_1_1 / 2_0 复用&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QRB5165_UBUN_1_1/Camera/CameraFRandLBT.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;yavta&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;USB/V4L2/yavta camera buffer 采集&lt;/td&gt;
&lt;td&gt;log 中出现 &lt;code&gt;buffers released&lt;/code&gt;，或生成 &lt;code&gt;testyuv*&lt;/code&gt; 文件且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="3-qcs610_le_1_0_c2-摄像头用例"&gt;3. QCS610_LE_1_0_C2 摄像头用例&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;文件路径&lt;/th&gt;
&lt;th&gt;用例 / 用例族&lt;/th&gt;
&lt;th&gt;测试点&lt;/th&gt;
&lt;th&gt;Pass 条件&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QCS610_LE_1_0_C2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS610_LE_1_0_C2/Stability/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX577Snapshot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX577 预览 + 拍照&lt;/td&gt;
&lt;td&gt;生成 &lt;code&gt;snapshot*.jpg&lt;/code&gt; 且大小 &amp;gt; 0；生成 &lt;code&gt;frame*.yuv&lt;/code&gt; 且大小 &amp;gt; 0；两者都满足才 Pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS610_LE_1_0_C2&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX577LiveSnapshot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX577 预览 + snapshot + H.264 录像&lt;/td&gt;
&lt;td&gt;&lt;code&gt;snapshot*.jpg&lt;/code&gt;、&lt;code&gt;frame*.yuv&lt;/code&gt;、&lt;code&gt;mux1.mp4&lt;/code&gt; 均存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS610_LE_1_0_C2&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;USBCameraVideoRecording&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;USB Camera 录像，&lt;code&gt;v4l2src&lt;/code&gt; 采集&lt;/td&gt;
&lt;td&gt;log 中包含 &lt;code&gt;Execution ended&lt;/code&gt;，且不包含 error；&lt;code&gt;/tmp/uvc.mp4&lt;/code&gt; 存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS610_LE_1_0_C2&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;USBCameraCon&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;USB Camera 并发封装录像&lt;/td&gt;
&lt;td&gt;与 &lt;code&gt;USBCameraVideoRecording&lt;/code&gt; 类似；mp4 存在且大小 &amp;gt; 0 后子进程 Pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS610_LE_1_0_C2&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX577VideoRecordingPreview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX577 preview + video recording&lt;/td&gt;
&lt;td&gt;子进程 &lt;code&gt;IMX577VideoRecordingPreviewCon&lt;/code&gt; Pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS610_LE_1_0_C2&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX577VideoRecordingPreviewCon&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;预览帧 dump + 录像&lt;/td&gt;
&lt;td&gt;&lt;code&gt;frame*.yuv&lt;/code&gt; 存在且大小 &amp;gt; 0；&lt;code&gt;mux1.mp4&lt;/code&gt; 存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="4-qcs8550_le_1_0-摄像头用例"&gt;4. QCS8550_LE_1_0 摄像头用例&lt;/h2&gt;
&lt;h3 id="41-ausanity-单摄"&gt;4.1 AUSanity 单摄&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;文件路径&lt;/th&gt;
&lt;th&gt;用例 / 用例族&lt;/th&gt;
&lt;th&gt;测试点&lt;/th&gt;
&lt;th&gt;Pass 条件&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QCS8550_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX766.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX766Preview / Snapshot / LiveSnapshot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX766 主摄 4K/8K 预览、拍照、边录边拍&lt;/td&gt;
&lt;td&gt;pipeline 进入 PLAYING；对应 YUV/JPG/MP4 文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8550_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX688.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IMX688LiveSnapshot&lt;/code&gt; 等&lt;/td&gt;
&lt;td&gt;IMX688 预览、录像、live snapshot&lt;/td&gt;
&lt;td&gt;目标输出文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8550_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraOV64B40.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraOV64B40&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OV64B40 4K preview/video&lt;/td&gt;
&lt;td&gt;预览或视频输出存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8550_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraS5K3M5.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraS5K3M5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;S5K3M5 RAW10 / RDI dump&lt;/td&gt;
&lt;td&gt;RAW/YUV dump 存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8550_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraOV9282.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraOV9282&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OV9282 tracking camera&lt;/td&gt;
&lt;td&gt;RAW10 或 preview dump 存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8550_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraGMSL.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CameraGMSL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GMSL preview、raw、video、snapshot&lt;/td&gt;
&lt;td&gt;对应 raw12/mp4/jpg/yuv 文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="42-并发--压力"&gt;4.2 并发 / 压力&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;文件路径&lt;/th&gt;
&lt;th&gt;用例 / 用例族&lt;/th&gt;
&lt;th&gt;测试点&lt;/th&gt;
&lt;th&gt;Pass 条件&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QCS8550_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraConcurrency.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;FourCameraConcurrency&lt;/code&gt; 或 HDK/HAL 四摄相关&lt;/td&gt;
&lt;td&gt;四摄并发，通常覆盖 IMX766、IMX688、OV64B40、S5K3M5&lt;/td&gt;
&lt;td&gt;四路 camera 输出均存在，且文件大小 &amp;gt; 0；所有子进程 Pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8550_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/Stability/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Camera stability 用例&lt;/td&gt;
&lt;td&gt;长时间摄像头压力 / 多轮稳定性&lt;/td&gt;
&lt;td&gt;测试周期内无 crash、无 coredump、输出正常、fps/日志检查正常&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8550_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8550_LE_1_0/Stability/NonGPU/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NonGPU Camera 压力&lt;/td&gt;
&lt;td&gt;非 GPU 场景下摄像头稳定性&lt;/td&gt;
&lt;td&gt;同稳定性逻辑：pipeline 正常、输出正常、无 error&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="5-qcs8625_le_1_0-摄像头用例"&gt;5. QCS8625_LE_1_0 摄像头用例&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;文件路径&lt;/th&gt;
&lt;th&gt;用例 / 用例族&lt;/th&gt;
&lt;th&gt;测试点&lt;/th&gt;
&lt;th&gt;Pass 条件&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QCS8625_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraIMX766.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX766 相关&lt;/td&gt;
&lt;td&gt;主摄 preview/snapshot/live snapshot&lt;/td&gt;
&lt;td&gt;输出文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8625_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraIMX688.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX688 相关&lt;/td&gt;
&lt;td&gt;预览、录像、快照&lt;/td&gt;
&lt;td&gt;输出文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8625_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraOV64B40.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OV64B40 相关&lt;/td&gt;
&lt;td&gt;4K preview/video&lt;/td&gt;
&lt;td&gt;输出文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8625_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraS5K3M5.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;S5K3M5 相关&lt;/td&gt;
&lt;td&gt;RAW10/RDI dump&lt;/td&gt;
&lt;td&gt;raw/yuv 输出存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8625_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraOV9282.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OV9282 相关&lt;/td&gt;
&lt;td&gt;tracking camera preview/raw dump&lt;/td&gt;
&lt;td&gt;raw10 或 preview dump 存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8625_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraGMSL.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GMSL 相关&lt;/td&gt;
&lt;td&gt;GMSL preview/video/raw/snapshot&lt;/td&gt;
&lt;td&gt;raw12/mp4/jpg/yuv 等存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8625_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraConcurrency.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;并发 camera&lt;/td&gt;
&lt;td&gt;多摄并发&lt;/td&gt;
&lt;td&gt;所有并发子摄像头均 Pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCS8625_LE_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/QCS8625_LE_1_0/Stability/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Camera stability&lt;/td&gt;
&lt;td&gt;稳定性压力&lt;/td&gt;
&lt;td&gt;指定时间内无错误、输出正常、无 crash&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="6-cq7790m_le_1_5-摄像头用例"&gt;6. CQ7790M_LE_1_5 摄像头用例&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;文件路径&lt;/th&gt;
&lt;th&gt;用例 / 用例族&lt;/th&gt;
&lt;th&gt;测试点&lt;/th&gt;
&lt;th&gt;Pass 条件&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CQ7790M_LE_1_5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraIMX766.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX766&lt;/td&gt;
&lt;td&gt;preview/snapshot/live snapshot&lt;/td&gt;
&lt;td&gt;输出文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CQ7790M_LE_1_5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraIMX688.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX688&lt;/td&gt;
&lt;td&gt;preview/video/snapshot&lt;/td&gt;
&lt;td&gt;输出文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CQ7790M_LE_1_5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraIMX858.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IMX858&lt;/td&gt;
&lt;td&gt;preview/video/snapshot&lt;/td&gt;
&lt;td&gt;输出文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CQ7790M_LE_1_5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraS5KJN1.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;S5KJN1&lt;/td&gt;
&lt;td&gt;preview/video/snapshot&lt;/td&gt;
&lt;td&gt;输出文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CQ7790M_LE_1_5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraOV9282.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OV9282&lt;/td&gt;
&lt;td&gt;tracking camera&lt;/td&gt;
&lt;td&gt;raw10/preview 输出存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CQ7790M_LE_1_5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraGMSL.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GMSL&lt;/td&gt;
&lt;td&gt;raw12/preview/video/snapshot&lt;/td&gt;
&lt;td&gt;输出文件存在且大小 &amp;gt; 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CQ7790M_LE_1_5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraConcurrency.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;多摄并发&lt;/td&gt;
&lt;td&gt;多路 camera 同时运行&lt;/td&gt;
&lt;td&gt;所有子 camera 结果均为 Pass&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="7-sw5100_law-系列摄像头用例"&gt;7. SW5100_LAW 系列摄像头用例&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;文件路径&lt;/th&gt;
&lt;th&gt;用例 / 用例族&lt;/th&gt;
&lt;th&gt;测试点&lt;/th&gt;
&lt;th&gt;Pass 条件&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SW5100_LAW_1_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/SW5100_LAW_1_0/PreFlight/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;PreFlight Camera&lt;/td&gt;
&lt;td&gt;Android/LAW 平台摄像头预检，snapshot / live snapshot / video&lt;/td&gt;
&lt;td&gt;输出文件生成、命令执行无 error、检查逻辑通过&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SW5100_LAW_1_1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/SW5100_LAW_1_1/PreFlight/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;PreFlight Camera&lt;/td&gt;
&lt;td&gt;前后摄 ZSL/PZSL snapshot、双摄 snapshot、双摄录像&lt;/td&gt;
&lt;td&gt;对应截图/录像文件存在；流程无异常&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SW5100_LAW_1_1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/SW5100_LAW_1_1/Sanity/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sanity Camera&lt;/td&gt;
&lt;td&gt;基础相机 sanity&lt;/td&gt;
&lt;td&gt;命令执行成功，目标输出存在&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SW5100_LAW_1_1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/SW5100_LAW_1_1/Stability/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stability Camera&lt;/td&gt;
&lt;td&gt;摄像头稳定性&lt;/td&gt;
&lt;td&gt;指定时间内无错误、输出正常&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SW5100_LAW_2_0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Case/Products/SW5100_LAW_2_0/Sanity/Camera.py&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sanity Camera&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;相关 Plan：&lt;/p&gt;</description></item><item><title>提供cloudfare的api（国内版）</title><link>http://testai666.cn/posts/%E6%8F%90%E4%BE%9Bcloudfare%E7%9A%84api%E5%9B%BD%E5%86%85%E7%89%88/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E6%8F%90%E4%BE%9Bcloudfare%E7%9A%84api%E5%9B%BD%E5%86%85%E7%89%88/</guid><description>&lt;p&gt;cloudfare现在可以用自带的创建worker，设置，比我自己找代码好用多了。&lt;/p&gt;
&lt;p&gt;现在国内好像访问不了cloudfare的地址了。。。我搞了个。设置ddns很好用。&lt;img loading="lazy" src="http://testai666.cn/posts/images/f5b35774d70c4fd9aacde3aff18ee98f.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/160907242?spm=1011.2415.3001.5331"&gt;提供cloudfare的api（国内版）&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>opencode使用记录</title><link>http://testai666.cn/posts/opencode%E4%BD%BF%E7%94%A8%E8%AE%B0%E5%BD%95/</link><pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/opencode%E4%BD%BF%E7%94%A8%E8%AE%B0%E5%BD%95/</guid><description>&lt;p&gt;使用，占用1G左右空间&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;npm&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;install&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;g&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;opencode&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;.我用的 flash  free，不开科学用不了。。。。但是用了几次就提示我额度超了得开套餐。。。比较坑。&lt;/p&gt;
&lt;p&gt;生成的一般吧能用但是不算精美。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/161343294?spm=1011.2415.3001.5331"&gt;opencode使用记录&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>用 Rust 重写 IoTAutomationFramework 的可行性分析</title><link>http://testai666.cn/posts/rust-lot/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/rust-lot/</guid><description>&lt;h2 id="-可行性评估-完全可行"&gt;📊 可行性评估：✅ 完全可行&lt;/h2&gt;
&lt;h3 id="为什么可以用-rust-重写"&gt;为什么可以用 Rust 重写？&lt;/h3&gt;
&lt;h4 id="1-核心功能都有-rust-替代方案"&gt;1. &lt;strong&gt;核心功能都有 Rust 替代方案&lt;/strong&gt;&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Python 组件&lt;/th&gt;
&lt;th&gt;Rust 替代方案&lt;/th&gt;
&lt;th&gt;成熟度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ADB 命令执行&lt;/td&gt;
&lt;td&gt;&lt;code&gt;std::process::Command&lt;/code&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;code&gt;tokio::process&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ 完美&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSON 解析&lt;/td&gt;
&lt;td&gt;&lt;code&gt;serde_json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ 完美&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XML 解析&lt;/td&gt;
&lt;td&gt;&lt;code&gt;quick-xml&lt;/code&gt;, &lt;code&gt;roxmltree&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ 完美&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTP 请求&lt;/td&gt;
&lt;td&gt;&lt;code&gt;reqwest&lt;/code&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;code&gt;log&lt;/code&gt;, &lt;code&gt;tracing&lt;/code&gt;, &lt;code&gt;env_logger&lt;/code&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;code&gt;regex&lt;/code&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;code&gt;std::fs&lt;/code&gt;, &lt;code&gt;tokio::fs&lt;/code&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;code&gt;serialport&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ 完美&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSH 连接&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ssh2&lt;/code&gt;, &lt;code&gt;russh&lt;/code&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;code&gt;tokio&lt;/code&gt;, &lt;code&gt;async-std&lt;/code&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;code&gt;clap&lt;/code&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;code&gt;config&lt;/code&gt;, &lt;code&gt;toml&lt;/code&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;code&gt;#[test]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ 完美&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTML 生成&lt;/td&gt;
&lt;td&gt;&lt;code&gt;askama&lt;/code&gt;, &lt;code&gt;tera&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ 完美&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="2-uiautomator2-的替代方案"&gt;2. &lt;strong&gt;UIAutomator2 的替代方案&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;挑战&lt;/strong&gt;: Python 的 &lt;code&gt;uiautomator2&lt;/code&gt; 没有直接的 Rust 等价物&lt;/p&gt;</description></item><item><title>freebuff国内用不了</title><link>http://testai666.cn/posts/freebuff%E5%9B%BD%E5%86%85%E7%94%A8%E4%B8%8D%E4%BA%86/</link><pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/freebuff%E5%9B%BD%E5%86%85%E7%94%A8%E4%B8%8D%E4%BA%86/</guid><description>&lt;p&gt;这个，有没有大佬能用的&lt;img loading="lazy" src="http://testai666.cn/posts/images/3faf900daf0e4df5a9f327143e30645c.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/160940927?spm=1011.2415.3001.5331"&gt;freebuff国内用不了&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>iPhone 11至iPhone 17系列全型号详细参数对比</title><link>http://testai666.cn/posts/iphone_11%E8%87%B3iphone_17%E7%B3%BB%E5%88%97%E5%85%A8%E5%9E%8B%E5%8F%B7%E8%AF%A6%E7%BB%86%E5%8F%82%E6%95%B0%E5%AF%B9%E6%AF%94/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/iphone_11%E8%87%B3iphone_17%E7%B3%BB%E5%88%97%E5%85%A8%E5%9E%8B%E5%8F%B7%E8%AF%A6%E7%BB%86%E5%8F%82%E6%95%B0%E5%AF%B9%E6%AF%94/</guid><description>&lt;h3 id="-核心性能与屏幕参数"&gt;📱 核心性能与屏幕参数&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;机型&lt;/th&gt;
&lt;th&gt;芯片&lt;/th&gt;
&lt;th&gt;屏幕尺寸与材质&lt;/th&gt;
&lt;th&gt;屏幕刷新率&lt;/th&gt;
&lt;th&gt;峰值亮度 (HDR/户外)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11&lt;/td&gt;
&lt;td&gt;A13 仿生&lt;/td&gt;
&lt;td&gt;6.1英寸 LCD&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;625尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro&lt;/td&gt;
&lt;td&gt;A13 仿生&lt;/td&gt;
&lt;td&gt;5.8英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;800尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro Max&lt;/td&gt;
&lt;td&gt;A13 仿生&lt;/td&gt;
&lt;td&gt;6.5英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;800尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12&lt;/td&gt;
&lt;td&gt;A14 仿生&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 mini&lt;/td&gt;
&lt;td&gt;A14 仿生&lt;/td&gt;
&lt;td&gt;5.4英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro&lt;/td&gt;
&lt;td&gt;A14 仿生&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro Max&lt;/td&gt;
&lt;td&gt;A14 仿生&lt;/td&gt;
&lt;td&gt;6.7英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13&lt;/td&gt;
&lt;td&gt;A15 仿生&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 mini&lt;/td&gt;
&lt;td&gt;A15 仿生&lt;/td&gt;
&lt;td&gt;5.4英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro&lt;/td&gt;
&lt;td&gt;A15 仿生&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro Max&lt;/td&gt;
&lt;td&gt;A15 仿生&lt;/td&gt;
&lt;td&gt;6.7英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14&lt;/td&gt;
&lt;td&gt;A15 仿生&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Plus&lt;/td&gt;
&lt;td&gt;A15 仿生&lt;/td&gt;
&lt;td&gt;6.7英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1200尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro&lt;/td&gt;
&lt;td&gt;A16 仿生&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;1600尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro Max&lt;/td&gt;
&lt;td&gt;A16 仿生&lt;/td&gt;
&lt;td&gt;6.7英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;1600尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15&lt;/td&gt;
&lt;td&gt;A16 仿生&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1600尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Plus&lt;/td&gt;
&lt;td&gt;A16 仿生&lt;/td&gt;
&lt;td&gt;6.7英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;1600尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro&lt;/td&gt;
&lt;td&gt;A17 Pro&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;2000尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro Max&lt;/td&gt;
&lt;td&gt;A17 Pro&lt;/td&gt;
&lt;td&gt;6.7英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;2000尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16&lt;/td&gt;
&lt;td&gt;A17 Pro&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;2000尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Plus&lt;/td&gt;
&lt;td&gt;A17 Pro&lt;/td&gt;
&lt;td&gt;6.7英寸 OLED&lt;/td&gt;
&lt;td&gt;60Hz&lt;/td&gt;
&lt;td&gt;2000尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro&lt;/td&gt;
&lt;td&gt;A18 Pro&lt;/td&gt;
&lt;td&gt;6.3英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;2000尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro Max&lt;/td&gt;
&lt;td&gt;A18 Pro&lt;/td&gt;
&lt;td&gt;6.9英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;2000尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17&lt;/td&gt;
&lt;td&gt;A18 Pro&lt;/td&gt;
&lt;td&gt;6.1英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;2000尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro&lt;/td&gt;
&lt;td&gt;A18 Pro&lt;/td&gt;
&lt;td&gt;6.3英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;2000尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro Max&lt;/td&gt;
&lt;td&gt;A18 Pro&lt;/td&gt;
&lt;td&gt;6.9英寸 OLED&lt;/td&gt;
&lt;td&gt;120Hz (ProMotion)&lt;/td&gt;
&lt;td&gt;2000尼特&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="-系统参数"&gt;📸 系统参数&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;机型&lt;/th&gt;
&lt;th&gt;后置主摄 (广角)&lt;/th&gt;
&lt;th&gt;超广角镜头&lt;/th&gt;
&lt;th&gt;长焦镜头 (光变)&lt;/th&gt;
&lt;th&gt;前置摄像头&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万 (2倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro Max&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万 (2倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 mini&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万 (2倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro Max&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万 (2.5倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 mini&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万 (3倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro Max&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万 (3倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Plus&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万 (3倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro Max&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万 (3倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无 (支持2倍无损裁切)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Plus&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无 (支持2倍无损裁切)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;1200万 (3倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro Max&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;4800万 (5倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无 (支持2倍无损裁切)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Plus&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;无 (支持2倍无损裁切)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;4800万 (5倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro Max&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;4800万 (5倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;4800万 (5倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;4800万 (5倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro Max&lt;/td&gt;
&lt;td&gt;4800万像素&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;td&gt;4800万 (5倍)&lt;/td&gt;
&lt;td&gt;1200万像素&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="-续航与充电参数"&gt;🔋 续航与充电参数&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;机型&lt;/th&gt;
&lt;th&gt;电池容量 (典型值)&lt;/th&gt;
&lt;th&gt;视频播放时长 (小时)&lt;/th&gt;
&lt;th&gt;有线充电功率&lt;/th&gt;
&lt;th&gt;无线充电&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11&lt;/td&gt;
&lt;td&gt;3110mAh&lt;/td&gt;
&lt;td&gt;17小时&lt;/td&gt;
&lt;td&gt;18W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro&lt;/td&gt;
&lt;td&gt;3046mAh&lt;/td&gt;
&lt;td&gt;18小时&lt;/td&gt;
&lt;td&gt;18W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro Max&lt;/td&gt;
&lt;td&gt;3418mAh&lt;/td&gt;
&lt;td&gt;20小时&lt;/td&gt;
&lt;td&gt;18W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12&lt;/td&gt;
&lt;td&gt;2815mAh&lt;/td&gt;
&lt;td&gt;17小时&lt;/td&gt;
&lt;td&gt;20W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 mini&lt;/td&gt;
&lt;td&gt;2227mAh&lt;/td&gt;
&lt;td&gt;15小时&lt;/td&gt;
&lt;td&gt;20W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro&lt;/td&gt;
&lt;td&gt;2815mAh&lt;/td&gt;
&lt;td&gt;17小时&lt;/td&gt;
&lt;td&gt;20W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro Max&lt;/td&gt;
&lt;td&gt;3687mAh&lt;/td&gt;
&lt;td&gt;20小时&lt;/td&gt;
&lt;td&gt;20W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13&lt;/td&gt;
&lt;td&gt;3227mAh&lt;/td&gt;
&lt;td&gt;19小时&lt;/td&gt;
&lt;td&gt;27W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 mini&lt;/td&gt;
&lt;td&gt;2406mAh&lt;/td&gt;
&lt;td&gt;17小时&lt;/td&gt;
&lt;td&gt;27W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro&lt;/td&gt;
&lt;td&gt;3095mAh&lt;/td&gt;
&lt;td&gt;22小时&lt;/td&gt;
&lt;td&gt;27W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro Max&lt;/td&gt;
&lt;td&gt;4352mAh&lt;/td&gt;
&lt;td&gt;28小时&lt;/td&gt;
&lt;td&gt;27W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14&lt;/td&gt;
&lt;td&gt;3279mAh&lt;/td&gt;
&lt;td&gt;20小时&lt;/td&gt;
&lt;td&gt;27W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Plus&lt;/td&gt;
&lt;td&gt;4325mAh&lt;/td&gt;
&lt;td&gt;26小时&lt;/td&gt;
&lt;td&gt;27W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro&lt;/td&gt;
&lt;td&gt;3200mAh&lt;/td&gt;
&lt;td&gt;23小时&lt;/td&gt;
&lt;td&gt;27W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro Max&lt;/td&gt;
&lt;td&gt;4323mAh&lt;/td&gt;
&lt;td&gt;29小时&lt;/td&gt;
&lt;td&gt;27W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15&lt;/td&gt;
&lt;td&gt;3349mAh&lt;/td&gt;
&lt;td&gt;26小时&lt;/td&gt;
&lt;td&gt;35W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Plus&lt;/td&gt;
&lt;td&gt;4383mAh&lt;/td&gt;
&lt;td&gt;26小时&lt;/td&gt;
&lt;td&gt;35W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro&lt;/td&gt;
&lt;td&gt;3274mAh&lt;/td&gt;
&lt;td&gt;23小时&lt;/td&gt;
&lt;td&gt;35W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro Max&lt;/td&gt;
&lt;td&gt;4422mAh&lt;/td&gt;
&lt;td&gt;29小时&lt;/td&gt;
&lt;td&gt;35W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16&lt;/td&gt;
&lt;td&gt;3558mAh&lt;/td&gt;
&lt;td&gt;22小时&lt;/td&gt;
&lt;td&gt;35W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Plus&lt;/td&gt;
&lt;td&gt;4674mAh&lt;/td&gt;
&lt;td&gt;24小时&lt;/td&gt;
&lt;td&gt;35W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro&lt;/td&gt;
&lt;td&gt;3582mAh&lt;/td&gt;
&lt;td&gt;25小时&lt;/td&gt;
&lt;td&gt;35W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro Max&lt;/td&gt;
&lt;td&gt;4685mAh&lt;/td&gt;
&lt;td&gt;28小时&lt;/td&gt;
&lt;td&gt;35W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17&lt;/td&gt;
&lt;td&gt;3700mAh&lt;/td&gt;
&lt;td&gt;24小时&lt;/td&gt;
&lt;td&gt;45W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro&lt;/td&gt;
&lt;td&gt;3850mAh&lt;/td&gt;
&lt;td&gt;26小时&lt;/td&gt;
&lt;td&gt;45W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro Max&lt;/td&gt;
&lt;td&gt;4800mAh&lt;/td&gt;
&lt;td&gt;30小时&lt;/td&gt;
&lt;td&gt;45W&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="-外观与接口参数"&gt;📏 外观与接口参数&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;机型&lt;/th&gt;
&lt;th&gt;机身尺寸 (高×宽×厚 mm)&lt;/th&gt;
&lt;th&gt;机身重量 (g)&lt;/th&gt;
&lt;th&gt;接口类型&lt;/th&gt;
&lt;th&gt;特殊设计&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11&lt;/td&gt;
&lt;td&gt;150.9 × 75.7 × 8.3&lt;/td&gt;
&lt;td&gt;194&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;铝合金边框&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro&lt;/td&gt;
&lt;td&gt;144.0 × 71.4 × 8.1&lt;/td&gt;
&lt;td&gt;188&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;不锈钢边框&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro Max&lt;/td&gt;
&lt;td&gt;158.0 × 77.8 × 8.1&lt;/td&gt;
&lt;td&gt;226&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;不锈钢边框&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12&lt;/td&gt;
&lt;td&gt;146.7 × 71.5 × 7.4&lt;/td&gt;
&lt;td&gt;162&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;直角边框&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 mini&lt;/td&gt;
&lt;td&gt;131.5 × 64.2 × 7.4&lt;/td&gt;
&lt;td&gt;133&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;直角边框&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro&lt;/td&gt;
&lt;td&gt;146.7 × 71.5 × 7.4&lt;/td&gt;
&lt;td&gt;187&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;直角边框&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro Max&lt;/td&gt;
&lt;td&gt;160.8 × 78.1 × 7.4&lt;/td&gt;
&lt;td&gt;226&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;直角边框&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13&lt;/td&gt;
&lt;td&gt;146.7 × 71.5 × 7.65&lt;/td&gt;
&lt;td&gt;173&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;刘海缩小&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 mini&lt;/td&gt;
&lt;td&gt;131.5 × 64.2 × 7.65&lt;/td&gt;
&lt;td&gt;140&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;刘海缩小&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro&lt;/td&gt;
&lt;td&gt;146.7 × 71.5 × 7.65&lt;/td&gt;
&lt;td&gt;203&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;刘海缩小&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro Max&lt;/td&gt;
&lt;td&gt;160.8 × 78.1 × 7.65&lt;/td&gt;
&lt;td&gt;238&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;刘海缩小&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14&lt;/td&gt;
&lt;td&gt;146.7 × 71.5 × 7.8&lt;/td&gt;
&lt;td&gt;172&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;卫星紧急联络&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Plus&lt;/td&gt;
&lt;td&gt;160.8 × 78.1 × 7.8&lt;/td&gt;
&lt;td&gt;203&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;卫星紧急联络&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro&lt;/td&gt;
&lt;td&gt;147.5 × 71.5 × 7.85&lt;/td&gt;
&lt;td&gt;206&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;灵动岛设计&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro Max&lt;/td&gt;
&lt;td&gt;160.7 × 77.6 × 7.85&lt;/td&gt;
&lt;td&gt;240&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;灵动岛设计&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15&lt;/td&gt;
&lt;td&gt;147.6 × 71.6 × 7.8&lt;/td&gt;
&lt;td&gt;171&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;磨砂玻璃背板&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Plus&lt;/td&gt;
&lt;td&gt;160.9 × 77.8 × 7.8&lt;/td&gt;
&lt;td&gt;201&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;磨砂玻璃背板&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro&lt;/td&gt;
&lt;td&gt;146.6 × 70.6 × 8.25&lt;/td&gt;
&lt;td&gt;187&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;钛金属边框&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro Max&lt;/td&gt;
&lt;td&gt;159.9 × 76.7 × 8.25&lt;/td&gt;
&lt;td&gt;221&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;钛金属边框&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16&lt;/td&gt;
&lt;td&gt;147.6 × 71.6 × 7.8&lt;/td&gt;
&lt;td&gt;170&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;相机控制按键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Plus&lt;/td&gt;
&lt;td&gt;160.9 × 77.8 × 7.8&lt;/td&gt;
&lt;td&gt;199&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;相机控制按键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro&lt;/td&gt;
&lt;td&gt;149.6 × 71.5 × 8.25&lt;/td&gt;
&lt;td&gt;199&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;钛金属，相机控制按键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro Max&lt;/td&gt;
&lt;td&gt;163.0 × 77.6 × 8.25&lt;/td&gt;
&lt;td&gt;227&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;钛金属，相机控制按键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17&lt;/td&gt;
&lt;td&gt;149.0 × 71.0 × 8.1&lt;/td&gt;
&lt;td&gt;195&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;超薄灵动岛&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro&lt;/td&gt;
&lt;td&gt;151.0 × 72.0 × 8.1&lt;/td&gt;
&lt;td&gt;215&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;超薄灵动岛&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro Max&lt;/td&gt;
&lt;td&gt;164.0 × 78.0 × 8.1&lt;/td&gt;
&lt;td&gt;235&lt;/td&gt;
&lt;td&gt;USB-C&lt;/td&gt;
&lt;td&gt;超薄灵动岛&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="-与内存参数"&gt;🧠 与内存参数&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;机型&lt;/th&gt;
&lt;th&gt;起步存储&lt;/th&gt;
&lt;th&gt;最高存储&lt;/th&gt;
&lt;th&gt;运行内存 (RAM)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11&lt;/td&gt;
&lt;td&gt;64GB&lt;/td&gt;
&lt;td&gt;256GB&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro&lt;/td&gt;
&lt;td&gt;64GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 11 Pro Max&lt;/td&gt;
&lt;td&gt;64GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12&lt;/td&gt;
&lt;td&gt;64GB&lt;/td&gt;
&lt;td&gt;256GB&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 mini&lt;/td&gt;
&lt;td&gt;64GB&lt;/td&gt;
&lt;td&gt;256GB&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 12 Pro Max&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 mini&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 13 Pro Max&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Plus&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 14 Pro Max&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Plus&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;6GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 15 Pro Max&lt;/td&gt;
&lt;td&gt;256GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Plus&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;512GB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 16 Pro Max&lt;/td&gt;
&lt;td&gt;256GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17&lt;/td&gt;
&lt;td&gt;128GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro&lt;/td&gt;
&lt;td&gt;256GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone 17 Pro Max&lt;/td&gt;
&lt;td&gt;256GB&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="-核心升级节点总结"&gt;💡 核心升级节点总结&lt;/h3&gt;
&lt;h4 id="-屏幕与设计的全面进化"&gt;🖥️ &lt;strong&gt;屏幕与设计的全面进化&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;iPhone 12&lt;/strong&gt;：全系升级 OLED 屏幕，回归直角边框设计&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iPhone 14 Pro&lt;/strong&gt;：首次引入&amp;quot;灵动岛&amp;quot;交互设计&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iPhone 13 Pro&lt;/strong&gt;：Pro 系列首次普及 120Hz ProMotion 自适应刷新率&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iPhone 17&lt;/strong&gt;：超薄灵动岛设计，进一步缩小前置摄像头区域&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/160771669?spm=1011.2415.3001.5331"&gt;iPhone 11至iPhone 17系列全型号详细参数对比&lt;/a&gt;
作者: lixusocool&lt;/p&gt;</description></item><item><title>IoTAutomationFramework_2.0 安卓测试自动化工具</title><link>http://testai666.cn/posts/iotautomationframework_2.0_%E5%AE%89%E5%8D%93%E6%B5%8B%E8%AF%95%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/iotautomationframework_2.0_%E5%AE%89%E5%8D%93%E6%B5%8B%E8%AF%95%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7/</guid><description>&lt;h2&gt;&lt;/h2&gt;
&lt;h3 id="概述"&gt;概述&lt;/h3&gt;
&lt;p&gt;这是一个基于 的 IoT 设备自动化测试框架，主要用于测试高通（Qualcomm）芯片平台的设备。&lt;/p&gt;
&lt;h3 id="核心"&gt;核心&lt;/h3&gt;
&lt;h4 id="1-adb-android-debug-bridge-"&gt;1. &lt;strong&gt;ADB (Android Debug Bridge)&lt;/strong&gt; ⭐⭐⭐⭐⭐&lt;/h4&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;:&lt;code&gt;Libs/Utilities/adb.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;设备连接和通信&lt;/li&gt;
&lt;li&gt;执行 shell 命令&lt;/li&gt;
&lt;li&gt;文件传输（push/pull）&lt;/li&gt;
&lt;li&gt;设备重启&lt;/li&gt;
&lt;li&gt;日志收集&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用示例&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; Libs.Utilities.adb &lt;span style="color:#f92672"&gt;import&lt;/span&gt; adb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 执行命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb&lt;span style="color:#f92672"&gt;.&lt;/span&gt;run_cmd(&lt;span style="color:#e6db74"&gt;&amp;#34;adb shell ls /data&amp;#34;&lt;/span&gt;, serial_number)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 推送文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb&lt;span style="color:#f92672"&gt;.&lt;/span&gt;push(local_path, remote_path, serial_number)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 拉取文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb&lt;span style="color:#f92672"&gt;.&lt;/span&gt;pull(remote_path, local_path, serial_number)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 重启设备&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb&lt;span style="color:#f92672"&gt;.&lt;/span&gt;run_cmd(&lt;span style="color:#e6db74"&gt;&amp;#34;adb reboot&amp;#34;&lt;/span&gt;, serial_number)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;支持多设备（通过 serial_number 区分）&lt;/li&gt;
&lt;li&gt;支持 ADB over WiFi&lt;/li&gt;
&lt;li&gt;自动日志记录（发送和接收的命令）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2-uiautomator2-"&gt;2. &lt;strong&gt;UIAutomator2&lt;/strong&gt; ⭐⭐⭐⭐&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;UI 自动化工具&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;库&lt;/strong&gt;:&lt;code&gt;uiautomator2&lt;/code&gt;(简称 u2)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Android UI 元素定位和操作&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;/li&gt;
&lt;li&gt;&lt;strong&gt;使用示例&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; uiautomator2 &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; u2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 连接设备&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;d &lt;span style="color:#f92672"&gt;=&lt;/span&gt; u2&lt;span style="color:#f92672"&gt;.&lt;/span&gt;connect(serial_number)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 点击按钮&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;d(resourceId&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;com.example:id/button&amp;#34;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;click()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 输入文本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;d(resourceId&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;com.example:id/edit&amp;#34;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;set_text(&lt;span style="color:#e6db74"&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 检查元素是否存在&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; d(text&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Settings&amp;#34;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;exists:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; d(text&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Settings&amp;#34;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;click()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 滑动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;d&lt;span style="color:#f92672"&gt;.&lt;/span&gt;swipe(&lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;500&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;应用场景&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;LAW (Linux Android Wear) 平台测试&lt;/li&gt;
&lt;li&gt;UI 交互测试&lt;/li&gt;
&lt;li&gt;设置配置&lt;/li&gt;
&lt;li&gt;弹窗处理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="3-ssh-"&gt;3. &lt;strong&gt;SSH&lt;/strong&gt; ⭐⭐⭐&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;远程连接工具&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Codex 配置自定义 AI API 完整指南：从零到一接入你的专属模型</title><link>http://testai666.cn/posts/codex_%E9%85%8D%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89_ai_api_%E5%AE%8C%E6%95%B4%E6%8C%87%E5%8D%97%E4%BB%8E%E9%9B%B6%E5%88%B0%E4%B8%80%E6%8E%A5%E5%85%A5%E4%BD%A0%E7%9A%84%E4%B8%93%E5%B1%9E%E6%A8%A1%E5%9E%8B/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/codex_%E9%85%8D%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89_ai_api_%E5%AE%8C%E6%95%B4%E6%8C%87%E5%8D%97%E4%BB%8E%E9%9B%B6%E5%88%B0%E4%B8%80%E6%8E%A5%E5%85%A5%E4%BD%A0%E7%9A%84%E4%B8%93%E5%B1%9E%E6%A8%A1%E5%9E%8B/</guid><description>&lt;h2 id="配置自定义-ai-api-完整指南从零到一接入你的专属模型"&gt;配置自定义 AI API 完整指南：从零到一接入你的专属模型&lt;/h2&gt;
&lt;h3 id="前言"&gt;前言&lt;/h3&gt;
&lt;p&gt;作为一名开发者，我们经常需要在终端环境中使用 AI 编程助手。 的 Codex 是一个非常强大的命令行 AI 编程工具，但默认情况下它只能调用 OpenAI 官方的 。那么问题来了：如果我们有自己的 API 服务（比如部署了国产、使用了代理服务、或者公司内部的 AI 平台），如何让 Codex 接入这些自定义的 API 呢？&lt;/p&gt;
&lt;p&gt;本文将通过一个真实的配置案例，详细讲解如何在 macOS（特别是 Mini）环境下配置 Codex，使其能够调用自定义的 AI API。整个过程涉及编写、环境变量设置、版本兼容性问题排查等，希望能帮助到遇到类似问题的开发者。&lt;/p&gt;
&lt;h3 id="一理解-codex-的架构"&gt;一、理解 Codex 的架构&lt;/h3&gt;
&lt;p&gt;在开始配置之前，我们需要理解 Codex 的基本架构。Codex 采用了一种灵活的 Provider 机制，允许用户定义多个 AI 服务提供商，并在它们之间切换。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心概念：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Provider（提供商）&lt;/strong&gt;：一个 AI 服务的具体实现，包含 API 地址、认证方式等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model（模型）&lt;/strong&gt;：Provider 提供的具体模型名称&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wire API&lt;/strong&gt;：Codex 与 Provider 之间的通信协议类型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种设计让 Codex 不仅限于 OpenAI 的服务，理论上可以接入任何兼容 OpenAI API 格式的服务。&lt;/p&gt;
&lt;h3 id="二配置前的准备工作"&gt;二、配置前的准备工作&lt;/h3&gt;
&lt;h4 id="21-确认-codex-版本"&gt;2.1 确认 Codex 版本&lt;/h4&gt;
&lt;p&gt;这是最关键的一步！不同版本的 Codex 对 API 协议的支持完全不同：&lt;/p&gt;</description></item><item><title>一文读懂AI自动化核心：Workflow与Agent的区别，建议收藏</title><link>http://testai666.cn/posts/%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82ai%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A0%B8%E5%BF%83workflow%E4%B8%8Eagent%E7%9A%84%E5%8C%BA%E5%88%AB%E5%BB%BA%E8%AE%AE%E6%94%B6%E8%97%8F/</link><pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82ai%E8%87%AA%E5%8A%A8%E5%8C%96%E6%A0%B8%E5%BF%83workflow%E4%B8%8Eagent%E7%9A%84%E5%8C%BA%E5%88%AB%E5%BB%BA%E8%AE%AE%E6%94%B6%E8%97%8F/</guid><description>&lt;p&gt;今天我们聊一个近期 AI 圈里的热门话题 — &lt;strong&gt;和 Agent&lt;/strong&gt;**。**&lt;/p&gt;
&lt;p&gt;一提到 AI，大家总说“让 AI 帮我干活”，可真要让 AI 落地做事，离不开 Workflow 与 。这俩到底在 AI 里扮演了什么角色，又有什么区别？&lt;/p&gt;
&lt;p&gt;今天我们就来详细聊聊**，揭开 AI 自动化的秘密**。&lt;/p&gt;
&lt;h2 id="1-workflow深耕多年的流程老管家"&gt;1 Workflow：深耕多年的“流程老管家”&lt;/h2&gt;
&lt;p&gt;Workflow，也叫。很多人以为它是 AI 带火的新词，其实它早就在各行业成熟应用了。比如：&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;img alt="在这里插入图片描述" loading="lazy" src="http://testai666.cn/posts/images/0a24fbf3c0e943e9b84b7e5302909a5a.png"&gt;&lt;/p&gt;
&lt;p&gt;这些场景的本质就是&lt;strong&gt;提前把规则写死，严格按照预设步骤执行&lt;/strong&gt;。就像工厂里的流水线，螺丝拧几圈、零件放哪里，早就定好了，工人只要按流程走就行。&lt;/p&gt;
&lt;p&gt;&lt;img alt="在这里插入图片描述" loading="lazy" src="http://testai666.cn/posts/images/1e91fe3e3e0e4e658f5484af134f1349.png"&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;ol&gt;
&lt;li&gt;编排：接下来按哪条路走？&lt;/li&gt;
&lt;/ol&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;ol&gt;
&lt;li&gt;结束：怎么收尾？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;流程跑完后，再把结果告知相关人，更新状态、保存记录，让这件事有一个完整闭环。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" src="http://testai666.cn/posts/images/b49c0893795978ce1081352a83924c48.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;可以说，传统 Workflow 就像一套&lt;strong&gt;按部就班、严谨执行&lt;/strong&gt;的固定“剧本”，不会自主思考、也不会灵活变通。&lt;/p&gt;
&lt;p&gt;而当 AI 时代到来，&lt;strong&gt;Workflow 也迎来了新的角色与价值&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;AI 的落地离不开（LLM），但大模型再智能，也只是一个擅长理解生成、却不懂统筹调度的“超级大脑”。当我们需要把零散的思考变成可执行的步骤时，就需要一个统一调度的角色 — &lt;strong&gt;Workflow&lt;/strong&gt;。它会决定什么时候调用大模型、让它处理什么内容、结果传给谁、下一步怎么走。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" src="http://testai666.cn/posts/images/845196dfae63f07c575e213569d9c251.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;正是这样，传统工作流才真正具备了理解意图、生成内容的智能能力，升级为 AI Workflow。&lt;/p&gt;
&lt;p&gt;比如 AI 智能客服，它的流程非常清晰：&lt;/p&gt;
&lt;p&gt;用户咨询 → 大模型识别意图 → 生成应对答案 → 回复用户。&lt;/p&gt;
&lt;p&gt;还有常用的 AI 生成社交文案的流程：&lt;/p&gt;
&lt;p&gt;输入需求 → 大模型提取关键词 → 生成文案 → 人工微调 → 发布&lt;/p&gt;</description></item><item><title>Agent-browser浏览器自动化CLI</title><link>http://testai666.cn/posts/agent-browser%E6%B5%8F%E8%A7%88%E5%99%A8%E8%87%AA%E5%8A%A8%E5%8C%96cli/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/agent-browser%E6%B5%8F%E8%A7%88%E5%99%A8%E8%87%AA%E5%8A%A8%E5%8C%96cli/</guid><description>&lt;p&gt;&lt;img alt="Agent-browser浏览器自动化CLI" loading="lazy" src="http://testai666.cn/posts/images/dda43e169ec7fb82843208de562fb30d.webp"&gt;&lt;/p&gt;
&lt;p&gt;跨平台、功能丰富、极快：重新定义AI上下文通信的优先紧凑文本输出。&lt;/p&gt;
&lt;p&gt;对于者来说，在开发AI Agent时与浏览器交互是一个频繁的过程。让AI Agent更高效地操作浏览器是一个具有挑战性的问题。最近，在搜索AI测试解决方案时，我发现了Vercel开源的agent-browser，这是一款专为AI Agent设计的自动化CLI。&lt;/p&gt;
&lt;p&gt;agent-的特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;基于引用&lt;/strong&gt;：快照返回带有引用的可访问树。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent优先&lt;/strong&gt;：高效利用AI上下文，节省token。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;会话&lt;/strong&gt;：支持多个具有独立身份验证的隔离浏览器实例。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;功能完整&lt;/strong&gt;：支持超过50个命令，包括导航、表单操作和截图。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨平台&lt;/strong&gt;：支持macOS、Linux和Windows平台。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="1安装agent-browser"&gt;1、安装agent-browser&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;在安装agent-browser之前，请确保您的计算机上已安装Node.js。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在命令行中输入以下命令。&lt;code&gt;-g&lt;/code&gt;选项表示全局安装。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;npm install -g agent-browser
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;成功安装agent-browser CLI后，继续输入命令&lt;code&gt;agent-browser install&lt;/code&gt;，这将开始下载Chromium浏览器。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;安装Chromium浏览器...
需要安装以下软件包：
playwright@1.58.2
确定继续？(y) y
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;成功安装Chromium浏览器后，命令行将输出成功安装的消息。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;正在下载Chrome for Testing 145.0.7632.6 (playwright chromium v1208)...
162.3 MiB [====================] 100% 0.0s
...
✓ Chromium安装成功
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="2使用agent-browser"&gt;2、使用agent-browser&lt;/h3&gt;
&lt;h4 id="21-打开网页"&gt;2.1 打开网页&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;agent-browser open https://agent-browser.dev/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;输出：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;✓ 无头浏览器自动化 for AI
https://agent-browser.dev/
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="22-获取当前网页的可访问树"&gt;2.2 获取当前网页的可访问树&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;agent-browser snapshot -i
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;输出：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- 链接 &amp;#34;Made with love by Vercel&amp;#34; [ref=e1]
- 链接 &amp;#34;agent-browser&amp;#34; [ref=e2]
- 链接 &amp;#34;16k&amp;#34; [ref=e3]
- 链接 &amp;#34;npm&amp;#34; [ref=e4]
...
- 按钮 &amp;#34;Ask AI&amp;#34; [ref=e26]
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="23-使用引用进行交互"&gt;2.3 使用引用进行交互&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;agent-browser click @e3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;输出：&lt;/p&gt;</description></item><item><title>开发板常见问题</title><link>http://testai666.cn/posts/%E5%BC%80%E5%8F%91%E6%9D%BF%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E5%BC%80%E5%8F%91%E6%9D%BF%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/</guid><description>&lt;table&gt;
&lt;thead&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;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;过热降频/关机&lt;/td&gt;
&lt;td&gt;40%&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐（加风扇即可）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;电源不足&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐（换好电源）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;内核/驱动崩溃&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;⭐⭐⭐（升级内核）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;内存/存储故障&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;td&gt;⭐⭐（依赖硬件质量）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;工具/配置错误&lt;/td&gt;
&lt;td&gt;5%&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐（规范操作）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/158649520?spm=1001.2014.3001.5502"&gt;开发板常见问题&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>浏览器自动化agent体验（brower-use，magentic-ui-fara7B）</title><link>http://testai666.cn/posts/%E6%B5%8F%E8%A7%88%E5%99%A8%E8%87%AA%E5%8A%A8%E5%8C%96agent%E4%BD%93%E9%AA%8Cbrower-usemagentic-ui-fara7b/</link><pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E6%B5%8F%E8%A7%88%E5%99%A8%E8%87%AA%E5%8A%A8%E5%8C%96agent%E4%BD%93%E9%AA%8Cbrower-usemagentic-ui-fara7b/</guid><description>&lt;table&gt;
&lt;thead&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;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;brower-use&lt;/td&gt;
&lt;td&gt;使用官网SDK写一个python的api，挺好用的能识别网页绿色框框数量&lt;/td&gt;
&lt;td&gt;官网api收费，使用免费的api不太好用github的部署麻烦，没有成功&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;magentic-ui-fara7B&lt;/td&gt;
&lt;td&gt;部署简单成功也能识别绿色框框&lt;/td&gt;
&lt;td&gt;调用的qubrid的api，几下就用完了。。。需要设置docker的普通用户权限&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;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/158617112?spm=1001.2014.3001.5502"&gt;浏览器自动化agent体验（brower-use，magentic-ui-fara7B）&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>成功破解geetestv4极验滑动验证码</title><link>http://testai666.cn/posts/%E6%88%90%E5%8A%9F%E7%A0%B4%E8%A7%A3geetestv4%E6%9E%81%E9%AA%8C%E6%BB%91%E5%8A%A8%E9%AA%8C%E8%AF%81%E7%A0%81/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E6%88%90%E5%8A%9F%E7%A0%B4%E8%A7%A3geetestv4%E6%9E%81%E9%AA%8C%E6%BB%91%E5%8A%A8%E9%AA%8C%E8%AF%81%E7%A0%81/</guid><description>&lt;p&gt;花了我两三天，结果还是好的达到了我的预期 (o゜▽゜)o☆[BINGO!]&lt;/p&gt;
&lt;p&gt;先看下效果：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/22e843018a6542dbacb9bf8888be20e5.gif"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/bd13ae3ce8fd4f6481bba8cde1b29923.png"&gt;&lt;/p&gt;
&lt;p&gt;如图所示脚本运行可以自动点击join按钮和滑动按钮，按时签到薅羊毛！&lt;/p&gt;
&lt;p&gt;我采用的是pyautogui+方式，非传统自动化工具如&lt;strong&gt;Selenium和Playwright，&lt;strong&gt;不过使用了&lt;/strong&gt;DrissionPage&lt;/strong&gt;来获取缺口图和背景图。&lt;/p&gt;
&lt;p&gt;已经适配windows和debian系统，最新的浏览器（其他没试）。&lt;/p&gt;
&lt;p&gt;分享源码给大家一起学习测试使用（不可用做非法用途！发生的非法事件与本人无关特此声明）&lt;/p&gt;
&lt;p&gt;：&lt;a href="https://github.com/haolixu/geetest-auto"&gt;https://github.com/haolixu/geetest-auto&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;：&lt;a href="https://gitee.com/haolixu/geetest-auto"&gt;https://gitee.com/haolixu/geetest-auto&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;那个依赖我没搞定，尝试了pip &amp;gt; requirements.txt和pipreqs . &amp;ndash;encoding=utf-8 &amp;ndash;force&lt;/p&gt;
&lt;p&gt;但是没啥用。。。还是缺依赖，你们有什么好的方法吗？&lt;/p&gt;
&lt;p&gt;需要注意的是浏览器需要设置一下：&lt;/p&gt;
&lt;p&gt;win：D:\浏览器\QQBrowser\QQBrowser.exe -sc=desktopshortcut -fixlaunch=0 &amp;mdash;debugging-port=9222&lt;/p&gt;
&lt;p&gt;：/usr/bin/qqbrowser-browser-stable %U   -sc=desktopshortcut -fixlaunch=0 &amp;ndash;remote-debugging-port=9222&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/66481d475ca94ddb89b46e72a3375d02.png"&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/021c0a97225e40d78fca6bcb9d33b535.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/158128351?spm=1001.2014.3001.5502"&gt;成功破解geetestv4极验滑动验证码&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>基于 ModelScope-Agent 框架构建可落地的大模型 Agent 应用实践</title><link>http://testai666.cn/posts/%E5%9F%BA%E4%BA%8E_modelscope-agent_%E6%A1%86%E6%9E%B6%E6%9E%84%E5%BB%BA%E5%8F%AF%E8%90%BD%E5%9C%B0%E7%9A%84%E5%A4%A7%E6%A8%A1%E5%9E%8B_agent_%E5%BA%94%E7%94%A8%E5%AE%9E%E8%B7%B5/</link><pubDate>Sun, 11 Jan 2026 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E5%9F%BA%E4%BA%8E_modelscope-agent_%E6%A1%86%E6%9E%B6%E6%9E%84%E5%BB%BA%E5%8F%AF%E8%90%BD%E5%9C%B0%E7%9A%84%E5%A4%A7%E6%A8%A1%E5%9E%8B_agent_%E5%BA%94%E7%94%A8%E5%AE%9E%E8%B7%B5/</guid><description>&lt;hr&gt;
&lt;p&gt;干货分享，感谢您的阅读！&lt;/p&gt;
&lt;p&gt;随着大语言（Large Language Model，LLM）能力的持续提升，业界对“让模型真正做事”的期待，已经从&lt;strong&gt;单轮对话生成文本&lt;/strong&gt;，转向了&lt;strong&gt;具备自主决策、工具调用与多步执行能力的 Agent（智能体）系统&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在这一演进过程中，一个逐渐清晰的共识是：&lt;strong&gt;Agent 并不是“更强的大模型”，而是“以大模型为大脑，外部系统为四肢”的工程系统。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;记忆、规划、、行动执行，这些能力本质上并不来自模型本身，而是通过工程框架将模型与外部能力进行组织、编排与约束的结果。正是在这一背景下，围绕 Agent 的研究与工程实践迅速发展，催生了诸如 &lt;strong&gt;ReAct、Auto-GPT、LangGraph、MetaGPT&lt;/strong&gt; 等一系列方法与框架。&lt;/p&gt;
&lt;p&gt;我们将聚焦于 &lt;strong&gt;ModelScope-Agent&lt;/strong&gt; 这一由阿里云魔搭社区推出的 框架，从&lt;strong&gt;能力结构、运行机制、典型任务示例与工程实践角度&lt;/strong&gt;，系统解析如何基于该框架构建一个可扩展、可落地的 Agent 应用。&lt;/p&gt;
&lt;h2 id="一为什么-agent-不等于"&gt;一、为什么 Agent 不等于？&lt;/h2&gt;
&lt;p&gt;在深入 -Agent 之前，有必要先澄清一个常见误区：&lt;strong&gt;Agent ≠ 更大的模型 ≠ 多轮 Prompt。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从系统架构视角来看，一个可用的 Agent 至少包含以下几个核心组件：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;推理核心（LLM）&lt;/strong&gt;：负责理解用户意图、进行任务拆解、生成行动决策。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具系统（Tools / Plugins）&lt;/strong&gt;：提供模型无法直接完成的能力，如搜索、计算、生成图片、调用 API 等。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;执行与调度层（Executor / Orchestrator）&lt;/strong&gt;：将模型输出的“意图”转化为真实的函数调用或外部服务请求。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;记忆系统（Memory）&lt;/strong&gt;：保存历史对话、中间结果、长期偏好，用于后续决策参考。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;规划与反思机制（Planning &amp;amp; Reflection）&lt;/strong&gt;：用于多步骤任务拆解、执行顺序安排，以及失败后的自我修正。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;从这个角度看，&lt;strong&gt;Agent 是一个系统工程问题，而不是单一模型能力问题&lt;/strong&gt;。ModelScope-Agent 正是试图在工程层面，为这些能力提供一套可组合、可扩展的实现框架。&lt;/p&gt;
&lt;h2 id="二modelscope-agent-框架概览"&gt;二、ModelScope-Agent 框架概览&lt;/h2&gt;
&lt;p&gt;ModelScope-Agent 是魔搭社区推出的一个 &lt;strong&gt;通用 Agent 开发框架&lt;/strong&gt;，其目标并非“封装一个黑盒 Agent”，而是提供：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标准化的 Agent 抽象&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;img loading="lazy" src="http://testai666.cn/posts/images/681d8cabd9e34416ab89416cd4f2156b.png"&gt;&lt;/p&gt;
&lt;p&gt;利用ModelScope-Agent框架开发的Agent，除了可以提供文本创作之外，还能生成图片、视频、语音等内容。单个Agent具有角色扮演、LLM调用、工具使用、规划、记忆等能力。 技术上主要具有以下特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;简单的Agent实现流程：仅需指定角色描述、大模型名称、工具名列表，即可实现一个Agent应用，框架内部自动实现工具使用、规划、记忆等工作流的编排。&lt;/li&gt;
&lt;li&gt;丰富的模型和工具：框架内置丰富的大模型接口，例如Dashscope和Modelscope模型接口，OpenAI模型接口等。内置丰富的工具，例如代码运行、天气查询、文生图、网页解析等，方便定制专属Agent。&lt;/li&gt;
&lt;li&gt;统一的接口和高扩展性：框架具有清晰的工具、大模型注册机制，方便用户扩展能力更加丰富的Agent应用。&lt;/li&gt;
&lt;li&gt;低耦合性：开发者可以方便地直接使用内置的工具、大模型、记忆等组件，而不需要绑定更上层的Agent。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="三modelscope-agent-的核心能力解析"&gt;三、ModelScope-Agent 的核心能力解析&lt;/h2&gt;
&lt;h3 id="一内容生成能力"&gt;（一）内容生成能力&lt;/h3&gt;
&lt;p&gt;与许多只聚焦文本任务的 Agent 框架不同，ModelScope-Agent 天然支持多模态工具接入，使 Agent 能够完成：&lt;/p&gt;</description></item><item><title>Agent记忆技术及落地实践</title><link>http://testai666.cn/posts/agent%E8%AE%B0%E5%BF%86%E6%8A%80%E6%9C%AF%E5%8F%8A%E8%90%BD%E5%9C%B0%E5%AE%9E%E8%B7%B5/</link><pubDate>Mon, 17 Nov 2025 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/agent%E8%AE%B0%E5%BF%86%E6%8A%80%E6%9C%AF%E5%8F%8A%E8%90%BD%E5%9C%B0%E5%AE%9E%E8%B7%B5/</guid><description>&lt;p&gt;做记忆模块搭建的相关研发工作，一开始认为agent的记忆就是维护上下文，应该和chatbot的对话管理差不多，但真的做一段时间之后，才发现和对话管理相比还是区别比较大的，而且记忆模块对agent的实现效果以及后期可扩展性有比较重要的影响。&lt;/p&gt;
&lt;h5 id="agent记忆与chatbot上下文的区别"&gt;&lt;strong&gt;agent记忆与chatbot上下文的区别&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;我们拿agent记忆与上下文来作下比较，暂且不考虑长期记忆，就拿短期记忆来作对比，短期记忆(工作记忆)主要就是维护上下文，更官方一点的说法就是上下文工程，那chabot的对话管理不是也是在维护上下文吗？那两者有什么区别呢？&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/01bacdcac1138f90c7e861fd3b0907a8.png"&gt;&lt;/p&gt;
&lt;h6 id="目标"&gt;&lt;strong&gt;目标&lt;/strong&gt;&lt;/h6&gt;
&lt;p&gt;agent记忆和chatbot上下文的目标看上去是一致的:给LLM/agent添加合适的状态来做下一步的决策。但是从服务对象，组织形式和维护重点的扩展来看有比较大的区别。&lt;/p&gt;
&lt;h6 id="服务对象"&gt;&lt;strong&gt;服务对象&lt;/strong&gt;&lt;/h6&gt;
&lt;p&gt;虽然两者都算是人机交互，拿服务的对象都可以算作是人，但从现阶段的主要技术实现来看，服务对象还是存在差异的。&lt;/p&gt;
&lt;p&gt;chatbot的服务对象是人这个毋庸置疑，做图灵测试也是为了验证对面和你说话的那个AI，有没有可能骗过你，而从让你以为它是个人，chatbot展开的多轮对话也是围绕人的实际需求展开。&lt;/p&gt;
&lt;p&gt;agent虽然也存在与人的交互，agentic workflow中一般也会有人工输入的节点，但现阶段我们搭建agent的主要任务，更多时候是在自动完成一个复杂任务，因此服务对象可以认为是复杂任务。&lt;/p&gt;
&lt;h6 id="组织形式"&gt;&lt;strong&gt;组织形式&lt;/strong&gt;&lt;/h6&gt;
&lt;p&gt;从组织形式上来看，由于agent具备了行动能力，所以和chabot产生了组织形式的不同。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/953d252c69328a99749f85bca9eb64ed.png"&gt;&lt;/p&gt;
&lt;p&gt;chatbot主要的构成是一问一答的形式，包括我们调用大模型api一般也遵循这个结构，可以表示为{[q0,a0],[q1,a1],&amp;hellip;[qt,at]}。&lt;/p&gt;
&lt;p&gt;agent记忆的构成以最常见的react模式为例，主要是动作(tool)和动作结果(tool_result)的时序集合，可以表示为{a0,o0,a1,01,&amp;hellip;at,ot}。&lt;/p&gt;
&lt;h6 id="维护重点"&gt;&lt;strong&gt;维护重点&lt;/strong&gt;&lt;/h6&gt;
&lt;p&gt;对于记忆和上下文，很重要的一个功能是维护，但维护的侧重点也是有所不同的。&lt;/p&gt;
&lt;p&gt;chabot的上下文虽然也存在前后关联，不会每一轮都紧密联系，但会存在频繁的意图切换，如何理解意图并且实现有效的意图切换识别是上下文维护的重点。&lt;/p&gt;
&lt;p&gt;而agent记忆的每一个步骤都是按迭代规划进行的，缺失某个步骤或跳过某个步骤都可能会导致任务失败，因此它的维护重点是如何在有限的窗口中记录对下一步决策产生影响的所需关键信息。&lt;/p&gt;
&lt;p&gt;另外agent和chatbot还存在一个很大不同的点是的必要性。对于chatbot，长期记忆主要是记住个人信息和偏好用于个性化服务。而对于agent，长期记忆需要通过情景记忆来记住之前的迭代轨迹，这样不仅能通过检索的方式来获取与当前决策相关的上下文信息，还可以实现经验复用，在下一次遇到类似任务时，可以将之前的经验作为参考,马普所今年2月份发这篇论文时候就指出情景记忆是当前agent所缺少的[1]。&lt;/p&gt;
&lt;h4 id="agent短期记忆-业界技术分享"&gt;&lt;strong&gt;agent短期记忆-业界技术分享&lt;/strong&gt;&lt;/h4&gt;
&lt;h5 id="anthropic"&gt;&lt;strong&gt;anthropic&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;anthropic提到agent在长程任务上的三种管理上下文方式[2]包括:压缩,结构化笔记和采用子agent架构。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/387d2755dd654931c7687697dd44f614.png"&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;是把关键信息以结构化形式存入笔记，让agent可以阅读到关键信息；&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;子agent架构&lt;/strong&gt;则是通过子agent维护自己的独立上下文再将关键结果返回主agent实现上下文解耦。&lt;/p&gt;
&lt;h5 id="oepnai"&gt;&lt;strong&gt;oepnai&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;openai的短期记忆管理[3]则是围绕agent sdk来谈到管理短期记忆的两个主要方式:裁剪（trimming）和压缩（summarizing）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;压缩&lt;/strong&gt;和anthropic的compact是一样的，裁剪就是把旧的历史信息直接剪掉。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;trimming&lt;/strong&gt;的好处是实现比较简单，延时友好而且不会引入偏移信息（相比压缩），但缺点也显而易见，裁剪的内容可能包含当前决策需要的信息，所以一般适用于任务独立，上下文关联不大，低延迟要求场景。&lt;/p&gt;
&lt;h5 id="langchain--manus"&gt;&lt;strong&gt;langchain &amp;amp; manus&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;langchain与最近的一次交流[4]提到manus的三种上下文管理方式:reduce ，offload context和isolate context。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/0a91b18e5dcebee1f435e386854e5c9a.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;reduce context&lt;/strong&gt;包括将工具执行结果进行压缩放在窗口内，而降完整结果保存在文件系统中，在上下文触发窗口限制时对整个轨迹进行整体压缩；&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;context isolate&lt;/strong&gt;类似于anthropic的sub agent方法，但细分为两种方式：对于简单任务main agent通过function call的方式将指令传递给子agent，子agent在自己的窗口执行任务；而对于复杂任务，子agent会和主agent共享上下文。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;context offloading&lt;/strong&gt;和anthropic的结构化笔记虽然都是将内容存入文件，但处理思路不一样。manus的方式是将大多数操作卸载到沙盒层，在沙盒中通过bash工具就可以实现多样化的文件读写操作，这样就可以把工具执行结果保存到文件，在需要时通过bash的grep等查询命令进行访问。另外manus的这个设计相当于把大部分先验知识文件化，让agent按需通过读取文件内容获取先验来指导行动，anthropic的skill实现应该也是类似的思路。&lt;/p&gt;
&lt;h5 id="agent记忆-项目实践"&gt;&lt;strong&gt;agent记忆-项目实践&lt;/strong&gt;&lt;/h5&gt;
&lt;h6 id="初版记忆实现"&gt;&lt;strong&gt;初版记忆实现&lt;/strong&gt;&lt;/h6&gt;
&lt;p&gt;在实际搭建agent时，工具模块，记忆模块，提示词模块是三个重要的基础模块。工具模块和提示词模块相对简单或者说比较成熟的方案，而记忆模块的搭建则有不同的设计思路和实现方式，但核心思路一致 - &amp;ldquo;给agent提供恰当的上下文&amp;rdquo;，但难就难在&amp;quot;恰当&amp;quot;，首先受限于LLM的上下文窗口，所以累计上下文就不能过长。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/bb300e7d10121e49b8504ca07022230d.png"&gt;&lt;/p&gt;
&lt;p&gt;另外上下文中堆积无关或者重复的内容不但会影响推理规划，也是不经济的。还有一个重要原因是上下文中的内容对于agent来说不是等权重的，对于当前决策而言，有的内容相对其它内容就会更重要，类似于需要一个attention机制来选择关键信息，那以什么形式来管理上下文获取更相信的信息加入就尤为关键了。&lt;/p&gt;
&lt;p&gt;在近期的一个agent项目实践中，实现记忆模块的初始版本，设定的原则是&amp;quot;状态是记忆的投影&amp;quot;，以记忆作为事实的唯一来源，同时要求不在agent中维护状态，把记忆事实作为状态来源，放入agent的上下文中让agent自己进行决策。思路看上去是没有问题，但实际测试后就发现想简单了。&lt;/p&gt;
&lt;p&gt;对于agent而言本身依赖的LLM是无状态的，所以agent也可以认为是无状态的，但是记忆的目的就是为了让agent具有状态。在初版的实现里，每一轮迭代都把obs写入工作记忆，同时读取当前轮之前的工作记忆中的结构化历史信息，把obs作为上下文唯一来源，直接注入到下一轮迭代的上下文，这样做是比较省事，但是一旦agent内部迭代出现问题，因为obs和工作记忆之间的这种耦合设计，很难追溯问题来源。&lt;/p&gt;
&lt;h6 id="第二版记忆重构优化"&gt;&lt;strong&gt;第二版记忆重构优化&lt;/strong&gt;&lt;/h6&gt;
&lt;p&gt;在发现第一版的问题后，开始进行第二版改进。第二版的改进主要是基于看到的相关的技术博客和论文，重新设计了记忆方案。首先记忆模块的目录设计应该把短期记忆和长期记忆做清晰分划分，维护当前agent迭代执行任务所需上下文的就是短期记忆(工作记忆)，而记录完整迭代过程的是长期记忆（情景记忆），产生对应产出的也是长期记忆(语义记忆)。其中比较容易混淆的是工作记忆和情景记忆，从持久化的角度来说，把工作记忆持久化就可以理解为情景记忆，但实际上是存在差别的。&lt;/p&gt;
&lt;p&gt;对于一个agent的迭代轨迹{a0,o0,a1,o1,&amp;hellip;at,ot},可以直接把这个迭代轨迹放入上下文，也可以对这个迭代轨迹的每一步进行摘要提取，仅保留关键信息和引用，比如某步生成了一个很大的结构化，在进入下一轮时没有必要把整个json全部放入上下文，可以只放入一个引用，但是会把完整的json存入情景记忆，在下一轮迭代使用这个引用时再从情景记忆中取出这个对应的json，这样能避免大段内容直接进入到上下文中。&lt;/p&gt;
&lt;p&gt;同时还需要考虑到上下文长度限制和成本问题，一般的工作记忆还会考虑使用最近k轮的策略，上下文只保留最近k轮的迭代记录，但是全局信息以结构化的信息记录，把这个结构化信息也注入到上下文中，这样也不至于让agent丢失掉全局信息。而第一版的问题就在这里，状态不应该只是记忆的投影，状态是对记忆的删减和加工，实际上的改进就是在短期记忆和长期记忆之间加一个桥接适配层，来实现短期记忆和长期记忆的搭配使用。&lt;/p&gt;
&lt;p&gt;而为了agent项目的阶段性扩展和迭代，在前期工程化实现时就应该考虑长期记忆。在一个agent的迭代循环里，如果迭代轮数比较长，上下文窗口和LLM的上下文利用效率已经开始明显下降，就需要考虑结合长期记忆使用了。而为了缩减上下文，在删减掉比较早期的迭代信息后，需要识别出长期记忆中已保存的迭代记录中，哪些记忆内容会对当前轮决策有用，就选择加入到上下文。这个一般会使用retrival的方法，从长期记忆中进行检索。技术实现上会结合结构化和向量检索，而实际的实践需要根据场景需求去做设计和调整记忆存储和读写方式，可以使用slot，sql数据库，向量数据库，图数据库等等。&lt;/p&gt;
&lt;p&gt;实践过程汇总有一个原则可以参考：记忆模块在开始实现之初，就应该把短期记忆和长期记忆进行解耦设计，这不但为上下文管理留有比较大的优化空间，在符合可审计性原则之外还为经验复用和未来可能的RL积累数据基础。&lt;/p&gt;
&lt;p&gt;同时第二版的改进上，还有一个比较重要的改进点是还原了obs的单纯职责，obs只应该对当前轮的act和执行结果进行记录，不应该注入历史内容，obs保持职责单一只把当前轮的执行和执行结果(或摘要)放到工作记忆，工作记忆再去通过记忆模块补充历史上下文，这样修改之后，obs和工作记忆的职责也分的比较清晰了。&lt;/p&gt;
&lt;p&gt;另外在agent的工层化实现过程中，造成可审计比较困难的一个点就是对工程化实现过程的不同组件的职责理解和划分不清晰，一旦出了bug，bug溯因就会因为这种不清晰的边界设计增加debug的难度，所以需要在设计之初就厘清不同模块的边界再动手进行实现。&lt;/p&gt;
&lt;h5 id="agent记忆相关研究进展"&gt;&lt;strong&gt;agent记忆相关研究进展&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;上面提到RL微调，就再展开谈一下在agent在记忆管理方向的相关研究。agent记忆管理是一个很复杂的问题，从工程角度来看，agent的记忆管理可以分为两类技术方案，一种将复杂问题简化，另外一种是自动化。目前相关的记忆研究在这两个方向论文也比较多，找到了几篇比较有代表性的论文。前者是提供系统化/可插拔的记忆管理底座框架，如[5]，A-MEM[6]，后者是将手动/规则维护记忆的方式转为自动化，如Memory‑R1[7]，MEM1[8]，Memp[9]， MEMSearcher[10]等。&lt;/p&gt;</description></item><item><title>服务器测试整理</title><link>http://testai666.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B5%8B%E8%AF%95%E6%95%B4%E7%90%86/</link><pubDate>Tue, 11 Nov 2025 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B5%8B%E8%AF%95%E6%95%B4%E7%90%86/</guid><description>&lt;h3 id="一-测试工具服务器"&gt;(一)   测试工具（服务器）&lt;/h3&gt;
&lt;p&gt;/etc/systemd/system/natapp.service&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;编号&lt;/th&gt;
&lt;th&gt;名称&lt;/th&gt;
&lt;th&gt;版本&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;th&gt;工具状态&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Unixbench&lt;/td&gt;
&lt;td&gt;5.1.3&lt;/td&gt;
&lt;td&gt;测试操作系统综合处理能力。&lt;/td&gt;
&lt;td&gt;开源工具&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Spec2006&lt;/td&gt;
&lt;td&gt;2006&lt;/td&gt;
&lt;td&gt;测试 CPU 性能。&lt;/td&gt;
&lt;td&gt;商用软件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;iozone&lt;/td&gt;
&lt;td&gt;4.3.0&lt;/td&gt;
&lt;td&gt;测试磁盘读写性能（Mb/s），包括随机、顺序读写、最大最小和平均读写速度等。&lt;/td&gt;
&lt;td&gt;开源工具&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Netperf&lt;/td&gt;
&lt;td&gt;2.7.0&lt;/td&gt;
&lt;td&gt;测试网络传输速率、网络吞吐率、网络响应时间等，包括 TCP、UDP 流吞吐速率、TCP 请求/响应、丢包率、误包率等。&lt;/td&gt;
&lt;td&gt;开源工具&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;SPECjvm2008&lt;/td&gt;
&lt;td&gt;2008&lt;/td&gt;
&lt;td&gt;测试 JAVA 虚拟机的性能。&lt;/td&gt;
&lt;td&gt;开源工具&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;LMbench&lt;/td&gt;
&lt;td&gt;3.0&lt;/td&gt;
&lt;td&gt;测试操作系统性能&lt;/td&gt;
&lt;td&gt;开源工具&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;LTP&lt;/td&gt;
&lt;td&gt;LTP 20160510&lt;/td&gt;
&lt;td&gt;测试系统稳定性&lt;/td&gt;
&lt;td&gt;开源工具&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Stream&lt;/td&gt;
&lt;td&gt;5.09&lt;/td&gt;
&lt;td&gt;测试内存带宽性能&lt;/td&gt;
&lt;td&gt;开源工具&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;FIO&lt;/td&gt;
&lt;td&gt;2.1.10&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;h3 id="2-uos"&gt;(2)   uos&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;deb &lt;a href="http://mirrors.163.com/debian"&gt;http://mirrors.163.com/debian&lt;/a&gt; stable main&lt;/li&gt;
&lt;li&gt;内核更新：&lt;/li&gt;
&lt;li&gt;apt install linux-image* linux-header*&lt;/li&gt;
&lt;li&gt;卸载多余内核：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-plain" data-lang="plain"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt remove linux-image-5.6.0-2-arm64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;deb &lt;a href="https://uos.deepin.cn/uos"&gt;https://uos.deepin.cn/uos&lt;/a&gt; eagle main contrib non-free&lt;/li&gt;
&lt;li&gt;deb &lt;a href="https://enterprise-packages.chinauos.com/server-enterprise"&gt;https://enterprise-packages.chinauos.com/server-enterprise&lt;/a&gt; fou/sp2 main contrib non-free&lt;/li&gt;
&lt;li&gt;apt-key adv &amp;ndash;keyserver keyserver.ubuntu.com &amp;ndash;recv-keys&lt;/li&gt;
&lt;li&gt;deb &lt;a href="https://professional-store-packages.chinauos.com/appstore"&gt;https://professional-store-packages.chinauos.com/appstore&lt;/a&gt; eagle appstore&lt;/li&gt;
&lt;li&gt;麒麟v10源：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-plain" data-lang="plain"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.0 main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;deb http://archive.kylinos.cn/kylin/partner juniper main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;定制版uos：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-dockerfile" data-lang="dockerfile"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir /tmp/livecd&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mount -o loop uos*.iso /tmp/livecd&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p livecd/cd&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rsync --exclude&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/live/filesystem.squashfs -a /tmp/livecd/ livecd/cd&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir livecd/squashfs&lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt;mkdir livecd/custom&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;modprobe squashfs&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mount -t squashfs -o loop /tmp/livecd/live/filesystem.squashfs livecd/squashfs&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp -a livecd/squashfs/* livecd/custom&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp /etc/resolv.conf livecd/custom/etc/&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp /etc/apt/sources.list livecd/custom/etc/apt/sources.list&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chroot livecd/custom apt install xrdp htop gnome-disk*&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rm -rf livecd/custom/recovery*&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mksquashfs livecd/custom ./filesystem.squashfs &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod -R &lt;span style="color:#ae81ff"&gt;777&lt;/span&gt; ./*.squashfs&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;uos无需激活即可root：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-plain" data-lang="plain"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano /etc/pam.d/su
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#auth    requisite           deepin_security_verify.so
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;命令行激活试用：uos&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-plain" data-lang="plain"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uos-activator-cmd -t
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;1&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="3-unixbench"&gt;(3) unixbench&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;wget &lt;a href="http://github.itzmx.com/1265578519/unixbench/master/5.1.3/unixbench.sh"&gt;http://github.itzmx.com/1265578519/unixbench/master/5.1.3/unixbench.sh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chmod 777 *.sh &amp;amp;&amp;amp; ./unixbench.sh&lt;/li&gt;
&lt;li&gt;多核的话改一下run文件，第 109,110,111,112 行修改数字为当前系统 CPU 核数，然后./Run -c 核数&lt;/li&gt;
&lt;li&gt;nano Makefile ，47行&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-plain" data-lang="plain"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1GL_LIBS = -lGL -lXext -lX11 lm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;nano Run，111行&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-plain" data-lang="plain"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# &amp;#39;3d&amp;#39;  =&amp;gt; { &amp;#39;name&amp;#39; =&amp;gt; &amp;#34;3D Graphics Benchmarks&amp;#34;,&amp;#39;maxCopies&amp;#39; =&amp;gt; 8 },
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;make all &amp;amp;&amp;amp; ./Run graphics&lt;/li&gt;
&lt;li&gt;1&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="4iozone"&gt;(4) iozone&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;wget &lt;a href="http://www.iozone.org/src/current/iozone3_487.tar"&gt;http://www.iozone.org/src/current/iozone3_487.tar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;tar -xvf iozone3_487.tar&lt;/li&gt;
&lt;li&gt;cd iozone3_487/src/current/&lt;/li&gt;
&lt;li&gt;make linux&lt;/li&gt;
&lt;li&gt;./iozone -a -i 0 -i 1 -i 2 -f /mnt/testfile -r 16m -s 8G | tee -a iozone.log&lt;/li&gt;
&lt;li&gt;./iozone -a -i 0 -i 1 -i 2 -f /mnt/testfile -r 16m -s 16G | tee -a iozone.log&lt;/li&gt;
&lt;li&gt;./iozone -a -i 0 -i 1 -i 2 -f /mnt/testfile -r 16m -s 32G | tee -a iozone.log&lt;/li&gt;
&lt;li&gt;wget&lt;a href="https://gitee.com/haolixu/test/raw/master/fio.sh"&gt;https://gitee.com/haolixu/test/raw/master/iozone.sh&lt;/a&gt;&amp;amp;&amp;amp; bash iozone.sh&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="5远程桌面"&gt;(5) 远程桌面&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;apt install xrdp&lt;/li&gt;
&lt;li&gt;apt install gnome*&lt;/li&gt;
&lt;li&gt;echo “gnome-session &amp;ndash;session=gnome-classic” &amp;gt; ~/.xsession&lt;/li&gt;
&lt;li&gt;/etc/init.d/xrdp start&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;19.12.23更新！&lt;/p&gt;</description></item><item><title>Agent接口测试中实践</title><link>http://testai666.cn/posts/agent%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95%E4%B8%AD%E5%AE%9E%E8%B7%B5/</link><pubDate>Mon, 10 Nov 2025 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/agent%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95%E4%B8%AD%E5%AE%9E%E8%B7%B5/</guid><description>&lt;p&gt;在接口测试中实现“自动解析文档→生成用例”的核心是通过**“文档结构化解析→元数据提取→场景规则映射→用例自动化编排”**的全流程自动化，结合的语义理解与测试领域知识，将非结构化的接口文档转化为覆盖全面、可直接执行的测试用例。&lt;/p&gt;
&lt;h4 id="一整体流程框架"&gt;一、整体流程框架&lt;/h4&gt;
&lt;p&gt;整个过程分为&lt;strong&gt;4个核心阶段&lt;/strong&gt;，由“接口解析Agent”和“用例生成Agent”协同完成，依赖“文档同步模块”“元数据存储模块”“规则引擎”三大支撑组件：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-mermaid" data-lang="mermaid"&gt;graph TD
subgraph 准备阶段
A[接口文档同步] --&amp;gt; A1[对接Swagger/OpenAPI]
A --&amp;gt; A2[监听文档变更（Webhook）]
A --&amp;gt; A3[历史文档版本管理]
end
subgraph 解析阶段（接口解析Agent）
B[元数据提取] --&amp;gt; B1[基础信息：路径/方法/描述]
B --&amp;gt; B2[参数信息：类型/约束/位置]
B --&amp;gt; B3[响应信息：状态码/schema/字段]
B --&amp;gt; B4[依赖关系：前置接口/动态参数]
end
subgraph 生成阶段（用例生成Agent）
C[场景规则映射] --&amp;gt; C1[正向场景：合法参数组合]
C --&amp;gt; C2[异常场景：参数校验失败]
C --&amp;gt; C3[边界场景：临界值/极限值]
C --&amp;gt; C4[依赖场景：接口调用链]
end
subgraph 输出阶段
D[用例格式化] --&amp;gt; D1[Postman/JMeter格式]
D --&amp;gt; D2[pytest脚本格式]
D --&amp;gt; D3[测试管理工具格式（TestRail）]
end
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="二具体步骤与技术实现"&gt;二、具体步骤与技术实现&lt;/h4&gt;
&lt;h5 id="阶段1同步确保解析源实时准确"&gt;阶段1：同步——确保解析源实时准确&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：获取最新接口文档（如/OpenAPI），并监控变更以触发后续解析流程。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;具体操作&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;文档接入方式&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;主动拉取：通过定时任务（如每小时）调用接口文档地址（如&lt;code&gt;https://api.example.com/v3/api-docs&lt;/code&gt;），获取JSON格式的Swagger文档；&lt;/li&gt;
&lt;li&gt;被动接收：配置Git Webhook，当接口文档代码（如后端项目的Swagger配置）提交时，自动推送最新文档至Agent系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;文档版本管理&lt;/strong&gt;：
将每次获取的文档存储在版本库（如Git），标记版本号（如&lt;code&gt;v2.3.1&lt;/code&gt;），便于后续对比变更（如参数新增/删除）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h5 id="阶段2元接口解析agent核心工作"&gt;阶段2：元（接口解析Agent核心工作）&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：从接口文档中提取结构化元数据（基础信息、参数、响应、依赖），为用例生成提供“原材料”。&lt;/p&gt;</description></item><item><title>CSDN博客文章批量导出</title><link>http://testai666.cn/posts/csdn%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E6%89%B9%E9%87%8F%E5%AF%BC%E5%87%BA/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/csdn%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E6%89%B9%E9%87%8F%E5%AF%BC%E5%87%BA/</guid><description>&lt;h3 id="脚本依赖环境安装指南"&gt;脚本依赖环境安装指南&lt;/h3&gt;
&lt;p&gt;以下是为运行 CSDN 博客导出脚本（如 &lt;code&gt;export_csdn_cf.py&lt;/code&gt;）而准备 Linux 系统环境所执行的一系列有效命令。这些命令主要用于安装 运行时、及其依赖库。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 1. 安装 Python 包管理工具 pip3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install python3-pip -y
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 2. 安装文件传输和解压工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt -y install lrzsz &lt;span style="color:#75715e"&gt;# 提供 rz/sz 命令，用于终端文件上传下载&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt -y install zip unzip &lt;span style="color:#75715e"&gt;# 用于处理 zip 和 unzip 格式的压缩包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 3. 安装重命名工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install rename &lt;span style="color:#75715e"&gt;# 强大的 Perl 脚本，用于批量重命名文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 4. 配置 Google Chrome 浏览器安装源 (使用清华镜像加速)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 下载并添加 Google 的 GPG 公钥以验证软件包完整性&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#或者上传执行如下的命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# cat linux_signing_key.pub |sudo apt-key add -&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead &lt;span style="color:#f92672"&gt;(&lt;/span&gt;see apt-key&lt;span style="color:#f92672"&gt;(&lt;/span&gt;8&lt;span style="color:#f92672"&gt;))&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OK
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 将清华镜像的 Chrome 源写入 APT 源列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/google-chrome/deb/ stable main&amp;#34;&lt;/span&gt; &amp;gt; /etc/apt/sources.list.d/google-chrome.list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 5. 更新软件包索引并安装 Chrome 及其系统依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt update &lt;span style="color:#75715e"&gt;# 同步最新的软件包列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 安装稳定版 Google Chrome&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 下载 &amp;amp;&amp;amp; dpkg -i去安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 修复相关的依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt --fix-broken install -y
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 6. 安装 Chrome 运行所需的底层库 (确保 headless 模式正常工作)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install -y &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; wget &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; unzip &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; libxss1 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; libappindicator1 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; libindicator7 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fonts-liberation &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; libasound2 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; libatk-bridge2.0-0 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; libgtk-3-0 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; libdrm-common
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 7. （可选）修复可能存在的依赖问题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt --fix-broken install -y &lt;span style="color:#75715e"&gt;# 如果之前的安装出现中断或依赖错误，此命令可尝试自动修复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="说明"&gt;说明：&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;虽然核心抓取脚本&lt;code&gt;export_csdn_cf.py&lt;/code&gt;使用的是&lt;code&gt;cloudscraper&lt;/code&gt;，它不直接依赖浏览器，但如果您后续计划使用&lt;code&gt;selenium&lt;/code&gt;或&lt;code&gt;playwright&lt;/code&gt;等基于真实浏览器的自动化工具来应对更复杂的反爬机制（如 Turnstile 验证码），那么安装 Chrome 是必需的。&lt;/li&gt;
&lt;li&gt;此处列出的&lt;code&gt;lib*&lt;/code&gt;库是 Chrome 在无头（headless）模式下运行时常见的依赖项，能避免因缺少图形或音频库而导致的启动失败。&lt;/li&gt;
&lt;li&gt;使用清华（TUNA）镜像可以显著加快在境内网络环境下下载 Chrome 的速度。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="步骤一安装-pip3-依赖"&gt;步骤一：安装 pip3 依赖&lt;/h3&gt;
&lt;p&gt;在开始编写和执行脚本之前，我们需要先配置好运行环境并安装必要的第三方库。&lt;/p&gt;</description></item><item><title>ARM硬件测试面试题</title><link>http://testai666.cn/posts/arm%E7%A1%AC%E4%BB%B6%E6%B5%8B%E8%AF%95%E9%9D%A2%E8%AF%95%E9%A2%98/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/arm%E7%A1%AC%E4%BB%B6%E6%B5%8B%E8%AF%95%E9%9D%A2%E8%AF%95%E9%A2%98/</guid><description>&lt;ol&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;li&gt;串口是什么协议，WiFi有哪些协议&lt;/li&gt;
&lt;li&gt;WiFi如何测试&lt;/li&gt;
&lt;li&gt;USB接口如何测试&lt;/li&gt;
&lt;li&gt;固件如何测试&lt;/li&gt;
&lt;li&gt;python深拷贝和浅拷贝区别&lt;/li&gt;
&lt;li&gt;python进程通信有哪些&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/149785300?spm=1001.2014.3001.5502"&gt;ARM硬件测试面试题&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>从单 Agent 到多 Agent 的案例落地实践</title><link>http://testai666.cn/posts/%E4%BB%8E%E5%8D%95_agent_%E5%88%B0%E5%A4%9A_agent_%E7%9A%84%E6%A1%88%E4%BE%8B%E8%90%BD%E5%9C%B0%E5%AE%9E%E8%B7%B5/</link><pubDate>Mon, 02 Jun 2025 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E4%BB%8E%E5%8D%95_agent_%E5%88%B0%E5%A4%9A_agent_%E7%9A%84%E6%A1%88%E4%BE%8B%E8%90%BD%E5%9C%B0%E5%AE%9E%E8%B7%B5/</guid><description>&lt;p&gt;大家好，我是玄姐。&lt;/p&gt;
&lt;p&gt;▼最近直播超级多，预约保你有收获&lt;/p&gt;
&lt;p&gt;关于 Agent 的定义目前还没有形成共识，目前有3个代表性的定义：&lt;/p&gt;
&lt;p&gt;流行最广的是前 OpenAI 研究与安全副总裁 Lilian Weng 对 Agent 的定义：Agent = LLM + Planning + Tools + Memory。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/e757333072c125bd0c54b950372b2945.png"&gt;&lt;/p&gt;
&lt;p&gt;除此之外，LangChain 对 Agent 的定义为：使用 LLM 决定应用程序控制流的系统。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Agent Types" loading="lazy" src="http://testai666.cn/posts/images/0010fdccaae1d6b1280a256bd8539b5b.png"&gt;&lt;/p&gt;
&lt;p&gt;OpenAI 对 Agent 的定义是：Agent 是能够代表用户自主完成任务的系统。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/f3d9d42503f64bc7abdf1f12933895c8.png"&gt;&lt;/p&gt;
&lt;p&gt;尽管目前对 Agent 的定义还没形成共识，但是大家对 Agentic System（智能系统）基本的共识是：Agentic System 是一种有目标、基于环境的决策系统。与 LLM 最大的区别在于，Agentic System 可以与现实世界交互，从感知环境开始，做出决策并执行，影响环境，然后基于反馈调整，不断持续迭代循环。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/aff439c3a8dfb100cafb830831c99fe3.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;em&gt;&lt;strong&gt;—&lt;em&gt;1&lt;/em&gt;&lt;/strong&gt;&lt;/em&gt;—&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agentic System 架构设计剖析&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个完整的 Agentic System 架构包含四个核心组成部分：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/daa60a90b24dccd313bbebb50b993dac.png"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;感知：为大模型构建上下文信息。常见的方法包括检索增强生成（RAG），查询结构化数据（比如：数据库、网页内容）或者检索历史记录（比如：长短期记忆）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;决策：本质上是 Planning 规划过程。可以通过规则引擎（Workflow）实现，也可以由大语言模型（LLM）驱动（自主 Agent），或者借助外部规划器。在设计时需要权衡泛化能力和准确性&amp;ndash;LLM 驱动的决策泛化能力强，但不确定性较高；而基于规则的工作流泛化能力较弱，但更可控。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;执行：通过调用工具来改变环境。包括 API 调用（比如：REST、RPC、SQL、函数调用）或与图形软件的集成（比如：Anthropic 的 Computer use）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;反馈：用于评估和迭代的机制。反馈可以通过人工标注、规则或模型生成，更新可以是离线的或在线的。&lt;/p&gt;</description></item><item><title>使用cloudfare实现免费内网穿透</title><link>http://testai666.cn/posts/%E4%BD%BF%E7%94%A8cloudfare%E5%AE%9E%E7%8E%B0%E5%85%8D%E8%B4%B9%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/</link><pubDate>Fri, 24 May 2024 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E4%BD%BF%E7%94%A8cloudfare%E5%AE%9E%E7%8E%B0%E5%85%8D%E8%B4%B9%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/</guid><description>&lt;ol&gt;
&lt;li&gt;我系统是ubuntu18.04.6 LTS&lt;/li&gt;
&lt;li&gt;执行以下命令：&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dpkg -i cloudflared.deb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cloudflared tunnel login
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#这里会打开浏览器窗口登录cloudfare，我这里是之前绑定了域名，建议大家也绑定域名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cloudflared tunnel create vm1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#这里会生成下面所需的json文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir ./cloudflared &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; cd cloudflared/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano config.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#添加以下内容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tunnels: vm1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;credentials-file: /home/lixu/.cloudflared/95b49dcc-XXXX.json
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;protocol: http2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ingress:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - hostname: vm.nb404.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; service: http://127.0.0.1:80
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; originRequest:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; disableChunkedEncoding: true
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; noTLSVerify: true
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - service: http_status:404
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cloudflared tunnel --config config.yaml route dns vm1 vm.nb404.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#这句命令会给域名增加vm的dns记录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cloudflared tunnel --config ./config.yaml run vm1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#这里就可以访问了，大家记得改成自己的域名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;enjoy&lt;/p&gt;</description></item><item><title>解决ubuntu20+不能在vmare17复制粘贴的麻烦解决方案</title><link>http://testai666.cn/posts/%E8%A7%A3%E5%86%B3ubuntu20+%E4%B8%8D%E8%83%BD%E5%9C%A8vmare17%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E7%9A%84%E9%BA%BB%E7%83%A6%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</link><pubDate>Sat, 18 May 2024 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E8%A7%A3%E5%86%B3ubuntu20+%E4%B8%8D%E8%83%BD%E5%9C%A8vmare17%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E7%9A%84%E9%BA%BB%E7%83%A6%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</guid><description>&lt;ol&gt;
&lt;li&gt;先安装ubuntu18的版本，使用典型安装，因为它会自动安装open vm工具实现复制粘贴桌面自动大小功能，同时不要尝试手动安装open vm工具，我试过在ubuntu20+上面试过 没用。&lt;img loading="lazy" src="http://testai666.cn/posts/images/33f7da4551d70987c3d389e7068c9ead.png"&gt;&lt;/li&gt;
&lt;li&gt;输入相关信息 直接自动化一键安装。&lt;/li&gt;
&lt;li&gt;重启后，执行以下命令升级系统，这个阶段可能需要等30min+&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;sudo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;apt&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;upgrade&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;sudo&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;release&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;upgrade&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;重启  即可&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/f4c2472908275cecb3c27b82727baa8c.png"&gt;&lt;/p&gt;
&lt;p&gt;24.5.19更新：&lt;/p&gt;
&lt;p&gt;缺点：snap install node  会导致nodejs无法使用，缺少依赖  &lt;/p&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/139016176?spm=1001.2014.3001.5502"&gt;解决ubuntu20+不能在vmare17复制粘贴的麻烦解决方案&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>nano在centos7下中文乱码</title><link>http://testai666.cn/posts/nano%E5%9C%A8centos7%E4%B8%8B%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81/</link><pubDate>Fri, 17 May 2024 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/nano%E5%9C%A8centos7%E4%B8%8B%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81/</guid><description>&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/e451ca6f3e1c6d249a0905d23c2aedf0.png"&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;nano&lt;/span&gt; &lt;span style="color:#f92672"&gt;~&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;/.bashrc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;export&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;LC_ALL&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;en_US&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;UTF&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;export&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;LANG&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;en_US&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;UTF&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;保存退出 ，重新登录终端让修改生效！&lt;img loading="lazy" src="http://testai666.cn/posts/images/0a8761893e8b6c1320229ffabedfd1d5.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/f4c2472908275cecb3c27b82727baa8c.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/138995486?spm=1001.2014.3001.5502"&gt;nano在centos7下中文乱码&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>aws的linux其他端口无法访问问题</title><link>http://testai666.cn/posts/aws%E7%9A%84linux%E5%85%B6%E4%BB%96%E7%AB%AF%E5%8F%A3%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E9%97%AE%E9%A2%98/</link><pubDate>Thu, 16 May 2024 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/aws%E7%9A%84linux%E5%85%B6%E4%BB%96%E7%AB%AF%E5%8F%A3%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E9%97%AE%E9%A2%98/</guid><description>&lt;ol&gt;
&lt;li&gt;安全组设置：&lt;img loading="lazy" src="http://testai666.cn/posts/images/c6834a6d4afe437d4af29bbeb40b3a6e.png"&gt;&lt;/li&gt;
&lt;li&gt;一定要关闭本地代理才能访问，比如clash！&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/f4c2472908275cecb3c27b82727baa8c.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/138953071?spm=1001.2014.3001.5502"&gt;aws的linux其他端口无法访问问题&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>linux的ollama卸载</title><link>http://testai666.cn/posts/linux%E7%9A%84ollama%E5%8D%B8%E8%BD%BD/</link><pubDate>Sun, 05 May 2024 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/linux%E7%9A%84ollama%E5%8D%B8%E8%BD%BD/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;  &lt;span style="color:#a6e22e"&gt;sudo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;systemctl&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;stop&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ollama&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;  &lt;span style="color:#a6e22e"&gt;sudo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;systemctl&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;disable&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ollama&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;  &lt;span style="color:#a6e22e"&gt;sudo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rm&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;etc&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;systemd&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;system&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ollama&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;  &lt;span style="color:#a6e22e"&gt;sudo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rm&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;$&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;which&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ollama&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;  &lt;span style="color:#a6e22e"&gt;sudo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rm&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;usr&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;share&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ollama&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;  &lt;span style="color:#a6e22e"&gt;sudo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;userdel&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ollama&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;  &lt;span style="color:#a6e22e"&gt;sudo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;groupdel&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ollama&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我是用官方安装的，卸载比较麻烦&lt;/p&gt;
&lt;p&gt;建议 用  install ollama&lt;/p&gt;
&lt;p&gt;卸载也方便snap remove&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/138470183?spm=1001.2014.3001.5502"&gt;linux的ollama卸载&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>解决docker容器不能问本机网络</title><link>http://testai666.cn/posts/%E8%A7%A3%E5%86%B3docker%E5%AE%B9%E5%99%A8%E4%B8%8D%E8%83%BD%E9%97%AE%E6%9C%AC%E6%9C%BA%E7%BD%91%E7%BB%9C/</link><pubDate>Fri, 03 May 2024 00:00:00 +0000</pubDate><guid>http://testai666.cn/posts/%E8%A7%A3%E5%86%B3docker%E5%AE%B9%E5%99%A8%E4%B8%8D%E8%83%BD%E9%97%AE%E6%9C%AC%E6%9C%BA%E7%BD%91%E7%BB%9C/</guid><description>&lt;p&gt;查看网络：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;docker&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;network&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading="lazy" src="http://testai666.cn/posts/images/e311d216d3223b5fe81b6ea1fcd6761b.png"&gt;&lt;/p&gt;
&lt;p&gt;选择一个bridge网络，重新部署容器的时候加进去&amp;ndash; 1panel-network：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;docker&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;run&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;d&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3001&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt; &lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;network&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;panel&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;network&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样容器就可以引入本机网络的或者其他端口，建议关闭&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://blog.csdn.net/lixusocool/article/details/138425922?spm=1001.2014.3001.5502"&gt;解决docker容器不能问本机网络&lt;/a&gt;
作者: lixusocool&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>