解决platform-llm和策划agent reasoning问题,并修复若干bug #350

Merged
lhk229 merged 34 commits from opt/design_agent into master 2026-09-15 00:50:36 +08:00
Owner
No description provided.
lhk229 added 8 commits 2026-09-14 13:09:27 +08:00
新增 Issue #331 的分步里程碑方案

明确策划 Agent 与 GameAgent 的兼容边界

补充验收标准、风险与回滚点
为 LlmStreamDelta 和 LlmRunResponse 增加独立 reasoning 字段

新增默认关闭的 reasoning 捕获开关并保持请求体不变

补齐 AGC、api-server 和 handoff 构造点及第一轮验收计划
解析 Chat 与 Responses 的 reasoning 字段和流式事件

保持正文、工具调用与 GameAgent 默认行为不变

补充 reasoning 分流、终态快照与兼容开关测试
验证 neutral adapter 默认关闭 reasoning 捕获

补充带 reasoning 上游响应的正文流回归覆盖

确认 GameAgent 与 AGC Runtime 继续只消费正文字段
仅为策划 Provider 请求开启 reasoning 捕获

将流式与终态 reasoning 映射到已有折叠事件

补齐回合重试、错误和项目切换的状态清理测试
补充 Responses reasoning 与工具调用共存回归测试

补充策划 Runtime 重试清理 reasoning 测试

同步 platform-llm README 与策划 Agent 技术方案

记录第五轮验收证据与未验证边界
删除已完成的五份实施计划

保留里程碑规范与最终验收证据
Merge remote-tracking branch 'origin/master' into opt/design_agent
Project CI / Repository checks (pull_request) Successful in 2m35s
Project CI / Frontend tests (pull_request) Successful in 3m20s
Project CI / Backend tests (pull_request) Successful in 8m8s
Project CI / Native shell tests (pull_request) Successful in 20m14s
1b7bc95914
lhk229 added 1 commit 2026-09-14 13:24:17 +08:00
Merge branch 'master' into opt/design_agent
Project CI / Repository checks (pull_request) Successful in 2m51s
Project CI / Frontend tests (pull_request) Successful in 3m15s
Project CI / Backend tests (pull_request) Successful in 5m26s
Project CI / Native shell tests (pull_request) Successful in 21m10s
fd88e516b8
lhk229 marked the pull request as work in progress 2026-09-14 13:34:29 +08:00
lhk229 added 5 commits 2026-09-14 15:18:56 +08:00
让策划 Agent 回合在调用 Runtime 前等待 design-agent-update 监听注册完成

覆盖普通消息、澄清、重试和阶段批准入口

保持 GameAgent、Direct/Codex 与退役入口行为不变
让最终 DesignView 等待临时正文播放完成后再提交正式消息

为非流式返回复用策划 Agent 的前端伪流式显示

保持 reasoning、GameAgent 和其他 Agent 路径不变
按项目与回合绑定 reasoning 事件

保留回合结束后的思考过程并在新回合清理

补充默认折叠的展开收起交互与定向测试

更新推理与正文分离里程碑进度
Merge remote-tracking branch 'origin/master' into opt/design_agent
Project CI / Repository checks (pull_request) Successful in 3m13s
Project CI / Frontend tests (pull_request) Successful in 3m41s
Project CI / Backend tests (pull_request) Successful in 6m19s
Project CI / Native shell tests (pull_request) Failing after 17m39s
09a9fa7b10
lhk229 added 2 commits 2026-09-14 17:31:36 +08:00
修复策划 Agent 历史思考位置
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m8s
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust tests (pull_request) Has been cancelled
45d7dc2a63
按用户回合与响应顺序绑定持久化 reasoning,跨越 tool-only 响应。

合并同一正文对应的多段 reasoning,避免无归属内容堆积在消息列表底部。

补充策划 Runtime 顺序回归测试并更新里程碑文档。
lhk229 added 1 commit 2026-09-14 17:38:34 +08:00
Merge branch 'master' into opt/design_agent
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 4m57s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 4m27s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 4m37s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m32s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 3m59s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m23s
Project CI / Frontend tests (pull_request) Successful in 4m12s
Project CI / Repository checks (pull_request) Successful in 3m20s
Project CI / Native shell tests (pull_request) Successful in 6m40s
Project CI / Backend tests (pull_request) Successful in 7m27s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m50s
158148e0c9
lhk229 changed title from WIP: 解决策划agent reasoning问题 to WIP: 解决策划agent reasoning问题,并修复若干bug 2026-09-14 19:42:29 +08:00
lhk229 added 4 commits 2026-09-14 19:52:40 +08:00
新建目录统一使用当前进程 owner/DACL 加固

