OpenSpec 三阶段工作流实操:从 Propose 到 Archive让代码返工率降到三分之一以下

简介: OpenSpec是AI原生规范驱动开发(SDD)框架,以Propose→Apply→Archive三阶段强制工作流,将需求精准转为AI可读、可验、可追溯的结构化规范,实测降低代码返工率超2/3。

OpenSpec 三阶段工作流实操:从 Propose 到 Archive让代码返工率降到三分之一以下

SDD(规范驱动开发)和传统的前期文档区别不在于写什而在于谁来读它。传统文档写给人看的,而SDD 规范写给 AI agent 看,其结构让模型能够在生成过程中引用它、对照它检查输出、在一个 session 结束、新 session 开始时借此恢复上下文。

为什么选 OpenSpec

我评估过两个主要的开源方案——GitHub 的 SpecKit 和 Fission-AI 的 OpenSpec。

SpecKit 有一个 constitution模型,能把跨领域的规则(TDD 要求、编码标准、合规约束)编码进每一个功能的工作流中;对企业合规场景这个很不错。OpenSpec 是另一个方向:三个命令,不需要事先写 constitution,开箱即用支持 25 个以上的 AI 工具。它对每份规范都有一个硬性的 50KB 上下文限制——这一点为什么重要,后面会展开说。

作者用的是 Claude Code、偶尔用 Cursor,所以OpenSpec 更适合我这种场景。不过如果你在受监管的行业,需要强制执行"每个 API 端点都必须有 OpenAPI 文档"这类规则,SpecKit 的 constitution 模型可能更合适,这是一个合理的取舍,并没有对错之分。

三阶段工作流

OpenSpec 强制执行一个严格的状态机,没有任何阶段可选,也没有任何阶段能跳过。下面是它实际的运作方式。

image.png

阶段一:Propose

起点是一个意图,不是代码。

/opsx:propose "add rate limiting to the public API endpoints"

agent 会先读取现有的 openspec/specs/(关于当前系统的真实来源),然后生成一个新文件夹:openspec/changes/add-rate-limiting/,里面包含四份文件。

proposal.md 是结构化文档,涵盖:解决什么问题、会有什么变化(标记为 ADDED、MODIFIED 或 REMOVED)、什么不变、关键风险和依赖。specs/ 是以 GIVEN/WHEN/THEN 格式写成的行为场景,也就是验收标准,具体到可以直接当测试用例用。design.md是技术方案:库、模式、架构决策。tasks.md 是拆成小块、可独立审查的实现清单。

人要在写下任何一行实现代码之前审查完这一切,批准了阶段二才开始;提议有问题,就在这里纠正,不能等到实现之后再回来纠正。

ADDED/MODIFIED/REMOVED 这几个增量标记值它们迫使写规范的人和 AI 都明确说清楚现在存在什么、之后会存在什么。听起来有点繁琐,但实际效果是,能在很多"哦等等,那个模块已经这么做了"的时刻变成技术债之前把它们揪出来。

阶段二:Apply

提议获批之后:

/opsx:apply

AI 逐一处理 tasks.md 里的任务,每一步都读规范文件,不是凭记忆读 prompt。这是它和无结构 AI 编码的关键区别,每个任务足够小,也可以独立测试;哪个任务失败了、输出不对,能准确看到违反了哪条规范场景,反馈循环很紧。

Apply 跑完之后运行:

/opsx:verify

这一步对照规范检查实现,不只是跑测试,而是验证代码的行为是否符合 GIVEN/WHEN/THEN 场景。发现差距时会准确告诉哪个场景没被满足。

我在大概三十个功能上跑过 verify,大约三分之一会发现问题。总是一些小地方:一个缺失的错误状态,tasks 里没覆盖到的边界情况。能在合并之前把这些揪出来,是这个框架真正的价值所在。

阶段三:Archive

/opsx:archive

变更文件夹移动到 openspec/changes/archive/,增量规范合并进主 openspec/specs/,即项目统一的真实来源。

这是 OpenSpec 在结构上和 SpecKit 拉开差距的地方。SpecKit 会无限期地为每个功能维护独立的规范文件;OpenSpec 把一切整合进一份代表系统当前状态的活文档里。

所以任何时间点都可以直接读 openspec/specs/ 理解整个系统,不用从几十个功能文件里拼凑上下文。AI 也读这份文档——每次新提议开始时都会读。

50KB 上下文限制:是重要的特性,不是缺陷

这个看似随意的约束,其实是框架里最重要的设计决策之一。

