[BRN] 实现合成与本地视频输入适配 #11

Closed
opened 2026-08-12 09:53:39 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:需求
  • 任务类型:单项目
  • 主项目:Brain
  • 主 agent:Brain agent
  • 所属 Epic:#7
  • 所属 MVP / 版本:#8
  • 阶段:阶段 1(三条独立纵切)/ 已完成(用户于 2026-08-28 验收通过)

依赖与并行

  • 前置工单:#10
  • 是否允许与前置工单并行:否
  • 原因:需要已可安装、可测试的 Brain 包骨架与依赖管理。

子项目影响

  • 仅影响的子项目 / 交付单元:Brain
  • 是否跨子项目:否
  • 是否修改共享接口或契约:否;唯一事实来源:Brain 项目内部类型与测试夹具,不形成跨项目契约
  • write_paths:
    • Brain/src/yovision_brain/input/
    • Brain/src/yovision_brain/config/
    • Brain/tests/input/
    • Brain/tests/config/
    • Brain/tests/fixtures/input/
  • 各子项目需要执行的验证:仅执行 Brain 对应测试;Sense、Bell 无需启动或验证

协同接口

  • 生产者:不适用
  • 消费者:不适用
  • 契约/共享事实源:不适用;不得在本任务复制或发布临时共享契约
  • 兼容策略:不适用
  • 被阻塞或需要适配的工单:不适用
  • 集成顺序:不适用

原始需求

  • 来源:用户对话、#7、#8、Product-Requirements BRN-001~BRN-007、Requirements-Migration-Matrix T-017
  • 提出时间:2026-08-12
  • 关键原话或脱敏摘要:先创建三个项目各自独立任务的全部工单,标题以项目英文简称开头;Brain 首轮仅覆盖独立骨架到项目内匿名事件输出,不依赖 Sense/Bell 在线。

要解决什么

Brain 首个纵切不能依赖 Sense 在线,需要稳定、可重复的合成/本地视频和项目内配置输入,以驱动后续解码、推理与规则测试。

做什么 / 不做什么

  • 做:定义 Brain 内部输入端口;实现确定性的合成帧/合成视频描述与本地文件输入;解析设备逻辑标识、Profile/分辨率和区域/警戒线等项目内测试配置;覆盖结束、缺失、非法配置和取消。
  • 不做:不读取 Sense 数据库或摄像头凭据;不实现正式 Sense→Brain 源配置契约、RTSP 生产接入、网络重试、解码、检测或事件输出;项目内配置不得伪装成共享契约。

已确认方案

把输入来源和后续处理通过 Brain 内部端口隔离。合成输入必须固定随机种子/时间基准并可在测试中复现;本地视频只接收显式路径且错误可定位。项目内配置使用明确的 internal/test 命名和版本标记,为后续协调工单保留适配器边界,但不复制候选共享 Schema。

预计修改文件:

  • Brain/src/yovision_brain/input/
  • Brain/src/yovision_brain/config/
  • Brain/tests/input/
  • Brain/tests/config/
  • Brain/tests/fixtures/input/

所有实现、测试和项目内说明只能落在上述 Brain/ 路径;发现需要 contracts/、Sense/、Bell/ 或根级编排时停止实施并提交协同需求摘要。

需求变化记录

无。

文档影响

  • 不影响长期文档,原因:不适用
  • 更新项目档案或本地开发与验证
  • 更新架构与代码地图
  • 更新业务规则与术语
  • 更新常见修改或故障排查
  • 更新其他 Wiki 页面:Product-Requirements / Product-Roadmap 中仅补充最终实现事实与可复制命令

说明:Wiki 是长期文档事实源;本单元任务不直接取得仓库根 docs/ 的写权限,本地镜像由验收归档流程统一同步。

交付文档影响

  • 无交付文档影响,原因:无直接客户交付文档影响;本任务形成内部推理单元能力,面向实施/维护者的运行说明记录在 Brain 项目说明及项目 Wiki。
  • 更新已有交付文档,受众与页面:
  • 新增交付文档,受众与页面:
  • 需要目标岗位或客户代表验证:否;验证方式:不适用

验收标准

  • 在 Sense、Bell 未启动时可生成确定性的合成输入并读取显式本地视频来源。
  • 输入携带 Brain 内部所需的逻辑设备引用、时间戳、Profile/分辨率和项目内规则配置。
  • 相同种子与配置产生可重复的帧序列;EOF、取消、文件不存在和非法配置返回可定位错误。
  • 测试夹具不包含真实客户视频、摄像头密码、个人数据或绝对内部路径。
  • 代码和夹具未定义或复制正式跨项目源配置契约。

