Claude Code实践:从零开始,一行代码不写生成一个项目

通过前面的两篇文章:《国内环境下的Claude Code安装与使用教程》和《使用Claude Code最需要做的一件事:与AI签订一份契约(CLAUDE.md)》,我们学习和实践了Claude Code的安装以及基础的CLAUDE.md配置文件体系。

这篇文章,我们通过一个简单的案例,从零开始,利用Claude Code来生成一个基础项目,在此过程中,分享一些实践过程中的最佳实践。

案例简介

这个实践项目的基本预期是通过Claude Code来搭建一个基于SpringBoot的基础框架,后续可以基础基于这个基础框架来完成一些功能的开发。

在开始之前已经在Github上创建了一个空的项目,然后把项目目录拉到本地,也就是说有了一个基本的Git空项目(目录)。

Claude Code对Git有原生的支持,在实践的过程中,Git基本上是必备的,为什么呢?因为模型基本上无法一次性生成所预期的结果,也因为Claude Code可以利用Git进行非常棒的版本管理。

这就涉及到使用时的一项经验:在使用Claude Code时最好引入版本管理,这样当你聊上三四轮之后,发现AI输出的结果与预期相差甚远,那么此时最好的策略不是在已有的错误代码上继续修改,而是通过Git回滚到之前的版本,清除上下文,重新来过。同时,如果你觉得生成的结果符合预期时,就提交一个版本

通过这种形式,不断的迭代向前。

具体实践及经验

下面开始演示一下项目生成的基本流程,会将一些基础的操作经验分不同的步骤进行讲解,这些经验会融合在具体的操作过程中。

先与Claude Code聊一聊

在开始之前,如果你对项目的框架或技术栈不是那么清楚,你可以先和Claude Code聊一聊你的想法/问题。比如,像我,已经三年多没写Java代码了,有些框架记忆已经变得模糊了,此时就可以与Claude Code聊一聊。

询问Claude Code一些最新框架信息:

复制代码
通常在前后端不分离的项目当中,当采用Springboot框架时,前端推荐使用什么框架比较合适

Claude Code的回复如下:

询问框架只是其中的一部分,后续又询问了数据库连接框架等。这也是利用Claude Code编程区别于传统编程的习惯之一,没事多聊聊,让AI来帮你完善。

在Claude Code执行任务的过程中,还可以用/btw命令与Claude Code进行沟通和交流一些相关技术实现。

让Claude Code采访自己

在使用Claude Code时一个基本的经验就是需求描述的越详细,生成的结果越符合预期,当描述的越模糊,得到的结果的偏差会越大。如果你本身没想清楚,或者担心漏掉一些内容,此时,可以让Claude Code来"采访"你,从而完善整个项目和架构。

关于"采访",已经有很多开源的Skills,来帮你在做事之前进行一场"脑暴"。

这里一个提示词(与AI聊天的内容都可称作Prompt,即提示词)示例:

复制代码
❯ 我需要创建一个基础的Java项目,项目采用Spring Boot + Mybatis Plus + Thymeleaf,数据库用MySQL,项目的目录结构及分层遵循基础的SpringBoot项目规范和MVC架构,优先采用注解,现在请采访我,补充完善这个基础的脚手架项目。

这里简单说明了自己的需求,然后让Claude Code基于我的需求来采访自己,通过一轮轮的对话来完善初期的需求。

这里最好先安装类似的Skill插件,在笔者的Claude Code中安装了brainstorming插件,在使用上述Prompt时会触发这个Skill。

Claude Code会先询问基础功能:

后续会采访一些基础框架与规范的需求:

在与Claude Code沟通的过程中,大概有十多项的采访,这里就不再逐一展开。在与AI沟通时,可以使用提供的序号直接选择,也可以与它沟通进行优化和完善。

这条经验非常实用,强烈建议实用:先不要着急开始写代码,先与AI聊一聊你的需求,让AI帮你完善你的需求,越详细越好,然后再去执行

适时持久化结果

在反复沟通完成之后,Claude Code最终会提供一个方案,此时我们要做的不是直接按照方案进行生成,而是让Claude Code将方案存储到本地。

这里就涉及到Claude Code上下文使用的经验:Claude Code上下文空间有限,当内容过多,做的事情过多时,AI的幻觉就会被放大,生成的结果准确性会降低。随着聊天的内容的增加,前面的内容会被压缩或抛弃,会产生信息的损失。

此时最好的方案,特别是针对项目整体架构的,最好持久化到文档中,后续任何时候都可以基于文档而不是上下文来开始工作。

