我在前一篇文章 《周末和朋友 Catch Up 引发的一些思考》 中提到,我想挑战自己,比如“3 Projects in 3 Months”或“每月上线一个小产品”。
而我选择的第一步,是重新开发一款优化后的链上 ETF 产品 —— 一个真正能跑的智能合约 + 可交互的前端界面。
本来计划是七月中旬动工,但因为最近忙于准备搬家和孩子新学校的事情,动工的事情一拖再拖。直到昨天,我终于坐下来打开代码编辑器,开始写第一行代码。第一天的进度刚好用满了 Claude Code 的使用额度,趁着这个“强制休息”,我决定做一个小结。
这款产品并不是全新概念,而是基于我之前做的课程项目 BlockETF 延续而来。它最初是我在「从0到1开发Dapp实战课程」中讲解的实战项目。
BlockETF 是一个“模拟 ETF”机制的链上资产管理产品,支持用户通过一个代币间接持有一篮子加密资产,具有以下特性:
具体来说,BlockETF 的核心功能如下:
在这之前,我主要是用 Cursor 来辅助我进行开发的,一直觉得也挺好用的,尤其是它本地集成得很好、响应快、上下文保持也不错。
但昨天我开始尝试用 Claude Code 来从零搭建 BlockETF,一个下午使用下来,明显感受到:Claude 在“理解整体需求”和“结构设计”方面,体验比 Cursor 的 Agent 更胜一筹。
最直观的差异是:Claude 的输出更像是在跟一个有架构经验的人合作。它不会立刻跳进代码细节,而是先帮我梳理整体需求——确认目标、规划模块、建议接口,甚至整理出开发步骤。我只简单描述了一句:“我要做一个链上ETF,包括合约和前端,帮我从 0 到 1 搭建起来”,Claude 就立刻列出了一个清晰的 Todos 列表,然后按图索骥,一步步完成任务。这种“先规划、后执行”的模式,非常适合复杂工程,体验上更像是一个“远程技术合伙人”。
相比之下,Cursor Agent 更像是一个本地代码助手,它的能力偏向细节和上下文局部的优化,比如:
这些在“已有代码基础上的改进”中非常实用。但如果是“从 0 到 1 构建一个新产品”,它就显得略有局限,没有 Claude 那种整体设计能力,感觉少了点“高屋建瓴”的视角。
另一个实际使用上的区别是:Cursor Agent 的代码建议和终端命令都需要我一个个点击 Accept,节奏容易被打断。Claude 则更像一位可以“自己干活”的搭档:它在执行一个任务前,会先告诉我要做什么,然后可以自动完成整个流程,中间不需要我手动确认,我可以放心去干别的事。执行完,它会发个通知让我回来 review,整个交互体验非常高效。
昨天一天下来,Cursor 在我这边已经“退化”为一个代码查看器——我主要用它来浏览 Claude 生成的代码。而一旦需要改动或重构,我就直接让 Claude 处理了,效率高得多。
尽管 Coding Agent(包括 Claude Code、Cursor 等)在辅助开发上展现了强大的能力,但它们绝不是解决所有问题的银弹。
就拿昨天 Claude Code 帮我设计和实现 BlockETF 来说,我明显感受到它在某些地方存在过度设计的问题——把本来可以很简单的逻辑搞得复杂冗长。同时,生成的代码也经常出现冗余或重复,有些关键逻辑处理得不够周全,甚至引入了潜在的 bug。
这些问题,往往只有有一定经验的开发者才能识别。对于技术经验尚浅的人,或者对代码结构不敏感的非技术人员来说,很难发现其中的设计隐患。
举个例子:如果我想做一套餐桌椅,直接对 Coding Agent 说:“帮我做出一套餐桌椅”,它并不会一次性生成一套完全符合我预期的、可用的成品。
相反,真正设计和制作一套餐桌椅,涉及一系列具体问题:餐桌要多大?什么材质?风格要现代还是复古?椅子靠背要多高?承重多少?要不要靠垫?……每一个细节都需要逐步拆解、明确、沟通,然后再逐一实现。
Coding Agent 也是一样。它擅长帮我完成具体的“零件”任务,比如写一个函数、搭建一个结构,但它无法凭一句话就理解我对整个产品的全面需求。作为开发者,我仍然要承担“设计师”和“项目经理”的角色,引导它一步步完成,校正每一个阶段的输出。
说得直白点,Coding Agent 更像是一个能干的初中级程序员。在真正“让它上手干活”之前,最重要的仍然是我自己先梳理清楚:业务需求是什么、核心逻辑怎么组织、架构应该如何设计……否则一旦让它主导节奏,很容易做着做着越做越乱、频繁返工。
昨天就是这样的经历:一开始我顺着它的思路一步步实现,最后却发现逻辑越来越绕,代码越来越复杂。最终我还是回到了我课程中原本的设计思路,删掉多余部分,重新梳理架构,才让整个项目回到可控范围内。
所以我更愿意把 Coding Agent 当作一个“放大我已有设计的工具”,而不是替我做设计的那个人。