基于SDD驱动的开发方法AI设计与开发过程中,如何确保AI生成的代码结构化、可控,成为关键难题。...目前业内普遍认识到,仅靠prompt驱动往往结果不可预测,因此逐步转向“设计驱动开发(Specification/SDDDrivenDevelopment,简称SDD)”模式。...“SDD驱动开发”是当前业界最具前瞻性的解决思路。它强调以结构化设计文档为源头,驱动AI实现,而非直接代码生成,让整个开发过程主动可控、可复查。这也是AI工程化的核心趋势之一。...SDD定义SDD(SpecificationDrivenDevelopment,规范驱动开发)是一种以明确规范(Specification/DesignDocument)为基础,驱动AI自动生成设计方案...典型方法流程包括:起草详细的SDD文档;自动校验(linting/validation)规范与已生成代码是否一致;人工与AI共同审阅、迭代设计文档,再输出最终代码。
二、SDD简介:理念与现状2.1SDD的核心理念规范驱动开发(SDD)是一种以结构化功能规范为开发起点的软件工程方法。...我们还要思考,现有SDD工具预设的流程,是否可以优雅适配从修复小bug、到开发大业务等不同规模的任务。三、SCRUM对SDD的启发与警醒Scrum的普及路径为SDD提供了正反两方面的经验。...对SDD而言,还处在敏捷运动早期的“方法论战争”初期,很多SDD方法还在横空出世的路上,而当前已有SDD工具则各有各的方法(如Spec-Kit、Kiro等各有侧重)。...LLM的双向能力(正向生成规范与逆向解析代码)为SDD提供了灵活性,但需避免“瀑布式”规范生成流程,为渐进式规范迭代提供了更丰富的手段。SDD的推动者们不可不察。...(呼应3.2节)4.3分层适配是SDD落地业务场景的关键SDD的初衷是通过结构化规范来驾驭AI,以Spec为中心支持长期演进,但小项目、大项目、维护项目实践特点不同。
今天想和大家聊一聊一个新的驱动开发形式:规范驱动开发(SDD) 我们正处在一个 AI 编程几乎无处不在的时代。写代码、补逻辑、生成模块、重构工程,AI 好像什么都能做。
SDD工具的启发 关于SDD在vibe coding上的应用,已经有一些SDD工具:openSpec,Spec-Kit和Kiro,OpenSpec和Spec-Kit是可嵌入现有AI编码工具的框架/CLI...,而Kiro则是Amazon推出的内置SDD工作流的完整IDE。...kiro[3]则是把SDD集成到IDE中,绑定了ide环境。...所以这些SDD工具的本质都是“先写规范,再写代码”,实际上实现的效果是给vibe coding加上确定性的约束:代码生成是概率的,SDD通过规范约束上下文让它趋向确定性。...SDD驱动模式看起来慢,实际上比反复返工快得多。
要实现这个对齐,SDD(Specification-Driven Development)是一种很切合的方式,本文基于SDD方法论扩展实践总结为一个方法模型,来说明如何实现对齐重构意图。...SDD工具的启发 关于SDD在vibe coding上的应用,已经有一些SDD工具:openSpec,Spec-Kit和Kiro,OpenSpec和Spec-Kit是可嵌入现有AI编码工具的框架/CLI...kiro[3]则是把SDD集成到IDE中,绑定了ide环境。...所以这些SDD工具的本质都是“先写规范,再写代码”,实际上实现的效果是给vibe coding加上确定性的约束:代码生成是概率的,SDD通过规范约束上下文让它趋向确定性。...SDD驱动模式看起来慢,实际上比反复返工快得多。
什么时候用sdd?有很多人用sdd的方法去推进项目,过程很痛苦。也有很多吐槽。比如:走sdd我改个按钮,都要很多的时间,但是我自己手动改几秒钟就好了这种情况下我是这样认为的。...1、有下面几种情况是有必要走sdd创建新的spec的新增功能架构调整接口变更2、在修复问题的时候,如果是改变系统规则的,需要走sdd。...如果不是改变系统规则的不需要spec3、在调整样式,调试、临时poc的不需要spec4、如果是性能优化,安全增强的时候,能量化出要求的走sdd,量化不出的也不需要spec5、最终将所有改动归档。...最后,sdd不是银弹,他不能解决所有问题还是要视情况而定。
SDD“先定规则、再生成代码”的思路,刚好能解决开源项目最核心的“规范化、可复用”问题。...它的标准化架构不用额外改造,就能承接SDD规范,这也是我们最终选择它作为落地载体的核心原因。1....前期准备与规范模型落地SDD前,我们没有搞复杂流程,只聚焦三项核心准备,为适配筑牢基础:一是对齐开源协议,确保SDD规范与ooderAgent框架兼容无冲突;二是细化业务场景,把模糊需求转化为明确范围,...核心适配要点适配过程中,我们紧盯三个关键节点,确保SDD不流于形式、真正落地:一是组件对齐,将ooderAgent的End Agent、Route Agent、MCP Agent与SDD分层规范一一对应...三、SDD实操:以协议为核心的落地路径做好适配铺垫后,我们按实际开发节奏优化了SDD落地流程,核心思路就是“先定死协议、再拆解需求、最后闭环落地”,每一步都围绕可执行性推进,全程清晰可控。1.
在用 Claude Code、Cursor、CodeX 等 AI 辅助写代码的你,是否也遇到过这样两难:宣传里动辄“90% 代码由 AI 生成”,现实中却频繁踩...
cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdc doesn’t contain a valid partition table Disk /dev/sdd...cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1...1 100 803218+ 83 Linux /dev/sdd2 101 1000 7229250 83 Linux 查看iscsi运行情况 [root@xifenfei ~]# rpm -aq|grep...1 100 803218+ 83 Linux /dev/sdd2 101 1000 7229250 83 Linux Disk /dev/sde: 1073 MB, 1073741824 bytes...1 100 803218+ 83 Linux /dev/sdd2 101 1000 7229250 83 Linux iscsi操作总结 增加iscsi存储 (1)发现iscsi存储:iscsiadm
mdadm的是一个包,让我们来配置和在Linux中管理RAID设备。...在进一步移动之前,我建议您阅读以下文章,了解Linux中的RAID的基本知识。...Linux中RAID的基本概念 - 第1部分 在Linux中创建RAID 0(Stripe) - 第2部分 在Linux中设置RAID 1(镜像) - 第3部分 我的服务器设置 Operating System...dev / sdd。...# fdisk /dev/sdc 创建sdc分区 创建/ dev / sdd分区 # fdisk /dev/sdd 创建sdd分区 6.创建分区后,检查在所有三个驱动器SDB,SDC,&SDD变化。
cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdc doesn’t contain a valid partition table Disk /dev/sdd...cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1...1 100 803218+ 83 Linux /dev/sdd2 101 1000 7229250...1 100 803218+ 83 Linux /dev/sdd2 101 1000 7229250...1 100 803218+ 83 Linux /dev/sdd2 101 1000 7229250
在基于SUSE Linux 10上安装Oracle 10g RAC的话,由于Oracle 10g 不支持将ocr与votingdisk 存放在ASM 磁盘中,因此,依然需要为其使用裸设备方式。...SUSE Linux裸设备的配置与其他的Linux稍有差异,下面将具体描述。...1、先对磁盘进行分区,sdd如下面的方法炮制 #下面的示例中使用sdc和sdd来用作裸设备,一块用于ocr,一块用于votingdisk bo2dbp:~ # fdisk /dev/sdc Device...bo2dbp:~ # fdisk -l /dev/sdd Disk /dev/sdd: 209 MB, 209715200 bytes 64 heads, 32 sectors/track, 200...1 200 204784 83 Linux 3、配置裸设备 bo2dbp:~ # vi /etc/raw # /etc/raw # #
SDD as 上下文工程一环SDD通过"规格优先"的工作流(Spec-first → Plan → Tasks → Implement),将模糊的自然语言需求转化为结构化的上下文信息,这正是AI系统公式中...这恰好映射了AI系统公式的构成要素:人:对应SDD中的规格编写者,负责定义业务意图和约束上下文信息:对应SDD的规格文档(spec.md、plan.md、tasks.md),是结构化的、可执行的上下文LLM...底座:对应AI编码代理,根据规格生成代码实现 SDD = 人机协同定义意图 + AI生成实现 + Tools完成测试LLM本质上是无状态的,SDD通过规格文档作为"外部记忆系统":规格锚定(Spec-anchored...通过这套框架,SDD实现了"人机协同定义意图,AI生成实现"的协作模式。实现了从"代码为王"到"规格驱动"的范式转变。...执行计划)拆解任务,为AI提供可执行的指令AI AgentLLM底座根据规格生成代码 SDD 支撑系统的可维护性与可演进性SDD 是实现“有序演进”的核心保障。
关于Vibe coding中软件定义开发(SDD)模式在大系统平台中的实践应用、案例分析与代码实现的万字长文,需要系统性梳理SDD的核心概念、技术架构、实践方法论,并结合实际案例。...SDD模式的核心概念与技术架构 定义与特征 SDD(Software Defined Development)是一种通过抽象化开发流程、动态配置资源、自动化工具链驱动的开发模式。...大系统平台中的SDD实践方法论 基础设施即代码(IaC) 通过Terraform或Pulumi定义云资源,实现环境一致性: # Pulumi示例:定义AWS EKS集群 import pulumi_aws...push_to_registry(app-image) 案例分析:金融风控系统的SDD改造 背景与挑战 某银行原有风控系统存在部署周期长(2周/次)、资源利用率低(SDD实现: 策略动态加载:风控规则以JSON配置定义,实时热更新。 弹性资源池:基于交易流量自动扩缩容FaaS节点。
在这里插入图片描述 Mdadm介绍: mdadm是multiple devices admin的简称,它是Linux下的一款标准的软件 RAID 管理工具。...(也没有默认的配置文件)** 在linux系统中目前以MD(Multiple Devices)虚拟块设备的方式实现软件RAID,利用多个底层的块设备虚拟出一个新的虚拟设备,并且利用条带化(stripping...类型,大小设为 20 GiB 命令(输入 m 获取帮助):t 已选择分区 1 Hex 代码(输入 L 列出所有代码):fd 已将分区“Linux raid autodetect”的类型更改为“Linux...修改sdd磁盘分区 命令(输入 m 获取帮助):p ......fd Linux raid autodetect **************************************** [root@localhost ~]# fdisk /dev
Linux系统中磁盘管理LVM与挂载 本文以属于Linux系统基本概念,如果以查找教程教程,解决问题为主,只需要查看本文后半部分。如需要系统性学习请查看本文前半部分。 0....这种层次结构使得Linux系统能够灵活地管理存储资源,实现数据的动态分配和扩展。...命令(输入 m 获取帮助):t 已选择分区 1 Hex code or alias (type L to list all): 8e 已将分区“Linux”的类型更改为“Linux LVM”。...,sdd3组成的 缩减逻辑卷是一项风险较高的操作,可能导致数据丢失。...参考资料 linux磁盘分区 Linux LVM的基本使用 Linux系统磁盘(硬盘)逻辑卷分区和介绍 VMware虚拟机添加磁盘
这是 Linux 中 LVM(逻辑卷管理)的完整初学者指南。 在本教程中,您将了解 LVM 的概念、它的组件以及为什么要使用它。...我不会仅限于理论上的解释,我还将展示在 Linux 中创建和管理 LVM 的动手示例。 简而言之,我将为您提供在现实世界中开始使用 LVM 所需的所有必要信息。 Linux 中的 LVM 是什么?...vagrant@lvm:~$ lsblk -o name,size,fstype | grep sdd sdd 5G ├─sdd1 2.5G └─sdd2 2.5G 您现在可以在一个步骤中从这两个分区中快速创建另外两个物理卷...sudo pvcreate /dev/sdd1 /dev/sdd2 看一看:- vagrant@lvm:~$ sudo pvcreate /dev/sdd1 /dev/sdd2 Physical volume.../dev/sdd2 /dev/sdd2现在按预期在列表中。
LVM中有PV出现了坏道 #LVM中有PV出现了坏道 #数据拷贝 将/dev/sdc1拷贝到/dev/sdd1 [root@zutuanxue ~]#lvchange -an /dev/baism/abc...[root@zutuanxue ~]# pvmove /dev/sdc1 /dev/sdd1 /dev/sdc1: Moved: 2.7% /dev/sdc1: Moved: 100.0%...successfully merged into "baism1" volume spilt lv分割 [root@zutuanxue ~]# vgsplit baism1 baism2 /dev/sdd1...volume group "baism2" successfully split from "baism1" baism1 Old volume baism2 New volume /dev/sdd1...'" #warn creation_host = "rhel7" # Linux rhel7 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST
Linux 挂载2T以上存储 Linux 挂载2T以上存储 在生产环境中,我们会遇到分区大于2T的磁盘(比如:添加一个3TB的存储),由于MBR分区表只支持2T磁盘,所以大于2T的磁盘必须使用GPT分区表...就会进入交互式模式,如果有多个磁盘的话,我们需要运行select sdX(X为磁盘)来进行磁盘的选择,也可直接用parted /dev/sdX指定相应的硬盘 查看磁盘信息: fdisk -l Disk /dev/sdd...): 512 bytes / 512 bytes Disk identifier: 0x2ebc66f6 Device Boot Start End Blocks Id System /dev/sdd1...1 2089 16777216 82 Linux swap / Solaris /dev/sdd2 * 2089 36405 275643392 83 Linux Disk /dev/sdb:
每块盘我添加的为2G可以看到sdb、sdc、sdd、sde四块2G磁盘。...Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sdd...[root@bigdata01 ~]# pvcreate /dev/sdd1 Physical volume "/dev/sdd1" successfully created....GiB] / in no VG: 4 [<8.00 GiB] 创建vg [root@bigdata01 ~]# vgcreate vg_bigdata /dev/sdb1 /dev/sdc1 /dev/sdd1...8:48 0 2G 0 disk └─sdd1 8:49 0 2G 0 part