内容
# 开放QA协议(OQP)
开放QA协议(OQP)是一种开放标准,旨在促进智能软件验证。它为编码代理、CI/CD管道和人类开发人员提供了一种通用语言,用于查询语义业务规则、评估发布风险以及针对集中式知识图谱执行自主测试工作流。
## 为什么需要OQP?
在智能软件开发时代,瓶颈不再是编写代码,而是验证代码是否满足业务需求。传统的UI驱动的测试工具和单一的仪表板与自主代理不兼容。
OQP通过定义一组标准化的API原语来解决这个问题,允许任何代理(例如Cursor、Claude Code、GitHub Copilot):
1. **发现** 存储库中可用的测试能力。
2. **查询** 特定工作流的语义业务规则和历史边缘情况。
3. **评估** 在合并之前提出的代码更改的风险。
4. **执行** 沙盒化的自主验证工作流。
## 规范
OQP的核心是OpenAPI 3.1规范。
* [查看最新的OQP规范(YAML)](spec/oqp-v1.0.0.yaml)
* [阅读文档](docs/getting-started.md)
### 核心原语
OQP定义了四种主要交互方式:
| 端点 | 目的 | 调用者 |
| :--- | :--- | :--- |
| `GET /.well-known/oqp` | 能力发现。代理查询此信息以了解服务器支持的功能。 | 编码代理 |
| `GET /context/workflows/{id}` | 返回工作流的语义业务规则和历史事件。 | 编码代理(通过MCP) |
| `POST /verification/assess-risk` | 提交PR差异并返回风险评分、受影响的工作流和覆盖率差距。 | CI/CD管道 |
| `POST /verification/execute` | 触发自主沙盒测试代理以验证更改。 | 工程经理/发布门控 |
## 工作原理(智能流程)
OQP旨在成为编码代理和验证代理之间的“绿色合同”。
1. **上下文阶段:** 开发人员(或编码代理)开始处理“访客结账”流程。代理查询OQP服务器(`GET /context/workflows/checkout_flow`)以检索业务规则和已知边缘情况 **在** 编写代码之前。
2. **实施阶段:** 编写代码,以语义上下文为指导。
3. **验证阶段:** 打开拉取请求。 CI/CD管道使用差异查询OQP服务器(`POST /verification/assess-risk`)。服务器将语法更改映射到语义知识图谱并返回风险评分。
4. **执行阶段:** 如果风险高或测试缺失,管道会触发自主验证代理(`POST /verification/execute`)。代理生成测试,运行测试,并尝试恢复,直到满足“绿色合同”。
## 可扩展性
OQP旨在成为一个“开放集市”,具备各种能力。不需要中央委员会来批准新功能。实现者可以使用反向域名命名(例如`com.yourcompany.custom_capability`)扩展协议。
代理在发现阶段协商功能(`GET /.well-known/oqp`)。如果代理不支持扩展,它会优雅地降级到核心规范。
## 贡献
我们欢迎社区的贡献!请参阅我们的[贡献指南](CONTRIBUTING.md),了解如何提出对规范的更改。
## 许可证
开放QA协议规范在[Apache License 2.0](LICENSE)下获得许可。
## 贡献者
OQP由软件质量、AI和开发者工具社区的从业者和研究人员塑造。我们感谢以下贡献者对规范的审查和认可:
| 名称 | 组织 | 角色 |
|------|-------------|------|
| [Philip Lew](https://www.linkedin.com/in/philiplew ) | XBOSoft | 规范审查员和认可者 |
| [Benjamin Young](https://www.linkedin.com/in/benjaminyoung/) | W3C JSON-LD工作组 | JSON-LD知识图谱上下文负责人 |