Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >我用AI+DDD开了一个包子铺

我用AI+DDD开了一个包子铺

作者头像
Louis XIV
发布于 2025-04-20 15:45:26
发布于 2025-04-20 15:45:26
963
举报
文章被收录于专栏:支付进阶之路支付进阶之路

大家好呀,我是Louis,好久不见。

最近真的很忙,公众号断更了好久。我一直在攒一个大招,就是我的AI+DDD包子铺项目,忙活两个月总算有些眉目了。

今年年初DeepSeek横空出世,IT圈里突然开启了AI编程热潮,公司内也是自上而下让大家伙赶紧用上AI。我悄摸观察了一下,好几个项目都用上了AI。但怎么说呢,我觉得大部分人没有真正用好AI。 它写代码是很快,原来要3天干完的活,现在只要1天就写完了,然后再用额外的3天去看懂AI写了啥,再帮它修正。

我就觉得不!太!对!劲! 这不是AI的正确打开方式,于是乎我自己就干了一个小项目,来验证一下AI的能力。不干不知道,其实AI真的超出我的预期。但真要用好AI,还是得有一些技巧和方法论,碰巧我之前做过几年DDD,跟AI结合在一起,还产生了意想不到的火花

今天就把这几个月对AI+DDD的尝试给大家总结分享一下。

首先为什么是包子铺,而不是别的

  1. 这是个完整的业务项目,不大也不小,用来验证刚刚好(怎么还押上韵了)
  2. 这是贴近生活的例子,大家都好理解。可以认为包子铺就是个小型交易系统,有注册、登录、交易、积分管理、库存管理等功能
  3. 这不是公司的项目,就不涉及机密,方便我与大家做交流

AI编程效果咋样

先说结论:在写代码上,能帮我做80%的工作。基本上每个功能都只需微调甚至不调就可以直接用。编程效率有质的飞跃。

我把在写代码上省下来的时间用到了做更细致的系统设计和单元测试,也就是说在AI的帮助下,我可以更加专注于去做分析、设计和验证,coding是个琐碎的环节交给了AI。这已经很大程度上超出我的预期了。

此外,AI在写单元测试上也能发挥作用,这部分还在进一步探索。待后续有进展再与大家分享。

有没有源码

这个项目截止目前代码行数总共7800+行(含注释),还未全部完成,预计全部完成时总代码量在1.2w行左右。

包子铺代码行数统计
包子铺代码行数统计

包子铺代码行数统计

包子铺代码
包子铺代码

包子铺代码

不只代码,我还把完整的项目过程记录下来了。

包子铺部分文档
包子铺部分文档

包子铺部分文档

我预计5月份这个包子铺系统就可以上线运行。到时再发出来给大家看看实际效果。

用AI编程的挑战点在哪

如前面所说,很多人在用AI,但用好的人不多。

从0到1的小游戏或者小工具之类的都不难,让AI写一个贪吃蛇小游戏,不到2分钟就写完了,还能跑起来玩一下。

但问题在于:怎样让AI写出准确符合预期可维护业务代码

我们的业务代码,不像贪吃蛇小游戏那样,写出来图个乐就完了,业务代码是要长期维护的,可维护性特别重要。

当前AI的“记忆力”(也就是上下文长度)是比较有限的,特别是在大型项目中,今天写过的代码,它明天就“忘”了。怎样让它记住所有的业务规则?怎样让它符合我的设计预期?怎样让它保持统一的编码风格和架构风格?

此外稍微有一些制约了AI编程的因素是:太贵了,大模型本来就不便宜(DeepSeek私有化部署也是要钱),AI编程工具如cursor还在大模型上套了一层,虽然方便但也更贵了。我简单算了一下,自己完成整个包子铺项目大约在AI工具上需要花费600美元,对于这样一个小项目来说显然无法接受,于是我不断优化和AI的协作机制,成功把费用降到了50美元。

因此,怎样节省算力,把AI编程能力用到刀刃上,也需要纳入考虑。

