资讯动态

动态架构进化:AI如何从零生成完整软件仓库

发布时间:2026/8/27 10:09:08 来源:尧图企业网站定制
我们先把一个关键问题摆到桌面上现在市面上的 AI 代码生成工具已经不少了为什么真正放到公司项目里还是很难做到“一键生成一个能跑的软件”原因很简单代码生成工具大多在“生成代码片段”这个层面打转而工程需要的是一整个“软件仓库”。一个可以交付、可以维护、可以继续迭代的仓库不只是若干 .java 或 .py 文件它还包括目录结构、依赖声明、构建脚本、配置文件、测试用例、README 文档甚至 CI/CD 流水线。这些内容之间的组织关系比单文件本身更难生成也更难验证。这篇文章想聊的正是围绕“从 0 生成完整软件仓库”这个目标出现的一类新思路动态架构进化。它不是简单地让大模型多写几个文件而是让生成系统在迭代中感知仓库状态、调整结构、修正错误最终生成一个真正意义上“完整”的软件仓库。如果你正在做 AI 代码生成工具、Agent 应用开发或者正在思考“大模型应用如何落地到研发流程”这篇文章值得读完。我会先拆解代码生成真正的难点再解释“动态架构进化”解决了什么问题最后给出可以落地的实践路径和常见坑点。1. 这篇文章真正要解决的问题先做三个判断。第一个判断代码生成的瓶颈已经从“生成能力”转移到了“组织能力”。最早大家用大模型写代码关注的是“这个函数能不能写对”“这段 SQL 能不能跑通”。到后来工具开始支持多文件生成、仓库级生成人们发现真正难的不是某个文件的内容而是文件之间的依赖关系、目录划分、配置一致性。就像盖房子单块砖烧得再好没有结构设计堆在一起也只是一堆砖。第二个判断静态生成模式到顶了动态进化是下一站。所谓静态生成就是用户给一段需求模型一次性生成一整个仓库。这种方式的优点是快缺点是错。生成的仓库往往存在依赖版本冲突、配置文件缺失、模块引用错误等问题而且一旦生成完成用户面对一个巨大且陌生的仓库根本不知道从哪里开始修。动态架构进化的思路是反过来的先生成一个最小可运行的骨架然后根据验证反馈、用户修改、需求补充逐步进化出完整结构。它强调的不是“一次到位”而是“持续逼近”。第三个判断这件事不只是写代码工具的事它关系到 AI Agent 在研发流程里能不能真正落地。为什么很多 AI 编程助手只能做“建议代码”而不能做“交付功能”因为它们没有对软件仓库整体状态的感知能力。如果 Agent 不知道当前仓库有哪些模块、哪些依赖、哪些测试它生成的代码很容易“看上去对跑起来错”。动态架构进化的核心就是让 AI 具备这种“仓库级感知”和“结构演进”的能力。这篇文章的读者我建议聚焦在三类人正在做 AI 代码生成工具、想从“单文件生成”升级到“仓库生成”的开发者。在做大模型 Agent 应用尤其是研发辅助类 Agent 的应用开发者。技术团队负责人想判断“AI 生成代码到底能不能用于正式项目”的人。读完这篇文章你会理解为什么仓库生成比代码生成难一个量级动态架构进化是怎么解决这个难题的以及如果你想在自己的项目中引入这种思路第一步应该做什么。2. 基础概念软件仓库、代码生成与动态架构进化在聊深之前先把三个概念讲清楚。2.1 什么是“完整软件仓库”一个“完整软件仓库”不只是代码的集合。从工程视角看它至少包含以下层次层次包含内容典型文件源码层业务代码、接口定义、工具类src/main/java/...依赖层外部库、版本管理pom.xml, package.json, requirements.txt构建层编译、打包、运行脚本build.gradle, Dockerfile, Makefile配置层环境配置、应用配置application.yml, .env.example测试层单元测试、集成测试src/test/..., tests/...文档层说明文档、API 文档README.md, docs/...工程层CI/CD、代码规范、工程约定.github/workflows/ci.yml, .gitignore很多大模型生成工具实际做到的只是“源码层”的一部分。它们生成了核心代码文件却漏了依赖配置或构建脚本。用户拿到手第一步不是写功能而是花大量时间补全缺失的工程文件。这就是“生成完整软件仓库”的第一层痛点。2.2 代码生成工具的演进路径我习惯把 AI 代码生成工具的发展分成三个阶段。第一阶段单文件生成。输入需求输出一个代码文件。典型场景是“帮我写一个冒泡排序”或“给我一段读取 Excel 的 Python 代码”。这个阶段的问题是不关心上下文生成的代码经常和环境不匹配。第二阶段多文件生成。可以生成一个模块或一个小项目的多个文件。典型场景是“帮我创建一个 Spring Boot 项目包含用户模块和订单模块”。这个阶段解决了文件数量问题但文件之间的依赖关系和配置一致性仍然是难点。第三阶段仓库生成与结构进化。输入一个完整需求生成一个结构完整、可运行、可测试的软件仓库并且能在后续迭代中根据反馈调整结构。这个阶段的关键词是“结构”和“进化”而不是“文件数量”。“动态架构进化”就是第三阶段的核心技术思路。2.3 动态架构进化的通俗解释“动态架构进化”这个名字听起来很玄实际上它的核心思想可以用一句话概括不追求一次生成完美结果而是让生成系统在反馈循环中逐步逼近一个完整、可用的仓库结构。理解这个方法可以类比写文章的过程。静态生成模式像一个新手写文章先憋一篇 3000 字的大稿然后发现结构混乱、论据缺失但要推翻重写成本太高。动态进化模式像一个有经验的作者先写提纲再写初稿然后根据编辑反馈调整章节结构补充案例最后润色。每一步都基于当前版本的状态做调整而不是从零开始。放到软件开发场景中动态架构进化的运行逻辑大致是这样的用户提交需求。系统先生成一个最小可运行的仓库骨架包含核心模块和一个基础目录结构。系统对这个骨架做“结构验证”检查依赖、配置、编译是否正常。根据验证结果系统决定下一步是“扩展功能”还是“修复问题”。重复 3 和 4直到仓库满足验收条件。这个循环的本质是让大模型不只是“生成者”还要成为“验证者”和“决策者”。2.4 它和传统代码生成的核心区别传统代码生成更像“一次性翻译”需求到代码的直译。动态架构进化则是一个“多层迭代”过程对比维度传统静态生成动态架构进化生成方式一次生成不可控多轮迭代逐步收敛仓库感知无或弱有结构感知和状态感知错误处理生成后人工修复自动验证并修正扩展方式重新生成或人工添加在现有结构上进化适合场景Demo、原型、小功能相对完整的业务项目这个对比说明了一个关键点动态架构进化不是“更聪明的生成”而是一种不一样的工程思路。它把代码生成从“写文件”变成了“演化和维护一个仓库”。3. 为什么“生成代码”不等于“生成软件仓库”理解了动态架构进化的概念我们还要弄清楚一个更底层的问题为什么“生成代码”不等于“生成软件仓库”只有搞清楚难点才能理解为什么需要新的技术方案。3.1 难点一依赖关系的全局一致性一个仓库中每个文件都不是孤立的。Java 项目里Controller 调用 ServiceService 依赖 Mapper前端项目里组件之间互相引用路由配置关联页面文件。这些依赖关系形成了一张网。大模型一次生成时很容易在某个局部写得很好但整体上 A 文件引用了 B 文件里不存在的方法或者 C 配置里少了 D 依赖。传统代码生成解决这个问题的方法是把所有相关文件一次性生成然后祈祷模型在生成后面的文件时还记得前面的内容。这个方法在上下文窗口足够大的时候有一定效果但一旦仓库文件数量超过几十个全局一致性就很难维持。动态架构进化的思路是先生成骨架然后逐步添加局部功能每次添加都基于当前仓库的真实状态。这相当于把“一次性画完一整幅画”变成了“先画轮廓再一块一块地填充每次填充都对照已经画好的部分”。3.2 难点二工程配置的隐性知识一个能跑的软件仓库除了业务代码还包含大量“隐性工程知识”。比如 Spring Boot 项目需要知道哪个版本的依赖和哪个版本的 JDK 兼容Node.js 项目需要知道 package-lock.json 应该如何生成Python 项目需要知道 requirements.txt 和 setup.py 有什么区别。这些知识很少出现在需求描述里也不像业务代码那样有明确的“正确性”标准但它们决定了仓库能不能构建、能不能运行。大模型如果缺少这些知识生成的仓库往往“看起来完整跑起来报错”。更麻烦的是这类配置知识高度依赖具体技术栈和环境。同一个项目的不同版本配置方式可能完全不同。这意味着生成系统需要在生成过程中不断验证而不是依赖训练数据里可能过时的知识。3.3 难点三仓库的可维护性代码生成得出来还要能维护。一个软件仓库是要长期演化的代码风格、目录规范、模块边界都要为后续迭代留出空间。如果一次生成了一个巨大的、结构混乱的仓库后续开发者很难在上面继续开发。我们看到很多 AI 生成的 demo 项目跑是能跑但代码耦合严重、模块划分不合理、测试覆盖为零只能演示不能迭代。动态架构进化对这个问题的回答是“渐进式构建”仓库从骨架开始逐步长出来先有清晰的模块边界再填充具体功能。这样每一步都是可理解、可审查的而不是一次性抛出一个巨大的黑盒。3.4 难点四验证与反馈的闭环生成代码之后怎么判断它是对的在传统开发中我们通过编译、跑测试、人工 review 来验证代码质量。在 AI 生成场景下这个验证环节同样不能少但它面临的挑战更大生成的仓库不一定有测试用例或者测试用例本身就是模型生成的不靠谱。动态架构进化强调“验证-反馈-修正”的闭环生成一个版本就尝试编译、跑测试、检查结构把结果反馈给生成模型让它在下一步调整中修正问题。这个闭环是动态架构进化和传统生成方式最大的不同。4. 动态架构进化的核心机制与运行流程接下来我们拆解动态架构进化在技术层面的运行机制。这部分的描述是一个通用框架不同团队实现方式会有差异但核心环节基本一致。4.1 整体流程动态架构进化的运行流程可以抽象为五个阶段需求解析阶段把用户的高层需求分解为功能模块、技术栈要求、验收标准。骨架生成阶段生成最小可运行的仓库骨架通常只包含核心模块和基础配置。结构验证阶段对当前仓库进行编译、测试、结构检查收集错误和缺失信息。进化决策阶段根据验证结果决定下一步是扩展功能、修复错误还是调整结构。迭代执行阶段执行决策更新仓库然后回到验证阶段直到满足验收标准。4.2 骨架生成不是“小版本生成”骨架生成是整个流程的关键起点但很多实现容易犯一个错误把骨架理解为“生成一个 Hello World”。实际上这里的骨架应该包含标准目录结构和模块划分基础依赖配置和构建工具约定大于配置的工程规范一个可运行的最小业务闭环比如一个最简接口骨架的价值在于它为后续的进化提供了“结构锚点”。后续每次新增功能、修复问题都是在这个结构上做增量修改而不是推倒重来。4.3 验证机制的三个层次动态架构进化中的验证机制我建议至少分为三个层次静态结构验证检查目录是否规范、文件是否缺失、依赖是否声明。这一步不需要运行程序成本低速度快。构建验证尝试编译或构建项目捕获语法错误、类型错误、依赖冲突。运行验证启动应用调用关键接口检查业务逻辑是否正确。这三个层次对应不同的失败类型静态结构验证抓的是“文件不齐”构建验证抓的是“代码不对”运行验证抓的是“逻辑不对”。在实际系统中三层验证应该形成递进关系先做静态验证通过后再构建构建通过后再运行。4.4 进化决策从验证结果到下一步行动验证结果出来之后系统需要决定下一步做什么。这个决策过程看起来简单实际很复杂。以一家公司的内部实现为例它通常依赖以下信息当前仓库状态哪些模块已完成哪些还没开始。验证反馈编译错误列表、测试失败列表、结构检查报告。用户需求原始需求中还有哪些功能未覆盖。完成度评估当前仓库和验收标准之间还有多大差距。系统根据这些信息决定下一步是“新增一个功能模块”“修复一个编译错误”还是“补充测试用例”。这个过程可以是一次预定义的规则流程也可以交给大模型来做“决策”。4.5 和传统 Agent 工作流的关系如果你做过 Agent 应用开发会发现动态架构进化和 ReAct 模式有相似之处都是“感知-决策-执行”的循环。但有一个关键区别通用 Agent 的“感知”依赖于文本信息而动态架构进化系统的“感知”依赖于真实的工程反馈编译结果、测试报告、依赖检查。这个大前提最重要动态架构进化不是凭空生成而是基于真实反馈驱动结构演化。5. 实践场景动态架构进化如何解决真实开发问题为了让你更直观地理解动态架构进化的价值我用三个真实开发场景来说明。5.1 场景一新项目初始化以前新项目初始化是这样的技术负责人根据团队规范创建一个模板仓库然后开发者手动修改配置、添加依赖、初始化目录结构。这个过程通常需要半天到一天而且不同项目之间很容易出现规范不一致。使用动态架构进化系统后团队可以把项目初始化模板、技术规范、依赖清单都固化到系统中。输入需求后系统自动生成一个符合团队规范、结构完整、可直接运行的基础仓库。开发者的工作重心从“搭架子”转向“写业务”。这种场景下动态架构进化的关键价值在于把“团队规范”变成“可执行规则”让 AI 生成的仓库天然符合工程约定。5.2 场景二遗留系统功能扩展假设一个团队维护着一个老项目需要新增一个“消息通知模块”。传统做法是开发者先理解现有代码结构再按照现有模式编写新模块。动态架构进化系统在这个场景中的工作方式不同它先分析当前仓库的模块划分、代码风格、依赖情况然后在新模块生成时自动对齐这些已有约定。新模块不是孤立生成的而是“长”在现有仓库结构之上。这种场景下的关键价值是减少“风格不匹配”问题。老项目往往没有完善的文档但代码本身包含了大量隐含规范。动态架构进化通过对仓库状态的感知可以让新生成的代码和现有代码保持风格一致。5.3 场景三多模块项目生成一个典型的企业级微服务项目包含用户服务、订单服务、网关、基础公共模块等每个服务都有自己的代码库和部署配置。用传统 AI 代码生成工具很难一次搞定因为不同服务之间的依赖关系太复杂。动态架构进化系统会这样处理先生成统一的父工程结构和公共模块然后逐个生成各个子服务每生成一个服务就验证它和已有模块的依赖关系。最终生成的不是一组相互独立的代码而是一个整体可构建的多模块项目。它的关键价值是解决“依赖先后顺序”问题。在生成一个模块时系统已经知道其他模块的结构和接口可以避免引用错误。6. 在项目中实践动态架构进化的技术路径如果你所在团队想尝试类似思路不一定非要做一个完整的动态架构进化引擎可以先从简化版本开始。下面给出一条可以落地的技术路径。6.1 第一步从静态脚手架生成开始先不要追求自动进化先把“生成完整仓库”这件事做扎实。你可以基于主流脚手架工具如 Spring Initializr、create-vite、create-react-app做二次封装再结合大模型生成业务代码。具体来说流程可以设计为用户输入业务需求和技术栈。系统调用脚手架工具生成基础仓库。大模型根据需求在基础仓库上生成业务代码。对生成结果做自动构建验证。这种做法的好处是脚手架工具保证了仓库结构的规范性大模型只负责生成业务代码降低了两方面的风险。6.2 第二步加入结构验证与反馈闭环当你发现生成的仓库经常出现依赖缺失、配置文件错误这类问题时就应该加入自动验证环节。这一阶段可以用这样一组命令来做基础验证# 前端项目构建验证 npm install npm run build # 后端项目构建验证 mvn compile mvn test验证失败时把错误日志作为反馈信息重新要求大模型修改对应文件。这就是最简版本的“进化循环”生成 - 验证 - 反馈 - 修正。这里的关键设计是错误信息的结构化。不要把整段构建日志丢给模型而是先做错误摘要提取出错文件、错误类型、行号信息再让模型修改。6.3 第三步引入状态管理感知仓库结构当你发现生成的模块之间经常出现引用不一致时就需要引入“仓库状态管理”了。这个模块负责维护一个仓库结构的内部表示记录“哪些文件已生成”“哪些依赖已安装”“哪些接口已定义”。一个简单的实现方式是生成一个仓库元数据文件用 JSON 描述当前仓库的结构{ projectName: user-center, language: java, buildTool: maven, modules: [ { name: user-service, path: modules/user-service, dependencies: [common-core], interfaces: [UserController], status: generated }, { name: order-service, path: modules/order-service, dependencies: [common-core, user-service], interfaces: [OrderController], status: pending } ], configFiles: [ { path: pom.xml, status: verified } ], verification: { lastBuildStatus: success, lastBuildTime: 2025-01-10T10:00:00Z } }有了这个元数据大模型在生成新模块时就能明确知道“当前仓库有什么”“已经定好了哪些接口”而不是靠猜测。6.4 第四步实现进化决策策略最后一步是让系统具备“决策能力”。当验证失败时系统要能判断这个问题应该修改哪个文件应该新增依赖还是修改代码是推进新功能还是先修复存量问题最简单的策略是定义一个决策规则表验证结果决策动作编译失败缺少引用查找缺失引用生成对应类或方法编译失败依赖冲突检查依赖树调整版本测试失败业务逻辑错误定位失败用例修改业务代码构建成功功能未完成继续生成下一个功能模块构建成功功能完成生成测试用例和文档这个规则可以逐步升级为基于大模型的智能决策但初期建议先做规则驱动的确定性流程减少不确定性方便排查问题。6.5 一个最小示例框架为了让你对整体结构有更清晰的感知这里给一个最小示例框架的定义结构伪代码级别实际实现因团队技术栈而异# 文件路径codegen_evolution/framework.py class EvolutionPipeline: def __init__(self, generator, verifier, decision_engine): self.generator generator # 大模型生成器 self.verifier verifier # 验证器 self.decision_engine decision_engine # 决策引擎 self.repo_state None # 仓库状态 def run(self, requirement, max_iterations10): # 1. 生成初始骨架 self.repo_state self.generator.generate_skeleton(requirement) # 2. 迭代进化 for i in range(max_iterations): print(f迭代次数: {i1}) # 3. 验证当前仓库 report self.verifier.verify(self.repo_state) # 4. 检查是否满足验收标准 if report.is_satisfied(requirement.acceptance_criteria): print(验收标准已满足生成结束) return self.repo_state # 5. 根据验证结果生成进化指令 action self.decision_engine.decide( requirementrequirement, repo_stateself.repo_state, verification_reportreport ) # 6. 执行进化动作 self.repo_state self.generator.execute_action( repo_stateself.repo_state, actionaction ) # 7. 超过最大迭代次数返回当前状态 print(达到最大迭代次数) return self.repo_state这个示例展示的是核心循环逻辑生成 - 验证 - 决策 - 执行。实际项目里.generate_skeleton和.execute_action封装对大模型的调用.verify调用构建工具.decide实现决策逻辑。6.6 运行验证以 Python 后端项目为例当你启动这条生成流水线后可以在日志中看到类似这样的迭代记录迭代次数: 1 生成骨架完成包含 8 个文件和基础目录结构 构建验证通过dependencies installed, server started 决策继续生成 user 模块 迭代次数: 2 生成 user 模块包含 5 个新文件 构建验证失败FileNotFoundError: application.yml 决策生成缺失的配置文件并检查模块引用 迭代次数: 3 已补充 application.yml 构建验证通过all tests passed 决策继续生成 order 模块如果构建失败但日志没有给出明确原因优先检查验证器返回的原始日志结构和仓库元数据文件是否更新正确。7. 常见问题与排查清单在实现动态架构进化系统的过程中大概率会遇到以下几类问题。我把它们整理成表格方便对照排查。问题现象可能原因排查方式解决方案迭代多次但仓库没有变化决策引擎没有产生有效动作检查决策引擎的输入状态日志确认仓库状态元数据已正确回传检查决策规则是否覆盖当前场景编译错误反复出现同一位置反馈信息没有被正确传递查看错误摘要和模型输入日志验证错误信息的结构化和定位是否准确生成的依赖版本混乱没有依赖版本管理策略检查仓库元数据中的依赖声明引入统一版本目录或通过脚手架工具锁定版本基线骨架生成成功但业务代码质量低骨架阶段缺少上下文查看骨架生成时的 prompt 设计在骨架生成阶段保留技术栈和工程规范信息验证时间过长每次迭代都执行完整构建检查验证器的超时策略按层级降级验证静态检查优先完整构建仅在静态检查通过后执行仓库结构越来越乱缺少结构约束检查进化动作是否受结构校验在决策引擎中加入结构约束避免随机调整目录这里特别提醒一个容易忽略的问题迭代收敛条件要明确。如果验收标准太模糊比如“生成一个完善的系统”系统很难判断什么时候停止。建议把验收标准拆成可验证的条目例如“所有模块构建通过”“核心接口测试覆盖率超过 80%”“依赖安全检查无高危漏洞”。8. 最佳实践与工程建议基于代码生成工具和 AI Agent 应用开发的实践经验我整理了几条有价值的工程建议。8.1 搭建仓库结构时先固化工程规范动态架构进化系统中最容易失控的环节就是结构规范。建议把工程规范固化到系统里而不是依赖大模型“自觉地”按规范写代码。具体做法包括预置多套项目模板后端微服务模板、前端中后台模板、Python 服务模板等。在验证阶段加入结构检查规则比如“Controller 必须放在 controller 包下”“禁止在 utils 中写业务逻辑”。对仓库元数据做版本管理每次进化都能回溯到上一个可用状态。8.2 验证反馈做到“可读、可定位、可执行”大模型拿到验证反馈后能不能有效修改很大程度上取决于反馈信息的质量。一个低质量的反馈是“构建失败请检查代码”。一个高质量的反馈是“文件 modules/user-service/src/main/java/UserService.java 第 42 行引用了未定义的类 OrderClient。订单服务模块尚未生成建议先生成 OrderClient 接口或者调整 UserService 的依赖。”要做到这种效果需要建立一个反馈信息处理层把原始构建日志、测试报告转换成结构化信息。8.3 限制每次迭代的改动范围一个常见误区是允许大模型在每次迭代中大幅重构现有代码。这会导致仓库在迭代中“漂移”上一次迭代验证通过的功能下一次迭代可能被改坏。建议在决策引擎中设置“最小改动”约束每次迭代只允许处理一个核心问题要么修复一个错误要么新增一个功能模块不要同时做多个维度的改动。这样也方便人工介入审查。8.4 保留人工审查节点动态架构进化可以自动化生成大部分内容但在生产环境中仍然需要在关键节点保留人工审查。推荐在以下节点加入人工确认骨架生成完成后确认模块划分是否符合需求。新增外部依赖时确认版本许可证和安全性。达到验收标准后由开发者在真实环境中做最终验证。8.5 权限与安全边界如果动态架构进化系统要接入代码仓库比如自动提交代码、自动创建分支必须做好权限控制使用最小权限的 Git 凭据系统只能访问被授权的仓库。所有自动化变更在合并前必须生成 pull request不能直接推送主分支。如果系统需要执行构建命令必须在隔离的构建环境中运行避免影响本地开发环境。对模型生成的代码做敏感信息扫描防止生成硬编码密钥、数据库连接串等敏感信息。8.6 从小范围试点开始最后一点建议是不要一开始就追求全自动。可以先从“自动生成骨架 人工补全业务代码”开始跑顺之后再逐步增加自动验证、自动修复、自动决策。每一层自动化都经过足够验证后再扩大范围比一开始就全自动更容易成功。9. 总结与后续学习方向这篇文章从一个核心问题出发为什么代码生成工具无法生成真正可以交付的软件仓库答案不在于生成能力不够而在于缺少对仓库整体结构的感知、验证和进化能力。动态架构进化正是针对这个问题提出的技术思路。我们希望你已经理解了三件事。第一软件仓库比代码文件复杂得多它包含了源码、依赖、构建、配置、测试、文档和工程规范多个层次。第二动态架构进化的核心是让生成系统从一个最小骨架出发通过“验证-决策-执行”的循环逐步逼近一个完整可用的仓库。第三在实践中不需要一步到位可以按“静态脚手架生成 - 结构验证闭环 - 仓库元数据管理 - 智能决策”四条路径逐步实现。下一步建议你先选一个团队里最常见的技术栈设计一个最小可用的骨架模板然后用大模型在这个模板上生成业务代码再逐步加入自动验证和反馈修正。跑通这个最小闭环后就可以思考如何扩展模块管理、如何做依赖智能推荐、如何在多模块项目中做跨模块感知。回到最初的问题AI 代码生成工具到底能不能生成一个真正的软件仓库我的判断是以目前单次生成的能力来看直接生成大型完整仓库还很勉强但如果把思路切换成“动态架构进化”先搭骨架再逐步演进这条路是被验证过、值得继续投入的。这篇博客建议先收藏等你准备搭自己的代码生成流水线时再翻回来对照实现。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价