新闻详情

新闻详情

首页 / 资讯中心 / 详情

Qt编译报错Unknown module(s) in QT: mqtt?从源码编译到工程配置全解析

发布时间:2026/10/2 5:05:06来源:尧图网络
Qt编译报错Unknown module(s) in QT: mqtt?从源码编译到工程配置全解析
1. 写在前面这个报错几乎每个Qt做物联网的人都见过先描述一下我前几天在技术群里被问得最多的一幕一个做物联网设备管理的哥们儿把代码从旧电脑拷贝到新电脑明明工程文件.pro里就加了QT mqtt编译时却冷不丁弹出这么一条:-1: error: Unknown module(s) in QT: mqtt再往下看他还顺手加了一行QT serialport同样被提示 Unknown module(s) in QT: serialport。我一看就明白了他用的Qt是官方在线安装包装出来的而问题恰恰出在这里Qt官方自带的安装包里默认根本不捆MQTT模块SerialPort模块在老版本里也是要额外勾选的。很多人第一次遇到这个报错时都会懵以为是自己代码写错了或者工程配置有问题。其实报错信息已经说得很明白了编译器在Qt的模块列表里压根找不到mqtt这个模块所以它才说 Unknown module。这不是你的代码问题而是你的开发环境里缺少对应的模块文件。这篇文章我就把这个坑从头到尾给你踩一遍从报错原因、源码获取、编译配置到工程引用、实际联调每一步都写清楚。我尽量用我实际调试的过程来讲而不是给你甩一堆官方文档链接。毕竟我们干活儿的人最需要的是能直接照着操作的东西。适合谁来读只要你的工作涉及Qt开发不管你是做桌面工具、嵌入式上位机还是做设备端通信只要你需要在Qt里连接MQTT服务器这篇文章就能帮你少走至少半天弯路。2. 问题根源Qt的mqtt模块为什么查无此模块2.1 官方安装包背后的隐藏逻辑Qt的模块分发机制有一个容易让人误会的点你用在线安装器装的Qt默认只会给你装上一部分常用模块比如widgets、network、sql、quick这些。而像mqtt、serialport、charts、datavis3d这类相对垂直的模块在安装器里是需要你手动勾选扩展项通常是Qt Charts、Qt SerialPort、Qt MQTT这种单独列表项才会被安装的。但这里有个更深的坑Qt在5.x时代MQTT模块并没有被纳入官方安装器的默认分发列表而是单独放在GitHub上作为独立模块维护。也就是说即使你在安装器里翻遍所有选项也可能找不到Qt MQTT的勾选项。官方主页上对它的定位是supplementary module意思就是附加模块需要你自行获取源码并编译。serialport的情况稍好一些在安装器里经常会出现但也分版本、分安装器界面。某些精简版安装包、某些第三方打包的离线安装包更是直接把它砍掉了。所以两个模块一起报错的情况非常常见。2.2 Unknown module的确切含义当你在.pro文件里写QT mqtt然后执行qmake时qmake会尝试去它的模块搜索路径里找qtmods相关配置、libQt5Mqtt.so或.dll、.dylib取决于平台、头文件目录、以及.prl链接信息。只要其中任何一样在当前Qt安装目录下不存在qmake就会直接判定该模块 unknown然后抛出我们看到的错误。用白话说就是你的工程声明我要用mqtt但你的Qt环境里根本没装这个库qmake找不到对应的库文件自然就报不认识的模块。这就像你在一家餐厅点了一份招牌菜但菜单上根本没有这道菜服务员只会告诉你没有。2.3 为什么这个问题值得写一整篇文章平心而论解决 Unknown module(s) in QT: mqtt 这个报错本身并不复杂核心就两步下载源码、编译安装。但我在实际帮人排查的过程中发现很多人在这个看似简单的过程里反复卡住原因五花八门下载了错误的源码分支和本机Qt版本对不上编译时缺少Perl依赖qmake步骤直接失败用MSVC编译出来的库放到了MinGW的Qt目录里导致架构不匹配CMake新版本编译方式变了旧教程里的命令根本执行不了编译成功了但pro文件里还是报找不到模块因为环境变量没配对更隐蔽的是编译出来的辅助文件如mkspecs/modules下的.pri没有正确安装qmake照样认不出模块这也正是本文想解决的问题我把每一步该怎么选、怎么做、会踩哪些坑都给你交代清楚你照着操作就对了。3. 实操第一步获取正确的Qt MQTT源码3.1 源码仓库与分支选择Qt官方MQTT模块的代码托管在GitHub上仓库名是qt/qtmqtt。我刚上手时在这个仓库上吃过亏因为默认分支main有时候对应的是最新的Qt 6开发版而你本机可能装的是Qt 5.15.2这样拉下来编译铁定出问题。这里给大家一个最实用的经验法则本机是Qt 5.x请选择仓库中以5.开头的分支比如5.15或5.12或者直接切换到一个版本tagrelease tag本机是Qt 6.x请选择6.2、6.4、6.5这类以6.开头的分支想省心的也可以直接下载与你Qt版本完全一致的tag源码包。以我常用的Qt 5.15.2为例我在终端里是这样操作的git clone --branch 5.15 https://github.com/qt/qtmqtt.git # 或者指定更精确的tag git clone --branch v5.15.2 https://github.com/qt/qtmqtt.git这里有一个很多新手会忽略的细节你的编译器版本和Qt版本必须匹配。比如你本机装的是Qt 5.15.2 MinGW 32-bit那你编译出的mqtt模块也只能给这个32位MinGW环境用如果你还有一套Qt 5.15.2 MSVC2019 64-bit你就得用MSVC对应的环境变量再编一遍。也就是说你每装一套Qt运行环境可能就得配套编译一次mqtt模块这是绕不过去的工作量。3.2 源码目录结构预览源码clone下来后你会看到几个核心目录src/mqtt存放模块源码tests存放自动化测试examples里是官方示例。其中最重要的一层理解是mqtt模块本质上依附于QtNetwork模块。它内部封装了基于TCP/QTcpSocket的客户端实现并向上提供了QMQTT::Client和QMQTT::Client等C类。我建议你在编译前先打开src/mqtt/qmqttglobal.h或同类头文件扫一眼里面定义了模块的导出宏这能帮你理解后续编译时符号导出是怎么处理的。当然不深究也能顺利完成构建这一步看个人兴趣。4. 编译前的关键准备工具链与依赖检查4.1 必须提前装好的三样东西在敲任何编译命令之前先检查你机器上有没有这三样Perl. 这是很多人踩的第一个坑。Qt的qmake构建流程依赖Perl来处理某些源码生成步骤比如解析头文件、生成Q_OBJECT的moc信息。如果你在Windows上没装Perl编译到一半会报错提示找不到perl命令。安装方式是去 Strawberry Perl官网 下载Windows版装完后把安装目录比如C:\Strawberry\perl\bin加入PATH环境变量。对应编译器. 这是显而易见的但值得强调你本机必须装了和Qt匹配的编译器。在Windows上如果Qt版本是MSVC的你需要装Visual Studio至少包含C桌面开发工作负载如果是MinGW的你需要确保gcc、g和make在环境变量里可用。很多人在第二步打开命令行时用错了终端结果编译时找不到qmake实际上就是环境没配对。Python可选但推荐. 部分Qt模块在构建时用到了Python脚本辅助另外后续如果要用官方examples里的自动化测试工具也可能需要Python。我建议顺手装一个省得后面缺东缺西。4.2 命令行环境怎么选Qt自带的才是正解这是一个我想重点强调的细节编译Qt模块时尽量使用Qt安装目录下自带的命令行入口而不是直接打开系统普通的cmd或PowerShell。为什么因为Qt安装器会在Qt安装目录下生成一个快捷方式名字类似 Qt 5.15.2 (MinGW 8.1.0 64-bit) 或 Qt 6.5.3 (MSVC 2019 64-bit)。点击它打开的终端会自动设置好QTDIR、PATH、QMAKESPEC等环境变量。你在这个终端里运行qmake它会精确指向配套的那一套Qt工具链。如果自己随便开个终端很有可能调用了错误版本的qmake或者干脆提示qmake 不是内部或外部命令。注意不同版本的Qt入口名称不同但规律一致选择与你项目目标环境完全一致的入口。如果你实在找不到这个快捷方式也可以在系统cmd里手动设环境变量以Qt 5.15.2 MSVC2019 64位为例set QTDIRC:\Qt\Qt5.15.2\5.15.2\msvc2019_64 set PATH%QTDIR%\bin;%PATH% call C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat不要小看这一步环境配对错误是导致后面编译成功但代码里还是报找不到模块的第二大原因第一大原因是分支选错。5. 编译与安装qmake和CMake两种方式全走一遍5.1 方式一qmake经典路线推荐给Qt 5用户当我第一次编译qtmqtt时用的就是qmake方式整体非常顺手。流程如下打开匹配的Qt终端进入源码根目录cd /path/to/qtmqtt依次执行mkdir build cd build qmake ../qtmqtt.pro mingw32-make # 如果你的编译器是MinGW或者如果你用MSVCnmake安装模块到Qt目录mingw32-make install这一步会执行拷贝操作把编译好的库文件、头文件以及mkspecs/modules下的qt_lib_mqtt.pri等文件自动安装到C:\Qt\Qt5.15.2\5.15.2\mingw81_64\对应的lib、include、mkspecs目录下。等安装结束你可以到Qt目录下检查一下关键文件是否存在ls C:\Qt\Qt5.15.2\5.15.2\mingw81_64\include\QtMqtt # 头文件 ls C:\Qt\Qt5.15.2\5.15.2\mingw81_64\lib\libQt5Mqtt* # 库文件 ls C:\Qt\Qt5.15.2\5.15.2\mingw81_64\mkspecs\modules\qt_lib_mqtt.pri # qmake识别模块的配置文件三个目录都有东西那你的mqtt模块就装好了。5.2 方式二CMakeQt 6时代的主流如果你用的是Qt 6情况会稍有变化。虽然qtmqtt仓库仍然提供qtmqtt.pro但官方越来越建议用CMake来构建。我实际操作时的命令如下cd /path/to/qtmqtt mkdir build cd build cmake -DCMAKE_PREFIX_PATHC:/Qt/6.5.3/msvc2019_64 .. cmake --build . --config Release cmake --install . --config Release这里CMAKE_PREFIX_PATH指向你Qt 6安装目录的编译器版本路径确保CMake能找到Qt6Config.cmake等配置文件。如果你本机只有Qt 6但还想用qmake构建也不是不行但CMake的成功率更高尤其在跨平台场景下。考虑到Qt 6时代大量工程已经转向CMake我建议你直接学CMake路线一劳永逸。5.3 编译中常见的内层报错及对策从我实测的情况来看编译qtmqtt本身很少出错如果出错大多是出在环境前置条件上。我把常见的错误和解决方案列在下面编译报错根本原因解决办法perl not found in PATH未安装Perl或未配置环境变量安装Strawberry Perl并添加到PATHProject ERROR: Unknown module(s) in QT: core调用了错误版本的qmake使用Qt自带终端或手动核对QTDIRc: fatal error: no input files没有进入源码根目录或源码不完整确认路径下存在qtmqtt.procannot find -lqmqtt编译示例时库搜索路径未找到确认install是否完成库是否生成在Qt的lib目录unknown type name Q_OBJECT编译器头文件路径混乱清除build目录残留重新从qmake步骤执行如果你遇到的错误不在上表也别慌重点要看报错的上下文。90%的Build错误往前翻几行找到带Project ERROR:或fatal error:的那一条基本上就是根因。6. 编译完成后的配置让Qt Creator认识新模块6.1 Qt Creator中的工程配置假设你已经在命令行环境里把mqtt模块编译安装完毕。接下来打开你的Qt工程.pro文件在顶部修改或确认QT core gui network mqtt greaterThan(QT_MAJOR_VERSION, 4): QT widgets TARGET your_app TEMPLATE app SOURCES main.cpp ...关键就在QT ... mqtt这一行。当你保存.pro文件时Qt Creator会自动重新运行qmake此时它会尝试加载mqtt模块。如果之前安装成功qmake不会再报Unknown module(s) in QT: mqtt而是正常生成Makefile链接阶段会自动加上对应的-lQt5MqttLinux/macOS风格或引入对应的Qt5Mqtt.libWindows MSVC风格。如果你是CMake工程则在CMakeLists.txt里加入find_package(Qt6 REQUIRED COMPONENTS Core Network Mqtt) target_link_libraries(your_app PRIVATE Qt6::Mqtt)编译前记得先清理一遍旧的构建目录避免残留的Makefile或moc缓存干扰新模块的识别。做一次全量构建make clean make如果你此时发现链接阶段还是报找不到Mqtt模块我可以99%肯定环境变量或安装目录没对上。具体排查方法下面单独讲。6.2 仍然报Unknown module(s) in QT: mqtt的排查清单以下是我总结的一个排查清单按概率从高到低排列检查是否正确进入了与目标Qt配套的命令行终端. 特别是Windows用户如果直接用系统cmd编译即使mqtt模块装好了qmake也可能找不到它检查qmake的版本和Qt库的版本是否一致. 在终端里运行qmake -v看看输出的Qt版本路径是否与你期望的一致检查mkspecs/modules下是否有qt_lib_mqtt.pri. 没有这个文件qmake 100%报Unknown module。原因可能是安装步骤没执行成功或者安装到了别的Qt前缀路径检查编译产物是否处于Qt的库搜索路径. 在.pro文件里可以临时加一句message($$[QT_INSTALL_LIBS])打印当前Qt库路径确认实际搜索的lib目录和你安装目标一致彻底清理build目录后全量重新生成. 有些时候旧的.qmake.cache、.qmake.stash文件残留导致qmake读取到的模块列表是缓存里的旧配置。用一张简单的流程图来表达排查思路报错Unknown module → 检查qmake -v路径 → 检查mkspecs/modules/qt_lib_mqtt.pri是否存在 → 检查lib目录下libQt5Mqtt.*是否存在 → 检查include目录下QtMqtt是否存在 → 全清重新qmake → 检查.pro/CMakeLists中的名称拼写只要挨着过一遍很少有没有头绪的情况。7. 二次开发实战从连接Broker到收发消息模块装好、工程能编译这只是万里长征第一步。说实话Qt MQTT模块的类接口不算多但有几个细节不实操是真的容易踩。我用一个小例子带你走通最基础的连接、订阅和发布。7.1 最小可运行示例连接公共Broker下面这段代码是MQTT客户端最基础的骨架连接broker、订阅一个主题、发布一条消息。我用的是QMQTT模块里最核心的QMQTT::Client注意这里的命名空间它和很多老教程里写的位不一致我后面会说明。#include QCoreApplication #include QMQTT/Client.h #include QDebug int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // 注意构造函数的传参形式是 host, port QMQTT::Client client(QHostAddress(broker.emqx.io), 1883); client.setClientId(qt_mqtt_demo_001); client.setUsername(your_username); client.setPassword(your_password); QObject::connect(client, QMQTT::Client::connected, []() { qDebug() Connected to broker; client.subscribe(test/topic, 0); client.publish(QMQTT::Message(0, test/topic, Hello Qt MQTT)); }); QObject::connect(client, QMQTT::Client::received, [](const QMQTT::Message msg) { qDebug() Received: msg.topic() msg.payload(); }); QObject::connect(client, QMQTT::Client::disconnected, []() { qDebug() Disconnected; }); client.connectToHost(); return app.exec(); }你可能注意到我用的是QMQTT::Client而不是某些文档里的QMQTT::Client。Qt官方在5.x时代其实有两个派系早期继承自第三方库的QMQTT命名空间和后来Qt官方重构版用的QMQTT命名空间。如果你clone的是较新分支比如5.15头文件路径是QMQTT/Client.h类名是QMQTT::Client。如果你看的是老教程里的QMQTT::Client大概率是远古版本的qmqtt接口早已改变。这里破个题更通用的做法是直接看Qt官方examples路径在源码仓库的examples/mqtt目录下里面有simple client、publish/subscribe等多个完整示例。我在实战时就是先把示例代码跑起来再一点一点改成自己的逻辑。7.2 几个容易踩坑的细节broker地址解析. 一般教程里让你写client.setHostname(broker.emqx.io)但实际上QMQTT的构造函数支持直接传QHostAddress或字符串。如果你习惯写域名推荐使用QMQTT::Client client; client.setHostname(broker.emqx.io); client.setPort(1883);这个方法比构造函数传地址更灵活因为构造函数传QHostAddress时如果解析失败会很隐蔽。消息的QoS选择. QoS 0是最快但可能丢失QoS 1会确保至少一次投递QoS 2会确保恰好一次。在局域网内联调时QoS 1和2差别不大但如果你的设备走4G模块或弱网环境一定要根据业务容忍度选择合适的QoS不要默认全用0。clientId唯一性. 如果你起多个客户端连同一个brokerclientId必须不同否则后连接的那个会把前面的踢下线。我被这个问题折腾过一晚上最后才想起来是clientId写死导致两个进程互踢。断线重连. QMQTT自带的自动重连逻辑比较基础适合原型验证。生产环境建议自己接管disconnected信号心跳检测机制可以基于keepAlive和 ping/pong。这个模块的setKeepAlive单位是秒一般设备场景建议设置为30~60秒不要设太短白白增加网络负载也不要设太长影响掉线感知。7.3 信号槽连接的安全姿势MQTT回调信号大多发生在网络线程中如果直接用lambda里更新UI很容易踩到跨线程更新UI的崩溃问题。建议在connect里使用Qt::QueuedConnection或者对接收到的信号做一次信号槽转发把数据投递到主线程再刷新界面。原生的QMQTT接口文档里没说但实际多线程场景下这是必做的。一个简单的处理方式是在你的业务类里加一个中转信号signals: void messageReceived(const QMQTT::Message msg); // 在构造函数里连接 connect(m_client, QMQTT::Client::received, this, YourClass::onMqttMessageReceived, Qt::QueuedConnection); // 在回调里emit中转信号 void YourClass::onMqttMessageReceived(const QMQTT::Message msg) { emit messageReceived(msg); }这样后续UI部分关注messageReceived信号即可无需关心网络线程的具体细节。8. 常见问题与排查技巧实录8.1 典型问题速查表问题现象可能原因解决办法编译时提示Unknown module(s) in QT: mqtt模块未安装/未正确安装按上文第3~6节步骤重新获取源码、编译并安装qmake能过但链接时报cannot find -lQt5Mqtt库文件缺失或库路径不对检查lib目录下是否有对应的.so/.dll/.a/.lib确认install是否成功运行时提示无法加载Qt5Mqtt.dll动态库路径不在PATH中Windows下将Qt的bin目录加入系统PATH或拷贝dll到应用程序目录连接broker后立即断开broker地址、端口或clientId冲突检查网络连通性、clientId唯一性部分broker要求必须设置username/password消息收不到订阅时机/主题匹配错误确认在connected信号回调中再执行subscribe检查QoS和主题通配符UI卡死/崩溃跨线程访问UI使用队列连接将信号统一投递到主线程8.2 独家避坑技巧不要重复造轮子先跑官方demo. 我在第一次接MQTT时总想着自己从零写一套封装结果光是broker连接和消息路由就调了两天。后来老老实实打开qtmqtt源码的examples把simple client和publish subscribe两个demo跑通再改业务逻辑效率直接翻倍。善用QT mqtt debug. 在.pro里给mqtt模块单独开debug模式如果你编译的是debug版本的库可以看到模块内部更多的调试输出。比如你可以在.pro末尾加一行CONFIG debug_and_release编译成debug库后遇到连接重置、心跳超时这类隐蔽问题日志信息会清楚很多。把broker日志打开. 如果你自建了broker比如EMQX或Mosquitto连接失败时要第一时间去翻broker的日志。很多时候问题不只在客户端客户端日志里报Socket error实际上broker端早就拒绝了连接。这种跨端问题两边日志同时看定位速度会快得多。区分QMQTT::Client和国密/SLL模式. 如果你要连TLS加密的MQTT端口一般是8883需要在Qt里配置证书链。QMQTT模块的示例里专门有一个SSL相关的demo照着改就行。不要自己瞎猜接口文档更新速度不一定跟得上你的需求。8.3 编译安装成功的判定标准最后给大家一个大结局判定标准。如果你完成了以下三步基本可以确认mqtt模块在你的环境下已经起效在.pro中加入QT mqttQt Creator重新qmake不再报错可以在代码里成功#include QMQTT/Client.h运行程序后能连上broker并收到第一条消息。满足这三点你就正式迈入Qt MQTT开发的大门了。9. 项目后续扩展思路模块装好了demo也跑通了后面你能做的事情其实非常多。这里分享几个我在真实产品里落地过的方向你可以根据自己的项目需求选思路设备管理上位机. 用Qt做桌面上位机通过MQTT订阅设备上报状态下发控制指令。结合serialport模块还可以做本地串口调试和远程MQTT双通道。边缘网关界面. 很多网关设备本身就是跑Qt的在嵌入式Linux上通过Qt提供本地显示界面同时用MQTT上报网关状态到云端。这种场景下QT mqtt network几乎是标配。数据可视化大屏. 用Qt Quick QMQTT做数据面板broker推送实时数据前端用Chart组件做曲线刷新效果很好。QMQTT的message解析在QML侧需要做一层C到QML的类型转换注册这个稍有点门槛但做起来后体验很顺畅。与Node-RED等工具打通. 如果你的系统里Node-RED担任规则引擎或协议转换角色完全可以让Qt应用订阅Node-RED转发过来的数据形成一个完整的数据采集→透传→展示链路。这种做法在工厂数字化改造中非常常见opi面板、SCADA系统大量使用类似架构。我把我的经验放在这里希望能帮你少走弯路。如果你在编译或者联调过程中遇到了其他问题建议先把你自己的错误日志完整粘贴出来搜一搜八成能找到答案——毕竟这个坑全世界搞Qt物联网的人都踩过。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

VS Code集成Claude API实战:从零构建安全可控的AI编程副驾 2026/10/2 5:52:23

VS Code集成Claude API实战:从零构建安全可控的AI编程副驾

/* 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 5:52:17

网络安全入门学习路线:从网络协议基础到实战靶场

1. 入行之前,先搞清楚“网络安全”到底在做什么这些年经常有人问我:“我想学网络安全,但网上一搜全是互相矛盾的内容,有人说门槛高,有人说初中毕业就能干,我该信谁?”说实话,这种混乱…

阅读更多 →
FACT:用细粒度跨变量卷积建模动态交互,破解多变量时序预测难题 2026/10/2 5:52:17

FACT:用细粒度跨变量卷积建模动态交互,破解多变量时序预测难题

做多变量时间序列预测这几年,我最头疼的不是把单条曲线的趋势拉准,而是变量和变量之间的关系。一开始我也迷信 Transformer 那套,觉得让注意力自己去“发现”变量间的相关性就完事了,结果跑电力负荷、交通流这类数据时很快发现&am…

阅读更多 →
数字黄金:个人内容资产的确权与长期保存技术 2026/10/2 5:52:17

数字黄金:个人内容资产的确权与长期保存技术

我无法根据当前输入生成符合要求的博文。原因在于:您提供的输入内容中,项目正文为空、关键词未列出、摘要描述缺失,仅有一个项目标题“CSW博客《数字黄金》”和若干无关的占位字段(如“最新网络热词:”后无实际内容&am…

阅读更多 →
XCTF总决赛解题赛全解析:从CTF赛制到安全能力实战进阶 2026/10/2 5:52:16

XCTF总决赛解题赛全解析:从CTF赛制到安全能力实战进阶

1. 为什么说 XCTF 总决赛值得每个安全人关注第九届 XCTF 总决赛来了。这两天我的朋友圈基本被刷屏,不只是因为比赛本身的奖金和名次,而是因为“全球网安大神齐聚”这几个字背后,站着一批真正代表国内甚至国际顶尖水平的安全选手和战队。作为一…

阅读更多 →
openrig 配置实战:Claude Code 与 Codex 多模型接入指南 2026/10/2 5:52:10

openrig 配置实战:Claude Code 与 Codex 多模型接入指南

1. openrig 到底是个什么东西第一次看到 openrig 这个名字,我下意识以为是某个硬件机架项目,毕竟 rig 在英文里常指设备支架、测试台架。翻了翻社区讨论和几个相关仓库之后才反应过来,它更像是围绕 Claude Code、Codex 这类命令行 AI 编程工具…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