接下来讲讲我是怎么做的。

我的AI编程最佳实践

我在这个项目上前后投入了两个多月,都是用工作以外的业余时间完成,因此可投入时间比较有限,周期拉的很长。

为了能让AI理解我的意图,我花了巨大的精力进行需求分析和设计,时间大约占50%以上,又用了30%时间调教AI,教会它我想要一个什么样风格的架构和代码,真正用于编码的时间就很少了,只占20%,基本都是在微调。接下来我把代码写完后,还考虑教一下AI帮我写单元测试。

AI与人的关系

先聊一聊AI与人的关系,好多人在讨论说AI会不会代替程序员?程序员与AI是一种怎样的协作关系?我的看法是:

  • AI会替代人,会替代那些不懂得做系统设计的人。如果现在让我来组建一个团队,我会尽量选择设计能力强的人,coding能力已经不那么重要了,我验证了这部分工作确实可以被替代
  • 我与AI的关系?我把AI当做一个编程能力很强的实习生,但它完全不懂业务,也不懂怎样的代码叫好代码,更不懂什么是可维护性。我要做的是把它不懂的东西通过输入规则不断训练它,让它更听我的话,按我的指令来coding
  • 错误的关系:把AI当成什么都懂的专家。例如你只输入一个5000多字的需求文档,其他啥也不干,指望着让AI自动运行两个小时,就写出一个能用的支付系统,在现阶段是完全不可能的。

很多人犯的错误就是把AI当成专家,把自己当成小白,企图通过简单的自然语言对话与AI沟通,把大多数的思考和自由发挥空间给了AI,这样即便没什么编程基础,或许短期内能做一些意想不到的创意。但是代码的可维护性成了灾难,第一个版本交付以后,再就难以迭代升级。

另一种错误就是:自己先写出一个范例,然后告诉AI,其他的功能就照着这个模式抄。这种模式的问题在于:范例代码的质量高度,决定了AI编程的质量高度。如果恰好这个范例写得不够好,后面AI抄出来的代码也都是一个水平,万一有bug就更糟,要错就全错。其次,这种模式会带来很大的代码重复率,重复率上来了,可维护性就下降了。

让AI写好代码的四大要素

经过我两个多月的摸索,下面四个要素缺一不可

1. 大模型及其衍生工具

AI编程首要的当然是AI大模型,基本上需要了解每一个模型(或衍生工具)的特性和能力。

我自己尝试了Claude、GPT-4o、Deepseek等几个主流大模型,开发工具上有Windsurf、Cursor、Trae、Copilot。

我个人感觉,在编程能力上最强的模型还是Claude-3.7-sonnet,主要在跨文件上下文理解上比较出色。

开发工具Windsurf、Cursor平分秋色,就是贵。

Trae是免费的,但国内版只能用Deepseek,国际版可以用Claude模型但需要排队,一个指令排队长度在100-700不等,最长时间要等待2小时。

从效率上来说,我更愿意选择Windsurf、Cursor,在局部代码补全使用Copilot做为补充。

为了更省钱,我的接口定义、领域模型、数据模型、关键的一些通用值对象就用手写代码+Copilot补全,Copilot的局部补全能力还是挺强的,这部分也能省下不少时间。我更多会把涉及“业务逻辑”的部分交给Windsurf、Cursor。

2. 全局提示词

有一套完善的全局提示词,是让AI编码成功的关键。每个项目都需要根据自身的特性,形成一套完整的全局提示词(或更准确说是编程约束规则),这套提示词大约在3k-6k字左右,做为全局规则输入给大模型,让其“听命于我”(Windsurf、Cursor都支持输入这样的全局规则)

提示词里应该包含哪些东西?包括但不限于

  • 项目概述、技术栈等
  • 项目工程结构
  • 统一语言-最好有词汇表
  • 必要的领域知识
  • 模块划分
  • 代码规范要求

