# 建筑设计 AI 工作流(复现 GTC Taipei 2026 黄仁勋演示)

演示原型:本地 agent + 云端 Claude,草图/mood board/文字需求 → Rhino 建体量与平面 → Blender 材质相机渲染 → Flux 2 照片级效果图,agent 自动纠错。

## 本机工具映射

| 演示组件 | 本机实现 | 前提 |
|---|---|---|
| Agent (Hermes+Claude) | Claude Code 本会话 | — |
| Rhino | ⚠ 暂未接通,见下"Rhino 接入状态" | — |
| Blender | Steam Blender 5.1.2 + 官方 MCP 扩展 | Blender 启动即可,`E:\steam\steamapps\common\Blender\blender.exe` |
| Flux 2 | FLUX.2-klein-9B Q8 GGUF @ ComfyUI | 启动 ComfyUI 时**必须加 `--cache-none`**(32GB 内存不加会 OOM 崩) |
| Revit(演示没有,本机有) | archdsl-revit MCP(design_* 工具),Revit 2026 + pyRevit | 建平面/BIM 可用它替代或补充 Rhino |
| 网页工作台 | `python webapp/server.py` → http://127.0.0.1:8899 | 完整向导 app(见下);旧版单图出图在 /quick |

## 工作台 app(2026-07-06 完成,复刻演示全流程)

`python webapp/server.py` → http://127.0.0.1:8899。向导:输入(基地+任务书+风格+草图+moodboard)→ Rhino 体量比选(agent,1-4 方案)→ 反馈修订 → 平面门窗(agent)→ 批准 → glb 导出+Blender 无头 3 机位渲染 → Flux 多光照批量 → 画廊。
- agent 阶段 = 无头 `claude -p` + rhino MCP(webapp/agent_runner.py;env 里剔除本会话代理变量)。**前提:CLI 已 `claude login`**(token 过期会 401)。
- `AGENT_CMD` 环境变量可注入 mock agent(test/mock.cmd)跳过真 claude 做链路测试;e2e:`python test/e2e.py`。
- 模块:server.py(状态机+API)、prompts.py(体量/平面/导出模板)、agent_runner.py、blender_pipeline.py(无头渲染)、flux.py(光照预设批量)。项目数据在 projects/<id>/。
- Rhino→Blender 用 glb(材质/图层随行);Rhino 脚本化导出:`rs.Command('-_Export "x.glb" _Enter _Enter')`。

## Rhino 接入状态(2026-07-06,用户已选社区路线)

Rhino 8.20 + jingcheng rhinomcp 0.3.2(已装),.mcp.json 已配。**用前必须管理员停 MSI_Center_Service**(它占了插件写死的 1999 端口;服务名已实测确认,不是 MSI_Central_Service)——运行项目里的 `一键启动.bat`(管理员)即可,或手动 `sc stop MSI_Center_Service`。Rhino 里 `mcpstart` 起桥。
备选:升级 Rhino ≥8.29 后可换 McNeel 官方 Rhino-MCP-Platform(`Yak.exe install rhino-mcp-platform`,stdio 指向 `%APPDATA%\McNeel\Rhinoceros\packages\8.0\Rhino-MCP-Platform\<版>\router\win-x64\rhino-mcp-router.exe`,端口 10500 无冲突,带 Grasshopper 工具;两插件命令名冲突,换装前先卸社区版)。

## 其他渲染/建模软件结论(2026-07 调研)