如果感觉方案没什么问题,那么先让它存储一份:

复制代码
没有问题,先把设计方案写到当前目录下以便后续参考

Claude Code的执行:

当有这个文档之后,我们就可以清除当前的会话,或者压缩当前的会话。

按照规划执行

上面通过沟通,将设计文档保存在目录下,当然你也可以直接手动创建文档,并且在里面描述自己的需求。然后就让Claude Code根据文档中的要求来规划和生成项目。

这里,Claude Code会再次询问确认一些事项。

Claude Code会先创建一个实现计划:

后续就是一些列的执行,这里选择推荐的Subagent-Driven模式,每个任务派遣一个新的子代理,任务间进行审查,快速迭代。

Claude Code会按照执行计划,一项一项的去执行和Checked。

在执行的过程中,Claude Code会自己构建不同的feat,来commit不同的功能单元,以及备注commit的信息。

经过以上步骤,Claude Code已经完成了,代码的创建,下面可以执行一下程序进行验证了。

启动验证

在启动项目之前,先在本地启动一个数据库服务,创建对应的数据库,按照使用说明执行初始化脚本。如果修改了数据库密码等信息,则在application-dev.yml中进行修改即可。

然后可以选择在命令行窗口中,在项目的根目录下执行如下命令:

arduino 复制代码
mvn spring-boot:run

这是mvn启动SpringBoot项目的命令,本机需要前置安装Maven管理,随后Maven便会下载依赖,启动程序。

当然,此时Claude Code生成的代码可能会有问题,所以一般情况,我们直接让Claude Code来执行启动操作,方便它进行修复。

果然有错误,不过放心,Claude Code会自行进行修复。在此过程中还有其他问题,但我们不用太关注,Claude Code自己会进行处理,直到把项目启动起来。

访问结果

成功页面会展示如何访问,我们分别访问一下首页和Druid管理页面。

成功访问,说明项目开发完成并且能够正常启动。

通过IDE打开项目简单看一下,是不是与我们自己手动编写的代码一模一样:

上述代码中唯一缺失的就是注释部分了,这个后续我们可以在CLAUDE.md中进行约束,关于CLAUDE.md的使用可参考前面的文章《使用Claude Code最需要做的一件事:与AI签订一份契约(CLAUDE.md)》。

再看一下Claude Code对版本的自我管理:

看到这个版本的管理,是不是比大多数开发人员写的都规范?这也正是前面所说的为什么要先创建一个Git管理的项目的原因之一。

最后,我们来让Claude Code把代码提交到远程仓库:

至此,一个完全由Claude Code操作完成的项目就完成了,此时可以清除一下缓存或新开一个会话(减少无关上下文)继续进行新功能的开发了。

后续我们可以在此基础上进行进一步的改造和升级,以及在这个过程中分享更多的经验,欢迎持续关注。

小结

这篇文章是在前面Claude Code安装和CLAUDE.md配置文章之后的一篇具体实践,用时大概用了不到一个小时。

整个过程演示了如何与Claude Code聊基础技术知识、如何与Claude Code聊天让它"采访"自己来生成规划、规划的保存,以便后续Claude Code了解整体情况和执行、让Claude Code按照规划执行、以及执行之后的启动验证。

在这个演示的过程中也分享了一些最佳实践的小经验。后续,我们将继续讲解一些Claude Code相关的实战小技巧,看看我们是否能够一边学习技巧,一边完成一个有预期功能的项目。

相关推荐
uccs3 小时前
流式响应的三次进化:EventSource → ReadableStream → TransformStream
openai·ai编程·claude
洛卡卡了10 小时前
我们在用 AI 写代码时,为什么建议要好好维护 AGENTS.md 呢?
面试·agent·claude
ZzT15 小时前
让 AI 少写一半代码:拆解爆火的 ponytail
ai编程·claude
我不是外星人16 小时前
我把 Claude Code 搬到网页!自研高颜值 Web 交互工作台
前端·ai编程·claude
counterxing2 天前
最近发现一个 Mac 工具,有点像把 Raycast、语音输入法、截图和录屏塞到了一起
macos·ai编程·claude
码哥字节3 天前
为什么 Claude Code 读你的代码库,光靠 embedding 根本不够?
claude·代码规范
用户223586218203 天前
Loop Engineering:从 Prompt 到 Loop
claude
爱吃的小肥羊3 天前
Claude Fable 5 最新动态:灰度回归,GPT-5.6 分阶段发布跟进
aigc·ai编程·claude