Преглед изворни кода

add try_fix_json in runner

guantao пре 11 часа
родитељ
комит
ea3d856eaf

+ 96 - 1
agent/core/runner.py

@@ -892,6 +892,82 @@ class AgentRunner:
 
         return summary_text
 
+    @staticmethod
+    def _try_fix_json(s: str) -> Optional[dict]:
+        """尝试修复常见的 JSON 截断/格式问题,返回 dict 或 None"""
+        import re
+
+        fixed = s.strip()
+
+        # 1. 修复值中未转义的引号(如 "key": "he said "hello" to me")
+        # 策略:找到 key-value 模式中值字符串内部的裸引号并转义
+        def _fix_inner_quotes(text: str) -> str:
+            # 匹配 ": "..." 模式,修复值内部的未转义引号
+            result = []
+            i = 0
+            while i < len(text):
+                # 找到 ": " 后面的值字符串开头
+                if text[i] == '"':
+                    # 找到这个引号对应的字符串结束位置
+                    j = i + 1
+                    while j < len(text):
+                        if text[j] == '\\':
+                            j += 2  # 跳过转义字符
+                            continue
+                        if text[j] == '"':
+                            break
+                        j += 1
+                    # 检查引号后面是否是合法的 JSON 分隔符
+                    if j < len(text):
+                        after = j + 1
+                        # 跳过空白
+                        while after < len(text) and text[after] in ' \t\n\r':
+                            after += 1
+                        if after < len(text) and text[after] not in ':,}]\n\r':
+                            # 这个引号不是真正的结束引号,继续往后找
+                            # 找到下一个后面跟合法分隔符的引号
+                            k = j + 1
+                            found_end = False
+                            while k < len(text):
+                                if text[k] == '"':
+                                    peek = k + 1
+                                    while peek < len(text) and text[peek] in ' \t\n\r':
+                                        peek += 1
+                                    if peek >= len(text) or text[peek] in ':,}]':
+                                        # 这才是真正的结束引号,转义中间的引号
+                                        inner = text[i+1:k].replace('"', '\\"')
+                                        result.append('"' + inner + '"')
+                                        i = k + 1
+                                        found_end = True
+                                        break
+                                k += 1
+                            if found_end:
+                                continue
+                result.append(text[i])
+                i += 1
+            return ''.join(result)
+
+        fixed = _fix_inner_quotes(fixed)
+
+        # 2. 去掉尾部多余逗号
+        fixed = re.sub(r',\s*([}\]])', r'\1', fixed)
+
+        # 3. 尝试补全截断的字符串和括号
+        for suffix in ['', '"', '"}', '"]', '"}]', '"}}']:
+            try:
+                attempt = fixed + suffix
+                open_braces = attempt.count('{') - attempt.count('}')
+                open_brackets = attempt.count('[') - attempt.count(']')
+                attempt += '}' * max(0, open_braces) + ']' * max(0, open_brackets)
+                result = json.loads(attempt)
+                if isinstance(result, dict):
+                    logger.info(f"[JSON Fix] 成功修复 JSON (suffix={repr(suffix)})")
+                    return result
+            except json.JSONDecodeError:
+                continue
+
+        return None
+
     async def _agent_loop(
         self,
         trace: Trace,
@@ -1339,7 +1415,26 @@ class AgentRunner:
                     tool_args = tc["function"]["arguments"]
 
                     if isinstance(tool_args, str):
-                        tool_args = json.loads(tool_args) if tool_args.strip() else {}
+                        if not tool_args.strip():
+                            tool_args = {}
+                        else:
+                            try:
+                                tool_args = json.loads(tool_args)
+                            except json.JSONDecodeError:
+                                # 尝试修复常见的截断/格式问题
+                                tool_args = self._try_fix_json(tool_args)
+                                if tool_args is None:
+                                    logger.warning(f"[Tool Call] JSON 解析失败,跳过工具调用 {tool_name}: {tc['function']['arguments'][:200]}")
+                                    history.append({
+                                        "role": "tool",
+                                        "tool_call_id": tc["id"],
+                                        "content": f"Error: 工具参数 JSON 格式错误,无法解析。请重新生成正确的 JSON 参数调用此工具。原始参数: {tc['function']['arguments'][:200]}",
+                                    })
+                                    yield Message(role="tool", content={
+                                        "tool_name": tool_name,
+                                        "error": "JSON 参数解析失败",
+                                    }, description="工具参数 JSON 格式错误")
+                                    continue
                     elif tool_args is None:
                         tool_args = {}
 

+ 111 - 3
agent/llm/qwen.py

@@ -46,8 +46,8 @@ def create_qwen_llm_call(
         messages: List[Dict[str, Any]],
         model: str = model,
         tools: Optional[List[Dict]] = None,
-        temperature: float = 0.7,
-        max_tokens: int = 4096,
+        temperature: float = 0.2,
+        max_tokens: int = 16384,
         **kwargs
     ) -> Dict[str, Any]:
         
@@ -95,4 +95,112 @@ def create_qwen_llm_call(
             logger.error(f"Qwen SDK Call Failed: {str(e)}")
             raise
 
-    return llm_call
+    return llm_call
+
+
+async def qwen_llm_call(
+    messages: List[Dict[str, Any]],
+    model: str = DEFAULT_QWEN_MODEL,
+    tools: Optional[List[Dict]] = None,
+    **kwargs
+) -> Dict[str, Any]:
+    """
+    Qwen LLM 调用函数(独立函数,可直接使用)
+
+    Args:
+        messages: OpenAI 格式消息列表
+        model: 模型名称(如 "qwen-plus", "qwen-turbo", "qwen-max")
+        tools: OpenAI 格式工具定义
+        **kwargs: 其他参数(temperature, max_tokens 等)
+
+    Returns:
+        {
+            "content": str,
+            "tool_calls": List[Dict] | None,
+            "prompt_tokens": int,
+            "completion_tokens": int,
+            "reasoning_tokens": int,
+            "cache_creation_tokens": int,
+            "cache_read_tokens": int,
+            "finish_reason": str,
+            "cost": float,
+            "usage": TokenUsage,
+        }
+    """
+    import asyncio
+    from .pricing import calculate_cost
+
+    api_key = os.getenv("QWEN_API_KEY")
+    if not api_key:
+        raise ValueError("QWEN_API_KEY environment variable not set")
+
+    base_url = os.getenv("QWEN_BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1")
+    client = AsyncOpenAI(api_key=api_key, base_url=base_url)
+
+    # 构建请求参数
+    create_kwargs = {
+        "model": model,
+        "messages": messages,
+    }
+    if tools:
+        create_kwargs["tools"] = tools
+    if "temperature" in kwargs:
+        create_kwargs["temperature"] = kwargs["temperature"]
+    if "max_tokens" in kwargs:
+        create_kwargs["max_tokens"] = kwargs["max_tokens"]
+
+    # 带重试的调用
+    max_retries = 3
+    last_exception = None
+    for attempt in range(max_retries):
+        try:
+            response = await client.chat.completions.create(**create_kwargs)
+            break
+        except (ConnectionError, TimeoutError, OSError) as e:
+            last_exception = e
+            if attempt < max_retries - 1:
+                wait = 2 ** attempt * 2
+                logger.warning(
+                    "[Qwen] %s (attempt %d/%d), retrying in %ds",
+                    type(e).__name__, attempt + 1, max_retries, wait,
+                )
+                await asyncio.sleep(wait)
+                continue
+            logger.error("[Qwen] Request failed after %d attempts: %s", max_retries, e)
+            raise
+        except Exception as e:
+            logger.error("[Qwen] Request failed: %s", e)
+            raise
+    else:
+        raise last_exception  # type: ignore[misc]
+
+    # 解析响应
+    choice = response.choices[0]
+    content = choice.message.content or ""
+    finish_reason = choice.finish_reason
+
+    # tool_calls: Pydantic 对象转 dict
+    tool_calls = None
+    if choice.message.tool_calls:
+        tool_calls = [tc.model_dump() for tc in choice.message.tool_calls]
+
+    # 解析 usage
+    usage = TokenUsage(
+        input_tokens=response.usage.prompt_tokens,
+        output_tokens=response.usage.completion_tokens,
+    )
+
+    cost = calculate_cost(model, usage)
+
+    return {
+        "content": content,
+        "tool_calls": tool_calls,
+        "prompt_tokens": usage.input_tokens,
+        "completion_tokens": usage.output_tokens,
+        "reasoning_tokens": getattr(response.usage, "reasoning_tokens", 0) or 0,
+        "cache_creation_tokens": 0,
+        "cache_read_tokens": 0,
+        "finish_reason": finish_reason,
+        "cost": cost,
+        "usage": usage,
+    }

+ 2 - 2
agent/tools/builtin/browser/baseClass.py

@@ -57,7 +57,7 @@ from pathlib import Path
 from langchain_core.runnables import RunnableLambda
 from argparse import Namespace # 使用 Namespace 快速构造带属性的对象
 from langchain_core.messages import AIMessage
-from ....llm.openrouter import openrouter_llm_call
+from ....llm.qwen import qwen_llm_call
 
 # 将项目根目录添加到 Python 路径
 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
@@ -1391,7 +1391,7 @@ async def extraction_adapter(input_data):
     else:
         prompt = str(input_data)
     
-    response = await openrouter_llm_call(
+    response = await qwen_llm_call(
         messages=[{"role": "user", "content": prompt}]
     )
     

+ 0 - 0
examples/plan/aliduoduo/description/创作表.md


+ 68 - 0
examples/plan/aliduoduo/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/plan/aliduoduo/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/plan/aliduoduo/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/plan/aliduoduo/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/plan/aliduoduo/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
+              }
+            }
+          }
+        ]
+      }
+    ]
+  }
+]

