当前位置: 首页 > news >正文

Purple Pi OH开发板7天实战OpenHarmony:从环境搭建到应用开发

1. 项目概述:为什么是Purple Pi OH与OpenHarmony?

最近在技术社区和招聘平台上,一个趋势越来越明显:掌握OpenHarmony(开源鸿蒙)开发技能,正在成为嵌入式、物联网领域工程师新的价值高地。我身边就有朋友,凭借扎实的OpenHarmony项目经验,成功拿到了远超传统嵌入式岗位的薪资包。这背后反映的是整个产业对下一代智能终端操作系统的迫切需求,以及随之而来的人才缺口。

“挑战6万月薪”这个系列,就是基于这个背景展开的实战记录。它不是空谈理论,而是聚焦于如何通过一个具体的、高性价比的硬件平台——Purple Pi OH开发板,在短时间内(比如7天)构建起对OpenHarmony从入门到应用的完整认知与实践能力。选择Purple Pi OH,是因为它是一款基于瑞芯微RK3566芯片、专门为OpenHarmony标准系统适配的开发板,价格亲民,资料相对齐全,社区支持也在逐步完善,非常适合个人开发者、学生以及希望转型的工程师作为“练手”和“敲门砖”。

OpenHarmony本身是一个面向全场景、分布式的智能终端操作系统。它与我们熟知的Android、Linux有着根本性的设计哲学差异。简单来说,它不是为了单一设备而生的,其核心能力在于让多个设备能够像一台设备一样协同工作。这对于想要进入智能家居、车载座舱、工业物联网等领域的开发者来说,是一个必须理解和掌握的新范式。本系列第三篇,就将以Purple Pi OH为硬件载体,带你快速上手OpenHarmony标准系统的开发环境搭建、基础应用开发与系统能力调用,为冲击更高的职业天花板打下第一块坚实的基石。

2. 开发环境全链路搭建与踩坑实录

工欲善其事,必先利其器。OpenHarmony的开发环境搭建,对于新手来说可能是第一道坎。其工具链融合了Linux、Docker、Python、Node.js等多种技术,步骤繁琐,任何一个环节出错都可能导致后续工作无法进行。下面我将基于Purple Pi OH(标准系统),详细拆解从零开始的完整环境搭建流程,并附上我实测中遇到的所有“坑”及解决方案。

2.1 宿主机构建:Ubuntu虚拟机配置详解

OpenHarmony的源码编译强烈推荐在Ubuntu系统下进行。对于Windows或macOS用户,最稳妥的方案是使用虚拟机。

1. 虚拟机与系统版本选择我使用的是VMware Workstation 17 Player(免费版)和Ubuntu 20.04 LTS版本。这里有几个关键点:

  • 为什么是20.04?因为OpenHarmony官方文档的构建指南长期以Ubuntu 20.04/18.04为基准进行测试,工具链兼容性最好。使用22.04或更高版本可能会遇到未预期的依赖库问题。
  • 虚拟机配置:至少分配4核CPU、8GB内存和100GB硬盘空间。编译OpenHarmony标准系统源码对资源消耗较大,配置不足极易导致编译失败或速度极慢。
  • 安装模式:建议在安装Ubuntu时选择“最小安装”,以减少不必要的软件包冲突。务必在安装过程中就勾选“安装OpenSSH server”,方便后续通过终端远程连接。

2. 基础依赖与工具安装系统安装完成后,首先更新软件源并安装一系列基础工具和依赖库。以下命令需要逐条执行:

sudo apt update sudo apt upgrade -y # 安装编译必备工具 sudo apt install -y git git-lfs python3.8 python3-pip curl sudo apt install -y build-essential gcc g++ make zlib1g-dev libffi-dev libssl-dev libncurses5-dev sudo apt install -y ninja-build ccache # 设置Python3.8为默认python3(如果系统预装的是其他版本) sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1

注意git-lfs(Git Large File Storage) 是必须的,因为OpenHarmony的源码仓库使用了它来管理大文件(如预编译的工具链)。不安装会导致repo sync失败。

3. 安装和配置hb(OpenHarmony构建工具)hb是OpenHarmony自研的构建命令工具,用于执行编译、烧录等操作。它通过Python包管理工具pip安装。

