尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
拆解但不失全貌:如何在 OpenSpec 中管理复杂 Agent 需求的演进
在使用 OpenSpec 驱动复杂 AI Agent如 ChatBI 的多轮澄清、错误修复机制的开发时团队常常会陷入一种进退两难的工程困境大泥球陷阱把整个业务比如整个“WHERE 澄清”的所有分支、重试保护、LLM Prompt 设计全塞进一个 Change变更里。结果导致设计文档长达千行开发周期无限拉长Code Review 根本无从下手代码冲突不断。碎片化陷阱吸取了教训开始拆分把大需求拆成了十几个细小的子模块。但由于拆得太细目录嵌套极深开发者在写代码时“见树不见林”完全不知道当前这个小模块比如 34000 维度消歧的前置依赖是什么以及它为后续哪个功能比如 34100 全量学习做铺垫。如何做到“拆解需求”的同时“不失全貌”核心解法在于用主线 Spec 维护全景图用带前缀的扁平 Change 推进增量用 Proposal 串联故事线。最佳实践 1主干与分支分离 (The Source of Truth)OpenSpec 最重要的一条原则是分离“当前是什么样”与“这次要改成什么样”。主线目录 (openspec/specs/)这是系统的“全景地图”。无论底下拆了多少个 Change当一个变更开发、测试通过并发布后它的契约增量必须合并到这里。新人看这个目录就能了解系统现在的完整能力。变更目录 (openspec/changes/)这是“施工现场”。每一个目录代表一次原子的、可独立验证的交付通常对应一个 PR。切记永远不要在changes/里的某个变更下存放系统的全量规范。变更目录里只存放Delta增量。最佳实践 2使用顺序前缀管理演进 (Sequential Prefixing)当一个大 Epic如 ChatBI 澄清重构被拆散后如果在文件系统中它们只是一堆无序的文件夹逻辑链条就断了。解法为 Change 目录增加两位数的顺序前缀。.agentic/openspec/changes/ ├── 01-foundation-chatbi-clarification/ -- 基础骨架与接口契约 ├── 02-where-clarify-34000-dim-name/ -- 依赖 01处理 34000 分支 ├── 03-where-clarify-34100-full-learning/ -- 依赖 02处理 34100 全量学习 └── 04-where-clarify-retry-guard/ -- 依赖 03增加全局重试保护通过这种方式IDE 的目录树直接变成了一本“目录手册”。谁先谁后、谁是基础谁是进阶一目了然。最佳实践 3让 Proposal 成为故事的串联者在传统开发中需求的依赖关系往往存在于 Jira 或 Jira Ticket 的 Links 里随着代码库的流转这些上下文很容易丢失。在 OpenSpec 中proposal.md不是一个走过场的空文件它的核心职责是声明依赖与边界。每个拆分后的微小 Change都必须在proposal.md中回答三个问题Context (上下文)我在哪例如我是 ChatBI 聚合查询澄清 Epic 的一部分。Dependencies (依赖关系)Depends On: 我依赖谁例如依赖01-foundation提供的 Payload 结构。Blocks: 谁依赖我例如为后续的03-full-learning提供前置的兜底路由。Scope (边界)我这次坚决不做啥防范围蔓延的最强武器。最佳实践 4保持变更目录的扁平化一旦把大需求按逻辑拆成了小的 Change就不需要在 Change 内部再维持复杂的模块嵌套了。错误示范过度嵌套changes/ └── 02-where-clarify-34000-dim-name/ └── designs/ └── chatbi-clarification/ └── where-clarification/ └── 01-design.md正确示范扁平化changes/ └── 02-where-clarify-34000-dim-name/ ├── proposal.md ├── designs/ │ └── 01-dimension-name-ambiguity-34000.md └── tasks/ └── 01-dimension-name-ambiguity-34000.md因为 Change 本身的 Scope 已经足够小其内部的designs和tasks只需要最简单的平铺开发者一眼就能找到今天该干的活。总结OpenSpec 不是为了增加文档负担而是为了把脑海里的隐性上下文变成显性的工程资产。当你发现一个 Change 变得难以描述、设计文档开始写不下去时通常意味着它太大了。果断使用顺序前缀将它拆开用proposal.md拴住它们的关联把最终的拼图放回主线specs。这就是驾驭复杂 Agent 工作流的不二法门。
RELATED

相关推荐

团队内部 README:在通用项目开发中使用 OpenSpec

团队内部 README:在通用项目开发中使用 OpenSpec

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/11/3 10:01:36
【AI Engineering】项目学习新姿势:把知识管理、PRD 和 Spec 串起来

【AI Engineering】项目学习新姿势:把知识管理、PRD 和 Spec 串起来

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/11/3 10:01:36
用 Markdown 写幻灯片有多快?Marp 从入门到团队落地的完整指南

用 Markdown 写幻灯片有多快?Marp 从入门到团队落地的完整指南

用 Markdown 写幻灯片有多快?Marp 从入门到团队落地的完整指南 【免费下载链接】marp The entrance repository of Markdown presentation ecosystem 项目地址: https://gitcode.com/gh_mirrors/mar/marp 准备一次技术分享或内部培训时,你是否还卡…

📅 2026/11/3 10:01:36
MORE NEWS

更多资讯

📰

安卓玩机工具----告别面具!SukiSU Ultra 内核级 Root 与终极隐藏实战指南

在 Android 玩机与系统定制的道路上,Root 权限一直是我们探索设备潜能的钥匙。然而,随着银行 APP 和各类游戏反作弊系统的不断升级,传统的 Magisk(面具)在隐藏 Root 痕迹时显得越来越力不从心,环境检测报错…

📰

Restful风格请求响应和数据库封装映射

目录 一、Restful风格的请求 二、Apifox软件 三、定义响应数据统一格式的java实体类: 四、后端接收路径指定请求方式: 五、从请求中接收简单参数RequestParam 六、请求体中接收参数RequestBody 七、请求路径中接收简单参数PathVariable 八、公共…

📰

【深度学习毕设选题】基于深度学习的眼部目标检测研究,基于YOLO算法的眼睑信息自动测量方法研究

💖💖作者:IT跃迁谷毕设展 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数…

📰

memory __get_fault_gfp_mask

__get_fault_gfp_mask 是一个缺页异常处理路径中的辅助函数,用于为当前触发的缺页异常确定合适的内存分配标志(GFP flags)。它的核心逻辑是:如果 VMA 关联了文件,则使用该文件映射的 GFP 掩码;否则&#xf…

📰

执行力贬值之后:奥特曼访谈折射的3条能力增长路线与1个底层支撑

【摘要】基于OpenAI CEO山姆奥特曼45分钟访谈核心观点,拆解AI时代个体能力价值迁移逻辑,提炼3条核心增长路线与1项底层支撑能力,澄清3类普遍认知误区,给出1套可复用自测框架,为知识工作者重构竞争力提供可落地的行动路…

📰

数仓开发的三层责任:业务定义、模型设计与 SQL 实现

同一笔订单,为什么几张报表会给出不同的“销售额”?遇到这种情况,直接查 SQL 往往只能解决一部分问题。 一份数仓结果要可信,需要三层责任共同成立:业务定义说清要回答什么,模型设计保留必要事实&#xff…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