【完整实战案例】全流程跑通——用全新 TRAE 跑通一个 BLE HID 键盘固件

用全新 TRAE 跑通一个 BLE HID 键盘固件

适配【完整实战案例】方向,全流程描述+【能力测评】【技巧心得】

TraeWork 和 TraeCode 合并了。讲真,确实有些迷茫,原来是两个都用,都分别用,现在合并了,还是很好奇的。
这意味着什么——以前要在两个入口之间反复横跳的事,现在一个 Agent 窗口就接管了。这次我没有拿"写个 Todo"来试水,直接挑了一个我手头正在啃的硬骨头: 基于 MAX32655 feather board 的 BLE HID 键盘固件 ,把"想法→可被手机识别的蓝牙键盘"这一整条链路丢给全新 TRAE 跑了一遍。

中毒的使用者,奥,是重度使用者,其实也差不多。上手先卸载一个TraeWork,比较喜欢TraeCODE就先留下,


然后安装新版trae CN,比较可惜的是TraeCODE从安装列表中消失了,看来是只有一个,真合并了。

一、任务背景

预期目标很明确,就一段需求,
直接启动就是agent模式,


好奇ing,然后就是一句话搞事情,

开发一个嵌入式应用:

  1. 采用 ADI MAX32655 feather board
  2. 使用 MSDK 开发工具和平台
  3. 基于 BLE_periph 这个范例代码开发
  4. 实现蓝牙键盘开发,使用 BLE HID 协议
  5. 在本地目录直接修改
    那么目标交付是:
    能编译出 .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 兼容性——这两个坑我之前自己写的时候踩过,它居然在规划阶段就提出来了。接着它说"我现在已经了解完整的情况了,让我来规划一下实现步骤",然后给出了四步任务清单:
  1. Copysvc_hid.c into project with output Report Reference fix
  2. Createhid_kb.c/h : report map, key send logic, ASCII mapping, LED output
  3. Rewriteperiph_main.c : HID/DIS/BAS services, adv data, CCC set, security, buttons, LEDs
  4. Updateperiph_api.h andmain.c (清掉 WP 数据传输残留)
    技巧心得 :对嵌入式这种"改动一个文件牵动一片"的任务,先让 Agent 摸底再规划,比让它直接写代码稳得多。我会在 prompt 里明确"在这个本地目录直接修改",这样它会原地改而不是另起一个新项目。

2. 关键节点的人工判断:Manual Approval 不是摆设


这个是一份惊喜,因为,代码看起来是调通了,需要进入make编译阶段了,而且还是全自动。

我全程开着 Manual Approval 。跑到第 4 步要执行make 编译时,弹出了权限确认框:
:warning: 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 暂时还碰不到硬件

五、踩到的坑 / 改进建议

  1. Database Error 偶发 :中途主区域蹦过一个红色 “Database Error”,只给了 Reset Data / Restart Service 两个按钮。建议:出错时能保留当前会话上下文,或者至少把已完成的任务状态快照下来,别让 1h36m 的进度看起来随时会丢。这个好像会在切换到IDE的过程中丢失会话,这个同步的问题,在TraeCODE就有,需要导出上下文,纯手动啊。希望能改进一下。

  2. Projects 区"No Tasks"有点反直觉 :新界面左侧 Pinned / Projects / Default 这一栏,我一开始盯着 “No Tasks” 找了半天入口(截图上我自己画了个问号)。建议把"新建任务"的引导做得更显眼,或者在空状态直接给一个"从模板开始"的 CTA。这个是咋回事,其实满载,只是在其他下拉结构里。

  3. Smart Generate Agent 很香但门槛略高 :试了一下"Create Agent → + Smart Generate",用自然语言描述就能生成 Agent 配置,概念很棒,但"Callable by / When to Call"这些字段对新人还是偏术语化,建议智能生成后能给一段示例预览。这个新功能,其实很香的,尤其是对应于专业工程师,区分不同的专业,如机械工程师,水利工程师,根据用户的专业特性,预先定义一下身份还是非常能够提升效率的,虽然没有真正对比,一下,省积分那是必须的。

  4. 目录读写权限的授权,希望能在agent就提供。虽然是老鸟,一开始就知道是授权不足,不能再agent页面使用,最终摸索到了在IDE页面授权,但还是希望流程能顺畅一些,3个界面,那么都应该保持同步。

  5. 还有一个很香的就是SSH连接功能,这个原意是可以远程调试云端的服务和代码。但是,如果是嵌入式开发,那么就无敌了。因为很多项目都是需要在宿主开发板上启动一个ssh环境,相当于真机实测,如关于QT的开发,就必须有这个环节,如果能直接ssh联通,那么工程师在下岗前,还是要笑到睡着的。

  6. 这个是最大的bug,代码跑通后,如果切换到了最终的开发板官方开发工具平台,这里是MSDK


    完全可以再次编译成果,而且可以下载到debug开发板

    但是,再想回到TRAE的agent界面进行功能修改,

    我勒个去,整个项目都没有,完全丢失。虽然说,trae已经完美的解决了我的诉求,但是,这样一次性服务,还是最好能提升一下。这算一个bug不?

一句话总结

这次合并最实在的体感不是"功能多了",而是 模式之间不再断了 ——Agent 拆任务、跑编译、修宏名;IDE 接手看产物、核代码;真机烧录完串口一开,广播名 “BLE Keyboard” 就在那儿。一个入口、一个任务流,从想法到可点击的交付,中间不用再切工具。

新版本还在灰度放量,等不及的话可以直接去官网下载体验。嵌入式这种"硬核"任务它都能扛住,日常的 Web/应用开发应该更轻松。

2 个赞

太硬核了!嵌入式软硬结合这个选题选得好——Agent先摸底再规划这步我特别有共鸣,批量做产品设计文档的时候也是先让Agent摸清每个系列的结构再并行调度。不过我踩了个PowerShell语法坑:-and不能直接连两个Test-Path,导致md复制失败重跑。你那个Database Error上下文丢失的坑我也怕,批量任务做到一半丢了进度真的要命。希望Agent模式能有个项目级的"教训库"自动加载功能,下次批量活不想再踩一遍同样的坑。

2 个赞

这个库的代码量不大,可以直接跑agent,如果上下文长,需要做一个checkpoint。
这样可以断点重做。

1 个赞

上下文长就做 checkpoint 这招可以,固件也是全程让 agent 写的?

1 个赞

这个没想到,就是一轮完工,make就直接ok了。
感觉天都要塌了,饭碗这么就给砸了。

1 个赞