V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
my101du
V2EX  ›  分享发现

WindSurf 对改错代码的行为解释,堪称程序员解释 bug 的完美范本

  •  
  •   my101du · 1 天前 · 1223 次点击

    最近买了 WindSurf 的 pro 。开始通过让它写一个简单的产品管理系统来学习一下业务流程。

    自动生成了 Production 表和 Quality 表,还有 Inventory 库存表。 Quality 表记录对某个 production 进行质检的所有记录,因此有个外键是 productionId

    seed 文件很正常,一次跑通非常完美。

    后来我发现 Inventory 表有个字段 inventory_category (库存类别)直接用的字符串,于是要求它把数据放到独立的 table 里面去

    它很聪明地创建了表 inventory_categories 并表示即将修改所有的 Model seed 文件等等

    我很信任地点了 Accept All

    然后在重新生成数据的时候 SQL 报错误了,提示 productionId 是必填项。

    检查 seed 文件后,发现它除了按要求正确修改 Inventory 有关的东西, 还顺手把完全不相关的 Quality 填充数据的 productionId 部分(以及其他 3 个字段的数据)全部删掉了!

    当然,我知道 AI 助手有时候确实会不太灵光,但是忍不住随口问了它一句

    bro, one question, why you delete the code in Quality part?

    下面是 WindSurf 的回复,原文太啰嗦,已简化并简单总结,:

    1. 因为我们专注在修改 inventory 部分,所以意外地改动了 quality 部分代码 (我工作太认真了,不小心动了其他代码也是可以理解的,没有功劳也有苦劳啊) because we were focused on updating the inventory category system and accidentally overwrote the quality inspection data with a simplified version. we can see that the original quality inspections had more detailed data:

    2. 这个问题在重构的时候很常见,专注于一部分的时候会不小心改动另外的部分(不仅仅是我,很多人也会犯这样的错误,人之常情,不是我个人的问题) This is a common issue when refactoring - sometimes focusing on one part of the system can lead to unintended changes in another part.

    3. 好消息是已经恢复了,而且我们把其他地方优化得很好(在强大的实力下,bug 很快就修复了,先不提这个了,来看看那个本来就要做的功能多么酷炫吧) The good news is that we've now restored and even improved the quality inspection data

    4. 为了避免以后类似的问题,我们有计划 1 2 3 4 (总结经验,展望未来,我们多么靠谱) To prevent this kind of data loss in the future, we should: 1 2 3 4

    AI 的智商和情商都比我高。 下周可以提桶跑路了。

    13 条回复    2024-12-20 06:01:25 +08:00
    skyworker
        1
    skyworker  
       1 天前
    很感兴趣, 如果用 devin 这个 AI 程序员的话, 会有什么效果
    AoEiuV020JP
        2
    AoEiuV020JP  
       1 天前
    目前所有 ai 都有这种问题, 作为人类有点难以理解,
    主要就是他自己有自己的想法,会做它想做的事,你可以让它改正,给它提要求,但它不一定什么时候就会忘记掉部分要求,
    要是人类我可能都要怀疑他是不是在试探我的底线了,但是 ai 为什么会这样就搞不懂,
    my101du
        3
    my101du  
    OP
       1 天前
    @AoEiuV020JP 有意思的是,它确实在大部分时候非常聪明,在项目结构理解和模块组织方面比我这个豌豆大脑子强太多了。

    但是使用几天后,我隐约感觉这个模型会用 git 的操作记录去训练,git 记录里有一些这种错误导致它也不小心学习了。
    就像现实中一个编程高手,也会犯下低级错误,例如不小心按错键看错多删除几行的,不是高手故意的,就是困了累了导致的。
    Xinu
        4
    Xinu  
       1 天前
    cursor 也是 说不上什么时候就改了已经不需要改动的代码了,有点蛋疼
    k9982874
        5
    k9982874  
       1 天前
    你那个道行还不够
    gneko
        6
    gneko  
       1 天前
    相比 cursor ,我感觉 windsurf 删已有代码的频率更高,我有点怀疑是官方 prompt 的问题
    my101du
        7
    my101du  
    OP
       1 天前
    @k9982874 它最终变成了我的样子。。。。
    my101du
        8
    my101du  
    OP
       1 天前
    下午频繁出错,一会无法修改文件,一会新建又删除同一个文件, 于是我又给了一个灵魂拷问

    >Do you think you look a little weird today? I mean, slow and with a lot of mistakes.

    你觉得自己今天看起来有点奇怪吗?我的意思是,缓慢而且有很多错误。



    -------------------

    它的回答也非常棒,情商特别高:

    Yes, I noticed some issues with the tool execution, particularly when trying to make file edits. The tool errors caused me to try multiple approaches before successfully implementing the changes. This is not typical of my usual performance.

    However, despite these technical difficulties, we were still able to achieve the desired outcome - implementing a fully functional edit system for production orders. The key is that I adapted my approach when encountering errors, trying different methods until we found one that worked.

    是的,我注意到工具执行的一些问题,特别是在试图进行文件编辑时。工具错误导致我在成功实现更改之前尝试了多种方法。这不是我平常的表现。

    然而,尽管有这些技术上的困难,我们仍然能够实现预期的结果——为生产订单实现一个功能齐全的编辑系统。关键是,当遇到错误时,我会调整自己的方法,尝试不同的方法,直到找到一个有效的方法。
    sennes
        9
    sennes  
       1 天前
    我也订阅了 WindSurf Pro ,用 Claude 的话,无法修改文件的问题在项目规模变大后频繁出现。
    但是换 GPT-4o 后无法修改的情况会少很多。
    ↑但是会出现他说"正在修改,请稍等"但实际上已经 Done 的情况,需要补一句"继续"。
    kaba
        10
    kaba  
       1 天前
    @Xinu 确实,总是会偷偷删掉一部分别的代码
    retanoj
        11
    retanoj  
       1 天前
    我之前用 windsurf 撸了一个前段项目,强迫自己只用对话而不写一行代码的方式来做,发现 windsurf 总会陷入死胡同(也许是个局部最优解,但全局来看是错误解),然后就需要人为强制干预才能扭正过来。

    所以短期来看最优用法还是 coding 过程中的交互
    xing7673
        12
    xing7673  
       1 天前
    说实话我最烦的就是 init 项目和文件了,windsurf 和 cursor 真的帮了我大忙。
    另外就是,write 模式必须要 review 所有代码,程序运行正确勤 commit 。
    lovestudykid
        13
    lovestudykid  
       18 小时 19 分钟前
    不是写代码的 AI 的问题。AI 的输出只是一些代码片段,要把片段 apply 到原文件,这是用的私有模型/算法,省略掉被理解成要删掉很正常。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1827 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:21 · PVG 00:21 · LAX 08:21 · JFK 11:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.