验证方式

Brain\.venv\Scripts\python.exe -m pytest Brain/tests/input Brain/tests/config -q

前置验证:确认 #10 已完成且 Brain 虚拟环境可安装。

Sense、Bell 必须保持未启动;测试只使用合成/本地视频与 Brain 项目内配置。不能完成的 GPU、真机、现场和跨项目验证必须如实回写工单,不得以 mock 结果冒充。

风险和回退

测试配置若与未来共享契约过度相似,可能形成隐性事实源。回退方式是删除本工单的 input/config 模块与夹具;未来正式适配必须由协调工单通过 contracts/ 新增,不在本模块静默演化。

## 基本信息 - 类型:需求 - 任务类型:单项目 - 主项目:Brain - 主 agent:Brain agent - 所属 Epic:#7 - 所属 MVP / 版本:#8 - 阶段:阶段 1(三条独立纵切)/ 已完成(用户于 2026-08-28 验收通过) ## 依赖与并行 - 前置工单:#10 - 是否允许与前置工单并行:否 - 原因:需要已可安装、可测试的 Brain 包骨架与依赖管理。 ## 子项目影响 - 仅影响的子项目 / 交付单元:Brain - 是否跨子项目:否 - 是否修改共享接口或契约:否;唯一事实来源:Brain 项目内部类型与测试夹具,不形成跨项目契约 - write_paths: - `Brain/src/yovision_brain/input/` - `Brain/src/yovision_brain/config/` - `Brain/tests/input/` - `Brain/tests/config/` - `Brain/tests/fixtures/input/` - 各子项目需要执行的验证:仅执行 Brain 对应测试;Sense、Bell 无需启动或验证 ## 协同接口 - 生产者:不适用 - 消费者:不适用 - 契约/共享事实源:不适用;不得在本任务复制或发布临时共享契约 - 兼容策略:不适用 - 被阻塞或需要适配的工单:不适用 - 集成顺序:不适用 ## 原始需求 - 来源:用户对话、#7、#8、Product-Requirements BRN-001~BRN-007、Requirements-Migration-Matrix T-017 - 提出时间:2026-08-12 - 关键原话或脱敏摘要:先创建三个项目各自独立任务的全部工单,标题以项目英文简称开头;Brain 首轮仅覆盖独立骨架到项目内匿名事件输出,不依赖 Sense/Bell 在线。 ## 要解决什么 Brain 首个纵切不能依赖 Sense 在线,需要稳定、可重复的合成/本地视频和项目内配置输入,以驱动后续解码、推理与规则测试。 ## 做什么 / 不做什么 - 做:定义 Brain 内部输入端口;实现确定性的合成帧/合成视频描述与本地文件输入;解析设备逻辑标识、Profile/分辨率和区域/警戒线等项目内测试配置;覆盖结束、缺失、非法配置和取消。 - 不做:不读取 Sense 数据库或摄像头凭据;不实现正式 Sense→Brain 源配置契约、RTSP 生产接入、网络重试、解码、检测或事件输出;项目内配置不得伪装成共享契约。 ## 已确认方案 把输入来源和后续处理通过 Brain 内部端口隔离。合成输入必须固定随机种子/时间基准并可在测试中复现;本地视频只接收显式路径且错误可定位。项目内配置使用明确的 internal/test 命名和版本标记,为后续协调工单保留适配器边界,但不复制候选共享 Schema。 预计修改文件: - `Brain/src/yovision_brain/input/` - `Brain/src/yovision_brain/config/` - `Brain/tests/input/` - `Brain/tests/config/` - `Brain/tests/fixtures/input/` 所有实现、测试和项目内说明只能落在上述 `Brain/` 路径;发现需要 `contracts/`、`Sense/`、`Bell/` 或根级编排时停止实施并提交协同需求摘要。 ## 需求变化记录 无。 ## 文档影响 - [ ] 不影响长期文档,原因:不适用 - [x] 更新项目档案或本地开发与验证 - [x] 更新架构与代码地图 - [ ] 更新业务规则与术语 - [ ] 更新常见修改或故障排查 - [x] 更新其他 Wiki 页面:Product-Requirements / Product-Roadmap 中仅补充最终实现事实与可复制命令 说明:Wiki 是长期文档事实源;本单元任务不直接取得仓库根 `docs/` 的写权限,本地镜像由验收归档流程统一同步。 ## 交付文档影响 - [x] 无交付文档影响,原因:无直接客户交付文档影响;本任务形成内部推理单元能力,面向实施/维护者的运行说明记录在 Brain 项目说明及项目 Wiki。 - [ ] 更新已有交付文档,受众与页面: - [ ] 新增交付文档,受众与页面: - [ ] 需要目标岗位或客户代表验证:否;验证方式:不适用 ## 验收标准 - [x] 在 Sense、Bell 未启动时可生成确定性的合成输入并读取显式本地视频来源。 - [x] 输入携带 Brain 内部所需的逻辑设备引用、时间戳、Profile/分辨率和项目内规则配置。 - [x] 相同种子与配置产生可重复的帧序列;EOF、取消、文件不存在和非法配置返回可定位错误。 - [x] 测试夹具不包含真实客户视频、摄像头密码、个人数据或绝对内部路径。 - [x] 代码和夹具未定义或复制正式跨项目源配置契约。 ## 验证方式 ```powershell Brain\.venv\Scripts\python.exe -m pytest Brain/tests/input Brain/tests/config -q ``` 前置验证:确认 #10 已完成且 Brain 虚拟环境可安装。 Sense、Bell 必须保持未启动;测试只使用合成/本地视频与 Brain 项目内配置。不能完成的 GPU、真机、现场和跨项目验证必须如实回写工单,不得以 mock 结果冒充。 ## 风险和回退 测试配置若与未来共享契约过度相似,可能形成隐性事实源。回退方式是删除本工单的 input/config 模块与夹具;未来正式适配必须由协调工单通过 `contracts/` 新增,不在本模块静默演化。
ila added the kind/taskpriority/p0project/brainscope/independent labels 2026-08-12 09:58:34 +08:00
Author
Owner

