Original prompt: 参考 macOS 最新操作系统,创建一个现代、有精美桌面和 UI 的浏览器内操作系统,命名为“AlSniper OS”;包含系统状态弹窗、时钟、底部快捷栏、主题切换、可交互 3D 太空射击游戏、Finder、计算器、设置、命令行终端和 App Store。
- 仓库没有既有应用源码或提交,采用 React 19 + Vite 8 + TypeScript 7。
- 3D 游戏采用 Three.js + React Three Fiber,桌面/窗口/应用由 React 与 Zustand 组成。
- 已完成:桌面壳、窗口管理、Dock、状态中心、时钟/日历/Focus、主题和响应式窗口约束。
- 已完成:Finder、Calculator、Settings、Terminal、App Store 与 Cosmic Vanguard 3D 射击游戏。
- 已验证:生产构建、15 个单元测试、Playwright 桌面关键路径、App Store 安装、主题切换、Terminal 命令、Calculator 键盘计算。
- 已验证游戏:
render_game_to_text/advanceTime、移动、射击、命中得分、生命、波次、暂停语义、重开以及实际游戏截图。 - 修复:Clock 重复 key 警告、非活动应用全局键盘冲突、游戏父级 pointer capture 阻断按钮点击、Calculator 默认窗口裁切。
- 发布复验:800×700 下 Finder 自动收起预览栏、工具栏无横向溢出且窗口与 Dock 保持间距;1440×900 下 Calculator 全部按键、历史和说明完整可见。
- 窄窗复验:基于窗口容器查询重排 Settings 与 App Store;390×700 下均无横向溢出,App Store 可滚动到安装操作并完成持久化安装。
- 最终门禁:
npm run typecheck、npm test(4 文件 / 15 测试)、npm run build全部通过;非游戏桌面关键路径控制台无 error/warning。 - 当前无功能 TODO。
- 优化前基线(1440×900、相同 Chromium headless 环境):桌面 idle 约 60 FPS;游戏开始界面约 22 FPS;游戏进行中约 23 FPS,P95 帧时间约 50 ms。
- 已保存 develop-web-game 官方客户端的优化前动作/状态/截图到
output/perf-baseline;后续使用同一动作序列对比。 - 已定位主要热路径:游戏固定步每帧触发 React/R3F 全树更新、R3F 与独立 rAF 双循环、高 DPR/抗锯齿,以及窗口 pointermove 高频写全局 Zustand。
- 游戏主循环已收敛为 R3F 单一帧时钟与固定步模拟;React 不再逐帧接收完整游戏状态,非运行态使用 demand rendering,暂停/开始界面稳定后为 0 WebGL draw call。
- 敌人、子弹与粒子已改为动态实例池和批量绘制;当前硬件 WebGL 实测约 6.8 draw calls/frame,质量控制具备 EMA、迟滞和冷却,MSAA 与不必要的高成本材质已移除。
- 窗口拖拽/缩放改为 requestAnimationFrame 合帧的局部 DOM 预览,只在 pointerup 提交一次全局状态;游戏窗口及交互期间不再执行无收益的背景模糊合成。
- 修复游戏启动点击误触发射击、重启/失焦残留输入、手动时钟非有限输入、键盘默认行为与密集碰撞路径;两次相同官方动作序列的最终状态哈希一致。
- 最终硬件性能门禁(Chromium 149、Intel D3D11、1440×900、DPR 1):运行与移动射击均约 170 FPS,P95/P99 约 6 ms,最长帧 6.3 ms,0 个 >20 ms 帧、Long Task 或 Long Animation Frame;暂停/Ready 为 0 draw call;重启 next-paint 中位数 8.1 ms。
- 最终终审修复:固定步时钟改用有理步进单位,
advanceTime(2000)与advanceTime(1000)两次严格等价;最小化窗口保持应用挂载,游戏自动暂停但完整保留玩家、敌人、分数与波次会话。 - 最终验证:
npm run typecheck、npm test(6 文件 / 23 测试)、npm run build、官方游戏客户端确定性回归、暂停/恢复/重启/最小化恢复、窗口拖拽/缩放及控制台检查全部通过。原始性能数据位于output/playwright/final-performance-results.json。 - 当前无功能或性能 TODO。
- 新增
src/game-platform四层共享基座:纯 TypeScript 的确定性 runtime、浏览器生命周期/自动化/fullscreen 适配、R3F 单循环/自适应 DPR/资源作用域,以及稳定序列化/回放/时间分片等价性 testkit。 - 新增零依赖原子脚手架
npm run game:create -- --id <kebab-id> --name "<name>";严格校验应用 id、保留名、路径穿越与目标冲突,生成失败不遗留半成品。 - 生成模板是共享平台的真实消费者,内建固定步模拟、单一 R3F 帧循环、demand 渲染、失焦/隐藏/停用清理、Fullscreen API、
advanceTime/render_game_to_text和确定性单测。 - Cosmic Vanguard 已迁移到共享 runtime、web 与 r3f 层;删除重复基础设施,同时保留玩法引擎、视觉 profile、操作方式、自动化 schema 与会话恢复语义。
- 已实际生成临时游戏并通过 typecheck、全部测试和生产构建后清理,证明脚手架产物不是示例伪代码;完整接入契约见
docs/games/README.md。 - 生产级硬化:同步推进限制为 240 tick / 4 秒且超限原子失败;发布观察者不可重入;Fullscreen 按目标隔离;R3F 非法 priority 快速失败;持续极慢前台帧可可靠触发画质降档;高位实例容量不会因浮点舍入低配。
- 最终门禁:7 项脚手架测试、17 文件 / 120 项 Vitest、typecheck 与 build 全部通过;真实生成临时游戏的独立 typecheck/测试通过并已精确清理;官方客户端两次动作回放状态哈希严格一致。
- 当前硬件性能复验:最新生产 chunk 在 Intel D3D11 / Chromium 149 下 Playing/Input 中位数约 170 FPS,P95/P99 6/6ms,0 Long Task/LoAF;Ready/Paused/Minimized/Restore 为 0 draw;0 console/page error。证据见
output/playwright/performance-gate-report.md。 - 当前无功能、架构或迁移 TODO。
- 根
AGENTS.md已收敛为短小、fail-closed 的$game-scaffold强制路由,避免所有非游戏任务常驻完整游戏策略上下文。 - 完整治理迁移到仓库标准路径
.agents/skills/game-scaffold;Skill 通过 frontmatter 精确触发,并按核心契约、新游戏、既有游戏/平台、验证四类 reference 渐进加载。 - 新游戏首写必须执行
npm run game:create;既有游戏禁止删除重生成;非 R3F 可替换渲染层但必须保留 domain/runtime/web/testkit;任何旁路必须事前获得用户明确批准。 tools/game-scaffold/agents-policy.test.mjs同时防止根路由丢失、详细策略回流AGENTS.md、Skill 触发描述退化、reference 孤儿化或关键契约被删除。- 验证:Codex 官方 Skill 校验通过;Node 测试 10/10(治理 3 + 生成器 7)、Vitest 17 文件 / 120 项、typecheck 与生产 build 全部通过。
- 当前无治理 TODO。
- 新增传输无关的 AGAP v1:权威状态 → 座位投影 → seat-bound
ParticipantPort→ Human/Agent adapter;两类参与者共享同一观察、合法动作、回执与事件语义,参与者类型只用于审计和展示。 - 安全边界明确:浏览器本地模式保证正确投影与防止意外旁路,不宣称能对抗同设备恶意所有者;正式隐藏信息竞技应把 Match Authority 移到独立进程或远端服务。
- 第一款 Agent 原生游戏“斗地主”已完成:
classic-3p-score-bid@1完整规则、14 类牌型、确定性发牌、独立农民加倍/地主再加倍、炸弹/王炸、春天/反春天与零和结算。 - 默认一名 Human 与两名确定性内置 Agent 可完整混玩;UI、键盘、内置 Agent 全部通过同一个 AGAP 提交通道,React、ARIA 和自动化文本只消费 seat-0 投影。
- 斗地主已注册为独立 lazy app,并通过 App Store 的安装/打开闭环进入 OS;不常驻 Dock。
- 仓库脚手架现默认生成 AGAP adapter、单席投影与 Human/Agent action-parity contract test;
$game-scaffoldSkill 的触发描述已覆盖 AGAP/ParticipantPort 共玩任务。 - 公共脚手架使用唯一
agap-contract-probe两次真实生成验证,首次发现并修复模板类型推断缺陷,复验 6/6 与全仓 typecheck 通过后精确清理。 - 真实 Chromium 完成从叫分到结算的整局、App Store 安装启动、360×720 响应式、隐藏信息 ARIA 检查和截图人工审阅;官方游戏客户端两次确定性状态/画面哈希严格一致。
- DOM 牌桌最终性能样本 P95/P99 约 6/6 ms、最大 6.6 ms、0 Long Task、0 Canvas/WebGL;生产斗地主 JS chunk 51,324 bytes,SHA-256
5D433F9142EABF452282CEB7F7F58096089B9F9DEC95C660F8CC7A7CEF0E146C。 - 最终门禁:Node 10/10、Vitest 26 文件 / 199 项、typecheck 与生产 build 全部通过;AGAP 平台、架构、安全、规则/脚手架与斗地主适配独立终审均 PASS。
- 审计闭环:公开
matchId与秘密 seed 解耦并由 Web Crypto 生成;重入错误保持AGAP_REENTRANT_OPERATION;实时倍率公开计入炸弹/王炸;App Store 明确本地练习信任边界。 - 脚手架闭环:AGAP Host 是命令模板唯一玩法权威,fixed-step runtime 只推进 presentation time,所有 UI/Scene/HUD/自动化文本从 seat-bound 投影读取;唯一生成 probe 已完整验证并精确清理。
- 最终契约 probe
final-contract-probe-20260726通过生成测试 6/6 与 typecheck,随后按精确路径清理;仓库无 probe/temp 游戏目录。 - 真实浏览器最终验收:Fullscreen/Escape、inactive freeze/recovery、同步 manual-clock takeover、按钮 Enter/Space 原生语义、7 次全新 Host/ID 新局(中位数 39.9 ms/最大 46.5 ms)、0 console error;官方客户端两次状态与截图哈希一致。
- 新局/时钟防回退:编排单测证明 fresh Host/matchId/seed/port 且旧 terminal Host 不变;进行中 New Round 在 UI 与 handler 双层禁用,防止人类获得 Agent Port 不具备的弃局换牌能力;sticky clock 单测证明旧 interval closure 也会同步服从 manual ownership。
- 最终全量门禁更新:Node 10/10、Vitest 26 文件 / 199 项、typecheck 与 build 通过;斗地主 chunk 51,324 bytes,SHA-256
5D433F9142EABF452282CEB7F7F58096089B9F9DEC95C660F8CC7A7CEF0E146C。