Flutter on OpenHarmony开发全复盘:平台通道、混编与性能优化实战
训练营进行到DAY14第二阶段正式收尾。回头翻这周自己写的代码和碰壁记录最深的感受不是又学会了几个新组件而是终于把Flutter和开源鸿蒙这两套体系在脑子里接上了线。这篇复盘我把第二阶段里涉及Flutter for OpenHarmony的关键知识点重新过了一遍引擎怎么接上系统、工程怎么组织、通道怎么调、混编怎么玩、性能怎么查。后面准备入坑跨平台鸿蒙开发的可以直接拿这份清单避雷。1. 第二阶段到底在练什么第一阶段基本都在跑Demo目标是让你熟悉Flutter的组件、布局、路由和基础状态管理。到了第二阶段节奏完全变了。训练营的要求从“能写页面”直接跳到了“能交付一个可上真机的完整模块”。我手上的模拟项目X是一个待办加健康统计的小应用页面不多但要求覆盖三条主线日历与待办的联动、健康数据的列表展示、系统提醒能力的接入。DAY14这天没有安排新知识整个阶段留给自己做复盘。我当时做了一件事把每天提交的代码翻出来对照训练营给的能力地图逐条打勾。打完勾才意识到第二阶段真正的练习目标不是“Flutter用得更好”而是“让Flutter在OpenHarmony上变成一个完整可交付的应用”。1.1 从“能跑”到“能上真机”第一阶段的验收标准是“页面和交互做对”第二阶段的标准变成了“真机上能装、能跑、能调系统能力”。这中间多出来的东西都是之前没接触过的要能创建带ohos壳工程的Flutter项目而不是默认的Android/iOS工程。要能通过平台通道调用OpenHarmony的系统能力比如获取设备信息、订阅传感器、拉起系统提醒。要能把Dart代码连同壳工程一起打包成hap安装包装到开发板上或模拟器里。要能在真机上调试日志要分清楚Dart侧报错还是ArkTS侧报错。我当时很天真的想法是反正Flutter跨平台鸿蒙版应该只是换了个壳。实际操作一次就明白了壳工程和Flutter引擎的配合、两套SDK的对齐、构建链路哪一环出问题都跑不起来。1.2 为什么在鸿蒙生态里继续用Flutter这个问题我们在阶段讨论时反复争论。OpenHarmony有自己的ArkUI框架声明式写法、系统组件齐全如果项目只服务鸿蒙设备从零开始用ArkUI绝对没问题。但很多团队不是这种处境手里已经有成型的Flutter代码库或者同时要维护Android、iOS、Web多端这时候让Flutter跑在OpenHarmony上是复用成本最低的一条路。Flutter能跨平台的根本原因是它的渲染不依赖系统原生控件。按钮、列表、动画都是引擎自己用Skia/Raster画出来的操作系统只需要提供窗口、输入事件、纹理合成这些基础能力。所以一个已经适配过Windows、macOS的引擎要移植到OpenHarmony上核心工作就是把这些基础能力重新接一遍。ArkUI则走的是系统组件加声明式UI的路线性能好但和鸿蒙生态绑得比较紧。两边没有谁取代谁选型只看团队现状和交付目标。1.3 第二阶段能力地图复盘时我给自己列了一张能力清单第二阶段结束应该能做到理解Flutter引擎在OpenHarmony上的基本运行原理。熟练掌握MethodChannel、EventChannel、BasicMessageChannel三种通道。能创建带ohos壳工程的Flutter项目看懂工程目录结构。能用PlatformView把原生视图嵌入Flutter页面。能打包hap理解构建和签名的基本流程。能从首帧、刷新频率、日志三个方向定位基础性能问题。这些点大部分靠看文档学不来必须真机跑过、报过错、修过bug才算掌握。第二阶段到最后我判断自己过关的标准很简单遇到问题能说出来是Flutter侧的问题、壳工程的问题还是通道对接的问题。2. Flutter与OpenHarmony的对接逻辑第二阶段前几天的理论课其实都在讲一件事Flutter到底是怎么在OpenHarmony上跑起来的。如果不搞清楚这层后面写通道、调性能全是瞎子摸象。2.1 引擎移植Flutter在OpenHarmony上怎么“活”过来的Flutter for OpenHarmony并不是简单把Flutter安装包打进系统而是要把整个引擎的底层依赖重新接一遍。重点集中在四块窗口生命周期与Vsync信号。OpenHarmony的窗口创建、销毁、前后台切换都要映射到Flutter的帧调度器。没有VsyncFlutter都不知道什么时候可以渲染下一帧。输入事件。触摸、鼠标、键盘事件要转换成Flutter内部的PointerEvent才能触发手势识别和点击回调。文本输入法。软键盘的弹出、收起、候选词都要通过输入法框架转发给Flutter的TextInput插件。纹理与合成。Flutter渲染出来的内容最终要作为纹理交给系统合成显示。这个移植过程决定了兼容性边界。凡是OpenHarmony系统API没覆盖到的地方就可能出现奇奇怪怪的问题。比如某些版本上软键盘弹起位置不对、某些设备上视频纹理颜色偏色大多不是Flutter代码写错了而是引擎接系统那层没接好。遇到这种问题先别急着改Dart代码翻一翻是不是引擎适配层的老毛病。2.2 平台通道Dart与ArkTS之间的“电话线”Flutter业务代码跑在Dart侧系统能力在ArkTS侧中间靠的就是平台通道。最常用的是MethodChannel一次调用一次返回适合获取设备信息、设置系统参数这类场景。拿获取设备型号举个例子Dart侧这样封装class DeviceInfo { static const MethodChannel _channel MethodChannel(com.example.plugins/device_info); static FutureString getDeviceModel() async { try { return await _channel.invokeMethod(getDeviceModel); } on PlatformException catch (e) { // 这里一定要处理异常通道报错会导致Future一直挂起 return unknown: ${e.code}; } } }ArkTS侧对应的处理逻辑大概长这样import { MethodChannel } from ohos/flutter_ohos; const channel new MethodChannel(com.example.plugins/device_info); channel.setMethodCallHandler(async (call) { if (call.method getDeviceModel) { return OpenHarmony Device; } // 没有匹配的方法记得返回空值或抛错 return null; });这里最关键的一点是两边通道名字符串必须完全一致大小写、标点差一个都调不通。我当时排查了一个多小时最后发现是Dart侧写成了device_infoArkTS侧写成了deviceInfo。这种错误编译器不会报只有运行时看日志才能发现非常坑。2.3 三种通道怎么选通道不只有MethodChannel一种第二阶段至少要把三种都过一遍通道类型交互方式典型场景MethodChannel一次请求一次返回获取设备信息、设置参数、执行一次性操作EventChannel原生侧持续推送事件给Dart传感器数据、位置更新、电量变化BasicMessageChannel双向透传消息自定义协议、流式数据、需要双向通信的复杂场景选型逻辑很简单。如果你只是“问一个问题拿一个答案”用MethodChannel如果你要持续接收系统推送比如计步数据、心率数据用EventChannel如果两端要频繁互发消息而且消息格式自定义程度高用BasicMessageChannel。这个选择直接影响后期维护成本。训练营里有同学把传感器数据用MethodChannel做定时轮询每200毫秒调一次原生方法结果设备发热明显。换EventChannel改成原生侧订阅传感器、Dart侧被动收事件性能立刻正常了。高频数据一定要走事件流别用轮询。3. 工程搭建与项目结构复盘第二阶段第一天的主题是环境安装。这一关过了后面都是逻辑问题过不了每天都会卡在环境上。3.1 环境准备最容易栽跟头的地方Flutter for OpenHarmony的开发环境本质上是两套工具链并存。一套是OpenHarmony的SDK和构建工具负责编译壳工程、生成hap另一套是Flutter SDK负责编译Dart代码。两套工具链版本必须对齐版本号对不上编译时就会报一些莫名其妙的错比如找不到某个符号、产物类型对不上。训练营第一周几乎每个人都踩过环境坑。我当时的环境变量是这样配的export OHOS_SDK_HOME/path/to/openharmony-sdk export FLUTTER_OHOS_HOME/path/to/flutter-ohos-sdk export PATH$FLUTTER_OHOS_HOME/bin:$PATH需要注意不同SDK包对环境变量名的要求不完全一样。以你实际下载的SDK包里的说明为准别照抄网上的教程版本不同很可能名字就对不上。还有一个建议两个SDK的路径里不要带中文、空格和特殊符号。有个同学把SDK放在桌面“新建文件夹”里构建工具解析路径直接崩了改路径重配了一下午才好。3.2 工程结构多出来的ohos目录创建项目时用带ohos平台的参数生成出来的工程会比普通Flutter项目多一个ohos目录。整体结构大致是这样my_app/ ├── lib/ # Dart业务代码 │ └── pages/ ├── ohos/ # OpenHarmony壳工程 │ ├── entry/ │ │ └── src/main/ │ │ ├── ets/ # ArkTS入口和插件侧代码 │ │ └── resources/ │ └── build-profile.json5 ├── pubspec.yaml └── analysis_options.yaml理解这个结构很重要。你的Flutter业务代码只放在lib/下壳工程在ohos/下。想要调用某个系统能力原生侧代码写在ohos/entry/src/main/ets里然后用平台通道暴露给Dart侧调用。千万不要把原生代码写到lib/目录里它不会被编译进原生模块。3.3 从源码到hap的一条完整链路flutter build hap --release这条命令背后实际上做了三件事。先把Dart代码编译成引擎能加载的产物再调用OpenHarmony的构建工具把ohos目录下的壳工程编成hap模块最后执行签名配置输出可安装的安装包。打包产物一般会出现在build/ohos目录下但不同SDK版本路径可能略有差异找不到就直接在工程里搜.hap文件。这一步最容易忽略的是签名。调试阶段你可能用调试证书顺手就跑通了但release包如果不配置签名装到真机上会直接报错拒绝安装。我们阶段收尾时有同学拿着release包在开发板上折腾了半天装不上最后发现是签名配置漏了。打包前先检查build-profile.json5里的signingConfigs别等到装机才排查。4. 与ArkUI混编与平台能力调用实操第二阶段后半段训练营开始进入混编实战。所谓混编就是在Flutter页面里嵌入原生视图或者在原生页面里嵌入Flutter容器。这个阶段泥沙俱下也是最容易出现内存问题、生命周期错乱的地方。4.1 混编的实际场景如果用Flutter硬要在通用UI层实现一个高精度地图、一套相机滤镜、一个支付密码键盘成本会非常高。混编的价值就在于“专业的事情交给专业组件”。业务主流程、列表、设置页这些通用页面用Flutter写开发效率高地图、扫码、人脸识别这类强系统能力直接用原生视图嵌入。当时我的模拟项目X里接了一个系统提醒页面提醒的角标和样式用Flutter画没问题但提醒的精确触发要原生侧做。最终方案就是Flutter页面负责展示和交互ArkTS侧负责系统提醒服务两边通过MethodChannel和EventChannel协同。页面看起来还是Flutter的系统能力却实实在在用上了。4.2 PlatformView接入步骤Flutter页面里嵌入原生视图核心是PlatformView机制。以我用的SDK版本为例流程大致是这样在ArkTS侧实现一个原生视图并注册给Flutter引擎。在Dart侧用对应的PlatformView组件指定viewType来创建。创建完成后Dart侧拿到viewId可以通过通道向原生视图发送控制指令。Dart侧的关键代码类似UiKitView( viewType: native_camera_view, creationParams: {mode: rear}, creationParamsCodec: const StandardMessageCodec(), onPlatformViewCreated: (int id) { // id是原生视图的唯一标识后续通道通信要用 }, )这里要特别留意视图的创建和销毁时机。PlatformView不像普通Widget页面关闭只是把Widget树拆掉原生视图如果不主动销毁会一直留在内存里。我们当时在页面反复进出几次后明显感觉内存上涨最后定位到是PlatformView没有在dispose流程里释放。别偷懒页面销毁逻辑里一定要显式释放原生视图。4.3 生命周期同步与页面路由当Flutter页面被嵌进原生导航栈时生命周期同步就是一个很现实的问题。原生页面onHide、onShow这些状态如果不转发给Flutter侧的AppLifecycleStateFlutter里的动画、定时器、数据刷新节奏就会出错。比如原生页面被另一个页面盖住Flutter侧的动画还在继续跑浪费CPU还可能引发界面状态错乱。我当时踩过一次很典型的坑在原生侧按下Home键回来之后Flutter页面的计时器乱了。原因就是生命周期事件没有正确分发到Flutter的WidgetsBindingObserver。后来我在原生侧统一把页面生命周期转发给Flutter在Dart侧重写didChangeAppLifecycleState状态恢复、计时器暂停、数据刷新都在这一个地方处理问题才彻底解决。另外页面路由也要有统一策略。我的习惯是业务页面尽量用Flutter的Navigator在内部跳转只有需要调用强原生能力时才跳鸿蒙原生页面。这样路由逻辑集中返回结果通过通道回传不会出现“一个项目里两套路由互相打架”的局面。5. 状态管理与异步编程的踩坑记录第二阶段状态管理算是一个分水岭。第一阶段的练习页面小用setState随便刷都无所谓到了完整应用阶段页面一多、数据流一复杂状态管理方案没选好代码会越写越乱。5.1 状态管理选型先明白刷新粒度我的建议是刚接触跨平台开发先别急着上重型状态管理框架。训练营里有同学一上来就选了Bloc结果第二阶段大量时间花在调试框架本身上业务反而没写多少。按这个顺序来更稳setState解决组件内状态Provider解决跨页面共享状态Riverpod解决更复杂的依赖和异步状态。等你能说清楚“我这个状态到底要影响多少个Widget”之后再去碰Bloc也不迟。这里最核心的概念是刷新粒度。状态变化影响的范围越小性能越容易控制。拿健康列表页举例当时我在一个页面里用Provider管理整个页面的ViewModel结果页面里有个计时器每秒更新一次耗时数据。因为整个页面都订阅了这个Provider计时器每走一秒整个页面的列表全部重建。后来把计时器单独拆成一个小组件用Consumer只订阅耗时那一小块区域列表重建的问题瞬间消失。状态管理不只是代码结构问题直接和性能挂钩。5.2 平台通道的异常与事件流丢失平台通道用起来简单坑却不少。最常见的是两个问题第一个调用原生方法没有做异常捕获。通道是跨语言调用原生侧可能抛异常、可能超时、可能返回空值Dart侧如果不try/catchFuture就会一直挂起界面表现为点击没反应。我的习惯是所有MethodChannel调用都包一层超时和异常处理返回类型不确定的一律判空。第二个EventChannel的订阅被回收。Dart侧如果只把EventChannel存在局部变量里接收事件之后没有长期持有订阅对象过一会儿事件流会莫名其妙断掉。看起来像是原生侧不发了其实是Dart侧订阅被GC回收了。正确的做法是在initState里订阅把StreamSubscription存成成员变量在dispose里取消订阅。5.3 真机上的异步时序问题跨平台开发最容易出bug的地方往往不在单个功能而在多个异步事件的先后顺序。比如健康数据页面进入页面时要同时做三件事拉取本地数据库、订阅传感器、向系统请求通知权限。这三个操作都是异步的返回顺序不确定。如果权限弹窗还没返回传感器订阅就先启动了可能收不到授权后的数据流。后来我把流程改成串行先确保权限就绪再订阅传感器最后刷UI和数据。虽然后两个操作可以并行但串行能显著降低心智负担和调试成本。还有一点尽量把高频数据的聚合放到原生侧。Dart侧频繁向原生侧发MethodChannel请求每一次都是跨语言调用成本远比普通函数高。传感器、定位这类高频数据让原生侧聚合好再通过EventChannel按秒推送Dart侧拿到就是可以直接渲染的数据。6. 性能优化与调试工具链第二阶段每天提交的内容不只是“能跑”还有“跑得顺不顺”。训练营给的验收标准里首帧时间、列表滑动流畅度、包体积都是隐性要求。6.1 首帧与卡顿定位调性能之前先搞清楚瓶颈在UI线程还是Raster线程。Profile模式下用性能工具看Timeline如果UI线程出现长耗时多半是Dart侧代码有问题比如build方法里做了耗时计算、同步读取了数据库如果Raster线程长耗时一般是绘制层级太复杂、图片分辨率过大、叠加效果过多。首屏优化我当时做了三件事去掉首屏非必需的网络请求让它延迟到页面可见后再加载用骨架屏占位减少首屏内容面积确认所有列表都是懒加载模式没有一次性塞进一整屏的Item。效果不用看精确数字体感上进入页面到首帧显示的间隔明显缩短。这个方向是对的首屏不是真的啥都不画而是把优先级排清楚先画用户第一眼需要的。6.2 日志与热重载的配合开发阶段flutter attach加热重载是效率神器。改Dart代码不用重新打包直接热重载看效果。但有一个前提要认清热重载只对Dart侧代码有效你在ohos目录下改动ArkTS代码或插件逻辑热重载不会有任何反应必须重新构建壳工程。日志排查也要习惯两边看。Dart侧用debugPrintArkTS侧用系统的hilog。第二阶段最后几天我给自己定了一个规矩涉及跨端的功能两端日志用同一个tag前缀比如X_DeviceInfo、X_Sensor。这样拉日志时按tag统一过滤能直接看到一条跨端调用完整的时间线Dart侧什么时候发的、ArkTS侧什么时候收到的、返回值什么时候回来的一目了然。6.3 包体积与内存包体积这块最容易膨胀的是图片资源。有些第三方图标库、插画素材整包塞进工程hap体积大得吓人。图片能走网络加载的就不要本地打包必须本地打包的也要压缩后再放进去。还有一类是依赖问题为了用某个小功能引入一个大库体积翻倍。打包前检查一下pubspec.yaml用不到的功能别留着。内存方面除了前面提过的PlatformView释放、EventChannel取消订阅还有长列表的Item复用。用ListView.builder构建长列表不要用Column暴力塞一百条子组件。还有异步回调里如果持有页面Context在页面销毁后回调返回了有概率引起内存泄漏。页面销毁时把异步任务取消掉是最保险的做法。7. 第二阶段避坑速查表复盘最后我把第二阶段遇到的高频问题整理成了一张速查表后续再做Flutter for OpenHarmony项目时可以直接对照排查问题现象可能原因解决办法构建时找不到hvigor相关命令环境变量未配置或版本不对齐重新配置SDK环境变量确认两套SDK版本匹配热重载后平台通道没反应壳工程或ArkTS代码没有热重载重新构建ohos模块再执行flutter attachEventChannel收不到事件StreamSubscription被GC回收用成员变量持有订阅对象dispose时取消MethodChannel调用一直挂起原生侧抛异常但没有Dart侧catch给invokeMethod包try/catch加超时逻辑PlatformView白屏视图没有正确挂载或生命周期未同步检查视图注册逻辑在页面显示时重新attachrelease包装不上真机缺少签名配置检查build-profile.json5中的signingConfigs高频数据导致设备发热用MethodChannel做定时轮询改成EventChannel由原生侧聚合推送页面退出后内存上涨PlatformView或事件订阅未释放在dispose流程里显式释放资源和取消订阅这张表只能兜底真机上的问题千奇百怪。遇到表格里没有的优先看日志。Dart侧日志能定位到业务层的问题ArkTS侧日志能定位到系统层的问题两边的日志时间线一对大多数问题都能缩小到具体模块。另外还有一个容易忽略的点构建产物和缓存。改了壳工程代码、插件代码、通道声明结果跑的始终是旧逻辑十有八九是构建缓存问题。先把build目录和临时产物清一遍再重新构建很多时候就正常了。第二阶段的复盘我觉得应该停在这补充一个自己验证过的技巧从第一天开始每完成一个功能节点就打一个git tag。阶段复盘时用git diff看两个tag之间的代码变化比翻聊天记录直观得多。这个习惯后来也帮我快速定位过性能退化——某个功能上线后首帧变慢直接对比变更历史的diff很快就锁定了新增的一个同步数据库查询。就我个人体会而言Flutter for OpenHarmony现在还谈不上完美。和成熟的Android/iOS适配比引擎层的边缘问题、插件的完整度、debug工具的顺手程度都还有差距。但核心路径已经能跑通了Flutter代码资产复用到鸿蒙生态这条路是明确走得通的。接下来如果还有第三阶段我知道自己要往哪里使劲一是把平台通道封装层做得更静默业务侧只暴露简单的异步调用二是把性能监控指标沉淀下来用数据而不是体感来评估每个版本的质量。这次复盘写的每一个坑都是真金白银的调试时间换来的。希望看这篇的人能少踩几个我已经踩过的坑。

相关新闻

ThinkPHP6+Layui后台开发实战:从环境搭建到权限管理

ThinkPHP6+Layui后台开发实战:从环境搭建到权限管理

1. 为什么我最终选了tp6layui这个组合来写后台先说结论:这不是什么“最新最潮”的技术栈,但如果你要快速交付一个企业内部可用的后台管理系统,tp6layui至今仍然是非常稳的一套搭配。我这两年用这个组合做过的项目,从进销存后台到内…

2026/10/15 21:46:59 阅读更多 →
UOS运维工程师题库高频考点解析:NFS、Ansible、Docker配置避坑指南

UOS运维工程师题库高频考点解析:NFS、Ansible、Docker配置避坑指南

简介:这份UOS运维系统运维工程师题库面向备考国产操作系统运维认证、希望系统梳理Linux服务管理知识点的技术人员与在校学生,以单选题、多选题和判断题的形式覆盖日常运维高频考点。压缩包内仅含1个doc文档,体积约61KB,轻量易读&a…

2026/10/15 21:46:59 阅读更多 →
Node 多版本共存神器:从原理到实践,彻底解决版本切换难题

Node 多版本共存神器:从原理到实践,彻底解决版本切换难题

干前端时间长了,几乎都会遇到同一个尴尬:项目A还在用 Node 14,项目B已经要求 Node 18 起步,而你机器上只有一个 Node。装上新的,老项目跑不起来;留在旧的,新项目又报错。这不是单纯的“版本太低…

2026/10/15 21:46:59 阅读更多 →

最新新闻

四轮把模糊想法逼成明确决策:grill-me 实战指南

四轮把模糊想法逼成明确决策:grill-me 实战指南

四轮把模糊想法逼成明确决策:grill-me 实战指南 【免费下载链接】skills Skills for Real Engineers. Straight from my .agents directory. 项目地址: https://gitcode.com/GitHub_Trending/skills13/skills 你把一个没想清楚的主意丢给编码 agent&#xff…

2026/10/16 2:02:46 阅读更多 →
初识AlphaFin:一个框架搞定股票趋势预测与金融问答的开源LLM金融分析基准详解

初识AlphaFin:一个框架搞定股票趋势预测与金融问答的开源LLM金融分析基准详解

【免费下载链接】AlphaFin 项目地址: https://gitcode.com/gh_mirrors/alp/AlphaFin 点击查看 免费下载 AlphaFin 是一个面向金融分析场景的开源项目,把"股票趋势预测"和"金融问答"两大任务整合进同一套 LLM 工作流中。它提供 Alph…

2026/10/16 2:02:46 阅读更多 →
SSH Ramdisk 脚本实战:在 checkm8 设备上创建并引导 SSH ramdisk(palera1n 项目详解)

SSH Ramdisk 脚本实战:在 checkm8 设备上创建并引导 SSH ramdisk(palera1n 项目详解)

移动开发 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 点击查看 免费下载 导读 本文围绕 palera1n/ramdisk 目录下内嵌的 SSH Ramdisk 脚本展开,该脚本源自 SSHRD_Script 的精简版…

2026/10/16 2:02:46 阅读更多 →
Buzz 离线音频转录上手指南:Whisper 本地语音转文字与实时字幕

Buzz 离线音频转录上手指南:Whisper 本地语音转文字与实时字幕

Buzz 离线音频转录上手指南:Whisper 本地语音转文字与实时字幕 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 视…

2026/10/16 2:02:46 阅读更多 →
基于单片机和Labview的多通道温度采集系统设计与实现

基于单片机和Labview的多通道温度采集系统设计与实现

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

2026/10/16 2:02:46 阅读更多 →
零基础完整教程:3 分钟让 Hermes 自我进化 AI Agent 跑通 DeepSeek 接入

零基础完整教程:3 分钟让 Hermes 自我进化 AI Agent 跑通 DeepSeek 接入

零基础完整教程:3 分钟让 Hermes 自我进化 AI Agent 跑通 DeepSeek 接入 【免费下载链接】awesome-deepseek-agent 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-deepseek-agent 大约 3 分钟、2 条命令、3 个参数,就能让 Hermes 自…

2026/10/16 2:01:46 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 9:49:14 阅读更多 →