Appium移动端自动化测试环境搭建全攻略:Python+Android+Node.js实战

1. 先把环境装好,再谈自动化

做移动端自动化测试,很多人一上来就急着写脚本,结果真正动手时,光是环境安装就把热情消磨了大半。Appium + Python + Android + Node.js这套组合,几乎每个部件都有自己的版本要求、环境变量和依赖关系,交错出错的情况非常常见。

以我自己的经历来说,最早接触这套环境时,折腾了整整一个下午才跑通第一个脚本。后来配置多了,渐渐摸清了其中的套路:安装顺序、版本搭配、每一步的验证方式,只要掌握好这三个要点,整套环境搭建其实是很有迹可循的。

这篇分享默认你熟悉基本命令行操作,会区分环境变量,并且电脑上可能已经装过一些开发工具。我会尽量把每一步的原理讲清楚,不光是让你复制命令,更要让你明白为什么要这样做。适合正在准备接触移动端自动化测试的测试工程师、想自学自动化技能的同学,以及被环境问题卡住想系统重装一遍的朋友。

在整套环节开始之前,有一个关键概念要先说明:Appium本身并不是一个“测试框架”,而是一个中间服务。它把测试脚本和手机设备连接起来,通过标准化的协议接口,让Python、Java、JavaScript等不同语言都能写出移动端测试用例。后面你会发现,理解这个定位对排查问题特别有帮助。

完整的环境依赖包括 Java JDK、Android SDK、Node.js、Appium Server、对应驱动、Python解释器、Appium-Python-Client客户端库,以及一台可以调试的真机或模拟器。每一项存在都有它的理由,按顺序装好就能打通链路。

2. 动手之前,先看懂这套工具链的协作关系

2.1 每个组件到底在干什么

安装前我很建议你先把请求链路在脑子里画出来。以一次最基础的操作举例:你想用Python脚本打开手机上的某个应用。这个请求的完整走向是:

Python脚本 -> Appium Python客户端库 -> Appium Server -> 安卓驱动 -> 手机上的自动化框架 -> 目标应用

每一层的作用可以这样理解:

  • Python脚本:你编写的测试逻辑,比如“点击某个按钮”“输入一段文字”。
  • Appium-Python-Client:一个第三方库,把Python代码翻译成符合WebDriver标准的HTTP请求,发给Appium Server。
  • Appium Server:接收请求,处理会话管理,把命令交给驱动处理。
  • 安卓驱动:相当于翻译官,把WebDriver标准指令转成安卓系统能识别的UIAutomator指令。
  • UIAutomator:安卓系统自带的自动化测试框架,负责实际地去操作界面元素。

看起来层级很多,但理解这些层级有个非常实际的好处:当某个操作失败时,你可以快速判断是底层连接问题、驱动问题还是脚本问题,而不是在错误堆栈里瞎猜。

2.2 版本选型到底怎么选

版本选型是新手最容易掉坑里的地方。我的原则很简单:优先使用稳定版,不追新,也不太旧。

  • Node.js:建议选偶数版本的长期支持版。如果你已经有一套版本在跑,别轻易升级。
  • JDK:如果Android SDK已经存在,优先匹配现有SDK的编译需求,再考虑新装。
  • Appium Server:以最新稳定版为主,但要注意和客户端库的兼容性。
  • Android系统版本:不用刻意追求最高版本,模拟器和真机的系统版本匹配实际测试需求即可。

还有一个容易忽视的细节:不同大版本的Appium在配置上差距不小。以Appium 2.x为例,驱动需要单独手动安装,而1.x时代很多驱动是内置的。这导致很多老教程在2.x环境下会失效,安装时如果看到某步骤报“不支持”或“找不到驱动”,先怀疑是不是版本差异。

2.3 安装顺序和完整清单

安装顺序为什么要固定?因为每个组件之间存在依赖关系。合理的顺序是:

JDK -> Android SDK -> Node.js -> Appium Server -> 安卓驱动 -> Python -> Appium-Python-Client -> 测试设备

请注意,安装过程不是“能跑就行”,而是“每一步都要有验证”。验证通过,再进行下一步。这样出现问题时,你一定能在最近的一步找到原因,不需要从头排查。

我把每个组件的验证方式汇总成一张表:

组件验证命令预期结果
JDKjava -version输出Java版本信息
Android SDKadb --version输出adb版本信息
Node.jsnode -v输出v开头版本号
npmnpm -v输出npm版本号
Appium Serverappium --version输出Appium版本号
安卓驱动appium driver list显示已安装驱动状态
Pythonpython --version输出Python版本号
客户端库pip show Appium-Python-Client显示库版本与安装路径