# 安装hb pip3 install --user ohos-build # 将hb所在路径添加到环境变量 echo 'export PATH=~/.local/bin:$PATH' >> ~/.bashrc source ~/.bashrc # 验证安装 hb --version

如果看到版本号输出,说明安装成功。这里常见的一个“坑”是:如果系统中有多个Python版本,pip3安装的包可能没有关联到正确的Python环境。确保python3 --versionpip3 --version指向的是同一个Python 3.8环境。

2.2 源码获取与repo工具掌控

OpenHarmony使用谷歌的repo工具来管理由多个Git仓库组成的庞大源码树。

1. 安装与初始化repo

# 创建并进入工作目录 mkdir ~/openharmony && cd ~/openharmony # 下载repo启动器并赋予执行权限 curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo chmod a+x repo # 为了方便,将其复制到系统路径 sudo mv repo /usr/local/bin/ # 配置git用户信息(必须,否则无法提交代码) git config --global user.name "你的名字" git config --global user.email "你的邮箱"

2. 同步Purple Pi OH适配的源码Purple Pi OH的源码通常由板卡供应商(如深圳触觉智能)在OpenHarmony主干代码基础上进行适配后,维护在自己的代码仓库中。直接克隆官方主干代码可能无法直接用于Purple Pi OH。因此,我们需要使用供应商提供的repo清单(manifest)。

# 进入openharmony目录 cd ~/openharmony # 通过供应商提供的repo命令初始化仓库 # 此处以可能的一种方式为例,实际URL需参考Purple Pi OH官方Wiki repo init -u https://gitee.com/xxx/xxx_manifest.git -b master -m purplepi_oh.xml --no-repo-verify # 同步代码(这是一个漫长的过程,取决于网络,可能需要数小时) repo sync -c -j8

实操心得-j8表示用8个线程并行同步,可以根据你的网络和CPU情况调整。网络不稳定是同步失败的主要原因。如果中途失败,可以多次执行repo sync -c直到成功。建议在夜间或网络状况好的时候进行。同步完成后,务必检查vendor/xxx/purplepi_oh(具体路径可能不同)目录是否存在,这里面包含了Purple Pi OH特有的设备树、内核配置和HDF驱动等。

2.3 编译配置与首次构建

源码就绪后,需要针对Purple Pi OH进行编译配置。

1. 执行编译准备脚本在源码根目录下,通常有一个供应商提供的设置环境变量的脚本。

source build/envsetup.sh

执行后,会输出可选择的编译产品列表。你应该能看到类似purplepi_ohrk3566的选项。

2. 选择目标并开始编译

# 选择开发板对应的编译目标 hb set # 此时会出现一个交互式菜单,使用方向键选择 `purplepi_oh` 或相应的选项,然后回车。 # 开始编译,-jN 中的N建议设置为CPU核心数的1-1.5倍 hb build -j6

首次编译会下载大量的工具链和依赖(存放在prebuilts目录),然后进行全量编译,耗时可能长达1-2小时。

3. 编译输出与结果验证编译成功后,生成的镜像文件位于out/rk3566/purplepi_oh/目录下(路径可能因版本而异)。关键镜像包括:

  • OHOS_Image.bin: 内核镜像
  • system.img: 系统镜像
  • vendor.img: 厂商定制镜像
  • userdata.img: 用户数据镜像
  • updater.img: 升级镜像

你可以通过ls -lh out/rk3566/purplepi_oh/packages/phone/images/来查看它们。至此,开发环境搭建和系统镜像构建完成。

3. 系统烧录与硬件启动实战

拥有编译好的镜像后,下一步就是将其烧录到Purple Pi OH开发板上,让系统真正跑起来。烧录方式主要有两种:通过RKDevTool工具在Windows下烧录,或者通过fastboot在Linux下命令行烧录。这里我重点介绍更接近生产流程的命令行烧录方式。

3.1 开发板进入烧录模式

Purple Pi OH基于瑞芯微芯片,通常使用MaskROM模式或Loader模式进行烧录。

  1. 硬件连接:使用Type-C数据线连接Purple Pi OH的OTG口(注意不是电源口)到电脑USB口。同时,连接串口调试工具(如USB转TTL模块)到开发板的UART调试口(通常是RX、TX、GND三根线),以便查看启动日志。
  2. 进入MaskROM模式
    • 确保开发板完全断电(不接任何电源)。
    • 找到板子上的MASKROM按键恢复按键(可能标为REC或MASKROM)。
    • 按住这个按键不放。
    • 在按住按键的同时,给开发板上电(插入Type-C电源)。
    • 保持按住按键约2-3秒后松开。
    • 此时,开发板应进入MaskROM模式。在Linux系统中,使用lsusb命令查看,如果出现“USB下载设备”或“Rockchip”相关的设备,即表示成功。