自动项目根创建后立即执行本地权限初始化

补充 Windows 私有对象权限决策记录
策划产物登记仅在实际变更时推进项目 revision

切换到 GameAgent 时保持 manifest 与 revision 配对

补充幂等切换回归测试与技术文档
Merge remote-tracking branch 'origin/master' into opt/design_agent
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
8ad8124a04
lhk229 added 1 commit 2026-09-14 19:58:42 +08:00
Merge branch 'master' into opt/design_agent
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 4m39s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 4m39s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 4m41s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m35s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 3m49s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m23s
Project CI / Repository checks (pull_request) Successful in 3m5s
Project CI / Frontend tests (pull_request) Successful in 4m4s
Project CI / Native shell tests (pull_request) Successful in 6m37s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m21s
Project CI / Backend tests (pull_request) Successful in 7m34s
9ad3313ac0
lhk229 changed title from WIP: 解决策划agent reasoning问题,并修复若干bug to WIP: 解决platform-llm和策划agent reasoning问题,并修复若干bug 2026-09-14 20:15:42 +08:00
Author
Owner

审查意见

整体结论:改动目标清晰(Provider reasoning 与正文分离 → 策划 Agent 展示),实现、测试、文档(platform-llm README 第 5 条、技术方案第 15 节、decision-log 补充、里程碑计划文档)同步齐全。已验证:cargo test -p platform-llm --lib 153 个测试全部通过,npm run check:encodinggit diff --check 干净。reasoning 不进 delta_text / accumulated_text / 正式 assistant message / 会话 history,GameAgent、Direct/Codex 与通用 response stream 以空串填充保持行为不变,边界守得好。

以下问题建议处理后再合入:

1.【主要】多段 reasoning summary 会被 .done 快照整体覆盖而丢段

server-rs/crates/platform-llm/src/lib.rs consume_stream_events 中的快照应用逻辑:

if snapshot != accumulation.reasoning {
    reasoning_delta = if accumulation.reasoning.is_empty() { ... }
        else { snapshot.strip_prefix(accumulation.reasoning.as_str()).unwrap_or_default().to_string() };
    accumulation.reasoning = snapshot;
}

response.reasoning_summary_text.done每个 summary part 各发一个,快照只携带该 part 的完整文本(事件里带 summary_index,当前解析未使用)。当一次响应有多段 summary 时:part1 的 delta 已累加 → part2 的 delta 继续追加 → part2 的 done 到达时 snapshot(仅 part2 文本)不等于累计值(part1+part2),strip_prefix 失败 → reasoning_delta 变成空串,且 accumulation.reasoning 被覆盖成只剩 part2,part1 的推理文本从累计值和流式 UI 中消失。

终态 response.completed 的快照是全部段落拼接,通常能把最终值修正回来;但如果网关只转发增量事件、终态 output 里 reasoning 被省略(encrypted/redacted 场景),最终 response.reasoning 会永久丢段。

建议:只在 accumulation.reasoning.is_empty()snapshot.starts_with(&accumulation.reasoning) 时应用快照,否则忽略该 done 快照、信任已累加的 delta;或按 summary_index 分段跟踪再拼接。无论哪种,都建议补一个“两段 summary + done”的回归测试。

2.【次要】#[allow(dead_code)] 保留的兼容包装

parse_chat_completions_response / parse_responses_response 现在只剩测试调用,非测试构建靠 #[allow(dead_code)] 压制。按仓库“四不写”约定,建议直接删掉这两个包装,存量测试改用 _with_capture(..., false, ...);或至少改成 #[cfg(test)] 限定,避免给后续读者留下“这是公开保留入口”的错觉。

3.【次要】Anthropic 路径对 capture_reasoning 静默无效

parse_anthropic_response 完全忽略 capture 开关(thinking 块不进 reasoning 字段)。当前策划 Runtime 不走 Anthropic 没问题,但如果后续允许 Anthropic provider,UI 会永远没有思考过程且无任何信号。建议在 README 第 5 条或代码注释里点明“Anthropic 暂不捕获 reasoning 是刻意范围”。

