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

claude code 的服从性远不如 cursor

  •  
  •   natsukage · 8 天前 · 3271 次点击

    cursor 是 pro ,用的是 claude 4 sonnet max claude code 是 max ,用了 claude 4 opus 和 sonnet 都尝试过

    我的任务是将一个 c#项目中 a.cs 中的七十多个方法按照新的格式迁移到 b.cs 中,然后抛弃 a.cs 。 实际上就是重构去除中间层,原本的程序逻辑是 b.cs 中的 70 多个方法调用 a.cs 中的 70 多个对应方法,具体实现在 a.cs 中,非常蠢,我也不知道之前写这段代码的人的思路,每次添加修改功能都需要在两个文件中进行修改。

    于是我试图让 claude code 进行迁移,claude code 迁移时候光想着怎么取巧了,写了个脚本迁移,迁移完了报几十个错误,修了十几个之后,说剩下的错误都大同小异,让我先把主要任务标记为完成—— 然后把 a.cs 给删了,明明这时候压根就没法编译通过,它就说迁移已完成了。 而且经过测试,这些迁移问题很大,因为这 70 多个方法实际上签名都不一样,有的传 jObject ,有的传 JArray ,有的传自定义类型(别问我为啥写成这样,我也想知道),但是 claude code 在 b.cs 里写的实现看起来根本没有参考 a.cs 里原来的实现,就完全是在自嗨,写出来的方法最后跑起来时候风控报错:

    API call 'AAAAAAAA' failed: Deserialized JSON type 'Newtonsoft.Json.Linq.JArray' is not compatible with expected type 'Newtonsoft.Json.Linq.JObject'. Path 'data', line 4, position 11.
    

    Imgur

    //imgur.com/pcRr98Z

    有点离谱,我让他“一个一个进行迁移”,他也是阳奉阴违,迁移了几个然后就告诉我都看了个遍,现在没问题了。结果 diff 一下实际上就改了 3 个方法,跑起来果不其然又报一堆错。

    反而是 cursor 修改的时候是真的遵照我的指令一个一个改的,可以看到思考步骤(思考了几十遍,一遍改一个方法,直到把 a.cs 里的全部迁移到 b.cs )而且一次跑通了。

    Imgur

    https://imgur.com/WbXeGdB

    本来这个迁移其实也并不难,因为大部分的迁移都是直接把 a.cs 里的代码复制到 b.cs 对应的方法,去掉 b 里面引用 a.cs 的语句就行了,没什么难度和复杂性。所以像 cursor 这样一个方法一个方法地迁移想要出错都很难,但就这点事 claude code 都干不好,属实让人火大。

    18 条回复    2025-07-01 03:35:40 +08:00
    sampeng
        1
    sampeng  
       8 天前   ❤️ 1
    这些 ai 确实各有各的缺陷。claude code 修复 bug ,做一些新任务还行。cursor 就比较综合,绝大部分任务可以完成,但是在处理大上下文或者时间长一点,他也一样犯 2.
    毕竟 cursor 这么 2-3 年优化任务调度了。要给 claude code 时间
    netnr
        2
    netnr  
       8 天前
    先充分理解 XXX 项目 YY 、ZZ 目录下的类,再怎么(你的需求) ....
    natsukage
        3
    natsukage  
    OP
       8 天前 via iPhone
    @netnr 我其实前面已经说过了,整个重构规划就是 Claude code 先/init 然后再分析以后提出来的。
    但是它自己给了重构规划以后自己却不能按照自己的规划来实行。明显的能感觉到它是想偷懒,不愿意按部就班地一个一个方法去迁移。
    就像前面说的,实际上这几十个方法一个一个手动迁移的话基本就是 ctrl c v 的事,但是 Claude code 会更倾向于自己理解一遍 a.cs 里的代码,然后自己在 b.cs 里按照自己的理解重新写一遍。
    可是对于原本 a.cs 里代码签名写的很乱的这种情况,Claude code 就出现了严重的幻觉,有的方法它想当然地写了 jObject ,实际上传的是 jArray 。甚至有些方法它写出来的内容都和原方法不一样了(比如获取历史记录的方法,原本的 a 里是倒序获取记录,但是 Claude code 自己在 b 里写的是默认正序的获取)
    cursor 安排任务时候是真的按部就班一个一个方法改的,你能从思考过程里看出来它每次思考都是“接下来我要修改 xxx 方法”,然后在 b.cs 进行几行几行的修改,只改了目标方法这一处。所以也很难出错。

    这个并不是 Claude code 没了解项目上下文的问题,感觉就是单纯的像 1 楼说的一样,不擅长进行任务调度
    coolcoffee
        4
    coolcoffee  
       8 天前
    我上次想要让 Claude Code 拆前端微服务的时候也遇到了这个问题,第一次提的要求有点高,像让它一次性把某个 jsx 模块的依赖剥离到新项目的 tsx 模块,结果只给我迁移了第一个列表,第二个列表名字都改了,新建和编辑表单太复杂它就偷懒弄了一个功能待完成。

    后面我就让它重新写,继续保持原来的 UI 框架版本以及 JSX ,然后才做的差不多能看。

    感觉写代码这块应该先让它写好测试用例,然后再让它去迁移,反正测试用例先写好了,它自己会一遍又一遍的跑。
    xing7673
        5
    xing7673  
       8 天前
    指令任务的话建议不要用 claude 家的,我现在 cursor 设置里只有短代码会用 sonnet 了,长需求长任务交给 gemini 了,有机会也会尝试 o3
    (一个让 claude 反复修改了几十遍依然报错的代码被 gemini 一次性修好后就立马修改了日常 setup )
    mlzboy
        6
    mlzboy  
       8 天前
    augment 相比这两个怎么样?
    Loocor
        7
    Loocor  
       8 天前
    有个很尴尬且无解的问题,你永远不知道是模型本身的品质导致的,还是模型供应商偷工减料导致的
    flowerwow0316
        8
    flowerwow0316  
       7 天前 via Android
    镜像站?
    wyfig
        9
    wyfig  
       7 天前
    楼主用的 claude code 是自己订阅的,还是淘宝上买的国内直连的什么的?
    programApe
        10
    programApe  
       7 天前
    @mlzboy 对比 cursor 强很多,没用过 claude code 倒是不清楚。augment 也有问题,如果项目稍微大一点,只能联系部分上下文,不管现有的部分实现,把你项目加的很臃肿,但是总体而言比 cursor 好很多。现在这些 ai 还是得不断地自己过一遍。
    tcper
        11
    tcper  
       7 天前
    文件一长就出问题,我也遇到过,比如统一改字符串什么的,经常中间断了
    natsukage
        12
    natsukage  
    OP
       7 天前 via iPhone
    @flowerwow0316 官网(开头说了 Claude code 是 max plan ,而且 opus 和 sonnet 都试过了)
    natsukage
        13
    natsukage  
    OP
       7 天前 via iPhone
    @wyfig 官网(开头说了 Claude code 是 max ,而且 opus 和 sonnet 都试过了)
    natsukage
        14
    natsukage  
    OP
       7 天前 via iPhone
    @mlzboy augment 我还没用过,就不确定了🤦‍♂️
    wweir
        15
    wweir  
       7 天前
    以前说是把脏活累活丢给 AI 。
    现在是 AI 规划调试好了,剩下的都是脏活累活,人类自己去做吧
    wyfig
        16
    wyfig  
       7 天前
    @natsukage #13 之所以这么问是感觉跟我自己的实际体验差别有点大。 我用 claude code 官网订阅 100 美元的 max ,用了一个月,整体感觉其服从性是很不错的,除了确实就有 mock 数据的情况,不过我如果看到了会直接在它干活的时候实时发送一条消息让它调整过来。 如果没看到后面确认的时候也可以针对性的修改过来。其他情况下还是不错的,没有碰到过你说的这种问题。
    mlzboy
        17
    mlzboy  
       7 天前
    怎么保证 claude code 不被封
    flowerwow0316
        18
    flowerwow0316  
       7 天前 via Android
    @natsukage 不会啊,我目前对比 cursor 能明显感觉改很多东西都不会改歪,这真的是每个人有不同的体验了。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   946 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:49 · PVG 05:49 · LAX 14:49 · JFK 17:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.