Files
Genarrative/docs
lhk229 323db581fa
Project CI / Repository checks (pull_request) Successful in 1m9s
Project CI / Frontend tests (pull_request) Successful in 2m54s
Project CI / Backend tests (pull_request) Successful in 3m56s
Project CI / Native shell tests (pull_request) Failing after 10m41s
修复 M1A-2 引入的回归:未知工具名不是身份违规
background_agent_runtime_persists_receipts_for_rejected_actions 在本分支
恒失败(3/3),master 通过。首个 tool-plan 请求能收到,动作被拒绝后第二次
Provider follow-up 不再发出,测试等待超时。不是已知的 mock-LLM 本机 flake。

根因是 M1A-2 给主循环加身份门时用了 agent_runtime_tool_allowed_for_agent,
而该函数对非 project-planning 的 Agent 退化成「这个工具名是否已知」。于是
普通 Agent 调用一个不存在的工具(模型编名字,常见协议错误)被判成身份违规,
main_loop 直接 mark_needs_reconciliation 并返回 NeedsReconciliation,整个
run 中断。现役语义是未知工具产出一条 rejected observation、run 继续、由下
一轮 tool-plan 收束。

两类必须分开:身份禁止某个已知工具是安全边界,命中即硬拒;工具名根本不存在
是可恢复的协议错误,不得升级成中断整个 run。

新增 agent_runtime_tool_rejected_by_agent_identity,只在「该 Agent 带 exact
allowlist 且工具不在其中」时为真。三个命中即中断或整体拒绝的调用点改用它:
main_loop(本次回归直接原因)、provider_action_batch 的 identity_block(原会
把普通 Agent 的未知工具从 rejected 误判成 blocked)、runtime_tools/policy
(原本就正确限定 planning,改为复用同一判据以免再次分叉)。parallel_ledger
内部批次资格判定不变,其下一行的 command_id 检查本就拦得住。

planning 侧约束未放松,两条单测分别钉死普通 Agent 与 planning 两侧。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 06:35:45 +00:00
..
2026-07-17 21:03:15 +08:00
2026-08-13 20:11:51 +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。历史文件不做无关批量重命名;本次涉及的旧文档可直接删除或在当前入口中取消引用。