4.【观察项】register_design_artifacts_at 的 changed 判定不含文件内容

assets.rs 的 changed 只比较 kind / media_type / source 元数据。若策划 Agent 重写了 design_artifacts 下已有文件的内容(路径、kind、media_type 均不变),切换到 game 时不会推进 revision。如果 revision 消费方只关心 manifest 条目本身则无影响,请确认这是预期语义;否则需要考虑内容哈希或 mtime 参与判定。

5.【观察项】designAgentEventSubscriptionReady 的时序兜底

App.tsx 中 effect 清理会把 ready ref 置 null,之后再调用 designAgentEventSubscriptionReady() 会创建一个在下一次订阅 effect 运行前永不 resolve 的新 promise。现有调用点(continue / decide_design_phase)都在策划界面激活期内,实际不会触发;后续新增调用点时请注意这个隐含前提。


其余部分(前端打字机收尾后再落地 view 的 pending 机制、重试/失败路径清空 reasoning、历史 reasoning 按回合内响应顺序配对、UAC 修复与本进程 harden 决策、重复切换不重复推进 revision)实现与测试都对得上,LGTM。

## 审查意见 整体结论:改动目标清晰(Provider reasoning 与正文分离 → 策划 Agent 展示),实现、测试、文档(`platform-llm` README 第 5 条、技术方案第 15 节、decision-log 补充、里程碑计划文档)同步齐全。已验证:`cargo test -p platform-llm --lib` 153 个测试全部通过,`npm run check:encoding` 与 `git diff --check` 干净。reasoning 不进 `delta_text` / `accumulated_text` / 正式 assistant message / 会话 history,GameAgent、Direct/Codex 与通用 response stream 以空串填充保持行为不变,边界守得好。 以下问题建议处理后再合入: ### 1.【主要】多段 reasoning summary 会被 `.done` 快照整体覆盖而丢段 `server-rs/crates/platform-llm/src/lib.rs` `consume_stream_events` 中的快照应用逻辑: ```rust if snapshot != accumulation.reasoning { reasoning_delta = if accumulation.reasoning.is_empty() { ... } else { snapshot.strip_prefix(accumulation.reasoning.as_str()).unwrap_or_default().to_string() }; accumulation.reasoning = snapshot; } ``` `response.reasoning_summary_text.done` 是**每个 summary part 各发一个**,快照只携带该 part 的完整文本(事件里带 `summary_index`,当前解析未使用)。当一次响应有多段 summary 时:part1 的 delta 已累加 → part2 的 delta 继续追加 → part2 的 done 到达时 `snapshot`(仅 part2 文本)不等于累计值(part1+part2),`strip_prefix` 失败 → `reasoning_delta` 变成空串,且 `accumulation.reasoning` 被覆盖成只剩 part2,part1 的推理文本从累计值和流式 UI 中消失。 终态 `response.completed` 的快照是全部段落拼接,通常能把最终值修正回来;但如果网关只转发增量事件、终态 output 里 reasoning 被省略(encrypted/redacted 场景),最终 `response.reasoning` 会永久丢段。 建议:只在 `accumulation.reasoning.is_empty()` 或 `snapshot.starts_with(&accumulation.reasoning)` 时应用快照,否则忽略该 done 快照、信任已累加的 delta;或按 `summary_index` 分段跟踪再拼接。无论哪种,都建议补一个“两段 summary + done”的回归测试。 ### 2.【次要】`#[allow(dead_code)]` 保留的兼容包装 `parse_chat_completions_response` / `parse_responses_response` 现在只剩测试调用,非测试构建靠 `#[allow(dead_code)]` 压制。按仓库“四不写”约定,建议直接删掉这两个包装,存量测试改用 `_with_capture(..., false, ...)`;或至少改成 `#[cfg(test)]` 限定,避免给后续读者留下“这是公开保留入口”的错觉。 ### 3.【次要】Anthropic 路径对 `capture_reasoning` 静默无效 `parse_anthropic_response` 完全忽略 capture 开关(thinking 块不进 `reasoning` 字段)。当前策划 Runtime 不走 Anthropic 没问题,但如果后续允许 Anthropic provider,UI 会永远没有思考过程且无任何信号。建议在 README 第 5 条或代码注释里点明“Anthropic 暂不捕获 reasoning 是刻意范围”。 ### 4.【观察项】`register_design_artifacts_at` 的 changed 判定不含文件内容 `assets.rs` 的 changed 只比较 `kind` / `media_type` / `source` 元数据。若策划 Agent 重写了 `design_artifacts` 下已有文件的内容(路径、kind、media_type 均不变),切换到 game 时不会推进 revision。如果 revision 消费方只关心 manifest 条目本身则无影响,请确认这是预期语义;否则需要考虑内容哈希或 mtime 参与判定。 ### 5.【观察项】`designAgentEventSubscriptionReady` 的时序兜底 `App.tsx` 中 effect 清理会把 ready ref 置 null,之后再调用 `designAgentEventSubscriptionReady()` 会创建一个在下一次订阅 effect 运行前永不 resolve 的新 promise。现有调用点(continue / decide_design_phase)都在策划界面激活期内,实际不会触发;后续新增调用点时请注意这个隐含前提。 --- 其余部分(前端打字机收尾后再落地 view 的 pending 机制、重试/失败路径清空 reasoning、历史 reasoning 按回合内响应顺序配对、UAC 修复与本进程 harden 决策、重复切换不重复推进 revision)实现与测试都对得上,LGTM。
lhk229 added 4 commits 2026-09-14 20:54:46 +08:00
按summary_index独立累计reasoning
补充多段summary回归测试与说明
传递capture_reasoning并解析thinking内容
增加非流式与流式推理回归测试
移除仅测试使用的LLM响应解析包装
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 4m52s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 4m30s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 4m42s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m34s
Project CI / Backend tests (pull_request) Failing after 12s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 3m56s
Project CI / Repository checks (pull_request) Failing after 11s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m3s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m55s
Project CI / Frontend tests (pull_request) Successful in 4m42s
Project CI / Native shell tests (pull_request) Successful in 6m56s
8c3661c3cb
删除两个仅固定关闭推理捕获的薄包装

