协议驱动开发:软件工程的未来
如果你向 90 年代的开发者展示我们今天如何构建软件——React 组件、微服务、GraphQL——他们会对工具感到惊讶。但他们也会感到困惑:
“你写 10,000 行 TypeScript 只是为了把一个表单连接到数据库?Schema 在哪里?声明式逻辑在哪里?为什么所有东西都是命令式代码?”
他们说得有道理。
软件开发的下一次进化不是更好的框架。而是更少的框架。
这就是协议驱动开发 (Protocol-Driven Development):将意图表达为结构化数据 (Schema, 清单, 协议),并让编译器、运行时和 AI 助手生成实现。
这不仅仅是理论。它正在发生。ObjectStack 正是为此未来而设计。
问题:代码太多,意图太少
现代软件开发有一个信噪比问题:
例子:构建一个 CRUD API
意图 (你想要的):
- 一个
Customer实体,包含字段:name,email,phone - REST 端点:
GET /customers,POST /customers,PUT /customers/:id,DELETE /customers/:id - 验证:
email必须有效,phone可选 - 安全:只有拥有
customer-read角色的认证用户可以访问
实现 (你写的):
- TypeScript 类型 (50 行): 接口, DTO, 验证 Schema
- 数据库模型 (30 行): ORM 实体, 迁移
- 控制器 (80 行): 路由处理程序, 请求解析, 响应格式化
- 服务层 (60 行): 业务逻辑, 数据库调用
- 中间件 (40 行): 认证, 授权
- 测试 (150 行): 单元测试, 集成测试
- API 文档 (70 行): OpenAPI 规范
总计:~480 行代码来表达 4 句话的意图。
低效之处
90% 的代码是样板代码:
- 将路由连接到控制器
- 解析请求体
- 验证输入
- 处理错误
- 检查权限
- 格式化响应
- 编写重复的测试
只有 10% 是独特的业务逻辑。
这种低效带来了巨大的成本:
- 更长的开发时间 (数周而不是数小时)
- 更多的 Bug (480 行 = 480 个犯错机会)
- 维护负担 (每次框架更新都会破坏某些东西)
- 知识孤岛 (初级开发者淹没在样板代码中)
洞见:分离意图与实现
如果你能只表达一次意图,并让编译器生成实现会怎样?
# customer.objectql.yml (30 行意图)
entity:
name: Customer
fields:
- name: name
type: text
required: true
- name: email
type: text
validation: email
required: true
- name: phone
type: text
required: false
permissions:
read: ["customer-read"]
write: ["customer-write"]
endpoints:
- GET /customers
- POST /customers
- PUT /customers/:id
- DELETE /customers/:id
这就够了。30 行 YAML 替代了 480 行 TypeScript。
ObjectQL 编译器:
- 生成数据库 Schema (Postgres/SQL)
- 生成 API 路由 (Node.js/Serverless)
- 生成验证逻辑 (Zod/Joi)
- 生成 TypeScript 类型 (给前端使用)
- 生成 OpenAPI 文档
为什么现在?AI 因素
协议驱动开发不仅仅是关于效率。它是关于 AI 就绪性。
LLM (大型语言模型) 擅长编写代码,但它们非常擅长理解结构化意图。
- 让 AI 生成 480 行能够完美工作的 NestJS 代码是很困难的(上下文窗口限制,幻觉,细微的 Bug)。
- 让 AI 生成 30 行有效的 YAML Schema 是微不足道的。
基于协议的架构为 AI 提供了完美的接口。
AI 辅助的工作流
- 你提示 AI: “我需要一个用于牙科诊所的 CRM 系统,包含病人预约和保险记录。”
- AI 生成: 5 个 ObjectQL Schema (
Patient,Appointment,Insurance) 和 2 个 ObjectOS 工作流 (AppointmentReminder,InsuranceClaim)。 - 你审查: 你阅读 YAML。它易于阅读。你修正了一个字段。
- 你部署: ObjectStack 编译器接管并构建全栈应用。
代码成为了汇编语言。协议成为了高级语言。
ObjectStack 的协议套件
我们设计 ObjectStack 作为这套新原语的标准库:
- ObjectQL (数据协议): 定义数据、关系和验证。
- ObjectOS (控制协议): 定义工作流、权限和作业。
- ObjectUI (视图协议): 定义布局、组件和交互。
例子:ObjectUI
不用写 React 组件:
# view.yml
type: page
title: Customer Details
layout: split
left:
- type: card
source: Customer
right:
- type: list
source: Customer.orders
如果明天 React 死了,我们更新 ObjectUI 编译器以输出 Vue、Svelte 或 iOS SwiftUI。你的意图依然有效。
结论:未来是声明式的
软件开发正在进化:
- 1980s-1990s: 汇编 → C (低级命令式)
- 2000s-2010s: Java, Python, JavaScript (高级命令式)
- 2020s-2030s: 协议, Schema, AI 生成 (声明式)
趋势很明显: 我们正在抽象掉实现细节并专注于意图。
ObjectStack 通过提供以下内容加速这一转变:
- ObjectQL (数据协议)
- ObjectOS (控制协议)
- ObjectUI (视图协议)
问题不在于协议驱动开发是否会发生。而在于你是否准备好了。
开始设计协议。让编译器处理实现。构建比框架更长寿的系统。
软件工程的未来是声明式的。未来是协议驱动的。
准备好进行协议优先构建了吗? 探索 ObjectQL 或 查看完整架构。