Explorar o código

Merge branch 'main' of https://git.yishihui.com/howard/Agent

刘文武 hai 15 horas
pai
achega
269e16f75e
Modificáronse 27 ficheiros con 4990 adicións e 12 borrados
  1. 7 0
      agent/core/runner.py
  2. 11 1
      agent/tools/builtin/feishu/chat.py
  3. 20 1
      agent/tools/builtin/search.py
  4. 249 0
      examples/plan/research_modified.prompt
  5. 88 0
      examples/research/channel.md
  6. 9 3
      examples/research/config.py
  7. 128 0
      examples/research/cong/analysis.json
  8. 32 0
      examples/research/cong/descriptions/制作亮点.md
  9. 37 0
      examples/research/cong/descriptions/制作点.md
  10. 679 0
      examples/research/cong/descriptions/小葱__img_1_制作表.json
  11. 415 0
      examples/research/cong/descriptions/小葱__img_2_制作表.json
  12. 414 0
      examples/research/cong/descriptions/小葱__img_3_制作表.json
  13. 405 0
      examples/research/cong/descriptions/小葱__img_4_制作表.json
  14. 19 0
      examples/research/cong/index.md
  15. 523 0
      examples/research/cong/pipeline.json
  16. 129 0
      examples/research/input/analysis.json
  17. 0 0
      examples/research/input/description/创作表.md
  18. 68 0
      examples/research/input/description/制作亮点.md
  19. 60 0
      examples/research/input/description/制作点.md
  20. 336 0
      examples/research/input/description/阿里多多酱__img_1_制作表.json
  21. 300 0
      examples/research/input/description/阿里多多酱__img_2_制作表.json
  22. 309 0
      examples/research/input/description/阿里多多酱__img_3_制作表.json
  23. 19 0
      examples/research/input/index.md
  24. 388 0
      examples/research/input/pipeline.json
  25. 82 0
      examples/research/research.md
  26. 248 2
      examples/research/research.prompt
  27. 15 5
      examples/research/run.py

+ 7 - 0
agent/core/runner.py

@@ -1502,6 +1502,13 @@ class AgentRunner:
                                         "url": f"data:{media_type};base64,{img['data']}"
                                     }
                                 })
+                            elif img.get("type") == "url" and img.get("url"):
+                                tool_content_for_llm.append({
+                                    "type": "image_url",
+                                    "image_url": {
+                                        "url": img["url"]
+                                    }
+                                })
                         img_count = len(tool_content_for_llm) - 1  # 减去 text 块
                         print(f"[Runner] 多模态工具反馈: tool={tool_name}, images={img_count}, text_len={len(tool_result_text)}")
                     else:

+ 11 - 1
agent/tools/builtin/feishu/chat.py

@@ -232,7 +232,7 @@ async def feishu_send_message_to_contact(
                             last_res = client.send_image(to=receive_id, image=image_bytes)
                         except Exception as e:
                             print(f"解析 base64 图片失败: {e}")
-                    else:
+                    elif url.startswith("http://") or url.startswith("https://"):
                         # 处理网络 URL
                         try:
                             async with httpx.AsyncClient() as httpx_client:
@@ -241,6 +241,16 @@ async def feishu_send_message_to_contact(
                                 last_res = client.send_image(to=receive_id, image=img_resp.content)
                         except Exception as e:
                             print(f"下载图片失败: {e}")
+                    else:
+                        # 处理本地文件路径
+                        try:
+                            local_path = os.path.abspath(url)
+                            if os.path.isfile(local_path):
+                                last_res = client.send_image(to=receive_id, image=local_path)
+                            else:
+                                print(f"本地图片文件不存在: {local_path}")
+                        except Exception as e:
+                            print(f"读取本地图片失败: {e}")
         elif isinstance(content, dict):
             # 如果是单块格式也支持一下
             item_type = content.get("type")

+ 20 - 1
agent/tools/builtin/search.py

@@ -59,6 +59,7 @@ class SuggestSearchChannel(str, Enum):
                 "channel": "搜索渠道",
                 "cursor": "分页游标",
                 "max_count": "返回条数",
+                "include_images": "是否包含图片",
                 "content_type": "内容类型-视频/图文"
             }
         },
@@ -69,6 +70,7 @@ class SuggestSearchChannel(str, Enum):
                 "channel": "Search channel",
                 "cursor": "Pagination cursor",
                 "max_count": "Max results",
+                "include_images": "Include images",
                 "content_type": "content type-视频/图文"
             }
         }
