用全新 TRAE 跑通一个 BLE HID 键盘固件
适配【完整实战案例】方向,全流程描述+【能力测评】【技巧心得】
TraeWork 和 TraeCode 合并了。讲真,确实有些迷茫,原来是两个都用,都分别用,现在合并了,还是很好奇的。
这意味着什么——以前要在两个入口之间反复横跳的事,现在一个 Agent 窗口就接管了。这次我没有拿"写个 Todo"来试水,直接挑了一个我手头正在啃的硬骨头: 基于 MAX32655 feather board 的 BLE HID 键盘固件 ,把"想法→可被手机识别的蓝牙键盘"这一整条链路丢给全新 TRAE 跑了一遍。
中毒的使用者,奥,是重度使用者,其实也差不多。上手先卸载一个TraeWork,比较喜欢TraeCODE就先留下,
然后安装新版trae CN,比较可惜的是TraeCODE从安装列表中消失了,看来是只有一个,真合并了。
一、任务背景
预期目标很明确,就一段需求,
直接启动就是agent模式,
好奇ing,然后就是一句话搞事情,
开发一个嵌入式应用:
- 采用 ADI MAX32655 feather board
- 使用 MSDK 开发工具和平台
- 基于 BLE_periph 这个范例代码开发
- 实现蓝牙键盘开发,使用 BLE HID 协议
- 在本地目录直接修改
那么目标交付是:
能编译出 .elf、能烧录、串口能看到广播、能被主机识别成键盘 。
之所以选这个任务,是因为它既有协议栈理解成本(要把 Cordio 库里的 HID profile 挪到项目里),又有工程配置坑(MSDK 路径、BOARD 宏、Makefile),正好能压测 Agent 模式的"拆解+执行"和 IDE 模式的"验证+调试"两条腿。这样的软硬兼施,全面开测。
二、推进过程
1. Agent 模式接管:从需求拆解到方案规划
升级后打开全新 TRAE,主界面就是一句 slogan—— “Build With TRAE:More than writing every line of code—delivering production-grade results end-to-end.” 左侧导航已经换成 New task / Marketplace / My Assistant / Automation / Templates / My Artifacts 这一套,任务和产物被提到了第一的位置。
在agent中可以自有切换到原来TraeCODE中的IDE+Solo模式,但是直接显示如下内容,
其实,是授权不足,需要给写入本地目录的权限,那么才能正常启动,
我把上面那段需求原样贴进输入框,环境选Local ,目录指向BLE_HID 。然后果然要授权,
然后就直接进入工作模式了,
Agent 没有急着写代码,而是先做了一轮"摸底":
- Searched files 2 times → 判定这是一个 MSDK 项目(MAX32655、BLE_periph 示例)
- Read 8 files → 把 Makefile、project.mk、main.c、periph_main.c、periph_api.h、stack_periph.c 一次性读进来
- 又去翻 Cordio 库里的 HID/BAS/DIS 服务和板卡 BSP(按钮/LED)
- 锁定关键文件
hid_main.c、svc_hid.c,确认 HID profile 已编译进库
这一步最让我意外的是它 主动检测了服务冲突 (svc_wp/svc_dis/svc_batt)和 BSP 兼容性——这两个坑我之前自己写的时候踩过,它居然在规划阶段就提出来了。接着它说"我现在已经了解完整的情况了,让我来规划一下实现步骤",然后给出了四步任务清单:
- Copy
svc_hid.cinto project with output Report Reference fix - Create
hid_kb.c/h: report map, key send logic, ASCII mapping, LED output - Rewrite
periph_main.c: HID/DIS/BAS services, adv data, CCC set, security, buttons, LEDs - Update
periph_api.handmain.c(清掉 WP 数据传输残留)
技巧心得 :对嵌入式这种"改动一个文件牵动一片"的任务,先让 Agent 摸底再规划,比让它直接写代码稳得多。我会在 prompt 里明确"在这个本地目录直接修改",这样它会原地改而不是另起一个新项目。
2. 关键节点的人工判断:Manual Approval 不是摆设
这个是一份惊喜,因为,代码看起来是调通了,需要进入make编译阶段了,而且还是全自动。
我全程开着 Manual Approval 。跑到第 4 步要执行make 编译时,弹出了权限确认框:
Is it allowed to run this command?
Grant read-write access to paths:C:\MaximSDK\Libraries 命令:$env:Path = "...\GNUTools\10.3\bin;...\Make;" + $env:Path; make clean; make -r -j 8
四个选项:Run once / Allow for this session / Always allow / Deny。我选了 Allow for this session ——既要让它能连续编译修复错误,又不想把 SDK 目录的永久写权限交出去。这种"路径级 RW 授权"的颗粒度,是这次合并后 Agent 窗口最让我安心的一个设计。
3. IDE 模式验证:构建、烧录、真机点灯
Agent 跑完make -j 8 后自动进入"Build with make and fix any errors"循环,这一轮它自己修了 4 个错:
periph_main.c:bas_api.h→bas/bas_api.h(子目录前缀)hid_kb.c:补齐HID_KEY_2..HID_KEY_9用法码(0x1F..0x26)periph_main.c#L134:DM_KEY_DIST_ID→DM_KEY_DIST_IRK(Cordio 宏名变更)periph_main.c#L162:广播数据字符串字面量改成逐字符初始化(uint8_t数组不能直接放字符串)
Worked for 1h 36m ,最后给出报告:
全部任务完成,项目构建成功。
构建产物:build/BLE_periph.elf(FLASH 占用 187.8 KB / 36.98%,SRAM 12.5 KB / 9.57%),main.c、periph_main.c、hid_kb.c、svc_hid.c 全部编译链接通过。
到这一步我没有再让 Agent 接着干,而是切到 IDE 模式自己核对代码——查看 Makefile、在 Explorer 里点开BLE_periph.elf、对照hid_kbd.o这些产物。这种"Agent 写、IDE 验"的节奏,比过去在 TraeWork 里生成完再切 TraeCode 里看,顺太多了,没有信息断点。
看起来不错,但是真的吗?
上面黄色的就是编译通过的成品,真爽啊。
三、最终产物
烧录到板子后,PuTTY 串口(COM3)打出来的日志就是最好的交付证明:
`BLE HID keyboard - PeriphHandlerInit
MAC Addr: 00:18:80:E5:FF:D6
Adv local name: BLE Keyboard
HID keyboard initialized, report map length: 67
Reset complete <<<
Advertising started <<<`
功能清单(都是 Agent 实现的):
- 广播名 “BLE Keyboard”(appearance 0x03C1 + HID UUID 0x1812)
- HID over GATT 键盘:Report Map(6KRO,Report ID 2)、Boot 模式双支持、协议模式切换
- BUTTON1 逐字符发送 “Hello from MAX32655 BLE keyboard!”,BUTTON2 发送 Enter
- LED:绿闪=广播、红=已连接、蓝=CapsLock(主机输出报告回控)
- Just Works 配对 + 绑定 + LE Secure Connections,断连自动重连
对照我过去用 Eclipse 手搓这套东西的流程(截图里那张 Eclipse + OpenOCD + GDB 调试的视角切换弹窗就是证据),这次一个任务从需求到真机广播,中间省掉了"翻 SDK 文档→挪范例代码→改宏→调广播数据→反复编译"这一长串重复操作。
四、真实评价
节省时间的地方,跑1个小时36分钟,耗了百多个积分,
-
Agent 一轮读 8 个文件 + 规划四步任务,把"理解 Cordio 协议栈"这个最耗时的前置环节压到了几分钟
-
自动修的 4 个错里,
DM_KEY_DIST_ID → DM_KEY_DIST_IRK这种"库版本宏名变更"的坑,过去通常要编译失败两三次才反应过来 -
Manual Approval 的路径级授权,让"让 AI 跑 make"这件事变得可接受
仍需人工处理 -
最终
.vscode/settings.json还有一处它没权限改(只读),报告里明确标了"需要你手动改一处",这点很诚实,不过,因为全程vscode无操作,其实无关结果。 -
烧录和真机串口验证这一步还得自己来——OpenOCD/GDB 调试视角的切换、PuTTY 看广播,Agent 暂时还碰不到硬件
五、踩到的坑 / 改进建议
-
Database Error 偶发 :中途主区域蹦过一个红色 “Database Error”,只给了 Reset Data / Restart Service 两个按钮。建议:出错时能保留当前会话上下文,或者至少把已完成的任务状态快照下来,别让 1h36m 的进度看起来随时会丢。这个好像会在切换到IDE的过程中丢失会话,这个同步的问题,在TraeCODE就有,需要导出上下文,纯手动啊。希望能改进一下。
-
Projects 区"No Tasks"有点反直觉 :新界面左侧 Pinned / Projects / Default 这一栏,我一开始盯着 “No Tasks” 找了半天入口(截图上我自己画了个问号)。建议把"新建任务"的引导做得更显眼,或者在空状态直接给一个"从模板开始"的 CTA。这个是咋回事,其实满载,只是在其他下拉结构里。
-
Smart Generate Agent 很香但门槛略高 :试了一下"Create Agent → + Smart Generate",用自然语言描述就能生成 Agent 配置,概念很棒,但"Callable by / When to Call"这些字段对新人还是偏术语化,建议智能生成后能给一段示例预览。这个新功能,其实很香的,尤其是对应于专业工程师,区分不同的专业,如机械工程师,水利工程师,根据用户的专业特性,预先定义一下身份还是非常能够提升效率的,虽然没有真正对比,一下,省积分那是必须的。
-
目录读写权限的授权,希望能在agent就提供。虽然是老鸟,一开始就知道是授权不足,不能再agent页面使用,最终摸索到了在IDE页面授权,但还是希望流程能顺畅一些,3个界面,那么都应该保持同步。
-
还有一个很香的就是SSH连接功能,这个原意是可以远程调试云端的服务和代码。但是,如果是嵌入式开发,那么就无敌了。因为很多项目都是需要在宿主开发板上启动一个ssh环境,相当于真机实测,如关于QT的开发,就必须有这个环节,如果能直接ssh联通,那么工程师在下岗前,还是要笑到睡着的。
-
这个是最大的bug,代码跑通后,如果切换到了最终的开发板官方开发工具平台,这里是MSDK
完全可以再次编译成果,而且可以下载到debug开发板
但是,再想回到TRAE的agent界面进行功能修改,
我勒个去,整个项目都没有,完全丢失。虽然说,trae已经完美的解决了我的诉求,但是,这样一次性服务,还是最好能提升一下。这算一个bug不?
一句话总结
这次合并最实在的体感不是"功能多了",而是 模式之间不再断了 ——Agent 拆任务、跑编译、修宏名;IDE 接手看产物、核代码;真机烧录完串口一开,广播名 “BLE Keyboard” 就在那儿。一个入口、一个任务流,从想法到可点击的交付,中间不用再切工具。
新版本还在灰度放量,等不及的话可以直接去官网下载体验。嵌入式这种"硬核"任务它都能扛住,日常的 Web/应用开发应该更轻松。