测试调用显式传入 capture_reasoning 参数
lhk229 added 2 commits 2026-09-14 21:58:15 +08:00
分离业务读取与订阅代次创建
避免清理窗口悬挂或提前请求
Merge remote-tracking branch 'origin/master' into opt/design_agent
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 5m18s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 5m22s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 5m24s
Project CI / Backend tests (pull_request) Failing after 12s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 5m45s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m39s
Project CI / Repository checks (pull_request) Failing after 19s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m1s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m10s
Project CI / Frontend tests (pull_request) Successful in 4m50s
Project CI / Native shell tests (pull_request) Successful in 7m19s
9e4f06b3e1
Author
Owner

重审(9e4f06b3e,含 4 个修复提交)

上一轮意见的处理情况逐条核对:

  1. 多段 reasoning summary 丢段:已按 summary_index 分段独立累计(reasoning_summary_parts: BTreeMap<u64, String>),单段 .done 只校正对应段,不再整体覆盖;回归测试 stream_run_keeps_multiple_responses_reasoning_summary_parts 还特意让终态 response.completed 不带 reasoning,验证不依赖终态快照恢复。README 第 5 条已同步口径。
  2. Anthropic 静默无效capture_reasoning 已透传进 Anthropic 路径,非流式解析 thinking block、流式解析 thinking_delta,并各有开关开/关的回归测试。
  3. dead_code 包装:两个仅测试使用的包装已删除,存量测试显式传 capture_reasoning 参数。
  4. 订阅就绪时序designAgentEventSubscriptionReady() 改为只读当前代次(?? Promise.resolve()),promise 创建收归订阅 effect,清理窗口先重建下一代 promise 再挂起等待——避免了清理后业务调用自建悬挂 promise 的问题。

验证:cargo test -p platform-llm --lib 156 个测试全部通过(净增 3 个),npm run check:encodinggit diff --check 干净,PR 文件清单与上轮一致(28 个文件),merge master 未引入额外行为变化。

本轮新发现(均不阻塞合入)

【次要】summary_index 跨 reasoning item 会串段。 Responses 一次响应可以产出多个 reasoning item(典型场景:function_call 前后各一段推理),而 reasoning_summary_text.* 事件的 summary_index每个 item 内重新从 0 计,事件里真正区分 item 的是 item_id(当前解析未读)。两个 reasoning item 的 part 0 会在 BTreeMap 里撞到同一个 key,第二段的增量会拼到第一段的 part 里,流式中间态的拼接顺序和内容都会错。缓解因素:终态 response.completed 的整量快照 + 策划 Runtime 在 Ok(response) 时无条件再发一次最终 reasoning,最终落盘/展示值能自校正,只有流式中间过程可能短暂错乱。建议后续把累计 key 改成 (item_id, summary_index),或在 README 注明当前只保证终态正确。