+ 68 - 0
examples/plan/aliduoduo/index.md

@@ -0,0 +1,68 @@
+# 阿里多多酱 — 内容还原素材索引
+
+> 本目录包含一组猫咪表情包帖子的解构数据,用于驱动 AI 还原出与原帖视觉一致的图片。
+> 还原思路:先理解制作亮点和制作点(做什么),再深入制作表(怎么做)。
+
+---
+
+## 目录结构
+
+```
+aliduoduo/
+└── descriptions/
+    ├── 制作亮点.md              # ★ 最重要 — 5 组视觉亮点聚类,定义还原优先级
+    ├── 制作点.md                # ★ 最重要 — 5 个核心制作元素及权重排序
+    ├── 创作表.md                # 原帖创作视角描述(当前为空)
+    ├── 阿里多多酱__img_1_制作表.json  # img_1 详细制作表(芒果主题)
+    ├── 阿里多多酱__img_2_制作表.json  # img_2 详细制作表(榴莲主题)
+    └── 阿里多多酱__img_3_制作表.json  # img_3 详细制作表(菠萝主题)
+```
+
+当前无 features/ 目录(无多模态特征素材)。
+
+---
+
+## 第一层:制作亮点与制作点(还原优先级)
+
+### 制作亮点(`descriptions/制作亮点.md`)
+
+5 组视觉亮点聚类,分为实质亮点和形式亮点:
+
+| 亮点聚类                 | 类型 | 核心描述                                     |
+| ------------------------ | ---- | -------------------------------------------- |
+| 极具反差的猫咪神态       | 实质 | 上方张嘴抗拒 vs 下方乖巧期待,拟人化情绪表演 |
+| 加工前后的水果形态对比   | 实质 | 带皮完整状态 vs 去皮切好状态,态度转变的诱因 |
+| 带壳与去壳的海鲜形态对比 | 实质 | 带壳整虾 vs 去壳虾仁,特定于 img_5           |
+| 拟人化的卡通手势贴纸     | 实质 | 黄色 Emoji 手势替代猫咪前肢,演绎拒绝与索要  |
+| 纵向二分的对比叙事构图   | 形式 | Meme 经典垂直双分栏,拒绝 vs 接受的二元对立  |
+| 跨次元的拼贴视觉风格     | 形式 | 写实摄影素材与扁平卡通符号的混搭拼贴         |
+
+### 制作点(`descriptions/制作点.md`)
+
+按权重排序的 5 个核心制作元素:
+
+| 制作元素 | 权重 | 说明                                 |
+| -------- | ---- | ------------------------------------ |
+| 拒绝猫咪 | 95.5 | 白橘猫,张嘴闭眼,夸张抗拒表情       |
+| 喜爱猫咪 | 95.5 | 白橘猫,鼓腮睁眼,温顺期待表情       |
+| 拒绝手势 | 92.5 | 黄色卡通手势,拇指食指伸出,表示拒绝 |
+| 喜爱手势 | 92.5 | 黄色卡通手掌,掌心向上,表示接受     |
+| 手       | 88.0 | 肤色白皙的手,掌心向上,托举物品姿态 |
+
+---
+
+## 第二层:制作表(还原的详细蓝图)
+
+每张图有一个 JSON 制作表,包含:
+
+- 上下两部分的分层段落结构(拒绝场景 / 喜爱场景)
+- 每个元素的形式参数(图像拼接、布局、色彩等)
+- 每个层级的综合评分
+
+### 3 张图概览
+
+| 图片  | 主题食物 | 核心结构                                      |
+| ----- | -------- | --------------------------------------------- |
+| img_1 | 芒果     | 上:带皮芒果+拒绝猫咪 / 下:切好芒果+喜爱猫咪 |
+| img_2 | 榴莲     | 上:带壳榴莲+拒绝猫咪 / 下:榴莲果肉+喜爱猫咪 |
+| img_3 | 菠萝     | 上:带皮菠萝+拒绝猫咪 / 下:切好菠萝+喜爱猫咪 |