3. 基础环境三件套:JDK、Android SDK、Node.js

3.1 JDK安装:看似简单,坑不少

JDK的安装界面通常很友好,一路下一步就行。但有几个细节,我见到不少人踩过坑。

第一,一定要装完整的JDK,别只装了JRE。很多工具在调用Java编译或动态生成代码时需要完整的JDK,只装JRE会在运行时报出奇怪的“工具类找不到”错误。装完后确认一下安装目录下有没有bin/javac.exe这样的文件,有就说明装的是完整JDK。

第二,JAVA_HOME环境变量要配,路径不要带中文和空格。有些系统默认安装目录里包含用户名和空格,可能导致部分构建工具解析失败。建议把JDK放到一个路径简洁清晰的目录中。

以Windows为例,配置环境变量的步骤如下:

  1. 打开系统属性 -> 高级 -> 环境变量。
  2. 在系统变量中新建JAVA_HOME,值设置为JDK的安装根目录,比如 D:\Dev\jdk-17。
  3. 在Path变量中追加一行:%JAVA_HOME%\bin。
  4. 确认保存后,重开一个命令行窗口。

Linux或macOS的话,通常在shell配置文件中添加类似这样的内容:

export JAVA_HOME=/usr/lib/jvm/jdk-17 export PATH=$JAVA_HOME/bin:$PATH

第三,配完环境变量记得重新开终端窗口。Windows的典型表现是:明明配置了JAVA_HOME,旧窗口里执行java -version还是提示找不到命令。环境变量刷新只在新建的窗口生效,这不是配置错了,而是没重新开终端。

3.2 Android SDK:决定后续一切的关键

Android SDK的安装方式有几种,常见的是下载官方压缩包解压后使用。解压后重点确认三个子目录:

  • platform-tools:包含adb,必须存在。
  • build-tools:包含aapt、zipalign等编译与构建工具,某些操作会用到。
  • platforms:包含各API Level的系统库,至少要有一个与你测试设备匹配的版本。

接下来把platform-tools目录加入系统的PATH。操作方式和JDK一样,只是路径换成SDK目录下的platform-tools。加入PATH的意义是让你在任何终端里直接输入adb命令,而不需要每次敲完整路径。

验证Android SDK是否可用,最直接的两个命令是adb version和adb devices。前者验证adb本身,后者验证设备连接。此时如果还没连真机,adb devices输出“List of devices attached”且下面为空,属于正常情况,不代表安装有问题。

关于模拟器:如果你打算用模拟器做测试,还需要下载系统镜像。这个过程比较耗时,第一次启动模拟器也可能卡顿很久。我的建议是先不用模拟器跑通整条链路,等真机测试顺畅后,再回头补充模拟器配置,这样心理压力会小很多。

3.3 Node.js与npm的细节

Node.js的安装可以说是整个流程中最简单的部分,但有两处细节值得注意。

版本:选择长期支持版。npm是Node.js自带的包管理器,安装完Node.js即附带。不建议选择快接近维护截止的版本,也不要选择更新周期较短的尝鲜版。

npm源:如果安装Appium时发现下载速度极慢或者直接超时,问题多半出在默认源的连接质量上。一个简单有效的办法是切换npm源到国内公共镜像,命令大致是:

npm config set registry https://registry.npmmirror.com

切换后执行npm install会明显加速。切换镜像源后也可以随时切回官方源,只需要重新设置registry为官方地址即可。

安装完成后的验证是node -v与npm -v两条命令。在验证时要注意:如果电脑本身有其他预装环境,可能存在Node.js版本冲突。安装前最好检查一下现有目录,清理干净再做安装,否则后面可能出现“命令明明存在,但版本不是预期的”这种诡异问题。

4. 安装Appium Server与安卓驱动

4.1 用npm全局安装Appium

npm install -g appium

这条命令会把Appium服务端安装到Node.js的全局包目录中。全局安装的好处是appium命令在任意目录下都能运行,不需要进入特定项目文件夹。

安装过程中也许会看到不少WARN,只要没有出现Error或failed,一般不用理会。国内网络环境建议先切换npm源再执行安装,否则等待时间可能长得让人怀疑人生。

装完后的验证命令:

appium --version

看到版本号输出,服务端安装就完成了。此时Appium还没有办法真正操作安卓设备,因为还缺一个关键的驱动。

4.2 手动安装安卓驱动(Appium 2.x必备)

