Files
Genarrative/docs
lhk229 53f2ba30c3
Project CI / Backend tests (pull_request) Failing after 14s
Project CI / Repository checks (pull_request) Failing after 14s
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
修复 Agent 主循环栈溢出:专用 worker 判据从枚举入口改为不变量
CI 上 background_agent_runtime_recovers_stale_running_before_pending_task 在
tokio-rt-worker 栈溢出。根因是 recovery_scan.rs 手写 tauri::async_runtime::spawn 直接
跑 drain_game_creator_agent_background_tasks——正是仓库规定必须上 16 MiB 专用 worker
的那个 future。pitfalls 2026-08-03 按入口枚举了三个(普通后台任务、静态委派子任务、
manifest ready-task 首次执行),恢复重启是第四个,从未被列进去;漏掉一个入口不会产生
任何信号,故判据改写为不变量:所有会进入 Agent 主循环的 future 必须在
agent-runtime-worker-* 专用线程上轮询。

改动:
- 统一常量 AGENT_RUNTIME_BACKGROUND_WORKER_STACK_BYTES
- spawn_next_*_with_lock 改用专用线程;签名保持 -> (),8 个调用点不动。该入口是
  best-effort 幂等语义(拿不到锁即返回、后续 wake 重试),建线程失败只需记录并随闭包
  释放锁,无需交还锁、也就不需要握手
- recovery_scan.rs 两处手写 spawn 收敛为 helper 调用。恢复重启顺带补上首轮轮询握手:
  原写法把执行锁 move 进一个无人保证会被轮询的 future,运行时关停时 run 会永远停在
  running 且无主

回归钉不变量而非钉余量:drain 入口在 cfg(test) 下记录线程名,用例断言必须以
agent-runtime-worker- 开头。变异验证——改回手写 spawn 且 RUST_MIN_STACK=16MiB(因而不
溢出)时,用例仍以 ["tokio-rt-worker", "tokio-rt-worker"] 失败。

实测(同机、二分 RUST_MIN_STACK,默认栈 2048 KiB):
- started 变体:master 需 1536-1792 KiB,修复前 HEAD 需 2048-2176 KiB
- 队列 drain:master 需 1280-1536 KiB,修复前 HEAD 需 1792-1856 KiB,余量已不足 256 KiB
- 修复后两条用例在 1024 KiB(半个默认栈)下通过

同过滤器 A/B(runtime_actions + collaboration,同一 skip):
- 修复前 HEAD:19 failed,且在 planning_strategy 处栈溢出 abort
- 修复后:289 passed / 0 failed

修复前分支实际有三处溢出点(recovery、response_stream::provider_handoff_*、
planning_strategy::tool_planning::*),CI 只报了最先撞上的那个;三处修复后均通过。
共享 tokio pool 不再被长时间占用,mock LLM 超时类失败同时大幅减少。

需回流 master:master 同样存在恢复重启走默认栈与 drain_next_* 余量偏低,只是尚未触发。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 08:04:06 +00:00
..
2026-07-17 21:03:15 +08:00
2026-08-15 11:43:58 +08:00
2026-08-12 03:48:19 +00:00

文档总览

docs/ 只把当前融合文档和仍在维护的专题文档作为实现依据。旧创作模板、旧创作入口及其专属服务文档仅保留为历史材料,不再要求继续实现或兼容。

必读入口

  1. Agent 工作入口与执行准则
  2. 当前产品与工程约束
  3. server-rs 与 SpacetimeDB 数据契约
  4. 平台入口与玩法链路
  5. 本地开发验证与生产运维
  6. AI 游戏创作项目开发工作台 PRD
  7. AI 游戏创作智能体 App 实施计划
  8. 客户端素材创作无限画布阶段一合同

团队长期约定、决策、流程和排障摘要统一从 项目记忆入口 读取。代码、当前融合文档与项目记忆冲突时,以代码和最新融合文档为准。

当前专题

AI 游戏创作与 Agent Runtime

图片编辑器与 Agent

后端与公开数据

后台、宿主壳与运维

测试与协作

历史文档边界

  • 旧创作模板、旧创作入口、旧运行态和旧素材生成方案不再从本页索引,也不再作为修复目标。
  • maincloud、旧 Node/Express/PostgreSQL/Go 后端和人工 spacetime --root-dir 口径均已废弃。
  • 历史文档不得覆盖当前融合文档、代码契约或 docs/project-memory/shared-memory/decision-log.md 中更新的决策。

命名规则

后续新增 Markdown 文档文件名使用 【标签名】中文标题-日期.md。历史文件不做无关批量重命名;本次涉及的旧文档可直接删除或在当前入口中取消引用。