PRD 中图片处理的质量直接取决于模型是否具备视觉识别能力。
Phase 0 第一步:检测并提示用户。
page.images 数量 + 架构图/流程图/示意图标注数量⚠️ 检测到 PRD 含 {N} 张嵌入图片 + {M} 处图表标注。
当前对话模型如不支持图片识别(image input):
✓ 仍可提取图片二进制数据(pdfplumber)
✗ 无法"看懂"图片内容——判断类型、验证边界、提取结构
✗ 架构图 SVG 复现将降级为"从文字描述推断"(准确度下降)
🟢 建议切换支持图片识别的模型以获得最佳效果
🟡 回复"继续"以当前模型执行
| 拒绝场景 | 替代方案 |
|---|---|
| ---------- | --------- |
| 纯API文档/技术规格书 | 自行探寻其它方案 |
| 超25屏PRD | 拆分子PRD |
| 无产品视角的需求列表 | 先结构化整理 |
| 对外官网/落地页 | frontend-design |
| 需CMS持续编辑 | 自行探寻其它方案 |
> Phase 0 先诊断;命中拒绝场景直接告知;边缘案例咨询用户。
Step 1: 读取 PRD
# PDF: 用 pdfplumber 提取文本
python -c "
import pdfplumber
with pdfplumber.open('PRD_PATH') as pdf:
for p in pdf.pages:
t = p.extract_text()
if t: print(t)
"
Step 2: 📷 用户原图询问(🔴 暂停,等待用户回复)
🔴 停止执行。向用户发送以下文字:
📷 这份 PRD 中是否有需要原样呈现的图片?
(比如 UI 原型截图、产品渲染图、专属图表、照片等)
如果有,请:
images 文件夹例如:04_产品架构图.png、07_UI原型-首页.jpg
如果没有,回复"跳过"。
处理规则:

嵌入,不做其它处理images/ 目录存在但为空 → 视为"跳过";未搜到目录请用户告知目录路径Step 3: 🔴 视觉内容处理 — 强制门禁
按内容类型分策略:
| 内容类型 | 策略 | 说明 |
|---|---|---|
| --------- | ------ | ------ |
| 架构图/流程图/关系图/层级图 | SVG 精准复现 | 从 PRD 提取结构 → 生成 SVG 方框+连线+箭头 |
| UI 截图/照片/不可复现视觉 | 边界检测截图 → data:image | pdfplumber 精确裁剪 |
| 全文纯文字无图表 | 跳过 |
SVG 复现流程:
+ + + 箭头 marker)--color-primary 等)保持视觉一致门禁规则:
或 ![]()
references/image-extraction.mdStep 4: 提取章节大纲(必须输出)
Step 5: 识别 project_type
品牌检测(必须在 Q1 之前执行):
brand-palettes.md 的静态表仅为搜索结果的缓存兜底交互式决策树(一次一题,可跳过由 agent 推断):
| 问题 | 内容 | 路由 |
|---|---|---|
| ------ | ------ | ------ |
| Q1 视觉定位 | A个人品牌 / B产品概念(推荐) / C专业文档 / D自定义 | 决定 Hero 骨架 |
| Q2 品牌色系 | A品牌色为主 / B品牌色+中性色(推荐) / C自定义 | 决定色彩策略 |
| Q3 风格参考 | 条件触发:无品牌+无风格偏好时 | A-H → 9套流行风格 |
| Q4 Hero策略 | A产品+Slogan / B数据冲击 / C混合(推荐) | 决定首屏骨架 |
| Q5 交互模块 | 从PRD提取选项,≥3个 | 决定交互嵌入位置 |
project_type → references/README.md 10 套 categorystyle-*.md使用 Agent 工具并行派发 3 个子任务(run_in_background: true),主代理收结果后拼合。
调用方式(每个分派 = 一次 Agent 工具调用):
Agent({ name: "css", run_in_background: true, prompt: "读取以下文件并生成完整设计系统CSS:..." })
Agent({ name: "svg", run_in_background: true, prompt: "读取以下文件并生成架构图SVG:..." })
Agent({ name: "interact", run_in_background: true, prompt: "读取以下模板并生成交互模块:..." })
每个 prompt 必须包含(🔴 缺一不可):
C:/Users/.../references/category-*.md 等)3 个子任务:
| 子代理 | 读取文件 | 输出 |
|---|---|---|
| -------- | --------- | ------ |
| "css" | README.md + category-.md + style-.md + design-constants.md | :root CSS变量 + 组件CSS + 响应式 |
| "svg" | svg-animation.md + 章节大纲 | 所有架构图/流程图 SVG |
| "interact" | js-robustness.md + interactive-templates/{类型}.md | 交互模块 HTML+JS |
> ⚠️ 如果当前平台不支持 Agent 工具 → 降级为顺序执行,主代理自行完成。
分派判断:
| 模块 | 是否分派 | 原因 |
|---|---|---|
| ------ | :---: | ------ |
| CSS 设计系统 | ✅ 分派 | 需读取 category/style token 文件,独立输出 |
| 架构图/流程图 SVG | ✅ 分派 | 从 PRD 描述→SVG,完全独立,上下文重 |
| 交互模块 | ✅ 分派 | 7 种模板独立,按需选择分派 1~3 个 |
> 如果不支持子代理 → 降级为,主代理自行顺序执行完成所有模块。
| 步骤 | 加载文件 | 内容 |
|---|---|---|
| ------ | --------- | ------ |
| Phase 0 | references/image-extraction.md | 图片提取:SVG复现/边界检测/用户原图 |
| Phase 1 | references/brand-palettes.md | 品牌色检测:WebSearch + 静态表缓存 |
| Phase 1 | references/README.md | Category/Style token 索引与映射 |
| 2.1 | references/design-constants.md | 间距/字号/对比度/断点 |
| 2.2 | references/layout-skeletons.md | 12 种版式骨架 + 匹配规则 |
| 2.3 | 输出规范(下方) | 固定导航/渐入动画/章节标签/表格/响应式 |
| 2.4 | references/svg-animation.md | SVG 动画设计指南 |
| 2.5 | references/interactive-templates/ | 7 种概念类型 × 7 种交互模板 |
| 2.7 | references/js-robustness.md | JS 健壮性约束 + 交互模板索引 |
| 2.8 | — | 导航覆盖:所有 section id 必须有导航链接,生成后用正则核对 |
| 决策 | 原因 |
|---|---|
| ------ | ------ |
| 前3屏 100vh 全屏 | Hero抓注意力→Problem共鸣→Solution信心,第一印象形成区 |
| 双模而非全交互 | 交互辅助理解,文档保留原文,互补不替代 |
| 交互原位展开而非弹窗 | 弹窗打断阅读流,原位保留上下文 |
| SVG 分步不挤一图 | 逐步推进帮助理解节奏,一图塞满只能"看"不能"懂" |
| 调性自适应而非固定模板 | PRD类型多样,一套固定视觉必翻车 |
| 品牌色点缀而非铺满 | 大色块桌面端疲劳,点缀/CTA用品牌色,正文中性色 |
| reveal 渐入而非一次性渲染 | 逐section渐入控制节奏,一次性全渲染信息淹没 |
box-shadow 做 SVG 阴影 → filter: drop-shadow()共 1 个版本