如果你用的是Appium 2.x,首次启动后会发现内置驱动目录是空的,因为新版本把驱动和主程序拆开了。安装uiautomator2驱动:

appium driver install uiautomator2

uiautomator2不是“第二个UIAutomator”的意思,它是当前Appium社区主推的一种安卓自动化驱动方案,兼容绝大多数安卓版本,同时支持真机和模拟器。

执行安装命令后,系统会自动下载驱动依赖,过程可能需要几分钟,取决于网络状态。安装完成后看看驱动状态:

appium driver list

列表中uiautomator2状态显示为installed,就说明驱动已经就绪。假如列表为空,多半是网络中断导致下载失败,重试一次往往就能解决。

4.3 启动一次服务做体检

驱动装好后,第一次启动Appium服务验证整体健康度:

appium

默认监听端口是4723,日志里出现服务已启动的提示,说明Server层正常。

此时另开一个终端,执行:

appium driver doctor

这个命令会检查驱动运行环境的依赖项,包括adb能否被调用、Java环境是否匹配、Android SDK路径是否配置正确等。任何一项检查失败,输出里都会有明确提示。把提示中的问题处理完后,重新执行doctor,直到全部通过为止。

很多初学者在这个阶段看到大段日志就心慌。实际上日志里大量的DEBUG级别输出是正常运行的特征,不代表有问题。真正需要关注的是找一找有没有包含error、fail、exception的语句。

5. Python环境与Appium客户端库

5.1 安装Python与pip的实操细节

Python安装本身很简单,但有几个细节需要留意。

安装时勾选Add Python to PATH。这个选项如果不勾选,后面在命令行里执行python会提示找不到命令,还得手动配置环境变量。勾选之后,打开新终端窗口,执行python --version即可验证。

如果电脑上存在多个Python版本,我建议统一使用python -m pip的方式安装第三方库。例如安装客户端库时执行python -m pip install XXXXX,这样可以确保库装入当前命令行所指向的Python解释器环境中,避免装到别的版本里去。

如果你使用的是虚拟环境,记得先激活对应环境,再执行安装命令。不少人在本机环境装好了库,一进虚拟环境就导入失败,就是这个原因。

5.2 安装Appium-Python-Client库

python -m pip install Appium-Python-Client

装完后执行pip show Appium-Python-Client,确认版本号和安装路径。看到信息输出,说明库已经在解释器环境里了。

有个细节:可能你在网上看到很多教程用from appium import webdriver这样的导入语句。这里的appium对应的是客户端库的包名,安装Appium-Python-Client后就会生成这个包。如果发现导入失败,优先排查库是否安装成功,而不是怀疑代码写错。

另外一个容易混淆的点:Appium服务端和Appium-Python-Client是两个独立的项目,彼此分开安装。很多人以为装了客户端库就相当于装了整个Appium,这是不对的。服务端负责接收请求并驱动设备,客户端库只是你代码里的一个依赖。

5.3 接入测试设备:真机与模拟器

谈设备之前,先说一个高频问题:为什么adb devices里看不到设备?

如果是真机,最常见原因是USB调试未开启,或手机弹窗授权未点允许。解决办法:在开发者选项里打开USB调试,重新插拔数据线,手机上确认授权。还有一点容易被忽略:数据线本身只支持充电不支持数据传输,这类线会表现为“设备已连接但adb识别不到”。换个支持数据传输的数据线就能解决。

如果是模拟器,确认模拟器已经完整启动。模拟器启动初期,adb可能还在发现阶段,多等一会儿再执行adb devices。Windows环境下,个别模拟器品牌还需要安装对应的硬件驱动,这部分需要以模拟器厂商提供的资料为准。

当adb devices输出里出现设备序列号且状态是device时,就说明设备已经准备好了。

6. 第一次运行冒烟测试脚本

6.1 跑之前先做三件事

在进入脚本环节前,依次确认下面三项状态:

  1. Appium服务正在运行。可以先去终端执行appium,保持该终端不关闭。
  2. adb能识别设备。在另一个终端执行adb devices,确认设备状态为device。
  3. Python能导入客户端库。执行python -c "from appium import webdriver; print('ok')",如果输出ok,说明导入正常。

这三项全部满足后,再写脚本。这样做的好处是,把环境问题和脚本问题彻底隔离,万一脚本报错,你只需要盯着脚本本身排查就行。

6.2 最小脚本的写法与解读

下面这段脚本是完整的、可运行的最小示例,作用是连接设备并读取当前前台应用信息:

