mirror of
https://github.com/xmanrui/OpenClaw-bot-review.git
synced 2026-08-14 00:47:49 +00:00
6.9 KiB
6.9 KiB
OpenBug 迁移到 OpenClaw-bot-review 的设计方案
1. 背景与目标
1.1 背景
OpenBug当前是 Windows WPF 桌面透明覆盖层应用(net8.0-windows),核心是程序化虫群动画与行为系统。- 当前项目是 Next.js Web 应用,已具备
pixel-office的 Canvas 渲染与实体状态机能力(角色、宠物、交互彩蛋)。
1.2 目标
- 将 OpenBug 的核心体验迁移到 Web:
- 程序化虫子(IK 风格步态视觉 + 群体行为)
- 低干扰背景陪伴(focus companion)
- 可配置数量/行为权重/开关
- 与现有 Pixel Office 共存并可扩展
1.3 非目标(首期不做)
- 不做 Windows 原生托盘能力(用 Web UI 替代)
- 不做真正系统级“桌面覆盖”(浏览器沙箱不支持)
- 不做逐行 1:1 C# 代码搬运(改为 TypeScript 重构)
2. 迁移策略(推荐)
采用 “行为内核迁移 + 渲染层重建”:
- 行为与数据结构从 C# 迁移到 TS(可测试、可演进)
- 渲染直接接入现有
pixel-officeCanvas pipeline - 分阶段上线:先可见、再拟真、再性能优化
理由:
- 当前仓库已有成熟循环:
OfficeState.update(dt)+renderFrame(...) - 直接复用能减少接线成本,避免并行维护两套引擎
3. 架构设计
3.1 模块落位
新增目录建议:
lib/pixel-office/bugs/types.tslib/pixel-office/bugs/config.tslib/pixel-office/bugs/bugEntity.tslib/pixel-office/bugs/bugBehavior.tslib/pixel-office/bugs/spatialGrid.tslib/pixel-office/bugs/pheromoneField.tslib/pixel-office/bugs/ik2d.tslib/pixel-office/bugs/renderer.ts
接入点:
lib/pixel-office/engine/officeState.ts- 持有
bugSystem,在update(dt)中 tick
- 持有
lib/pixel-office/engine/renderer.ts- 在角色层之前或之后绘制虫群(可配置层级)
app/pixel-office/page.tsx- 提供 UI 控件(开关、数量、性能模式)
3.2 数据模型(核心)
BugEntity(建议):
idx,y, vx,vy, headingbehaviorType: social | loner | edgeDwellerstate: idle | moving | interactingspeedScale, turnScalelegs[6](目标点、关节点、相位)color, sizeScaletrailTargetId?(跟随对象)visible
BugSystemState:
bugs: BugEntity[]spatialGridpheromoneFieldspawnTimerswarmEventTimer/cooldownpaused
3.3 更新循环
每帧:
- 建立/更新空间网格(邻域查询)
- 更新信息素场(蒸发)
- 每只虫子执行行为决策:
- 分离/对齐/凝聚(Boids)
- 边缘偏好
- 游走噪声
- 鼠标斥力(若开启)
- 移动学更新(位置/朝向)
- 步态与 IK 更新(腿端落点 + 两段骨骼解算)
- 写回渲染缓存
4. 功能映射(OpenBug -> Web)
4.1 行为系统映射
AntBehaviorType->BugBehaviorType(保持三类)_stateTimer/_wanderTimer-> JS 定时器字段_swarmActive+ 随机事件 -> 保持,参数可调SpatialGrid.Query-> TS 版本网格索引PheromoneField-> TS 2D 栅格(TypedArray)
4.2 生命周期映射
- 初始 5 只、定时生成(默认 10 分钟)
- 最大数量(建议首发上限 120,性能模式可扩)
- 可手动加减数量(替代托盘菜单)
4.3 UI 替代托盘
- 在 Pixel Office 顶栏新增 “Bug Panel”:
Enable Bugs开关Count数量滑条Spawn Interval生成间隔Performance Mode(low/medium/high)Hide/Show(暂停更新+渲染)
5. 渲染方案
5.1 首发渲染分级
V1(快速上线)
- 简化虫体:头/胸/腹 3 段椭圆 + 6条折线腿
- 不引入复杂抗锯齿特效
- 目标:先保证行为和性能
V2(增强拟真)
- 二段腿 IK 过渡插值
- 步态相位优化(tripod gait)
- 颜色与体型渐进(随生命周期)
V3(视觉精修)
- 轻微阴影/景深错觉
- 群聚通信短暂停顿动作
- 可选“调试可视化层”(邻域半径、信息素热力)
5.2 层级建议
- 地板 -> 家具 -> 虫群 -> 角色/宠物(可配置)
- 避免覆盖关键交互热点(白板/时钟/模型面板)
6. 性能设计
6.1 预算
- 目标设备:中端笔记本浏览器
- 指标:
- 60 FPS(目标)/ 30 FPS(可接受下限)
- Bug 100 只时交互无明显卡顿
- CPU 占用可控(空闲不应飙升)
6.2 手段
- 邻域查询必须走 Spatial Grid,禁止 O(n²) 全量扫描
- 信息素采用稀疏更新/低分辨率栅格
- IK 与行为 decouple:例如行为 30Hz、渲染 60Hz
requestAnimationFrame内减少对象分配,优先复用数组- Debug overlay 默认关闭
7. 持久化与配置
配置存储优先级:
localStorage(用户本地偏好)- 可选后端配置接口(后续)
建议键:
pixel-office-bugs-enabledpixel-office-bugs-countpixel-office-bugs-modepixel-office-bugs-spawn-interval
8. 开发里程碑
M1:最小可运行(2-3 天)
- BugSystem 基础数据结构
- 随机游走 + 边界处理
- Canvas 简化渲染
- 控制面板开关与数量调节
M2:行为与生态(3-5 天)
- SpatialGrid 邻域
- Boids 三力 + 三类行为人格
- 定时生成、上限控制、暂停/恢复
M3:IK 与拟真(4-6 天)
- 二段腿 IK
- 三角步态相位
- 信息素场与 trail follow
M4:优化与验收(2-3 天)
- 性能 profiling
- 参数调优与默认值固化
- 文档与回归测试
9. 风险与应对
- 浏览器性能不足(高数量卡顿)
- 应对:分级渲染、降低更新频率、上限保护
- 与现有角色交互冲突(命中检测/视觉遮挡)
- 应对:虫群层级可切换;点击命中先走业务实体后走虫群
- 过度拟真导致开发周期失控
- 应对:严格按 M1->M4 递增交付,不跨阶段
- 参数过多难维护
- 应对:集中
config.ts,提供 presets(focus/calm/chaos)
10. 验收标准(首版)
功能验收:
- 能开启/关闭虫群系统
- 可调整数量,新增/减少即时生效
- 至少支持三类行为偏好(social/loner/edge)
- 定时生成与上限生效
性能验收:
- 80 只虫时页面操作无明显掉帧
- 连续运行 30 分钟无内存持续增长异常
体验验收:
- 默认参数不抢主界面注意力
- 支持“隐藏虫群”用于演示/录屏
11. 建议的实施顺序(落地)
- 先上
BugSystem空壳和最简渲染(M1) - 接入
officeState.update和renderer.renderScene - 加 UI 控制面板
- 再迁移 Boids + Grid + 信息素
- 最后做 IK 精修和性能调优
12. 可选扩展
- “专注模式”预设:低密度、低速度、低干扰
- “混乱模式”预设:高密度、群聚事件频繁
- 和现有宠物系统联动(猫/龙虾对虫群反应)
- 统计页新增“Bug 活跃度”指标