+ 7 - 1
examples/plan/config.py

@@ -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=["strategy", "tool"],  # 默认搜索类型过滤
+        default_search_types=["strategy", "tool","plan"],  # 默认搜索类型过滤
         default_search_owner=""  # 默认搜索 owner 过滤(空则不过滤)
     )
 )
 
 
+# ===== 任务配置 =====
+
+INPUT_DIR = "examples/plan/xiaocong"       # 输入素材目录
+OUTPUT_ID = "output_cong"                   # 输出目录 ID,输出保存在 examples/plan/outputs/{OUTPUT_ID}/
+
+
 # ===== 基础设施配置 =====
 
 SKILLS_DIR = "./skills"

+ 35 - 18
examples/plan/research.prompt

@@ -8,6 +8,10 @@ $system$
 
 **你不需要关心具体的实现细节**(如工具参数、模型权重等),只需要确定还原的整体策略和粗工序。
 
+**变量说明**:
+- `%input_dir%`:输入素材目录路径
+- `%output_id%`:输出目录 ID,输出文件保存在 `examples/plan/outputs/%output_id%/` 下
+
 ## 核心概念
 
 ### 还原策略
@@ -18,7 +22,7 @@ $system$
 
 ## 输出要求
 
-所有输出文件必须保存在 `examples/plan/output/` 目录下。
+所有输出文件必须保存在 `examples/plan/outputs/%output_id%/` 目录下。
 每个阶段都要产出过程文件。
 
 ## 工作流程