【观察】单段快照“替换式校正”不发增量事件。 分段路径里若 .done 快照不是当前段累计值的前缀延伸(Provider 改写而非续写该段),strip_prefix 得到空 delta,段内容被替换但不产生 reasoning 事件,前端中间态要到回合结束才纠正。发生概率低,且有最终值兜底,仅记录。

【遗留·待确认】 上轮第 4 条(register_design_artifacts_at 的 changed 判定不含文件内容,内容重写但元数据不变时切换 game 不推进 revision)本轮未见处理。如果确认 revision 消费方只关心 manifest 条目、内容变化无需触发前端清单刷新,回复确认即可关闭此条。

结论:上轮 4 个阻塞/次要项均已妥善解决,剩余为新发现的小边界与一条待确认观察项,LGTM,可以合入(建议合入后把 (item_id, summary_index) 串段问题记为后续事项)。

## 重审(9e4f06b3e,含 4 个修复提交) 上一轮意见的处理情况逐条核对: 1. ✅ **多段 reasoning summary 丢段**:已按 `summary_index` 分段独立累计(`reasoning_summary_parts: BTreeMap<u64, String>`),单段 `.done` 只校正对应段,不再整体覆盖;回归测试 `stream_run_keeps_multiple_responses_reasoning_summary_parts` 还特意让终态 `response.completed` 不带 reasoning,验证不依赖终态快照恢复。README 第 5 条已同步口径。 2. ✅ **Anthropic 静默无效**:`capture_reasoning` 已透传进 Anthropic 路径,非流式解析 `thinking` block、流式解析 `thinking_delta`,并各有开关开/关的回归测试。 3. ✅ **dead_code 包装**:两个仅测试使用的包装已删除,存量测试显式传 `capture_reasoning` 参数。 4. ✅ **订阅就绪时序**:`designAgentEventSubscriptionReady()` 改为只读当前代次(`?? Promise.resolve()`),promise 创建收归订阅 effect,清理窗口先重建下一代 promise 再挂起等待——避免了清理后业务调用自建悬挂 promise 的问题。 验证:`cargo test -p platform-llm --lib` 156 个测试全部通过(净增 3 个),`npm run check:encoding`、`git diff --check` 干净,PR 文件清单与上轮一致(28 个文件),merge master 未引入额外行为变化。 ### 本轮新发现(均不阻塞合入) **【次要】`summary_index` 跨 reasoning item 会串段。** Responses 一次响应可以产出多个 reasoning item(典型场景:function_call 前后各一段推理),而 `reasoning_summary_text.*` 事件的 `summary_index` 是**每个 item 内重新从 0 计**,事件里真正区分 item 的是 `item_id`(当前解析未读)。两个 reasoning item 的 part 0 会在 `BTreeMap` 里撞到同一个 key,第二段的增量会拼到第一段的 part 里,流式中间态的拼接顺序和内容都会错。缓解因素:终态 `response.completed` 的整量快照 + 策划 Runtime 在 `Ok(response)` 时无条件再发一次最终 reasoning,最终落盘/展示值能自校正,只有流式中间过程可能短暂错乱。建议后续把累计 key 改成 `(item_id, summary_index)`,或在 README 注明当前只保证终态正确。 **【观察】单段快照“替换式校正”不发增量事件。** 分段路径里若 `.done` 快照不是当前段累计值的前缀延伸(Provider 改写而非续写该段),`strip_prefix` 得到空 delta,段内容被替换但不产生 reasoning 事件,前端中间态要到回合结束才纠正。发生概率低,且有最终值兜底,仅记录。 **【遗留·待确认】** 上轮第 4 条(`register_design_artifacts_at` 的 changed 判定不含文件内容,内容重写但元数据不变时切换 game 不推进 revision)本轮未见处理。如果确认 revision 消费方只关心 manifest 条目、内容变化无需触发前端清单刷新,回复确认即可关闭此条。 结论:上轮 4 个阻塞/次要项均已妥善解决,剩余为新发现的小边界与一条待确认观察项,**LGTM,可以合入**(建议合入后把 `(item_id, summary_index)` 串段问题记为后续事项)。
lhk229 added 2 commits 2026-09-14 23:14:07 +08:00
按item_id与summary_index隔离累计
补充快照替换流式通知测试
Merge remote-tracking branch 'origin/master' into opt/design_agent
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
ea16e49ac8
Author
Owner

