一、背景

在DataWhale的Easy-Vibe教程:

https://easy-vibe.datawhale.cc/zh-cn/stage-1/1.1-introduction-to-ai-ide/https://easy-vibe.datawhale.cc/zh-cn/stage-1/1.1-introduction-to-ai-ide/

介绍了多套IDE AI编程工具:

那么这次就来体验一下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编码完成之后,你要测一下到底行不行吧!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