这里不应包括:xxx代码样例,请照着这个写!也不应包括过于具体的业务规则描述,这是详细设计要做的事情,不要放在全局提示词里。

这个全局的提示词最好单独一个文件,放在工程里面,在多人协同开发的时候,可以尽量让每个人生成的代码风格保持一致。

我的包子铺系统就有一套几千字的提示词模板,篇幅原因暂不做展示。但我可能在04.23会有一场直播,届时可以简单演示一下AI编程的实战。可以关注下周的直播公告。

3. 系统设计、架构设计方法论

如果说功能的正确性可以通过不断增加新的测试用例来保证,那代码的可维护性和架构合理性通过加什么来保证?增加code review的次数?

AI的编程风格,很大程度上就来自用它的人。程序员自己写的代码都不保证可维护性(不然那么多屎山代码是怎么来的?),通过code review就能识别AI的代码质量问题吗?

如我前面所说,将来程序员的工作,将会越来越多的从coding转向designing。而designing的结果将直接影响AI编程的质量、风格、可维护性,因此需要有一套良好的设计方法论来支撑,并且相较于传统的人工编程需要code review,AI编程则更多需要design review来保障设计质量

我在实践过程中,发现DDD(领域驱动设计)其实提供了一套非常好的,系统的设计思路。我认为DDD最大的作用,就是让设计有迹可循。以前程序员专注于写代码,有一部分人就做出了编程规范。DDD就是要解决设计这个阶段的规范问题。特别在与AI结合以后,更能发挥其巨大价值。以往被大家所诟病的,DDD层数好多、代码很啰嗦的问题,在引入AI编程以后都不存在了。

当然,DDD不是唯一的选项,特别是对于那些已经习惯了面向过程思维的程序员,要转变思维方式是比较困难的。只要能找到一套与DDD对等的设计理论,也可以同样用于AI编程。

而我只不过在DDD这个关卡已经跑通了,我将会在下一期文章做重点分享,聊一下DDD在包子铺项目中的实战应用

4. 开发框架

这里所说的开发框架,不是指Spring这样的框架,也不是RPC之类的技术框架。而是一个与DDD配套的业务代码框架。

这个框架应包含什么?

  • 一个工程脚手架
  • 统一的异常处理机制
  • 统一的领域事件定义(事件的实现可以不包含在内)
  • 统一的Repository规范
  • 统一的请求、响应格式
  • 一些常用的组件定义:缓存、鉴权、ID生成器、定时任务等(更多也是指定义规范,不一定要包含实现)
  • 框架应尽可能提供扩展能力,便于替换不同实现或进行增强

可以看到这个框架的作用是最大程度保证代码的全局风格统一、分层架构统一、组件接口统一,特别是在大型团队中,如果缺少这样一种框架约束,会导致AI生成代码时没有落脚点,容易自由发挥,导致维护成本剧增。

举一个例子,领域事件的定义,我设计了一套通用的接口,并且默认提供了一个基于DB的实现。包子铺系统在接入过程中,使用的是这一套标准接口,如果将来基于DB的实现不满足需求,可以自行替换成其他的实现(例如基于MQ)。业务代码始终感知到的是这一套接口定义,对于AI生成代码来说,也只需使用这一套接口,这样能做到最大程度的业务和技术代码解耦。

领域事件定义
领域事件定义

领域事件定义

这个框架我正在开发中,且用在了包子铺项目中,命名为Sugar。我会在包子铺项目正式完结后,把这个框架开源。

框架的开发和业务代码开发模式又不同,需要考虑更多易用性、可扩展性,我在设计框架时使用到很多设计模式和代码抽象,这部分AI还无法很好胜任,因此框架代码更多是我自己手写。后续我会专门用一期分享一下开发框架过程中用到的设计模式

完整的AI+DDD研发生命周期

随便总结了一些,就写了这么多,这一期先写到这吧。下一期我专门分享一下AI+DDD编程实战、提示词编写技巧、怎样把设计图转化为代码。感兴趣欢迎订阅我的公众号