@@ -26,30 +30,35 @@ $system$
 ### 第一步:需求分析(轻量读取,聚焦于"还原什么")
 
 只需要读取少量核心文件,理解还原需求:
-- `examples/input/index.md`(导航概览)
-- `examples/input/descriptions/图片亮点.md`(核心亮点聚类)
-- `examples/input/descriptions/制作点.md`(核心制作元素及权重)
-- `examples/input/descriptions/创作表.md` (创作视角描述)
+- `%input_dir%/index.md`(导航概览)
+- `%input_dir%/descriptions/制作亮点.md`(核心亮点聚类)
+- `%input_dir%/descriptions/制作点.md`(核心制作元素及权重)
+- `%input_dir%/descriptions/创作表.md`(创作视角描述,如果存在)
 
 这一步的目标不是理解所有素材细节,而是搞清楚:**需要在哪些角度精准还原,哪些地方不能出错。**
 
-**输出** `examples/plan/output/analysis.json`:
+**输出** `examples/plan/outputs/%output_id%/analysis.json`:
+
+1. **内容品类判断**:
+   - 总结这组图属于什么品类(如:户外人像写真、产品展示、美食摄影、室内场景、插画风格等)
+   - 品类的典型特征是什么(如人像写真的核心是人物一致性+光影氛围,产品展示的核心是材质还原+角度变化)
+   - 这个品类在 AI 还原中通常面临哪些共性挑战
+   - 品类判断将作为后续搜索策略的重要维度——不同品类可能适配不同的还原策略
 
-1. **上限点(内容角度的精准还原目标)**:
+2. **上限点(内容角度的精准还原目标)**:
    - 直接来自图片亮点中的核心亮点聚类
    - 这些是内容层面必须高度还原的特征(如画中画结构、Impasto 质感、白绿配色等)
    - 注意:上限点虽然是内容上的重点,但不一定技术上最难——有些可能很容易还原
 