现代 LLM 的上下文窗口很大,有些超过一百万 token,很容易让人觉得干脆把所有东西都塞进去——所有规范、所有代码、所有历史记录。问题是大上下文不等于聚焦的上下文。给 agent 塞进 800KB 的规范和代码,它不会平等地读完所有内容,会更关注某些部分,而它关注的部分未必是当前这个具体任务真正在意的部分。

OpenSpec 的 50KB 限制逼着人对规范里放什么保持克制,不能一股脑塞进去,得想清楚 agent 实现这个功能到底需要知道什么。

这种克制带来一个副作用:规范本身会变得更好——简洁、有针对性,是一份简报,不是信息倾泻。对于需要在大型代码库上并行跑多个 agent 的团队,这个约束还意味着可以同时跑好几个 agent 而不互相抢上下文预算,这在规模化之后是个很实在的运维问题。

一个真实例子:速率限制功能

具体一点。这是我正在做的一个项目里,一份提议的精简版本。

proposal.md节选:

## What is changing


ADDED: Rate limiting middleware on all /api/v1/* routes  
MODIFIED: Express app configuration to mount rate limiter before routes  
ADDED: Redis-backed rate limit counter (per API key, per 15-minute window)


## What is NOT changing


Authentication flow, response format, existing error codes.


## Risk


Redis dependency — if Redis is unavailable, the middleware must fail open   
(allow requests) not fail closed (block all traffic).

specs/rate-limiting.md节选:

GIVEN a valid API key making requests  
WHEN the key exceeds 100 requests per 15-minute window  
THEN the API returns 429 with a Retry-After header


GIVEN Redis is unavailable  
WHEN a request arrives at the rate limiter  
THEN the request proceeds as normal (fail-open behaviour)

第二个场景,Redis 故障时的 fail-open 行为,不是 AI 第一版草稿里的内容是在审查时加进去的,来自对故障模式的思考。

这正是规范审查该起的作用:逼着人去想整个系统,而不只是描述一个功能。最终代码优雅地处理了 Redis 故障,不是因为 AI 对容错有多懂,而是规范告诉了它需要实现的行为。

什么样的规范算好规范

写了几十份之后,总结出几条区分好坏的标准。

描述行为,不要规定实现方式。"用户必须在 30 秒内收到通知"是个好规范;"使用 WebSocket 推送通知"是实现决策,该放进 design.md。

明确指出边界情况。正常路径谁都会写,规范的价值恰恰体现在边界情况上:失败了会怎样?被调用两次会怎样?输入为空会怎样?

每个场景保持原子性,一个场景一个 GIVEN/WHEN/THEN,不要嵌套条件;要表达复杂逻辑,就拆成多个场景。

用平实的语言写,平实到可以拿给非技术的同事看。一个场景如果要铺垫三段话才能讲清楚背景,说明它太复杂了。

总结

这一篇讲的是 OpenSpec 在单一仓库内如何落地:一个 agent,一份代码库,三个阶段走完一个功能。这套流程在这个前提下是成立的——proposal 有地方审查,spec 有地方沉淀,verify 有唯一一份代码可以对照检查。

意图先于代码写清楚,在实现开始前就有机会纠错,AI 每一步都对照 spec 而不是凭记忆生成,verify 又把实现和场景重新核对一遍。50KB 的限制看似只是个容量约束,实际上逼着规范写得足够聚焦,这也是整套流程能跑得动的前提之一。

规范全程被 AI 使用而不是写完就闲置。

https://avoid.overfit.cn/post/548f7f8356d04034a0cfce29ebc66670

by Apurv Sheth

目录
相关文章
|
3月前
|
人工智能 JSON 机器人
10 个 AI 工程师必须掌握的 LangChain & LangGraph 概念
本文详解2026年构建生产级AI Agent的10大核心架构原则:状态管理、函数化节点、图编排替代线性链、智能路由、多层检索、结构化输出、操作型记忆、检查点恢复、人机协同等。强调可靠AI系统的关键不在模型调优,而在健壮的工作流设计。
243 0
10 个 AI 工程师必须掌握的 LangChain & LangGraph 概念
|
4月前
|
人工智能 编解码 Java
Harness Engineering:耗时一周,我是如何将应用的AI Coding率提升至90%的
文章内容基于作者个人技术实践与独立思考,旨在分享经验,仅代表个人观点。
1414 7
|
2月前
|
人工智能 Java API
2026年阿里云通义千问大模型API全栈接入教程:PHP/Java/.NET/Python/Go五语言完整实战
2026年阿里云DashScope作为通义千问官方API服务底座,提供两套标准化接入体系:专属原生SDK、OpenAI兼容通用接口,覆盖PHP、Java、.NET(C#)、Python、Go五大主流开发语言。本文从前置账号开通、两种调用方式区分、各语言环境配置、完整可运行代码、流式输出实现、参数精细化调优、异常捕获、生产安全与成本优化九大模块完整拆解,适配网站、后端服务、桌面程序、AI智能体、数据分析各类项目,零基础开发者与企业后端工程师均可直接复用全套工程代码,解决多技术栈统一集成大模型的落地难题。
835 1
|
2月前
|
人工智能 监控 机器人
十个 AI Agent 工作流模板,照着搭就能用
AI Agent 不是高级聊天机器人,而是能自动执行完整工作流的智能协作者:读取、核对、决策、起草、更新,仅高风险环节交由人工拍板。文末分享10个开箱即用的模板——从邮件分类、研究简报到CRM补全、QA审查,聚焦解决重复性数字劳动,强调“先设计工作流,再写Prompt”,兼顾效率与可控性。
516 1
十个 AI Agent 工作流模板,照着搭就能用
|
2月前
|
人工智能 搜索推荐 API
什么是 Ontology?用一个电商例子讲清楚“本体论”
Ontology(本体)在AI中并非哲学玄谈,而是对领域知识的结构化定义:明确概念、关系、属性与规则,为机器提供可理解、可推理的“知识骨架”,赋能RAG、知识图谱、AI Agent等场景。(239字)
625 1
|
2月前
|
人工智能 Rust 安全
2026年Vibe Coding实战指南:从入门到精通全流程
《2026年Vibe Coding实战指南》聚焦AI辅助开发新范式,以Rust Actix-web+异步任务为实战场景,系统拆解意图驱动开发全流程:从理念认知、TRAE等工具选型、提示词工程、三段式代码生成(含BUG初版→修正版对比),到迭代优化与工程落地,助开发者高效掌握Vibe Coding核心能力。(239字)
|
8月前
|
人工智能 JSON IDE
SDD 如何在复杂业务系统中真正落地?
OpenSpec 是面向 AI 编程的规范驱动开发(SDD)工具,以 Markdown 文档为“唯一真相源”,通过 CLI 管理需求提案(proposal)、任务清单(tasks)、规格说明(spec)及归档流程,支持 Cursor 等 IDE 集成,兼顾轻量迭代与工程可追溯性。(239字)
SDD 如何在复杂业务系统中真正落地?
|
3月前
|
存储 人工智能 机器人
AI Agent的三重记忆机制:打造高可用的多维记忆系统
本文深度解析AI Agent三大核心记忆架构:RAG(聚焦“来源说了什么”,保障答案可溯源)、Agent Memory(解决“该记住什么”,实现跨会话连续性)与知识图谱(厘清“事物如何关联”,支撑多跳推理)。三者定位迥异,需依问题本质精准选型,避免技术错配。
270 4
AI Agent的三重记忆机制:打造高可用的多维记忆系统
|
2月前
|
缓存 人工智能 数据可视化
GLM 5.2自托管完整实操指南:硬件选型、vLLM/SGLang部署与成本测算全解
GLM 5.2作为国产标杆级开源大模型,采用753B MoE混合专家架构,单次推理仅激活8个专家模块,原生支持百万Token超长上下文,在代码生成、复杂数学推理、长篇文档分析等场景综合能力突出。企业选择GLM 5.2本地/私有云自托管,核心收益在于数据完全不出域、模型可深度定制、长期算力成本可控,但落地需要解决硬件匹配、推理框架适配、性能调优、成本核算四大核心难题。同时,搭配OpenClaw、Hermes两类主流AI智能体,可搭建完整本地自动化工作流,结合阿里云百炼Token Plan云端订阅方案,形成本地私有化+云端弹性混合使用架构。本文完整覆盖GLM 5.2硬件分级方案、两大主流推理框架部
594 1
|
8月前
|
数据采集 人工智能 测试技术
LLM-as-a-judge有30%评测偏差?这篇论文给出修复方案
KRAFTON AI研究揭示,用LLM评估LLM存在高达30%的系统性偏差,导致性能排名失真。评判模型的敏感性与特异性不均衡,使分数偏离真实水平。论文提出基于Rogan-Gladen估计器的校正方法,结合小规模标注数据校准偏差,并量化不确定性,提升评估可靠性。结果表明,未经校正的排行榜可能误导研发方向。评估自动化需以统计严谨为前提,校准不是可选而是必需。
721 5
LLM-as-a-judge有30%评测偏差?这篇论文给出修复方案