React Native鸿蒙化实战:集成鸿蒙原生组件与启动白屏排查
前段时间团队接到一个任务要把既有的 React Native 应用适配到鸿蒙设备上。初看似乎是个常规的“多端打包”问题毕竟 RN 号称跨端多一个目标平台似乎只是构建配置的事情。真正动手后才发现事情远没有这么简单React Native 与 HarmonyOS 之间并没有一条官方直通路社区适配层、鸿蒙原生组件、JS 桥接每一环都可能有意想不到的坑最典型的就是那个让人头疼的“启动白屏”。这篇文章主要记录我在 React Native 工程里集成鸿蒙HarmonyOS组件尤其是鸿蒙原生组件的完整过程。我会先补上必要的鸿蒙开发基础知识再讲清楚为什么社区路线是目前的主流选择然后用一个底部导航栏作为示例手把手展示如何把 ArkUI 组件封装成可被 RN 调用的“鸿组件”最后专门聊聊启动白屏的排查思路。无论你是刚开始接触鸿蒙开发还是已经在考虑 RN 鸿蒙化这篇都能帮你省掉不少试错时间。1. 鸿蒙不是“换皮安卓”动手前先更新底层认知1.1 从 API 12 / 5.0.0(12) 这代 SDK 说起HarmonyOS 的版本号体系对刚接触的人来说有点乱开发工具里经常会看到5.0.0(12)这种格式它表示系统版本为 5.0SDK API 级别为 12。这一代鸿蒙HarmonyOS NEXT在系统架构上有一个重要变化去掉了传统的安卓兼容层应用必须使用 HAP 格式编译、打包和安装。换句话说在 Android 上直接运行的 APK在这套系统上已经不能被识别和执行了。这个变化对 RN 项目来说是一个根本性的约束。我们不能再像处理普通跨端问题那样把 Android 构建产物稍作调整就塞进鸿蒙设备。必须重新走一条独立的编译链路JS 业务代码仍然可以沿用但宿主容器、原生模块、资源加载、网络权限、App 入口统统要按照鸿蒙的规则重新实现。有不少 RN 项目在鸿蒙化过程中卡在第一关就是因为团队还抱着“换个包名就能跑”的预期。1.2 ArkTS 与 ArkUIRN 开发者要接受的三点差异第一个差异是语言层面的收紧。ArkTS 官方定义为 TypeScript 的超集但它不是“想怎么写就怎么写”的 TS而是删掉了一些运行时灵活性比如部分动态类型操作和模糊的类型推断会被编译器直接拦下。以前在 RN 里写习惯了any走天下到了 ArkTS 会被 IDE 的语法检查不断提醒修正。第二个差异是 UI 写法。ArkUI 采用声明式 UI 范式结构与 SwiftUI、Flutter 有相似之处核心是“装饰器 状态管理”。Component把一个 struct 变成可渲染组件State表示组件内部响应式状态Prop是父传子的单向数据流Link则是父子之间的双向同步Builder用来复用局部 UI 结构。跟 React 的 Hooks 思路对比虽然同样强调“状态驱动界面”但使用习惯和底层渲染机制完全不同不能做一对一翻译。第三个差异是布局体系。ArkUI 有自己的长度单位、布局容器和自适应规则虽然Row、Column、Stack这些容器名称看着熟悉但 flex 行为、安全区处理、滚动容器的能力边界和 CSS/RN 并不等价。想把一个 RN 页面整体搬成鸿蒙组件表面上是语法转换实际要重新适配布局语义这个心态建设很重要。1.3 Stage 模型下的应用入口RN 容器应该挂在哪里HarmonyOS 的应用模型目前以 Stage 模型为主。和 Android 单一 Activity 概念不同Stage 模型中每个可交互入口都是一个UIAbility你可以在应用里配置多个 UIAbility每个都有独立生命周期。RN 容器本质上是一个能渲染 JS 视图的原生页面它在鸿蒙侧的宿主必须依附在某个 UIAbility 上。这个看起来只是一个架构名词实际踩坑时影响很大。比如页面返回、前后台切换时UIAbility 的生命周期回调怎么映射到 RN 的AppState多个 UIAbility 之间不能依靠全局单例共享内存态路由跳转对鸿蒙来说是基于 Navigation 或 router 的能力而 RN 自己的路由栈和鸿蒙原生路由并不互通。第一次接入的时候我花在搞懂宿主工作方式上的时间比写原生组件还多。2. 集成策略为什么我最后选了“按组件接入”2.1 事实背景React Native 官方没有直接支持鸿蒙需要先看清楚现实React Native 官方团队目前没有把 HarmonyOS 列为一等支持目标。所以鸿蒙设备上跑 RN 应用靠的是社区维护的适配工程像名字里带ohos或harmony的那一批 GitHub 仓库本质是维护一套 RN 源码的鸿蒙分支把 JS 运行时、原生模块注册、UI 渲染桥接到 ArkUI 上。用起来的感觉很像当年在 Windows 上跑 RN能跑通但版本必须严格对齐。这里说的版本对齐是整个集成过程中最容易让人崩溃的点。RN 发一个大版本适配层要跟着改鸿蒙 SDK 发一个大版本适配层还要跟着改。两个上游都在动而我们的项目就夹在中间。我自己的结论是决定集成鸿蒙后先用一个适配层明确支持的 RN 版本并且锁定住不要因为“顺手”升级其他依赖。许多集成失败的项目不是因为思路不对而是因为版本组合本身就没人验证过。2.2 三条路线的对比与选型在真正动手前建议先做一次方案选型。我梳理下来大致有三条路线集成路线优点缺点适合场景鸿蒙原生壳 整个 RN 容器RN 业务代码改动最少能最快看到 Demo容器层兼容风险高原生能力仍需重新桥接技术验证、短期演示RN 页面中按需嵌入鸿组件可渐进式接入、可灰度、可回滚桥接工作量较大需要长期维护长期项目、核心体验不容妥协用 ArkTS 逐步重写关键页面鸿蒙特性利用率最高性能与体验最完整工程量最大相当于重做一套 App业务方向已明确全面投入鸿蒙我最终推荐的是中间这条“按组件接入”。原因有三点第一风险可控。一次只封装一两个鸿组件出了问题能立刻定位到具体模块相反如果一开始就把整个 RN 容器套进鸿蒙壳里任何一个桥接缺陷都可能影响全页面。第二人力模型更合理。RN 工程师负责 JS 封装和组件 API 设计鸿蒙工程师负责 ArkTS 原生实现只要接口定义清楚两边可以并行推进。第三鸿蒙的分布式能力只有在原生侧才真正可用与其在 JS 层做各种模拟不如把它做成原生能力模块再按需暴露给 RN。2.3 选型前先回答团队里的三个问题除了技术上的优劣建议团队在动手前也要想清楚几个现实问题有没有人能写 ArkTS如果团队不大是否有一个人愿意同时维护 JS 桥接层和鸿蒙原生组件公司业务是否真的有大量鸿蒙用户如果这三个问题的答案有一个不乐观我的建议都是“先放一放”。技术手段再成熟没有持续投入的人力RN 鸿蒙化很难真正落地反而会拖垮主线业务。3. 按组件接入的做法把 ArkTS 底部导航栏封装成 RN 组件3.1 第一次动手前先锁定这套版本组合我建议的基线差不多是这样技术层建议选型HarmonyOS 系统5.0.0(12)API 12开发工具DevEco Studio 5.0 及以上React Native 版本以适配层明确支持的稳定版本为准如 0.72~0.74 这一档JS 引擎用适配层默认支持的不要自己切换社区适配工程通过 npm 安装的鸿蒙适配包这里要特别提醒把某个确定可用的组合记录下来写到项目 README 里。很多时候一两个月后回头看已经没人记得当初用了哪个适配层版本、哪个 RN 补丁版本只能重新试错。3.2 在 ArkUI 里写一个可复用的底部导航栏组件底部导航栏是鸿蒙应用开发里非常常见的基础组件也适合作为第一个练手对象。结构很简单一个横向Row内部放多个 Tab 项选中态和非选中态通过状态变量控制。Component export struct HMNavBar { Link currentIndex: number; Prop items: string[] [首页, 动态, 我的]; onTabChange?: (index: number) void; Builder tabItem(title: string, index: number) { Column({ space: 2 }) { Text(title) .fontSize(this.currentIndex index ? 18 : 15) .fontColor(this.currentIndex index ? #1E88E5 : #999999) .fontWeight(this.currentIndex index ? FontWeight.Bold : FontWeight.Regular) } .justifyContent(FlexAlign.Center) .height(100%) .layoutWeight(1) .onClick(() { this.onTabChange?.(index); }) } build() { Row() { ForEach(this.items, (title: string, index: number) { this.tabItem(title, index) }) } .width(100%) .height(56) .backgroundColor(#FFFFFF) .border({ width: { bottom: 1 }, color: #EEEEEE }) } }这段代码的核心思想是组件内部用Link currentIndex接收外部传入的选中值用Prop items接收 Tab 配置当用户点击某个 Tab 时通过onTabChange回调把新的索引抛给上层。用 React 的思维去理解它就是一个受控组件。3.3 把原生组件注册给 React Native在社区适配层中鸿蒙原生组件要暴露给 RN通常需要在鸿蒙工程里找一份“原生组件注册清单”把HMNavBar填进去并给它一个对外名称例如HMTabBar。这里有个很容易忽略的点原生组件的对外名称需要全局唯一否则跟 Android/iOS 已有的同名组件会冲突RN 侧解析时会串号。RN 侧在旧架构下可以直接用requireNativeComponent把这个原生组件变成 JS 组件import { requireNativeComponent } from react-native; const NativeTabBar requireNativeComponent(HMTabBar); export default function NavBar(props) { const { index 0, onSelect } props; const handleSelect (e) { const nextIndex e?.nativeEvent?.index; if (typeof nextIndex number onSelect) { onSelect(nextIndex); } }; return NativeTabBar style{{ height: 56 }} index{index} onSelect{handleSelect} /; }如果你接入的适配层已经支持新架构codegen 会自动生成类型化接口但鸿蒙侧的桥接逻辑仍要手写。所以无论新旧架构注册表、参数名、回调事件结构都是最容易出错的部分。3.4 参数与事件的几个“对不齐”陷阱这类桥接工作中我最常遇到的问题是参数大小写对不上。RN 原生组件只看 camelCase 的 prop鸿蒙侧如果定义tabIndexJS 侧就不能改成tab-index或TabIndex。回调事件结构对不上。鸿蒙侧通过事件通道吐给 JS 的字段名跟 RN 侧读取的字段名必须完全一致否则拿到的是undefined。不要传undefined给原生组件。桥接通道序列化时undefined字段很容易丢失或者被转成异常值给默认值比什么都重要。style只能控制容器层。鸿组件内部布局由 ArkUI 决定RN 侧传进来的style并不等于 ArkUI 内部的 flex 属性需要把对外暴露的样式参数单独设计出来。4. 不只是 UI 组件把鸿蒙分布式能力做成 RN 原生模块4.1 分布式能力的价值与封装边界HarmonyOS 从一开始就强调自己是分布式操作系统多设备协同、数据流转、跨端服务都不是概念而是系统级 API 提供的实际能力。但 React Native 本身并不感知这些能力。要在 RN 项目里用上鸿蒙的分布式特性最干净的做法是在鸿蒙侧把这些能力封装成原生模块再通过NativeModules.XXX暴露给 JS。这里有必要控制封装边界设备发现、远程数据同步、与系统账号相关的状态这些都不应该在 JS 层硬模拟。JS 层既没有权限也没有合适的系统 API强行去模拟只会得到一堆不稳定代码。4.2 一个分布式模块的封装套路鸿蒙侧模块的大致结构可以分成四步初始化系统能力、提供同步或异步方法、把结果通过回调或事件队列返回、在模块销毁时做反注册。JS 侧再把它封装成 Promise 风格统一错误码import { NativeModules } from react-native; const { HMDistribute } NativeModules; export async function listReachableDevices() { try { const devices await HMDistribute.listReachableDevices(); return devices || []; } catch (e) { const code e?.code || UNKNOWN; console.error([HMDistribute] list failed: ${code}); return []; } }在真正落地时你大概率还要关注设备上线和下线的事件监听。通常由鸿蒙侧通过事件通道主动推送给 JS 侧JS 侧在useEffect或页面生命周期里注册监听并在组件卸载时及时移除避免事件监听在多次页面切换后堆积导致内存上涨或者白屏。4.3 跨端数据同步的几个注意点事件推送频率不能太高。分布式设备状态变化频繁时原生侧自己要做节流和合并否则桥接通道会被瞬时的大量事件塞满。数据序列化时不要直接传对象引用鸿蒙侧到 JS 侧要经过桥通道对象字段顺序、非法字符都可能成为问题。另外还要考虑非鸿蒙环境的降级方案同一个 JS 业务在三端跑如果调用一个只有鸿蒙才有的分布式模块Android 或 iOS 上就得有一个空实现或者明确错误码否则线上会出现不可控异常。5. 启动白屏排查实录一整套能复现的排查思路5.1 白屏只是“结果”不一定是“崩溃”“React Native 启动白屏”是鸿蒙化搜索里排名靠前的关键词我自己也在这个问题上耗费了大量时间。典型表现是点击应用图标窗口能正常打开但页面一直空白没有红屏报错也没有崩溃日志。原因在于 RN 在鸿蒙上的加载链路太长任何一环断掉都可能整体黑屏而这条链路横跨系统容器、Bundle 下载、JS 引擎、原生模块注册四个层面。排查白屏最忌讳上来就改代码而是应该按链路逐段验证。5.2 逐段验证的具体步骤第一步用 HiLog 过滤关键标签。DevEco Studio 的 HiLog 窗口支持关键字过滤先看ReactNativeJS、RNOH或适配层约定的其他标签。如果全程没有任何 JS 相关日志问题大概率出在容器加载或 Bundle 没有到达。第二步确认 Metro 是否收到请求。在电脑上启动 Metro 终端观察有没有来自设备的 Bundle 请求。如果没有不是地址问题就是网络问题如果有就盯着错误信息往下走。第三步检查网络权限。鸿蒙工程module.json5里的权限声明经常被忽略如果没加ohos.permission.INTERNET真机上是拉不到 Metro Bundle 的。更隐蔽的是模拟器可能表现又不一样所以同一份配置在不同设备上白屏表现不同会让人非常困惑。第四步排除 JS 引擎问题。如果适配层同时支持 Hermes 和 JSC把引擎切换一下再跑。这里不是让你两个引擎都上生产而是用“切换法”确认问题到底是不是引擎兼容性引起的。第五步检查自定义原生组件注册。如果白屏页面里插入了自定义鸿组件而它没有在注册表里注册RN 在创建原生视图时会失败表现同样是白屏。把页面组件拆到只剩一个基础视图再逐步加回来能快速定位到是哪一步引起的。5.3 一张白屏排查决策表白屏现象优先检查项验证方法常见处理首启动全白无任何日志容器或 Bundle 未加载HiLog 过滤 RN 标签确认 HAP 内置 Bundle 路径模拟器正常真机白屏Metro 网络不可达Metro 终端看请求配置局域网 IP 访问地址有报错日志但页面空白JS 运行时异常读取错误堆栈修复 JS 执行错误页面中某一区域白屏原生组件未注册组件拆零、逐一恢复检查注册表和组件名旋转屏幕后白屏生命周期或布局问题复现并看 ArkUI 日志补页面周期回调5.4 白屏排查的一个经验结论白屏排查的大方向就是逐段隔离。团队里经常有人遇到白屏就反复重启、清缓存这种做法除了浪费生命没有太大价值。把系统日志、Metro 日志、鸿蒙组件日志三条流同时打开哪一段先断就顺着哪一段往下查基本上都能在半小时内定位到问题。要特别记住白屏不是本次问题的名字只是问题的伪装。6. 从跑通到稳定命名、性能、测试这些事6.1 命名规范和目录隔离当项目里同时存在 Android/iOS 原生组件和鸿组件时最好给鸿组件一套统一前缀比如HM。原生组件的标签名、模块名、文件目录都带上前缀避免跟 Android 同名组件在注册表里冲突。桥接代码单独放在src/harmony/下跟纯 JS 业务分家以后鸿蒙侧升级时只需要动这一层不用翻整个项目。6.2 首屏性能和包体积如果不是整体替换鸿蒙端注意别把所有的鸿组件一次性打进主包。鸿组件的固有开销不在 JS 侧而在 ArkUI 侧组件树的创建成本。一个页面塞进太多重组件时系统日志里能看到组件树构建耗时明显上升。我建议按页面拆、按能力拆用到时再加载。界面层级尽量保持浅平能用一个轻量容器解决的就不要嵌套多层。底部导航栏这类固定组件可以常驻但像分布式设备列表这类低频模块放到页面需要时再动态加载更合适。6.3 测试矩阵和发版节奏模拟器适合第一轮功能验证真机必须做第二轮回归。两者的网络权限、安全区域、分辨率差异可能暴露完全不同的问题。每次鸿蒙 SDK 升级到新的 API 版本后都需要提前做一轮兼容测试。发版节奏上我个人的习惯是先放一个小流量灰度观察启动白屏率和崩溃率稳定后再全量。如果出了问题回滚也只需要撤掉鸿相关模块不会牵连到整个 RN 版本。我自己走完一遍之后的体会是如果你正在评估“在 React Native 里做鸿组件”这条路线不必一开始就追求把整个 App 塞进鸿蒙。挑一个像底部导航栏这样边界清晰、用户能直接感知的小组件从踩通一次完整的桥接开始成本最低、见效最快也能让团队提前看到桥接层的真实复杂度。等这条路走顺了再谈大规模接入也不迟。

相关新闻

MySQL慢查询日志详解:从配置到SQL优化实践

MySQL慢查询日志详解:从配置到SQL优化实践

1. 慢查询日志到底是什么,为什么值得花时间折腾 接触MySQL有一段时间的兄弟应该都听过“慢查询”这个词,面试题里也经常出现。它的核心机制很简单:MySQL会把执行时间超过你设定阈值的SQL语句,按照特定格式写到日志文件里&#xff…

2026/10/3 14:32:54 阅读更多 →
Matlab实现粒子群算法求解TSP:离散PSO交换序列原理与代码解析

Matlab实现粒子群算法求解TSP:离散PSO交换序列原理与代码解析

粒子群算法(PSO)跑TSP这种组合优化问题,在Matlab里实现起来其实比很多人想象中简单,但难点不在“写代码”,而在“怎么把连续优化的那一套逻辑翻译成排列问题能用的版本”。很多教程一上来就甩一大段代码,代…

2026/10/3 14:32:54 阅读更多 →
Agent记忆落地实战:从hindsight到Docker部署与MCP接入

Agent记忆落地实战:从hindsight到Docker部署与MCP接入

1. 从“hindsight”这个词说起:为什么记忆是Agent落地的最后一公里 “hindsight”这个词本身很有意思,字面意思是“事后的洞察力”,也就是我们常说的“后见之明”。把这个词放在Agent和LLM的语境里,它指向的问题非常具体&#xff…

2026/10/3 14:32:54 阅读更多 →

最新新闻

微信小程序考试信息报名系统毕设全流程实战:从需求到答辩

微信小程序考试信息报名系统毕设全流程实战:从需求到答辩

每年毕业季我都会收到一批私信,问的最多的就是“毕设选题选什么”。如果你正盯着“基于微信小程序的考试信息报名系统”这个题目犹豫,我直接说结论:这题能做,而且非常适合作为毕业设计。它既有完整的业务闭环——考生查考试、在线…

2026/10/3 15:00:18 阅读更多 →
用Python构建AI UI生成工具:从自然语言到多平台代码

用Python构建AI UI生成工具:从自然语言到多平台代码

简介:UI UX Pro Max 是一款专为 Claude Code、Cursor、Windsurf 等 AI 编程助手打造的设计智能技能包,面向需要快速搭建专业界面的开发者与产品设计人员。包内通过结构化数据库与语义搜索,自动识别产品类型并输出设计风格、配色、字体、图表及…

2026/10/3 15:00:18 阅读更多 →
分布式电源接入配电网的影响与Matlab仿真方法

分布式电源接入配电网的影响与Matlab仿真方法

1. 分布式电源接入之后,配电网到底哪里"不舒服"了我最早接触这个课题,是给一个做配网规划的工程团队做仿真支持。他们当时遇到一个很现实的问题:某10kV馈线上陆续并网了三四座分布式光伏电站,结果调度那边发现&#xff…

2026/10/3 15:00:18 阅读更多 →
基于Matlab的最小错误率贝叶斯手写数字识别系统详解

基于Matlab的最小错误率贝叶斯手写数字识别系统详解

简介:基于Matlab平台的最小错误率贝叶斯分类手写数字识别系统,是一套面向模式识别、图像处理和机器学习初学者的完整可运行项目。系统运用贝叶斯决策理论,在分类过程中综合先验概率与样本观测信息,以最小化误判概率为目标&#xf…

2026/10/3 15:00:18 阅读更多 →
Spring Cloud Gateway动态路由刷新后503?排查与修复完整指南

Spring Cloud Gateway动态路由刷新后503?排查与修复完整指南

上个月我接手的一个网关服务出了个诡异问题:SpringCloud 2025.0.0 SpringBoot 3.5.0 的 Gateway,路由不写死在配置里,而是从配置中心动态加载。某天下午运维在配置中心改了一条路由,保存后不到一分钟,线上所有经过 /a…

2026/10/3 15:00:18 阅读更多 →
科研文献读而不忘:从记忆机制到笔记体系的实践指南

科研文献读而不忘:从记忆机制到笔记体系的实践指南

“读了很多文献,回头一想脑袋空空”——这话我听得太多了,包括我自己刚进课题组那两年也是这么过来的。明明花了一整个下午啃完一篇顶刊论文,标记了十几处高亮,当时觉得条理清晰、逻辑顺畅,可到了周五组会汇报的时候&a…

2026/10/3 14:59:18 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 9:14:33 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 9:47:50 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/3 9:42:31 阅读更多 →

月新闻

我发现了一个新思路:用 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/2 10:36:31 阅读更多 →
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/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练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/3 9:42:36 阅读更多 →