-2. **下限点(你自己总结的底线要求)**:
+3. **下限点(你自己总结的底线要求)**:
    这部分不在已有文件中,需要你基于对内容的理解自行总结。下限点是那些:
    - 如果做不好,会让整组图"一眼假"或"一眼 AI"的特征
    - 例如:人物跨图一致性(不同角度是否像同一个人)、手部/手指的真实性、衣物褶皱的自然度、道具的空间透视关系、光影的物理合理性等
    - **下限点往往是技术上最难、最需要重点攻克的部分**
    - 对每个下限点,说明为什么它重要、做不好会怎样
 
-3. **需求总结**:
-   - 将上限点和下限点整合为一份还原需求清单
-   - 标注优先级:哪些是"必须做到"、哪些是"尽量做到"
+4. **需求总结**:
+   - 将品类特征、上限点和下限点整合为一份还原需求清单
 
 **每一条结论都要附带推理过程。**
 
@@ -59,6 +68,8 @@ $system$
 
 带着第一步的需求,去搜索可行的还原策略。核心问题是:**什么样的策略能同时满足上限点和下限点的要求?**
 
+//根据需求,生成出的query词的理由,以及预期目标。然后拿结果与预期目标做一次对比评估
+
 **策略搜索顺序(优先级从高到低)**:
 
 1. **优先:搜索知识库**:
@@ -83,13 +94,16 @@ $system$
 - 它依赖什么工具能力(当前是否可用)
 - 它能否满足第一步中的上限点和下限点
 - 优点、局限性、风险
+- 是否与预期目标是一致的(避免被调研结果带偏)
 
-**实时输出**到 `examples/plan/output/research.json`。
+**实时输出**到 `examples/plan/outputs/%output_id%/research.json`。
 
 **调研中途检查**:每完成一轮搜索,重新读取 analysis.json,检查策略是否能覆盖需求。
 
 最终选定一个策略(或策略组合),说明选择理由。
 
+//是否评估,是否评估准确
+
 ### 第三步:实例化粗工序(精细读取素材)
 
 **开始前**:重新读取 analysis.json 和 research.json。
@@ -98,7 +112,7 @@ $system$
 
 目标是将策略实例化:手头有哪些素材可以直接用、策略中的每一步对应到具体的图和特征上。
 
