Files
yovision/docs/03-tech-stack.md
T

79 lines
4.0 KiB
Markdown
Raw Normal View History

2026-08-03 22:18:02 +08:00
# 技术栈
> 已决项必须遵守;标为“待定”的版本或组件不得由 agent 自行拍板,应先落 Gitea Issue 并更新本文。
## 1. 已定技术方向
| 范围 | 选择 | 状态与说明 |
| --- | --- | --- |
| Sense | Go | 设备、ONVIF、MediaMTX 控制与对账 |
| 媒体数据面 | MediaMTX 独立二进制 | MIT;M1 正式生产基线 |
| MediaMTX API | 从官方 OpenAPI 用 `oapi-codegen` 生成 + 薄封装 | 不依赖第三方非官方 SDK |
| Brain | Python / CUDA | 推理流水线与判定内核 |
| 推理框架主选 | Savant / NVIDIA DeepStream | 具体版本与目标 GPU 待 M0/M1 压测冻结 |
| 推理框架备选 | Pipeless | 硬件变化、规模缩小或信创要求触发 |
| 模型主选 | Ultralytics YOLO(含 pose) | 商用前必须购买 Enterprise License |
| 模型备选 | YOLOX + RTMPose | 主选授权未批或目标硬件不适配时启用 |
| 跟踪/同一性 | ByteTrack 或 BoT-SORT + ReID | 具体组合待基准测试;ReID 默认、人脸可选 |
| Bell 后端 | Go | 事件、规则、预警、租户与审计 |
| Bell 前端 | 待定 | 必须经 UI 原型和团队技术评审后冻结 |
| M1 本地存储 | SQLite | schema 与生产 PostgreSQL 保持一致,仅 Sense 初期使用 |
| 生产数据库 | PostgreSQL,一个实例、`sense`/`bell` schema 分离 | Brain 无业务 schema |
| 证据对象存储 | MinIO / S3 兼容 | 版本、保留与加密策略待定 |
| 边缘隧道 | WireGuard | 控制面管理 |
| 指标 | Prometheus + Grafana | 三系统统一可观测入口 |
| 追踪 | OpenTelemetry + Jaeger | 端到端事件链路 |
## 2. 外部项目边界
- MiBeeNvr:只用于 M0 隔离实验室、ONVIF兼容性和交互参考,不作为生产依赖。
- MediaMTX:生产媒体数据面,不提供 YoVision 业务管理 UI。
- silver_pose:独立可交付仓库,是 Brain 判定内核的来源;不改名、不合并。
- `_reference/`:只读、忽略、不进入模块依赖和生产镜像。
## 3. 待冻结项
- Go、Python、PostgreSQL、MediaMTX、Savant/DeepStream 的精确版本。
- Bell 前端框架和组件库。
- 事件投递 transport 从 HTTP 起步还是直接采用消息总线。
- 目标 GPU/边缘硬件、解码能力和每 worker 的 `max_sources`。
- MinIO/S3 的证据保留、加密与生命周期策略。
- App 技术栈和 push/短信/语音供应商。
这些选项必须在对应任务中记录基准、许可证、运维成本和退出路线。
## 4. 当前标准入口
仓库当前只有文档和契约,未产生可构建生产代码。根目录脚本执行文档治理验证:
```powershell
./init.ps1
```
WSL/Linux/macOS/Git Bash:
```bash
./init.sh
```
直接验证:
```powershell
python scripts/validate_agent_context.py
python -m unittest discover -s tests -p "test_*.py"
python scripts/validate_harness_governance.py
```
## 5. 验证矩阵
| 改动范围 | 每次必跑 | 完整门禁触发条件 | 人工/设备门禁 |
| --- | --- | --- | --- |
| Harness 文档/任务/Gitea 模板 | 上述三条 Python 命令 | 任一治理协议、清单或任务 schema 变化 | 不适用 |
| `docs/raw/contracts/` | JSON Schema 校验 + 契约代码断言(实现后补命令) | schema/示例/mapper 任一变化 | 生产者与消费者联合评审 |
| Sense Go | `go test ./...`、`go vet ./...`(代码出现后) | ONVIF、存储、MediaMTX、对账或公共 API 变化 | 命中设备任务时使用指定摄像头矩阵 |
| Brain Python | 单元测试、类型/格式检查(命令待项目脚手架冻结) | mapper、判定状态机、模型接口变化 | 命中模型任务时用冻结数据集和目标硬件 |
| Bell Go/Web | 后端测试 + 前端 lint/test/build(命令待脚手架冻结) | schema、RBAC、预警状态机或公共 UI 变化 | P0 流程由产品/值班角色验收 |
| 容量/分片 | 任务内基准脚本 | 16/64/128 路里程碑 | 目标网络、媒体和 GPU 硬件必需 |
代码脚手架落地时必须把真实命令同步到本文、`init.ps1`/`init.sh`、`00-ai-start-here.md` 和 `current-state.md`。