3.2 使用fastboot与upgrade_tool进行烧录

在Linux环境下,我们可以使用RK3566芯片提供的命令行工具进行烧录。

1. 获取并准备烧录工具烧录工具通常由芯片原厂或板卡供应商提供。你可以在Purple Pi OH的SDK资料包中找到upgrade_toolrkdeveloptool

# 假设工具已下载到~/tools目录 cd ~/tools # 解压并赋予执行权限 tar -xvf upgrade_tool_vx.x.x_linux.tar.gz chmod +x upgrade_tool

2. 编写烧录配置文件创建一个文本文件,例如flash.cfg,用于指定每个分区对应的镜像文件。这是最关键的一步,配置错误会导致板子无法启动。

# flash.cfg 示例 [[system]] path = ~/openharmony/out/rk3566/purplepi_oh/packages/phone/images/system.img [[vendor]] path = ~/openharmony/out/rk3566/purplepi_oh/packages/phone/images/vendor.img [[userdata]] path = ~/openharmony/out/rk3566/purplepi_oh/packages/phone/images/userdata.img [[updater]] path = ~/openharmony/out/rk3566/purplepi_oh/packages/phone/images/updater.img

注意:分区名称(如system,vendor)必须与开发板parameter.txt(分区表文件)中定义的名称严格一致。请务必从供应商提供的资料中获取正确的分区表信息。

3. 执行烧录命令

sudo ./upgrade_tool db ~/tools/rk356x_loader_vx.x.bin # 加载MiniLoader,初始化芯片 sudo ./upgrade_tool ul ~/tools/rk356x_loader_vx.x.bin # 写入Loader sudo ./upgrade_tool di -p ~/tools/parameter.txt # 写入分区表(谨慎操作,会清空所有数据) sudo ./upgrade_tool di -c flash.cfg # 根据配置文件烧录各个镜像

烧录过程会在终端显示进度条。全部完成后,给开发板重新上电(或发送重启命令),系统应该从eMMC或SD卡启动。

3.3 串口调试与首次启动验证

烧录完成后,需要通过串口观察启动过程。

  1. 连接串口:使用串口工具(如minicom,picocom或Windows下的Xshell、MobaXterm)连接开发板。串口参数通常为:115200波特率,8数据位,1停止位,无校验,无流控
  2. 上电观察日志:给开发板上电,串口终端会如瀑布般打印内核启动日志。你需要关注:
    • Uboot阶段:是否正常加载设备树(DTB)、内核(Kernel)、根文件系统(ramdisk)。
    • 内核阶段:各硬件驱动(如DDR、EMMC、USB、以太网)是否初始化成功,有无[ OK ][FAILED]提示。
    • OpenHarmony用户态启动:最终是否出现“OHOS #”或类似的Shell提示符。如果看到这个提示符,恭喜你,OpenHarmony标准系统已经在Purple Pi OH上成功运行了!

踩坑记录:我第一次烧录后卡在内核启动阶段,串口反复打印内存相关错误。排查后发现是parameter.txt分区表中的uboot分区起始地址与镜像实际编译时使用的地址不匹配。解决方案是从供应商处获取与源码版本完全配套的parameter.txtMiniLoader文件。切记:烧录三件套(Loader, parameter, 镜像)的版本必须彼此兼容。

4. 应用开发初体验:从“Hello World”到Ability

系统跑起来了,接下来就是开发我们的第一个OpenHarmony应用。OpenHarmony应用开发主要使用ArkTS语言(基于TypeScript),IDE推荐官方DevEco Studio。我们从一个简单的“Hello World”应用开始,理解OpenHarmony应用的基本模型。