# -*- coding: utf-8 -*- from appium import webdriver desired_caps = { "platformName": "Android", "appium:platformVersion": "11.0", "appium:deviceName": "Android", "appium:noReset": True, } driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 打印当前应用包名与Activity print(driver.current_package) print(driver.current_activity) driver.quit()

简单的代码背后有几个关键点:

  • desired_caps里的“appium:”前缀是Appium 2.x的推荐写法。旧教程经常不带前缀,在旧版本中能用,但在新版本中某些值可能不生效,主要原因就是前缀缺失。
  • platformVersion要与你设备的真实版本一致。写错不会直接报错,但可能导致某些能力无法匹配。
  • noReset表示每次会话前不重置应用状态,在调试阶段非常有用,避免频繁重装或清数据。

如果你希望脚本能主动打开某个应用,可以在desired_caps中添加两个字段:

"appium:appPackage": "com.android.settings", "appium:appActivity": ".Settings"

上面的例子对应系统设置应用,实际使用时替换成目标应用的包名与Activity即可。包名可以通过adb shell命令查询,也可以使用专门的应用信息查看工具。

6.3 运行脚本并读懂结果

执行脚本的方式和普通Python程序没区别:

python test_demo.py

如果一切顺利,终端会打印出类似这样的信息:

com.android.settings com.android.settings.Settings

这代表脚本成功建立了一个自动化会话,能够读取设备当前前台的应用包名和Activity。到此,整条链路已经全部打通。

如果报错,先看错误类型:

  • 连接被拒绝:Appium没启动,或端口不是4723。
  • 设备未找到:adb devices没有该设备。
  • 包名或Activity报错:desired_caps配置与实际设备不匹配。

首次运行时经常看到Appium日志大量刷屏,别慌,那大多是正常调试信息。判断成功与否,看你的脚本有没有打印目标值,以及Appium最后有没有创建会话成功。

7. 常见问题排查与避坑经验

7.1 一张对照表搞定大部分安装报错

报错现象大概率原因优先排查动作
appium不是内部或外部命令全局安装未完成或PATH不完整重新npm install -g appium
npm install时长时间卡住网络问题切换npm镜像源后重试
appium driver list为空驱动未安装单独执行驱动安装命令
adb devices看不到设备USB调试未开/数据线不支持传输检查开发者选项,换数据线
连接4723被拒绝Appium服务没有启动启动服务,检查端口占用
启动会话失败驱动或desired_caps配置有误执行driver doctor,校准caps
导入appium包失败客户端库没装入当前环境用python -m pip重新安装

这张表基本覆盖了大部分新手会遇到的安装问题。真实的排查过程其实并不复杂,关键是你要有一个明确的步骤顺序,而不是被报错牵着走。

7.2 几条拿钱买不到的实操心得

心得一:每次都开新终端验证。Windows里改完环境变量,旧终端不会自动刷新。很多看似配置失败的问题,其实只是没有重开终端。

心得二:日志不要只扫一眼,要逐行读。Appium日志看起来冗长,但错误信息往往在最后几行。看到error,再往前翻几十行找原因,多半是某个依赖检查不通过。早点学会读日志,移动端自动化这条路会好走很多。

心得三:版本别乱混。不同大版本的Appium、客户端库、驱动之间,存在兼容性差异。锁定一套稳定版本组合以后,至少在团队协作中能减少很多不必要的麻烦。

心得四:环境安装不是一次性的。换了电脑、升级了系统、更新了Android版本,都有可能让原本可用的环境失效。把这份安装步骤记下来,或者存在本地笔记里,关键时刻能省好几个小时。

7.3 真机与模拟器:我的选择策略

直接在真机上做脚本调试是最直观的,因为它更接近最终用户的真实环境。模拟器适合用来做大规模并发测试,或者在没有真机时临时验证。我的习惯是:脚本开发阶段,用真机一步步调试;等脚本稳定以后,如果要做批量回归,再转到模拟器上执行。这样既保证了验证的真实性,又兼顾了执行的效率。

8. 最后聊几句

搭建这套环境的过程,本质上就是理解整个自动化测试体系如何协作的过程。环境装好后,你不仅得到一个可以运行的测试平台,更重要的是,你对Appium的定位、对驱动的作用、对依赖关系的理解都上了一个台阶。

我个人体会最深的一点是:安装环境这件事,最忌讳的是急躁。每一步都验证,出错就看日志,按顺序排查,这套方法完全可以沿用到其他技术栈的搭建中去。

回到最初的问题,移动端自动化测试难不难?难的部分并不是环境安装,而是建立长期稳定的测试体系。希望这篇内容能帮你顺利跨过第一道门槛,把时间留给后面的真正挑战。