关于包子铺源码和文档

在AI编程时代,AI的上限取决于程序员自身的上限,我在包子铺项目中编写了一套可以提升上限的“武功秘籍”。

这一套“秘籍”含金量太高了,我留了一点小私心,实在没舍得全部免费公开。如果对这一套“秘籍”感兴趣的同学,可以通过下面的链接购买,今天我准备了50份限时折扣优惠,只限今天!

但是做包子铺项目的初衷,是想跟大家能更好交流一下编程实践。我依然不会偏离初衷,我会把实践中的一些成果逐步拿出来分享,这篇文章就是成果的一部分。我也会选择一个合适的时机把包子铺代码开源,但不是现在,几个月的辛苦虽然有了阶段性进展,但还不够完美,仍需打磨。感谢大家的理解和支持~~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 支付进阶之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
3 条评论
热度
最新
git代码库的地址有吗
git代码库的地址有吗
22点赞举报
目前只开放给学习群的成员,后面我会在合适时机开源
目前只开放给学习群的成员,后面我会在合适时机开源
回复回复点赞举报
怎么进学习群
怎么进学习群
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
AI 写代码总是翻车?Upstash 创始人怒推 Context7:给 LLM 喂上最新鲜的官方文档。
Upstash 联合创始人 Enes Akar 亲自下场安利自家新工具 Context7。
AI进修生
2025/04/27
5200
AI 写代码总是翻车?Upstash 创始人怒推 Context7:给 LLM 喂上最新鲜的官方文档。
为什么说用例设计在软件开发中很重要
用例(Use Case)设计可以说是软件设计的基本功,我现在还记得上大学刚学UML的时候,老师第一个教的图就是用例图,后面其他的图几乎都是在围绕用例而展开。但为什么在工作中看到画用例图的反而少了?我与很多程序员交流,可能有这些原因:
Louis XIV
2024/12/30
1250
为什么说用例设计在软件开发中很重要
氛围式编程什么鬼!?
Vibe Coding(氛围式编程)是一种革命性的软件开发方法,由AI专家Andrej Karpathy在2025年初提出并推广。这种方法让开发者利用大型语言模型(LLMs)通过自然语言描述来生成代码,从而改变了程序员的角色——从手动编写代码转变为引导和优化AI生成的解决方案。
腾讯云开发者
2025/04/23
2050
氛围式编程什么鬼!?
DDD应用服务、领域服务傻傻分不清楚?看这篇就够了
很多小伙伴在实践DDD的过程中,一直分不清应用服务 Application Service(后面简称App)和领域服务 Domain Service(后面简称Domain)。最近在和几个同学在业余时间做一个小帅包子铺项目,同样遇到这些问题:
Louis XIV
2025/03/27
1400
DDD应用服务、领域服务傻傻分不清楚?看这篇就够了
AI编程初体验 | 我用Windsurf零代码开发一个网页对话和图像理解插件
Cursor爆火之后,唯一能与Cursor匹敌的AI编程工具----新晋AI编程工具Windsurf,它来了!
AIGC新知
2024/12/20
2.3K0
AI编程初体验 | 我用Windsurf零代码开发一个网页对话和图像理解插件
GitHub好项目推荐:收集了包括Cursor、Manus、Devin、Windsurf等在内的AI编程工具系统提示词库
在当今人工智能和编程工具的快速发展中,了解和掌握各类AI工具的系统提示词对开发者至关重要。GitHub上一个优秀的开源项目,收集了多个流行的AI编程工具的系统提示词,涵盖了从Cursor、Manus、Devin、Windsurf等多个工具的提示词库,提供了超过6500行的详细数据。这个项目不仅可以帮助开发者深入理解不同AI工具的设计理念,还可以为AI工具的实际应用提供宝贵参考,提升开发效率。
猫头虎
2025/04/28
450
GitHub好项目推荐:收集了包括Cursor、Manus、Devin、Windsurf等在内的AI编程工具系统提示词库
Windsurf使用技巧分享
最近使用了差不多半个月的Windsurf,使用下来的感觉就是这玩意血强,不比cursor差。之前体验过免费的cursor,但completion的次数很快就用完了,体验的确很好,但20美刀的价格的确需要仔细考虑考虑,后来就开始体验Windsurf,只有cursor一半的价格(不知道啥时候会变成15),但也依然保持着优秀的体验,因此今天我就写几点关于我使用Windsurf的一些心得。
叶子的技术碎碎念
2025/04/08
1770
Windsurf使用技巧分享
我们团队是如何落地DDD的(1)
DDD领域驱动设计,起源于2004年著名建模专家Eric Evans发表的他最具影响力的著名书籍:Domain-Driven Design –Tackling Complexity in the Heart of Software(中文译名:领域驱动设计,之后进行了很多迭代和演化,不过大多没有脱离这本书讨论的范围。因为Eric Evans在该书中只是提供了一套原始理论,并没有提供一套方法论,更别说可落地。所以十几年,对于DDD争论不休,毁誉参半,喜欢的人觉得他解决了软件设计的复杂性,不喜欢的人觉得他使得代码设计更加复杂了。
方丈的寺院
2019/08/05
6270
Windsurf:这款全新免费的 AI IDE 击败了Cursor 吗?超强上下文感知 、AI代理和工作流支持
今天介绍一款最新的,他叫 Windsurf,主要介绍它与Cursor不同的点,并用Bolt + Windsurf构建一个现代事件管理应用程序。
AI进修生
2024/12/02
3.7K0
Windsurf:这款全新免费的 AI IDE 击败了Cursor 吗?超强上下文感知 、AI代理和工作流支持
AI 编码新王炸!Augment (SWE-bench 冠军)免费登场,专治复杂大项目,硬刚 Cursor?
提供 200K 上下文 token、持久化内存和深度工具集成,可在 VS Code 和 JetBrains、Vim中使用。
AI进修生
2025/04/09
1.5K0
AI 编码新王炸!Augment (SWE-bench 冠军)免费登场,专治复杂大项目,硬刚 Cursor?
当谈论DDD到底在谈论什么
DDD在业务讨论、编程和设计之间建立了紧密的联系,使得业务需求能够准确地转化为软件设计和实现,从而提高软件的质量和业务价值。
codetrend
2024/09/13
910
AutoDev Composer:您身边的 Intellij 平台 Cursor、WinSurf 平替方案(预览版)
在半个多月前,DeepSeek V3 发布之后,我们为 Shire 引入了多文件编辑的能力。在我们多次测试之后,我们发现 DeepSeek V3 在编程场景下的表现非常出色, 尤其是在多文件编辑场景下。
Phodal
2025/01/20
2940
AutoDev Composer:您身边的 Intellij 平台 Cursor、WinSurf 平替方案(预览版)
一线落地 AI 辅助研发的实践心得:从工程、工具到未来展望
尽管,AI 辅助研发的现状并不是那么乐观,但是我们仍然看到了 AI 辅助研发的巨大潜力。结合这一年的实践中,我想分享自己的心得并吐槽一下国内的 AI 辅助研发工具的不上进。
Phodal
2024/12/30
3230
一线落地 AI 辅助研发的实践心得:从工程、工具到未来展望
AutoDev Next:IDE 即 AI 编程服务,构建多端粪围编程
GitHub:https://github.com/unit-mesh/auto-dev-next
Phodal
2025/04/02
1760
AutoDev Next:IDE 即 AI 编程服务,构建多端粪围编程
Java为什么每一层都要定义接口和Impl?只是为了好看?
大家好我是Louis,有多年一线大厂的架构设计和DDD实战经验。今天来聊一个话题:Java是不是每一层都要定义接口和实现类?
Louis XIV
2025/04/04
670
Java为什么每一层都要定义接口和Impl?只是为了好看?
有了一天涨万星的开源项目 Codex,OpenAI为何仍砸 30 亿美元重金收购 Windsurf ?
据外媒报道,OpenAI 正计划以约 30 亿美元收购 AI 编码助手初创公司 Windsurf(前身为 Codeium),以进一步完善其在全栈编码领域的技术布局。
深度学习与Python
2025/04/19
990
有了一天涨万星的开源项目 Codex,OpenAI为何仍砸 30 亿美元重金收购 Windsurf ?
o3-mini 之后,大的要来了?!我不敢相信我们以前写代码真的会敲出每个字符!
还有完整版o3也快到来了, 此外Grok 3和Gemini 2.0 Pro等模型也在发布时间上线了:
AI进修生
2025/02/03
1600
o3-mini 之后,大的要来了?!我不敢相信我们以前写代码真的会敲出每个字符!
基于DDD的前端项目架构设计与实战
注意:本文极长,超过17000字,可能需要花30分钟以上才能阅读完,且内容要点密集,可能需要在读后花费比较多的精力和时间深入理解。
否子戈
2023/03/08
1.6K0
基于DDD的前端项目架构设计与实战
DDD应对复杂
Eric Evans所著副标题--Tackling Complexity in the Heart of Software,对于简单系统其实没有必要使用DDD,只有在复杂系统中,才能体现DDD的价值
码农戏码
2021/03/23
5090
一文讲透大模型应用开发:新时代技术核心竞争力人人都能掌握!
最近几年,大模型在技术领域的火热程度属于一骑绝尘遥遥领先,它已经深刻地影响了“编程”领域,且正在各个领域迅速渗透。与此同时,普通开发者也变得非常地焦虑,因为实实在在感受到了它强大的威力,担心哪天自己就被取代。与其担忧,我们不如主动拥抱这种技术变革。
腾讯云开发者
2025/03/04
8010
一文讲透大模型应用开发:新时代技术核心竞争力人人都能掌握!
推荐阅读
AI 写代码总是翻车?Upstash 创始人怒推 Context7:给 LLM 喂上最新鲜的官方文档。
5200
为什么说用例设计在软件开发中很重要
1250
氛围式编程什么鬼!?
2050
DDD应用服务、领域服务傻傻分不清楚?看这篇就够了
1400
AI编程初体验 | 我用Windsurf零代码开发一个网页对话和图像理解插件
2.3K0
GitHub好项目推荐:收集了包括Cursor、Manus、Devin、Windsurf等在内的AI编程工具系统提示词库
450
Windsurf使用技巧分享
1770
我们团队是如何落地DDD的(1)
6270
Windsurf:这款全新免费的 AI IDE 击败了Cursor 吗?超强上下文感知 、AI代理和工作流支持
3.7K0
AI 编码新王炸!Augment (SWE-bench 冠军)免费登场,专治复杂大项目,硬刚 Cursor?
1.5K0
当谈论DDD到底在谈论什么
910
AutoDev Composer:您身边的 Intellij 平台 Cursor、WinSurf 平替方案(预览版)
2940
一线落地 AI 辅助研发的实践心得:从工程、工具到未来展望
3230
AutoDev Next:IDE 即 AI 编程服务,构建多端粪围编程
1760
Java为什么每一层都要定义接口和Impl?只是为了好看?
670
有了一天涨万星的开源项目 Codex,OpenAI为何仍砸 30 亿美元重金收购 Windsurf ?
990
o3-mini 之后,大的要来了?!我不敢相信我们以前写代码真的会敲出每个字符!
1600
基于DDD的前端项目架构设计与实战
1.6K0
DDD应对复杂
5090
一文讲透大模型应用开发:新时代技术核心竞争力人人都能掌握!
8010
相关推荐
AI 写代码总是翻车?Upstash 创始人怒推 Context7:给 LLM 喂上最新鲜的官方文档。
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档