4.1 DevEco Studio项目创建与配置

  1. 安装与配置DevEco Studio:从官网下载安装。首次启动时,需要配置OpenHarmony SDK路径。SDK Manager会自动下载必要的API版本和工具链。
  2. 创建新项目
    • 选择“Application” -> “Empty Ability”模板。
    • “Project Type” 选择 “Application”。
    • “Compile API Version” 根据Purple Pi OH系统镜像的API版本选择(例如,API 9)。
    • “Model” 选择 “Stage”,这是OpenHarmony 3.1 Release及之后推荐的应用模型。
    • 完成创建后,你会得到一个标准的项目结构。

4.2 核心概念:Ability与UI界面

OpenHarmony应用的基本组成单元是Ability。一个Ability代表一个应用的功能单元,类似于Android的ActivityService,但设计更抽象。我们创建的“Empty Ability”包含一个UIAbility(承载UI)和一个与之关联的页面。

1. 剖析入口页面 (Index.ets)打开entry/src/main/ets/pages/Index.ets文件,这是应用的首页。

@Entry @Component struct Index { @State message: string = 'Hello World' // @State装饰器表示该变量是状态数据,变化会触发UI刷新 build() { Row() { // 根布局为行布局 Column() { // 内部为列布局 Text(this.message) // 显示文本 .fontSize(50) .fontWeight(FontWeight.Bold) Button('Click Me') // 按钮组件 .onClick(() => { // 点击事件 this.message = 'Hello Purple Pi OH!'; }) } .width('100%') } .height('100%') } }

这段代码定义了一个ArkUI组件:

  • @Entry:装饰该组件为页面入口。
  • @Component:表示这是一个自定义组件。
  • @State:装饰器,它管理的变量message是状态变量。当message的值改变时,所有依赖它的UI(这里的Text组件)会自动更新。这就是ArkUI的响应式UI编程模型。
  • build():描述UI结构的方法,采用声明式语法。RowColumnTextButton都是系统提供的组件。

2. 修改与预览你可以直接修改this.message的初始值,或者在按钮的onClick事件里添加更复杂的逻辑。DevEco Studio提供了强大的“Previewer”功能,可以在不连接真机的情况下,实时预览UI效果,极大提升开发效率。

4.3 应用签名与真机调试

要在真机(Purple Pi OH)上运行应用,必须对应用进行签名。

  1. 生成密钥和证书:在DevEco Studio中,选择“File” -> “Project Structure” -> “Project” -> “Signing Configs”,按向导生成或导入已有的.p12密钥文件和.cer证书文件。
  2. 配置签名信息:在项目的build-profile.json5文件中,会自动填入签名配置。
  3. 连接设备
    • 确保Purple Pi OH系统已启动,并通过USB连接电脑。
    • 在Purple Pi OH上,进入“设置” -> “关于手机” -> 连续点击“版本号”开启开发者模式。
    • 返回“设置” -> “系统和更新” -> “开发人员选项”,打开“USB调试”开关。
    • 在DevEco Studio中,选择“Run” -> “Run ‘entry’”,设备选择器里应该能看到你的Purple Pi OH设备。
  4. 运行与调试:点击运行,DevEco Studio会自动编译、签名、安装并启动应用到开发板上。你可以在Log窗口中查看应用日志,进行调试。

实操心得:真机调试时,经常遇到“INSTALL_PARSE_FAILED_USESDK_ERROR”错误,这通常是因为应用的compileSdkVersionreleaseType与设备系统的版本不兼容。务必确保项目配置的API版本不高于设备系统的API版本。可以在Purple Pi OH的Shell中使用“hilog | grep ApiVersion”来查询系统的API级别。

5. 深入系统能力调用:以网络请求为例

一个“Hello World”应用只是开始。OpenHarmony的强大之处在于其丰富的系统能力(System Capability)。下面以最常用的网络请求为例,展示如何调用系统API。

5.1 权限声明与模块导入

OpenHarmony应用访问网络需要声明权限,并导入对应的模块。