相关新闻

QTTabBar、Office Tab与Quicker:告别Windows多窗口混乱,提升办公效率

QTTabBar、Office Tab与Quicker:告别Windows多窗口混乱,提升办公效率

1. 写在最前面:为什么你的Windows办公效率上不去先问一个问题:你每天要在这台电脑上打开多少个文件夹窗口?要在这几个窗口之间来回切换多少次AltTab?Word、Excel来回改的时候,任务栏上挤了多少个窗口?如果你…

2026/10/20 18:10:34 阅读更多 →
AI短剧创作教程源码包:从剧本到成片的自动化流水线

AI短剧创作教程源码包:从剧本到成片的自动化流水线

简介:AI短剧创作教程源码包,专为希望借助AI工具快速产出短剧的内容创作者与开发者设计。资源围绕AiPy工具,覆盖从故事主题设定、提示词生成剧本,到旁白与分镜头视频制作、人物一致性维护,直至音视频合成出片的完整流程…

2026/10/20 18:10:34 阅读更多 →
本体驱动开发:让AI应用先有一份清晰的领域宪法

本体驱动开发:让AI应用先有一份清晰的领域宪法

最近在整理ontology-driven-dev这个开源项目时,发现一个很有意思的现象:很多人第一眼看到"本体驱动"四个字,要么觉得是学术论文里才有的概念,要么直接把它和知识图谱划等号。但实际上,在做AI原生应用开发的过…

2026/10/20 18:10:34 阅读更多 →

最新新闻

AI论文汇总如何变成技术雷达:从arXiv时间切片提取工程信号

AI论文汇总如何变成技术雷达:从arXiv时间切片提取工程信号

1. 这不是论文目录,而是一份AI研究动态的“施工日志”你点开一个标着“[arxiv-cs.AI] 汇总-2026.10.07-人工智能论文”的文件夹,第一反应可能是:又一份需要硬啃的文献清单?别急——我过去三年里,几乎每周都整理类似标题…

2026/10/20 19:31:02 阅读更多 →
深度学习水果识别实战:从CNN训练到Flask部署全流程

深度学习水果识别实战:从CNN训练到Flask部署全流程

1. 项目定位与整体设计思路先聊聊这个项目的来龙去脉。基于深度学习的水果识别,本质上是图像分类任务,也就是让计算机按照像素内容判断“这张图属于哪个类”。很多同学会选择它做毕业设计,原因很直接:它属于计算机视觉领域的经典方…

2026/10/20 19:31:02 阅读更多 →
Agent框架插件化设计:把扩展能力做成第一公民

Agent框架插件化设计:把扩展能力做成第一公民

最近把DeepSeek开源的那套Agent框架源码整体拆了一遍,说实话,拆完心里有点复杂——很多设计我以前自己折腾过,但没有想到可以做得这么系统。这套框架给我最大的启发,不是“Agent还能这么写”,而是“插件化居然可以做到…

2026/10/20 19:31:02 阅读更多 →
C#轻量级OPC UA客户端:5分钟连PLC读温度

C#轻量级OPC UA客户端:5分钟连PLC读温度

简介:本资源是一个面向工业自动化与.NET开发者的C# OPC客户端实战项目,聚焦于使用OPC Net Api Chs库实现与OPC服务器的连接、数据读写、事件订阅及异常处理等核心通信功能,适用于具备基础C#和WinForms开发能力的中初级工程师快速掌握工业协议…

2026/10/20 19:31:02 阅读更多 →
用QClaw打造微信聊天分析助手:意图识别与情绪解读的Skill实践

用QClaw打造微信聊天分析助手:意图识别与情绪解读的Skill实践

一个多月前,我把 QClaw 上常用的几个小技能整理成了自己的私藏工具箱,其中有一个人起初当玩笑写的 Skill,最后却成了我打开次数最多的一个——“恋爱大师”。它的作用听起来很玄乎:把微信里那些容易让人内耗的对话,拆成…

2026/10/20 19:31:02 阅读更多 →
iOS自定义相机开发:AVCaptureSession底层控制与实战优化

iOS自定义相机开发:AVCaptureSession底层控制与实战优化

1. 项目概述:为什么需要一个“自定义相机”而不是直接调用系统相册 在 iOS 开发中,“调用系统相机”这句看似简单的指令,背后藏着大量被封装掉的决策权。当你使用 UIImagePickerController 拍照时,你拿到的是一张 JPEG 或 PNG—…

2026/10/20 19:29:59 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →