2026/4/18 19:30:59
网站建设
项目流程
怎么做农产品垂直网站,台州网站排名优化公司,适合大学生举办的活动策划,怎么做网页游戏的托程序绝大部分都是在已有软件上进行新增功能的开发#xff0c;那么#xff0c;在SDD编程中#xff0c;如何管理增量开发中的规范变更#xff1f;OpenSpec框架给出了答案。 引言#xff1a;AI编程的痛点
当软件开发进入AI时代#xff0c;从氛围编程到SDD(规范驱动开发)那么在SDD编程中如何管理增量开发中的规范变更OpenSpec框架给出了答案。引言AI编程的痛点当软件开发进入AI时代从氛围编程到SDD(规范驱动开发)在AI研发范式的探索上越来越深入。SPEC KIT给SDD一个规范的框架但是我们看到SPEC KIT主要解决全新开发的模式而在一个软件的研发过程中基于存量系统进行增量开发才是软件开发的常态。那么在已有系统基础上添加新功能时如何让AI Agent快速理解项目现状并按照既定规范进行开发开源框架OpenSPEC给出了适当的探索。回顾 SDD规范即真理什么是规范驱动开发SDD规范驱动开发Spec-Driven Development, SDD是一种软件开发方法论其核心理念是规范定义行为系统的行为由规范Specification明确定义代码实现规范代码是对规范的实现而非规范的替代规范驱动变更所有变更都从规范变更开始规范即文档规范既是需求文档也是设计文档SDD vs 传统开发传统开发流程需求文档 → 设计文档 → 代码实现 → 测试文档 ↓ ↓ ↓ ↓ (可能不同步) (可能过时) (可能偏离) (可能遗漏)SDD流程规范定义 → 代码实现 → 自动验证 ↑ ↑ ↑ (单一事实来源) (实现规范) (确保一致)在SDD中规范是单一事实来源Single Source of Truth所有文档、代码、测试都围绕规范展开。OpenSpec解决增量开发核心问题的开源框架增量开发 vs 全新开发软件开发中增量开发是更广泛的场景全新开发从零开始可以自由设计架构0——1)增量开发在现有系统上添加功能(1——n)需要理解现有架构遵循现有规范与现有功能集成保持一致性增量开发面临的挑战上下文缺失新功能开发者包括AI不了解现有系统规范不一致不同时期开发的功能可能遵循不同规范变更管理混乱需求变更时文档、代码、测试更新不同步知识传承困难团队成员离职后项目知识难以传承OpenSpec要解决的核心问题OpenSpec框架专门针对增量开发场景设计解决以下问题1. 规范的可发现性问题新功能开发者不知道系统有哪些能力也不知道如何添加新功能。OpenSpec解决方案所有能力Capability都在specs/目录中明确定义通过openspec list --specs可以快速查看所有能力每个能力都有清晰的Purpose、Requirements和Scenarios2. 变更的可追溯性问题需求变更时不知道哪些代码、文档需要更新。OpenSpec解决方案所有变更通过提案Proposal机制管理变更提案明确说明影响范围Affected specs、Affected code归档后变更历史完整保留3. 规范与代码的一致性问题代码实现后文档往往不再更新导致文档与代码不一致。OpenSpec解决方案规范变更必须通过提案流程实现完成后规范自动更新归档时合并规范中的场景Scenarios可以直接对应测试用例4. AI助手的上下文理解问题AI助手缺乏项目上下文无法准确理解需求。OpenSpec解决方案规范提供结构化的上下文信息AI助手可以读取规范了解系统能力变更提案提供清晰的实现指导实战案例从需求到实现的完整流程让我们通过一个真实案例看看OpenSpec如何在实际项目中发挥作用。在一个已经存在的Agent工程中增加新的Agent完整实战流程说明 openspec 的安装和初始化 (openspec init) 和SPEC KIT基本相同非常简单不赘述本案例使用cursor 编辑器第一步创建变更提案用户输入/openspec-proposal 生成一个写小说的智能体核心是输入一个参考的优秀小说使用langchain或langgraph框架。步骤包括读取优秀小说md格式总结分析包括主角配角核心情节爽点和痛点等以总结的内容替换为相似的情节增加更多的爽点生成一篇新的小说短篇小说 8000-12000字执行逻辑1.1 探索现有状态首先了解项目现状# 查看现有能力 openspec list --specs # 输出novel-writing-agent (不存在需要新建) # 查看活跃变更 openspec list # 输出无活跃变更1.2 创建提案结构选择变更IDadd-novel-writing-agent创建目录结构openspec/changes/add-novel-writing-agent/ ├── proposal.md # 变更提案 ├── design.md # 技术设计 ├── tasks.md # 任务清单 └── specs/ └── novel-writing-agent/ └── spec.md # 规范变更1.3 编写提案文档proposal.md# Change: Add Novel Writing Agent ## Why 用户需要一个智能体来分析参考小说并生成新的创意作品。 智能体应该能够从优秀的参考小说中提取关键元素角色、情节、亮点、痛点 并使用这些分析来创建新的短篇小说8000-12000字 具有相似结构但增强的亮点。 ## What Changes - **ADDED**: 小说写作智能体能力 - **ADDED**: 小说分析组件提取角色、情节、亮点、痛点 - **ADDED**: 情节转换组件替换相似情节增强亮点 - **ADDED**: 小说生成组件生成8000-12000字的短篇小说 - **ADDED**: LangGraph工作流编排 ## Impact - **Affected specs**: 新能力 novel-writing-agent - **Affected code**: - 新智能体src/agents/novel_writing/ - 新工具src/agents/novel_writing/tools/ - 新提示词src/agents/novel_writing/prompts/1.4 编写技术设计design.md关键决策## Decisions ### Decision: 使用LangGraph进行工作流编排 **理由** - 小说写作过程有清晰的顺序步骤和状态依赖 - LangGraph提供状态管理、检查点和条件路由 - 与现有框架架构graph层对齐 ### Decision: 结构化分析输出格式 **理由** - 使用Pydantic模型进行类型安全和验证 - 使转换步骤更容易结构化输入 - 可以序列化/反序列化用于检查点1.5 编写规范变更specs/novel-writing-agent/spec.md## ADDED Requirements ### Requirement: 小说读取 系统应该从文件路径读取和解析markdown格式的参考小说。 #### Scenario: 读取有效的markdown小说 - **WHEN** 提供了有效的markdown文件路径 - **THEN** 系统读取文件内容并验证为markdown - **AND** 返回小说内容以供处理 ### Requirement: 小说分析 系统应该分析参考小说并提取结构化信息包括主要角色、配角、核心情节、亮点和痛点。 #### Scenario: 提取角色信息 - **WHEN** 分析小说时 - **THEN** 系统识别并提取主要角色及其特征和角色 - **AND** 识别并提取配角及其关系1.6 创建任务清单tasks.md## 1. 框架Graph层 - [ ] 1.1 创建graph状态模型 - [ ] 1.2 实现graph构建工具 - [ ] 1.3 创建graph节点定义 ## 2. 数据模型 - [ ] 2.1 创建NovelAnalysis模型 - [ ] 2.2 创建Character模型 - [ ] 2.3 创建Highlight模型 - [ ] 2.4 创建PainPoint模型 ## 3. 工具实现 - [ ] 3.1 创建read_novel工具 - [ ] 3.2 创建analyze_novel工具 - [ ] 3.3 创建transform_plot工具 - [ ] 3.4 创建generate_novel工具 ...1.7 验证提案openspec validate add-novel-writing-agent --strict # 输出Change add-novel-writing-agent is valid第二步实现变更用户输入/openspec-apply执行逻辑2.1 实现Graph层根据任务清单首先实现框架的Graph层# src/framework/graph/state.py class GraphState(TypedDict, totalFalse): messages: List[Any] data: Dict[str, Any] errors: List[str] file_path: str novel_content: str target_words: int2.2 实现数据模型# src/models/novel_analysis.py class Character(BaseModel): name: str traits: List[str] role: str relationships: List[str] class NovelAnalysis(BaseModel): main_characters: List[Character] supporting_characters: List[Character] core_plot: str highlights: List[Highlight] pain_points: List[PainPoint]2.3 实现工具# src/agents/novel_writing/tools/read_novel.py tool def read_markdown_novel(file_path: str) - str: 读取markdown格式的小说 # 实现文件读取和验证逻辑 ... # src/agents/novel_writing/tools/analyze_novel.py tool def analyze_novel(novel_content: str) - Dict: 分析小说并提取结构化信息 # 使用LLM进行分析 ... # src/agents/novel_writing/tools/transform_plot.py tool def transform_plot(analysis: Dict) - str: 转换情节并增强亮点 ... # src/agents/novel_writing/tools/generate_novel.py tool def generate_novel(transformed_content: str, target_words: int 10000) - str: 生成新小说8000-12000字 ...2.4 实现LangGraph工作流# src/agents/novel_writing/graph.py def build_novel_writing_graph(): builder GraphBuilder() # 添加节点 builder.add_node(read, read_node) # 读取小说 builder.add_node(analyze, analyze_node) # 分析小说 builder.add_node(transform, transform_node) # 转换情节 builder.add_node(generate, generate_node) # 生成新小说 # 设置流程read → analyze → transform → generate builder.set_entry_point(read) builder.add_edge(read, analyze) builder.add_edge(analyze, transform) builder.add_edge(transform, generate) builder.add_edge(generate, END) return builder.build()2.5 实现Agent# src/agents/novel_writing/agent.py class NovelWritingAgent(BaseAgent): def __init__(self, config: Optional[Dict] None): # 初始化工具和提示词 tools [read_markdown_novel, analyze_novel, transform_plot, generate_novel] # 构建LangGraph工作流 self.workflow build_novel_writing_graph() def write_novel(self, file_path: str, target_words: int 10000): # 执行工作流 initial_state { file_path: file_path, target_words: target_words, data: {}, errors: [] } final_state self.workflow.invoke(initial_state) return final_state[data][generated_novel]2.6 更新任务状态完成所有任务后更新tasks.md## 1. 框架Graph层 - [x] 1.1 创建graph状态模型 - [x] 1.2 实现graph构建工具 - [x] 1.3 创建graph节点定义 ...第三步归档变更用户输入/openspec-archive执行逻辑3.1 执行归档openspec archive add-novel-writing-agent --yes归档过程将变更目录移动到archive/2025-11-22-add-novel-writing-agent/将规范变更合并到specs/novel-writing-agent/spec.md系统现在有了novel-writing-agent能力3.2 验证归档结果# 验证规范 openspec validate --specs # 输出✓ spec/novel-writing-agent # 查看新能力 openspec list --specs # 输出novel-writing-agent requirements 6完整流程总结用户需求 ↓ 创建提案 (proposal.md, design.md, tasks.md, specs/) ↓ 验证提案 (openspec validate) ↓ 实现功能 (按照tasks.md顺序) ↓ 更新任务状态 (标记完成) ↓ 归档变更 (openspec archive) ↓ 规范自动更新 (specs/novel-writing-agent/spec.md)OpenSpec的优点1. 解决增量开发的核心痛点✅上下文可发现新开发者包括AI助手可以快速了解系统能力✅变更可追溯每个功能都能追溯到对应的规范和提案✅规范与代码一致归档时自动同步确保一致性✅知识可传承规范作为项目知识库团队成员离职不影响2. AI友好的设计✅结构化信息规范提供清晰的上下文AI助手易于理解✅自动化工具CLI工具减少手动操作提高效率✅验证机制自动检查格式和完整性减少错误✅标准化流程提案→实现→归档的流程AI助手易于遵循3. 团队协作优势✅统一规范所有变更都遵循相同的规范格式✅清晰沟通提案文档明确说明Why、What、Impact✅减少冲突通过规范检查避免功能冲突✅提高质量规范中的场景直接对应测试用例4. 长期维护优势✅文档自动更新归档时规范自动更新无需手动维护✅历史完整保留所有变更提案都保留在archive中✅重构更安全通过规范了解功能边界重构时更安全✅扩展更容易新功能可以基于现有规范进行扩展OpenSpec的不足和未解决的问题1. 规范维护成本❌规范可能过时如果实现与规范不一致需要及时更新❌规范可能过于详细过度规范化可能影响开发速度❌规范可能过于简单规范不足可能导致实现偏差缓解方案通过自动化验证确保一致性平衡规范的详细程度定期审查和更新规范2. 未解决的问题2.1 规范与实现的自动同步问题虽然归档时规范会更新但实现过程中的临时不一致仍然可能发生。现状需要开发者手动确保实现符合规范。未来可能通过静态分析或运行时检查自动发现不一致。2.2 规范的版本管理问题规范变更的历史版本管理可能不够完善。现状通过archive保留历史但版本对比可能不够直观。未来可能提供规范的版本对比和diff功能。4.3 大型项目的规范管理问题对于超大型项目规范文件可能过多管理复杂。现状通过目录结构组织但可能不够灵活。未来可能提供规范的分层、分组、搜索等功能。2.4 规范的测试生成问题虽然规范中的场景可以对应测试但自动生成测试用例的能力有限。现状需要手动编写测试用例。未来可能基于规范自动生成测试用例框架。总结OpenSpec的价值定位OpenSpec框架的核心价值在于解决增量开发中的规范管理问题。适用场景✅中型项目需要清晰的规范管理✅团队协作需要统一的变更流程✅AI辅助开发需要结构化上下文✅长期维护需要知识传承和一致性不适用场景❌快速原型时间紧迫的原型开发可能不需要完整规范❌个人项目单人项目可能不需要如此严格的流程❌一次性脚本简单的脚本不需要规范管理上述直接使用氛围编程❌大型项目产品复杂性高规范对齐明确困难范式需要进一步完善和探索核心理念规范即真理变更即提案实现即归档OpenSpec通过将规范作为单一事实来源为增量开发提供了清晰的路径。虽然它不能解决所有问题但在规范管理和团队协作方面它确实提供了一个实用的解决方案。这就是OpenSpec的价值所在。SDD从概念到SPEC KIT的初步框架到OpenSpec在增量开发的探索我们看到范式在快速演进中而且越来越具体但是距离成熟可能还有很长的距离而且AI范式和模型能力互为依赖找到和当前模型能力匹配的范式是实际落地的关键这还需要我们持续探索码字不容易请点个关注也欢迎关注我的公众号系列文章如下1AI重构研发范式AI时代你最大的能力变迁从“我不行”到“我能行”AI重构软件研发全流程走向落地亚马逊发布「AI驱动开发」全新方法论完整解读十大核心原则AI开发新范式——规范驱动开发SDD【第三篇】通过OpenSpec实现增量开发一图介绍清楚基于Spec Kit 框架的SDD(规范驱动开发的详细过程【SDD第二讲]五分钟带你理解AI时代的软件研发新范式——SDD(规格驱动开发) 【SDD第一讲】重温氛围编程是AI开发的明日新星还是皇帝的新装华为《智能世界2035》揭示软件未来人机协同编程重塑软件开发格局2AI重构软件组织AI组织-未来已来10年以后的组织是什么样子AI组织是什么样子来自微软的最新分析 – The Year of the Frontier Firm:3软件工程本质思考AI时代重新温习软件工程经典巨作思考软件工程的本质4 模型本质的认识OpenAI深度揭秘大语言模型的幻觉本质5 软件智能测试AI在软件测试中的理想与现实一场尚未到来的革命6 AI实战SDD开发实战3小时从零构建可私有部署的AI助手