开始实施(2026-08-28)

  • 状态:进行中
  • 分支:feature/11-brain-input,基线 dev@4a605f6482d3d771d1d2e378d341aec7298e5c59
  • 前置:#10 已验收并合入 dev。
  • write_paths:严格限定为工单声明的 Brain/src/yovision_brain/input/、Brain/src/yovision_brain/config/、Brain/tests/input/、Brain/tests/config/、Brain/tests/fixtures/input/。
  • 实施边界:只建立 Brain 内部合成/本地输入与项目内配置,不访问 Sense/Bell,不新增或复制共享契约。
  • 代码知识图谱 MCP 当前未暴露,已按仓库规则回退到本地文件检查。
## 开始实施(2026-08-28) - 状态:进行中 - 分支:`feature/11-brain-input`,基线 `dev@4a605f6482d3d771d1d2e378d341aec7298e5c59` - 前置:#10 已验收并合入 `dev`。 - write_paths:严格限定为工单声明的 `Brain/src/yovision_brain/input/`、`Brain/src/yovision_brain/config/`、`Brain/tests/input/`、`Brain/tests/config/`、`Brain/tests/fixtures/input/`。 - 实施边界:只建立 Brain 内部合成/本地输入与项目内配置,不访问 Sense/Bell,不新增或复制共享契约。 - 代码知识图谱 MCP 当前未暴露,已按仓库规则回退到本地文件检查。
Author
Owner

最终实施证据(待验收,2026-08-28)

实现与提交

  • 功能提交:7964d61cabfeb6aa937829d74793a8125bc15fab。
  • PR:#126,已合入 dev@52b368068e4c6a03b571573a68bc8188d5ff8a8c。
  • 新增 Brain 内部 brain.internal.input/v1 配置、确定性 RGB 合成输入、本地文件分块输入、输入工厂、EOF/取消和安全错误边界。
  • 配置包含逻辑设备、Profile/分辨率、区域与方向线,拒绝密码、token、secret 等凭据字段;测试不含客户视频、个人数据或机器路径。

验证结果

  • Brain\.venv\Scripts\python.exe -m pytest Brain/tests/input Brain/tests/config -q:12 passed。
  • Brain\.venv\Scripts\python.exe -m pytest Brain/tests -q:15 passed, 1 skipped;跳过项是既有 CUDA smoke,本机未安装/验证 CUDA wheel,不影响 #11 的 CPU/标准库输入范围。
  • python dev_scripts/harness.py check --strict:通过。
  • python -m unittest discover -s tests -v:48 passed。
  • git diff --check:通过。