  1. 声明权限:在entry/src/main/module.json5文件的module字段下添加requestPermissions
    { "module": { "requestPermissions": [ { "name": "ohos.permission.INTERNET" } ] } }
  2. 导入网络模块:在需要使用网络的.ets文件顶部导入@ohos.net.http命名空间。
    import http from '@ohos.net.http';

5.2 发起一个HTTP GET请求

我们修改Index.ets,添加一个按钮来触发网络请求,并将结果显示在界面上。

import http from '@ohos.net.http'; @Entry @Component struct Index { @State message: string = 'Ready'; @State responseText: string = 'No data'; // 创建HTTP请求对象 private httpRequest = http.createHttp(); // 发起GET请求的方法 fetchData() { let url = 'https://api.example.com/data'; // 替换为你的测试API this.message = 'Loading...'; this.httpRequest.request( url, { method: http.RequestMethod.GET, connectTimeout: 60000, readTimeout: 60000, }, (err, data) => { if (err) { console.error(`Request failed, code: ${err.code}, message: ${err.message}`); this.message = `Error: ${err.message}`; return; } // 请求成功 console.info(`Result: ${data.result}`); console.info(`Code: ${data.responseCode}`); console.info(`Headers: ${JSON.stringify(data.header)}`); this.message = 'Success!'; this.responseText = `Status: ${data.responseCode}, Body: ${data.result}`; } ); } build() { Column({ space: 20 }) { Text(this.message) .fontSize(30) .fontColor(Color.Blue) Button('Fetch Data from Internet') .onClick(() => { this.fetchData(); }) .width('80%') .height(60) // 显示一个可滚动的文本区域来展示响应内容 Scroll() { Text(this.responseText) .fontSize(18) .textAlign(TextAlign.Start) .padding(10) } .margin(10) .border({ width: 1, color: Color.Grey }) .height('40%') .width('100%') } .width('100%') .height('100%') .padding(20) .justifyContent(FlexAlign.Center) } }

5.3 关键点解析与错误处理

  • 异步回调http.request是异步操作。网络请求不会阻塞UI线程,结果在回调函数中返回。这是保持应用流畅性的关键。
  • 错误处理:回调函数的第一个参数err包含了丰富的错误信息(codemessage),务必做好错误处理,给用户友好的提示。
  • 资源释放:虽然示例中未展示,但在Ability生命周期结束时(例如onDestroy),应该调用this.httpRequest.destroy()来释放网络资源,防止内存泄漏。
  • 网络安全:OpenHarmony默认对非加密的HTTP请求有一定限制。对于生产环境,务必使用HTTPS。如果需要使用HTTP,需要在module.json5中额外配置网络安全性。

通过这个例子,你掌握了调用OpenHarmony系统API的标准流程:声明权限 -> 导入模块 -> 使用API -> 处理异步结果。其他能力如数据存储、传感器、蓝牙等,模式都是相通的。

6. 七天学习路径规划与资源汇总

如何在七天内系统性地掌握Purple Pi OH和OpenHarmony开发?以下是一个可行的学习路径规划:

第一天:环境奠基

  • 目标:成功搭建Ubuntu编译环境,完成OpenHarmony for Purple Pi OH的源码同步。
  • 任务:安装VMware/Ubuntu,安装所有依赖工具,配置repogit,同步代码。
  • 关键成果repo sync成功,源码目录完整。

第二天:构建与烧录

  • 目标:编译出系统镜像,并成功烧录到开发板。
  • 任务:学习hb工具,配置编译目标,执行首次编译。学习使用upgrade_tool或RKDevTool,掌握MaskROM进入方法,完成烧录。
  • 关键成果:开发板从串口看到OpenHarmony启动日志,进入系统Shell。

第三天:IDE与“Hello World”

  • 目标:熟悉DevEco Studio,创建并运行第一个应用。
  • 任务:安装配置DevEco Studio,创建Stage模型项目,理解项目结构,编写简单的UI,掌握应用签名和真机调试流程。
  • 关键成果:“Hello World”应用在Purple Pi OH上成功运行。

第四天:ArkUI核心语法

  • 目标:掌握ArkUI声明式语法和核心组件。
  • 任务:深入学习@State,@Prop,@Link等装饰器,练习Column,Row,Stack,List,Grid等布局组件,掌握Text,Image,Button,TextInput等基础组件。
  • 关键成果:能独立搭建一个包含列表、图片、交互按钮的复杂页面。

第五天:系统能力入门

  • 目标:学会调用1-2个关键系统能力。
  • 任务:实现网络请求(如本节示例),并学习本地数据存储(使用PreferencesRDB)。
  • 关键成果:开发一个能联网获取数据并缓存到本地的简单应用。

第六天:Ability与生命周期

  • 目标:理解OpenHarmony应用模型。
  • 任务:学习UIAbility和ExtensionAbility的生命周期,实践页面路由(router),了解后台任务。
  • 关键成果:创建一个多页面的应用,并能正确地在页面间导航和传递数据。

第七天:综合小项目

  • 目标:整合前六天所学,完成一个综合性的迷你项目。
  • 任务:例如,开发一个“天气预报应用”,包含城市选择(UI)、网络请求获取天气数据、本地存储收藏城市、多个页面切换等。
  • 关键成果:一个完整可运行、涉及多个知识点的OpenHarmony应用。

必备资源导航

  • 官方文档: OpenHarmony官网 - 获取最权威的架构、开发指南和API参考。
  • Purple Pi OH资料:深圳触觉智能官网或Gitee仓库 - 获取专属的硬件手册、适配源码和烧录工具。
  • 社区:OpenHarmony SIG仓库、51CTO开源基础软件社区、电子发烧友论坛 - 提问和交流。
  • 代码示例:OpenHarmony的applications样例仓库 - 里面有大量官方示例代码,是学习的最佳参考。

这条路走下来,你不仅学会了操作,更重要的是理解了OpenHarmony“为什么”这么设计。从环境搭建的艰辛,到第一次点亮屏幕的喜悦,再到调用系统能力完成功能的成就感,这个过程本身就是对“6万月薪”背后所需技能栈的一次扎实演练。技术的价值在于解决实际问题,而OpenHarmony正为你打开了一扇通往万物互联时代解决问题的大门。接下来,就是基于这个基础,去探索更具体的场景,比如图形界面优化、驱动调试、分布式能力调用,那将是另一个精彩的故事了。

http://www.jsqmd.com/news/873140/

相关文章:

  • 2026年使用降AI工具合法性深度解读:降AI到底是不是学术不端免费完整解析
  • JS逆向实战:破解前端加密参数payload与sig的完整流程
  • C++引用的详细解释
  • Linux终端字体终极指南:10款精选字体与安装优化全解析
  • 【流体】二维稳态不可压缩层流通道流利用FVM和SIMPLE 解平行板间层流的速度、压力和温度【含Matlab源码 15558期】
  • 为开源项目OpenClaw配置Taotoken作为AI能力供应商的步骤
  • RK3568 SPI驱动实战:MCP2515 CAN控制器寄存器读写原理与优化
  • 18分钟攻破GitHub:TeamPCP供应链攻击全技术解析与防御新范式
  • 如何快速解决Windows 11区域模拟问题:完整API钩子技术指南
  • 为OpenClaw智能体工作流配置Taotoken后端模型
  • S-Video端口ESD防护方案:TVS阵列选型与PCB布局实战指南
  • 芯片设计后期DFT友好ECO:原理、实践与工具选型
  • 全志T113-S3开发板XR829 WiFi蓝牙驱动加载、固件配置与稳定性测试全攻略
  • 西恩士液冷板清洁度萃取设备/清洗机:从源头守护液冷系统“血液”洁净 - 工业设备研究社
  • CVE-2026-9082深度解析:Drupal十年最致命SQL注入,补丁发布3小时即遭全球轰炸
  • 基于RK3399核心板的智能PCR仪开发:从嵌入式系统到高精度温控
  • 为内部培训系统集成Taotoken提供个性化学习内容生成与答疑
  • Photoshop 2026(PSv27.x)详细安装教程与下载地址
  • 【学习笔记】探讨大模型应用安全建设系列8——成果汇报与持续运营
  • 为什么92%的健身APP AI聊天功能被弃用?(行为日志分析+3周A/B测试结论)
  • RK3588蓝牙功能完整测试指南:从驱动到应用实战
  • 嵌入式开发硬件生态构建:MIPI屏、UVC摄像头与4G模块的选型与集成实战
  • S-Video端口ESD防护方案解析:低电容TVS阵列选型与PCB布局实战
  • RK3588开发板蓝牙功能快速测试与配置指南
  • 汽车12V电源保护:TVS二极管选型、应用与EMC测试实战
  • 隐私至上:2026加密不存库PDF转Word工具推荐 - 时讯资讯
  • 2026年企业流量增长视角下档案托管行业GEO优化三家服务商专业分析与选型参考 - 产业观察网
  • 推理 → 行动 → 观察:用 LangChain + Python 实现一个智能体循环
  • 实测SpringBoot集成Taotoken后API调用的延迟与稳定性表现
  • AI智能体Skills设计:从API工具到核心能力的工程实践