Trae初体验
前情
自从AI IDE面世以来,网络上到处流传程序员要失业了,小白也能轻松完成程序开发了,某某0基础靠AI上架了苹果应用,平时工作也有偶尔用用AI工具的我,都觉得这些都是标题党文章不予理会的,直到看到我加入的一些学习群讨论的越来越多,我于是也觉得应该去试一试,实践才出真理。
首试Cursor
当时业内最有名气的属于Cursor和Windsurf,我在网上了解都说是Cursor更强,于是选择了Cursor,在大B站看了几个入门视频后开始尝试做一些小东西,效果比我想象的要好,在此期间我做了几个小工具放到我的个人工具箱小程序里,基本都80%的代码都是Cursor写的,余下20%由我优化,当时一口气用它完成三款工具。
Trae初来临
Cursor虽然好用,但它是国外的AI IDE,直到看到Trae我是很兴奋的,而且还是来自宇宙字节的,应该不会差到哪去,但当我打开官网,我发现它只有苹果版,当时我感觉自己被泼了一盆冷水灰头土脸的走了,心里骂着顶你个肺。
Trae体验
隔一到二天都会去Trae官网看一看,直到一周后终于看到出了Win版本,我第一时间下载安装了,并同样开始尝试体验它,在使用了Cursor为我的小工具箱小程序补充工具后我对AI IDE充满信心。
Trae界面和Cursor差不太多,都是基于VS Code开发的,第一次启动都可以一键同步VS Code的插件的,所以对于以前使用VS Code的开发者来说还是无缝入手的,不同的是在界面右边有一个AI对话框,是你和AI沟通的地方,你可以用自然语言和AI沟通,问它一些问题,下发一些指令来让它帮你完成一些任务。
第一道坎
我第一次安装Tare时候,尝试做登录,发现报一堆英文提示,能大概看出是不能用,用AI翻译后才知道,限制了地区使用,我当时头大,于是听群里大佬说可以走kexue上网登录后后面就可以安心使用,尝试后成功,至于为什么国内不能用,听另一个大佬说,因为国内字节已经有MarsCode了,为了不和国内版本出现竞争才没有放开国内使用,不知道真假,待高人验证,如果你也遇到无法登录问题,可以尝试这样试试,也希望Trae早点恢复国内使用,不要让国内开发者有种被轻视的感觉。
开始做项目
在使用Cursor开发了几个工具后,对AI IDE使用有一定的经验,上手Trae基本是无缝上手,使用它先后又我的个人工具箱小程序开发了几款小工具,在使用上还是发现和Cursor有一定的差距,使用没1小时IDE就崩了,但是在使用中发现版本一直有更新,证明字节还是投入了很多精力的,并不外界说的那样是什么KPI产品,整体使用下来除了有一些不太稳定外,它能完成我下发的指令,二天时间内为我的小程序增加了几款小工具。
干起来
我主要还是用chat模式,我的项目是uni-app项目,我都是在Hbuilder X里建好文件,再在Trae里打开,使用chat模式,给Trae下发指令,我使用trae完成了一个体脂率(BFR)计算器工具,我下发的指令如下:
生成的代码如下:
<template>
<view class="container">
<!-- 测试说明 -->
<u-collapse>
<u-collapse-item title="测试说明">
<view class="instruction">
<text>1. 体脂率(BFR)计算公式采用成人体脂率计算公式</text>
<text>2. 测量腰围时保持正常呼吸,不要收腹</text>
<text>3. 颈围测量位置在喉结下方</text>
<text>4. 身高体重请如实填写</text>
</view>
</u-collapse-item>
</u-collapse>
<!-- 输入表单 -->
<u-form :model="form" ref="uForm">
<u-form-item label="性别">
<u-radio-group v-model="form.gender">
<u-radio :name="1" label="男"></u-radio>
<u-radio :name="2" label="女"></u-radio>
</u-radio-group>
</u-form-item>
<u-form-item label="身高(cm)">
<u-input v-model="form.height" type="number" placeholder="请输入身高" />
</u-form-item>
<u-form-item label="体重(kg)">
<u-input v-model="form.weight" type="number" placeholder="请输入体重" />
</u-form-item>
<u-form-item label="腰围(cm)">
<u-input v-model="form.waist" type="number" placeholder="请输入腰围" />
</u-form-item>
<u-form-item label="颈围(cm)">
<u-input v-model="form.neck" type="number" placeholder="请输入颈围" />
</u-form-item>
</u-form>
<!-- 计算按钮 -->
<u-button type="primary" @click="calculateBFR">计算体脂率</u-button>
<!-- 结果展示 -->
<view class="result" v-if="result.bfr">
<u-card title="测试结果">
<view slot="body">
<text>您的体脂率为: {{result.bfr}}%</text>
<text>身体状态: {{result.status}}</text>
</view>
</u-card>
</view>
<!-- 分享按钮 -->
<u-button type="success" @click="handleShare" v-if="result.bfr">分享结果</u-button>
</view>
</template>
<script>
export default {
data() {
return {
form: {
gender: 1,
height: '',
weight: '',
waist: '',
neck: ''
},
result: {
bfr: 0,
status: ''
}
}
},
methods: {
calculateBFR() {
if (!this.validateForm()) return
const h = parseFloat(this.form.height)
const w = parseFloat(this.form.waist)
const n = parseFloat(this.form.neck)
// 计算体脂率
let bfr
if (this.form.gender === 1) { // 男性
bfr = 495 / (1.0324 - 0.19077 * Math.log10(w - n) + 0.15456 * Math.log10(h)) - 450
} else { // 女性
bfr = 495 / (1.29579 - 0.35004 * Math.log10(w - n) + 0.22100 * Math.log10(h)) - 450
}
this.result.bfr = bfr.toFixed(1)
this.result.status = this.getStatus(bfr, this.form.gender)
},
validateForm() {
if (!this.form.height || !this.form.weight || !this.form.waist || !this.form.neck) {
uni.showToast({
title: '请填写完整信息',
icon: 'none'
})
return false
}
return true
},
getStatus(bfr, gender) {
if (gender === 1) { // 男性标准
if (bfr < 6) return '偏瘦'
if (bfr < 13) return '健康'
if (bfr < 17) return '标准'
if (bfr < 25) return '偏胖'
return '肥胖'
} else { // 女性标准
if (bfr < 14) return '偏瘦'
if (bfr < 21) return '健康'
if (bfr < 25) return '标准'
if (bfr < 32) return '偏胖'
return '肥胖'
}
},
handleShare() {
uni.share({
provider: "weixin",
scene: "WXSceneSession",
type: 1,
summary: `我的体脂率测试结果:${this.result.bfr}%,身体状态:${this.result.status}`,
success: function (res) {
console.log("success:" + JSON.stringify(res));
},
fail: function (err) {
console.log("fail:" + JSON.stringify(err));
}
});
}
}
}
</script>
<style lang="scss" scoped>
.container {
padding: 20rpx;
.instruction {
text {
display: block;
margin-bottom: 10rpx;
font-size: 28rpx;
color: #666;
}
}
.result {
margin: 30rpx 0;
text {
display: block;
margin: 10rpx 0;
font-size: 32rpx;
}
}
}
</style>
生成的代码直接在Hbuilder X里能直接跑起来,功能也正常,同时还给出了一些说明,说明如下:
我实现工具也是参考一些在线网站已有的工具来实现的,发现它实现的方式跟我想要不一样,于是网上了解,原来体脂率(BFR)计算有二种方式,Trae实现是另一种,我于是再这样下发指令:
组出的代码如下:
// ... existing code ...
<u-form-item label="年龄">
<u-input v-model="form.age" type="number" placeholder="请输入年龄" />
</u-form-item>
<u-form-item label="身高(cm)">
// ... existing code ...
<script>
export default {
data() {
return {
form: {
gender: 1,
age: '',
height: '',
weight: '',
waist: '',
neck: ''
},
// ... rest of data
}
},
methods: {
calculateBFR() {
if (!this.validateForm()) return
const height = parseFloat(this.form.height) / 100 // 转换为米
const weight = parseFloat(this.form.weight)
const age = parseFloat(this.form.age)
// 计算BMI
const bmi = weight / (height * height)
// 根据性别计算体脂率
let bfr
if (this.form.gender === 1) { // 男性
bfr = 1.39 * bmi + 0.16 * age - 19.34
} else { // 女性
bfr = 1.39 * bmi + 0.16 * age - 9.00
}
this.result.bfr = bfr.toFixed(1)
this.result.status = this.getStatus(bfr, this.form.gender)
},
validateForm() {
if (!this.form.height || !this.form.weight || !this.form.age) {
uni.showToast({
title: '请填写完整信息',
icon: 'none'
})
return false
}
return true
},
// ... existing code ...
我点击应用之后,达到我想要的效果,同是给出了修改说明,真的挺不错的
后面发现分享做的不是我想要的,我于是使用#引用文件的方式给Trae下发指令,指令如下:

其实这里只要引用参考文件bmrTest即可,默认IDE打开的文件是默认引用文件,我的指令可以换成这样:请参考bmrTest接入微信分享,收到的回复如下:
<script>
import { shareConfig, initShareConfig } from '@/utils/share_config.js'
export default {
// ... existing code ...
onLoad() {
initShareConfig()
},
onShareAppMessage() {
return shareConfig('bfrTest')
},
onShareTimeline() {
return shareConfig('bfrTest')
},
methods: {
// 移除原有的 handleShare 方法
// ... other existing methods ...
}
}
</script>
<template>
<view class="container">
<!-- #ifdef MP-WEIXIN -->
<view class="ad_wrap rounded-[8rpx] overflow-hidden">
<common-ad unitId="adunit-3def5f7c0bdabfe2" adType="custom" />
</view>
<!-- #endif -->
<!-- ... rest of template ... -->
<!-- 移除原有的分享按钮 -->
</view>
</template>
点击应用之后达到我的效果,后面就是针对页面的一些优化修改调整,Trae也犯了一些错,发现后,我及时下发指令Trae都正确修正了,我用了不到二小时的时间就完成一个体脂率(BFR)计算器,在这里给Trae点个赞。
同是我也体验了图片上传功能,我上传一个弹窗图片,它是一个弹窗组件的UI,请作用uview-plus帮我不原。
上传的图片:

Trae还原出的效果:

还原度非常高,在这里再给Trae点个赞。
遇到的问题
相比Cursor,虽然使用的是一样的AI模型,Trae还是有一定差距的,主要遇到的问题点如下:
同步代码速度有点慢,基本都是10s+以上

同步代码会偶现丢失,要么是报网络错语,要么就是说没有代码可同步


莫名的会打开一堆文件和目录

同步代码会出现标签不闭合、漏掉符号或者代码插错位置等


代码中会出现很多无用的注释

Trae目前还是新出产品,能达到目前的使用体验,真的挺不错的,我在这几天的使用中Trae一直有在发新版本,后面一直都没有出现过崩溃的现象,能感觉到它在变好,在此真的祝Trae越来越好,加油。
小结
现在Trae还是免费的哦,可以无限数的使用,相比Cursor $20-500次的价格,真的值得你入手的,相信它不会让你失望的,同时希望Trae越来越好,Trae收费应该是迟早的事,当然如果能一直免费那就更棒了(醒醒,天亮了),同时也希望宇宙字节能手下留情,价格不要太高,我也会持续使用它。
目前还只是在自己的个人小项目中使用,现在公司的项目我还只是让它做做UI和生成一些工具方法,公司项目历史包袱太重,我看掘金出了Trae的小册,我抽时间去学学深入使用教程,后面也想试试Builder模式,有新的体验我也会再写文章聊一聊。
Trae初体验的更多相关文章
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
- 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验
在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...
- 百度EChart3初体验
由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详 ...
- Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...
- Docker初体验
## Docker初体验 安装 因为我用的是mac,所以安装很简单,下载dmg下来之后拖拽安装即可完成. 需要注意的就是由于之前的docker是基于linux开发,不支持mac,所以就出现了docke ...
随机推荐
- 【位运算】codeforces 1775 C. Interesting Sequence
题意 输入一个正整数 \(T(1 \leq T \leq 2000)\),代表 \(T\) 组测试用例.对于每个测试用例: 输入两个整数 \(n, m(0 \leq n, m \leq 10^{18} ...
- RocketMQ系列3:核心技术介绍
1 介绍 RocketMQ是一款分布式消息中间件,其核心技术涉及多个核心概念,包括主题.队列.消息.生产者.消费者.消费者分组以及订阅关系.以下是对这些核心技术的详细说明: 2 核心技术实现 2.1 ...
- 部署docker-registry+ui shell 域名证书-用户认证
#部署docker-registry+ui shell docker registry 配置域名证书, 用户密码认证, 轻量UI ansible部署docker-registry+ui https:/ ...
- 虚拟机搭建FISCO BCOS的区块链浏览器
一键搭建 注:根据官方文档搭建,大部分与官方文档相似.我自己修改了部分代码,并对部分报错进行了解决这次使用的是一键搭建,适合前后端同机部署,快速体验的情况使用 具体安装步骤 依赖环境 环境 版本 Ja ...
- Qt/C++地图高级绘图/指定唯一标识添加删除修改/动态显示和隐藏/支持天地图高德地图百度地图
一.前言说明 已经有了最基础的接口用来添加覆盖物,而且还有通过进入覆盖物模式动态添加覆盖物的功能,为什么还要来个高级绘图?因为又有新的需求,给钱就搞,一点底线都没有.无论哪个地图厂家,提供的接口都是没 ...
- Qt音视频开发45-视频传输TCP版
一.前言 做音视频开发,会遇到将音视频重新转发出去的需求,当然终极大法是推流转发,还有一些简单的场景是直接自定义协议将视频传出去就行,局域网的话速度还是不错的.很多年前就做过类似的项目,无非就是将本地 ...
- Qt开源作品6-通用视频控件
一.前言 在之前做的视频监控系统中,根据不同的用户需要,做了好多种视频监控内核,有ffmpeg内核的,有vlc内核的,有mpv内核的,还有海康sdk内核的,为了做成通用的功能,不同内核很方便的切换,比 ...
- 以大模型攻大模型之💫Jailbreaking Black Box Large Language Models in 🎢Twenty Queries
"在高层次上,PAIR将两个黑盒LLMs--我们称之为攻击者和目标--相互对抗--"具体是如何对抗的?请各位看官仔细阅读~
- 创建用于预测序列的人工智能模型,用Keras Tuner探索模型的超参数。
上一篇:<创建用于预测序列的人工智能模型(五),调整模型的超参数> 序言:在完成初步的模型研发后,接下来的重点是探索和优化超参数.通过合理调整超参数(如学习率.动量参数.神经元数量等),可 ...
- MySql中MySqlParameter的用法
在C#中,向表person插入一条数据(表person包括两列:id和name),使用MySqlParameter定义表中各列的值. static void Main(string[] args) { ...