Trae 初体验,尝试做一个视频转动图的小工具

304 阅读6分钟

前言

日常写文章时,有时候需要记录一些操作流程,需要将录屏转换为 gif 动图,每次都需要找有转换功能的网站或者临时写脚本,非常的麻烦。看到掘金在网站上疯狂推荐 Trae. 所以决定试一下,用 Trae 做一个可以将 mp4 按照指定要求转换为 gif 的小工具。

Trae 实践

整体框架的快速实现

明确需求之后就让 Trae 开干吧 。

使用当前 Trae 最新版本 0.6.10 ,全程使用 Doubao-seed-1.6 模型

task-desc.png

直接给 Trae 描述需求

实现一个 flask 应用,实现将 mp4 转换为 gif 。mp4 文件支持手动选择或者拖拽,可以配置转换过程的参数,支持设定帧率、分辨率等信息,输出的 gif 需要要展示大小信息。在一个页面中实现,不要进行跳转。确保 UI 美观精致。

Trae 经过一番思考很快给出了解决方案,并提供了代码让我进行审查

task-p0-0.png

可以看到这里 Trae 选择使用 moviepy 这个库来处理,app.py 和模板文件 index.html 的细节懒得仔细看直接选择了全部接受。同一时间,Trae 已经开始自动安装依赖了。

task-p0.png

这里居然没有让用户进行确认,就开始执行在本地安装其他东西的操作,真是令人大跌眼镜

日常开发使用 Python 为了避免出现冲突,都是创建各自的临时环境,很少全局安装非常用的依赖。因此,及时终止了这个步骤,而是命令 Trae 在虚拟环境中展现操作。

task-p0-1.png

venv_install.png

安装依赖后,自动启动了 flask 应用,在浏览器中打开 http://127.0.0.1:5000 可以看到如下内容。

result.jpeg

虽说可以控制的参数较少,选择 mp4 文件后没有预期中的预览图,但整体简洁美观,看起来很容易上手,算是符合预期吧。

到这里,Trae 表现都不错,显得非常的智能,可以说是很聪明的理解了我提出的需求并及时响应。然而未曾想,这就是此次使用 Trae 的巅峰体验了,后续的使用感受可以说是急转直下。

解不完的 Bug

选择文件后,点击转换很快就遇到了第一个 bug ,提示文件未选择。

result-bug0.jpeg

按照经验,应该是选择文件后的路径出现了问题,没有选择去看代码,而是直接把问题再次抛给了 Trae .

bug1-0.png

原以为这是非常简单的问题,要知道业界现有的大模型网页端应用都支持上传文件,可以说是基操。而且浏览器中选择本地文件提交表单早就有非常成熟的实现了,一个入门级的前端同学应该都可以轻松搞定,但却不曾想这一下难住了 Trae 。

为了解决这个问题,Doubao-seed-1.6 这个模型经历了巨长时间的思考,中间对 index.html 文件做了近乎 20 次的修改,上面截图中列出的步骤只是三分之,后面还有 2 屏几乎完全一样的代码修改过程,到后面我都想放弃了,实在是无法忍受了。好在经过耐心等待,大约耗时 40 分钟后,他终于靠自己解决了这个问题。

bug1-1.png

再次试用,文件未选择的问题的解决了,但是又出现新的报错,之际把报错日志扔给 Trae。

bug2.png

解决这个问题后,又出现了另外一个问题

bug3.png

将问题抛给 Trae 后很快得到了解决。但是,再次试用的时候又出现了 转换失败: module 'PIL.Image' has no attribute 'ANTIALIAS' 这个报错,到这里已经完全对 Trae 或者说是 Doubao-seed-1.6 失望了。在解决一个问题的基础上有引入一个新的问题,而且是一个已经遇到过并且已解决的问题,这种按下葫芦浮起瓢的体验真是太糟糕了。即便大模型的上下文有大小限制,可是这个问题也才过去一轮而已,怎么会被同一块儿石头绊倒两次呢?

最后,经过一番折腾,所有报错都解决了,点击转换后,在控制台已经有 moviepy 执行进度的日志了,想着这下终于搞定了,也不枉费自己 1 个多小时的时间,然而转换完成后,最终结果 gif 图片始终无法显示,只是显示了一个白屏后再次刷新回到了首页,这回是彻底无语了。

bug4.png

最终,这个问题算是彻底把 Trae 搞懵了。甚至他在解决问题的过程中,莫名其妙的重新启用了一个新的 Terminal ,在我毫不知情的情况还是把这个临时 demo 的依赖安装到了我本地的环境中。尝试了多次失败的经历之后,最终还是放弃让 Trae 解决这个问题了,因为从他思考的过程来看,他已经完全跑偏了,可能是经过这么长时间的对话后,部分上文已经丢失了,导致他的思维陷入了黑洞中。

当然,本着把这个工具做完,做出来之后下次可以直接用的心态,决定还是自己上手去走完最后这一步,毕竟已经耗费了一些时间,全部扔掉就变成沉没成本了。

final_result.jpeg

经过一番手动修改后,最终实现这个可用的小工具。导致这个 bug 的问题,其实通过日志就能找到 。Trae 明明提供了预览的功能,但却无法通过内置浏览器的日志分析出这个问题的原因,实在是匪夷所思。也许从开始一直坚持使用 Doubao-seed-1.6 是个不太明智的选择。

原本是想用 Trae 实现雏形后,逐步精细化转换时可以控制的参数,优化转换速度,最终打包为本地可执行的二进制文件。但是,由于糟糕的使用体验,已经不想再投入精力了。但是好在我想要的功能实现了,只是耗费了比预期中更多的时间和精力.

写在最后

大约半个月前,用 ChatGPT 也做过类似的功能。我让他用 Flask 实现一个图片分辨率按预定参数缩放的功能,ChatGPT 完全是一次性输出了非常完美的解决方案,在体验过程中我原本是想把提供的代码一个个复制到本地执行,而他非常贴心的提供了以下的选择。

chatgpt-1.png

chatgpt-2.png

按我们非常熟悉的话来说,ChatGPT 提供了一条龙服务,甚至连复制粘贴代码的功夫都省了。完整的解决方案打包给你,解压后使用即可,而且是没有 bug 的完美方案。和使用 Trae 的体验可以说天壤之别。

Trae 还有很长的路要走,有很多体验问题,哪些是该自动的,哪些不该是自动执行的,完全没有边界。最重要的,还是解决代码问题的能力有待提升。当然,若是基础模型导致的体验问题,需要时间来解决。现阶段感觉 Trae 只适合做一个能听懂人话的脚手架工具,用来帮忙创建项目雏形,代码里的细节和具体问题,还是依赖肉身程序员去解决。

也许,下次升级他可以变得更好一些。