Cursor 开发的过程实录 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sillydaddy
0.66D
0.15D
V2EX    程序员

Cursor 开发的过程实录

  •  
  •   sillydaddy 195 天前 2868 次点击
    这是一个创建于 195 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 效果总结:在(不连续的)5 天内,合计花费约 21 小时,达成 45 次 commit ,产出代码约 1500 行。 测试用例( tests/):约 447 行 源代码文件( src/):约 1,259 行
      • 第 1 天, 250 分钟=70+180 ,询问 AI 并想通了反射,配合 AI 写反射,4 次 commmit
      • 第 2 天, 120 分钟=60+40+20 ,类型,序列化,data-driven 端口类型,11 次 commit
      • 第 3 天, 220 分钟=60+45+60+60 ,思考状态机,端口类型,数据驱动,数据类型和序列化,11 次 commit
      • 第 4 天, 300 分钟=70+100+130 ,Trigger 思路,端口类型,端口类型 OK ,6 次 commit
      • 第 5 天, 390 分钟=60+50+280 ,计时器,组件网络,UI 组件,13 次 commit
    • 开发过程摘要:
      • 是开发自己的项目( 参考这个 /t/862672 )。工具选的是 Cursor ,设置为 agent 模式,自动选择非 Thinking 模式的大模型。编码过程一般是我手动列出我想要做什么,想要修改什么,然后由它完成编码,我选择是否 Accept 。整个下来由自己来写的非常非常少。有时即使是删除某些代码,我也命令它来做。不过为了把事情说清楚,字倒是打了不少,这块不知道有没有语音转文字之类的可以加速呢。
      • 泛型这块,我不是很熟,但我又非常希望利用 TypeScript 的类型系统来简化代码、增强类型检查。所以这块花了比较长时间的磨合。AI 在这方面就像一个 Master 大师,泛型写的很漂亮。我不熟悉,所以每次它写完我都要尝试去弄懂这些泛型是怎么工作的,能不能达到目的。下面有一个很简单的举例,如果让我自己去实现这些复杂的类型系统,那可真要把我愁死了。
      • 到第 5 天,架子搭起来了,demo 跑通了,demo 用了 3 个组件,包括下面的 sequence 组件。效果如下图: https://v2ex.com/i/7M4536kk.gif
        • @RegisterComponent() export class SequenceBuffer<T> extends BaseComponent<SequenceBufferInputs<T>, SequenceBufferOutputs<T>> { private sequence: T[] = []; public metadata: ComponentMetadata<SequenceBufferInputs<T>, SequenceBufferOutputs<T>>; public inputs: ComponentInputs<SequenceBufferInputs<T>>; } export interface ComponentMetadata<Inputs, Outputs> { name: string; description?: string; inputs: PortMetadataMap<Inputs>; outputs: PortMetadataMap<Outputs>; } export type PortMetadataMap<T> = { [K in keyof T]: PortMetadata<T[K]>; }; 
      • 虽然代码产出数量没达到 100 行/小时,但考虑到这里面包含了不少思考和调试的时间,且代码是紧凑的基础结构,并且还是自己不熟悉的领域,特别是有些工程配置浪费了一些时间,在各种 debuff 叠满的情况下,这效率算是非常不错了。最关键是编码过程很轻松,做的还是自己喜欢的作品,有种上瘾的感觉。
      • 自己从顶层把握,做出一些关键的判断和选择,且不需要干什么费力的活儿,偶尔能对着吭哧吭哧干活的 AI 指点江山,获得一些临时的优越感(我也不知道自己为什么要跟机器比优越感),这种感觉确实很不错。不过,谁知道这种日子还能持续多久呢,现在很多情况下,我只是在从 AI 提供的候选方案中选择一个合适的,其实方案也并不是我自己想出来的。当然,也有一些自己想到而 AI 没有想到的。
    6 条回复    2025-05-24 20:30:38 +08:00
    qq1147
        1
    qq1147  
       195 天前
    我现在更喜欢用 ask 模式,ask 模式的代码也能通过点击 apply 到文件,有需要改动的可以先改再应用可控性强一点
    sentinelK
        2
    sentinelK  
       195 天前   1
    “虽然代码产出数量没达到 100 行/小时”
    其实 AI 赋能不能看绝对值。更恰当的比较应该是,同样的人,实现同样的功能。用 AI 和不用 AI ,产出的效率。

    按照我目前的经验,合理使用 AI ,纯从代码量上考量,应该能放大个人生产力 5~10 倍。

    btw:当然,因为生产力提升,代码实现的逻辑也会与没有 AI 时有本质的区别(比如技术选型更激进、更容易偏好于代码量大,但更稳健的业务逻辑等)。

    这也会影响代码量之比。所以“代码量之比”也并不是合理的生产力提升衡量标准。
    但这其实是另外一个话题了,就不赘述了。
    bbao
        3
    bbao  
       195 天前
    AI 在重复性工作以及既定业务框架下的补充逻辑能提高开发速度;定位疑似问题快速修复某个引入之类的,方便快捷; 工程性交给 AI 实现,谁这么做给谁点大拇指。
    xuelang
        4
    xuelang  
       195 天前
    哈哈,Cursor 配合 Claude3.7 ,Claude4 ,再结合 MCP ,真的太爽了。

    最近开发了一个七巧板在线玩的 https://gallery.selfboot.cn/zh/games/tangram
    然后也试了几个 MCP Server ,写了个 Blog:[使用 Cursor 深度体验 3 个 MCP Server ,惊艳但并不实用]( https://selfboot.cn/2025/05/23/mcp_user_report/)
    sillydaddy
        5
    sillydaddy  
    OP
       195 天前
    @qq1147 确实是,agent 要跟它明确说先不要改。
    @sentinelK 尤其是加上测试用例后效果更好。
    @bbao 目前还没试过用 AI 搭框架,不过代码里很多基础的方案确实是 AI 提出候选方案然后我来选择的。
    sam2478
        6
    sam2478  
       194 天前
    @qq1147 为啥我接的 api key ,ask 模式点 apply 不生效
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2397 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 15:51 PVG 23:51 LAX 07:51 JFK 10:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86