Merge branch 'master' into fix/agc-acceptance-followup
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Failing after 19s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Failing after 19s
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Failing after 19s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Failing after 19s
Project CI / Backend tests (pull_request) Failing after 18s
Project CI / AI game creator shell Rust smoke (pull_request) Failing after 18s
Project CI / Native shell tests (pull_request) Failing after 18s
Project CI / AI game creator shell Rust crates (pull_request) Failing after 18s
Project CI / Frontend tests (pull_request) Failing after 7s
Project CI / AI game creator shell web tests (pull_request) Failing after 12s
Project CI / Repository checks (pull_request) Failing after 12s

This commit is contained in:
2026-09-21 00:38:08 +08:00
27 changed files with 1179 additions and 3580 deletions
@@ -0,0 +1,45 @@
# 策划 Agent 回合模型选择生效实施计划
| 字段 | 值 |
| --- | --- |
| Milestone | [回合模型选择生效里程碑](./【里程碑】策划Agent回合模型选择生效-2026-09-20.md) |
| Status | implemented(待验收) |
| Owner | 当前任务 Agent |
## 修改边界与顺序
1. 在本地 `DesignTurn` 中追加可缺省的模型/推理档选择快照,仅存两个非敏感字段。现有 UI 只投影会话摘要,无需扩展前端 DTO。
2. 策划普通发送、澄清回答、用户重试和批准阶段实际开始执行时,从现有配置加载结果获取全局模型和推理档,覆盖上一轮选择;重复命令、拒绝审批和纯读取不重新采样。
3. Provider 请求使用当前回合快照,工具循环与自动重试期间不随全局选择变化。保留其它连接配置的原解析,策划专属配置不能覆盖这两个用户选择字段。
4. 自动恢复沿用活动回合快照;旧记录缺快照时保留已有会话模型,并从当前全局配置补推理档,再由原检查点保存。保持工具幂等和审批流程。
5. 补充既有 Rust 测试,验证请求字段、新旧会话、重试、审批/澄清和恢复;更新主规范与稳定项目记忆。
## 非目标
不改两个前端控件、GameAgent、模型目录、默认值、供应商适配;不新增模型可用性检查、自动换模型或提交门禁。不保存凭据或完整配置,不引入通用快照框架。
## 验证
- `cargo test --locked --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml design_runtime::tests -- --test-threads=1`
- `cargo test --locked --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml design_session -- --test-threads=1`
- 改动文件 Rust 格式检查;文档索引、编码检查和 `git diff --check`。
- 优先本地 HTTP fixture 核对发送给 Provider 的模型与推理档,真实 Provider 未运行时明确记录。
## 风险与回滚
模型选择快照必须在首个副作用前持久化,配置读取失败不能改变既有持久状态;旧记录自动恢复不推断历史推理档。新增可缺省字段支持现有会话读取,回滚不删除会话或产物。
时间盒:先完成最小采样/请求闭环和定向测试,再核对恢复与文档。仅在影响本里程碑判据时扩大范围。
## 验证记录
| 验证 | 结果 |
| --- | --- |
| 改动文件 Rust 格式检查、diff 检查 | 通过 |
| 文档索引、编码检查 | 通过 |
| Rust 定向测试 | 已尝试编译,未执行测试用例;不记为通过 |
| 本地 HTTP fixture | 已补充真实请求字段断言,尚未执行 |
| 桌面/真实 Provider smoke | 未运行 |
| 独立静态审查 | 已检查采样入口、重放/恢复边界、请求循环和测试辅助函数可见性,无可操作发现 |
新增用例验证回合快照与旧数据读取,以及普通消息、跨工具请求、澄清回答、用户重试、审批批准、重复审批的配置生效边界。已有恢复用例继续覆盖不确定文件操作不重复执行。控件和 GameAgent 无本步修改。
@@ -0,0 +1,49 @@
# 策划 Agent 模型与推理档控件接入实施计划
| 字段 | 值 |
| --- | --- |
| Milestone | [控件接入里程碑](./【里程碑】策划Agent模型与推理档控件接入-2026-09-20.md) |
| Status | accepted |
| Owner | 当前任务 Agent |
## 修改边界
- 在 `ProjectSupervisorView.tsx` 扩展既有控件排的适用范围,直接复用 `ConversationModelSelect` 与 `ComposerReasoningEffortSelect`。素材引用、语音、消息队列和停止按钮仍按原 GameAgent 条件显示。
- 策划发送、澄清、审批和重试回调保持原样,不新增模型校验和提交门禁;GameAgent 的原校验保持不变。
- 必要时局部调整策划宿主 CSS,避免控件换行或弹层裁切。组件内部逻辑保持不变。
- 在现有前端测试体系补齐策划集成场景,回归已有 GameAgent 控件用例。
- 不修改 Rust、模型生效逻辑、配置默认值、Provider 或 GameAgent 组件算法。
## 实现顺序
1. 核对共享对话容器,接入同一组控件,保留原提交路径。
2. 补充策划控件读写、保存失败和忙态测试,回归原策划和 GameAgent 行为。
3. 运行定向测试和类型检查,检查宽窄布局,回写证据与未验证项。
## 验证命令
- `npm test -- apps/ai-game-creator-shell/tests/appSurface.test.ts`,先按用例名称过滤控件及相关策划场景。
- 策划宿主集成用例使用现有 Vitest / Testing Library,按实际测试文件定向运行。
- `npm run ai-game-creator-shell:typecheck`
- `npm run check:doc-index`
- `npm run check:encoding`
- `git diff --check`
## 风险与回滚点
- 防止扩大 `directCodex` 条件时带入语音、队列或改变 GameAgent 行为:仅共享控件排,保留其它分支。
- 模型目录失败通过原选择器反馈,不给策划宿主增加前置检查,也不改造控件已有逻辑。
- 本次回滚仅撤回前端接入、相关用例和文档,不涉及持久化数据迁移。
- 时间盒:一个工作时段内先完成接入与定向测试,随后检查类型和布局;仅影响里程碑验收的发现纳入修复。
- 当前已知限制:策划旧会话仍可能使用创建时模型;本次不将控件读写成功视为运行时已切换模型。
## 验收证据
| 项目 | 结果 |
| --- | --- |
| 源码边界核对 | 两个控件文件、策划动作回调、GameAgent 提交校验及 Rust 均无修改;仅扩展控件排适用条件与策划布局 |
| 定向 ESLint | `ProjectSupervisorView.tsx`、`design-agent.suite.ts`、`harness.ts` 通过 |
定向测试命令:`npm test -- apps/ai-game-creator-shell/tests/appSurface.test.ts -t 'Design Agent|design session|clarification free text|reasoning effort control|selecting the model|model dropdown|chat composer an inset|current turn reasoning|historical reasoning'`。
用户已授权提交第一步、进入第二步。
@@ -0,0 +1,48 @@
# 策划 Agent 回合模型选择生效
| 字段 | 值 |
| --- | --- |
| Version | 1.0 |
| Status | implemented(待验收) |
| Date | 2026-09-20 |
| Parent Spec | [策划 Agent 生产迁移与工作区浏览方案 §4.1](../../technical/【技术方案】策划Agent生产迁移与工作区浏览-2026-09-10.md#41-策划对话模型与推理档选择) |
## 目标
策划已有会话在后续执行时真正采用控件保存的模型和推理档,执行途中保持选择稳定,恢复不破坏既有工具副作用边界。
## 范围
- 新会话、旧会话后续消息、回答澄清、阶段审批继续和用户主动重试的选择生效。
- 同一次执行中的工具循环、自动重试固定使用开始时的选择。
- 活动回合自动恢复所需的最小模型、推理档快照及旧会话缺字段读取。
- 模型切换保留策划上下文、阶段、审批和产物。
## 不在范围内
- 不改变 GameAgent Runtime 或既有配置控件算法。
- 不调整模型目录、默认档位、供应商协议、提示词和阶段规则。
- 不建立 Agent 专属设置、通用快照框架、历史转换器或平行账本。
## 依赖与前置条件
- [控件接入里程碑](./【里程碑】策划Agent模型与推理档控件接入-2026-09-20.md) 已验收。
- 主规范和本里程碑已评审,实施前编写仅覆盖本步的实现计划。
- 生效时机、主动重试与自动恢复的区分遵循主规范,不通过重建会话实现切换。
## 验收标准
- [ ] 新策划会话和旧策划会话下一次执行都使用当前已保存选择;旧模型不再永久覆盖新选择。
- [ ] 发送、澄清、审批继续与主动重试的实际 Provider 请求使用新选择。
- [ ] 执行中改配置不影响本次后续工具请求或瞬态自动重试,下一次用户执行才生效。
- [ ] 自动恢复优先使用已有活动回合快照;旧记录缺推理档时按主规范补齐,不重复已执行工具副作用。
- [ ] 切换后上下文、阶段、产物和审批身份保留,纯读取不改历史模型信息。
- [ ] 配置/Provider 失败沿用可见错误,不静默降级、换模型或清空历史。
- [ ] GameAgent 既有选择和运行行为通过兼容回归,没有借机修正其本征不足。
## 证据要求
- 自动化:本地 Provider fixture 捕获请求模型和推理档;覆盖跨工具调用、自动重试、用户重试、审批/澄清继续及旧会话恢复;运行相关 Rust 定向测试、必要类型检查、编码和文档索引检查。
- 运行时:在现有策划项目选择另一模型及推理档,触发下一次执行核对实际请求;真实供应商是否接受跨模型历史需按环境记录实测或未验证。
- 边界:验证恢复幂等和凭据不进入新增快照;无需新增通用权限或供应商测试体系。
- 全部验收后将主规范提案改为当前行为,更新稳定项目记忆并删除本次已完成临时计划。
@@ -0,0 +1,53 @@
# 策划 Agent 模型与推理档控件接入
| 字段 | 值 |
| --- | --- |
| Version | 1.0 |
| Status | accepted(用户已授权提交、进入第二步) |
| Date | 2026-09-20 |
| Parent Spec | [策划 Agent 生产迁移与工作区浏览方案 §4.1](../../technical/【技术方案】策划Agent生产迁移与工作区浏览-2026-09-10.md#41-策划对话模型与推理档选择) |
## 目标
策划对话复用已有模型和推理档控件,能够读取和保存全局选择,保持 GameAgent 兼容性。
## 范围
- 输入区域中控件的显隐、位置、策划面板布局与必要的宿主接线。
- 复用原有目录、默认模型、保存和错误提示,不复制逻辑。
- 策划发送、澄清、审批继续和主动重试保持原流程;不新增模型可用性检查或提交门禁。
- 重新进入策划时显示保存值;执行中可以调整后续选择,但原输入与提交忙态维持不变。
## 不在范围内
- 不修改策划 Provider 的模型选择和推理档采样逻辑,不声称旧会话已能切模型。
- 不检查、修复或重构 GameAgent 组件本征不足,不引入通用缓存、同步、保存、下拉或配置框架改造。
- 不为策划引入队列、语音或素材引用,不更改默认推理档。
## 依赖与前置条件
- 主规范本节与本里程碑完成评审。
- 实施前仅为本里程碑编写实现计划,确认现有 GameAgent 对应回归用例与策划宿主入口。
- 本步作为内部接入结果;第二步完成前不单独发布为完整可切模型功能。
## 验收标准
- [ ] 策划入口显示原模型及推理档控件,没有重复实现或第二份设置。
- [ ] 选择走原保存通道;重新进入显示已保存值;保存失败显示原有错误反馈。
- [ ] 策划提交和报错流程保持原样,没有新增模型检查;原控件内部行为不改造。
- [ ] 策划忙态、待审批/澄清行为保持;新增布局在宽/窄面板可操作。
- [ ] GameAgent 原控件的显示、选择、发送校验、忙态和运行行为通过相关回归。
- [ ] 交付明确记录旧策划会话仍沿用旧模型,留待下一里程碑解决。
## 证据要求
- 自动化:现有界面测试中增加策划入口的集成场景,复用 GameAgent 回归;运行 AGC 类型检查、文档索引、编码和 diff 检查。
- 运行时:桌面与窄面板选择、保存、重新进入和一次策划发送 smoke;缺失环境如实标注。
- 边界:只验证接入所需的失败和忙态,不扩展为现有组件全量审计。
- 通过本步验收后,才准备并执行模型生效里程碑的实现计划。
## 当前交付
已接入原控件及策划布局,按用户最终要求保留策划提交、审批、澄清、重试与报错流程,没有新增模型检查。原控件与 GameAgent 的提交逻辑未修改;旧策划会话固定模型的限制仍由第二步解决。
新增三条控件集成用例(保存重进、运行中选择、保存失败反馈)。用户已授权提交第一步、进入第二步。
@@ -6,6 +6,8 @@
## 2026-09-20 Godot 编辑器执行接入
原生引导采用固定版本的官方 `godot-cpp` 和 MSVC x64 构建,绑定及 C++ runtime 静态链接。依赖归档和缓存源码须核验,安装目录仍只分发原生载荷及许可。EDITOR 阶段动态加载/卸载时显式清理 C++ 实例绑定与单例包装,保留纯 GDScript 的异步执行和原有协议;执行权限、项目身份与缓存归属继续由现有宿主处理。
可用性边界按引擎区分:Cocos/Unity 保持不按工程类型过滤,Godot 仍绑定当前 Godot 项目,切项目撤销旧插件上下文;前端统一根据宿主投影启动插件。Runtime 工具目录只对 Godot 追加项目条件,编辑器说明沿用外置提示词及审核 Skill 参考。
Godot 编辑器操控复用既有 AGC 插件宿主、EditorAdapter、Runner 和不确定执行回执合同,编辑器实现留在 `plugins/agc-godot-editor`。用户选择 DLL 原件随 AGC 安装资源分发,并确认按编辑器实例在 AGC 私有缓存准备临时加载副本,以满足 Godot Windows 加载器的同目录 `~DLL` 写入要求;项目内不复制 DLL,只用受管 `.gdextension` 引导。Godot 自动 UID 伴生文件必须记录归属并在确认卸载后按内容匹配清理。工作区根不迁移到 Godot 子目录,原始项目配置与场景只通过明确编辑操作修改。完整合同及验证范围见 [Godot 编辑器插件接入](<../../technical/【技术方案】AGC Godot编辑器插件接入-2026-09-20.md>)。
@@ -1,9 +1,9 @@
# 踩坑与排障记录
## Godot 原生插件在 MSVC C 模式下的对齐声明
## Godot C++ 扩展构建与对象生命周期
- `native.c` 若首先报 `max_align_t` 语法错误,后面的 `Storage`、`retained_script` 等未声明通常是连带错误。MSVC C 模式不提供该类型;ABI 存储使用 C11 `_Alignas(16)` 显式对齐并保持 128 字节容量,通过实际 MSVC DLL 构建验证,不逐条修补连带错误。
- `No C compiler found` 则属于开发环境问题:先初始化 Visual Studio x64 开发环境,同时设置 PATH、INCLUDE 与 LIB,再运行构建。只把 `cl.exe` 所在目录加到 PATH 不足以提供头文件和链接库。
- 原生引导通过官方 `godot-cpp` 管理 Variant、String 和 Ref,不自行维护 ABI 存储。Godot 类型必须在扩展终止回调内释放,不能依赖 DLL 静态对象析构;桥节点可能已经退出,应按实例 ID 核验存活再回调。
- 正式 Windows 构建使用 CMake 的 Visual Studio x64 generator,并实际验证 MSVC 编译;不能用 GCC 成功替代 MSVC 验收。固定官方归档按 SHA256 校验,缓存源码被修改时拒绝构建并保留证据。
## Rust 同步回调的测试记录按线程隔离
@@ -22,6 +22,8 @@
- 策划 Agent 的顾问态由用户指示驱动,不自主推进项目、主动安排下一步或提交阶段审批;完成单次请求不结束顾问态。五个策划阶段的审批用于检阅已完成产物,关键选择先问询;过程文档按需记录且不重复正式正文。顶层设计按需保留易混淆方向及排除理由,提示词精简应保留这些行为与设计边界。详见策划 Agent 生产迁移与工作区浏览方案。
- 策划 Agent 复用现有模型/推理档控件,宿主不另加模型检查或自动换模型。用户发起执行时采样全局选择,同轮工具循环和自动重试固定使用回合快照;自动恢复复用该快照,旧记录保留已知模型并补齐一次推理档。只持久化模型和档位,不保存连接凭据;GameAgent 保持原逻辑。详见策划 Agent 生产迁移与工作区浏览方案 §4.1。
- AGC 思考与执行入口共用共享单行摘要骨架;Markdown 在展开正文走既有安全渲染,折叠预览使用纯文本。耗时统一复用中文时分秒格式(不足一分钟一位小数,达到分钟后整数秒),格式化与各层计时边界分离。过程行在运行中和完成后的折叠层内保持同一紧凑间距;失败状态按明确终态与非零退出码呈现红色。
- Direct 对话计时区分条目展示时间与生命周期事件时间:整轮用用户发送到明确终态的跨度,工具用各自开始/完成边界;运行时用 100ms 叶子时钟刷新一位小数,终态冻结,旧历史缺边界不推测。不得用整秒时间的大小比较取代 Thread Manager 的事件顺序判定新回合。