- D5 Render:无 API/CLI/MCP,agent 无法驱动;只能 Blender/Revit 建模后 D5 Sync 同步、人工点渲染。当"人工精修终点站"。
- Unreal 5.8+:官方内置 Unreal MCP(http://127.0.0.1:8000/mcp),想要实时漫游/影视级再上,本机未装。
- AutoCAD:不值得接,需要 DWG 时用 pyautocad COM 脚本直接画。

## 流程(每步失败则自查自纠,重试后再继续)

1. **输入**:用户给基地信息 + 概念草图/mood board + 文字需求(读图理解设计意图)。
2. **Rhino 体量**(MCP `rhino`):地形/退线/体量方案,内部墙体、房间、门窗。无 Rhino 时可整段用 Blender 替代。
3. **导入 Blender**(MCP `Blender`):Rhino 导出 3dm→obj/glb 或直接在 Blender 重建;赋材质、布光、设相机(可多机位)。
4. **渲染**:Blender Cycles/EEVEE 出白模或素模图,分辨率宽高取 32 倍数(如 1280×736)。
5. **Flux 出图**:`python comfy/render.py <渲染图> "<英文效果图prompt>"`,输出照片级效果图。多机位多光照 = 多次调用换 prompt。
6. **自动纠错**:每步检查输出(Blender 截图/渲染文件存在性/ComfyUI history 报错),错了改代码重跑,不问用户。

## ComfyUI 模型(已下载)

- diffusion_models/flux-2-klein-9b-Q8_0.gguf(distilled,4 步,cfg=1)
- text_encoders/qwen_3_8b_fp8mixed.safetensors(CLIPLoader type=flux2)
- vae/flux2-vae.safetensors
- 需要 ComfyUI-GGUF 节点(已装)。首跑若节点参数名报错,用 `GET /object_info/<class>` 核对后改 render.py。

## 会话启动检查

Blender MCP 工具存在→直接用;`rhino` MCP 工具不存在→提醒用户重启会话或检查 .mcp.json;ComfyUI 未起→后台启动 run_nvidia_gpu.bat 等 `GET /system_stats` 通。

---

## 立场/红线(经验沉淀)

- **用户在新西兰(Auckland),合规按 NZ 标准不是中国 GB**(archdsl 的 NZ granny flat/NZS3604 合规是特性不是缺点)。
- **结构必须在模型里敲定,渲染不许幻想结构**(核心原则):效果图只上材质光影,门窗结构靠模型;三张 Flux 图各自脑补成三个设计=反例。**细节从确定性代码来不从 LLM 手搓**(agent 只出设计决策 plan_ir→`blender_detailer.py` 展开 375-444 构件;大师风格=构造映射表 `MASTER_DETAIL` 不是文字提示)。
- **eval-in-loop 治方案平庸**(根因=LLM 扮大师回归均值):修法优先级 客观打分器 > 判例 RAG > 参数化多样性 > 多 agent 互批(无客观分的互批=白烧 token)。`design_score.py` 门控生成 0.491→0.789 收敛。
- 定位=**加速器不是自动驾驶,关键决策建筑师把关**;禁全落地窗(窗型混搭)、退台必须阳台+护栏(NZ F4)、两层必须有楼梯。
- 禁区:agent 手搓构件级几何;逐节点搭 GH 图;Flux 文字 prompt 描述结构;渲染管线原地改 glTF 材质;程序化噪声 bump 不接纹理坐标;插件囤积。

## 环境怪癖(补充)

- **Read 工具按路径缓存图片**(最大坑):反复渲同一 `persp_front.png` 一直喂第一张旧图→迭代渲染每次输出新文件名,"改了没变化"先比对文件 hash。
- 机器 RTX 5060 Ti 16GB;**内存 32GB=UE 5.8 硬瓶颈**(推荐 64GB;UE 项目放纯 ASCII `E:\UE_Arch\`);中文路径(建筑app)长期雷区;控制台 GBK 打 ✓✗ 需修 stdout 编码。
- rhinomcp 0.3.2 端口写死 :1999 被 MSI 服务占;McNeel 官方版要 Rhino 8.29+(本机 8.20 装不上);rhino MCP 工具要新会话才加载。
- **B1 模块接入流程**:改代码→**必须重启 server**(否则跑旧代码,杀 8899 端口 PID)→**DOM 真渲染验证**(截图工具常超时,验收用 DOM 读取)。
- **"你点一下我一条龙"**(Windows 焦点保护/交互登录/UE 插件启用做不了):让用户做单个 GUI 动作(Ctrl+N/点 UAC/敲 mcpstart),其余 agent 通过桥全自动。headless `claude -p` 前提 CLI 已 `claude login`(登录命令是 `/login` 带斜杠)。
- 一键启动.bat 必须纯 ASCII(中文注释被 GBK 撕碎);服务名先验证(真名 MSI_Center_Service);双击≠管理员脚本自弹 UAC。

## NZ 领域数据(CONFIRMED,权威原件)

- **F4 护栏**:落差>1m 强制;露台≥1000mm、楼梯≥900mm、开口≤100mm。G7 采光窗地比≥10%;G4 通风可开启≥5%。**H1/AS1 第6版 2025-11-27 生效删除 Schedule Method**(6气候区按 territorial authority)。QS 2025:basic 2450/standard 3200/highend 5000/prestige 7500 NZD/㎡。
- **Auckland Unitary Plan**(官方 PDF 已下 `resources/district-plan/auckland/`):H3/H4 高8m HIRB 2.5m+45°;H5 11m;H6 THAB 基准16m;**HIRB 只查侧/后界前界不受控**;MDRS 全国基线 3户/3层/≤11m。
- **Auckland GIS 分区**端点 `UnitaryPlanZones/MapServer/1`,**zone 真值在 ZONE 数值码+域 dUPZone**(NAME 常空不可靠)。Auckland 太阳:夏至76.6°/冬至29.7°,正午在北。
- resources/ 866MB PDF→RAG 5232块(引用到页);用户丢新 PDF 后 `python webapp/build_rag_index.py` 重跑即认。
- **archdsl-revit 边界**:只会正交矩形平铺天生无创意(创意在 Rhino 上游);只建白模级构件;**只出平面**(多层叠画)无立面/剖面;须用户手动 Ctrl+N 建项目。

## 当前未完成(浓缩)

1. **真实项目端到端验收**(现全是生成草图/测试任务书;part02 首跑成功一例 Epsom/H4/Murcutt 评分84/$427k,真实客户地块未跑)。
2. **Flux 锁结构模式已建从未实跑验证**(下次跑 Flux 首验,三机位须是同一栋房子)。
3. AUP H6 THAB 完整编码;其他 council District Plan(按需模式)。
4. 立面/剖面自动出图(`blender_elevation.py` 已建线稿路);UE 室内灯光/Fab 包自动摆放/Ladybug 真日照小时数;统一评审门(大师板+design_score+19 skill 三套散的未拧成一体)。
5. Revit BIM 线(design_load→build→auto_furnish→施工图)工具在但未端到端跑过。

## 待用户澄清

用户地块具体 zone;窗台策略(低窗台 500mm vs 常规);平面 prompt 精简 vs 细节保真取舍;是否升级 64GB 上 UE;三套 UI 主题最终用哪套;"reer" 插件指什么(助手猜 RiR)。完整见 `findings/merged/建筑app.md` E 节。
