这是一个使用 Semantic Voxel Protocol (SVP) 的 TypeScript 项目模板,演示如何通过分层编译从意图生成代码。
.
├── blueprint.svp.yaml # L5: 项目蓝图(意图层)
├── .svp/
│ ├── l4/
│ │ └── flows.yaml # L4: 架构层(AI生成)
│ ├── l3/
│ │ └── domain.yaml # L3: 逻辑层(AI生成)
│ └── gen/blocks/ # L2: 代码骨架(AI生成)
│ └── *.ts.block
├── src/
│ └── blocks/ # L1: 实现代码(AI生成)
│ └── *.ts
├── .env.example # 环境变量模板
└── README.md # 本文件
# 在项目根目录外安装 CLI
npm install -g @semanticvoxelprotocol/cli
# 或者本地链接(开发模式)
cd /path/to/svp-cli
npm link# 复制环境变量模板
cp .env.example .env
# 编辑 .env,填入你的 API Key
# 支持 OpenAI、DeepSeek、Claude、Ollama 等svp configsvp status输出示例:
SVP 项目状态
层级状态:
✓ L5 📋 Blueprint (blueprint.svp.yaml)
○ L4 🔗 Logic Chain
○ L3 🧩 Logic Blocks (0 files)
○ L2 📝 Code Blocks (0 files)
○ L1 💻 Generated Code (0 files)
下一步:
• 运行 `svp compile --level 5 --ai` 生成 L4
# L5 → L4: 意图 → 架构
svp compile --level 5 --ai
# L4 → L3: 架构 → 逻辑块
svp compile --level 4 --ai
# L3 → L2: 逻辑 → 代码骨架
svp compile --level 3 --ai
# L2 → L1: 骨架 → 实现
svp compile --level 2 --ai# 查看 L4 架构
ls -la .svp/l4/flows.yaml
# 查看 L3 逻辑块
cat .svp/l3/domain.yaml
# 查看 L2 代码骨架
ls .svp/gen/blocks/
# 查看 L1 实现代码
ls src/blocks/# 监听 L5-L3 变化,自动提示重新编译
svp dev假设需要在订单服务中添加"优惠券验证"功能:
- 编辑 L5: 在
blueprint.svp.yaml中添加优惠券领域 - 重新编译 L5 → L4:
svp compile --level 5 --ai - 审核 L4: 检查生成的流程是否包含优惠券验证步骤
- 继续编译: L4 → L3 → L2 → L1
- 查看结果: 新生成的代码自动包含优惠券相关逻辑
假设需要修改订单验证逻辑:
- 编辑 L3: 修改
.svp/l3/domain.yaml中的validate_order块 - 重新编译 L3 → L2 → L1:
svp compile --level 3 --ai svp compile --level 2 --ai
- 查看差异: L1 代码自动更新,反映新的验证逻辑
# 查看 L2 代码骨架(带 TODO 标记)
cat .svp/gen/blocks/validate_order_input.ts.block
# 查看 L1 实际实现
cat src/blocks/validate_order_input.ts
# 对比:L2 是骨架,L1 是实现- 文件:
blueprint.svp.yaml - 内容: 项目意图、领域划分、约束条件
- 编辑: 人类直接编辑
- 文件:
.svp/l4/flows.yaml - 内容: 业务流程、接口契约
- 编辑: AI生成,人类可修改
- 文件:
.svp/l3/domain.yaml - 内容: 伪代码、契约、类型定义
- 编辑: AI生成,人类可修改(修改的最后一层)
- 文件:
.svp/gen/blocks/*.ts.block - 内容: 代码骨架、TODO占位符
- 编辑: 禁止直接修改,通过修改L3重新生成
- 文件:
src/blocks/*.ts - 内容: 完整可运行代码
- 编辑: 禁止直接修改,通过修改L3重新生成
- 上层是源数据:L5-L3 是源数据,提交到 Git
- 下层是派生产物:L2-L1 由 AI 生成,可 CI 生成
- 单向编译:L5 → L4 → L3 → L2 → L1
- 修改L3重新编译:不要直接修改 L1 代码
| Provider | 配置方式 | 状态 |
|---|---|---|
| OpenAI | OPENAI_API_KEY |
✅ |
| DeepSeek | OPENAI_BASE_URL=https://api.deepseek.com/v1 |
✅ 已验证 |
| Anthropic Claude | ANTHROPIC_API_KEY |
✅ |
| Ollama | LOCAL_AI_URL=http://localhost:11434/v1 |
✅ |
| OneAPI/NewAPI | OPENAI_BASE_URL=https://your-endpoint/v1 |
✅ |
基于 DeepSeek API:
- 完整编译一次:~¥0.03(约25K tokens)
- 增量编译(单Block):~¥0.005
错误: API key not configured
解决: 检查 .env 文件是否正确配置
错误: Model Not Exist
解决: 检查模型名称是否与平台支持的一致
L3→L2 和 L2→L1 可能需要较长时间(多Block串行处理) 解决: 正常现象,后续将优化为并行编译
给开发组演示前准备:
- 确认
.env已配置有效 API Key - 运行
svp config验证配置 - 清理
.svp/l4/,.svp/l3/,.svp/gen/,src/blocks/目录 - 准备好 blueprint.svp.yaml(示例已提供)
- 测试完整编译流程
MIT