@@ -79,6 +81,7 @@ async def search_posts(
     channel: str = "xhs",
     cursor: str = "0",
     max_count: int = 5,
+    include_images: bool = False,
     content_type: str = ""
 ) -> ToolResult:
     """
@@ -100,6 +103,7 @@ async def search_posts(
             - weibo: 微博
         cursor: 分页游标,默认为 "0"(第一页)
         max_count: 返回的最大条数,默认为 5
+        include_images: 是否将帖子中的图片传给 LLM 查看,默认为 False
         content_type:内容类型-视频/图文,默认不传为不限制类型
 
     Returns:
@@ -148,10 +152,25 @@ async def search_posts(
         # 计算结果数量
         result_count = len(data.get("data", []))
 
+        # 提取图片 URL 并构建 images 列表供 LLM 查看(仅当 include_images=True 时)
+        images = []
+        if include_images:
+            for post in data.get("data", []):
+                for img_url in post.get("images", [])[:3]:  # 每个帖子最多取前3张图
+                    if img_url:
+                        images.append({
+                            "type": "url",
+                            "url": img_url
+                        })
+                # 限制总图片数量,避免过多
+                if len(images) >= 10:
+                    break
+
         return ToolResult(
             title=f"搜索结果: {keyword} ({channel_value})",
             output=json.dumps(data, ensure_ascii=False, indent=2),
-            long_term_memory=f"Searched '{keyword}' on {channel_value}, found {result_count} posts"
+            long_term_memory=f"Searched '{keyword}' on {channel_value}, found {result_count} posts",
+            images=images
         )
     except httpx.HTTPStatusError as e:
         return ToolResult(

+ 249 - 0
examples/plan/research_modified.prompt

@@ -0,0 +1,249 @@
+---
+model: qwen3.5-plus
+temperature: 0.3
+---
+
+$system$
+你是图文帖子内容还原的策略专家。任务:理解还原需求 → 搜索确定还原策略 → 将策略实例化为粗工序。
+
+你不需要关心具体实现细节(工具参数、模型权重等),只需确定整体策略和粗工序。
+
+## 变量
+
+- `%input_dir%`:输入素材目录路径
+- `%output_dir%`:输出目录路径,所有输出文件保存在此目录下
+- `%visualize_script%`:可视化脚本路径,用于读取 JSON 产物生成 HTML 报告
+
+## 核心概念
+
+**还原策略**:描述如何将一组图片从解构数据还原出来的通用方法论。策略可行性取决于工具能力,搜索策略时需同时关注工具能力边界。
+
+**粗工序**:策略实例化到具体帖子的结果,是由阶段节点和依赖边组成的 DAG。每个阶段描述"做什么、产出什么、为什么",阶段间通过产物传递形成依赖。不关心"用什么工具",只关心阶段划分和依赖逻辑。
+
+## 工作流程
+
+### 第一步:需求分析
+
+读取核心文件,理解还原需求:
+- `%input_dir%/index.md`(导航概览)
+- `%input_dir%/descriptions/制作亮点.md`(核心亮点聚类)
+- `%input_dir%/descriptions/制作点.md`(核心制作元素及权重)
+- `%input_dir%/descriptions/创作表.md`(创作视角描述,如存在)
+
+目标:明确需要在哪些角度精准还原,哪些地方不能出错。
+
+**输出** `%output_dir%/analysis.json`,schema 如下:
+
+```jsonschema
+{
+  "category": {
+    "name": "string — 内容品类名称",
+    "traits": ["string — 品类典型特征"],
+    "ai_challenges": ["string — 该品类 AI 还原的共性挑战"],
+    "reasoning": "string — 判断依据"
+  },
+  "upper_bounds": [
+    {
+      "name": "string — 上限点名称(来自亮点聚类)",
+      "description": "string — 必须高度还原的内容特征",
+      "reasoning": "string — 为什么是上限点"
+    }
+  ],
+  "lower_bounds": [
+    {
+      "name": "string — 下限点名称(自行总结)",
+      "description": "string — 做不好会导致'一眼假'的特征",
+      "why_critical": "string — 为什么重要,做不好会怎样",
+      "reasoning": "string — 判断依据"
+    }
+  ],
+  "requirement_summary": ["string — 整合品类特征、上限点、下限点的还原需求清单"]
+}
+```
+
+每条结论必须附带推理过程。
+
+### 第二步:搜索和确定还原策略
+
+**前置**:重新读取 analysis.json 确认需求。
+
+核心问题:什么策略能同时满足上限点和下限点?
+
+**搜索优先级**:
+1. **知识库优先**:用 search_knowledge 按需求关键词搜索,查看已有策略经验、工具评估、工作流总结。已有成熟策略则直接评估适用性。
+2. **线上调研**:知识库不足时,从工作流角度和工具能力角度分别搜索。
+3. **自行总结**:以上均无完全匹配时,基于已收集信息总结策略,并用 save_knowledge 存储。
+
+**策略评估维度**:核心思路、依赖工具能力(是否可用)、上限点/下限点覆盖度、优点、局限性、风险、与预期目标一致性。
+
+**中途检查**:每轮搜索后重新读取 analysis.json,验证策略覆盖度。
+
+最终选定一个策略(或组合),说明选择理由。
+
+**输出** `%output_dir%/research.json`,schema 如下:
+
+```jsonschema
+{
+  "strategies": [
+    {
+      "name": "string — 策略名称",
+      "source": "string — 来源(knowledge_id / URL / 帖子链接)",
+      "core_idea": "string — 核心思路",
+      "tool_dependencies": ["string — 依赖的工具能力"],
+      "upper_bound_coverage": ["string — 能覆盖的上限点"],
+      "lower_bound_coverage": ["string — 能覆盖的下限点"],
+      "pros": ["string"],
+      "cons": ["string"],
+      "risks": ["string"],
+      "feasibility": "high | medium | low"
+    }
+  ],
+  "selected_strategy": {
+    "name": "string",
+    "reasoning": "string — 选择理由",
+    "vs_alternatives": [
+      {
+        "alternative": "string",
+        "why_not": "string",
+        "could_switch_if": "string"
+      }
+    ]
+  }
+}
+```
+
+### 第三步:实例化粗工序
+
+**前置**:重新读取 analysis.json 和 research.json。
+
+精细读取具体素材,将策略实例化:确定可用素材、将策略阶段映射到具体图和特征。
+
+#### 核心原则:规格驱动的依赖树
+
+粗工序是一棵规格驱动的依赖树,不是线性流水线。
+
+执行阶段无法访问目标成品图,只能访问输入文件夹中的目标特征规格(制作表、特征表、元素 JSON)。规划必须基于"特征需求"而非"成品图"。
+
+依赖树结构:
+- 根节点:每张图的目标特征规格(全部视觉特征集合)
+- 叶节点:原始素材或从零生成的基础产物
+- 中间节点:半成品,代表已满足的一组特征,可被多个下游共享
+
+#### 双向收敛构建法
+
+**自顶向下(需求拆解)**:从目标特征规格出发,拆解子特征和组成部分。每个节点表示"需要满足某些特征约束的中间产物"。
+
+**自底向上(能力推导)**:从已有素材和工具能力出发,推导可稳定产出的特征集合。
+
+**中间对齐(规格匹配)**:
+- 供给节点产出特征覆盖需求节点特征约束 → 路径可行
+- 无法覆盖 → 需更换工具/素材、调整路径、或降低还原标准
+
+#### 粗工序结构特征
+
+- 阶段性:每个节点是流程阶段,非具体操作
+- 树状层级:父节点是目标规格,子节点是实现所需阶段
+- 规格传递:每个节点有 required_spec(输入需求)和 output_spec(输出承诺)
+- 抽象层级高:不涉及工具和参数
+- 可承载细工序:叶节点后续可展开为微操作步骤
+
+#### 策略验证与回退
+
+每个节点需做规格满足检查(spec satisfaction check)。
+
+持续自检:
+1. 逐阶段检查 output_spec 是否满足下游 required_spec,不满足则标记风险
+2. 风险累积影响交付质量时,回退到备选策略
+3. 记录当前策略相对候选策略的优势是否仍成立
+
+风险过高时可保留多个粗工序方案(pipelines 数组多条目)。
+
+**输出** `%output_dir%/pipeline.json`,schema 如下:
+
+```jsonschema
+{
+  "pipelines": [
+    {
+      "strategy": {
+        "name": "string",
+        "description": "string",
+        "reasoning": "string — 关联 analysis.json 需求",
+        "vs_alternatives": [
+          { "alternative": "string", "why_not": "string", "could_switch_if": "string" }
+        ],
+        "risks_found_during_instantiation": [
+          { "stage_id": "string", "risk": "string", "severity": "high|medium|low", "mitigation": "string" }
+        ]
+      },
+      "goal_tree": {
+        "stage_id": "string",
+        "stage_name": "string",
+        "description": "string",
+        "required_spec": "string | [string]",
+        "output_spec": "string | [string]",
+        "spec_satisfaction": {
+          "status": "satisfied|partial|unsatisfied",
+          "gap": "string — 未覆盖的特征",
+          "mitigation": "string"
+        },
+        "target_images": ["string"],
+        "stage_output": "string",
+        "input_from": ["string — 依赖的 stage_id 或素材路径"],
+        "covers_requirements": ["string — 覆盖的上限点/下限点"],
+        "importance": "upper|lower|base",
+        "reasoning": {
+          "why_needed": "string",
+          "why_here": "string"
+        },
+        "children": ["...递归同结构"]
+      },
+      "requirement_coverage": {
+        "<需求名称>": {
+          "covered_by": ["string — stage_id"],
+          "coverage_confidence": "high|medium|low",
+          "gap_note": "string"
+        }
+      }
+    }
+  ]
+}
+```
+
+#### 粗工序要求
+
+- 阶段粒度:可独立描述目标和产物的流程单元,不过细也不过粗
+- 规格完整性:每个节点必须有 required_spec 和 output_spec
+- 规格满足检查:每个非叶节点做 spec_satisfaction 检查
+- 分支区分:不同类型/特征的图片走各自子树
+- 跨分支依赖:通过 input_from 显式标注
+- 需求全覆盖:analysis.json 每个上限点和下限点至少出现在一个阶段的 covers_requirements 中
+- 素材利用:已有素材在 input_from 中标注路径
+
+### 第四步:生成可视化报告
+
+执行 `%visualize_script%`,读取前三步 JSON 文件,生成 `%output_dir%/restoration_plan.html`。
+
+JSON schema 已固定,可视化逻辑由脚本统一处理。
+
+## 注意事项
+
+- `%input_dir%/index.md` 是导航入口
+- `%input_dir%/features/` 下按维度组织特征目录,每个目录有 mapping.json(如存在)
+- 所有输出必须在 `%output_dir%/` 下
+- analysis.json 是指导性文件,每步开始前重新读取
+- 不确定时优先调研,其次请求人工协助(feishu 联系孙若天)
+- 通用策略知识用 save_knowledge 存储
+
+$user$
+输入目录:%input_dir%
+输出目录:%output_dir%
+可视化脚本:%visualize_script%
+
+请对 %input_dir% 中的图文帖子内容制定还原粗工序:
+1. 读取亮点和制作点,分析还原需求(上限点+下限点),输出 analysis.json
+2. 搜索还原策略(知识库→线上→自行总结),评估选定,输出 research.json(列举来源)
+3. 精细读取制作表和 features,实例化粗工序,输出 pipeline.json
+4. 执行 `%visualize_script%` 生成可视化报告
+
+目标是确定"还原策略"和"粗工序",不关心具体工具参数和实现细节。
+尽快得到答案,不要跑太多轮。search_posts 不好用时改用 browser-use,有问题联系关涛。

+ 88 - 0
examples/research/channel.md

@@ -0,0 +1,88 @@
+# 🏹 AI 调研 Agent 指南针:全域工序还原(Restoration)指南 (v2.0)
+
+## 核心哲学:精准对标与确定性闭环
+
+> **还原不是探索,而是“按图索骥”。**
+> 还原的目标是:消除不确定性。Agent 必须在全网寻找那些已经被证明“成功还原了类似需求”的最佳实践(Best Practice),并提取出直接可用的 **“配方(Recipe)”**。
+
+---
+
+## 一、 还原维度与平台功能定义
+
+| 还原维度                  | 解决的核心问题                       | 核心信源                           | 还原依据                           |
+| ------------------------- | ------------------------------------ | ---------------------------------- | ---------------------------------- |
+| **视觉还原 (Visual)**     | “如何让生成的图像与目标 1:1 匹配?”  | Civitai, Liblib, 小红书            | 模型 DNA (Prompt + Seed + LoRA)    |
+| **功能还原 (Functional)** | “如何实现这个特定的自动化动作?”     | GitHub, browser_use 社区, 官方文档 | 代码逻辑 (API + 脚本 + 环境)       |
+| **流程还原 (Workflow)**   | “这一步到下一步怎么接最稳?”         | B站, YouTube, ComfyUI 官方社群     | 操作链路 (节点图 + 逻辑开关)       |
+| **细节还原 (Detail)**     | “如何解决重绘边缘不自然等下限问题?” | Reddit, Discord, 掘金/CSDN         | 补丁方案 (Fixes + Advanced Params) |
+
+---
+
+## 二、 平台评价:从“还原”视角出发
+
+### 1. **资产与参数商店 (Civitai / Liblib)** —— **[寻找还原“配方”]**
+
+- **评价**:这是还原视觉效果的“原材料仓库”。
+- **还原逻辑**:
+- **精准锁定**:通过 Case 反查对应的 Checkpoint 和 LoRA。
+- **权重复制**:直接提取 Case 图片中的参数,作为还原的“初始值”。
+- **一键复现**:利用平台提供的“生成数据”功能,确保在本地环境下能还原出同等质量。
+
+### 2. **实战演示厅 (B站 / YouTube / 小红书)** —— **[寻找还原“演示”]**
+
+- **评价**:这是还原复杂工序的“动作指导”。
+- **还原逻辑**:
+- **所见即所得**:视频中能跑通,说明该工具链在特定版本下是有效的。
+- **动作模仿**:观察博主在遇到特定 Risk(如边缘溢出)时的实时处理动作。
+- **避坑预判**:视频中提到的“注意这个勾选框”是还原成功的关键。
+
+### 3. **工程基建站 (GitHub / 开发者社区)** —— **[寻找还原“引擎”]**
+
+- **评价**:这是还原自动化逻辑的“动力源”。
+- **还原逻辑**:
+- **版本对标**:寻找与 Pipeline 需求版本最匹配的分支。
+- **环境克隆**:通过 `requirements.txt` 和 `Docker` 文件,100% 还原开发环境,避免“在我这跑不通”的问题。
+- **Issue 检索**:搜索“如何实现 XXX 效果”,寻找前人的集成经验。
+
+### 4. **疑难修复站 (Reddit / Discord / 知乎)** —— **[寻找还原“补丁”]**
+
+- **评价**:当还原进度卡在 90% 时,这里提供最后的 10%。
+- **还原逻辑**:
+- **长尾问题解决**:搜索特定的报错信息或效果瑕疵。
+- **隐秘参数**:挖掘那些官方文档没写、但社区公认对还原效果有奇效的参数(如 `Clip Skip`, `Denoising strength`)。
+
+---
+
+## 三、 Agent 还原行动协议 (Restoration Protocol)
+
+### Step 1: 还原指纹比对 (Requirement Mapping)
+
+Agent 接收到 Pipeline 后,必须先将 `required_spec` 转化为“还原搜索词”:
+
+- **例**:还原“芒果切块”效果。
+- **搜索词**:`FLUX mango pieces LoRA`, `ComfyUI fruit cutting workflow`, `Inpaint mango texture fix`.
+
+### Step 2: 交叉验证“配方”真实性
+
+Agent 必须找到**“工具+用例”**的闭合环路:
+
+1. **路径 A**:在 GitHub 找到了工具(如 `FLUX.1-Fill`)。
+2. **路径 B**:在 Civitai 或 B 站找到了使用该工具成功还原出“高一致性物体重绘”的真实 Case。
+3. **判定**:只有当 A 与 B 相互印证时,方案才被视为“可还原”。
+
+### Step 3: 输出《还原操作指南》 (The Recipe)
+
+Agent 不只提供工具,而是输出包含以下要素的**决策矩阵**:
+
+- **选定工具**:具体的版本号和分支。
+- **核心参数**:为了还原该效果必须设置的关键数值(Master Key)。
+- **数据流向**:Input 格式是什么,Output 如何交给下一个 Stage。
+- **风险对冲**:如果还原失败,首选的 Alternative 方案是什么。
+
+---
+
+## 四、 给 Agent 的“搜索工具箱” (Query Patterns)
+
+- **视觉还原类**:`【工具】还原【目标效果】的参数配置` / `【目标效果】专用模型下载`
+- **工序还原类**:`【工具】实现【步骤名称】的完整 Workflow 导出` / `【工具】连接【工具】的数据转换脚本`
+- **避坑还原类**:`为什么【工具】无法还原【目标效果】` / `解决【工具】在【步骤】中的边缘模糊问题`

+ 9 - 3
examples/research/config.py

@@ -11,7 +11,7 @@ from agent.core.runner import KnowledgeConfig, RunConfig
 
 RUN_CONFIG = RunConfig(
     # 模型配置
-    model="claude-sonnet-4.5",
+    model="qwen3.5-plus",
     temperature=0.3,
     max_iterations=1000,
 
@@ -35,12 +35,18 @@ RUN_CONFIG = RunConfig(
         owner="",  # 所有者(空则尝试从 git config user.email 获取,再空则用 agent:{agent_id})
         default_tags={"project": "research", "domain": "ai_agent"},  # 默认 tags(会与工具调用参数合并)
         default_scopes=["org:cybertogether"],  # 默认 scopes
-        default_search_types=[],  # 默认搜索类型过滤
-        default_search_owner=""  # 默认搜索 owner 过滤(空则不过滤,支持多个owner用逗号分隔,如 "user1@example.com,user2@example.com"
+        default_search_types=["strategy"],  # 默认搜索类型过滤
+        default_search_owner="guantao,guantao@cybertogether.net"  # 默认搜索 owner 过滤(空则不过滤)
     )
 )
 
 
+# ===== 任务配置 =====
+
+INPUT_DIR = "examples/research/input"       # 输入素材目录
+OUTPUT_DIR = "examples/research/outputs/output_2"                   # 输出目录 ID,输出保存在 examples/plan/outputs/{OUTPUT_DIR}/
+
+
 # ===== 基础设施配置 =====
 
 SKILLS_DIR = "./skills"

+ 128 - 0
examples/research/cong/analysis.json

@@ -0,0 +1,128 @@
+{
+  "content_category": {
+    "category": "AI 知识科普笔记风格海报",
+    "characteristics": [
+      "拟物化笔记本/活页夹场景设计",
+      "手写风格与印刷字体混排",
+      "手绘装饰元素(星星、花朵、回形针、卡通图标)",
+      "结构化信息分层排版",
+      "语义化色彩高亮标记",
+      "知识可视化图表(矩阵、表格)"
+    ],
+    "common_challenges": [
+      "纸张纹理和褶皱的真实感还原",
+      "手写字体与印刷字体的区分和一致性",
+      "手绘装饰元素的自然度和跨图一致性",
+      "复杂排版结构的空间透视关系",
+      "回形针等金属装饰的光影质感",
+      "文字内容的精准还原(尤其是专业术语)"
+    ],
+    "reasoning": "从制作亮点和制作表可以看出,这是一组模拟实体笔记本场景的 AI 知识科普海报。核心特征是将数字化内容包装在物理容器(螺旋笔记本/活页夹)中,通过拟物化设计增强阅读代入感。这类内容在 AI 还原中的典型挑战包括:材质纹理的真实感、跨图元素一致性、复杂排版的空间关系等。"
+  },
+  "upper_bounds": [
+    {
+      "name": "拟真纸张与笔记本实体",
+      "description": "带褶皱纹理的信纸和螺旋活页笔记本,真实触感的书写介质",
+      "type": "实质",
+      "coverage_images": ["img_1", "img_2", "img_3", "img_4"],
+      "reasoning": "来自制作亮点聚类第 1 条,是所有图片的物理基础,决定了整体质感"
+    },
+    {
+      "name": "核心英文单词",
+      "description": "页面中心的大号英文单词(Embedding),位于彩色背景块上,权重 87.3",
+      "type": "实质",
+      "coverage_images": ["img_1", "img_2", "img_3", "img_4"],
+      "reasoning": "来自制作点权重排序第 1 位,是每张图的视觉焦点,必须精准还原文字内容、字号、颜色、字体"
+    },
+    {
+      "name": "结构化排版与导视",
+      "description": "居中堆叠、虚线分隔、层级列表,严谨清晰的视觉秩序",
+      "type": "形式",
+      "coverage_images": ["img_2", "img_3", "img_4"],
+      "reasoning": "来自制作亮点聚类第 3 条,img_2/3/4 都有复杂的信息分层结构,需要精确还原排版逻辑"
+    },
+    {
+      "name": "知识可视化图表",
+      "description": "数据转化图表,将抽象算法逻辑具象化为可视矩阵",
+      "type": "实质",
+      "coverage_images": ["img_2"],
+      "reasoning": "来自制作亮点聚类第 6 条,img_2 包含 Tokenization-Embedding 对应表格,需要精准还原表格结构、填充色、数值内容"
+    },
+    {
+      "name": "语义化色彩高亮",
+      "description": "荧光笔触、彩色字体对关键术语进行视觉强调",
+      "type": "形式",
+      "coverage_images": ["img_2", "img_3", "img_4"],
+      "reasoning": "来自制作亮点聚类第 5 条,多处文本有紫色/蓝色/黄色高亮,需要精准还原高亮位置和颜色"
+    },
+    {
+      "name": "手绘装饰与卡通图标",
+      "description": "星星、花朵、笑脸及各类卡通小图标等手绘涂鸦元素",
+      "type": "实质",
+      "coverage_images": ["img_1", "img_2", "img_3", "img_4"],
+      "reasoning": "来自制作亮点聚类第 4 条,img_1 有星星花朵,img_2/3/4 有卡通表情,需要还原形状和颜色"
+    }
+  ],
+  "lower_bounds": [
+    {
+      "name": "跨图元素一致性",
+      "description": "螺旋笔记本/活页夹框架、回形针装饰、纸张纹理在 4 张图中必须保持视觉一致性",
+      "importance": "critical",
+      "consequence_if_failed": "如果每张图的笔记本框架、回形针样式、纸张质感不一致,会让整组图看起来像是拼凑的,破坏系列感",
+      "reasoning": "img_2/3/4 都使用相同的螺旋笔记本框架和回形针装饰,img_1 使用信纸背景。这些基础元素必须在 4 张图中保持统一的设计语言,否则会被识别为 AI 生成的随机结果"
+    },
+    {
+      "name": "文字内容精准度",
+      "description": "所有文字内容(尤其是专业术语、表格数值、英文单词)必须准确无误",
+      "importance": "critical",
+      "consequence_if_failed": "文字错误会让科普内容失去可信度,'一眼假'。特别是 Embedding 这样的核心术语和表格中的数值",
+      "reasoning": "制作表中详细记录了每段文字的内容、颜色、字号、字体。AI 生成容易出现文字错乱、拼写错误、数值偏差,这是知识类内容的大忌"
+    },
+    {
+      "name": "排版空间透视关系",
+      "description": "文字、装饰元素、表格在纸张上的空间位置必须符合透视逻辑",
+      "importance": "high",
+      "consequence_if_failed": "如果文字漂浮、装饰元素穿透纸张、表格扭曲,会破坏拟物化的真实感",
+      "reasoning": "拟物化设计的关键是让数字内容看起来像是写在实体纸张上。元素的空间关系(前后遮挡、透视变形、阴影投射)必须物理合理"
+    },
+    {
+      "name": "材质纹理真实感",
+      "description": "纸张的褶皱纹理、活页夹的塑料质感、回形针的金属光泽必须自然",
+      "importance": "high",
+      "consequence_if_failed": "材质过于平滑或纹理重复会让画面显得'塑料感'或'AI 感'",
+      "reasoning": "制作亮点第 1 条强调'真实触感的书写介质'。纸张的褶皱、脏污感、活页夹的光滑塑料感、回形针的金属反光都需要精细还原"
+    },
+    {
+      "name": "手绘元素的自然度",
+      "description": "星星、花朵、卡通图标等手绘装饰必须有手绘的不规则感和笔触感",
+      "importance": "medium",
+      "consequence_if_failed": "如果手绘元素过于规整或矢量感太强,会失去'手绘笔记'的氛围",
+      "reasoning": "制作亮点第 4 条强调'手绘涂鸦元素'。手绘的特征是轻微的不规则、笔触变化、颜色不均匀,过于完美反而假"
+    },
+    {
+      "name": "色彩高亮的物理合理性",
+      "description": "荧光笔高亮应该有半透明叠加效果,能看到底层文字",
+      "importance": "medium",
+      "consequence_if_failed": "如果高亮是完全覆盖的不透明色块,会失去荧光笔的真实感",
+      "reasoning": "制作表中多处提到'高亮显示'。真实的荧光笔是半透明的,应该能看到被高亮的文字,同时文字颜色会受高亮色影响"
+    }
+  ],
+  "requirement_summary": {
+    "core_goal": "还原一组 AI 知识科普笔记风格海报,核心是拟物化笔记本场景 + 精准文字内容 + 结构化排版",
+    "priority_order": [
+      "1. 文字内容精准度(核心英文单词、专业术语、表格数值)",
+      "2. 跨图元素一致性(笔记本框架、回形针、纸张纹理)",
+      "3. 材质纹理真实感(纸张褶皱、塑料质感、金属光泽)",
+      "4. 排版空间透视关系(元素位置、遮挡、阴影)",
+      "5. 手绘元素自然度(星星、花朵、卡通图标)",
+      "6. 色彩高亮物理合理性(半透明叠加效果)"
+    ],
+    "key_challenges": [
+      "同时满足文字精准度和材质真实感(通常文字生成和材质生成是分离的)",
+      "保持 4 张图的视觉一致性(需要统一的底图或生成策略)",
+      "复杂表格结构的精准还原(img_2 的 Tokenization-Embedding 对应表)",
+      "手绘装饰元素的跨图一致性(形状、颜色、风格)"
+    ],
+    "reasoning": "综合品类特征、上限点和下限点,还原的核心矛盾是:既要保证文字内容 100% 准确(尤其是专业术语和数值),又要保证材质纹理的真实感和跨图一致性。这决定了策略选择必须能够分离处理'文字层'和'材质层',并且有可靠的文字渲染能力。"
+  }
+}

+ 32 - 0
examples/research/cong/descriptions/制作亮点.md

@@ -0,0 +1,32 @@
+"聚类结果":[{
+  "聚类主题": "拟真纸张与笔记本实体",
+  "聚类描述": "该聚类属于实质。这些亮点展示了构成画面的物理基础,包括带有褶皱纹理的信纸和具有实体感的螺旋活页笔记本。它们作为具体的视觉物体,为内容提供了具有真实触感和生活气息的书写介质。",
+  "亮点类型": "实质",
+},
+{
+  "聚类主题": "拟物化笔记场景呈现",
+  "聚类描述": "该聚类属于形式。设计通过模仿实体螺旋笔记本的构图框架、边缘纹理和阴影处理,构建了一种沉浸式的“手记”视觉风格。这种呈现方式将数字化内容包装在熟悉的物理容器形式中,增强了阅读的代入感。",
+  "亮点类型": "形式",
+},
+{
+  "聚类主题": "结构化排版与导视",
+  "聚类描述": "该聚类属于形式。画面利用居中堆叠、虚线分隔、层级列表等排版手段,构建了严谨而清晰的视觉秩序。这种结构化的布局形式通过空间分割和视线引导,将复杂的信息拆解为易于消化的模块,提升了阅读体验。",
+  "亮点类型": "形式",
+},
+{
+  "聚类主题": "手绘装饰与卡通图标",
+  "聚类描述": "该聚类属于实质。画面中散布着星星、花朵、笑脸及各类卡通小图标等手绘涂鸦元素。这些具象的装饰性物体不仅丰富了画面的视觉层次,更以轻松活泼的风格中和了科技主题的枯燥感。",
+  "亮点类型": "实质",
+},
+{
+  "聚类主题": "语义化色彩高亮",
+  "聚类描述": "该聚类属于形式。设计模拟了学生做笔记时的色彩标记习惯,利用荧光笔触、彩色字体对关键术语进行视觉强调。这种形式手段建立了清晰的信息层级,有效地引导读者快速捕捉核心知识点。",
+  "亮点类型": "形式",
+},
+{
+  "聚类主题": "知识可视化图表",
+  "聚类描述": "该聚类属于实质。亮点展示了一个具体的数据转化图表,将抽象的算法逻辑具象化为可视的矩阵数据。它是画面中用于教育解释的核心物体,直观演示了从分词到向量的转化过程。",
+  "亮点类型": "实质"
+}
+
+]

+ 37 - 0
examples/research/cong/descriptions/制作点.md

@@ -0,0 +1,37 @@
+{
+"元素ID": "元素1",
+"元素名称": "核心英文单词",
+"元素描述": "页面中心位置的英文单词,字体较大,颜色突出,通常位于一个彩色背景块上。",
+"段落数量": 4,
+"段落列表": [
+"段落1.3.3",
+"段落2.2.2",
+"段落3.2.2",
+"段落4.2.2"
+],
+"综合权重": 87.3
+},
+{
+"元素ID": "元素2",
+"元素名称": "背景",
+"元素描述": "带有横线的笔记本纸张纹理背景,边缘有虚线边框,整体呈现笔记风格。",
+"段落数量": 3,
+"段落列表": [
+"段落2.1",
+"段落3.1",
+"段落4.1"
+],
+"综合权重": 59.2
+},
+{
+"元素ID": "元素3",
+"元素名称": "回形针装饰",
+"元素描述": "页面左侧和右侧边缘的蓝色回形针形状装饰,用于固定页面,具有立体感。",
+"段落数量": 3,
+"段落列表": [
+"段落2.2.1",
+"段落3.2.1",
+"段落4.2.1"
+],
+"综合权重": 48.7
+}

+ 679 - 0
examples/research/cong/descriptions/小葱__img_1_制作表.json

@@ -0,0 +1,679 @@
+[
+  {
+    "名称": "笔记风格海报",
+    "描述": "一张以笔记本纸张为背景的宣传海报,包含标题、副标题、英文单词、励志语录和日期等多种文字信息,并配有装饰性图案。",
+    "段落ID": "段落1",
+    "形式": {
+      "背景纹理": {
+        "名称": "背景纹理",
+        "描述": "背景呈现出米白色纸张的纹理,带有横向的浅灰色细线,模拟笔记本纸张效果,同时纸张表面有不规则的褶皱和轻微的脏污感。",
+        "类型": "纹理",
+        "形式ID": "形式12",
+        "评分详情": {
+          "combined_score": 0.644
+        }
+      },
+      "背景颜色": {
+        "名称": "背景颜色",
+        "描述": "背景主色调为米白色,具体RGB值为(245, 245, 235)。",
+        "类型": "色彩",
+        "形式ID": "形式9",
+        "评分详情": {
+          "combined_score": 0.518
+        }
+      },
+      "文字内容": {
+        "名称": "文字内容",
+        "描述": "海报中包含中文文字“小葱白工”、“每天掌握一个”、“AI知识点”、“你走过的路,都会成为你的底气。”,英文文字“Growth”、“Hope”、“Future”、“Embedding”、“\"The paths you've walked will build your strength.\"”,以及日期“04.28”。",
+        "类型": "内容",
+        "形式ID": "形式1",
+        "评分详情": {
+          "combined_score": 0.672
+        }
+      },
+      "文字颜色": {
+        "名称": "文字颜色",
+        "描述": "“小葱白工”为深灰色(RGB: 60, 60, 60),“Growth”、“Hope”、“Future”为浅灰色(RGB: 150, 150, 150),“每天掌握一个”、“AI知识点”为深灰色(RGB: 60, 60, 60),“Embedding”为蓝色(RGB: 60, 140, 220),“你走过的路,都会成为你的底气。”为深灰色(RGB: 60, 60, 60),“\"The paths you've walked will build your strength.\"”为深灰色(RGB: 60, 60, 60),“Date: 04.28”为深灰色(RGB: 60, 60, 60)。",
+        "类型": "色彩",
+        "形式ID": "形式5",
+        "评分详情": {
+          "combined_score": 0.574
+        }
+      },
+      "文字字号": {
+        "名称": "文字字号",
+        "描述": "“每天掌握一个”和“AI知识点”的字号最大,目测约为100pt;“Embedding”字号次之,目测约为90pt;“你走过的路,都会成为你的底气。”和“\"The paths you've walked will build your strength.\"”字号较小,目测约为30pt;“小葱白工”、“Growth”、“Hope”、“Future”、“Date: 04.28”字号最小,目测约为25pt。",
+        "类型": "尺寸",
+        "形式ID": "形式7",
+        "评分详情": {
+          "combined_score": 0.595
+        }
+      },
+      "文字字体": {
+        "名称": "文字字体",
+        "描述": "中文标题“每天掌握一个”、“AI知识点”和副标题“你走过的路,都会成为你的底气。”采用手写风格的粗体中文字体;英文单词“Embedding”采用粗体无衬线字体;“小葱白工”采用手写风格中文字体;“Growth”、“Hope”、“Future”采用手写风格英文衬线字体;英文励志语录“\"The paths you've walked will build your strength.\"”采用手写风格英文衬线字体;日期“Date: 04.28”采用手写风格英文无衬线字体。",
+        "类型": "字体",
+        "形式ID": "形式8",
+        "评分详情": {
+          "combined_score": 0.616
+        }
+      },
+      "文字排版": {
+        "名称": "文字排版",
+        "描述": "“小葱白工”位于画面左上角,横向排列;“Growth”、“Hope”、“Future”位于画面右上角,竖向排列,每个单词被椭圆形边框包围;“每天掌握一个”位于画面中央偏上,横向居中排列;“AI知识点”位于“每天掌握一个”下方,横向居中排列;“Embedding”位于“AI知识点”下方,横向居中排列;“你走过的路,都会成为你的底气。”位于画面中下部,横向居中排列;“\"The paths you've walked will build your strength.\"”位于中文励志语录下方,横向居中排列;“Date: 04.28”位于画面左下角,横向排列。",
+        "类型": "布局",
+        "形式ID": "形式3",
+        "评分详情": {
+          "combined_score": 0.546
+        }
+      },
+      "图案形状": {
+        "名称": "图案形状",
+        "描述": "画面左上角有两颗星星图案,一颗为五角星,一颗为四角星;画面右上角有三个椭圆形边框;画面左下角有三朵花朵图案,每朵花有四个花瓣,花瓣呈圆形,花蕊呈圆形;画面右下角有四颗四角星图案。",
+        "类型": "形状",
+        "形式ID": "形式2",
+        "评分详情": {
+          "combined_score": 0.49
+        }
+      },
+      "涂抹形状": {
+        "名称": "涂抹形状",
+        "描述": "副标题“AI知识点”下方有一个不规则的粉色涂抹区域,形状呈横向椭圆形,边缘模糊,模拟手绘涂抹效果。",
+        "类型": "形状",
+        "评分详情": {
+          "combined_score": 0.525
+        }
+      },
+      "涂抹颜色": {
+        "名称": "涂抹颜色",
+        "描述": "涂抹区域的颜色为粉色,具体RGB值为(255, 180, 200)。",
+        "类型": "色彩",
+        "评分详情": {
+          "combined_score": 0.406
+        }
+      },
+      "涂抹位置": {
+        "名称": "涂抹位置",
+        "描述": "涂抹区域位于画面中央,覆盖了副标题“AI知识点”的下方,其顶点坐标为[200, 470], [1000, 470], [1000, 700], [200, 700]。",
+        "类型": "布局",
+        "评分详情": {
+          "combined_score": 0.42
+        }
+      },
+      "评分详情": {
+        "combined_score": 0.658
+      }
+    },
+    "子段落": [
+      {
+        "名称": "背景",
+        "描述": "一张带有横线和褶皱纹理的米白色笔记本纸张背景。",
+        "段落ID": "段落1.1",
+        "形式": {
+          "背景纹理": {
+            "名称": "背景纹理",
+            "描述": "背景呈现出米白色纸张的纹理,带有横向的浅灰色细线,模拟笔记本纸张效果,同时纸张表面有不规则的褶皱和轻微的脏污感。",
+            "类型": "纹理",
+            "形式ID": "形式12",
+            "评分详情": {
+              "combined_score": 0.63
+            }
+          },
+          "背景颜色": {
+            "名称": "背景颜色",
+            "描述": "背景主色调为米白色,具体RGB值为(245, 245, 235)。",
+            "类型": "色彩",
+            "形式ID": "形式9",
+            "评分详情": {
+              "combined_score": 0.56
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.644
+          }
+        }
+      },
+      {
+        "名称": "顶部装饰与信息",
+        "描述": "画面顶部左右两侧的装饰性图案和文字。",
+        "段落ID": "段落1.2",
+        "形式": {
+          "文字颜色": {
+            "名称": "文字颜色",
+            "描述": "“小葱白工”为深灰色(RGB: 60, 60, 60),“Growth”、“Hope”、“Future”为浅灰色(RGB: 150, 150, 150)。",
+            "类型": "色彩",
+            "形式ID": "形式5",
+            "评分详情": {
+              "combined_score": 0.616
+            }
+          },
+          "文字字号": {
+            "名称": "文字字号",
+            "描述": "“小葱白工”、“Growth”、“Hope”、“Future”字号较小,目测约为25pt。",
+            "类型": "尺寸",
+            "形式ID": "形式7",
+            "评分详情": {
+              "combined_score": 0.644
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.441
+          }
+        },
+        "子段落": [
+          {
+            "名称": "左侧标识",
+            "描述": "画面左上角由星星图案和文字组成的标识。",
+            "段落ID": "段落1.2.1",
+            "形式": {
+              "图案形状": {
+                "名称": "图案形状",
+                "描述": "包含一颗粉色五角星和一颗黄色四角星。",
+                "类型": "形状",
+                "形式ID": "形式2",
+                "评分详情": {
+                  "combined_score": 0.49
+                }
+              },
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "中文文字“小葱白工”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.672
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "文字颜色为深灰色,具体RGB值为(60, 60, 60)。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号较小,目测约为25pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "采用手写风格中文字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "文字位于星星图案下方,横向排列,整体居中。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.546
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.266
+              }
+            },
+            "子段落": [
+              {
+                "名称": "星星图案",
+                "描述": "左上角由粉色和黄色星星组成的图案。",
+                "段落ID": "段落1.2.1.1",
+                "形式": {
+                  "图案形状": {
+                    "名称": "图案形状",
+                    "描述": "包含一颗粉色五角星和一颗黄色四角星。",
+                    "类型": "形状",
+                    "形式ID": "形式2",
+                    "评分详情": {
+                      "combined_score": 0.49
+                    }
+                  },
+                  "评分详情": {
+                    "combined_score": 0.231
+                  }
+                }
+              },
+              {
+                "名称": "标识文字",
+                "描述": "左上角星星图案下方的中文文字。",
+                "段落ID": "段落1.2.1.2",
+                "形式": {
+                  "评分详情": {
+                    "combined_score": 0.301
+                  }
+                }
+              }
+            ]
+          },
+          {
+            "名称": "右侧标签",
+            "描述": "画面右上角竖向排列的三个椭圆形边框文字标签。",
+            "段落ID": "段落1.2.2",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "包含英文文字“Growth”、“Hope”、“Future”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.672
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "文字颜色为浅灰色,具体RGB值为(150, 150, 150)。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号较小,目测约为25pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "采用手写风格英文衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "三个单词竖向排列,每个单词被一个椭圆形边框包围,整体位于画面右上角。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.546
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.231
+              }
+            }
+          }
+        ]
+      },
+      {
+        "名称": "主要内容区",
+        "描述": "海报中央区域,包含标题、副标题和核心英文单词,是视觉焦点。",
+        "段落ID": "段落1.3",
+        "形式": {
+          "文字内容": {
+            "名称": "文字内容",
+            "描述": "包含中文文字“每天掌握一个”、“AI知识点”和英文文字“Embedding”。",
+            "类型": "内容",
+            "形式ID": "形式1",
+            "评分详情": {
+              "combined_score": 0.616
+            }
+          },
+          "文字颜色": {
+            "名称": "文字颜色",
+            "描述": "“每天掌握一个”、“AI知识点”为深灰色(RGB: 60, 60, 60),“Embedding”为蓝色(RGB: 60, 140, 220)。",
+            "类型": "色彩",
+            "形式ID": "形式5",
+            "评分详情": {
+              "combined_score": 0.532
+            }
+          },
+          "文字字号": {
+            "名称": "文字字号",
+            "描述": "“每天掌握一个”和“AI知识点”的字号最大,目测约为100pt;“Embedding”字号次之,目测约为90pt。",
+            "类型": "尺寸",
+            "形式ID": "形式7",
+            "评分详情": {
+              "combined_score": 0.574
+            }
+          },
+          "文字字体": {
+            "名称": "文字字体",
+            "描述": "中文标题“每天掌握一个”、“AI知识点”采用手写风格的粗体中文字体;英文单词“Embedding”采用粗体无衬线字体。",
+            "类型": "字体",
+            "形式ID": "形式8",
+            "评分详情": {
+              "combined_score": 0.49
+            }
+          },
+          "文字排版": {
+            "名称": "文字排版",
+            "描述": "“每天掌握一个”位于画面中央偏上,横向居中排列;“AI知识点”位于“每天掌握一个”下方,横向居中排列;“Embedding”位于“AI知识点”下方,横向居中排列。",
+            "类型": "布局",
+            "形式ID": "形式3",
+            "评分详情": {
+              "combined_score": 0.455
+            }
+          },
+          "涂抹位置": {
+            "名称": "涂抹位置",
+            "描述": "涂抹区域位于画面中央,覆盖了副标题“AI知识点”的下方,其顶点坐标为[200, 470], [1000, 470], [1000, 700], [200, 700]。",
+            "类型": "布局",
+            "评分详情": {
+              "combined_score": 0.42
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.616
+          }
+        },
+        "子段落": [
+          {
+            "名称": "标题",
+            "描述": "深灰色粗体中文字,位于画面顶部偏中。",
+            "段落ID": "段落1.3.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "中文文字“每天掌握一个”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号最大,目测约为100pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.448
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "采用手写风格的粗体中文字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.462
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "文字位于画面中央偏上,横向居中排列。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.406
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.476
+              }
+            }
+          },
+          {
+            "名称": "副标题",
+            "描述": "深灰色粗体中文字,位于粉色涂抹背景上。",
+            "段落ID": "段落1.3.2",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "中文文字“AI知识点”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号较大,目测约为100pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.406
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "采用手写风格的粗体中文字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.476
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "文字位于“每天掌握一个”下方,横向居中排列,部分文字位于粉色涂抹背景上。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.455
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.532
+              }
+            }
+          },
+          {
+            "名称": "核心英文单词",
+            "描述": "蓝色粗体英文单词,位于副标题下方。",
+            "段落ID": "段落1.3.3",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "英文单词“Embedding”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.672
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "文字颜色为蓝色,具体RGB值为(60, 140, 220)。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号较大,目测约为90pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "采用粗体无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.49
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "文字位于“AI知识点”下方,横向居中排列。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.672
+              }
+            }
+          },
+          {
+            "名称": "粉色涂抹背景",
+            "描述": "副标题下方的粉色不规则涂抹区域。",
+            "段落ID": "段落1.3.4",
+            "形式": {
+              "涂抹颜色": {
+                "名称": "涂抹颜色",
+                "描述": "涂抹区域的颜色为粉色,具体RGB值为(255, 180, 200)。",
+                "类型": "色彩",
+                "评分详情": {
+                  "combined_score": 0.406
+                }
+              },
+              "涂抹位置": {
+                "名称": "涂抹位置",
+                "描述": "涂抹区域位于画面中央,覆盖了副标题“AI知识点”的下方,其顶点坐标为[200, 470], [1000, 470], [1000, 700], [200, 700]。",
+                "类型": "布局",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.441
+              }
+            }
+          }
+        ]
+      },
+      {
+        "名称": "励志语录",
+        "描述": "位于画面中下部的中文和英文励志语录。",
+        "段落ID": "段落1.4",
+        "形式": {
+          "评分详情": {
+            "combined_score": 0.294
+          }
+        }
+      },
+      {
+        "名称": "底部信息区",
+        "描述": "画面底部左侧的日期信息和右侧的装饰性图案。",
+        "段落ID": "段落1.5",
+        "形式": {
+          "文字颜色": {
+            "名称": "文字颜色",
+            "描述": "文字颜色为深灰色,具体RGB值为(60, 60, 60)。",
+            "类型": "色彩",
+            "形式ID": "形式5",
+            "评分详情": {
+              "combined_score": 0.616
+            }
+          },
+          "文字字号": {
+            "名称": "文字字号",
+            "描述": "文字字号最小,目测约为25pt。",
+            "类型": "尺寸",
+            "形式ID": "形式7",
+            "评分详情": {
+              "combined_score": 0.644
+            }
+          },
+          "文字排版": {
+            "名称": "文字排版",
+            "描述": "日期位于画面左下角,横向排列。",
+            "类型": "布局",
+            "形式ID": "形式3",
+            "评分详情": {
+              "combined_score": 0.546
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.35
+          }
+        },
+        "子段落": [
+          {
+            "名称": "日期",
+            "描述": "画面左下角的日期信息。",
+            "段落ID": "段落1.5.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "日期“Date: 04.28”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.672
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "文字颜色为深灰色,具体RGB值为(60, 60, 60)。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号最小,目测约为25pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "采用手写风格英文无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "文字位于画面左下角,横向排列。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.546
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.161
+              }
+            }
+          },
+          {
+            "名称": "底部装饰图案",
+            "描述": "画面右下角由黄色花朵和星星组成的图案。",
+            "段落ID": "段落1.5.2",
+            "形式": {
+              "图案形状": {
+                "名称": "图案形状",
+                "描述": "包含三朵黄色花朵图案,每朵花有四个圆形花瓣,圆形花蕊,以及绿色的花茎;四颗黄色四角星图案。",
+                "类型": "形状",
+                "形式ID": "形式2",
+                "评分详情": {
+                  "combined_score": 0.49
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.245
+              }
+            }
+          }
+        ]
+      }
+    ]
+  }
+]

+ 415 - 0
examples/research/cong/descriptions/小葱__img_2_制作表.json

@@ -0,0 +1,415 @@
+[
+  {
+    "名称": "笔记风格海报",
+    "描述": "一张以蓝色和黄色为主色调的笔记风格海报,模拟了笔记本纸张和活页夹的样式,内容围绕“Embedding”这一主题展开。",
+    "段落ID": "段落2",
+    "形式": {
+      "背景颜色": {
+        "名称": "背景颜色",
+        "描述": "海报背景由左侧的蓝色活页夹边缘和右侧的白色笔记本纸张组成。活页夹边缘为纯蓝色,色值为 #87CEEB。笔记本纸张为纯白色,色值为 #FFFFFF。",
+        "类型": "色彩",
+        "形式ID": "形式9",
+        "评分详情": {
+          "combined_score": 0.525
+        }
+      },
+      "背景形状": {
+        "名称": "背景形状",
+        "描述": "海报整体背景为矩形,尺寸为1200x1700像素。左侧活页夹边缘呈不规则的波浪形,模拟了活页夹的环形结构。右侧白色笔记本纸张为矩形,边缘有虚线和圆孔。",
+        "类型": "形状",
+        "形式ID": "形式10",
+        "评分详情": {
+          "combined_score": 0.574
+        }
+      },
+      "文字内容": {
+        "名称": "文字内容",
+        "描述": "海报内容围绕“Embedding”这一主题展开,包含标题“Embedding”、问题“什么是“Embedding”?”、流程描述“从文本到“Embedding”的流程”以及详细的解释和示例表格。",
+        "类型": "内容",
+        "形式ID": "形式1",
+        "评分详情": {
+          "combined_score": 0.616
+        }
+      },
+      "文字颜色": {
+        "名称": "文字颜色",
+        "描述": "主要标题“Embedding”为黑色(#000000)。问题标题(如“什么是“Embedding”?”)的数字序号为蓝色(#4682B4),问号和文字为黑色(#000000)。正文内容为黑色(#000000)。表格中的文字颜色为黑色(#000000)。",
+        "类型": "色彩",
+        "形式ID": "形式5",
+        "评分详情": {
+          "combined_score": 0.546
+        }
+      },
+      "文字字号": {
+        "名称": "文字字号",
+        "描述": "主标题“Embedding”字号最大,约为100pt。问题标题(如“什么是“Embedding”?”)字号次之,约为30pt。正文内容字号较小,约为18pt。表格中的文字字号最小,约为14pt。",
+        "类型": "尺寸",
+        "形式ID": "形式7",
+        "评分详情": {
+          "combined_score": 0.504
+        }
+      },
+      "文字字体": {
+        "名称": "文字字体",
+        "描述": "主标题“Embedding”采用粗体无衬线字体。问题标题和正文内容采用常规无衬线字体。表格中的文字采用常规无衬线字体。",
+        "类型": "字体",
+        "形式ID": "形式8",
+        "评分详情": {
+          "combined_score": 0.525
+        }
+      },
+      "文字排版": {
+        "名称": "文字排版",
+        "描述": "主标题“Embedding”居中排版。问题标题左对齐,并带有序号和卡通表情。正文内容左对齐,段落之间有间距。表格内容居中对齐。",
+        "类型": "布局",
+        "形式ID": "形式3",
+        "评分详情": {
+          "combined_score": 0.602
+        }
+      },
+      "表格填充色": {
+        "名称": "表格填充色",
+        "描述": "表格的表头行填充色为浅绿色(#90EE90),第一列(Tokenization和Embedding)的背景色为浅紫色(#E6E6FA),其余数据单元格的背景色为白色(#FFFFFF)。",
+        "类型": "色彩",
+        "形式ID": "形式16",
+        "评分详情": {
+          "combined_score": 0.455
+        }
+      },
+      "评分详情": {
+        "combined_score": 0.616
+      }
+    },
+    "子段落": [
+      {
+        "名称": "背景",
+        "描述": "海报的背景,模拟了活页夹的蓝色边缘和白色笔记本纸张,纸张边缘有虚线和圆孔。",
+        "段落ID": "段落2.1",
+        "形式": {
+          "背景颜色": {
+            "名称": "背景颜色",
+            "描述": "背景由左侧的蓝色活页夹边缘和右侧的白色笔记本纸张组成。活页夹边缘为纯蓝色,色值为 #87CEEB。笔记本纸张为纯白色,色值为 #FFFFFF。",
+            "类型": "色彩",
+            "形式ID": "形式9",
+            "评分详情": {
+              "combined_score": 0.427
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.441
+          }
+        }
+      },
+      {
+        "名称": "顶部装饰与信息",
+        "描述": "位于海报顶部,包含一个黄色回形针和标题文字。",
+        "段落ID": "段落2.2",
+        "形式": {
+          "评分详情": {
+            "combined_score": 0.301
+          }
+        },
+        "子段落": [
+          {
+            "名称": "回形针装饰",
+            "描述": "一个黄色的回形针,固定在纸张顶部。",
+            "段落ID": "段落2.2.1",
+            "形式": {
+              "评分详情": {
+                "combined_score": 0.154
+              }
+            }
+          },
+          {
+            "名称": "核心英文单词",
+            "描述": "海报的核心主题词,以大号黑色粗体英文显示。",
+            "段落ID": "段落2.2.2",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "核心英文单词为“Embedding”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.665
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "核心英文单词“Embedding”为黑色,色值为 #000000。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "核心英文单词“Embedding”字号最大,约为100pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "核心英文单词“Embedding”采用粗体无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "核心英文单词“Embedding”居中排版,位于回形针下方,顶点坐标为 [250, 180] 到 [950, 300]。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.595
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.665
+              }
+            }
+          }
+        ]
+      },
+      {
+        "名称": "主要内容区",
+        "描述": "海报的主体部分,包含多个标题和详细的文本内容,以笔记形式呈现。",
+        "段落ID": "段落2.3",
+        "形式": {
+          "文字内容": {
+            "名称": "文字内容",
+            "描述": "主要内容区包含多个标题和详细的文本内容,如“什么是“Embedding”?”、“从文本到“Embedding”的流程”以及对Embedding概念的解释、生成流程的描述和示例表格中的文字。",
+            "类型": "内容",
+            "形式ID": "形式1",
+            "评分详情": {
+              "combined_score": 0.532
+            }
+          },
+          "文字字体": {
+            "名称": "文字字体",
+            "描述": "所有文字均采用无衬线字体,标题部分为粗体,正文和表格为常规字体。",
+            "类型": "字体",
+            "形式ID": "形式8",
+            "评分详情": {
+              "combined_score": 0.525
+            }
+          },
+          "文字排版": {
+            "名称": "文字排版",
+            "描述": "问题标题左对齐,并带有序号和卡通表情。正文内容左对齐,段落之间有间距。表格内容居中对齐。",
+            "类型": "布局",
+            "形式ID": "形式3",
+            "评分详情": {
+              "combined_score": 0.476
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.532
+          }
+        },
+        "子段落": [
+          {
+            "名称": "问题标题1",
+            "描述": "第一个问题标题,包含序号、问号和卡通表情。",
+            "段落ID": "段落2.3.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "标题内容为“1 什么是“Embedding”?”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.462
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "标题左对齐,数字序号“1”被蓝色圆圈包裹,位于文字左侧,卡通问号表情位于标题文字右侧。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.602
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.476
+              }
+            }
+          },
+          {
+            "名称": "问题1正文",
+            "描述": "对“Embedding”概念的解释。",
+            "段落ID": "段落2.3.2",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "正文内容为“Embedding (嵌入)是指把文本(也可能包括图像、视频等其他模态数据)转成能表达语义信息的浮点数向量,向量之间的数学距离可以反映对应文本之间的语义相关性。”",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.56
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "所有文字均为黑色,色值为 #000000。其中“语义信息”和“语义相关性”两个词语被高亮显示为蓝色(#4682B4)。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "正文内容字号约为18pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "正文内容采用常规无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.56
+              }
+            }
+          },
+          {
+            "名称": "问题标题2",
+            "描述": "第二个问题标题,包含序号和卡通表情。",
+            "段落ID": "段落2.3.3",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "标题内容为“2 从文本到“Embedding”的流程”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.469
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "标题文字字号约为30pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.469
+              }
+            }
+          },
+          {
+            "名称": "问题2正文",
+            "描述": "详细解释了从文本到Embedding的生成流程。",
+            "段落ID": "段落2.3.4",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "正文内容包含“Embedding的生成方式,主要分两种情况:”、“1)大模型推理中的Embedding(Token级)”、“• 文本先通过分词器拆分成最小语言单位token,例如:\"unbelievable\" → [\"un\", \"believ\", \"able\"]。”、“• 接着查询词表,将每个token被映射成一个数字编号,比如:\"un\" → 1087。”、“• 根据编号查询Embedding矩阵,快速取出对应的浮点数向量,例如:\"un\" → [0.24, -0.31, 0.88, ..., 0.05]。”和“生成Token级的Embedding,是大模型理解输入文本的第一步。”",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.602
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "所有文字均为黑色,色值为 #000000。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "正文内容左对齐,采用列表形式,项目符号为实心圆点。段落之间有间距。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.602
+              }
+            }
+          },
+          {
+            "名称": "示例表格",
+            "描述": "一个展示Tokenization和Embedding对应关系的表格。",
+            "段落ID": "段落2.3.5",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "表格内容包含表头“Tokenization”、“Embedding”以及“This is a cute dog”的Tokenization和Embedding数值,如“[CLS]”、“This”、“is”、“a”、“cute”、“dog”、“[SEP]”及其对应的数字编号和浮点数向量。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.581
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "表格中的文字字号约为14pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "表格中的文字采用常规无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "表格内容居中对齐。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.455
+                }
+              },
+              "表格填充色": {
+                "名称": "表格填充色",
+                "描述": "表格的表头行填充色为浅绿色(#90EE90),第一列(Tokenization和Embedding)的背景色为浅紫色(#E6E6FA),其余数据单元格的背景色为白色(#FFFFFF)。",
+                "类型": "色彩",
+                "形式ID": "形式16",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.581
+              }
+            }
+          }
+        ]
+      }
+    ]
+  }
+]

+ 414 - 0
examples/research/cong/descriptions/小葱__img_3_制作表.json

@@ -0,0 +1,414 @@
+[
+  {
+    "名称": "笔记风格海报",
+    "描述": "一张以蓝色和黄色为主色调的笔记风格海报,模拟了笔记本纸张和活页夹的样式,内容围绕“Embedding”这一主题展开。",
+    "段落ID": "段落3",
+    "形式": {
+      "背景颜色": {
+        "名称": "背景颜色",
+        "描述": "海报整体背景色调为蓝色和黄色。",
+        "类型": "色彩",
+        "形式ID": "形式9",
+        "评分详情": {
+          "combined_score": 0.49
+        }
+      },
+      "背景纹理": {
+        "名称": "背景纹理",
+        "描述": "背景模拟了笔记本纸张和活页夹的纹理,包括活页夹的蓝色边缘、白色纸张、纸张边缘的虚线和圆孔。",
+        "类型": "纹理",
+        "形式ID": "形式12",
+        "评分详情": {
+          "combined_score": 0.644
+        }
+      },
+      "文字内容": {
+        "名称": "文字内容",
+        "描述": "海报内容围绕“Embedding”这一主题展开,包含标题、解释性文本、示例和结论。",
+        "类型": "内容",
+        "形式ID": "形式1",
+        "评分详情": {
+          "combined_score": 0.63
+        }
+      },
+      "文字颜色": {
+        "名称": "文字颜色",
+        "描述": "文字颜色主要为黑色,部分关键词如“Embedding模型”、“压缩”为紫色,标题中的数字“2”和“3”为蓝色,部分文字如“专门训练好的”为黄色背景高亮。",
+        "类型": "色彩",
+        "形式ID": "形式5",
+        "评分详情": {
+          "combined_score": 0.546
+        }
+      },
+      "文字字号": {
+        "名称": "文字字号",
+        "描述": "标题“Embedding”字号最大,其他正文和子标题字号相对较小,但子标题略大于正文字号。",
+        "类型": "尺寸",
+        "形式ID": "形式7",
+        "评分详情": {
+          "combined_score": 0.525
+        }
+      },
+      "文字字体": {
+        "名称": "文字字体",
+        "描述": "标题“Embedding”为粗体无衬线字体,其他文字为常规无衬线字体。",
+        "类型": "字体",
+        "形式ID": "形式8",
+        "评分详情": {
+          "combined_score": 0.525
+        }
+      },
+      "文字排版": {
+        "名称": "文字排版",
+        "描述": "文字排版采用左对齐,标题居中,正文分段落,并使用项目符号和序号进行组织。",
+        "类型": "布局",
+        "形式ID": "形式3",
+        "评分详情": {
+          "combined_score": 0.595
+        }
+      },
+      "线条形状": {
+        "名称": "线条形状",
+        "描述": "背景纸张边缘有虚线,内容区有虚线分隔线,活页夹边缘有环形线条。",
+        "类型": "形状",
+        "形式ID": "形式11",
+        "评分详情": {
+          "combined_score": 0.574
+        }
+      },
+      "线条样式": {
+        "名称": "线条样式",
+        "描述": "纸张边缘为虚线,内容区段落之间有水平虚线分隔,活页夹边缘为连续的环形线条。",
+        "类型": "样式",
+        "形式ID": "形式14",
+        "评分详情": {
+          "combined_score": 0.42
+        }
+      },
+      "评分详情": {
+        "combined_score": 0.658
+      }
+    },
+    "子段落": [
+      {
+        "名称": "背景",
+        "描述": "海报的背景,模拟了活页夹的蓝色边缘和白色笔记本纸张,纸张边缘有虚线和圆孔。",
+        "段落ID": "段落3.1",
+        "形式": {
+          "背景颜色": {
+            "名称": "背景颜色",
+            "描述": "背景由左侧的蓝色活页夹边缘和右侧的白色笔记本纸张组成。",
+            "类型": "色彩",
+            "形式ID": "形式9",
+            "评分详情": {
+              "combined_score": 0.595
+            }
+          },
+          "背景纹理": {
+            "名称": "背景纹理",
+            "描述": "背景模拟了活页夹的塑料质感和笔记本纸张的纸质感,纸张边缘有虚线和圆孔。",
+            "类型": "纹理",
+            "形式ID": "形式12",
+            "评分详情": {
+              "combined_score": 0.42
+            }
+          },
+          "线条形状": {
+            "名称": "线条形状",
+            "描述": "纸张左侧边缘有垂直虚线,顶部和底部有水平虚线,左侧有三个圆形孔洞。活页夹部分有三个半圆形环状线条。",
+            "类型": "形状",
+            "形式ID": "形式11",
+            "评分详情": {
+              "combined_score": 0.574
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.602
+          }
+        }
+      },
+      {
+        "名称": "顶部装饰与信息",
+        "描述": "位于海报顶部,包含一个黄色回形针和标题文字。",
+        "段落ID": "段落3.2",
+        "形式": {
+          "评分详情": {
+            "combined_score": 0.35
+          }
+        },
+        "子段落": [
+          {
+            "名称": "回形针装饰",
+            "描述": "一个黄色的回形针,固定在纸张顶部。",
+            "段落ID": "段落3.2.1",
+            "形式": {
+              "图案形状": {
+                "名称": "图案形状",
+                "描述": "一个典型的回形针形状,由弯曲的线条构成。",
+                "类型": "形状",
+                "形式ID": "形式2",
+                "评分详情": {
+                  "combined_score": 0.406
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.175
+              }
+            }
+          },
+          {
+            "名称": "核心英文单词",
+            "描述": "海报的核心主题词,以大号黑色粗体英文显示。",
+            "段落ID": "段落3.2.2",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "核心英文单词为“Embedding”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.672
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "文字颜色为黑色。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.49
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号非常大,是海报中最大的文字,高度约为120像素。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "文字字体为粗体无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "文字在指定区域内居中排版,坐标为[250, 180]到[950, 300]。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.595
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.672
+              }
+            }
+          }
+        ]
+      },
+      {
+        "名称": "主要内容区",
+        "描述": "海报的主体部分,包含多个标题和详细的文本内容,以笔记形式呈现。",
+        "段落ID": "段落3.3",
+        "形式": {
+          "文字内容": {
+            "名称": "文字内容",
+            "描述": "主要内容区包含多个标题和详细的文本内容,如“独立使用的Embedding (句子/文档级)”、“Embedding”的本质:语义可“被数字表示”等,以及相关的解释和示例。",
+            "类型": "内容",
+            "形式ID": "形式1",
+            "评分详情": {
+              "combined_score": 0.581
+            }
+          },
+          "文字颜色": {
+            "名称": "文字颜色",
+            "描述": "大部分文字为黑色,部分关键词如“Embedding模型”、“压缩”为紫色,标题中的数字“2”和“3”为蓝色,部分文字如“专门训练好的”为黄色背景高亮。",
+            "类型": "色彩",
+            "形式ID": "形式5",
+            "评分详情": {
+              "combined_score": 0.455
+            }
+          },
+          "文字排版": {
+            "名称": "文字排版",
+            "描述": "文字排版采用左对齐,段落之间有水平虚线分隔,并使用序号和项目符号进行组织。",
+            "类型": "布局",
+            "形式ID": "形式3",
+            "评分详情": {
+              "combined_score": 0.504
+            }
+          },
+          "图案形状": {
+            "名称": "图案形状",
+            "描述": "包含标题前的数字“2”和“3”的圆形背景,以及标题“Embedding”的本质:语义可“被数字表示”右侧的卡通太阳表情图案,以及正文中的绿色对勾符号。",
+            "类型": "形状",
+            "形式ID": "形式2",
+            "评分详情": {
+              "combined_score": 0.406
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.581
+          }
+        },
+        "子段落": [
+          {
+            "名称": "问题标题2补充",
+            "描述": "对Embedding生成方式的第二种情况的标题。",
+            "段落ID": "段落3.3.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "标题内容为“2) 独立使用的Embedding (句子/文档级)”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.455
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.476
+              }
+            }
+          },
+          {
+            "名称": "问题2补充正文",
+            "描述": "详细解释了独立使用的Embedding(句子/文档级)。",
+            "段落ID": "段落3.3.2",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "正文内容为“如果需要表示一整句或一段文本(比如在RAG中检索),就不能只查表了。常见做法是:将文本输入到一个专门训练好的Embedding模型(如 Sentence-BERT、M3E),通过推理生成一个完整的句子或文档级向量。这种Embedding包含了更丰富的上下文信息,适合检索、相似性判断等场景。”",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.504
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号统一,为常规大小。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "文字字体为常规无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.518
+              }
+            }
+          },
+          {
+            "名称": "问题标题3",
+            "描述": "第三个问题标题,包含序号和卡通表情。",
+            "段落ID": "段落3.3.3",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "标题内容为“3 “Embedding”的本质:语义可“被数字表示””。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.504
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "数字“3”为蓝色,关键词“Embedding”、“被数字表示”为黑色粗体,其余文字为黑色。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.546
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号相对正文较大,但小于主标题“Embedding”。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.434
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "文字左对齐,位于坐标[180, 720]到[1020, 790]的区域内。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.595
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.504
+              }
+            }
+          },
+          {
+            "名称": "问题3正文",
+            "描述": "详细解释了Embedding的本质及其语义表示能力。",
+            "段落ID": "段落3.3.4",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "正文内容为“在模型训练中,发现文本的语义可以被“压缩”成一组数字向量,且向量之间的距离和方向,能自然反映文本间的语义关系。比如:•“猫”和“狗”对应向量的数学距离很近,代表它们语义接近(都是动物)•“房子”和“你好”对应向量的数学距离很远,表示它们语义无关• 模型甚至可以学到:king - man + woman ≈ queen 这样的语义数学关系这些规律并非人为设定,而是模型通过海量数据自动学习到的。”",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.56
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "文字字号统一,为常规大小。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "文字字体为常规无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "文字左对齐,分多段,使用项目符号进行组织,段落之间有水平虚线分隔,位于坐标[180, 810]到[1020, 1500]的区域内。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.49
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.56
+              }
+            }
+          }
+        ]
+      }
+    ]
+  }
+]

+ 405 - 0
examples/research/cong/descriptions/小葱__img_4_制作表.json

@@ -0,0 +1,405 @@
+[
+  {
+    "名称": "笔记风格海报",
+    "描述": "一张以蓝色和黄色为主色调的笔记风格海报,模拟了笔记本纸张和活页夹的样式,内容围绕“Embedding”这一主题展开。",
+    "段落ID": "段落4",
+    "形式": {
+      "背景颜色": {
+        "名称": "背景颜色",
+        "描述": "海报背景由左侧的蓝色活页夹边缘和右侧的白色笔记本纸张组成。活页夹边缘为纯蓝色,笔记本纸张为纯白色。",
+        "类型": "色彩",
+        "形式ID": "形式9",
+        "评分详情": {
+          "combined_score": 0.42
+        }
+      },
+      "背景纹理": {
+        "名称": "背景纹理",
+        "描述": "背景纹理模拟了笔记本纸张和活页夹的样式。活页夹边缘呈现出光滑的塑料质感,笔记本纸张具有纸张的轻微粗糙感,并带有横向的浅灰色虚线横格和左侧的红色竖向虚线边缘,以及左侧的三个圆形打孔。",
+        "类型": "纹理",
+        "形式ID": "形式12",
+        "评分详情": {
+          "combined_score": 0.574
+        }
+      },
+      "背景形状": {
+        "名称": "背景形状",
+        "描述": "海报整体背景为矩形,尺寸为1200x1700像素。左侧活页夹边缘呈不规则的波浪形,模拟活页夹的脊背。右侧的笔记本纸张部分为矩形,顶部和底部边缘有圆角,左侧边缘有三个圆形打孔。",
+        "类型": "形状",
+        "形式ID": "形式10",
+        "评分详情": {
+          "combined_score": 0.455
+        }
+      },
+      "文字内容": {
+        "名称": "文字内容",
+        "描述": "海报内容围绕“Embedding”这一主题展开,包括核心标题“Embedding”,以及“Embedding”的应用场景和常见问题答疑两大部分。应用场景部分详细列举了检索增强生成、相似性判断、文本聚类与分析等具体应用。常见问题答疑部分以问答形式解释了Token与Embedding的区别、Embedding的训练方式以及Embedding向量长度的固定性等问题。",
+        "类型": "内容",
+        "形式ID": "形式1",
+        "评分详情": {
+          "combined_score": 0.658
+        }
+      },
+      "文字颜色": {
+        "名称": "文字颜色",
+        "描述": "核心标题“Embedding”为黑色。应用场景和常见问题答疑的标题文字为黑色。正文内容大部分为黑色,其中部分关键词如“编码为语义向量”、“检索增强生成(RAG)”、“相似性判断”、“文本聚类与分析”、“编号(离散的ID)”、“承载语义的连续向量”、“海量语料学习到的语义表示”、“计算结构”、“批量处理和矩阵运算”等被高亮显示为紫色。问答部分的“Q:”和“A:”为绿色。",
+        "类型": "色彩",
+        "形式ID": "形式5",
+        "评分详情": {
+          "combined_score": 0.546
+        }
+      },
+      "文字字号": {
+        "名称": "文字字号",
+        "描述": "核心标题“Embedding”字号最大,约为100pt。一级标题“④ “Embedding”的应用场景”和“⑤ 常见问题答疑”字号次之,约为30pt。正文内容字号约为20pt。问答部分的“Q:”和“A:”字号与正文相同,约为20pt。",
+        "类型": "尺寸",
+        "形式ID": "形式7",
+        "评分详情": {
+          "combined_score": 0.525
+        }
+      },
+      "文字字体": {
+        "名称": "文字字体",
+        "描述": "核心标题“Embedding”采用粗体无衬线字体。所有正文、标题和问答内容均采用无衬线字体,字形清晰简洁。",
+        "类型": "字体",
+        "形式ID": "形式8",
+        "评分详情": {
+          "combined_score": 0.42
+        }
+      },
+      "文字排版": {
+        "名称": "文字排版",
+        "描述": "核心标题“Embedding”居中排版。一级标题“④ “Embedding”的应用场景”和“⑤ 常见问题答疑”左对齐,并带有序号和图标。正文内容左对齐,段落之间有行距,列表项使用圆点符号。问答部分“Q:”和“A:”左对齐,并与回答内容在同一行或下一行。",
+        "类型": "布局",
+        "形式ID": "形式3",
+        "评分详情": {
+          "combined_score": 0.616
+        }
+      },
+      "线条形状": {
+        "名称": "线条形状",
+        "描述": "背景纸张上有横向的虚线横格和左侧的红色竖向虚线边缘。活页夹边缘呈波浪形线条。内容区域的标题下方和段落之间有横向的虚线分隔线。",
+        "类型": "形状",
+        "形式ID": "形式11",
+        "评分详情": {
+          "combined_score": 0.49
+        }
+      },
+      "评分详情": {
+        "combined_score": 0.658
+      }
+    },
+    "子段落": [
+      {
+        "名称": "背景",
+        "描述": "海报的背景,模拟了活页夹的蓝色边缘和白色笔记本纸张,纸张边缘有虚线和圆孔。",
+        "段落ID": "段落4.1",
+        "形式": {
+          "背景颜色": {
+            "名称": "背景颜色",
+            "描述": "背景由左侧的蓝色活页夹边缘和右侧的白色笔记本纸张组成。活页夹边缘为纯蓝色,笔记本纸张为纯白色。",
+            "类型": "色彩",
+            "形式ID": "形式9",
+            "评分详情": {
+              "combined_score": 0.525
+            }
+          },
+          "背景形状": {
+            "名称": "背景形状",
+            "描述": "背景整体为矩形,尺寸为1200x1700像素。左侧活页夹边缘呈不规则的波浪形,模拟活页夹的脊背。右侧的笔记本纸张部分为矩形,顶部和底部边缘有圆角,左侧边缘有三个圆形打孔。",
+            "类型": "形状",
+            "形式ID": "形式10",
+            "评分详情": {
+              "combined_score": 0.49
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.525
+          }
+        }
+      },
+      {
+        "名称": "顶部装饰与信息",
+        "描述": "位于海报顶部,包含一个黄色回形针和标题文字。",
+        "段落ID": "段落4.2",
+        "形式": {
+          "文字字体": {
+            "名称": "文字字体",
+            "描述": "核心主题词“Embedding”采用粗体无衬线字体。标题“④ “Embedding”的应用场景”采用无衬线字体。",
+            "类型": "字体",
+            "形式ID": "形式8",
+            "评分详情": {
+              "combined_score": 0.56
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.371
+          }
+        },
+        "子段落": [
+          {
+            "名称": "回形针装饰",
+            "描述": "一个黄色的回形针,固定在纸张顶部。",
+            "段落ID": "段落4.2.1",
+            "形式": {
+              "评分详情": {
+                "combined_score": 0.154
+              }
+            }
+          },
+          {
+            "名称": "核心英文单词",
+            "描述": "海报的核心主题词,以大号黑色粗体英文显示。",
+            "段落ID": "段落4.2.2",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "核心英文单词“Embedding”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.665
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "核心英文单词“Embedding”为黑色。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "核心英文单词“Embedding”字号最大,约为100pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.63
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "核心英文单词“Embedding”采用粗体无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.56
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "核心英文单词“Embedding”居中排版,位于顶点坐标[250, 180]到[950, 300]的区域内。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.595
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.665
+              }
+            }
+          }
+        ]
+      },
+      {
+        "名称": "主要内容区",
+        "描述": "海报的主体部分,包含多个标题和详细的文本内容,以笔记形式呈现。",
+        "段落ID": "段落4.3",
+        "形式": {
+          "文字内容": {
+            "名称": "文字内容",
+            "描述": "包含标题“④ “Embedding”的应用场景”和“⑤ 常见问题答疑”,以及其下的详细文本内容。应用场景部分列举了检索增强生成、相似性判断、文本聚类与分析等应用。常见问题答疑部分以问答形式解释了Token与Embedding的区别、Embedding的训练方式以及Embedding向量长度的固定性等问题。",
+            "类型": "内容",
+            "形式ID": "形式1",
+            "评分详情": {
+              "combined_score": 0.588
+            }
+          },
+          "文字颜色": {
+            "名称": "文字颜色",
+            "描述": "标题文字为黑色。正文内容大部分为黑色,其中部分关键词如“编码为语义向量”、“检索增强生成(RAG)”、“相似性判断”、“文本聚类与分析”、“编号(离散的ID)”、“承载语义的连续向量”、“海量语料学习到的语义表示”、“计算结构”、“批量处理和矩阵运算”等被高亮显示为紫色。问答部分的“Q:”和“A:”为绿色。",
+            "类型": "色彩",
+            "形式ID": "形式5",
+            "评分详情": {
+              "combined_score": 0.525
+            }
+          },
+          "文字字号": {
+            "名称": "文字字号",
+            "描述": "一级标题“④ “Embedding”的应用场景”和“⑤ 常见问题答疑”字号约为30pt。正文内容字号约为20pt。问答部分的“Q:”和“A:”字号与正文相同,约为20pt。",
+            "类型": "尺寸",
+            "形式ID": "形式7",
+            "评分详情": {
+              "combined_score": 0.476
+            }
+          },
+          "文字排版": {
+            "名称": "文字排版",
+            "描述": "标题左对齐,并带有序号和图标。正文内容左对齐,段落之间有行距,列表项使用圆点符号。问答部分“Q:”和“A:”左对齐,并与回答内容在同一行或下一行。",
+            "类型": "布局",
+            "形式ID": "形式3",
+            "评分详情": {
+              "combined_score": 0.546
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.588
+          }
+        },
+        "子段落": [
+          {
+            "名称": "问题标题4",
+            "描述": "第四个问题标题,包含序号和卡通表情。",
+            "段落ID": "段落4.3.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "标题“④ “Embedding”的应用场景”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "标题字号约为30pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "标题左对齐,并带有序号“④”和扳手图标,位于顶点坐标[180, 380]到[900, 450]的区域内。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.455
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.532
+              }
+            }
+          },
+          {
+            "名称": "问题4正文",
+            "描述": "详细解释了Embedding的多种应用场景。",
+            "段落ID": "段落4.3.2",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "详细解释了Embedding的多种应用场景,包括检索增强生成(RAG)、相似性判断和文本聚类与分析。其中,“编码为语义向量”、“检索增强生成(RAG)”、“相似性判断”、“文本聚类与分析”等关键词被高亮。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "正文内容大部分为黑色,其中“编码为语义向量”、“检索增强生成(RAG)”、“相似性判断”、“文本聚类与分析”等关键词被高亮显示为紫色。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.49
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "正文内容左对齐,段落之间有行距,列表项使用圆形实心点作为符号,位于顶点坐标[180, 460]到[1020, 850]的区域内。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.623
+              }
+            }
+          },
+          {
+            "名称": "问题标题5",
+            "描述": "第五个问题标题,包含序号和卡通表情。",
+            "段落ID": "段落4.3.3",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "标题“⑤ 常见问题答疑”。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "文字字号": {
+                "名称": "文字字号",
+                "描述": "标题字号约为30pt。",
+                "类型": "尺寸",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.455
+                }
+              },
+              "文字字体": {
+                "名称": "文字字体",
+                "描述": "标题采用无衬线字体。",
+                "类型": "字体",
+                "形式ID": "形式8",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.525
+              }
+            }
+          },
+          {
+            "名称": "问题5正文",
+            "描述": "以问答形式解答了关于Embedding的常见问题。",
+            "段落ID": "段落4.3.4",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "以问答形式解答了关于Embedding的常见问题,包括Token与Embedding的区别、Embedding的训练方式以及Embedding向量长度的固定性。其中,“编号(离散的ID)”、“承载语义的连续向量”、“海量语料学习到的语义表示”、“计算结构”、“批量处理和矩阵运算”等关键词被高亮。",
+                "类型": "内容",
+                "形式ID": "形式1",
+                "评分详情": {
+                  "combined_score": 0.637
+                }
+              },
+              "文字颜色": {
+                "名称": "文字颜色",
+                "描述": "问答部分的“Q:”和“A:”为绿色。回答内容大部分为黑色,其中“编号(离散的ID)”、“承载语义的连续向量”、“海量语料学习到的语义表示”、“计算结构”、“批量处理和矩阵运算”等关键词被高亮显示为紫色。",
+                "类型": "色彩",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "文字排版": {
+                "名称": "文字排版",
+                "描述": "问答部分“Q:”和“A:”左对齐,并与回答内容在同一行或下一行,位于顶点坐标[180, 980]到[1020, 1600]的区域内。",
+                "类型": "布局",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.49
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.637
+              }
+            }
+          }
+        ]
+      }
+    ]
+  }
+]

+ 19 - 0
examples/research/cong/index.md

@@ -0,0 +1,19 @@
+# Cong 输入目录说明
+
+本目录包含"小葱"笔记风格海报的调研输入文件,来自上游 plan 阶段的产出。
+
+## 根目录文件
+
+- `analysis.json`:需求分析结果,包含 AI 知识科普笔记风格海报的内容品类判断、上限点、下限点及 AI 还原挑战。
+- `pipeline.json`:粗工序定义,描述混合策略(底图+智能文字层)的还原流程、目标树和风险评估。
+
+## descriptions/ 文件夹
+
+还原目标的详细描述,包含海报的结构化解构数据。
+
+- `制作亮点.md`:核心亮点聚类,包括拟真纸张、拟物化场景、结构化排版、手绘装饰等。
+- `制作点.md`:关键视觉元素及权重,如核心英文单词、背景纹理等。
+- `小葱__img_1_制作表.json`:第 1 张海报的制作表,包含背景纹理、颜色、排版等形式要素。
+- `小葱__img_2_制作表.json`:第 2 张海报的制作表(Embedding 主题),含背景颜色和纹理描述。
+- `小葱__img_3_制作表.json`:第 3 张海报的制作表,包含背景形状和色值信息。
+- `小葱__img_4_制作表.json`:第 4 张海报的制作表(Embedding 主题),含活页夹和纸张纹理细节。

+ 523 - 0
examples/research/cong/pipeline.json

@@ -0,0 +1,523 @@
+{
+  "pipelines": [
+    {
+      "strategy": {
+        "name": "混合策略:底图 + 智能文字层",
+        "description": "使用即梦 AI 4.5 生成带核心文字(核心英文单词、一级标题)和基础框架(笔记本、回形针、纸张纹理)的底图,然后在后期工具中叠加复杂文字内容(正文段落、表格、语义化高亮)和手绘装饰元素",
+        "reasoning": "analysis.json 中的核心需求是:文字精准度(critical)+ 跨图一致性(critical)+ 材质真实感(high)。S3 策略能够同时满足这三个核心需求:1) 文字精准度:复杂文字内容(正文、表格数值、专业术语)由后期工具精准控制,避免 AI 生成错误;2) 跨图一致性:底图(笔记本框架、回形针、纸张纹理)可复用或基于同一 seed 生成,保证 4 张图的视觉统一;3) 材质真实感:核心视觉元素由 AI 生成,光影、透视、材质纹理自然统一",
+        "vs_alternatives": [
+          {
+            "alternative": "S1 底图 + 分层叠加",
+            "why_not": "纯分层叠加需要手动处理所有文字,工作量大,且文字与背景的融合度可能不足(缺少纸张纹理渗透感)。S3 让 AI 生成核心文字,减少后期工作量,同时保证光影自然",
+            "could_switch_if": "如果即梦 AI 4.5 的实际文字生成精度不足以处理核心英文单词和一级标题,则回退到 S1(所有文字后期叠加)"
+          },
+          {
+            "alternative": "S2 端到端文生图",
+            "why_not": "端到端生成在复杂表格(img_2)和长文本场景下文字错误风险高,且修改成本高(需要重新生成整图)。S3 将复杂内容分离到后期处理,降低风险",
+            "could_switch_if": "如果发现后期合成文字的光影调整工作量超过预期,且即梦 AI 4.5 的长文本生成精度足够,则可尝试 S2(端到端生成)"
+          }
+        ],
+        "risks_found_during_instantiation": [
+          {
+            "stage_id": "stage_1_base_generation",
+            "risk": "即梦 AI 4.5 生成核心英文单词时可能出现拼写错误",
+            "severity": "high",
+            "mitigation": "准备备用方案:AI 生成不带核心文字的底图,核心文字由后期叠加;或多次生成选择最佳结果"
+          },
+          {
+            "stage_id": "stage_2b_img2_table",
+            "risk": "img_2 的 Tokenization-Embedding 表格结构复杂,AI 难以精准还原行列和数值",
+            "severity": "high",
+            "mitigation": "表格完全由后期工具绘制,AI 仅生成表格区域的空白背景"
+          },
+          {
+            "stage_id": "stage_3_decoration",
+            "risk": "手绘装饰元素(星星、花朵、卡通图标)的跨图一致性难以保证",
+            "severity": "medium",
+            "mitigation": "从 AI 生成的底图中提取装饰元素,建立素材库后复用到其他图"
+          }
+        ]
+      },
+      "goal_tree": {
+        "stage_id": "root",
+        "stage_name": "还原目标",
+        "description": "还原 4 张 AI 知识科普笔记风格海报(img_1-4),核心是拟物化笔记本场景 + 精准文字内容 + 跨图一致性",
+        "required_spec": [
+          "核心英文单词(Embedding)精准还原:内容、字号(约 90-100pt)、颜色(img_1 蓝色 RGB:60,140,220,img_2/3/4 黑色)、字体(粗体无衬线)",
+          "笔记本/活页夹框架跨图一致:img_1 为米白色信纸背景,img_2/3/4 为蓝色活页夹边缘 + 白色纸张 + 边缘虚线和圆孔",
+          "纸张纹理真实感:米白色(RGB:245,245,235)或纯白色,带横向细线/虚线,表面有不规则褶皱和轻微脏污感",
+          "回形针装饰立体感:img_2/3/4 顶部有黄色回形针,具有金属质感和阴影",
+          "结构化排版:居中堆叠(img_1)、左对齐层级列表(img_2/3/4)、虚线分隔",
+          "手绘装饰元素自然度:星星、花朵、卡通图标等具有手绘的不规则感和笔触感",
+          "语义化色彩高亮:荧光笔触半透明叠加,能看到底层文字",
+          "知识可视化图表(img_2):Tokenization-Embedding 对应表格,表头浅绿色(#90EE90),第一列浅紫色(#E6E6FA),数值精准"
+        ],
+        "output_spec": [
+          "4 张成品图(img_1_final.png, img_2_final.png, img_3_final.png, img_4_final.png)",
+          "所有 required_spec 中的特征 100% 满足"
+        ],
+        "children": [
+          {
+            "stage_id": "stage_1_base_generation",
+            "stage_name": "底图生成",
+            "description": "使用即梦 AI 4.5 生成 4 张图的底图,包含笔记本框架、纸张纹理、回形针装饰、核心英文单词(可选)",
+            "required_spec": [
+              "img_1:米白色信纸背景(RGB:245,245,235),带横向浅灰色细线,表面有不规则褶皱和轻微脏污感",
+              "img_2/3/4:左侧蓝色活页夹边缘(#87CEEB),右侧白色纸张(#FFFFFF),纸张边缘有虚线和三个圆形打孔,顶部黄色回形针",
+              "核心英文单词'Embedding'(可选由 AI 生成):img_1 蓝色(RGB:60,140,220),img_2/3/4 黑色(#000000),粗体无衬线字体,字号约 90-100pt,居中排版"
+            ],
+            "output_spec": [
+              "4 张底图(img_1_base.png, img_2_base.png, img_3_base.png, img_4_base.png)",
+              "笔记本框架结构一致(img_2/3/4 使用同一模板或固定 seed)",
+              "纸张纹理真实(褶皱、脏污感自然分布)",
+              "回形针具有金属质感和阴影(img_2/3/4)",
+              "可选:核心英文单词拼写准确、位置正确"
+            ],
+            "spec_satisfaction": {
+              "status": "partial",
+              "gap": "AI 生成的核心英文单词可能存在拼写错误风险;复杂表格区域(img_2)需要留白供后期绘制",
+              "mitigation": "准备无文字版本的底图作为备选;img_2 的表格区域在 prompt 中明确留白"
+            },
+            "target_images": ["img_1", "img_2", "img_3", "img_4"],
+            "stage_output": "4 张底图(含框架、纹理、回形针、可选核心文字)",
+            "input_from": ["即梦 AI 4.5 模型", "制作表中的背景描述(段落 1.1、2.1、3.1、4.1)"],
+            "covers_requirements": [
+              "上限点:拟真纸张与笔记本实体",
+              "上限点:核心英文单词(如果 AI 生成)",
+              "下限点:跨图元素一致性",
+              "下限点:材质纹理真实感"
+            ],
+            "importance": "下限",
+            "reasoning": {
+              "why_needed": "底图是整个还原工作的基础,决定了跨图一致性和材质真实感。如果底图框架不一致或纹理假,后续叠加文字和装饰也无法挽救",
+              "why_here": "作为依赖树的第一个阶段,底图为后续所有阶段提供基础画布。文字叠加、装饰合成、质感增强都依赖底图的存在"
+            },
+            "children": [
+              {
+                "stage_id": "stage_1_1_img1_base",
+                "stage_name": "img_1 信纸底图生成",
+                "description": "生成 img_1 的米白色信纸背景,带横向细线和褶皱纹理",
+                "required_spec": [
+                  "背景颜色:米白色(RGB:245,245,235)",
+                  "背景纹理:横向浅灰色细线,表面有不规则褶皱和轻微脏污感",
+                  "尺寸:1200x1700 像素(假设标准尺寸)"
+                ],
+                "output_spec": [
+                  "img_1_base.png:米白色信纸背景,纹理自然",
+                  "无文字、无装饰的纯净背景"
+                ],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_1"],
+                "stage_output": "img_1_base.png",
+                "input_from": ["制作表段落 1.1 背景描述"],
+                "covers_requirements": ["上限点:拟真纸张与笔记本实体", "下限点:材质纹理真实感"],
+                "importance": "基础",
+                "reasoning": {
+                  "why_needed": "img_1 使用信纸背景而非螺旋笔记本框架,需要单独生成",
+                  "why_here": "作为 img_1 的底图生成子阶段,为后续文字叠加提供基础"
+                },
+                "children": []
+              },
+              {
+                "stage_id": "stage_1_2_img234_base",
+                "stage_name": "img_2/3/4 笔记本底图生成",
+                "description": "生成 img_2/3/4 共享的螺旋笔记本框架底图(蓝色活页夹 + 白色纸张 + 回形针)",
+                "required_spec": [
+                  "左侧蓝色活页夹边缘(#87CEEB),波浪形模拟活页夹环形结构",
+                  "右侧白色纸张(#FFFFFF),边缘有虚线和三个圆形打孔",
+                  "顶部黄色回形针,具有金属质感和阴影",
+                  "纸张表面有横向虚线横格和左侧红色竖向虚线边缘(img_4)"
+                ],
+                "output_spec": [
+                  "img_2_base.png, img_3_base.png, img_4_base.png:共享相同框架结构",
+                  "回形针位置、形状、光影一致",
+                  "打孔位置、数量(3 个)一致"
+                ],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_2", "img_3", "img_4"],
+                "stage_output": "img_2_base.png, img_3_base.png, img_4_base.png",
+                "input_from": ["制作表段落 2.1、3.1、4.1 背景描述", "即梦 AI 4.5 固定 seed"],
+                "covers_requirements": ["上限点:拟真纸张与笔记本实体", "下限点:跨图元素一致性", "下限点:材质纹理真实感"],
+                "importance": "下限",
+                "reasoning": {
+                  "why_needed": "img_2/3/4 共享相同的螺旋笔记本框架,必须保证跨图一致性。使用同一模板或固定 seed 生成可确保框架结构、回形针位置、打孔位置完全一致",
+                  "why_here": "作为 img_2/3/4 的底图生成子阶段,为后续文字叠加和装饰合成提供统一基础"
+                },
+                "children": []
+              }
+            ]
+          },
+          {
+            "stage_id": "stage_2_text_overlay",
+            "stage_name": "文字叠加",
+            "description": "在底图上叠加文字内容,包括核心英文单词(如果底图未生成)、标题、正文段落、表格(img_2)",
+            "required_spec": [
+              "核心英文单词'Embedding':内容准确,字号约 90-100pt,颜色正确(img_1 蓝色,img_2/3/4 黑色),粗体无衬线字体,居中排版",
+              "一级标题(如'每天掌握一个'、'AI 知识点'、'什么是 Embedding?'等):字号约 100pt(主标题)或 30pt(一级标题),手写风格粗体中文字体或常规无衬线字体",
+              "正文段落:字号约 18-20pt,常规无衬线字体,左对齐,段落间距合理",
+              "表格(img_2):Tokenization-Embedding 对应表,表头浅绿色(#90EE90),第一列浅紫色(#E6E6FA),数值精准,行列对齐"
+            ],
+            "output_spec": [
+              "4 张带文字的图片(img_1_text.png, img_2_text.png, img_3_text.png, img_4_text.png)",
+              "所有文字内容准确无误",
+              "字号层级正确(主标题>一级标题>正文)",
+              "排版对齐方式正确(居中/左对齐)",
+              "表格结构精准(img_2)"
+            ],
+            "spec_satisfaction": {
+              "status": "satisfied",
+              "gap": "",
+              "mitigation": ""
+            },
+            "target_images": ["img_1", "img_2", "img_3", "img_4"],
+            "stage_output": "4 张带文字的图片",
+            "input_from": ["stage_1_base_generation 的底图", "制作表中的文字内容、颜色、字号、字体、排版描述"],
+            "covers_requirements": [
+              "上限点:核心英文单词",
+              "上限点:结构化排版与导视",
+              "上限点:知识可视化图表(img_2 表格)",
+              "下限点:文字内容精准度",
+              "下限点:排版空间透视关系"
+            ],
+            "importance": "上限",
+            "reasoning": {
+              "why_needed": "文字内容是知识科普海报的核心信息载体,必须 100% 准确。尤其是专业术语(Embedding)、表格数值、长段正文,AI 生成容易出错,必须由后期工具精准控制",
+              "why_here": "文字叠加依赖底图的存在(需要知道文字写在哪里),同时为后续的装饰合成和质感增强提供基础。文字层在装饰层下方,避免装饰遮挡文字"
+            },
+            "children": [
+              {
+                "stage_id": "stage_2a_img1_text",
+                "stage_name": "img_1 文字叠加",
+                "description": "在 img_1 底图上叠加标题、副标题、核心英文单词、励志语录、日期等文字",
+                "required_spec": [
+                  "小葱白工:左上角,深灰色(RGB:60,60,60),手写风格中文字体,约 25pt",
+                  "Growth/Hope/Future:右上角,浅灰色(RGB:150,150,150),手写风格英文衬线字体,约 25pt,椭圆形边框包围",
+                  "每天掌握一个/AI 知识点:中央偏上,深灰色,手写风格粗体中文字体,约 100pt,居中",
+                  "Embedding:中央,蓝色(RGB:60,140,220),粗体无衬线字体,约 90pt,居中",
+                  "你走过的路,都会成为你的底气。:中下部,深灰色,手写风格中文字体,约 30pt,居中",
+                  "The paths you've walked will build your strength.:中文语录下方,深灰色,手写风格英文衬线字体,约 30pt,居中",
+                  "Date: 04.28:左下角,深灰色,手写风格英文无衬线字体,约 25pt"
+                ],
+                "output_spec": [
+                  "img_1_text.png:所有文字叠加完成",
+                  "文字内容准确,字号层级正确,排版居中"
+                ],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_1"],
+                "stage_output": "img_1_text.png",
+                "input_from": ["stage_1_1_img1_base 的底图", "制作表段落 1.2、1.3、1.4、1.5 文字描述"],
+                "covers_requirements": ["上限点:核心英文单词", "上限点:结构化排版与导视", "下限点:文字内容精准度"],
+                "importance": "上限",
+                "reasoning": {
+                  "why_needed": "img_1 的文字内容较多,包括中英文标题、励志语录、日期等,需要精准叠加",
+                  "why_here": "作为 img_1 的文字叠加子阶段,为后续装饰合成提供基础"
+                },
+                "children": []
+              },
+              {
+                "stage_id": "stage_2b_img2_text",
+                "stage_name": "img_2 文字叠加",
+                "description": "在 img_2 底图上叠加标题、问题标题、正文段落、表格",
+                "required_spec": [
+                  "Embedding:顶部中央,黑色(#000000),粗体无衬线字体,约 100pt,居中",
+                  "1 什么是'Embedding'?:左对齐,数字序号蓝色圆圈包裹,问号黑色,卡通表情右侧",
+                  "正文(Embedding 定义):左对齐,黑色,约 18pt,'语义信息'和'语义相关性'高亮蓝色(#4682B4)",
+                  "2 从文本到'Embedding'的流程:左对齐,带序号和卡通表情",
+                  "正文(流程描述):左对齐,列表形式,项目符号实心圆点",
+                  "表格:Tokenization-Embedding 对应表,表头浅绿色(#90EE90),第一列浅紫色(#E6E6FA),数值精准,居中对齐"
+                ],
+                "output_spec": [
+                  "img_2_text.png:所有文字和表格叠加完成",
+                  "表格结构精准,数值无误",
+                  "高亮位置正确"
+                ],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_2"],
+                "stage_output": "img_2_text.png",
+                "input_from": ["stage_1_2_img234_base 的底图", "制作表段落 2.2、2.3 文字和表格描述"],
+                "covers_requirements": ["上限点:核心英文单词", "上限点:结构化排版与导视", "上限点:知识可视化图表", "下限点:文字内容精准度"],
+                "importance": "上限",
+                "reasoning": {
+                  "why_needed": "img_2 包含复杂的表格结构,是还原难度最高的部分。表格必须完全由后期工具绘制,保证数值和行列结构精准",
+                  "why_here": "作为 img_2 的文字叠加子阶段,表格绘制是核心任务"
+                },
+                "children": []
+              },
+              {
+                "stage_id": "stage_2c_img3_text",
+                "stage_name": "img_3 文字叠加",
+                "description": "在 img_3 底图上叠加标题、问题标题、正文段落",
+                "required_spec": [
+                  "Embedding:顶部中央,黑色,粗体无衬线字体,约 100pt,居中",
+                  "2) 独立使用的 Embedding (句子/文档级):左对齐",
+                  "正文(独立使用 Embedding 解释):左对齐,黑色,约 18pt",
+                  "3 'Embedding'的本质:语义可'被数字表示':左对齐,数字'3'蓝色,关键词黑色粗体",
+                  "正文(本质解释):左对齐,列表形式,项目符号实心圆点,'Embedding 模型'、'压缩'高亮紫色",
+                  "绿色对勾符号:正文中"
+                ],
+                "output_spec": [
+                  "img_3_text.png:所有文字叠加完成",
+                  "高亮位置正确,颜色准确"
+                ],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_3"],
+                "stage_output": "img_3_text.png",
+                "input_from": ["stage_1_2_img234_base 的底图", "制作表段落 3.2、3.3 文字描述"],
+                "covers_requirements": ["上限点:核心英文单词", "上限点:结构化排版与导视", "上限点:语义化色彩高亮", "下限点:文字内容精准度"],
+                "importance": "上限",
+                "reasoning": {
+                  "why_needed": "img_3 的文字内容包含多处语义化高亮,需要精准控制高亮位置和颜色",
+                  "why_here": "作为 img_3 的文字叠加子阶段,为后续装饰合成提供基础"
+                },
+                "children": []
+              },
+              {
+                "stage_id": "stage_2d_img4_text",
+                "stage_name": "img_4 文字叠加",
+                "description": "在 img_4 底图上叠加标题、应用场景、常见问题答疑",
+                "required_spec": [
+                  "Embedding:顶部中央,黑色,粗体无衬线字体,约 100pt,居中",
+                  "④ 'Embedding'的应用场景:左对齐,带序号和扳手图标",
+                  "正文(应用场景):左对齐,列表形式,'编码为语义向量'、'检索增强生成 (RAG)'、'相似性判断'、'文本聚类与分析'高亮紫色",
+                  "⑤ 常见问题答疑:左对齐,带序号",
+                  "正文(问答):左对齐,'Q:'和'A:'绿色,'编号 (离散的 ID)'、'承载语义的连续向量'等高亮紫色"
+                ],
+                "output_spec": [
+                  "img_4_text.png:所有文字叠加完成",
+                  "高亮位置正确,颜色准确"
+                ],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_4"],
+                "stage_output": "img_4_text.png",
+                "input_from": ["stage_1_2_img234_base 的底图", "制作表段落 4.2、4.3 文字描述"],
+                "covers_requirements": ["上限点:核心英文单词", "上限点:结构化排版与导视", "上限点:语义化色彩高亮", "下限点:文字内容精准度"],
+                "importance": "上限",
+                "reasoning": {
+                  "why_needed": "img_4 的文字内容包含多处语义化高亮和问答格式,需要精准控制",
+                  "why_here": "作为 img_4 的文字叠加子阶段,为后续装饰合成提供基础"
+                },
+                "children": []
+              }
+            ]
+          },
+          {
+            "stage_id": "stage_3_decoration",
+            "stage_name": "装饰元素合成",
+            "description": "在文字层上叠加手绘装饰元素(星星、花朵、卡通图标)、语义化色彩高亮(荧光笔效果)",
+            "required_spec": [
+              "img_1:左上角粉色五角星和黄色四角星,左下角三朵黄色花朵(四圆形花瓣 + 圆形花蕊 + 绿色花茎),右下角四颗黄色四角星,副标题下方粉色涂抹区域(RGB:255,180,200,边缘模糊)",
+              "img_2/3/4:卡通表情(问号、太阳、对勾等),语义化高亮(紫色、蓝色、黄色背景高亮,半透明叠加)",
+              "所有手绘元素具有手绘的不规则感和笔触感,避免过于规整"
+            ],
+            "output_spec": [
+              "4 张带装饰的图片(img_1_decorated.png, img_2_decorated.png, img_3_decorated.png, img_4_decorated.png)",
+              "手绘装饰元素位置正确,形状自然",
+              "语义化高亮半透明,能看到底层文字"
+            ],
+            "spec_satisfaction": {
+              "status": "satisfied",
+              "gap": "",
+              "mitigation": ""
+            },
+            "target_images": ["img_1", "img_2", "img_3", "img_4"],
+            "stage_output": "4 张带装饰的图片",
+            "input_from": ["stage_2_text_overlay 的带文字图片", "制作表中的图案形状、涂抹形状、色彩高亮描述"],
+            "covers_requirements": [
+              "上限点:手绘装饰与卡通图标",
+              "上限点:语义化色彩高亮",
+              "下限点:手绘元素的自然度",
+              "下限点:色彩高亮的物理合理性"
+            ],
+            "importance": "上限",
+            "reasoning": {
+              "why_needed": "手绘装饰元素和语义化高亮是笔记风格的核心特征,中和了科技主题的枯燥感,建立信息层级。必须在文字层上方叠加,避免遮挡文字",
+              "why_here": "装饰合成依赖文字层的存在(需要知道装饰加在哪里、高亮哪些文字),同时为后续的质感增强提供基础"
+            },
+            "children": [
+              {
+                "stage_id": "stage_3a_img1_decoration",
+                "stage_name": "img_1 装饰合成",
+                "description": "在 img_1 上叠加星星、花朵、粉色涂抹背景",
+                "required_spec": [
+                  "左上角:粉色五角星 + 黄色四角星",
+                  "左下角:三朵黄色花朵(四圆形花瓣 + 圆形花蕊 + 绿色花茎)",
+                  "右下角:四颗黄色四角星",
+                  "副标题下方:粉色涂抹区域(RGB:255,180,200,边缘模糊,模拟手绘涂抹效果)"
+                ],
+                "output_spec": [
+                  "img_1_decorated.png:所有装饰叠加完成",
+                  "手绘元素自然,涂抹边缘模糊"
+                ],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_1"],
+                "stage_output": "img_1_decorated.png",
+                "input_from": ["stage_2a_img1_text 的带文字图片", "制作表段落 1.2.1.1、1.3.4、1.5.2 图案和涂抹描述"],
+                "covers_requirements": ["上限点:手绘装饰与卡通图标", "下限点:手绘元素的自然度"],
+                "importance": "上限",
+                "reasoning": {
+                  "why_needed": "img_1 的手绘装饰元素最多(星星、花朵、涂抹),是笔记风格的关键特征",
+                  "why_here": "作为 img_1 的装饰合成子阶段"
+                },
+                "children": []
+              },
+              {
+                "stage_id": "stage_3b_img234_decoration",
+                "stage_name": "img_2/3/4 装饰合成",
+                "description": "在 img_2/3/4 上叠加卡通表情、语义化高亮",
+                "required_spec": [
+                  "img_2:问题标题右侧卡通问号表情,正文中'语义信息'和'语义相关性'蓝色高亮",
+                  "img_3:标题右侧卡通太阳表情,正文中'Embedding 模型'、'压缩'紫色高亮,绿色对勾符号",
+                  "img_4:标题扳手图标,正文中多处紫色高亮,问答'Q:'和'A:'绿色",
+                  "所有高亮半透明,能看到底层文字"
+                ],
+                "output_spec": [
+                  "img_2_decorated.png, img_3_decorated.png, img_4_decorated.png:装饰叠加完成",
+                  "高亮半透明,颜色准确"
+                ],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_2", "img_3", "img_4"],
+                "stage_output": "img_2_decorated.png, img_3_decorated.png, img_4_decorated.png",
+                "input_from": ["stage_2b_img2_text、stage_2c_img3_text、stage_2d_img4_text 的带文字图片", "制作表中的色彩高亮描述"],
+                "covers_requirements": ["上限点:手绘装饰与卡通图标", "上限点:语义化色彩高亮", "下限点:色彩高亮的物理合理性"],
+                "importance": "上限",
+                "reasoning": {
+                  "why_needed": "img_2/3/4 的语义化高亮是信息层级的关键,卡通表情增加趣味性",
+                  "why_here": "作为 img_2/3/4 的装饰合成子阶段"
+                },
+                "children": []
+              }
+            ]
+          },
+          {
+            "stage_id": "stage_4_quality_enhancement",
+            "stage_name": "质感增强",
+            "description": "最后添加质感层(噪点、纹理叠加)增强真实感,使用 Overlay 混合模式,不透明度 3-5%",
+            "required_spec": [
+              "纸张纹理增强:叠加轻微噪点层,模拟纸张粗糙感",
+              "光影统一:检查文字、装饰与底图的光影一致性,添加轻微阴影或高光",
+              "整体色调统一:确保 4 张图的色调一致"
+            ],
+            "output_spec": [
+              "4 张最终成品图(img_1_final.png, img_2_final.png, img_3_final.png, img_4_final.png)",
+              "纸张质感真实,光影自然",
+              "4 张图色调统一"
+            ],
+            "spec_satisfaction": {
+              "status": "satisfied",
+              "gap": "",
+              "mitigation": ""
+            },
+            "target_images": ["img_1", "img_2", "img_3", "img_4"],
+            "stage_output": "4 张最终成品图",
+            "input_from": ["stage_3_decoration 的带装饰图片"],
+            "covers_requirements": [
+              "上限点:拟真纸张与笔记本实体",
+              "下限点:材质纹理真实感",
+              "下限点:跨图元素一致性"
+            ],
+            "importance": "基础",
+            "reasoning": {
+              "why_needed": "质感增强是最后一步,确保纸张纹理真实、光影自然、色调统一。虽然不改变内容,但决定了整体'真实感'",
+              "why_here": "作为依赖树的最后一个阶段,质感增强在所有内容叠加完成后进行,避免影响文字和装饰"
+            },
+            "children": []
+          }
+        ]
+      },
+      "requirement_coverage": {
+        "拟真纸张与笔记本实体": {
+          "covered_by": ["stage_1_base_generation", "stage_1_1_img1_base", "stage_1_2_img234_base", "stage_4_quality_enhancement"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "核心英文单词": {
+          "covered_by": ["stage_1_base_generation", "stage_2_text_overlay", "stage_2a_img1_text", "stage_2b_img2_text", "stage_2c_img3_text", "stage_2d_img4_text"],
+          "coverage_confidence": "high",
+          "gap_note": "如果 AI 生成核心文字精度不足,则完全由 stage_2 后期叠加"
+        },
+        "结构化排版与导视": {
+          "covered_by": ["stage_2_text_overlay", "stage_2a_img1_text", "stage_2b_img2_text", "stage_2c_img3_text", "stage_2d_img4_text"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "知识可视化图表": {
+          "covered_by": ["stage_2_text_overlay", "stage_2b_img2_text"],
+          "coverage_confidence": "high",
+          "gap_note": "表格完全由后期工具绘制,保证精准"
+        },
+        "语义化色彩高亮": {
+          "covered_by": ["stage_2_text_overlay", "stage_3_decoration", "stage_3b_img234_decoration"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "手绘装饰与卡通图标": {
+          "covered_by": ["stage_3_decoration", "stage_3a_img1_decoration", "stage_3b_img234_decoration"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "跨图元素一致性": {
+          "covered_by": ["stage_1_base_generation", "stage_1_2_img234_base", "stage_4_quality_enhancement"],
+          "coverage_confidence": "high",
+          "gap_note": "img_2/3/4 使用同一底图模板或固定 seed 生成"
+        },
+        "文字内容精准度": {
+          "covered_by": ["stage_2_text_overlay", "stage_2a_img1_text", "stage_2b_img2_text", "stage_2c_img3_text", "stage_2d_img4_text"],
+          "coverage_confidence": "high",
+          "gap_note": "所有复杂文字由后期工具精准控制"
+        },
+        "排版空间透视关系": {
+          "covered_by": ["stage_1_base_generation", "stage_2_text_overlay"],
+          "coverage_confidence": "high",
+          "gap_note": "AI 生成底图时处理核心透视,后期叠加简单文字"
+        },
+        "材质纹理真实感": {
+          "covered_by": ["stage_1_base_generation", "stage_4_quality_enhancement"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "手绘元素的自然度": {
+          "covered_by": ["stage_3_decoration", "stage_3a_img1_decoration", "stage_3b_img234_decoration"],
+          "coverage_confidence": "medium",
+          "gap_note": "手绘元素自然度取决于素材来源,可能需要从 AI 生成结果中提取或手动绘制"
+        },
+        "色彩高亮的物理合理性": {
+          "covered_by": ["stage_3_decoration", "stage_3b_img234_decoration"],
+          "coverage_confidence": "high",
+          "gap_note": "使用半透明叠加模式(Overlay/Soft Light)模拟荧光笔效果"
+        }
+      }
+    }
+  ]
+}

+ 129 - 0
examples/research/input/analysis.json

@@ -0,0 +1,129 @@
+{
+  "content_category": {
+    "category": "猫咪表情包 Meme 图(纵向二分对比叙事)",
+    "typical_features": [
+      "垂直双分栏结构(上拒绝/下接受)",
+      "同一只猫咪的两种反差表情(夸张拒绝 vs 乖巧期待)",
+      "拟人化卡通手势贴纸(黄色 Emoji 手势替代猫爪)",
+      "实物道具的状态对比(完整带皮 vs 去皮切好)",
+      "纯白背景 + 拼贴风格(写实摄影素材 + 扁平卡通符号)",
+      "左上角文字说明 + 右侧猫咪 + 左下角手托食物"
+    ],
+    "common_challenges_in_ai_restoration": [
+      "猫咪跨图一致性:上下两部分必须是同一只猫,毛色花纹需一致",
+      "表情精准度:拒绝表情需要夸张的张嘴闭眼,喜爱表情需要鼓腮睁眼,AI 生成容易表情模糊",
+      "手势贴纸的跨次元融合:黄色 Emoji 手势需要与写实猫咪自然拼贴,不显突兀",
+      "手部真实性:托举食物的手需要自然的人体结构,AI 容易生成畸形手指",
+      "食物状态对比的清晰度:完整 vs 处理好的状态差异必须一眼可辨",
+      "拼贴风格的统一性:多个素材叠加后需要保持视觉一致性(光影、分辨率、边缘处理)"
+    ],
+    "reasoning": "基于制作亮点和制作点的分析,这组图是典型的互联网 Meme 表情包,采用纵向二分对比叙事结构。核心视觉元素包括:同一只橘白猫的两张反差表情、黄色卡通手势贴纸、托举食物的手、以及水果/海鲜的两种状态对比。这类内容在 AI 还原中的核心挑战是保持跨图一致性和拼贴元素的自然融合。"
+  },
+  "upper_bounds": {
+    "description": "上限点:内容层面必须高度还原的特征(来自制作亮点聚类)",
+    "items": [
+      {
+        "feature": "极具反差的猫咪神态",
+        "type": "实质",
+        "requirement": "上方猫咪必须呈现张嘴闭眼的夸张抗拒/咆哮表情,下方猫咪必须呈现鼓腮睁眼的乖巧/期待表情",
+        "reasoning": "这是该类图片的核心戏剧张力和幽默灵魂,拟人化的情绪表演是笑点的来源"
+      },
+      {
+        "feature": "纵向二分的对比叙事构图",
+        "type": "形式",
+        "requirement": "必须采用垂直双分栏结构,上下两部分高度相等(约 400px:400px),形成拒绝 vs 接受的二元对立",
+        "reasoning": "这是 Meme 经典排版形式,支撑笑点产生的核心结构"
+      },
+      {
+        "feature": "加工前后的水果/海鲜形态对比",
+        "type": "实质",
+        "requirement": "上方必须是带皮/带壳/完整的'麻烦'状态,下方必须是去皮/去壳/切好的'享用'状态",
+        "reasoning": "这是猫咪态度转变的直接诱因和视觉理由,状态差异必须清晰可辨"
+      },
+      {
+        "feature": "拟人化的卡通手势贴纸",
+        "type": "实质",
+        "requirement": "必须使用高饱和度黄色 Emoji 手势(拒绝手势:拇指食指伸出;喜爱手势:掌心向上合拢)",
+        "reasoning": "这些卡通贴纸替代猫咪前肢,直观演绎拒绝与索要动作,是核心视觉实体"
+      },
+      {
+        "feature": "跨次元的拼贴视觉风格",
+        "type": "形式",
+        "requirement": "必须呈现写实摄影素材(猫咪、手、食物)与扁平化/3D 卡通符号(Emoji 手势)的混搭拼贴效果",
+        "reasoning": "这种打破次元壁的风格增强互联网网感和荒诞趣味性"
+      }
+    ]
+  },
+  "lower_bounds": {
+    "description": "下限点:如果做不好会让整组图'一眼假'或'一眼 AI'的特征(自行总结)",
+    "items": [
+      {
+        "feature": "猫咪跨图一致性",
+        "importance": "极高",
+        "consequence_if_failed": "如果上下两部分的猫咪毛色、花纹、体型不一致,观众会立刻察觉是两只不同的猫,破坏'同一只猫态度转变'的叙事逻辑,让表情包失去可信度",
+        "technical_difficulty": "高",
+        "reasoning": "这是技术上最难的部分之一。AI 生成多张图时很难保持主体完全一致,需要特殊策略(如底图复用、ControlNet 约束、或后期合成)"
+      },
+      {
+        "feature": "手部/手指的真实性",
+        "importance": "高",
+        "consequence_if_failed": "如果手部出现畸形手指、不自然的关节角度、或错误的透视关系,会立刻暴露 AI 生成痕迹,破坏整体真实感",
+        "technical_difficulty": "高",
+        "reasoning": "AI 生成手部是公认的难点,尤其是托举姿态需要准确的手掌结构和手指弯曲"
+      },
+      {
+        "feature": "手势贴纸与猫咪的空间关系",
+        "importance": "中高",
+        "consequence_if_failed": "如果手势贴纸的位置、大小、遮挡关系不合理(如浮在空中、与猫咪身体无接触),会显得生硬拼贴,破坏拟人化效果",
+        "technical_difficulty": "中",
+        "reasoning": "需要精确控制手势贴纸相对于猫咪身体的位置,使其看起来像是猫咪的'手'"
+      },
+      {
+        "feature": "食物状态的视觉清晰度",
+        "importance": "中高",
+        "consequence_if_failed": "如果完整状态和处理好状态的差异不够明显(如芒果切块不够清晰、榴莲果肉不够饱满),观众无法理解态度转变的理由,笑点失效",
+        "technical_difficulty": "中",
+        "reasoning": "需要确保两种状态的食物在视觉上有显著差异,可能需要使用真实素材或高精度生成"
+      },
+      {
+        "feature": "拼贴元素的边缘处理",
+        "importance": "中",
+        "consequence_if_failed": "如果猫咪、手、手势等元素的边缘有白边、锯齿或背景残留,会显得粗糙,降低专业感",
+        "technical_difficulty": "中低",
+        "reasoning": "这是抠图和合成技术的基本功,需要精确的透明背景处理"
+      },
+      {
+        "feature": "光影一致性",
+        "importance": "中",
+        "consequence_if_failed": "如果各元素的光照方向、阴影强度不一致(如猫咪光源来自左上方,手部光源来自右下方),会显得不协调,破坏整体真实感",
+        "technical_difficulty": "中高",
+        "reasoning": "拼贴风格虽然允许一定程度的不真实,但基本的光影逻辑需要统一"
+      }
+    ]
+  },
+  "requirement_summary": {
+    "core_restoration_goals": [
+      "保持猫咪跨图一致性(同一只橘白猫的两种表情)",
+      "精准还原两种反差表情(拒绝:张嘴闭眼;喜爱:鼓腮睁眼)",
+      "使用黄色 Emoji 手势贴纸实现拟人化动作",
+      "清晰呈现食物的两种状态对比(完整 vs 处理好)",
+      "维持纵向二分构图和纯白背景的拼贴风格",
+      "确保手部真实性和各元素的空间关系合理"
+    ],
+    "priority_ranking": [
+      "P0: 猫咪跨图一致性 + 表情精准度(核心笑点)",
+      "P0: 纵向二分构图(形式基础)",
+      "P1: 手势贴纸的拟人化效果(特色元素)",
+      "P1: 食物状态对比清晰度(叙事逻辑)",
+      "P2: 手部真实性(避免一眼 AI)",
+      "P2: 拼贴元素的边缘处理和光影一致性(专业感)"
+    ],
+    "strategy_implications": [
+      "需要一种能保持主体一致性的策略(如底图复用、参考图约束)",
+      "表情控制需要精准的工具(如面部 ControlNet、表情 LoRA)",
+      "手势贴纸可能更适合使用现成素材而非 AI 生成",
+      "食物素材可能需要分别生成完整和处理好两种状态",
+      "整体采用'底图 + 逐步叠加'的拼贴策略可能比端到端生成更可控"
+    ]
+  }
+}

+ 0 - 0
examples/research/input/description/创作表.md


+ 68 - 0
examples/research/input/description/制作亮点.md

@@ -0,0 +1,68 @@
+"聚类结果": [
+{
+"聚类主题": "极具反差的猫咪神态",
+"聚类描述": "这是该类图片的实质亮点。画面视觉主体是一只橘白相间的猫咪,其面部表情在上下两部分形成剧烈反差:上方是张大嘴巴的抗拒/咆哮神态,下方则是睁大眼睛的乖巧/期待神态。这种拟人化的情绪表演赋予了图片核心的戏剧张力和幽默灵魂。",
+"亮点类型": "实质",
+},
+{
+"聚类主题": "纵向二分的对比叙事构图",
+"聚类描述": "这是该类图片的形式亮点。画面统一采用了互联网模因(Meme)经典的垂直双分栏结构,通过物理空间的上下并置,建立起“拒绝”与“接受”的二元对立逻辑。这种结构化的视觉呈现引导观众进行对比阅读,是支撑笑点产生的核心排版形式。",
+"亮点类型": "形式",
+},
+{
+"聚类主题": "加工前后的水果形态对比",
+"聚类描述": "这是该类图片的实质亮点。作为剧情反转的诱因,各类水果(芒果、榴莲、菠萝、奇异果)展示了两种物理形态:上方是带皮、带刺或完整的“麻烦”状态,下方是去皮、切好摆盘的“享用”状态。这种水果实物的视觉变化构成了猫咪态度转变的直接理由。",
+"亮点类型": "实质",
+},
+{
+"聚类ID": "cluster_food_seafood_state",
+"聚类主题": "带壳与去壳的海鲜形态对比",
+"聚类描述": "这是该类图片的实质亮点。画面展示了海鲜(虾)的两种截然不同的物理状态:上方是带壳、难以直接食用的完整状态,下方是去壳后的纯肉状态。这种特定的海鲜处理细节差异是触发剧情的核心道具。",
+"亮点类型": "实质",
+"亮点列表": [
+{
+"图片名": "img_5",
+"亮点": {
+"合并结论": "状态迥异的虾肉特写",
+"结论描述": "这是一个实质主导的亮点。作为触发猫咪情绪变化的诱因,左侧展示的虾呈现出两种截然不同的物理状态:上方是带壳、带头、难以食用的整虾,下方是去壳、红润诱人的纯虾肉。这种视觉上的细节差异(带壳vs去壳)精准地传达了“懒人吃法”的笑点逻辑。",
+"亮点类型": "实质",
+"合并引用的数据": {
+"段落5.1.5:虾": {
+"实质": "带壳的整虾是构成对比逻辑的关键前提(因为有壳所以拒绝),是故事起因的核心视觉元素,其形态决定了猫咪的拒绝态度。",
+"形式": {
+"图像完整性": "0.85 - ‘完整带壳’的状态是该图像的关键特征,它与下半部分‘剥好的虾肉’形成鲜明对比,是理解猫咪拒绝(怕麻烦/不喜欢剥壳)笑点的核心视觉线索。",
+"图像内容": "0.86 - 作为画面的核心主体,这只完整的虾是表达‘不爱吃虾’这一主题的直接载体,是构成上半部分剧情的基础。"
+},
+"关系": {
+"段间关系-拒绝猫咪-其他关系-情境关联关系": "0.8 - 这是该段落最核心的关系特征。虾是猫咪拒绝动作的直接对象,这种互动关系构成了画面的主要叙事冲突和幽默点。",
+"段间关系-拒绝文字-其他关系-内容指向关系": "0.75 - 文字内容明确指代了画面中的虾,这种图文对应关系确保了观众能准确理解文字中“我不爱吃”所指的具体对象。"
+}
+},
+"段落5.2.5:去壳虾仁": {
+"实质": "去壳的虾仁是整个梗的“包袱”所在,视觉上的去壳状态直接触发了猫咪的态度转变,是理解“区别对待”逻辑的关键。",
+"形式": {
+"图像完整性": "0.91 - “去壳”这一特征是本图与上一张图(带壳虾)形成对比的关键,直接解释了猫咪态度转变的原因(喜欢吃但不喜欢剥壳),是叙事的视觉关键点。",
+"图像内容": "0.93 - 去壳虾仁的图像是该部分的核心视觉主体,直接对应下方文字“我爱吃”以及猫咪的喜爱反应,缺失后图片失去表意对象。"
+},
+"关系": {
+"段间关系-喜爱猫咪-其他关系-情境关联关系": "0.88 - 这是图片的核心逻辑,去壳虾仁是猫咪喜爱的直接对象,触发了猫咪渴望的表情,构成了表情包的笑点。",
+"段间关系-段落5.2.2-空间关系-定性-语义关联关系": "0.86 - 从语义上确认了虾仁是猫咪情感指向的目标,对理解图片叙事至关重要。"
+}
+}
+},
+"亮点ID": "img_5_hl_3"
+}
+}
+]
+},
+{
+"聚类主题": "拟人化的卡通手势贴纸",
+"聚类描述": "这是该类图片的实质亮点。画面中叠加了高饱和度的黄色Emoji手势物体(拒绝手势与捧手动作)。作为独立的视觉实体,这些卡通贴纸被赋予了物理意义,直观地替代了猫咪的前肢,生动地演绎了“拒绝”与“索要”的具体动作。",
+"亮点类型": "实质",
+},
+{
+"聚类主题": "跨次元的拼贴视觉风格",
+"聚类描述": "这是该类图片的形式亮点。图片采用了一种特定的视觉混合手法,将高写实的摄影素材(猫咪、背景)与扁平化或3D风格的卡通符号(Emoji)生硬地结合在一起。这种打破次元壁的拼贴风格增强了画面的互联网网感和荒诞趣味性。",
+"亮点类型": "形式",
+}
+]

+ 60 - 0
examples/research/input/description/制作点.md

@@ -0,0 +1,60 @@
+{
+"元素ID": "元素1",
+"元素名称": "拒绝猫咪",
+"元素描述": "一只白色和橘色相间的猫咪,张大嘴巴,眼睛紧闭,表情夸张,呈现出拒绝或不喜欢的姿态。",
+"段落数量": 7,
+"段落列表": [
+"段落1.1.2",
+"段落2.1.2",
+"段落3.1.2",
+],
+"综合权重": 95.5
+},
+{
+"元素ID": "元素2",
+"元素名称": "喜爱猫咪",
+"元素描述": "一只白色和橘色相间的猫咪,脸颊鼓起,眼睛睁开,表情温顺,呈现出喜爱或期待的姿态。",
+"段落数量": 7,
+"段落列表": [
+"段落1.2.2",
+"段落2.2.2",
+"段落3.2.2",
+],
+"综合权重": 95.5
+},
+{
+"元素ID": "元素3",
+"元素名称": "拒绝手势",
+"元素描述": "一个黄色的卡通手势,拇指和食指伸出,其余手指握拳,表示拒绝或停止。",
+"段落数量": 7,
+"段落列表": [
+"段落1.1.3",
+"段落2.1.3",
+"段落3.1.3",
+],
+"综合权重": 92.5
+},
+{
+"元素ID": "元素4",
+"元素名称": "喜爱手势",
+"元素描述": "一对黄色的卡通手掌,掌心向上,手指微曲,表示喜爱、接受或欢迎。",
+"段落数量": 7,
+"段落列表": [
+"段落1.2.3",
+"段落2.2.3",
+"段落3.2.3",
+],
+"综合权重": 92.5
+},
+{
+"元素ID": "元素5",
+"元素名称": "手",
+"元素描述": "一只肤色白皙的手,掌心向上,手指微曲,呈现托举物品的姿态。",
+"段落数量": 14,
+"段落列表": [
+"段落1.1.4",
+"段落2.1.4",
+"段落3.1.4"
+],
+"综合权重": 88.0
+}

+ 336 - 0
examples/research/input/description/阿里多多酱__img_1_制作表.json

@@ -0,0 +1,336 @@
+[
+  {
+    "名称": "表情包图片",
+    "描述": "一张分为上下两部分的表情包图片,上半部分表示拒绝,下半部分表示喜爱。",
+    "段落ID": "段落1",
+    "形式": {
+      "图像拼接": {
+        "名称": "图像拼接",
+        "描述": "图片由上下两部分拼接而成,上半部分(0,0到1200,400)和下半部分(0,400到1200,800)在垂直方向上紧密连接,形成一个完整的矩形图像。",
+        "类型": "图像布局",
+        "形式ID": "形式1",
+        "评分详情": {
+          "combined_score": 0.595
+        }
+      },
+      "评分详情": {
+        "combined_score": 0.616
+      }
+    },
+    "子段落": [
+      {
+        "名称": "上半部分",
+        "描述": "表示拒绝某种食物的场景。",
+        "段落ID": "段落1.1",
+        "形式": {
+          "图像拼接": {
+            "名称": "图像拼接",
+            "描述": "上半部分图片由文字、猫咪、拒绝手势、手和芒果五个元素合成。文字位于左上角,猫咪位于右侧,拒绝手势位于猫咪下方,手位于左下角,芒果位于手上方。所有元素均放置在白色背景上,形成一个统一的拒绝场景。",
+            "类型": "图像布局",
+            "形式ID": "形式1",
+            "评分详情": {
+              "combined_score": 0.518
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.642
+          }
+        },
+        "子段落": [
+          {
+            "名称": "拒绝文字",
+            "描述": "表示拒绝的文字。",
+            "段落ID": "段落1.1.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "文字内容为“我不爱吃芒果,谢谢”。",
+                "类型": "文字特征",
+                "形式ID": "形式2",
+                "评分详情": {
+                  "combined_score": 0.546
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.546
+              }
+            }
+          },
+          {
+            "名称": "拒绝猫咪",
+            "描述": "一只张大嘴巴,闭着眼睛,表现出拒绝表情的白色猫咪。",
+            "段落ID": "段落1.1.2",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只白色猫咪,头部和部分身体可见,面部表情为张大嘴巴打哈欠或发出拒绝的声音,眼睛紧闭,表现出明显的拒绝姿态。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.908
+                }
+              },
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "猫咪图像的背景是透明的,使其能够无缝地融入白色背景中。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "图像表情": {
+                "名称": "图像表情",
+                "描述": "猫咪的表情是张大嘴巴、闭着眼睛,呈现出拒绝、不情愿或厌恶的姿态。",
+                "类型": "图像特征",
+                "形式ID": "形式10",
+                "评分详情": {
+                  "combined_score": 0.95
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.975
+              }
+            }
+          },
+          {
+            "名称": "拒绝手势",
+            "描述": "一个黄色竖起大拇指表示拒绝的手势表情符号。",
+            "段落ID": "段落1.1.3",
+            "形式": {
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "手势图像的背景是透明的,使其能够无缝地融入白色背景中。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.385
+              }
+            }
+          },
+          {
+            "名称": "手",
+            "描述": "一只托举着食物的肤色手。",
+            "段落ID": "段落1.1.4",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只肤色手,手掌向上,呈托举状,手腕部分可见。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.927
+                }
+              },
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "手部图像的背景是透明的,使其能够无缝地融入白色背景中。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.245
+              }
+            }
+          },
+          {
+            "名称": "芒果",
+            "描述": "一个完整的黄色芒果。",
+            "段落ID": "段落1.1.5",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一个完整的黄色芒果,表面有细小的水珠。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.63
+                }
+              },
+              "图像颜色": {
+                "名称": "图像颜色",
+                "描述": "芒果的颜色为鲜亮的黄色,带有少量橙色渐变。",
+                "类型": "图像样式",
+                "形式ID": "形式6",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "图像完整性": {
+                "名称": "图像完整性",
+                "描述": "芒果呈现为完整的、未被切割的形态。",
+                "类型": "图像特征",
+                "形式ID": "形式4",
+                "评分详情": {
+                  "combined_score": 0.63
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.63
+              }
+            }
+          }
+        ]
+      },
+      {
+        "名称": "下半部分",
+        "描述": "表示喜爱某种食物的场景。",
+        "段落ID": "段落1.2",
+        "形式": {
+          "图像拼接": {
+            "名称": "图像拼接",
+            "描述": "下半部分图片由文字、猫咪、喜爱手势、手和芒果块五个元素合成。文字位于左上角,猫咪位于右侧,喜爱手势位于猫咪下方,手位于左下角,芒果块位于手上方。所有元素均放置在白色背景上,形成一个统一的喜爱场景。",
+            "类型": "图像布局",
+            "形式ID": "形式1",
+            "评分详情": {
+              "combined_score": 0.598
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.73
+          }
+        },
+        "子段落": [
+          {
+            "名称": "喜爱文字",
+            "描述": "表示喜爱的文字。",
+            "段落ID": "段落1.2.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "文字内容为“芒果!我爱吃!”。",
+                "类型": "文字特征",
+                "形式ID": "形式2",
+                "评分详情": {
+                  "combined_score": 0.56
+                }
+              },
+              "文字大小": {
+                "名称": "文字大小",
+                "描述": "文字高度约为100像素,宽度约为600像素,占据了段落1.2.1的整个区域。",
+                "类型": "文字样式",
+                "形式ID": "形式7",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.56
+              }
+            }
+          },
+          {
+            "名称": "喜爱猫咪",
+            "描述": "一只面带微笑,表情愉悦的白色猫咪。",
+            "段落ID": "段落1.2.2",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只白色猫咪,头部和部分身体可见,面部表情为微笑,眼睛微眯,嘴角上扬,表现出明显的喜爱和愉悦姿态。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.927
+                }
+              },
+              "图像表情": {
+                "名称": "图像表情",
+                "描述": "猫咪的表情是面带微笑,眼睛微眯,呈现出愉悦、喜爱和满足的姿态。",
+                "类型": "图像特征",
+                "形式ID": "形式10",
+                "评分详情": {
+                  "combined_score": 0.95
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.972
+              }
+            }
+          },
+          {
+            "名称": "喜爱手势",
+            "描述": "一个黄色合拢表示喜爱的双手手势表情符号。",
+            "段落ID": "段落1.2.3",
+            "形式": {
+              "评分详情": {
+                "combined_score": 0.385
+              }
+            }
+          },
+          {
+            "名称": "手",
+            "描述": "一只托举着食物的肤色手。",
+            "段落ID": "段落1.2.4",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只肤色手,手掌向上,呈托举状,手腕部分可见。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.927
+                }
+              },
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "手部图像的背景是透明的,使其能够无缝地融入白色背景中。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.245
+              }
+            }
+          },
+          {
+            "名称": "芒果块",
+            "描述": "一碗切好的芒果块。",
+            "段落ID": "段落1.2.5",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一碗切好的芒果块,芒果块呈不规则的立方体状,堆叠在碗中。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.644
+                }
+              },
+              "图像颜色": {
+                "名称": "图像颜色",
+                "描述": "芒果块的颜色为鲜亮的黄色,碗的颜色为纯白色。",
+                "类型": "图像样式",
+                "形式ID": "形式6",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "图像容器": {
+                "名称": "图像容器",
+                "描述": "芒果块被盛放在一个白色的、方形的、带有一定深度的碗状容器中。",
+                "类型": "图像布局",
+                "形式ID": "形式16",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.644
+              }
+            }
+          }
+        ]
+      }
+    ]
+  }
+]

+ 300 - 0
examples/research/input/description/阿里多多酱__img_2_制作表.json

@@ -0,0 +1,300 @@
+[
+  {
+    "名称": "表情包图片",
+    "描述": "一张分为上下两部分的表情包图片,上半部分表示拒绝,下半部分表示喜爱。",
+    "段落ID": "段落2",
+    "形式": {
+      "图像拼接": {
+        "名称": "图像拼接",
+        "描述": "图像由上下两部分拼接而成,上半部分(0,0,1200,400)和下半部分(0,400,1200,800)在垂直方向上紧密连接,共同构成一个完整的800x1200像素的图像。",
+        "类型": "图像布局",
+        "形式ID": "形式1",
+        "评分详情": {
+          "combined_score": 0.626
+        }
+      },
+      "图像背景透明": {
+        "名称": "图像背景透明",
+        "描述": "图像的背景为纯白色,所有前景元素(文字、猫咪、手、榴莲、手势)均被抠图并叠加在白色背景上,背景区域无任何图案或纹理。",
+        "类型": "图像样式",
+        "形式ID": "形式5",
+        "评分详情": {
+          "combined_score": 0.451
+        }
+      },
+      "评分详情": {
+        "combined_score": 0.74
+      }
+    },
+    "子段落": [
+      {
+        "名称": "上半部分",
+        "描述": "表示拒绝某种食物的场景。",
+        "段落ID": "段落2.1",
+        "形式": {
+          "评分详情": {
+            "combined_score": 0.541
+          }
+        },
+        "子段落": [
+          {
+            "名称": "拒绝文字",
+            "描述": "表示拒绝的文字。",
+            "段落ID": "段落2.1.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "文字内容为“我 不爱吃榴莲,谢谢”。",
+                "类型": "文字特征",
+                "形式ID": "形式2",
+                "评分详情": {
+                  "combined_score": 0.504
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.504
+              }
+            }
+          },
+          {
+            "名称": "拒绝猫咪",
+            "描述": "一只张大嘴巴,闭着眼睛,表现出拒绝表情的白色猫咪。",
+            "段落ID": "段落2.1.2",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只白色猫咪,头部和部分身体可见,面部表情为张大嘴巴,闭着眼睛,表现出明显的拒绝和厌恶。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.758
+                }
+              },
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "猫咪图像的背景被完全移除,只保留猫咪主体,边缘清晰,无背景残留。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "图像表情": {
+                "名称": "图像表情",
+                "描述": "猫咪的表情为拒绝和厌恶,通过张大的嘴巴和紧闭的眼睛来表现。",
+                "类型": "图像特征",
+                "形式ID": "形式10",
+                "评分详情": {
+                  "combined_score": 0.874
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.886
+              }
+            }
+          },
+          {
+            "名称": "拒绝手势",
+            "描述": "一个黄色竖起大拇指表示拒绝的手势表情符号。",
+            "段落ID": "段落2.1.3",
+            "形式": {
+              "评分详情": {
+                "combined_score": 0.385
+              }
+            }
+          },
+          {
+            "名称": "手",
+            "描述": "一只托举着食物的肤色手。",
+            "段落ID": "段落2.1.4",
+            "形式": {
+              "评分详情": {
+                "combined_score": 0.28
+              }
+            }
+          },
+          {
+            "名称": "榴莲",
+            "描述": "一个完整的带刺榴莲。",
+            "段落ID": "段落2.1.5",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一个完整的榴莲,表面布满尖刺,呈椭圆形。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "图像完整性": {
+                "名称": "图像完整性",
+                "描述": "榴莲图像呈现为一个完整的、未被剥开的榴莲果实。",
+                "类型": "图像特征",
+                "形式ID": "形式4",
+                "评分详情": {
+                  "combined_score": 0.595
+                }
+              },
+              "图像纹理": {
+                "名称": "图像纹理",
+                "描述": "榴莲表面具有清晰可见的尖刺纹理,质感粗糙。",
+                "类型": "图像样式",
+                "形式ID": "形式15",
+                "评分详情": {
+                  "combined_score": 0.504
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.616
+              }
+            }
+          }
+        ]
+      },
+      {
+        "名称": "下半部分",
+        "描述": "表示喜爱某种食物的场景。",
+        "段落ID": "段落2.2",
+        "形式": {
+          "评分详情": {
+            "combined_score": 0.465
+          }
+        },
+        "子段落": [
+          {
+            "名称": "喜爱文字",
+            "描述": "表示喜爱的文字。",
+            "段落ID": "段落2.2.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "文字内容为“榴莲! 我爱吃!”。",
+                "类型": "文字特征",
+                "形式ID": "形式2",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.532
+              }
+            }
+          },
+          {
+            "名称": "喜爱猫咪",
+            "描述": "一只面带微笑,表情愉悦的白色猫咪。",
+            "段落ID": "段落2.2.2",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只白色猫咪,头部和部分身体可见,面部表情为面带微笑,眼睛微眯,表现出愉悦和喜爱的神情。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.824
+                }
+              },
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "猫咪图像的背景被完全移除,只保留猫咪主体,边缘清晰,无背景残留。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "图像表情": {
+                "名称": "图像表情",
+                "描述": "猫咪的表情为愉悦和喜爱,通过微笑的嘴巴和微眯的眼睛来表现。",
+                "类型": "图像特征",
+                "形式ID": "形式10",
+                "评分详情": {
+                  "combined_score": 0.855
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.888
+              }
+            }
+          },
+          {
+            "名称": "喜爱手势",
+            "描述": "一个黄色合拢表示喜爱的双手手势表情符号。",
+            "段落ID": "段落2.2.3",
+            "形式": {
+              "评分详情": {
+                "combined_score": 0.378
+              }
+            }
+          },
+          {
+            "名称": "手",
+            "描述": "一只托举着食物的肤色手。",
+            "段落ID": "段落2.2.4",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只肤色手,手掌向上,呈托举状,手腕部分被截断。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.824
+                }
+              },
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "手部图像的背景被完全移除,只保留手部主体,边缘清晰,无背景残留。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.451
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.245
+              }
+            }
+          },
+          {
+            "名称": "榴莲果肉",
+            "描述": "几块剥开的榴莲果肉。",
+            "段落ID": "段落2.2.5",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是几块剥开的榴莲果肉,果肉呈黄色,形状不规则。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.63
+                }
+              },
+              "图像颜色": {
+                "名称": "图像颜色",
+                "描述": "榴莲果肉的颜色为鲜亮的黄色,部分区域有白色纤维。",
+                "类型": "图像样式",
+                "形式ID": "形式6",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "图像完整性": {
+                "名称": "图像完整性",
+                "描述": "榴莲果肉图像呈现为几块已经剥开的果肉,而非完整的榴莲果实。",
+                "类型": "图像特征",
+                "形式ID": "形式4",
+                "评分详情": {
+                  "combined_score": 0.595
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.63
+              }
+            }
+          }
+        ]
+      }
+    ]
+  }
+]

+ 309 - 0
examples/research/input/description/阿里多多酱__img_3_制作表.json

@@ -0,0 +1,309 @@
+[
+  {
+    "名称": "表情包图片",
+    "描述": "一张分为上下两部分的表情包图片,上半部分表示拒绝,下半部分表示喜爱。",
+    "段落ID": "段落3",
+    "形式": {
+      "图像拼接": {
+        "名称": "图像拼接",
+        "描述": "图片由上下两部分拼接而成,上半部分(0,0,1200,400)和下半部分(0,400,1200,800)在垂直方向上紧密连接,形成一个完整的矩形图像。",
+        "类型": "图像布局",
+        "形式ID": "形式1",
+        "评分详情": {
+          "combined_score": 0.595
+        }
+      },
+      "评分详情": {
+        "combined_score": 0.751
+      }
+    },
+    "子段落": [
+      {
+        "名称": "上半部分",
+        "描述": "表示拒绝某种食物的场景。",
+        "段落ID": "段落3.1",
+        "形式": {
+          "图像拼接": {
+            "名称": "图像拼接",
+            "描述": "上半部分图片由文字(0,0,600,100)、拒绝猫咪(600,100,1200,400)、拒绝手势(600,300,750,400)、手(0,200,400,400)和菠萝(100,100,400,300)等元素组合而成,这些元素在白色背景上自由排布,没有严格的网格或对齐规则,形成一个表达拒绝主题的场景。",
+            "类型": "图像布局",
+            "形式ID": "形式1",
+            "评分详情": {
+              "combined_score": 0.476
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.674
+          }
+        },
+        "子段落": [
+          {
+            "名称": "拒绝文字",
+            "描述": "表示拒绝的文字。",
+            "段落ID": "段落3.1.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "文字内容为“我不爱吃菠萝,谢谢”。",
+                "类型": "文字特征",
+                "形式ID": "形式2",
+                "评分详情": {
+                  "combined_score": 0.546
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.546
+              }
+            }
+          },
+          {
+            "名称": "拒绝猫咪",
+            "描述": "一只张大嘴巴,闭着眼睛,表现出拒绝表情的白色猫咪。",
+            "段落ID": "段落3.1.2",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只白色猫咪的头部特写,猫咪的毛发蓬松,眼睛紧闭,嘴巴张大,露出粉色的口腔和舌头,整体姿态表现出强烈的拒绝或厌恶。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.894
+                }
+              },
+              "图像表情": {
+                "名称": "图像表情",
+                "描述": "猫咪的表情是夸张的拒绝或厌恶,通过紧闭的眼睛和张大的嘴巴来表现,具有强烈的喜剧效果。",
+                "类型": "图像特征",
+                "形式ID": "形式10",
+                "评分详情": {
+                  "combined_score": 0.898
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.937
+              }
+            }
+          },
+          {
+            "名称": "拒绝手势",
+            "描述": "一个黄色竖起大拇指表示拒绝的手势表情符号。",
+            "段落ID": "段落3.1.3",
+            "形式": {
+              "评分详情": {
+                "combined_score": 0.315
+              }
+            }
+          },
+          {
+            "名称": "手",
+            "描述": "一只托举着食物的肤色手。",
+            "段落ID": "段落3.1.4",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只肤色手掌,手掌向上摊开,手指微微弯曲,呈托举状,手腕部分被截断。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.894
+                }
+              },
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "手部图像的背景被完全移除,手部主体被精确抠出,边缘清晰,与白色背景无缝融合。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.245
+              }
+            }
+          },
+          {
+            "名称": "菠萝",
+            "描述": "一个完整的菠萝。",
+            "段落ID": "段落3.1.5",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一个完整的菠萝,带有绿色的冠芽和金黄色的果实,果实表面有明显的网格状纹理和突起的“眼睛”。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.623
+                }
+              },
+              "图像颜色": {
+                "名称": "图像颜色",
+                "描述": "菠萝果实主体呈金黄色(近似RGB: 255,192,0),冠芽为深绿色(近似RGB: 0,128,0)。",
+                "类型": "图像样式",
+                "形式ID": "形式6",
+                "评分详情": {
+                  "combined_score": 0.504
+                }
+              },
+              "图像完整性": {
+                "名称": "图像完整性",
+                "描述": "菠萝图像呈现的是一个未经切割、完整的菠萝果实,包括果肉和冠芽。",
+                "类型": "图像特征",
+                "形式ID": "形式4",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "图像纹理": {
+                "名称": "图像纹理",
+                "描述": "菠萝果实表面具有清晰的网格状纹理,每个网格中心有突起的褐色小点,冠芽部分有细长的叶片纹理。",
+                "类型": "图像样式",
+                "形式ID": "形式15",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.623
+              }
+            }
+          }
+        ]
+      },
+      {
+        "名称": "下半部分",
+        "描述": "表示喜爱某种食物的场景。",
+        "段落ID": "段落3.2",
+        "形式": {
+          "图像拼接": {
+            "名称": "图像拼接",
+            "描述": "下半部分图片由文字(0,400,600,500)、喜爱猫咪(600,500,1200,800)、喜爱手势(600,700,750,800)、手(0,600,400,800)和菠萝块(100,500,400,700)等元素组合而成,这些元素在白色背景上自由排布,没有严格的网格或对齐规则,形成一个表达喜爱主题的场景。",
+            "类型": "图像布局",
+            "形式ID": "形式1",
+            "评分详情": {
+              "combined_score": 0.49
+            }
+          },
+          "评分详情": {
+            "combined_score": 0.662
+          }
+        },
+        "子段落": [
+          {
+            "名称": "喜爱文字",
+            "描述": "表示喜爱的文字。",
+            "段落ID": "段落3.2.1",
+            "形式": {
+              "文字内容": {
+                "名称": "文字内容",
+                "描述": "文字内容为“菠萝!我爱吃!”。",
+                "类型": "文字特征",
+                "形式ID": "形式2",
+                "评分详情": {
+                  "combined_score": 0.56
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.567
+              }
+            }
+          },
+          {
+            "名称": "喜爱猫咪",
+            "描述": "一只面带微笑,表情愉悦的白色猫咪。",
+            "段落ID": "段落3.2.2",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一只白色猫咪的头部特写,猫咪的毛发蓬松,眼睛半睁,嘴角上扬,露出微笑的表情,整体姿态表现出愉悦和喜爱。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.852
+                }
+              },
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "猫咪图像的背景被完全移除,猫咪主体被精确抠出,边缘清晰,与白色背景无缝融合。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.42
+                }
+              },
+              "图像表情": {
+                "名称": "图像表情",
+                "描述": "猫咪的表情是愉悦和喜爱,通过半睁的眼睛和上扬的嘴角来表现,具有可爱的喜剧效果。",
+                "类型": "图像特征",
+                "形式ID": "形式10",
+                "评分详情": {
+                  "combined_score": 0.929
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.951
+              }
+            }
+          },
+          {
+            "名称": "喜爱手势",
+            "描述": "一个黄色合拢表示喜爱的双手手势表情符号。",
+            "段落ID": "段落3.2.3",
+            "形式": {
+              "评分详情": {
+                "combined_score": 0.336
+              }
+            }
+          },
+          {
+            "名称": "手",
+            "描述": "一只托举着食物的肤色手。",
+            "段落ID": "段落3.2.4",
+            "形式": {
+              "评分详情": {
+                "combined_score": 0.336
+              }
+            }
+          },
+          {
+            "名称": "菠萝块",
+            "描述": "一碗切好的菠萝块。",
+            "段落ID": "段落3.2.5",
+            "形式": {
+              "图像内容": {
+                "名称": "图像内容",
+                "描述": "图像内容是一个透明玻璃碗中盛放着切好的菠萝块,菠萝块呈不规则的块状,颜色金黄,表面湿润。",
+                "类型": "图像特征",
+                "形式ID": "形式3",
+                "评分详情": {
+                  "combined_score": 0.616
+                }
+              },
+              "图像背景透明": {
+                "名称": "图像背景透明",
+                "描述": "菠萝块和碗的图像背景被完全移除,主体被精确抠出,边缘清晰,与白色背景无缝融合。",
+                "类型": "图像样式",
+                "形式ID": "形式5",
+                "评分详情": {
+                  "combined_score": 0.406
+                }
+              },
+              "图像颜色": {
+                "名称": "图像颜色",
+                "描述": "菠萝块呈金黄色(近似RGB: 255,215,0),玻璃碗呈透明无色。",
+                "类型": "图像样式",
+                "形式ID": "形式6",
+                "评分详情": {
+                  "combined_score": 0.525
+                }
+              },
+              "评分详情": {
+                "combined_score": 0.616
+              }
+            }
+          }
+        ]
+      }
+    ]
+  }
+]

+ 19 - 0
examples/research/input/index.md

@@ -0,0 +1,19 @@
+# Research Input 目录说明
+
+本目录包含调研阶段的输入文件,来自上游 plan 阶段的产出。
+
+## 根目录文件
+
+- `analysis.json`:需求分析结果,包含内容品类判断、上限点(必须高度还原的特征)、下限点(底线要求)及 AI 还原挑战。
+- `pipeline.json`:粗工序定义,描述还原策略(垫图法+局部重绘组合)、目标树(goal_tree)、各阶段依赖关系和风险评估。
+
+## description/ 文件夹
+
+还原目标的详细描述,包含图文帖子的结构化解构数据。
+
+- `制作亮点.md`:核心亮点聚类,如猫咪反差表情、二分对比构图、食物状态对比等。
+- `制作点.md`:关键视觉元素及权重,如拒绝猫咪、喜爱猫咪、手势等。
+- `创作表.md`:创作视角描述(如有内容)。
+- `阿里多多酱__img_1_制作表.json`:第 1 张图的制作表,包含上下拼接布局、元素组成、坐标和视觉形式评分。
+- `阿里多多酱__img_2_制作表.json`:第 2 张图的制作表,包含拒绝/喜爱场景的元素布局。
+- `阿里多多酱__img_3_制作表.json`:第 3 张图的制作表,包含各元素位置坐标和构图信息。

+ 388 - 0
examples/research/input/pipeline.json

@@ -0,0 +1,388 @@
+{
+  "pipelines": [
+    {
+      "strategy": {
+        "name": "垫图法 + 局部重绘组合策略",
+        "description": "使用 Midjourney 的--cref 参数保持角色一致性生成基础猫咪图,然后用 ComfyUI/Photoshop 进行局部重绘精准控制表情(张嘴闭眼 vs 鼓腮睁眼),最后分层合成所有元素(猫咪、手势、食物、手、文字)",
+        "reasoning": "analysis.json 中的核心下限点是'猫咪跨图一致性'和'表情精准度',垫图法 (--cref) 可保证角色一致性,局部重绘可精准控制表情,完美匹配需求;制作表中明确了每个元素的布局坐标和视觉特征,支持分层合成策略",
+        "vs_alternatives": [
+          {
+            "alternative": "Seed 值固定 + 描述词微调",
+            "why_not": "seed 值法不能 100% 保证一致性,对于'猫咪跨图一致性'这一下限点覆盖不足;表情控制依赖描述词精准度,对于'表情精准度'这一下限点覆盖不足",
+            "could_switch_if": "如果局部重绘工具不可用或效果不佳,可回退到此策略,接受一定的一致性损失"
+          },
+          {
+            "alternative": "Panels 多格生成 + 裁剪",
+            "why_not": "Panels 法虽然一致性好,但表情精准度不够,难以保证生成特定的'张嘴闭眼'和'鼓腮睁眼'表情;且多格图分辨率较低,影响最终输出质量",
+            "could_switch_if": "如果时间紧迫且对表情精准度要求降低,可考虑此策略快速出图"
+          }
+        ],
+        "risks_found_during_instantiation": [
+          {
+            "stage_id": "stage_2",
+            "risk": "局部重绘可能导致猫咪面部边缘融合不自然,尤其是嘴巴和眼睛区域",
+            "severity": "medium",
+            "mitigation": "使用 Inpaint 专用模型(如 FLUX.1 Fill),配合遮罩模糊和边缘羽化;在 Photoshop 中用匹配颜色工具校正色差"
+          },
+          {
+            "stage_id": "stage_4",
+            "risk": "三张图(芒果/榴莲/菠萝)的猫咪可能因分批生成而产生细微差异",
+            "severity": "medium",
+            "mitigation": "固定 MJ 的--s 风格参数和--v 版本;使用同一张参考图进行--cref;优先生成一套猫咪后复用到三张图"
+          },
+          {
+            "stage_id": "stage_5",
+            "risk": "手势与猫咪的空间关系可能不自然,看起来像悬浮元素",
+            "severity": "low",
+            "mitigation": "制作表中已有明确坐标(如 img_1 拒绝手势位于 600,300,750,400),按坐标精确定位;添加轻微阴影增强融合感"
+          }
+        ]
+      },
+      "goal_tree": {
+        "stage_id": "root",
+        "stage_name": "还原目标",
+        "description": "还原一组对比叙事型猫咪表情包(img_1 芒果主题、img_2 榴莲主题、img_3 菠萝主题),每张图采用上下分栏结构,上半部分表示拒绝(张嘴闭眼猫咪 + 完整食物 + 拒绝手势),下半部分表示喜爱(鼓腮睁眼猫咪 + 切好食物 + 喜爱手势),所有元素拼贴在纯白背景上",
+        "required_spec": [
+          "纵向二分构图(上下分栏 1200x400 + 1200x400)",
+          "猫咪跨图一致性(同一只白橘猫的两种表情)",
+          "表情精准度(拒绝:张嘴闭眼;喜爱:鼓腮睁眼)",
+          "食物形态对比(上:完整带皮/带壳;下:去皮切好)",
+          "卡通手势拼贴(黄色 Emoji 手势,替代猫咪前肢)",
+          "纯白背景 + 透明抠图(所有元素独立抠图后合成)",
+          "文字内容准确(拒绝:'我不爱吃 XX,谢谢';喜爱:'XX!我爱吃!')",
+          "元素布局符合制作表坐标"
+        ],
+        "output_spec": [
+          "img_1.png(芒果主题,1200x800)",
+          "img_2.png(榴莲主题,1200x800)",
+          "img_3.png(菠萝主题,1200x800)"
+        ],
+        "children": [
+          {
+            "stage_id": "stage_1",
+            "stage_name": "基础猫咪素材生成",
+            "description": "生成一只白橘相间的猫咪基础图,作为后续表情编辑的底图。使用 Midjourney --cref 参数保持角色一致性,生成正面/侧面视角的猫咪头像,背景为纯白色以便抠图",
+            "required_spec": [
+              "白橘相间的猫咪毛色",
+              "正面或侧面视角,头部清晰可见",
+              "纯白背景或透明背景",
+              "高分辨率(至少 1024x1024)以便裁剪和编辑"
+            ],
+            "output_spec": [
+              "base_cat.png(基础猫咪图,白橘相间,纯白背景)"
+            ],
+            "spec_satisfaction": {
+              "status": "satisfied",
+              "gap": "",
+              "mitigation": ""
+            },
+            "target_images": ["img_1", "img_2", "img_3"],
+            "stage_output": "base_cat.png",
+            "input_from": [],
+            "covers_requirements": ["猫咪跨图一致性"],
+            "importance": "下限",
+            "reasoning": {
+              "why_needed": "这是整个还原流程的基础,如果基础猫咪图不一致或质量差,后续所有表情编辑和合成都会失败。此阶段解决'猫咪跨图一致性'这一下限点",
+              "why_here": "这是依赖树的叶节点,不依赖任何其他阶段的产物,是所有猫咪相关阶段的共同输入"
+            },
+            "children": []
+          },
+          {
+            "stage_id": "stage_2",
+            "stage_name": "表情精准编辑",
+            "description": "基于基础猫咪图,使用局部重绘(Inpaint)技术分别生成两种表情:拒绝表情(张嘴闭眼)和喜爱表情(鼓腮睁眼)。对猫咪面部区域进行精准遮罩和重绘,保持其他部分不变",
+            "required_spec": [
+              "拒绝表情:嘴巴张大、眼睛紧闭、表情夸张",
+              "喜爱表情:脸颊鼓起、眼睛睁开、嘴角上扬",
+              "保持猫咪毛色、头部轮廓与 base_cat.png 一致",
+              "边缘融合自然,无明显重绘痕迹"
+            ],
+            "output_spec": [
+              "cat_reject.png(拒绝表情猫咪,透明背景)",
+              "cat_accept.png(喜爱表情猫咪,透明背景)"
+            ],
+            "spec_satisfaction": {
+              "status": "partial",
+              "gap": "局部重绘可能导致面部边缘融合不自然,尤其是嘴巴和眼睛区域;多次生成可能产生风格细微差异",
+              "mitigation": "使用 Inpaint 专用模型(如 FLUX.1 Fill),配合遮罩模糊和边缘羽化;固定 MJ 的--s 风格参数和--v 版本;使用同一张参考图进行--cref"
+            },
+            "target_images": ["img_1", "img_2", "img_3"],
+            "stage_output": "cat_reject.png, cat_accept.png",
+            "input_from": ["stage_1"],
+            "covers_requirements": ["表情精准度", "猫咪跨图一致性"],
+            "importance": "下限",
+            "reasoning": {
+              "why_needed": "这是实现'表情精准度'下限点的关键阶段。制作表中明确要求拒绝猫咪'张大嘴巴,闭着眼睛',喜爱猫咪'脸颊鼓起,眼睛睁开',必须通过局部重绘精准控制",
+              "why_here": "依赖 stage_1 的基础猫咪图,是后续合成阶段的必要输入。表情编辑必须在合成前完成,因为合成后无法单独修改猫咪表情"
+            },
+            "children": []
+          },
+          {
+            "stage_id": "stage_3",
+            "stage_name": "食物素材准备",
+            "description": "为三张图分别准备上下两种形态的食物素材。img_1:完整芒果 vs 切好芒果块;img_2:完整带刺榴莲 vs 榴莲果肉;img_3:完整带冠芽菠萝 vs 切好菠萝块。所有食物素材需要透明背景以便合成",
+            "required_spec": [
+              "img_1_upper:完整带皮芒果,鲜亮黄色,表面有水珠",
+              "img_1_lower:切好芒果块,不规则立方体状,盛放在白色方形碗中",
+              "img_2_upper:完整带刺榴莲,椭圆形,表面布满尖刺",
+              "img_2_lower:剥开的榴莲果肉,鲜亮黄色,部分区域有白色纤维",
+              "img_3_upper:完整菠萝,金黄色果实 + 深绿色冠芽,表面有网格状纹理",
+              "img_3_lower:切好菠萝块,金黄色,盛放在透明玻璃碗中",
+              "所有食物素材透明背景,边缘清晰"
+            ],
+            "output_spec": [
+              "mango_whole.png, mango_cubed.png",
+              "durian_whole.png, durian_flesh.png",
+              "pineapple_whole.png, pineapple_cubed.png"
+            ],
+            "spec_satisfaction": {
+              "status": "satisfied",
+              "gap": "",
+              "mitigation": ""
+            },
+            "target_images": ["img_1", "img_2", "img_3"],
+            "stage_output": "6 种食物素材图",
+            "input_from": [],
+            "covers_requirements": ["食物形态对比", "食物形态准确性"],
+            "importance": "上限",
+            "reasoning": {
+              "why_needed": "这是实现'食物形态对比'上限点的关键阶段。制作表中明确描述了每种食物的形态特征(如'完整带皮'vs'切好块状'),这是猫咪态度转变的诱因,形态错误会导致逻辑不通",
+              "why_here": "这是依赖树的叶节点,不依赖其他阶段。食物素材是合成阶段的必要输入,可独立于猫咪素材并行准备"
+            },
+            "children": []
+          },
+          {
+            "stage_id": "stage_4",
+            "stage_name": "手势和手素材准备",
+            "description": "准备黄色卡通手势素材(拒绝手势:拇指食指伸出;喜爱手势:掌心向上双手合拢)和肤色手素材(掌心向上托举姿态)。所有素材需要透明背景",
+            "required_spec": [
+              "拒绝手势:黄色 Emoji 风格,拇指和食指伸出,其余手指握拳",
+              "喜爱手势:黄色 Emoji 风格,掌心向上,手指微曲",
+              "手:肤色白皙,掌心向上,呈托举状,手腕部分可见或被截断",
+              "所有素材透明背景,边缘清晰"
+            ],
+            "output_spec": [
+              "gesture_reject.png(拒绝手势)",
+              "gesture_accept.png(喜爱手势)",
+              "hand_hold.png(托举的手)"
+            ],
+            "spec_satisfaction": {
+              "status": "satisfied",
+              "gap": "",
+              "mitigation": ""
+            },
+            "target_images": ["img_1", "img_2", "img_3"],
+            "stage_output": "gesture_reject.png, gesture_accept.png, hand_hold.png",
+            "input_from": [],
+            "covers_requirements": ["拟人化的卡通手势贴纸"],
+            "importance": "上限",
+            "reasoning": {
+              "why_needed": "这是实现'拟人化的卡通手势贴纸'上限点的关键阶段。制作表中明确描述了手势的视觉特征(黄色卡通手势,表示拒绝/接受),这是表情包的标志性元素",
+              "why_here": "这是依赖树的叶节点,不依赖其他阶段。手势和手素材是合成阶段的必要输入,可独立于猫咪和食物素材并行准备"
+            },
+            "children": []
+          },
+          {
+            "stage_id": "stage_5",
+            "stage_name": "单图分层合成",
+            "description": "将猫咪、手势、食物、手等元素按制作表中的坐标进行分层合成。每张图分为上下两个场景(拒绝场景/喜爱场景),所有元素放置在纯白背景上。此阶段对 img_1/2/3 分别执行",
+            "required_spec": [
+              "画布尺寸:1200x800(上下各 1200x400)",
+              "背景:纯白色(RGB 255,255,255)",
+              "元素布局符合制作表坐标(如 img_1 拒绝猫咪位于 600,100,1200,400)",
+              "手势位于猫咪下方,模拟替代猫咪前肢的空间位置",
+              "手位于左下角,呈托举食物姿态",
+              "食物位于手上方",
+              "所有元素边缘清晰,无明显拼贴痕迹"
+            ],
+            "output_spec": [
+              "img_1_composed.png(芒果主题合成图,不含文字)",
+              "img_2_composed.png(榴莲主题合成图,不含文字)",
+              "img_3_composed.png(菠萝主题合成图,不含文字)"
+            ],
+            "spec_satisfaction": {
+              "status": "partial",
+              "gap": "手势与猫咪的空间关系可能不自然,看起来像悬浮元素;元素间可能存在轻微色差",
+              "mitigation": "按制作表坐标精确定位;添加轻微阴影增强融合感;使用匹配颜色工具校正色差"
+            },
+            "target_images": ["img_1", "img_2", "img_3"],
+            "stage_output": "img_1_composed.png, img_2_composed.png, img_3_composed.png",
+            "input_from": ["stage_2", "stage_3", "stage_4"],
+            "covers_requirements": ["纵向二分的对比叙事构图", "跨次元的拼贴视觉风格", "手势与猫咪的空间关系", "纯白背景与透明抠图"],
+            "importance": "上限",
+            "reasoning": {
+              "why_needed": "这是实现'纵向二分构图'和'拼贴视觉风格'上限点的关键阶段。制作表中详细描述了每个元素的布局坐标和拼接关系,必须通过分层合成精确还原",
+              "why_here": "此阶段依赖 stage_2(表情猫咪)、stage_3(食物)、stage_4(手势和手)的产物,是将所有独立元素整合为完整场景的中间节点"
+            },
+            "children": [
+              {
+                "stage_id": "stage_5_1",
+                "stage_name": "img_1 芒果主题合成",
+                "description": "合成 img_1 的上下两个场景:上半部分(拒绝文字 + 拒绝猫咪 + 拒绝手势 + 手 + 完整芒果),下半部分(喜爱文字 + 喜爱猫咪 + 喜爱手势 + 手 + 切好芒果块)",
+                "required_spec": [
+                  "上半部分:文字 (0,0,600,100),拒绝猫咪 (600,100,1200,400),拒绝手势 (600,300,750,400),手 (0,200,400,400),完整芒果 (100,100,400,300)",
+                  "下半部分:文字 (0,400,600,500),喜爱猫咪 (600,500,1200,800),喜爱手势 (600,700,750,800),手 (0,600,400,800),切好芒果块 (100,500,400,700)"
+                ],
+                "output_spec": ["img_1_composed.png"],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_1"],
+                "stage_output": "img_1_composed.png",
+                "input_from": ["stage_2", "stage_3", "stage_4"],
+                "covers_requirements": ["纵向二分的对比叙事构图", "跨次元的拼贴视觉风格"],
+                "importance": "上限",
+                "reasoning": {
+                  "why_needed": "这是 stage_5 在 img_1 上的具体实例化,芒果主题的食物形态对比是核心亮点",
+                  "why_here": "作为 stage_5 的子节点,继承父阶段的依赖关系"
+                },
+                "children": []
+              },
+              {
+                "stage_id": "stage_5_2",
+                "stage_name": "img_2 榴莲主题合成",
+                "description": "合成 img_2 的上下两个场景:上半部分(拒绝文字 + 拒绝猫咪 + 拒绝手势 + 手 + 完整榴莲),下半部分(喜爱文字 + 喜爱猫咪 + 喜爱手势 + 手 + 榴莲果肉)",
+                "required_spec": [
+                  "上半部分:文字 (0,0,600,100),拒绝猫咪 (600,100,1200,400),拒绝手势 (600,300,750,400),手 (0,200,400,400),完整榴莲 (100,100,400,300)",
+                  "下半部分:文字 (0,400,600,500),喜爱猫咪 (600,500,1200,800),喜爱手势 (600,700,750,800),手 (0,600,400,800),榴莲果肉 (100,500,400,700)"
+                ],
+                "output_spec": ["img_2_composed.png"],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_2"],
+                "stage_output": "img_2_composed.png",
+                "input_from": ["stage_2", "stage_3", "stage_4"],
+                "covers_requirements": ["纵向二分的对比叙事构图", "跨次元的拼贴视觉风格"],
+                "importance": "上限",
+                "reasoning": {
+                  "why_needed": "这是 stage_5 在 img_2 上的具体实例化,榴莲主题的带刺纹理和果肉形态是核心特征",
+                  "why_here": "作为 stage_5 的子节点,继承父阶段的依赖关系"
+                },
+                "children": []
+              },
+              {
+                "stage_id": "stage_5_3",
+                "stage_name": "img_3 菠萝主题合成",
+                "description": "合成 img_3 的上下两个场景:上半部分(拒绝文字 + 拒绝猫咪 + 拒绝手势 + 手 + 完整菠萝),下半部分(喜爱文字 + 喜爱猫咪 + 喜爱手势 + 手 + 切好菠萝块)",
+                "required_spec": [
+                  "上半部分:文字 (0,0,600,100),拒绝猫咪 (600,100,1200,400),拒绝手势 (600,300,750,400),手 (0,200,400,400),完整菠萝 (100,100,400,300)",
+                  "下半部分:文字 (0,400,600,500),喜爱猫咪 (600,500,1200,800),喜爱手势 (600,700,750,800),手 (0,600,400,800),切好菠萝块 (100,500,400,700)"
+                ],
+                "output_spec": ["img_3_composed.png"],
+                "spec_satisfaction": {
+                  "status": "satisfied",
+                  "gap": "",
+                  "mitigation": ""
+                },
+                "target_images": ["img_3"],
+                "stage_output": "img_3_composed.png",
+                "input_from": ["stage_2", "stage_3", "stage_4"],
+                "covers_requirements": ["纵向二分的对比叙事构图", "跨次元的拼贴视觉风格"],
+                "importance": "上限",
+                "reasoning": {
+                  "why_needed": "这是 stage_5 在 img_3 上的具体实例化,菠萝主题的冠芽和网格纹理是核心特征",
+                  "why_here": "作为 stage_5 的子节点,继承父阶段的依赖关系"
+                },
+                "children": []
+              }
+            ]
+          },
+          {
+            "stage_id": "stage_6",
+            "stage_name": "文字添加与最终输出",
+            "description": "为每张合成图添加文字内容。拒绝场景文字:'我不爱吃 XX,谢谢';喜爱场景文字:'XX!我爱吃!'。文字位于左上角,黑色字体,大小约 100x600 像素",
+            "required_spec": [
+              "img_1 文字:上半部分'我不爱吃芒果,谢谢',下半部分'芒果!我爱吃!'",
+              "img_2 文字:上半部分'我不爱吃榴莲,谢谢',下半部分'榴莲!我爱吃!'",
+              "img_3 文字:上半部分'我不爱吃菠萝,谢谢',下半部分'菠萝!我爱吃!'",
+              "文字位置:左上角(如 0,0,600,100)",
+              "文字样式:黑色,清晰可读,无衬线字体"
+            ],
+            "output_spec": [
+              "img_1_final.png(1200x800,含文字)",
+              "img_2_final.png(1200x800,含文字)",
+              "img_3_final.png(1200x800,含文字)"
+            ],
+            "spec_satisfaction": {
+              "status": "satisfied",
+              "gap": "",
+              "mitigation": ""
+            },
+            "target_images": ["img_1", "img_2", "img_3"],
+            "stage_output": "img_1_final.png, img_2_final.png, img_3_final.png",
+            "input_from": ["stage_5"],
+            "covers_requirements": ["文字内容与位置"],
+            "importance": "基础",
+            "reasoning": {
+              "why_needed": "这是实现'文字内容与位置'下限点的阶段。文字是叙事的重要组成部分,与图像共同完成语义表达,文字错误会导致语义混乱",
+              "why_here": "这是依赖树的根节点附近的最后阶段,依赖 stage_5 的合成图,产出最终成品"
+            },
+            "children": []
+          }
+        ]
+      },
+      "requirement_coverage": {
+        "极具反差的猫咪神态": {
+          "covered_by": ["stage_2"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "纵向二分的对比叙事构图": {
+          "covered_by": ["stage_5", "stage_5_1", "stage_5_2", "stage_5_3"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "加工前后的水果形态对比": {
+          "covered_by": ["stage_3"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "拟人化的卡通手势贴纸": {
+          "covered_by": ["stage_4"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "跨次元的拼贴视觉风格": {
+          "covered_by": ["stage_5", "stage_5_1", "stage_5_2", "stage_5_3"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "猫咪跨图一致性": {
+          "covered_by": ["stage_1", "stage_2"],
+          "coverage_confidence": "high",
+          "gap_note": "风险:三张图的猫咪可能因分批生成而产生细微差异,需通过固定参数和复用素材缓解"
+        },
+        "表情精准度": {
+          "covered_by": ["stage_2"],
+          "coverage_confidence": "medium",
+          "gap_note": "风险:局部重绘可能导致面部边缘融合不自然,需使用专用模型和后期处理"
+        },
+        "手势与猫咪的空间关系": {
+          "covered_by": ["stage_5"],
+          "coverage_confidence": "medium",
+          "gap_note": "风险:手势可能看起来像悬浮元素,需添加阴影增强融合感"
+        },
+        "食物形态的准确性": {
+          "covered_by": ["stage_3"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "纯白背景与透明抠图": {
+          "covered_by": ["stage_1", "stage_2", "stage_3", "stage_4", "stage_5"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        },
+        "文字内容与位置": {
+          "covered_by": ["stage_6"],
+          "coverage_confidence": "high",
+          "gap_note": ""
+        }
+      }
+    }
+  ]
+}

+ 82 - 0
examples/research/research.md

@@ -0,0 +1,82 @@
+# 🧠 Skill: 搜索决策大脑 (Search Intent & Strategy Engine)
+
+## 1. 技能定位
+
+**目标**:作为调研任务的“总指挥”,将模糊的原始问题转化为“从粗到细”的执行策略。
+**核心逻辑**:需求解构 (A-F) $\rightarrow$ 歧义对冲 $\rightarrow$ 模态预测 $\rightarrow$ 渠道权重分配。
+
+## 2. 第一阶段:意图深度解构 (Intent Taxonomy)
+
+在接到任务时,必须先将问题归类到以下六种维度之一:
+
+| 类型               | 核心意图                         | 关键词识别                     | 期望输出             |
+| ------------------ | -------------------------------- | ------------------------------ | -------------------- |
+| **A. 灵感/创意型** | 获取视觉参考、新思路、成功案例   | 有什么案例、参考什么、爆款风格 | 案例集合、创意图示   |
+| **B. 渠道/资源型** | 寻找可用的资源、平台、下载源     | 有哪些、在哪里、获取X、找到X   | 资源清单、渠道链接   |
+| **C. 方法/策略型** | 学习方法论、逻辑框架、选题拆解   | 如何策划、怎么设计、如何整合   | 策略框架、逻辑思路   |
+| **D. 操作/实践型** | 学习具体步骤、工序、按钮级操作   | 如何做、怎么操作、步骤是什么   | 分步骤教程、操作演示 |
+| **E. 工具/功能型** | 了解工具能力、参数设置、选型对比 | 用什么工具、X功能怎么用        | 工具推荐、功能说明表 |
+| **F. 知识查询型**  | 获取事实性数据、定义、清单       | 是什么、多少、有哪些(事实类) | 明确数据、事实报告   |
+
+## 3. 第二阶段:搜索渠道能力矩阵 (Channel Matrix)
+
+根据不同渠道的“颗粒度”和“信源特性”分配资源:
+
+- **UGC/App Search (小红书/抖音/B站)**:
+- **强项**:视觉演示、实战案例、用户真实吐槽、实时流行趋势。
+- **策略**:用于 **A、B、D** 型问题。
+
+- **Web Search (Google/Bing/GitHub/专业社区)**:
+- **强项**:权威文档、技术规范、长篇测评、代码仓库、私有库(Feishu/ima)渗透。
+- **策略**:用于 **E、F** 及 **D** 型中的技术部分。
+
+- **LLM + Search (RAG/DeepResearch)**:
+- **强项**:信息提炼、方案整合、语义理解、跨领域联想。
+- **策略**:用于 **C** 型及所有复杂问题的总结。
+
+## 4. 思考链 (CoT) 执行协议
+
+Agent 在产生决策前,必须按以下步骤输出思考过程:
+
+### Step 1: 需求指纹提取 (Fingerprinting)
+
+- **核心词提取**:[识别名词与动词]
+- **隐含场景**:[判断是创作、工程、还是学术场景]
+
+### Step 2: 意图对冲 (Disambiguation)
+
+- **主要意图判断**:[选定 A-F 类型]
+- **歧义性扫描**:[是否存在歧义?如:用户要的是“怎么找”还是“怎么做”?]
+- **倾向性确认**:[基于上下文,确定置信度最高的理解方向]
+
+### Step 3: 渠道与模态匹配 (Mapping)
+
+- **模态需求**:[文本/图片/视频/代码]
+- **渠道分配**:
+- 主渠道:[平台名称] (权重 %) - 理由
+- 辅助渠道:[平台名称] (权重 %) - 理由
+
+### Step 4: 任务拆解与 Query 生成 (Task Decomposition)
+
+- 针对不同渠道生成特定的探测词(包含同义词扩展和目的性前缀)。
+
+## 5. 示例:Agent 内部决策链演示
+
+**问题**:“如何做猫咪 Meme 系列图文,要那种能爆火的?”
+
+**Agent 思考链:**
+
+- **意图识别**:这是 **A(灵感)+ D(操作)** 的复合需求。用户不仅要流程,还要“能火”的参考。
+- **歧义处理**:用户问的是“怎么做”,主要倾向于操作步骤(D),但“能爆火”暗示了需要最新的趋势(A)。
+- **渠道匹配**:
+- 主搜 **UGC (小红书/B站)**:权重 70%。寻找“猫咪 Meme 教程”视频和“爆款猫咪笔记”案例。
+- 辅搜 **Web (GitHub/Civitai)**:权重 20%。寻找是否有专门的“Meme 生成工具”或“猫咪表情 LoRA”。
+- **LLM 整合**:权重 10%。负责将案例和步骤总结为方法论。
+
+- **Query 生成**:
+
+1. `小红书: 猫咪 Meme 爆款 教程`
+2. `B站: 制作 猫咪 表情包 全流程`
+3. `Google: site:docs.feishu.cn AI 绘画 猫咪 表情包 一致性`
+
+---

+ 248 - 2
examples/research/research.prompt

@@ -4,7 +4,253 @@ temperature: 0.3
 ---
 
 $system$
-你是最顶尖的AI助手,可以拆分并调用工具逐步解决复杂问题。
+你是工序实现方案的调研专家。你的输入是一份粗工序(pipeline.json),你的任务是为每个阶段找到可靠的实现方案(工具+用例)。
+
+## 变量
+
+- `%input_dir%`:输入目录,可通过看index.md文件来确定input的组织结构
+- `%output_dir%`:输出目录
+
+注:当前时间由 get_current_context 实时注入,prompt 中用 `%current_time%` 引用。
+
+## 核心原则
+
+### 需求驱动,而非工具驱动
+调研的目标是完成需求,不是为了找工具而找工具。
+
+- 关键词必须与需求一一对应:从 pipeline 的 required_spec 和 output_spec 中提取关键词,而不是泛泛搜索
+- 工具不对可以换:如果调研中发现某工具无法满足需求,立即换方向,不要死磕
+- 持续对齐需求:每轮调研后,回到 pipeline.json 检查当前方案是否真正覆盖了该阶段的 required_spec
+- 比对制作表:评估工序实现方案时,必须与 `%input_dir%/descriptions/` 下的原始制作表进行比对,确保方案产出与制作表中定义的视觉目标一致(颜色、布局、元素、坐标等)
+
+### 工具与用例互证
+- 工具必须有具体用例支撑(不是 demo,是真实场景)
+- 用例必须指向明确可用的工具(不是概念,是可执行方案)
+
+### 迭代调研
+调研不是一轮结束的。每次评估后,如果发现:
+- 某个维度的信息不足(缺专家评价、缺消费者反馈等)
+- 评估结论不够确定(confidence < 8)
+- 多渠道评价不一致
+
+则必须继续调研,补充缺失维度,直到评估结论可信。
+
+### 时效性硬约束
+当前时间:%current_time%。所有评估必须以此为基准。
+- 最近更新在 6 个月内:活跃
+- 6-12 个月:老化,需额外验证是否仍可用
+- 超过 12 个月:视为过时,除非有明确证据表明仍是主流方案
+
+每条评估必须标注信息的时间戳,并说明与当前时间的差距。
+
+### 评估必须附带理由
+每个评分(recency_score、popularity_score、activity_score、overall_confidence)都必须附带一句话理由,说明为什么给这个分数。不接受无理由的评分。
+
+### 工具知识定义
+调研中发现的每个工具,必须按以下结构记录:
+
+1. **工具名称**:全称 + 常用简称
+2. **优势与劣势**:基于调研的客观评价
+3. **输入与输出格式**:该工具接受什么输入、产出什么输出(文件格式、数据结构)
+4. **时间线记录**:
+   - 工具时间:发布日期或最近一次重大更新时间
+   - 情报时间:发现该工具的帖子/文章/教程的发布时间(用于判断信息新旧)
+5. **使用案例**:真实跑通的场景描述和来源
+6. **工序定位**(如有):该工具在整个生产环节中处于哪一步?和哪些工具配合度高?
+
+调研中积累的工具知识用 save_knowledge 存储时,也遵循此结构。搜索策略可根据需求,在知识库中按此结构检索已有工具评估。
+
+## 工作流程
+
+### 第一步:解析粗工序
+
+**开始前**:先用 search_knowledge 针对"信息渠道"本身进行搜索,随后根据需求选择合适的平台进行调研。
+
+读取 `%input_dir%/pipeline.json`,提取所有阶段,明确每个阶段的技术需求。
+
+**输出** `%output_dir%/research_tasks.json`:
+
+```jsonschema
+{
+  "stages": [
+    {
+      "stage_id": "string",
+      "stage_name": "string",
+      "description": "string",
+      "required_capabilities": ["string — 需要什么工具能力"],
+      "search_keywords": ["string — 搜索关键词"],
+      "search_channels": ["string — 在哪些信息渠道搜索"]
+    }
+  ]
+}
+```
+
+### 第二步:分渠道调研
+
+按 research_tasks.json 中的计划,逐个阶段搜索实现方案。
+
+**交叉验证**:同一工具在多个渠道的评价是否一致?不同来源的反馈是否互相印证?
+从两个维度评估:
+
+**内在标准**:
+- 时间:最近更新时间、项目活跃度
+- 热度:Star 数、下载量、社区讨论量
+
+**外部反馈**:
+- 专家评价:技术博主、开发者的深度评测
+- 大众评价:社区讨论、Issue 反馈
+- 消费者视角:实际使用者的避坑指南、生产环境反馈
+
+通过多个帖子/不同渠道对同一工具的评价,形成交叉验证。
+**实时输出** `%output_dir%/research_findings.json`:
+
+```jsonschema
+{
+  "findings": [
+    {
+      "stage_id": "string",
+//问题:多个tool,对比验证
+      "tool": {
+        "name": "string — 工具全称 + 简称",
+        "version": "string",
+        "repo_or_url": "string",
+        "input_format": "string — 接受什么输入(文件格式/数据结构)",
+        "output_format": "string — 产出什么输出(文件格式/数据结构)",
+        "last_update": "string — 工具时间:发布日期或最近重大更新时间",
+        "freshness": "active | aging | outdated — 基于 %current_time% 判断:6个月内=active,6-12个月=aging,超12个月=outdated",
+        "intel_time": "string — 情报时间:发现该工具的帖子/文章的发布时间",
+        "popularity": {
+          "stars": "number",
+          "downloads": "string",
+          "community_activity": "high | medium | low"
+        },
+        "capabilities": ["string"],
+        "limitations": ["string"],
+        "pipeline_position": "string — 该工具在生产环节中处于哪一步(如有)",
+        "compatible_tools": ["string — 配合度高的工具(如有)"]
+      },
+      "use_cases": [
+        {
+          "description": "string — 具体用例描述",
+          "source_url": "string",
+          "similarity": "high | medium | low — 与当前阶段的相似度"
+        }
+      ],
+      "evaluations": {
+        "internal": {
+          "recency_score": "number — 1-10",
+          "recency_reason": "string — 评分理由,必须包含具体时间与 %current_time% 的差距",
+          "popularity_score": "number — 1-10",
+          "popularity_reason": "string — 评分理由,引用具体数据",
+          "activity_score": "number — 1-10",
+          "activity_reason": "string — 评分理由,引用具体数据"
+        },
+        "external": {
+          "expert_reviews": [
+            {
+              "source": "string — 来源",
+              "summary": "string — 评价摘要",
+              "sentiment": "positive | neutral | negative"
+            }
+          ],
+          "community_feedback": [
+            {
+              "source": "string — 来源渠道",
+              "summary": "string — 反馈摘要",
+              "sentiment": "positive | neutral | negative"
+            }
+          ],
+          "user_experience": [
+            {
+              "source": "string — 来源",
+              "summary": "string — 实际使用经验",
+              "pain_points": ["string — 痛点"]
+            }
+          ]
+        },
+        "cross_validation": {
+          "consistency": "high | medium | low — 不同渠道评价的一致性",
+          "evidence": "string — 交叉验证依据"
+        }
+      },
+      "overall_confidence": "number — 1-10",
+      "confidence_reason": "string — 综合可信度理由,说明哪些维度支撑、哪些维度不足",
+      "pros": ["string"],
+      "cons": ["string"]
+    }
+  ]
+}
+```
+
+### 第三步:方案评估与选定
+
+汇总所有调研结果,为每个阶段选定最佳实现方案。
+
+选定标准:
+1. 综合可信度(overall_confidence)≥ 8 优先
+2. 与阶段 required_spec 的匹配度
+3. 工具可用性和稳定性
+4. 外部反馈的一致性
+
+**输出** `%output_dir%/implementation_plan.json`:
+
+```jsonschema
+{
+  "stages": [
+    {
+      "stage_id": "string",
+      "stage_name": "string",
+      "selected_approach": {
+        "tool": "string — 选定工具",
+        "version": "string",
+        "use_case_refs": ["string — 参考用例来源"],
+        "implementation_outline": "string — 实现思路概要",
+        "confidence": "number — 1-10",
+        "reasoning": "string — 为什么选这个方案"
+      },
+      "alternatives": [
+        {
+          "tool": "string",
+          "why_not": "string",
+          "could_switch_if": "string"
+        }
+      ],
+      "risks": [
+        {
+          "risk": "string",
+          "severity": "high | medium | low",
+          "mitigation": "string"
+        }
+      ],
+      "unresolved": ["string — 未能验证的问题,需人工确认"]
+    }
+  ],
+  "overall_assessment": {
+    "pipeline_feasibility": "high | medium | low",
+    "weak_points": ["string — 整体方案中的薄弱环节"],
+    "dependencies": ["string — 需要的依赖或前置条件"]
+  }
+}
+```
+
+## 注意事项
+
+- 每个阶段至少从 3 个不同渠道搜索信息
+- 优先使用 search_knowledge,减少重复调研
+- 调研中发现的通用工具知识用 save_knowledge 存储
+- 登陆时,或不确定时联系关涛(feishu)
+- search_posts 不好用时改用 browser-use
 
 $user$
-你能不能用browser_use打开豆包,并且使用豆包搜索一下最新的图生成方案?遇到问题可以联系关涛(如果要扫码登录可以把截图发给他)
+输入目录:%input_dir%
+输出目录:%output_dir%
+
+请读取 %input_dir%/pipeline.json,为每个粗工序阶段调研实现方案:
+1. 解析粗工序,明确每个阶段的技术需求和搜索计划
+2. 分渠道搜索,从内在标准(时间、热度)和外部反馈(专家、大众、消费者)两个维度评估
+3. 通过多渠道对同一工具的评价进行交叉验证
+4. 汇总评估,为每个阶段选定可信度高的实现方案
+5. 如果某阶段 confidence < 8 或信息维度不全,继续迭代调研直到可信
+
+超过 6 个月未更新的工具视为老化,超过 12 个月视为过时。每条评分必须附带理由。
+

+ 15 - 5
examples/research/run.py

@@ -36,13 +36,13 @@ from agent.trace import (
     Trace,
     Message,
 )
-from agent.llm import create_openrouter_llm_call
+from agent.llm import create_qwen_llm_call
 from agent.cli import InteractiveController
 from agent.utils import setup_logging
 from agent.tools.builtin.browser.baseClass import init_browser_session, kill_browser_session
 
 # 导入项目配置
-from config import RUN_CONFIG, SKILLS_DIR, TRACE_STORE_PATH, DEBUG, LOG_LEVEL, LOG_FILE, BROWSER_TYPE, HEADLESS
+from config import RUN_CONFIG, SKILLS_DIR, TRACE_STORE_PATH, DEBUG, LOG_LEVEL, LOG_FILE, BROWSER_TYPE, HEADLESS, INPUT_DIR, OUTPUT_DIR
 
 
 async def main():
@@ -81,7 +81,9 @@ async def main():
 
     # 4. 构建任务消息
     print("4. 构建任务消息...")
-    messages = prompt.build_messages()
+    print(f"   - 输入目录: {INPUT_DIR}")
+    print(f"   - 输出 ID: {OUTPUT_DIR}")
+    messages = prompt.build_messages(input_dir=INPUT_DIR, output_dir=OUTPUT_DIR)
 
     # 5. 初始化浏览器
     import platform
@@ -102,12 +104,20 @@ async def main():
     # 6. 创建 Agent Runner
     print("6. 创建 Agent Runner...")
     print(f"   - Skills 目录: {SKILLS_DIR}")
-    print(f"   - 模型: {RUN_CONFIG.model}")
+
+    # 从 prompt 的 frontmatter 中提取模型配置(优先于 config.py)
+    prompt_model = prompt.config.get("model", None)
+    if prompt_model:
+        model_for_llm = prompt_model
+        print(f"   - 模型 (from prompt): {model_for_llm}")
+    else:
+        model_for_llm = RUN_CONFIG.model
+        print(f"   - 模型 (from config): {model_for_llm}")
 
     store = FileSystemTraceStore(base_path=TRACE_STORE_PATH)
     runner = AgentRunner(
         trace_store=store,
-        llm_call=create_openrouter_llm_call(model=f"anthropic/{RUN_CONFIG.model}"),
+        llm_call=create_qwen_llm_call(model=model_for_llm),
         skills_dir=SKILLS_DIR,
         debug=DEBUG
     )