第三轮重审(ea16e49ac)

上轮两条新发现的处理情况:

  1. 跨 reasoning item 串段:已把累计 key 改为 (item_id, summary_index),并用 reasoning_summary_item_order 记录 item 首次出现顺序,拼接时按 item 顺序 + 段索引排序,缺失 item_id 的事件归入统一默认桶。回归测试 stream_run_keeps_reasoning_parts_separate_across_items 覆盖两个 item 同 summary_index=0 的场景。README 口径已同步。
  2. 快照替换式校正不通知:分段快照替换现在置 reasoning_snapshot_corrected 并纳入两个发射条件,即使增量为空也会触发一次携带新 accumulated_reasoning 的回调,测试 stream_run_notifies_when_reasoning_snapshot_replaces_non_prefix_part 验证了「累计值已替换、增量为空」的通知形态。

验证:cargo test -p platform-llm --lib 158 个测试全部通过(净增 2 个),npm run check:encodinggit diff --check 干净,PR 仍为 28 个文件,merge master 只带入 CI/端口修复,无行为交叉。

本轮唯一残留(小边界,不阻塞)

reasoning_snapshot_corrected 的通知在策划 Runtime 消费侧仍被门槛挡掉。 design_runtime.rs 流式回调里 reasoning 事件的发射条件是 !delta.reasoning_delta.is_empty(),而快照替换通知的形态恰好是「reasoning_delta 为空、accumulated_reasoning 已更新」——platform-llm 这层发出的校正回调会被这里丢弃,前端仍要等回合结束 Ok(response) 的最终 reasoning 事件才纠正。建议把发射条件放宽为「reasoning_delta 非空 accumulated_reasoning 与上次发射值不同」,让 platform-llm 新增的校正语义真正贯通到 UI。Provider 流式中途改写 summary 段的概率很低,所以这条可以合入后随手补,也可以现在一行改掉。

待确认遗留

第一轮第 4 条(register_design_artifacts_at 的 changed 判定不含文件内容)目前仍未处理也未回应,等确认是预期语义即可关闭。

结论:LGTM,可以合入。 三轮审查的所有阻塞项与次要项均已闭环。

## 第三轮重审(ea16e49ac) 上轮两条新发现的处理情况: 1. ✅ **跨 reasoning item 串段**:已把累计 key 改为 `(item_id, summary_index)`,并用 `reasoning_summary_item_order` 记录 item 首次出现顺序,拼接时按 item 顺序 + 段索引排序,缺失 `item_id` 的事件归入统一默认桶。回归测试 `stream_run_keeps_reasoning_parts_separate_across_items` 覆盖两个 item 同 `summary_index=0` 的场景。README 口径已同步。 2. ✅ **快照替换式校正不通知**:分段快照替换现在置 `reasoning_snapshot_corrected` 并纳入两个发射条件,即使增量为空也会触发一次携带新 `accumulated_reasoning` 的回调,测试 `stream_run_notifies_when_reasoning_snapshot_replaces_non_prefix_part` 验证了「累计值已替换、增量为空」的通知形态。 验证:`cargo test -p platform-llm --lib` 158 个测试全部通过(净增 2 个),`npm run check:encoding`、`git diff --check` 干净,PR 仍为 28 个文件,merge master 只带入 CI/端口修复,无行为交叉。 ### 本轮唯一残留(小边界,不阻塞) **`reasoning_snapshot_corrected` 的通知在策划 Runtime 消费侧仍被门槛挡掉。** `design_runtime.rs` 流式回调里 reasoning 事件的发射条件是 `!delta.reasoning_delta.is_empty()`,而快照替换通知的形态恰好是「`reasoning_delta` 为空、`accumulated_reasoning` 已更新」——platform-llm 这层发出的校正回调会被这里丢弃,前端仍要等回合结束 `Ok(response)` 的最终 reasoning 事件才纠正。建议把发射条件放宽为「`reasoning_delta` 非空 **或** `accumulated_reasoning` 与上次发射值不同」,让 platform-llm 新增的校正语义真正贯通到 UI。Provider 流式中途改写 summary 段的概率很低,所以这条可以合入后随手补,也可以现在一行改掉。 ### 待确认遗留 第一轮第 4 条(`register_design_artifacts_at` 的 changed 判定不含文件内容)目前仍未处理也未回应,等确认是预期语义即可关闭。 结论:**LGTM,可以合入。** 三轮审查的所有阻塞项与次要项均已闭环。
Author
Owner

