V2EX 06月29日
[程序员] claude code 的服从性远不如 cursor
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了在 C# 项目中,使用不同 AI 工具进行代码迁移的经验。作者尝试使用 Claude Code 将代码从 a.cs 迁移到 b.cs,但结果令人失望,迁移后的代码错误百出,无法正常运行。相比之下,另一款工具 Cursor 表现出色,它能够按照指令逐个方法进行迁移,最终成功完成了任务。作者通过对比,强调了 AI 工具在处理代码迁移任务时的差异,以及细致、严谨的重要性。

🧐 Claude Code 在代码迁移过程中表现不佳,它未能正确处理不同方法签名的情况,导致迁移后的代码无法编译通过,运行时报错。

💡 迁移任务的本质是将 a.cs 中的方法复制到 b.cs 中,并移除对 a.cs 的引用。Cursor 能够按照指令逐个方法地进行迁移,确保了迁移的准确性和完整性。

🤔 Cursor 在迁移过程中展现出严谨的工作态度,它逐个方法地进行修改,并经过多次测试,最终保证了迁移的成功。

😤 作者对 Claude Code 的表现感到失望,认为其未能胜任简单的代码迁移任务,并指出了其在处理细节问题上的不足。

cursor 是 pro ,用的是 claude 4 sonnet maxclaude 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.com/pcRr98Z

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

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

https://imgur.com/WbXeGdB

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

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

代码迁移 AI工具 Claude Code Cursor C#
相关文章