# PCG-02｜Aipcg：Agent 辅助 TA 开发案例

核验日期：2026-10-10。主线是自然语言布局进入工程数据和 UE 场景的开发方式；详细问题选择有完整输入与代码依据的“建筑中心与轴心换算”。历史迭代背景与本次发现分别标注，不补造开发对话或前后性能。

![开发与运行双层架构图](<../../图表/PCG-02_架构.svg>)

## 1. TA 目标转成工程条件

风格、道路关系、地块布局、建筑尺寸和编辑器可用性属于不同质量要求。场景描述可交给模型组织；可计算的边界、碰撞和数据一致性由代码检查；真实网格尺寸来自 UE；视觉构图仍需人工评审。

| TA 要求 | 工程表达 | 接受方式 |
|---|---|---|
| 建筑不能重叠 | 旋转占用形状与间距 | 几何审计及失败样本 |
| 放置现有资产 | AssetKey、Mesh、真实包围盒 | 资产查询与引用检查 |
| 道路与河流关系合理 | 曲线、类别、地块约束 | 数据审计加视觉检查 |
| 地图可编辑 | DataTable、PCG 图、地图保存 | UE 实际导入与打开 |
| 风格符合目标 | 参考图、描述与比较项 | 人工判断，记录原因 |

仅写“生成漂亮村庄”无法提供稳定工程反馈。也不能为了可量化，擅自把所有美术要求改成面积比例。

## 2. 两类 Agent 的职责

开发 Agent 读取代码、定位接口、修改实现、运行检查并交付；运行时 Codex 根据场景描述产生结构化数据，随后由 Python 和 UE 接续。前者改工具，后者使用工具产生内容。两者都需要上下文，但访问对象和完成标准不同。

开发时应提供项目导读、真实资产样例、失败数据和检查方法。运行时应提供提示、schema、配置与必要资产信息。模型产出 JSON 不等于全部场景开发完成，也不等于 PCG 已经执行。

## 3. 准备版本一致的上下文

本版本保留当前代码、副本哈希、历史运行与旧学习资料。历史运行为 `10021958_prompt_no_reference`，相关地图报告另来自 `10021941_wuzhen_prompt`，两者不能直接认定是同一地图；可以核对它们各自记载的 23 建筑数量，并注明来源不同。

当前 policy 与历史 manifest 的尝试上限不同，源码工作区也有未提交变化。给 Agent 的任务说明必须指明要解释当前实现，还是复盘旧运行。源码与资产数据缺失时，先查询事实，不能凭模型经验补出资产大小。

## 4. 拆分改动与接口

可以把链路分成结构化输出、确定性规划、数据导出、引擎导入四项。每项都有输入、输出和失败协议。先定义字段单位与标识，再分别实现；导出与导入共享的 schema 要同步检查，避免一端改名而另一端仍读取旧列。

现有实现的关键选择是模型提出布局、程序处理几何、真实资产约束规划、PCG 构建实例。这样可将许多失败归到具体数据环节，而不是不断修改自然语言提示。历史开发复盘支持这种方向，但没有完整逐次耗时记录，本章不评估绝对开发速度。

## 5. 具体问题：直接比较坐标为何不一致

本次整理中，先用纯坐标函数将 CSV 的 PixelX／PixelY 换算为世界厘米，直接与 WorldX／WorldY 比较，最大差值为 `94.62943195486332 cm`。这一现象并不是已证实的引擎缺陷；它暴露了核对方法中的错误假设。

依次检查单位、Y 方向、Yaw、Scale 和资产包围盒。代码显示图片坐标是占用中心，World 位置是模型轴心。资产的局部 BoundsCenter 不必等于零；旋转后中心偏移会改变轴心位置。

设图片换算后的世界中心为 `C`，局部包围盒中心为 `c=(cx,cy)`，缩放为 `s`，旋转为 `θ`：

```text
R(θ)c = (cx cosθ − cy sinθ, cx sinθ + cy cosθ)
WorldPivotXY = C − s × R(θ)c
```

检查时使用 `BoundsCenter`、Yaw 和 Scale 修正，23 条记录最大误差为 `0.0 cm`；脚本容差设为 `0.0001 cm`。plan 与 CSV 的 WorldXYZ／Yaw／Scale 及资产引用也全部一致。这是本次实际执行的离线数据核对，不是修复了 UE 放置代码。

| 对照 | 输入与方法 | 本次结果 |
|---|---|---|
| 初始核对 | 把中心当轴心直接比较 | 最大差值约 94.63 cm |
| 正确核对 | 加入旋转后的局部中心偏移 | 最大误差 0.0 cm |
| 数据交接 | plan 与 CSV 同名实例比较 | 数值误差 0.0，引用一致 |

源码依据：[坐标函数](<../../sources.html#ref-d7d087788134f1>)、[建筑规划](<../../sources.html#ref-af643b52876874>)、[导出审计](<../../sources.html#ref-37d24f2a3ed498>)。复现：[整理案例证据.py](<../../sources.html#ref-81fbebd14d9811>) 与 [结果](<../../检查记录/Aipcg数据核对.json>)。

## 6. 分层证明可用性

结构检查证明字段和类型；几何检查证明指定空间规则；资产检查证明引用与尺寸；引擎执行证明导入和图生成；地图保存证明产物落盘；视觉检查证明目标效果。这六层可以有不同结论。

历史报告记载地图核验通过，但本次没有启动 UE；当前复制 policy 关闭视觉审计，不能声称本次完成自动视觉验证。历史只读 commandlet 记录含退出码异常，不能用“读取资产成功”覆盖进程失败。所有状态保留在 [历史核验](<../../sources.html#ref-59ea71868f8fca>)。

## 7. 历史结果怎样用于复盘

历史 buildings.csv 的 23 条记录可用于字段追踪；地图报告中的 Buildings 23、Terrain 6、Vegetation 631 用于说明历史检查内容。跨运行相同计数不证明文件身份相同，若要审计地图与 CSV 的一一对应，仍需同次运行标识、地图路径和实例明细。

改进评价应记录前后同条件任务、人工调整、失败次数和维护成本。用户材料中的生成耗时或批量提示数量属于历史经验，没有足够计时日志支撑本次复算；本章只提炼“结构化接口和可执行审计降低模糊性”的设计认识。

## 8. 迁移任务模板

下一项 TA 任务可以写：为建筑落地高度增加审计；读取该版本 BoundsMinZ、地形高度与导入约定；提交只读报告；检查至少一个非零轴心资产和一个坡地样本；真实 UE 运行单独记录。不得仅靠公式检查宣布视觉落地成功。

完整模板见 [任务与交接](<../../模板/任务与交接.md>)。最小任务包包含需求、版本、样例、可修改范围、关键字段、检查方法、交付文件与未验证项。工程条件跨模型、算法、引擎交接时，保持同一个字段含义。

## 练习与验收

选择一条建筑记录，手算旋转中心偏移并用脚本复查。提交现象、错误假设、代码依据、正确公式和结果。另写一份完整案例卡，分开本次数据检查与历史引擎证据，并指出地图身份仍需怎样证明。

![TA 开发案例思维导图](<../../图表/PCG-02_思维导图.svg>)

配套 18 页演示稿。该章是可追溯材料复盘和离线核对，不包含新生成的 UE 场景。