范围与文档

  • 代码只修改工单声明的 Brain 输入、配置和测试路径;Sense、Bell、contracts/ 均未修改或启动。
  • Wiki Architecture-and-Code-Map 已更新并回读 revision be75a3671d1d89490ec94d6de2dc5c8d08b3d5d0。
  • Wiki Local-Development-and-Verification 已更新并回读 revision fbdc9b41e682ee35490a7589fa06154a7efa65b4。
  • Product-Requirements / Product-Roadmap 的“已交付”状态待用户验收后再更新,避免提前声明交付。
  • 根级 docs/ 镜像不在 #11 的 write_paths 内,按工单约定留给统一协调同步;本提交不越权写入。
  • 正式 Sense→Brain 契约、RTSP、解码、模型、事件和跨项目投递仍在后续工单/协调范围。

当前 #11 保持打开并进入“待验收”;PR 合并不代替用户验收。

## 最终实施证据(待验收,2026-08-28) ### 实现与提交 - 功能提交:`7964d61cabfeb6aa937829d74793a8125bc15fab`。 - PR:#126,已合入 `dev@52b368068e4c6a03b571573a68bc8188d5ff8a8c`。 - 新增 Brain 内部 `brain.internal.input/v1` 配置、确定性 RGB 合成输入、本地文件分块输入、输入工厂、EOF/取消和安全错误边界。 - 配置包含逻辑设备、Profile/分辨率、区域与方向线,拒绝密码、token、secret 等凭据字段;测试不含客户视频、个人数据或机器路径。 ### 验证结果 - `Brain\.venv\Scripts\python.exe -m pytest Brain/tests/input Brain/tests/config -q`:12 passed。 - `Brain\.venv\Scripts\python.exe -m pytest Brain/tests -q`:15 passed, 1 skipped;跳过项是既有 CUDA smoke,本机未安装/验证 CUDA wheel,不影响 #11 的 CPU/标准库输入范围。 - `python dev_scripts/harness.py check --strict`:通过。 - `python -m unittest discover -s tests -v`:48 passed。 - `git diff --check`:通过。 ### 范围与文档 - 代码只修改工单声明的 Brain 输入、配置和测试路径;Sense、Bell、`contracts/` 均未修改或启动。 - Wiki `Architecture-and-Code-Map` 已更新并回读 revision `be75a3671d1d89490ec94d6de2dc5c8d08b3d5d0`。 - Wiki `Local-Development-and-Verification` 已更新并回读 revision `fbdc9b41e682ee35490a7589fa06154a7efa65b4`。 - Product-Requirements / Product-Roadmap 的“已交付”状态待用户验收后再更新,避免提前声明交付。 - 根级 `docs/` 镜像不在 #11 的 write_paths 内,按工单约定留给统一协调同步;本提交不越权写入。 - 正式 Sense→Brain 契约、RTSP、解码、模型、事件和跨项目投递仍在后续工单/协调范围。 当前 #11 保持打开并进入“待验收”;PR 合并不代替用户验收。
Author
Owner

用户验收结论(2026-08-28 22:24:41 +08:00)

  • 确认人:ila
  • 结论:#11 验收通过。
  • 验收基线:dev@52b368068e4c6a03b571573a68bc8188d5ff8a8c,PR #126。
  • 验收范围:确定性合成输入、显式本地文件输入、Brain 内部版本化配置、EOF/取消/错误和安全边界,以及工单记录的自动化测试。
  • Wiki:Product-Requirements revision ea4165c771860ce46384a195fe226ea0a7e2e959;Product-Roadmap revision 7140adacf63a9944e5bb2966b8d85f79e73b868d,均已在线回读。
  • 根级 docs/ 镜像仍按 #11 的 write_paths 约定由统一协调流程同步,本工单不越权写入。
  • 后续:#13 可开始;正式 Sense→Brain 契约仍不在本工单范围。

据此关闭 #11。

## 用户验收结论(2026-08-28 22:24:41 +08:00) - 确认人:ila - 结论:#11 验收通过。 - 验收基线:`dev@52b368068e4c6a03b571573a68bc8188d5ff8a8c`,PR #126。 - 验收范围:确定性合成输入、显式本地文件输入、Brain 内部版本化配置、EOF/取消/错误和安全边界,以及工单记录的自动化测试。 - Wiki:`Product-Requirements` revision `ea4165c771860ce46384a195fe226ea0a7e2e959`;`Product-Roadmap` revision `7140adacf63a9944e5bb2966b8d85f79e73b868d`,均已在线回读。 - 根级 `docs/` 镜像仍按 #11 的 write_paths 约定由统一协调流程同步,本工单不越权写入。 - 后续:#13 可开始;正式 Sense→Brain 契约仍不在本工单范围。 据此关闭 #11。
ila closed this issue 2026-08-28 22:24:42 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ila/yovision#11