Trae AI编程实践
本文记录了使用字节跳动开发的AI编程工具Trae进行企业投资图谱应用开发的完整过程。作者从安装配置Trae开始,通过SOLO模式实现需求分析、技术栈选择、前后端代码生成及调试。开发过程中发现AI存在"幻觉"问题,如虚构不存在的企业名称并坚持错误结论。文章展示了AI编程的高效性,同时也指出其精度不足的缺陷,建议在关键场景结合传统开发方式,并强调测试验证的重要性。整个过程体现了AI
一、背景
在DataWhale的Easy-Vibe教程:
介绍了多套IDE AI编程工具:
-
Trae:字节跳动开发的。张小白没玩过。
-
Cursor:这个张小白没玩过,听说这个工具只有付费用户才能用。
-
Qoder:阿里开发的。张小白没玩过。
-
CodeBuddy:腾讯开发的。张小白没玩过。
-
VSCode+Cline:这个张小白有过体验,可参见:VSCode+cline+openRouter+ step-3.5-flash免费体验AI编程
https://zhuanlan.zhihu.com/p/2004442741246010741
VSCode+Cline+GLM Coding Plan编程实践
https://zhuanlan.zhihu.com/p/2003830036382369338
【MCP多模态智能体助理构建挑战】第12届Nvidia Sky黑客松MCP实践4
https://zhuanlan.zhihu.com/p/1909069314193093744
那么这次就来体验一下Trae。
二、Trae的安装
Trae的功能包括:“用自然语言生成代码、自动调试、把设计稿转换为 React/Vue 组件等。在 2025 年 8 月的更新之后,Trae 新增了智能依赖导入、重命名建议、任务清单管理等功能;SOLO 模式也开始支持后端代码生成和技术架构文档编辑。”
打开

点击右上角“下载IDE”:

下载完毕后直接安装:




点击完成,打开Trae:

点击“开始”

安装命令行:

开始体验:

选择“个人用户”

使用手机号登录:

登录并打开:

“立即体验”SOLO模式:

咦,好像窗口跟传统窗口不大一样哦。
点击左上角“切回IDE”模式:

三、Trae的配置(模型供应商)
张小白在这里要配置 GLM Coding Plan。
点击 右边Builder:

会出现下拉菜单:

选择”添加模型“

按如下方法填写:

再打开模型清单:

把模型切换到”自定义模型“的GLM-4.7(不是上面TRAE内置的GLM-4.7)
四、使用Trae进行开发
1、软件需求准备
讲一下具体的需求。
有个MySQL数据库,登记了 某企业下所有的子企业(对外投资的多级企业,比如说A投资了B,B又投资了C,以此类推)
MySQL数据库有两张表:
(1)enterprise_info表记录了 企业名称(ent_name), 企业ID(ent_id)
(2)enterprise_invest_info表记录了 企业名称(ent_name), 企业ID(ent_id), 投资企业名称(invest_ent_name),投资企业状态(invest_ent_status),投资比例(investment_ratio), 认缴金额(subscribed_amount)
两张表可以用 企业名称(ent_name), 企业ID(ent_id)关联。现在表里面已经有了数据。
MySQL数据库的配置如下:
'host': 'localhost',
'port': 3306,
'user': '******',
'password': '********',
'database': '******'
我需要做一个app,前端使用vue.js,后端使用Java技术,将 某集团公司的 投资图谱展示出来。
基本做法是:
(1)根据 该集团公司的名称 在enterprise_invest_info表 能找到满足条件的 企业名称(ent_name)记录,列出该企业投资的所有企业(invest_ent_name列)的信息(包含投资企业名称,投资企业状态,投资比例, 认缴金额) 。
(2)如果 投资的企业invest_ent_name 在 enterprise_invest_info表的 企业名称(ent_name)也存在,继续列出该子企业投资的所有企业(invest_ent_name列)的信息(包含投资企业名称,投资企业状态,投资比例, 认缴金额) 。
如此反复直至列出所有满足条件的企业为止。
投资图谱应该是个树形的结构。
如果投资层级比较多,提供【展示一层】、【展示全部】、【收缩全部】的按钮,并根据按钮做对应的展示处理。
BTW:尽管原则上数据库表设计应遵循第三范式原则,enterprise_info和enterprise_invest_info两张表不应该都有ent_name和ent_id字段,而应该只保留一个,用另一个字段做两表关联。但是为了方便,减少join操作,特意保留了冗余字段。
2、选择SOLO模式
这么复杂的内容,群里的老师让我使用SOLO模式试试。SOLO,顾名思义,就是单干。
这里要提到AI编程有Plan模式和Act模式双工作流范式。对于复杂的软件开发任务,直接让AI写代码可能导致结果偏离预期,模拟人类的码农“设计-实现”的方式,在Plan阶段可以让AI“输出即思考”,进行详细规划,减少不确定性;在Act阶段:由于Plan阶段输出了清晰的计划,在这个基础上执行可以大幅提高代码质量与开发效率。
3、新建项目
新建项目 invest_graph:

4、规划需求和技术栈
贴入刚才大段需求:


它选择了Vue.js 3.0技术栈:

5、准备前后端代码
规划前后端程序:

配置后端数据库相关内容:

6、安装依赖
最后要在沙箱中安装项目依赖。
张小白理解沙箱的安全性,最近OpenClaw安全问题频出,在沙箱运行代码肯定是比直接运行安全。
但是:Trae沙箱里面执行非常慢,而且半天没有结果。
所以张小白提醒它不要在沙箱运行:

但是它还是选择在沙箱内运行——整一个独来独往,绝不服从:

7、完成代码开发
不一会儿,代码就开发完毕了:


8、修改后端技术栈为Java的SpringBoot框架
这个时候张小白发现后端也是JS代码,于是跟Trae商量,server端改为Java编程:




这个时候,Trae就像是个全栈工程师,啥都会。
9、启动应用
(张小白还特意提醒不要在沙箱内运行)

然而:

SOLO一如既往地不听话。
这个时候要点击“在沙箱中”的按钮,将其改为“在沙箱外运行”。

10、开始调试过程
自己试一下,然后把出错现象告诉Trae。
比如
(1)查询失败的问题:
问题现象:

报告Trae:

(2)第一层投资企业都没展示出来的问题:
Trae会提示用户打开F12看报错信息。
问题现象:

报告Trae:



每次Trae改完代码之后都会重启应用,并做个总结给你。



总之就像战鹰2-16熬芮佬,熬了半天,一直没搞定。
11、修改前端技术栈为Vue2
由于张小白对Vue3不熟,想干预AI开发也没办法,无奈跟Trae说:

修改完框架之后重试:

总算可以展示出来了。
12、继续调试过程(不休止)
不过发现投资比例有两个%%(数据库有一个,它又加了一个)

这个比较容易解决。
然后进一步完善:
增加 展示两层、展示三层、展示四层的按钮:

解决展开的时候层级不对的问题:

增加是否显示非在营(注销、吊销、其他状态的企业)按钮:

修改页面样式:

把对外投资信息放到一行显示:


增加子企业统计数展示:





有时候直接把错误信息发给Trae,让它自行解决:


这样周而复始的工作,直到前台的显示,和后端的逻辑满足需求为止。
13、保存当前版本
每次实现了一个比较好的功能,最好保存下当前版本。
因为担心后面Trae会把代码修复的面目全非,导致无法恢复到上一个较好的情形:


14、页面功能展示
打开浏览器:
http://localhost:8080/

选中企业,点击查询:


不选“非在营”


展示全部:

从功能上说,基本上满足了需求。
不过如果从页面是否好看来看,好像不怎么好看。
当然,这就不是本文的工作了。
补记:关于Vibe Coding中一个细思极恐的事情
在本次开发APP的过程中,发现了一件事情,让张小白感到有点后怕。
在调试的过程中,发现有家企业投资的企业未能展示,于是张小白问了下:

Trae 突然提出了一个新的公司名称“无锡地铁生态置业有限公司”
而这家公司,在数据库的两张表里面都没有出现过,明明表里面都是“无锡地铁生态置业投资有限公司”


然后张小白多次跟它沟通:

它还是坚持自己的回答:

继续:

终于它找到了程序的BUG:

并且完成了代码修复。
但是,张小白怀疑的是:明明有数据库可以查出来很精确的答案,Vibe Coding为啥编造了一个不存在的公司名称,而且说出问题现象的原因就是因为这个不存在的公司引起的。这是AI编程中大模型的幻觉生效了吗?它无比坚持自己的错误结论,即便事实不正确。
有位 鱼大佬 解释如下:
”就是在算法中,其实是一团数据的碎片“、”这些碎片被抽取出来之后,会按照概率,拼合在一起“、”这些碎片当中可能有一些,是因为某种原因,所以导致概率值很高“、“就一起被抽取出来了”、“就像公司的名字,实际上进去的时候,它并不是一整个名字进去的,而是被分词分进去的”、“也就是所谓的token,然后就被向量化就进行后续大家都知道的过程”、“在一些对结果要求精度很高的场景里边,实际上我还是建议大家用传统的方式来,而不是全部依赖大模型”。
“我之前有个场景做过测试”、“试着用大模型去帮我通过路径对文件进行分类”、“有一些明显不是同一个类目下面的路径,有可能是会被聚类聚到一起的”、“不能被模型牵着鼻子走”。
说的很有道理的。
不过,该如何解决这个问题呢?这个还是值得“工作即将被替换掉的码农”深思的事情。
至少,在Vibe Coding编码完成之后,你要测一下到底行不行吧!
更多推荐



所有评论(0)