关于前几轮审查中遗留的待确认项(register_design_artifacts_at 的 changed 判定不含文件内容、内容重写但元数据不变时切换 game 不推进 revision):经 PR 作者确认为预期语义——revision 消费方只关心 manifest 条目本身,此条关闭,后续审查不再跟踪。

关于前几轮审查中遗留的待确认项(`register_design_artifacts_at` 的 changed 判定不含文件内容、内容重写但元数据不变时切换 game 不推进 revision):经 PR 作者确认为预期语义——revision 消费方只关心 manifest 条目本身,此条关闭,后续审查不再跟踪。
lhk229 added 1 commit 2026-09-14 23:28:46 +08:00
修复策划Runtime推理快照校正转发
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 5m30s
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 5m39s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 5m36s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 5m59s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m51s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 3m30s
Project CI / Native shell tests (pull_request) Successful in 7m16s
Project CI / Frontend tests (pull_request) Successful in 6m3s
Project CI / Repository checks (pull_request) Successful in 5m36s
Project CI / Backend tests (pull_request) Successful in 10m50s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m35s
6ded5b1567
按累计reasoning变化发送流式事件
避免空delta校正被消费侧丢弃
Author
Owner

第四轮重审(6ded5b15)

上轮唯一残留的修复确认:

快照校正转发门槛design_runtime 流式回调现在按「reasoning_delta 非空 或 accumulated_reasoning 与上次发射值不同」发射 reasoning 事件,空 delta 的快照校正不再被消费侧丢弃,同时重复累计值不会重复发事件。实现与建议口径一致。

验证:cargo check --tests 通过,cargo test --bin genarrative-ai-game-creator-shell design_runtime 12 个测试全部通过,npm run check:encodinggit diff --check 干净。

至此三轮审查提出的全部问题均已闭环,无剩余事项。LGTM,可以合入。

## 第四轮重审(6ded5b15) 上轮唯一残留的修复确认: ✅ **快照校正转发门槛**:`design_runtime` 流式回调现在按「`reasoning_delta` 非空 或 `accumulated_reasoning` 与上次发射值不同」发射 reasoning 事件,空 delta 的快照校正不再被消费侧丢弃,同时重复累计值不会重复发事件。实现与建议口径一致。 验证:`cargo check --tests` 通过,`cargo test --bin genarrative-ai-game-creator-shell design_runtime` 12 个测试全部通过,`npm run check:encoding`、`git diff --check` 干净。 至此三轮审查提出的全部问题均已闭环,无剩余事项。**LGTM,可以合入。**
lhk229 marked the pull request as ready for review 2026-09-14 23:35:48 +08:00
lhk229 added 2 commits 2026-09-15 00:26:57 +08:00
新增 showDesignReasoning 开关,明确控制策划 reasoning 渲染

仅在 planningV2Active 时传入策划推理展示开关

保持 GameAgent 原有实时回复与 Markdown 行为不变
修复新建项目目录权限收紧兜底
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 5m13s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 5m14s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 5m31s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m50s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 3m51s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m22s
Project CI / Repository checks (pull_request) Successful in 3m40s
Project CI / Frontend tests (pull_request) Successful in 5m57s
Project CI / Backend tests (pull_request) Successful in 9m14s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m33s
Project CI / Native shell tests (pull_request) Successful in 7m53s
f8253a0272
新建目录优先使用当前进程初始化 owner 与私有 DACL

仅在受控 managed 路径本地加固失败时执行一次 UAC 修复

统一目录创建分支并复核最终 Windows ACL
lhk229 added 1 commit 2026-09-15 00:50:19 +08:00
Merge branch 'master' into opt/design_agent
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
b39575d4b1
lhk229 merged commit 9aa6f5efea into master 2026-09-15 00:50:36 +08:00
lhk229 deleted branch opt/design_agent 2026-09-15 00:50:36 +08:00
Sign in to join this conversation.