Flutter在OpenHarmony上实现高效武将搜索功能全解析
我做这个三国杀攻略App的起因其实很简单身边一起玩的朋友经常在局间掏出手机翻攻略查武将技能、查结算顺序但市面上的工具要么广告多要么数据老。既然大家都在用不如自己做一个干净的。项目选定在OpenHarmony平台上跑并且用Flutter来写UI层其中一个核心模块就是武将搜索功能——也就是今天这篇要完整复盘的实现过程。整个项目从搭环境到搜索功能跑通前后折腾了小两周中间踩了不少坑我把能沉淀下来的经验都整理成了这篇文章适合正在用Flutter做OpenHarmony应用、或者想给工具类App做搜索功能的开发者参考。1. 项目背景为什么在OpenHarmony上用Flutter做三国杀攻略1.1 三国杀攻略App的核心场景三国杀这个游戏说复杂也复杂说简单也简单。真正玩得精的玩家脑子里装的是几十个武将的技能结算顺序、牌堆结构、身份局的胜率数据。但普通玩家最常见的使用场景就是对局中突然抽到一个不熟悉的武将需要马上查看技能说明或者配将阶段想按势力、按强度筛选再或者看到别人说某个组合套路想搜一下涉及的武将技能。这些场景全部指向同一个入口——搜索。它不只是一个文本框加一个列表而是整个App最高频使用的功能。用户打开App的第一动作大概率不是浏览首页而是直接输入武将名。所以武将搜索的体验直接决定了这个攻略App的口碑。我当时把这个功能当成整个项目的试金石不是因为别的就是因为它最常用、最能体现细节功底。1.2 技术选型Flutter for OpenHarmony的价值当时选型的时候有两条路一是用OpenHarmony的原生ArkTS写二是接入Flutter的OpenHarmony适配分支。最终我选了Flutter原因有三个。第一Dart的上手成本比ArkTS低。我之前的工具类应用都是Flutter写的状态管理、组件化、异步模型都熟换到ArkTS等于重新学一套框架项目周期不等人。第二Flutter的自绘引擎保证了UI跨平台的一致性。OpenHarmony设备和Android设备上跑同一套代码渲染效果几乎一致后续如果想把App发布到更多平台不需要重写UI。第三Flutter生态里大量纯Dart实现的包可以直接用比如状态管理、数据解析、本地存储这些不依赖原生能力OpenHarmony下一样跑得起来。当然选Flutter也有代价。OpenHarmony的Flutter适配分支更新节奏比官方主分支慢部分原生能力需要自己用Platform Channel去调OpenHarmony的接口。这个坑后面专门讲。1.3 功能规划为什么先做武将搜索整个App的规划其实不小武将图鉴、卡牌百科、身份局攻略、牌堆概率计算、单局记录。但我没有一上来就铺开做而是先集中火力做武将搜索这一个功能。原因有三层。其一武将数据是其他所有功能的数据底座。图鉴、攻略、配将推荐全部依赖一份结构化的武将数据。先把武将模块做好后续功能都是在这套数据上做上层应用。其二搜索是天然的冷启动功能。它不依赖推荐算法和运营内容把数据整理好、把搜索逻辑调顺App就能开始服务用户。其三从验证技术路线的角度看搜索功能几乎覆盖了Flutter开发的所有基础环节页面生命周期、状态管理、列表渲染、输入事件、数据持久化。跑通这一个功能等于验证了Flutter for OpenHarmony这条技术路线可行之后再加功能就是按部就班。2. 武将数据建模与搜索需求拆解2.1 武将数据结构设计做搜索的第一步不是写代码而是把数据模型定清楚。三国杀的武将信息维度多我最初整理草表的时候列了不少字段最后落实到数据结构核心是下面这些class General { final String id; // 唯一标识用于列表Key和数据关联 final String name; // 武将名 final String pinyin; // 全拼 final String pinyinInitial; // 首字母简拼 final String faction; // 势力魏、蜀、吴、群、神 final int hp; // 体力值 final String title; // 称号 final ListString skills; // 技能列表 final String expansion; // 所属扩展包 final int rarity; // 强度评级参与结果排序 final String description; // 生平简介 }我额外加了拼音字段。这一点很关键——三国杀玩家在手机上搜武将很多场景不方便打汉字。对局中单手操作、输入法没切换、朋友语音里念了一个名字但不确定具体哪个字都可能直接用拼音输入。我在本地维护了一张汉字转拼音的对照表在数据预处理阶段就把全拼和首字母存成了冗余字段。搜索的时候直接匹配这两个字段比搜索时临时做转换快一个数量级。另一个细节是id字段。它不只是给ListView当Key用的更重要的作用是让搜索结果能关联到详情页。点击列表项跳转时拿id去详情模块查完整数据避免把整个对象传过去。如果没有稳定id后面做收藏、最近浏览、埋点都会非常痛苦。2.2 搜索需求拆解从能搜到好搜能搜的标准很低输入关键字列表里出现匹配武将就算完成了。但好搜的标准高得多我给自己列了四条验收标准。第一条模糊匹配要足够糊。输入羽要能搜到相关武将输入全拼guanyu要能搜到输入首字母gy也要能搜到。输入一个字所有名字、技能、称号里带这个字的武将都应该出现在结果里。第二条结果排序要符合直觉。完全命中武将名的排最前技能描述命中的排后面不能让关羽的技能里恰好含有关羽名中的某个字这种巧合把排序带偏。第三条搜索要和筛选叠加。搜索框只是入口列表上方还要有势力、扩展包、体力值的筛选组。用户可以先筛魏势力再搜典也可以先搜典再筛魏顺序不影响结果。第四条输入响应要快。每敲一个字符列表要跟着刷新不允许出现肉眼可见的延迟。我在中端设备上的目标是单次搜索计算不超过30毫秒。这四个标准看着简单实际实现时才意识到每一项都牵扯到数据结构和算法的取舍。2.3 搜索评分排序规则设计为了让排序符合直觉我没有用简单的contains判断而是引入评分机制。每条搜索结果根据命中类型和命中位置打分最后按分数降序排列。我实测下来这套评分规则比较稳定命中类型分值武将名完全相等100武将名前缀命中80武将名中间命中60全拼前缀命中55首字母前缀命中50技能名或技能描述命中40全拼中间命中35称号命中30扩展包名命中20多个条件同时命中时取最高分不做叠加。为什么不做叠加因为名字全中加技能也命中并不能说明结果比名字几乎全中更相关。玩家搜武将核心意图永远是找武将本身技能命中只是兜底。如果叠加冷门武将靠多项低分命中也可能排到名字命中武将的前面这反直觉。同分数的结果我再用一个稳定排序兜底势力优先级、体力值、id。这样保证同样的关键词每次搜索出来的顺序完全一致。排序稳定性容易被忽略但用户一旦发现两次搜索顺序不一样体验非常糟糕。3. Flutter for OpenHarmony 环境搭建3.1 开发环境准备做OpenHarmony上的Flutter开发环境搭建和标准Flutter有一些明显区别。我最终跑通的环境清单大概是这样的OpenHarmony SDK、配套的IDE工具、以及OpenHarmony组织维护的Flutter SDK适配分支。注意这里用的Flutter SDK不是官方主分支而是带ohos平台支持的分支需要单独下载。流程上先把Flutter的ohos分支下载下来配置到PATH里。我的做法是单独放一个目录不跟之前Android开发用的Flutter SDK混在一起避免切换项目时版本冲突。环境变量配置好之后命令行执行flutter doctor正常情况下能看到ohos工具链出现在诊断列表里。这里要特别提醒一个容易被坑的点Flutter SDK版本和OpenHarmony SDK版本必须匹配。我一开始两个都用最新版构建时直接报version mismatch排查了半天才发现是SDK版本对应关系的问题后来把Flutter分支切到和OpenHarmony SDK对应的tag上才恢复正常。建议开工之前先去查两者的版本支持矩阵确认对应关系不要凭直觉都上最新的。3.2 创建支持OpenHarmony的Flutter工程工程创建方式和普通Flutter不一样。普通flutter create默认生成android、ios、web这些目录没有ohos目录。正确做法是用Flutter ohos分支提供的模板能力创建flutter create --platforms ohos three_kingdoms_guide生成后的工程里多了一个ohos目录这是OpenHarmony的壳工程。壳工程负责和系统交互Dart代码运行在Flutter引擎上两者通过内部渠道通信。工程生成后需要在ohos目录下配置应用包名和图标。包名改成自己应用的唯一标识注意这个包名一旦定了后续签名、升级都不能随意改否则会出现安装冲突。Dart侧业务代码全部写在lib目录下跟普通Flutter项目没有任何区别。这是Flutter跨平台最大的优势UI层、状态管理、数据层都和平台无关只有真正要调OpenHarmony系统能力时才需要去ohos壳工程里写原生代码。3.3 打包hap与真机运行OpenHarmony应用的最终打包产物是hap文件。在Flutter ohos工程里执行flutter build hap --release构建完成后hap文件生成在build目录下。安装到真机可以用IDE的设备管理功能也可以用命令行工具安装。真机调试有个体验差异需要适应Flutter的热重载在OpenHarmony上可用但热重启偶尔会失效。表现就是改了Dart代码点hot restart界面毫无变化。这种情况我一般先flutter clean再重新构建。原因大概率是Flutter引擎在OpenHarmony上的增量构建机制还不够完善遇到一次清理一次不用死磕。另外如果App里要访问网络需要在ohos目录的配置文件里声明网络权限还要处理应用沙箱的存储限制。这些和Android开发思路类似但配置文件写法不一样我第一次跑通网络请求卡在权限配置上差不多花了半天。4. 武将搜索功能核心实现4.1 搜索页UI实现搜索页UI用Flutter标准的Material组件整体分三块顶部搜索框、中部筛选栏、底部结果列表。搜索框用TextField几个关键属性值得注意TextField( controller: _searchController, autofocus: false, textInputAction: TextInputAction.search, decoration: InputDecoration( hintText: 输入武将名、拼音或技能关键词, prefixIcon: const Icon(Icons.search), suffixIcon: _hasInput ? IconButton( icon: const Icon(Icons.clear), onPressed: _clearSearch, ) : null, ), onChanged: _onSearchChanged, )suffixIcon的清除按钮是容易被忽略的细节。搜索场景里用户改关键词的频率非常高没有一键清除就得全选删除体验差别很大。我专门用ValueListenableBuilder监听输入框内容有文字时才显示清除按钮。筛选栏我用横向的ChoiceChip列表势力筛选项包括全部、魏、蜀、吴、群、神。筛选栏和搜索框是联动关系筛选条件一变要立即重新执行搜索而不是等用户重新输入。我的做法是把筛选条件放到ValueNotifier里搜索函数同时读取输入框和筛选条件的当前值任意一个变化都触发重新计算。结果列表用ListView.builder每个列表项是武将卡片展示名字、势力标、体力、技能名列表。卡片本身是StatelessWidget数据全部由外部传入这样后续做缓存和性能优化会容易一些。点击卡片跳详情页用Navigator.push即可。4.2 搜索逻辑实现搜索核心函数的最直接版本写起来很快ListGeneral search(String query, String faction) { final q query.trim().toLowerCase(); if (q.isEmpty faction 全部) { return _allGenerals; } final results _allGenerals.where((g) { final factionMatch faction 全部 || g.faction faction; if (!factionMatch) return false; if (q.isEmpty) return true; return g.name.contains(q) || g.pinyin.contains(q) || g.pinyinInitial.contains(q) || g.title.contains(q) || g.skills.any((s) s.toLowerCase().contains(q)); }).toList(); results.sort((a, b) _score(b, q).compareTo(_score(a, q))); return results; }逻辑没问题但隐患很明显每次按键都对全量数据做线性扫描还要对所有结果排序武将数量超过100之后低端机上会明显掉帧。所以我很快把实现改成了预构建索引 剪枝扫描的思路。预构建索引的做法App启动时把武将数据按名字、全拼、首字母、技能关键词分别建立倒排索引。用一个Map存储key是搜索词value是武将id列表。搜索时先在索引里查词再用id列表去取完整数据。这样搜索耗时只和命中结果数相关和数据总量基本无关。索引构建代码的思路是这样class SearchIndex { final MapString, Listint _index {}; void addGeneral(int id, ListString keys) { for (final key in keys) { _index.putIfAbsent(key, () []).add(id); } } Listint query(String q) { return _index[q] ?? const []; } }索引在启动时构建一次内存开销不大换来的是搜索耗时量级下降。名字索引、拼音索引、技能索引分开建查询时合并结果再按评分排序。实测在中端设备上单次搜索计算耗时从几十毫秒降到了个位数毫秒效果立竿见影。4.3 性能优化防抖与列表复用索引解决的是计算耗时长的问题但列表渲染本身的优化也要跟上。TextField的onChanged是每输入一个字符回调一次。如果每次回调都setState重建整个页面输入法联想和页面刷新会互相抢资源打字就会卡顿。解法是防抖输入变化后不立即搜索而是延迟150毫秒再执行期间有新输入就取消上一次的定时器Timer? _debounce; void _onSearchChanged(String value) { _debounce?.cancel(); _debounce Timer(const Duration(milliseconds: 150), () { _performSearch(value); }); }150毫秒的延迟肉眼基本感知不到但能显著减少低端设备上的计算压力。列表复用方面用ListView.builder已经是懒加载不需要额外处理。真正要注意的是搜索结果列表项不要写得太复杂每一帧build的耗时都会在滚动时暴露。我把武将卡片的技能文本用maxLines限制为两行超出部分在详情页展示保证列表项高度稳定滚动性能就能保持流畅。状态管理还有个小细节搜索结果列表数据用ValueNotifier持有页面用ValueListenableBuilder监听。这样搜索状态变更时只有列表区域重建搜索框、筛选栏保持原样既省性能又不会出现输入框失焦问题。5. 开发中踩过的坑与排查记录5.1 环境与工程配置类问题第一个坑就是前面提到的SDK版本匹配。Flutter ohos分支和OpenHarmony SDK版本不匹配时构建报一串红色错误核心信息就是version mismatch。排查方法很简单查Flutter ohos仓库的版本支持矩阵把两端版本对齐。我现在养成习惯每次更新依赖前先查版本矩阵不盲目升级。第二个坑是ohos目录里包名和签名配置。应用ID、模块名、签名证书三者必须协同配置少一个都会安装失败。而且签名证书有有效期开发调试证书过期后应用会装不上需要在IDE里重新生成。第三个坑是Flutter插件在OpenHarmony上的兼容性。我用了一个第三方本地存储插件做缓存在OpenHarmony上直接编译不过。检查发现这个插件的Android和iOS实现都写了但没有ohos实现。解决方案是先查插件是否支持ohos不支持的要么换纯Dart实现的包要么自己用Platform Channel封一层。这个在选型阶段就要考虑不能等到打包才排查。5.2 搜索功能实现过程中的细节问题搜索实现里最隐蔽的问题是拼音索引和中文索引的冲突。武将名字里有的字是多音字比如游戏里某些武将名的读音和拼音转换库的默认读音不一致结果就是用户按正确读音输入拼音却搜不到。这个问题没有完美的自动解法我的处理方式是在数据预处理时维护一份多音字手工修正表覆盖常见武将名。这是这个领域特有的数据校正通用方案解决不了必须人工介入。另一个问题是搜索空状态。用户输入一个没有匹配的关键词列表是空的。如果只显示空白区域用户会以为App卡死了。我加了一个空状态提示组件显示没有找到匹配的武将。同时去掉了下拉刷新因为列表为空时下拉刷新没有意义反而让人困惑。还有一个容易忽略的点搜索结果里武将名高亮。用户搜关结果里关羽的关字应该用主题色标出来。高亮的实现不能用单个Text组件塞整个字符串要把命中片段拆开用TextSpan分别设置样式让用户一眼看清命中的位置。5.3 真机适配与性能问题OpenHarmony设备和Android设备在屏幕尺寸、分辨率、字体渲染上都存在差异。测试时我发现搜索结果列表在OpenHarmony平板上间距偏大在手机上也有细微差别字体渲染比Android略粗。解决方案是列表项间距用固定约束不依赖系统默认间距字体大小用自适应单位避免固定数值导致不同密度屏幕上显示异常。性能方面还有一个容易被忽视的点应用冷启动时索引构建如果放在主线程启动白屏时间会明显变长。我把索引构建放到了异步Isolate里用compute函数处理启动时先显示加载占位索引完成后一次性更新搜索页面。启动耗时从肉眼可见的顿挫变成了流畅过渡。真机调试过程中还发现Flutter的热重载在OpenHarmony上比Android上更不稳定。遇到修改模型类之后热重载报类型错误的情况重启App就恢复正常。这类问题基本可以归结为Flutter ohos分支的增量编译特性还不够成熟不值得深究遇到重启就是了。写到最后说点个人体会。武将搜索这个功能单独看就是一个输入框加一个列表但真正做完才意识到一个简单的搜索背后牵扯到数据建模、索引设计、排序策略、UI细节、性能优化、平台适配这么多层面。尤其是Flutter for OpenHarmony这条技术路线环境搭建和调试流程跟标准Flutter开发有不少差异踩坑是常态。但如果目标就是做一个跨平台的工具类应用这条路线跑通之后的价值是实打实的——一套Dart代码两个平台都能出包后续维护成本低很多。我在做这个项目的过程中还有一个很深的感受功能实现永远比需求看起来要复杂。搜索这种每个人都用过的功能恰恰是最考验细节功力的。排序是否稳定、空状态是否友好、高亮是否清晰、输入是否跟手每一项都是体验的一部分。如果你正在做类似的工具类App建议从搜索功能开始动工——它是数据层到UI层的最短路径也是最快验证技术选型是否靠谱的方式。

相关新闻

Codex 工具返回 success 就能往下走?先给结果分四级

Codex 工具返回 success 就能往下走?先给结果分四级

Codex 工具返回 success 就能往下走?先给结果分四级 本文围绕“工具结果分级”设计一个可离线复核的教学场景:不调用在线模型、不连接设备、不上传业务数据。核验日期为 2026-10-14。 一、先定义本题真正要避免的错误 工具响应成功可能只说明请求被接收,不能证明写入已持久…

2026/10/14 21:57:06 阅读更多 →
FreeCAD 1.0源码深度解析:架构、构建与调试实战指南

FreeCAD 1.0源码深度解析:架构、构建与调试实战指南

简介:FreeCAD 1.0 源代码完整压缩包,面向 CAD 二次开发、开源社区研究者与想深入理解参数化建模内部机制的工程师,解决了从构建源码到扩展自定义功能的资料获取问题。资源共 2000 个文件,压缩包大小约 97.18MB,其中以 …

2026/10/14 21:56:06 阅读更多 →
GeoServer JMS集群部署实战:架构、配置与避坑指南

GeoServer JMS集群部署实战:架构、配置与避坑指南

GeoServer 做 JMS 集群部署,最核心的思路就一句话:用消息总线把配置变更广播给所有节点。本文分享我在实际环境里把多台 GeoServer 组进 JMS 集群的完整过程,包括架构设计、组件选型、配置步骤、负载均衡接入,以及一堆常规文档里不…

2026/10/14 21:56:06 阅读更多 →

最新新闻

基于AT89C51的DS18B20多点温度检测系统设计

基于AT89C51的DS18B20多点温度检测系统设计

简介:面向单片机课程设计与毕业设计场景,这份基于AT89C51的多点温度检测系统设计资料,完整解决了双点温度采集、LCD显示与系统搭建等问题。方案选用Dallas DS18B20单总线数字温度传感器,结合AT89C51单片机进行数据采集&#xff0c…

2026/10/15 4:47:54 阅读更多 →
PyFlink 1.11.0 UDF实战:标量、聚合、表函数选型与避坑指南

PyFlink 1.11.0 UDF实战:标量、聚合、表函数选型与避坑指南

1. 为什么要在 PyFlink 里折腾 UDFPyFlink 从 1.11.0 版本开始,对 Python 自定义函数(UDF)的支持才算真正进入可用阶段。在此之前,想在 Flink 作业里塞一段 Python 逻辑,要么绕道 Java 侧注册,要么干脆放弃…

2026/10/15 4:47:54 阅读更多 →
RS485通讯电路设计:光耦隔离六种典型方案对比与高速可靠传输选型指南

RS485通讯电路设计:光耦隔离六种典型方案对比与高速可靠传输选型指南

简介:RS485是工业现场最常用的串行通讯方式之一,但远距离传输中光耦工作区设置、整形电路阈值、驱动输出方式等因素,直接影响通讯速率与波形稳定性。这份资源以文档形式整理分析了五种典型的RS485通讯接线方案,逐一对电路结构、理…

2026/10/15 4:47:54 阅读更多 →
RTL8370N数据手册实战:寄存器、SMI与交换芯片调试要诀

RTL8370N数据手册实战:寄存器、SMI与交换芯片调试要诀

简介:这份资源是Realtek RTL8370NI-VB-CG芯片的官方数据手册,面向网络设备研发工程师、嵌入式软件开发者以及需要了解二层管理型交换机控制器细节的技术人员。手册系统介绍了8端口10/100/1000M自适应交换控制器的功能架构、VLAN/QoS/安全机制、Web/CLI/S…

2026/10/15 4:47:54 阅读更多 →
RTSP协议深度解析:从核心原理到Python实战与避坑指南

RTSP协议深度解析:从核心原理到Python实战与避坑指南

1. 为什么值得花时间吃透RTSP协议如果你做过网络摄像头、视频监控、直播推流或者在线教育相关的项目,大概率绕不开一个词——RTSP。全称Real Time Streaming Protocol,实时流传输协议,工作在应用层,专门用来控制音视频流的传输。它…

2026/10/15 4:47:54 阅读更多 →
MIPS核心指令硬件原理与工程避坑指南

MIPS核心指令硬件原理与工程避坑指南

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

2026/10/15 4:46:53 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →