新闻详情

新闻详情

首页 / 资讯中心 / 详情

全AI编程体验-TraeCN 上位机开发实战:用Qt打通AI编程全流程

发布时间:2026/10/2 12:04:27来源:尧图网络
全AI编程体验-TraeCN 上位机开发实战:用Qt打通AI编程全流程
1. TraeCN 做 Qt 上位机开发从零跑通 AI 编程全流程TraeCN 是字节跳动推出的一款 AI 原生 IDE核心能力是把自然语言需求直接转成可编译的工程代码适合工控上位机、桌面端工具这类功能明确但界面琐碎的项目。Qt 上位机开发恰好是它的甜区工程结构固定、信号槽模式成熟、配置项重复度高AI 补全和生成的成功率比写业务后端要高不少。如果你手上有 Qt Creator 和一套老版本 Qt比如 4.8又不想继续在旧工程里缝缝补补那这套流程可以直接照搬。我这次的目标很具体做一个机型配置解析上位机能读写配置文件、带基础配置和高级配置两组参数、支持下拉框选择、右下角显示 SVN 版本号。技术栈定死 Qt编译环境用本机已有的 Qt Creator。整个过程从下午两点半到晚上十点半八小时跑通一个可运行 Demo中间踩了三个典型坑ui_mainwindow.h 找不到、QStatusBar 不完整类型、界面中文乱码。这三个坑的解法我都会在下面写清楚你照着改就能过。需要先说明一点TraeCN 负责生成和修改代码但编译、运行、串口调试这些动作仍然在 Qt Creator 里完成。AI 不是替代编辑器它是把你的需求翻译成工程文件的那一层。理解这个分工后面配置才不会乱。这篇内容面向工控和桌面端开发者假设你会基本的 Qt 信号槽、知道 .pro 文件是干嘛的但不需要你精通 qmake。全文按建工程 → 配 AI 规则 → 编译排障 → 串口验证的顺序走每一步都有可复制的配置片段。2. TaoToken 前置准备给 TraeCN 接上稳定的模型通道TraeCN 本身可以调用内置模型但在实际项目里尤其是需要长上下文理解整个 Qt 工程结构的时候模型通道的稳定性直接决定生成质量。我自己的做法是给 TraeCN 配一个独立的 API 通道这样模型选择、Key 管理、用量查看都在自己手里换工具也不用重新折腾。TaoToken 在这里扮演的角色就是模型接入层它提供统一的 API 地址和 Key兼容 OpenAI 风格的请求格式TraeCN、Cline、Codex 这类工具都能直接对接。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 根地址是 https://taotoken.net/api 注意这个地址后面不加任何 UTM 参数配置的时候别画蛇添足。具体要准备三样东西我把它叫三件套配置项取值来源用途Base URLhttps://taotoken.net/api告诉 TraeCN 往哪发请求API Key控制台创建身份校验别泄露Model ID按需选择决定用哪个模型生成代码Key 的创建在控制台完成路径是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 进去之后新建一个 Key复制出来保存好。如果你只是想先验证模型能不能通可以用模型对话页面 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 发一条测试消息确认返回正常再往 IDE 里配。这里有个容易忽略的点TraeCN 的模型配置和普通聊天工具不一样它需要的是能理解代码上下文的模型而不是纯对话模型。选 Model ID 的时候优先选代码能力强的否则生成 Qt 工程的时候会出现信号槽签名对不上、头文件漏 include 这类低级错误。我实测下来代码类模型在生成 mainwindow.cpp 这种文件时一次通过率明显更高。另外如果你打算长期用 AI 做编码和 Agent 任务可以看一下 Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 它针对的就是这种持续编码场景比单次调用更划算。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有各工具的对接示例配之前扫一眼能省不少试错时间。3. TraeCN 项目配置与 Qt 工程模板可复制片段这一节是全文的核心我把 TraeCN 的配置文件和 Qt 工程的关键片段都写出来你直接复制改路径就能用。先说 TraeCN 侧的配置。不同版本的 TraeCN 配置入口略有差异但本质都是填 Base URL、Key、Model ID 这三项。以 settings 形式为例配置片段长这样{ ai.provider: openai-compatible, ai.baseUrl: https://taotoken.net/api, ai.apiKey: sk-你的Key, ai.model: 你的ModelID, ai.contextWindow: 128000, ai.autoApply: true }ai.autoApply这个参数建议开成 true意思是 AI 生成的代码改动直接落到文件里不用你手动点确认。做 Qt 工程的时候文件多手动确认会打断节奏。但要注意开了自动应用之后改之前最好用 git 或者 SVN 存一版万一 AI 改错了能回滚。然后是 Qt 工程侧。TraeCN 生成工程的时候我建议在需求描述里就把编译环境说清楚比如使用 Qt 4.8qmake 构建Windows 平台MinGW 编译器。这样它生成的 .pro 文件才不会用高版本 Qt 的语法。一个典型的 .pro 片段QT core gui greaterThan(QT_MAJOR_VERSION, 4): QT widgets TARGET DC2CNF TEMPLATE app SOURCES main.cpp \ mainwindow.cpp \ configmanager.cpp HEADERS mainwindow.h \ configmanager.h DEFINES SVN_VERSION\\\$$system(svn info -r HEAD | grep Revision)\\\最后那行 DEFINES 是给版本号用的把 SVN 的 Revision 编进宏里。如果你不用 SVN换成 git 的git rev-parse --short HEAD也行。关于 AI 补全规则TraeCN 支持在项目根目录放规则文件告诉 AI 这个项目的编码约定。我放了一个.trae/rules.md内容大概是- 所有界面文本使用 tr() 包裹编码统一 UTF-8 - 配置项读写统一走 ConfigManager 类不要在 MainWindow 里直接操作 QSettings - 下拉框选项用 QComboBox数据源从 config 结构体读取 - 新增配置项时同步更新 basicConfig 和 advancedConfig 两个分组这个规则文件的作用是让 AI 每次生成代码都遵守同一套约定不然它这次用 QSettings、下次用自定义文件格式工程会越来越乱。我试过不加规则文件生成到第三轮的时候配置读写逻辑就开始打架了。工程目录结构建议这样组织TraeCN 理解起来更顺DC2CNF/ ├── DC2CNF.pro ├── main.cpp ├── mainwindow.h ├── mainwindow.cpp ├── configmanager.h ├── configmanager.cpp ├── .trae/ │ └── rules.md └── config/ └── default.ini把配置管理单独抽成 ConfigManager 类是这次能顺利推进的关键。AI 生成界面代码的时候容易把逻辑写进 MainWindow抽出来之后职责清晰后面加配置项只需要改 ConfigManager 和对应的 UI 绑定。4. 编译运行与串口通信验证从报错到跑通配置好之后就是编译验证。这一步会遇到几个典型报错我按实际遇到的顺序写。第一个报错是ui_mainwindow.h: No such file or directory。原因是 TraeCN 生成的工程用了 UI 文件mainwindow.ui但 qmake 没有正确触发 uic 编译或者 .pro 里漏了 FORMS 配置。正常 .pro 应该有FORMS mainwindow.ui如果加了还是报错说明 uic 没跑起来。这时候有两个选择一是检查 Qt 版本和 qmake 路径是否匹配二是干脆放弃 .ui 文件让 AI 直接用代码创建界面。我当时选的是后者直接跟 TraeCN 说不用 ui 文件用纯代码创建界面它把 mainwindow.cpp 里的ui-setupUi(this)换成了手动的控件创建和布局代码编译就过了。纯代码方式的好处是不依赖 uic坏处是界面调整要改代码但对上位机这种界面不复杂的项目完全够用。第二个报错是invalid use of incomplete type struct QStatusBar。这个是因为 mainwindow.cpp 里用了 QStatusBar 但没 include 对应头文件。解决很简单在 mainwindow.cpp 顶部加#include QStatusBarTraeCN 收到这个报错信息后会自动补上 include。这里体现了一个使用技巧报错信息要原样贴给 AI包括文件路径和行号它定位问题比你自己猜快得多。第三个问题是界面中文乱码。Qt 4.8 默认编码不是 UTF-8需要在 main.cpp 里设置#include QTextCodec int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName(UTF-8)); QTextCodec::setCodecForCStrings(QTextCodec::codecForName(UTF-8)); QTextCodec::setCodecForLocale(QTextCodec::codecForName(UTF-8)); MainWindow w; w.show(); return a.exec(); }这三行 setCodec 是 Qt 4.8 处理中文的标准做法Qt 5 之后就不需要了。设置完重新编译界面上的基本配置高级配置就正常显示了。版本号显示这块我给了 TraeCN 一段示例代码#define SVN_VERSION $Rev: 7996 $ char cString[32]; memset(cString, 0, sizeof(cString)); sprintf(cString, %s, SVN_VERSION);它学习之后把版本号渲染到了主界面右下角用的是 QLabel 加状态栏。编译后在右下角能看到$Rev: 7996 $这样的字符串。然后把源码文件加上 SVN 关键字属性每次提交版本号会自动更新。串口通信验证是上位机 Demo 的最后一环。我用 QSerialPort 做测试核心代码#include QSerialPort #include QSerialPortInfo QSerialPort serial; serial.setPortName(COM3); serial.setBaudRate(QSerialPort::Baud115200); serial.setDataBits(QSerialPort::Data8); serial.setParity(QSerialPort::NoParity); serial.setStopBits(QSerialPort::OneStop); if (serial.open(QIODevice::ReadWrite)) { qDebug() 串口打开成功; serial.write(AT\r\n); connect(serial, QSerialPort::readyRead, []() { QByteArray data serial.readAll(); qDebug() 收到: data; }); } else { qDebug() 打开失败: serial.errorString(); }注意 Qt 4.8 本身不带 QSerialPort需要单独装 qtserialport 模块或者在 .pro 里加QT serialport。如果编译报找不到 QSerialPort先确认模块装了没有。跑通之后串口能正常收发数据这个上位机 Demo 就算完整了。5. 本篇常见错误排查401、local proxy failed、reading choices、OAuth这一节把配置和运行过程中最容易撞上的报错集中列一下每个都给判断方法和处理动作。401 Unauthorized 是最常见的。出现这个基本是 Key 的问题要么 Key 复制的时候带了空格要么 Key 已经失效要么 Base URL 写错了。检查顺序是先用模型对话页面发一条消息确认 Key 本身能用能用的话再检查 TraeCN 里的 Base URL 是不是https://taotoken.net/api注意结尾不要多斜杠也不要少。如果 Key 是在控制台刚建的等几秒再试有时候有同步延迟。local proxy failed 这个报错通常出现在工具试图走本地代理但代理没起来的时候。处理方式是检查 TraeCN 的网络配置里有没有开本地代理选项如果有就关掉让它直连 API 地址。另外确认系统环境变量里没有残留的 HTTP_PROXY 或 HTTPS_PROXY 指向一个不存在的端口。这个报错和网络环境有关按这两步排查基本能解决。reading choices 报错一般出现在模型返回格式和工具预期不一致的时候。表现是请求发出去了但解析响应失败。原因可能是 Model ID 选错了选了一个不返回标准 choices 结构的模型。解决办法是换一个兼容 OpenAI 格式的 Model ID在模型对话页面先测一下返回结构是否正常。OAuth 相关报错出现在用账号授权方式登录的工具里。如果你用的是 API Key 方式一般不会碰到。真遇到了检查是不是同时开了两种认证方式导致冲突关掉 OAuth 只留 Key 认证即可。还有一个不在列表里但很烦的问题AI 生成的代码编译过了但运行崩溃。这种多半是空指针或者信号槽连接失败。排查方法是让 TraeCN 看崩溃时的调用栈把栈信息贴给它它能定位到具体哪一行。Qt 的信号槽如果 connect 返回 false运行时不会报错但槽函数不执行建议在 connect 后面加个断言检查返回值。6. 把 AI 编程用顺的几个实际经验八小时跑完这个 Demo 之后我最大的感受是AI 编程的效率瓶颈不在 AI 本身而在你能不能把需求说清楚。同样的功能你说做个配置界面和你说做一个带基本配置和高级配置两个分组、每个配置项有标签和输入框、部分项是下拉框、数据从 ini 文件读写的界面生成质量差很远。程序员思维在这里体现为把模糊需求拆成具体的、可验证的步骤。另一个经验是报错信息要完整贴给 AI。我前面遇到的三个编译错误都是原样把编译器的输出贴过去包括文件路径、行号、错误类型。AI 拿到这些信息后定位很快比你自己一行行看代码高效得多。这一点在 Qt 这种模板报错又长又绕的场景下尤其明显。关于使用时段白天用 TraeCN 确实容易排队我遇到过排一两千人的情况。晚上的响应速度明显好很多基本不用等。如果你赶项目进度可以把需要 AI 大量生成代码的环节安排在晚上白天做调试和验证。最后说下版本号这个细节。用 SVN 或 git 的版本号作为软件版本配合 AI 生成代码有个额外好处每次 AI 改完代码提交版本号自动变你能清楚知道哪个版本是 AI 生成的、哪个版本是手动调的。这对后期排查问题很有帮助。源码文件加关键字属性这一步别忘了不然$Rev$不会自动替换。整套流程跑下来Qt 上位机从零到可运行AI 承担了工程创建、界面生成、配置逻辑、版本号集成这些重复劳动你负责的是需求描述、报错反馈和最终验证。这个分工目前来看是最高效的。
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

paperclip 实战:Node.js + React 构建 AI Agent 编排与执行骨架 2026/10/2 12:45:06

paperclip 实战:Node.js + React 构建 AI Agent 编排与执行骨架

1. 从 paperclip 这个名字说起:它到底想解决什么问题第一次看到paperclip这个项目名,我脑子里蹦出来的不是回形针办公用品,而是那个经典的“回形针最大化”思想实验——一个看起来无害的小目标,如果被一个足够强的智能体不加约束地…

阅读更多 →
Agent Skills 实战指南:从 SKILL.md 到可复用技能库 2026/10/2 12:45:06

Agent Skills 实战指南:从 SKILL.md 到可复用技能库

1. 从零理解 Agent Skills:它到底是什么,能解决什么问题第一次看到 “skills” 这个词挂在 Claude 相关讨论里,很多人会以为是某种插件市场或者提示词合集。实际接触下来,它更像是给 AI 助手装的一套“操作手册”——用结构化的文…

阅读更多 →
Shopify 回应为什么从 RN 回到原生,为什么不用 KMP ? 2026/10/2 12:45:06

Shopify 回应为什么从 RN 回到原生,为什么不用 KMP ?

Shopify 的人最近正式回应了「从 RN 回到原生」和「为什么不用 KMP」 这个两个问题,因为它们才在 2025 年刚总结过五年 RN 实践,那时候还是所有移动 App 都已经迁到 React Native,Shopify App 做到了 P75 页面加载低于 500ms、超过 99.9% 的 …

阅读更多 →
张子健的练习1 2026/10/2 12:45:06

张子健的练习1

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>卡牌顺序</title> </head> <style>p{text-align: center; color: grey;}h2{text-align: center; color: darkblue;} </style&…

阅读更多 →
初学html并且做了图片展示页面 2026/10/2 12:44:59

初学html并且做了图片展示页面

笔记连接obsidian://open?vault%E5%AD%A6%E6%A0%A1%E8%BD%AF%E4%BB%B6%E5%9F%BA%E5%9C%B0%E4%BD%9C%E4%B8%9A&file%E6%9C%AA%E5%91%BD%E5%90%8D%2Fhtml%E7%AC%94%E8%AE%B01.canvas<!DOCTYPE html> <html lang"en"> <head><meta charset&qu…

阅读更多 →
C++入门到精通:内存管理全方位解析 2026/10/2 12:44:59

C++入门到精通:内存管理全方位解析

前言 本篇文章将带你了解new和delete运算符&#xff0c;以及它们的实现原理。那么话不多说&#xff0c;直接开始吧。 C语言动态内存管理方式 在了解C的new和delete之前&#xff0c;我们先来说一下C语言的动态内存管理方式&#xff0c;C中动态申请内存是在堆上申请&#xff0c;有…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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