-**输出粗工序**到 `examples/plan/output/pipeline.json`:
+**输出粗工序**到 `examples/plan/outputs/%output_id%/pipeline.json`:
 ```json
 {
   "selected_strategy": {
@@ -129,18 +143,21 @@ $system$
 
 ### 第四步:生成 HTML 报告
 
-运行已有的 `examples/plan/output/generate_report.py`(如果存在且适配),或编写一个新的,读取 JSON 文件生成 `restoration_plan.html`。
+运行已有的 `examples/plan/outputs/%output_id%/generate_report.py`(如果存在且适配),或编写一个新的,读取 JSON 文件生成 `restoration_plan.html`。
 
 ## 注意事项
-- `input/index.md` 是你的导航入口
-- `input/features/` 下按维度组织了特征目录,每个目录有 mapping.json
-- 所有输出必须在 `examples/plan/output/` 目录下
+- `%input_dir%/index.md` 是你的导航入口
+- 如果存在 `%input_dir%/features/`,其下按维度组织了特征目录,每个目录有 mapping.json
+- 所有输出必须在 `examples/plan/outputs/%output_id%/` 目录下
 - analysis.json 是指导性文件,后续每个阶段开始前都要重新读取
 - 遇到不确定的地方,优先调研,其次请求人工协助(feishu 联系孙若天)
 - 保存结论性知识:对于调研中得出的通用性策略知识,使用 save_knowledge 工具存储
 
 $user$
-请开始对 input/ 中的图文帖子内容制定还原的粗工序。
+输入目录:%input_dir%
+输出ID:%output_id%
+
+请开始对 %input_dir% 中的图文帖子内容制定还原的粗工序。
 
 1. 先读取图片亮点和制作点,分析还原需求(上限点+自己总结的下限点),输出 analysis.json
 2. 带着需求去搜索还原策略(工作流、工具能力、知识库),评估并选定策略,输出 research.json(输出策略时,要列举该策略的来源:knowledge_id,网页,帖子)

+ 4 - 2
examples/plan/run.py

@@ -42,7 +42,7 @@ 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_ID
 
 
 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_ID}")
+    messages = prompt.build_messages(input_dir=INPUT_DIR, output_id=OUTPUT_ID)
 
     # 5. 初始化浏览器
     import platform

+ 32 - 0
examples/plan/xiaocong/descriptions/制作亮点.md

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

+ 37 - 0
examples/plan/xiaocong/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/plan/xiaocong/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/plan/xiaocong/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/plan/xiaocong/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/plan/xiaocong/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
+              }
+            }
+          }
+        ]
+      }
+    ]
+  }
+]

+ 66 - 0
examples/plan/xiaocong/index.md

@@ -0,0 +1,66 @@
+# 小葱白工 — 内容还原素材索引
+
+> 本目录包含一组 AI 知识科普笔记风格海报的解构数据,用于驱动 AI 还原出与原帖视觉一致的图片。
+> 还原思路:先理解制作亮点和制作点(做什么),再深入制作表(怎么做)。
+
+---
+
+## 目录结构
+
+```
+xiaocong/descriptions
+├── 制作亮点.md              # ★ 最重要 — 6 组视觉亮点聚类,定义还原优先级
+├── 制作点.md                # ★ 最重要 — 3 个核心制作元素及权重排序
+├── 小葱__img_1_制作表.json  # img_1 详细制作表
+├── 小葱__img_2_制作表.json  # img_2 详细制作表
+├── 小葱__img_3_制作表.json  # img_3 详细制作表
+└── 小葱__img_4_制作表.json  # img_4 详细制作表
+```
+
+当前无 features/ 目录(无多模态特征素材)。
+
+---
+
+## 第一层:制作亮点与制作点(还原优先级)
+
+### 制作亮点(`descriptions/制作亮点.md`)
+
+6 组视觉亮点聚类,分为实质亮点和形式亮点:
+
+| 亮点聚类             | 类型 | 核心描述                                             |
+| -------------------- | ---- | ---------------------------------------------------- |
+| 拟真纸张与笔记本实体 | 实质 | 带褶皱纹理的信纸和螺旋活页笔记本,真实触感的书写介质 |
+| 手绘装饰与卡通图标   | 实质 | 星星、花朵、笑脸等手绘涂鸦,中和科技主题的枯燥感     |
+| 知识可视化图表       | 实质 | 数据转化图表,将抽象算法逻辑具象化为可视矩阵         |
+| 拟物化笔记场景呈现   | 形式 | 模仿实体螺旋笔记本的构图框架、边缘纹理和阴影         |
+| 结构化排版与导视     | 形式 | 居中堆叠、虚线分隔、层级列表,严谨清晰的视觉秩序     |
+| 语义化色彩高亮       | 形式 | 模拟学生笔记的荧光笔触和彩色字体,建立信息层级       |
+
+### 制作点(`descriptions/制作点.md`)
+
+按权重排序的 3 个核心制作元素:
+
+| 制作元素     | 权重 | 说明                                       |
+| ------------ | ---- | ------------------------------------------ |
+| 核心英文单词 | 87.3 | 页面中心的大号英文单词,位于彩色背景块上   |
+| 背景         | 59.2 | 带横线的笔记本纸张纹理,虚线边框,笔记风格 |
+| 回形针装饰   | 48.7 | 页面边缘的蓝色回形针形状装饰,具有立体感   |
+
+---
+
+## 第二层:制作表(还原的详细蓝图)
+
+每张图有一个 JSON 制作表,包含:
+
+- 分层段落结构(背景 → 标题区 → 内容区 → 装饰元素)
+- 每个元素的形式参数(背景纹理、文字颜色、字体、排版布局等)
+- 每个层级的综合评分
+
+### 4 张图概览
+
+| 图片  | 核心内容             | 主要特点                                   |
+| ----- | -------------------- | ------------------------------------------ |
+| img_1 | Embedding 概念介绍   | 笔记本纸张背景 + 励志语录 + 日期标注       |
+| img_2 | Embedding 详细解释   | 螺旋笔记本框架 + 回形针装饰 + 结构化排版   |
+| img_3 | Embedding 应用场景   | 螺旋笔记本框架 + 手绘装饰 + 语义色彩高亮   |
+| img_4 | Embedding 可视化图表 | 螺旋笔记本框架 + 知识可视化矩阵 + 彩色标注 |