最近几天实验了下所谓的 vibe coding,结论如下
先说结论,LLM 对于已知的模仿是其最擅长,类似模板代码,但是会有抖动,有时放到后面就是定时炸弹,对于已知的现有的抄袭模仿能力来说,claude 当第一,因为它无视版权把 github 爬了个遍,连 gist 都没放过,我甚至怀疑只要用它的都被 Claude 当作素材。gemini 会有自己的思考,如果让它改写,它会自己读了会用自己的逻辑来写,不会一味照搬,但是太复杂它就歇菜了。自我感受太依赖 vibe ,到后面会懒得审查,的确会变笨,而且也容易上火,但是的确目前简单逻辑的代码,单元测试,文档都没问题,可以当一个知识丰富的实习生助手,架构还不行,只能参考,关键的地方还得纠偏。
我用的是GEMINI-CLI,因为我想要看 LLM 的自己思想,而不是让 Claude 去照搬.
试验是基于我六年前写的 QInputEx 一个 CUI(Conversational UI)的核心组件,这个是基于 Quasar@v1/VUE@2 的,尝试让 AI 升级为 Quasar2/VUE3 。
不过感觉这个 gemini 很急躁,再这个过程,老是急不可耐的要求删除 v1 老版本的代码。
交流了三次,每天一次,基本完成了改写,但是最终我放弃了,感觉是因为 vue3 为了增强性能,牺牲了灵活性,对于这样的动态组件其实支撑不够,不过 LLM 并没有提醒我。这是最后实现最复杂的 search 组件才发现的。
无论怎样,LLM 都搞不定。
第一次交流
在经过一系列的提示,和修正后,改写 OK ,但是只把基础组件改写了,而附属扩展组件一个也没有改写,不过的确是自己动了脑子的,不是照搬。
███ █████████ ██████████ ██████ ██████ █████ ██████ █████ █████
░░░███ ███░░░░░███░░███░░░░░█░░██████ ██████ ░░███ ░░██████ ░░███ ░░███
░░░███ ███ ░░░ ░███ █ ░ ░███░█████░███ ░███ ░███░███ ░███ ░███
░░░███ ░███ ░██████ ░███░░███ ░███ ░███ ░███░░███░███ ░███
███░ ░███ █████ ░███░░█ ░███ ░░░ ░███ ░███ ░███ ░░██████ ░███
███░ ░░███ ░░███ ░███ ░ █ ░███ ░███ ░███ ░███ ░░█████ ░███
███░ ░░█████████ ██████████ █████ █████ █████ █████ ░░█████ █████
░░░ ░░░░░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░
Tips for getting started:
- Ask questions, edit files, or run commands.
- Be specific for the best results.
- /help for more information.
╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ > 请仔细阅读 v1 目录,将 v1 目录下的 Quasar v1 组件重构为 Quasar v2 的组件,放到 Quasar UI kit 本项目中,并根据组件的特点修改好 app-extension │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ 好的,我明白了。您的要求是将 v1/ 目录中的 Quasar v1 组件重构为 Quasar v2 版本,并将其集成到 ui/ 目录下的 UI kit 项目中,同时更新 app-extension 。
这是一个比较复杂的任务,我会分步进行。我的计划如下:
- 分析 v1 组件: 我会仔细阅读 v1/components/qinputex/ 目录下的文件,特别是 qinputex.tsx 和相关的 ts 文件,以完全理解该组件的功能、属性( props )、事件( events )和内部逻辑。
- 创建 v2 组件骨架: 在 ui/src/components/ 目录下,我会创建一个新的 Vue 3 单文件组件( SFC, .vue 文件),作为重构的目标。
- 迁移逻辑和模板:
- 将组件的逻辑从 Vue 2/TypeScript (可能是 Class-based 或 Options API) 迁移到 Vue 3 的 Composition API (