【AI-Coding】聊聊AI--软件架构探索体验
写在开始:
①本文仅仅用作个人记录学习使用,如何涉及版权等其他问题,辛苦及时联系小编修改或者下架,全文2600字左右,阅读时间预计13min;
② AI-Coding日常工作中AI方向的部分体验;
WHAT
第一问:软件架构是啥?
“程序或计算机系统的软件架构,指的就是系统的结构,该结构由软件组件、外部可见的组件属性,以及它们之间的关系而构成”
软件工程中的架构工作,指的是把系统分解或划分为一系列部件,使我们能够对每个部件都进行模块式的、迭代式的、渐进式的和独立式的开发。
第二问:常见的架构举例?
- DDD分层架构:分层思想=越核心的领域模型,领域服务,应用服务,和最外层用户界面和基础设施
- 六边形架构 : 如下图示,最核心业务逻辑(领域模型和应用程序)和外部资源(比如APP/Web应用)隔离
- 整洁架构:DDD分层架构包含用户接口层、应用层、领域层和基础层
第三问:AI带来了啥变化?
- 角色变化: 程序员RD逐步从编码往决策去转型;
- 系统能力变化: AI开始承担部分系统功能,能够帮助用户理解 解释和设计开发代码;未来可以通过提问,生成优质代码;
WHY
为什么AI背景有可能衍生出新软件架构呢?
LLM的知识量、准确度在快速提升,前沿的研究都在往更少人工参与的方向上进行。行业内的各类AI工具,也都在朝着这个方向进行快速奔跑:
① AI Coding在朝着全自动化方向前行
② AI 前沿研究在朝着真正低代码的方式发展
当下火热的AI Agent以AI全方面代理的目标发展:
阶段一:纯硬编码,Code控制输出、编排能力、提供基础能力
阶段二:LLM Call介入输出,Code编排能力、提供基础能力
阶段三:LLM Call介入更复杂的输出,Code编排能力、提供基础能力
阶段四:LLM Call介入输出、自己决策逻辑的编排,Code提供基础能力,开始步入真正的低代码时代
阶段五:LLM Call介入输出、有更强的决策编排能力,Code提供基础能力
阶段六:LLM Call介入输出、编排能力、提供基础能力,开始步入真正的“零代码”时代
为什么要去探索更适应AI时代的软件架构呢?
AI coding 商业化应用发展迅速,技术越发成熟
eg:
- Copilot :
- Nocode
- GitHub Copilot : https://github.com/features/copilot 集成于主流编辑器的 AI 编码助手,提供代码补全和建议,提升开发效率。
- Cursor : https://www.cursor.so 基于 Visual Studio Code 的 AI 增强型代码编辑器,支持智能代码补全、多文件编辑等功能。
- WindSurf : https://codeium.com/windsurf 形态上同 Cursor,在 Agent 方面以及代码分析方面略有优势
- v0 https://v0.dev 由 Vercel 推出的 AI 驱动工具,专注于快速 UI 原型设计,支持并行代码生成和预览
- Devin : https://devin.ai/ 是Cognition AI推出全球首个AI程序员,掌握全栈技能、自学新技术、构建和部署应用程序、自主查找并修复Bug、训练和微调自己的AI模型等多项能力。
- Bolt.new : https://bolt.new StackBlitz 推出的 AI 驱动全栈开发环境,直接在浏览器中运行和部署全栈应用程序。
https://github.com/stackblitz/bolt.new
HOW
①认知转变:从评论者转变为践行者
尝试AI时,千万不要把自己摆在评论者的角色中
评论者:当把自己局限于评论者角色时,很容易形成一种消极的思维模式。总是看到事物的不足并进行评论,而不是思考如何去改善
践行者:践行者注重实践过程中的学习和改进。他们在行动中会遇到各种实际问题,并且通过解决这些问题来积累经验
②深度参与AI Coding,探索更适用于AI Coding的代码架构
自动完成后端功能诉求 todo
欢迎大家自行尝试:
根据规范生成前端页面 todo
@Codebase 先完成环境搭建; ==
输入一个页面原型图, 会输出前端VUE代码,生成效果基本符合预期;
让AI生成项目Readme文档 todo
- 立角色 : 你是一位优秀架构师,精通系统和业务架构设计,你的工作是梳理项目业务逻辑,并生成详细文档记录;
- 述问题 :
- 定目标
- 输出要求
- 输出样例
- 任务拆分:
③AI Coding 的局限和不足
由于大模型本质上是一个概率模型,因此生成的过程是在限定的上下文中概率最大化的过程,无法确保内容 100% 正确,对于 AI Coding 领域来说,存在以下局限:
a)上下文理解受限,输出不稳定:主流的模型的窗口为 100~200K 左右,包含输入和输出,而输出一般为 8K 左右,效果稳定的窗口大概在 50K 左右,而一次任务需要的上下文往往会超过这个值,当超过一定的窗口之后,可能会发现无论如何对话,都无法达成预期。建议人为拆解任务,让AI一步步执行。如需要AI实现一个从dal层到api层的实现,可以先让AI依次编写mapper、dal、repository、service、api
b)代码幻觉,bug 更为隐蔽:AI 生成的代码质量可能参差不齐,代码中潜在的 bug 可能更加难以发现。
c)技术设计能力受限:由于无法感知复杂业务逻辑,对代码库整体架构缺乏认知,大多数复杂的技术设计环节,还是需要依赖人工拆解。
d)不能读取反编译后的class文件(迭代到目前似乎可以阅读了)
结尾
未来已至,人工智能(AI)在代码编写和架构设计方面展现出无限潜力。
我们既要勇于尝试,不怕失败,每一次尝试都是成长,能帮我们找到适配 AI 时代的架构与方式。
也要积极探索,怀揣无畏之心挖掘新可能,积极参与 AI Coding,深入思考未来架构。
让我们携手拥抱 AI,在这场变革中勇做先行者,为职业发展开创新局面,为行业发展添砖加瓦。你准备好行动了吗?
对于日常融入 AI,快分享你的想法和建议,一同踏上探索之旅!
写在最后 : 码字不易,如果觉得还不错,或者对您有帮助,麻烦动动小手,点赞或关注,谢谢!