Omico Contract-Driven Development(OCDD)是一套以契约定义可观察行为,并让契约贯穿验证、实现和最终验收的开发方法规范。
当前 OCDD 1.0.0 仍处于草案阶段,可以用于评审和试行,不能作为正式合规声明的依据。
OCDD 同时依赖 Specification-Driven Development(SDD)和 Test-Driven Development(TDD):
- SDD 使规范先于实现并驱动实现;
- TDD 使验证先于实现并提供快速反馈。
在此基础上,OCDD 进一步规定唯一规范性来源、契约接受顺序、不可变修订、版本和验证证据。采用一般的 SDD 或 TDD 流程并不自动符合 OCDD。
OCDD 按以下主线组织开发与接受:
定义并接受契约
→ 导出能够在要求不满足时失败的检查
→ 形成并重构实现
→ 取得验证证据
→ 接受实现结果
契约是 OCDD 管辖的规范性来源。测试、构建逻辑、生成器和实现代码只有在被契约明确纳入时,才具有相应的规范性效力。上游需求可以提供背景或依据,但其形式、位置、生命周期和治理不属于 OCDD 的范围。
预期产品行为变化时,先修改并接受契约,再修改验证与实现;修复实现缺陷或重构内部结构时,契约语义保持不变。
OCDD 可以约束 Agent 自迭代,但不规定 Agent 的调度、搜索策略或持续运行机制。一次自迭代可以由以下部分协作完成:
| 部分 | 职责 |
|---|---|
| OCDD 契约 | 定义不得破坏的可观察行为、边界和兼容性承诺 |
| Goal | 定义本轮改进目标、量化条件和停止条件 |
| 提示词 | 指导 Agent 观察、提出假设、修改、验证、比较并继续或结束迭代 |
| Agent Skills | 提供可复用的领域知识、操作流程、工具用法和验证方法 |
| Git、构建与 CI | 标识基线和候选实现,运行验证、保存证据并支持接受或拒绝结果 |
提示词可以按 Goal 组合性能分析、依赖升级、API 兼容性检查、测试或代码评审等额外 Agent Skills。Skills 封装跨任务复用的方法和工具流程,避免在每个 Goal 或提示词中重复执行细节。
一次自迭代可以采用以下循环:
读取已接受的契约
→ 测量基线
→ 提出改进假设
→ 形成候选实现
→ 执行一致性验证
→ 比较目标指标
→ 接受或拒绝候选结果
→ 未达到 Goal 且未触发停止条件时继续
基线可以是当前已接受实现的不可变提交,候选实现可以是工作树或候选提交,目标指标由 Goal 声明,验证和比较结果作为证据保存。这些信息不必成为额外的 OCDD 项目文档。
Goal、提示词和 Agent Skills 默认不是契约的规范性来源,也不能替代验证或权限边界。产生候选实现的 Agent 不应在同一轮迭代中自行降低契约要求、关键检查、基准工作负载、基线或接受条件;这些变更须经过独立授权或评审。预期产品行为发生变化时,仍须先完成 OCDD 契约变更与接受。
Agent 的使用、Skills 选择、迭代触发和自动接受策略不属于 OCDD 合规范围。
| 路径 | 内容 |
|---|---|
spec/1.0.0/zh-Hans.md |
OCDD 1.0.0 简体中文规范草案 |
skills/ocdd-spec/ |
编写和维护采用方 OCDD 项目文档的 Agent Skill |
demos/ocdd-io/ |
以 OCDD 项目文档驱动的 Kotlin Multiplatform 示例 |
先阅读规范,再通过 ocdd-io 查看项目入口、API 契约、验证和跨平台实现之间的对应关系。