Explorar o código

update examples/production_restore

guantao hai 1 mes
pai
achega
fca09ed871
Modificáronse 34 ficheiros con 236 adicións e 413 borrados
  1. 3 13
      agent/tools/builtin/knowledge.py
  2. 2 2
      agent/tools/builtin/librarian.py
  3. 1 1
      examples/production_restore/config.py
  4. 11 9
      examples/production_restore/execution.prompt
  5. 0 100
      examples/production_restore/input/analysis.json
  6. 0 194
      examples/production_restore/input/pipeline.json
  7. 0 44
      examples/production_restore/input/strategy.json
  8. 0 0
      examples/production_restore/input/写生油画__img_1_制作表.json
  9. 0 0
      examples/production_restore/input/写生油画__img_2_制作表.json
  10. 0 0
      examples/production_restore/input/写生油画__img_3_制作表.json
  11. 0 0
      examples/production_restore/input/写生油画__img_4_制作表.json
  12. 0 0
      examples/production_restore/input/写生油画__img_5_制作表.json
  13. 0 0
      examples/production_restore/input/创作表.md
  14. 0 0
      examples/production_restore/input/制作点.md
  15. 0 0
      examples/production_restore/input/图片亮点.md
  16. 3 3
      examples/production_restore/presets.json
  17. 216 47
      examples/production_restore/requirement.prompt
  18. BIN=BIN
      outputs/48d6bd7b-699/nano_banana_1775894285972_0.jpg
  19. BIN=BIN
      outputs/48d6bd7b-699/nano_banana_1775894577594_0.jpg
  20. BIN=BIN
      outputs/48d6bd7b-699/nano_banana_1775894852970_0.jpg
  21. BIN=BIN
      outputs/48d6bd7b-699/nano_banana_1775895148729_0.jpg
  22. BIN=BIN
      outputs/48d6bd7b-699/nano_banana_1775895453740_0.jpg
  23. BIN=BIN
      outputs/48d6bd7b-699/nano_banana_1775895803885_0.jpg
  24. BIN=BIN
      outputs/48d6bd7b-699/nano_banana_1775896094781_0.jpg
  25. BIN=BIN
      outputs/5fd2db93-5ac/nano_banana_1775926086639_0.jpg
  26. BIN=BIN
      outputs/5fd2db93-5ac/nano_banana_1775926336258_0.jpg
  27. BIN=BIN
      outputs/5fd2db93-5ac/nano_banana_1775926561018_0.jpg
  28. BIN=BIN
      outputs/5fd2db93-5ac/nano_banana_1775927016941_0.jpg
  29. BIN=BIN
      outputs/5fd2db93-5ac/nano_banana_1775927415643_0.jpg
  30. BIN=BIN
      outputs/b7191706-5dc/nano_banana_1775929219620_0.jpg
  31. BIN=BIN
      outputs/b7191706-5dc/nano_banana_1775929481610_0.jpg
  32. BIN=BIN
      outputs/b7191706-5dc/nano_banana_1775929804307_0.jpg
  33. BIN=BIN
      outputs/b7191706-5dc/nano_banana_1775930114003_0.jpg
  34. BIN=BIN
      outputs/b7191706-5dc/nano_banana_1775930416393_0.jpg

+ 3 - 13
agent/tools/builtin/knowledge.py

@@ -1,16 +1,9 @@
 """
 知识管理工具 - KnowHub API 封装
 
-⚠️ DEPRECATED: 这些工具直接调用 KnowHub HTTP API,绕过 Knowledge Manager。
-推荐使用新架构:
-- knowledge_search → ask_knowledge (通过 IM 与 Knowledge Manager 交互)
-- knowledge_save → upload_knowledge (通过 IM 与 Knowledge Manager 交互)
-
-新架构优势:
-1. 统一通过 Knowledge Manager 管理知识
-2. 自动去重和整合
-3. 支持增量上传和批量提交
-4. 更好的并发控制
+提供两种知识操作方式:
+- knowledge_search: 直接调用 KnowHub HTTP API 检索知识(两阶段:语义路由 + 质量精排)
+- knowledge_save: 直接调用 KnowHub HTTP API 保存知识
 
 所有工具通过 HTTP API 调用 KnowHub Server。
 """
@@ -113,8 +106,6 @@ async def knowledge_search(
     """
     检索知识(两阶段:语义路由 + 质量精排)
 
-    ⚠️ DEPRECATED: 推荐使用 ask_knowledge 工具(通过 Knowledge Manager)
-
     Args:
         query: 搜索查询(任务描述)
         top_k: 返回数量(默认 5)
@@ -126,7 +117,6 @@ async def knowledge_search(
     Returns:
         相关知识列表
     """
-    logger.warning("knowledge_search is deprecated. Use ask_knowledge instead.")
     try:
         params = {
             "q": query,

+ 2 - 2
agent/tools/builtin/librarian.py

@@ -17,7 +17,7 @@ from agent.tools import tool, ToolResult, ToolContext
 
 logger = logging.getLogger(__name__)
 
-KNOWHUB_API = os.getenv("KNOWHUB_API", "http://localhost:8000").rstrip("/")
+KNOWHUB_API = os.getenv("KNOWHUB_API", "http://localhost:9999").rstrip("/")
 
 
 @tool(
@@ -46,7 +46,7 @@ async def ask_knowledge(
         整合回答 + source_ids + 各 source 摘要
     """
     try:
-        async with httpx.AsyncClient(timeout=60.0) as client:
+        async with httpx.AsyncClient(timeout=300.0) as client:
             response = await client.post(
                 f"{KNOWHUB_API}/api/knowledge/ask",
                 json={

+ 1 - 1
examples/production_restore/config.py

@@ -50,7 +50,7 @@ RUN_CONFIG = RunConfig(
 # ===== 任务配置 =====
 
 INPUT_DIR = "examples/production_restore/input"       # 输入目录(pipeline.json、analysis.json 等)
-OUTPUT_DIR = "examples/production_restore/output_feature"     # 输出目录
+OUTPUT_DIR = "examples/production_restore/output_origin"     # 输出目录
 FEATURES_DIR = "examples/production_restore/features"         # 素材目录
 
 

+ 11 - 9
examples/production_restore/execution.prompt

@@ -18,17 +18,17 @@ $system$
 - Prompt 文本
 - 图生图配置(img2img_config)
 
-**参考源信息(raw_info 目录)**:
-在输入目录中有一个 `raw_info/` 文件夹,包含原始图片的源信息:
-- 每张图的制作表:`raw_info/写生油画__img_X_制作表.json`(对应 img_1 ~ img_5)
-- 通用创作信息:`raw_info/创作表.md`、`raw_info/制作点.md`、`raw_info/图片亮点.md`
+**参考源信息(输入目录)**:
+输入目录 `%input_dir%/` 中包含原始图片的源信息:
+- 每张图的制作表:`%input_dir%/写生油画__img_X_制作表.json`(对应 img_1 ~ img_5)
+- 通用创作信息:`%input_dir%/创作表.md`、`%input_dir%/制作点.md`、`%input_dir%/图片亮点.md`
 
-在构建或优化 prompt 时,**应先读取当前图片对应的制作表 JSON 和通用文件作为参考**,从中提取有价值的细节描述融入 prompt。raw_info 是辅助参考,最终 prompt 仍以任务指派中的要求为准。
+在构建或优化 prompt 时,**应先读取当前图片对应的制作表 JSON 和通用文件作为参考**,从中提取有价值的细节描述融入 prompt。这些源信息是辅助参考,最终 prompt 仍以任务指派中的要求为准。
 
 ### 第二步:验证素材可用性
 在执行生成前,先验证所需文件存在且可读:
 - 使用 `read_file` 工具检查各参考素材文件(**`read_file` 支持读取图片,会自动转为 base64 供你查看,无需打开浏览器**)
-- 读取 `raw_info/` 目录下对应的制作表 JSON(如生成 img_1 则读 `写生油画__img_1_制作表.json`)和通用文件(`创作表.md`、`图片亮点.md`),提取可用于 prompt 的细节
+- 读取 `%input_dir%/` 目录下对应的制作表 JSON(如生成 img_1 则读 `写生油画__img_1_制作表.json`)和通用文件(`创作表.md`、`图片亮点.md`),提取可用于 prompt 的细节
 - 如有素材缺失,立即在结果中标注(不要自行跳过)
 
 ### 第三步:通过 ToolHub 工具库执行生成
@@ -81,19 +81,21 @@ toolhub.py 内置了 `_preprocess_params` 函数,会自动将本地路径上
 
 **单图评估**:传入需求文档路径和单张图片路径
 ```json
-{"requirement_path": "%input_dir%/pipeline.json", "image_paths": "输出图片路径"}
+{"requirement_path": "%output_dir%/pipeline.json", "image_paths": "输出图片路径"}
 ```
 
 **多图一致性评估**:传入需求文档路径和多张图片路径列表,自动检查跨图一致性
 ```json
-{"requirement_path": "%input_dir%/pipeline.json", "image_paths": ["img_1路径", "img_2路径", "img_3路径"]}
+{"requirement_path": "%output_dir%/pipeline.json", "image_paths": ["img_1路径", "img_2路径", "img_3路径"]}
 ```
 
 - 单图模式:从姿态、服装、光影、背景、材质、构图 6 个维度打分(0-10)
 - 多图模式:从角色、服装、色调、光影、风格 5 个一致性维度打分,并逐图给分,指出不一致的图片
 - 根据评估结果判断是否需要重新生成或调整参数
 
-同时人工对照 output_spec 逐项检查:
+**人工对照制作表逐项检查(极其重要)**:
+
+自动评估工具只能给出维度打分,但无法判断是否符合原始制作表的具体要求。**你必须读取 `%input_dir%/` 下该图对应的制作表 JSON(如生成 img_1 则读 `写生油画__img_1_制作表.json`)**,对照其中的详细描述逐项检查:
 - 姿态是否符合需求描述(手臂位置、站/跪姿态)
 - 景深/散景效果是否达到要求
 - 人物参考是否注入(发型、服装款式)

+ 0 - 100
examples/production_restore/input/analysis.json

@@ -1,100 +0,0 @@
-{
-  "category": {
-    "name": "户外白裙写生少女",
-    "traits": [
-      "穿着白色连衣裙的女性在户外草地进行油画写生",
-      "白绿配色为主,清新自然的森系视觉基调",
-      "包含画架、画布、调色板、画笔等写生道具",
-      "逆光/轮廓光与浅景深虚化营造梦幻氛围",
-      "画布内容与现实场景形成画中画呼应结构"
-    ],
-    "quality_challenges": [
-      "人物姿态自然度:需要呈现专注绘画的动态姿态,避免僵硬",
-      "白裙质感表现:轻薄面料的垂坠感、褶皱细节和透光效果",
-      "调色板颜料质感:厚重油画的 Impasto 堆叠感和色彩混合细节",
-      "光影层次:逆光下的轮廓光晕与主体细节的平衡",
-      "景深控制:前景清晰、背景虚化的自然过渡",
-      "画中画一致性:画布上的油画内容需与现实场景形成视觉呼应",
-      "发丝细节:逆光下头发边缘的光晕效果和发丝清晰度"
-    ],
-    "reasoning": "基于图片亮点.md 的 6 个聚类主题(优雅白裙少女、斑斓颜料、写生道具、白绿配色、光影景深、画中画结构)和制作点.md 的 6 大元素权重(女性 84.5、绘画工具 78.5、自然背景 74.0、画架画布 67.67、画架油画 60.97、女性衣物 44.7),以及 5 张制作表中对姿态、服装、光影、清晰度的详细规格描述综合判断"
-  },
-  "highlight": [
-    {
-      "name": "优雅的白裙写生少女",
-      "description": "女性主体需呈现文艺气质与娴静美,包括专注的绘画姿态(身体前倾、手臂抬起握笔)、自然垂坠的白色长裙(V 字露背或圆领、腰部系带收腰、裙摆飘逸)、棕色长发(自然披散、逆光下边缘光晕),整体塑造写生缪斯形象",
-      "reasoning": "图片亮点.md 中该聚类覆盖全部 5 张图片,制作点.md 中'女性'元素综合权重 84.5 为最高,5 张制作表中人物段落评分均在 0.745-0.858 之间,是画面核心主体",
-      "references": ["descriptions/图片亮点.md", "descriptions/制作点.md", "descriptions/写生油画__img_1_制作表.json#段落 1.1", "descriptions/写生油画__img_2_制作表.json#段落 2.1", "descriptions/写生油画__img_3_制作表.json#段落 3.1", "descriptions/写生油画__img_4_制作表.json#段落 4.1", "descriptions/写生油画__img_5_制作表.json#段落 5.1"]
-    },
-    {
-      "name": "斑斓厚重的油画颜料",
-      "description": "木质调色板上堆积的厚重油画颜料(Impasto),呈不规则块状分布,色彩鲜艳杂乱(绿色、蓝色、红色、黄色、白色、紫色等至少 10 种颜色),颜料具有膏状质感和明显堆叠厚度,与周围大面积纯白衣物形成强烈视觉反差",
-      "reasoning": "图片亮点.md 专门聚焦该实质物体,制作点.md 中'绘画工具'权重 78.5 排第二,img_1 和 img_5 制作表中调色板颜料细节描述详尽(颜色种类、分布模式、质地),img_5 中颜料段落评分达 0.754",
-      "references": ["descriptions/图片亮点.md", "descriptions/制作点.md", "descriptions/写生油画__img_1_制作表.json#段落 1.1.2.3", "descriptions/写生油画__img_5_制作表.json#段落 5.1.3.1"]
-    },
-    {
-      "name": "清新雅致的白绿配色",
-      "description": "大面积高饱和度自然草木绿背景(鲜绿色草地、深浅不一的绿色树木)与人物纯白服装形成鲜明对比,确立清新、自然、治愈的森系视觉基调,色彩饱和度中等偏高但不刺眼",
-      "reasoning": "图片亮点.md 中该形式类聚类强调色彩构成的形式美感,覆盖 img_1 和 img_4,5 张制作表的背景段落均描述'以绿色为主',色彩形式评分普遍较高",
-      "references": ["descriptions/图片亮点.md", "descriptions/写生油画__img_1_制作表.json#段落 1.3", "descriptions/写生油画__img_4_制作表.json#段落 4.3"]
-    },
-    {
-      "name": "唯美梦幻的光影与景深",
-      "description": "温暖的逆光/轮廓光从画面左上方或右上方照射,人物和物体边缘形成明显光晕;大光圈浅景深虚化(Bokeh)使背景呈现柔和散景,前景主体清晰锐利(头发丝、服装纹理、手部细节可见),营造脱离现实的梦幻浪漫氛围",
-      "reasoning": "图片亮点.md 中该形式类聚类覆盖 img_2、img_3、img_5,5 张制作表的形式段落均描述'逆光'或'自然光从左上方/右上方照射',清晰度描述均为'前景清晰、背景虚化',img_2 特别强调'强烈光斑和光晕效果'",
-      "references": ["descriptions/图片亮点.md", "descriptions/写生油画__img_2_制作表.json#段落 2 形式", "descriptions/写生油画__img_3_制作表.json#段落 3 形式", "descriptions/写生油画__img_5_制作表.json#段落 5 形式"]
-    },
-    {
-      "name": "虚实呼应的画中画结构",
-      "description": "画架上的画布内容与现实场景形成'镜像'或'互文'关系——画布上描绘身穿白色裙子的女性在户外草地/花丛中的背影,与现实中的画家形成视觉呼应,构建增加叙事深度的画中画结构,画布采用印象派风格(笔触粗犷、色彩鲜明)",
-      "reasoning": "图片亮点.md 中该形式类聚类覆盖 img_1 和 img_2,img_1、img_2、img_3 制作表中画布段落均详细描述'描绘了一名背对镜头的女性',内容主题与现实场景呼应,画布段落评分高达 0.891-0.958",
-      "references": ["descriptions/图片亮点.md", "descriptions/写生油画__img_1_制作表.json#段落 1.2.1", "descriptions/写生油画__img_2_制作表.json#段落 2.2.1", "descriptions/写生油画__img_3_制作表.json#段落 3.2.1"]
-    }
-  ],
-  "baseline": [
-    {
-      "name": "人物姿态自然度",
-      "description": "女性需呈现专注绘画的动态姿态(身体略微前倾、右臂抬起握笔、左臂弯曲持调色板、头部转向画布),避免僵硬呆板的摆拍感",
-      "why_critical": "制作表中 5 张图的人物姿态描述均强调'专注绘画的动态姿态',姿态不自然会导致人物像假人模特,破坏'优雅写生少女'的核心亮点",
-      "reasoning": "img_1 制作表#段落 1.1.2 描述'身体略微前倾,右臂抬起握持画笔,左臂弯曲握持调色板',img_2、img_3、img_4 均有类似姿态描述,姿态形式评分在 0.455-0.765 之间",
-      "references": ["descriptions/写生油画__img_1_制作表.json#段落 1.1.2", "descriptions/写生油画__img_2_制作表.json#段落 2.1.2", "descriptions/写生油画__img_3_制作表.json#段落 3.1.2", "descriptions/写生油画__img_4_制作表.json#段落 4.1.2"]
-    },
-    {
-      "name": "白裙材质与褶皱真实感",
-      "description": "白色长裙需呈现轻薄棉麻或丝绸质地的垂坠感和透气性,有自然形成的垂坠褶皱(裙摆、腰部、背部 V 领处),服装颜色为纯白色无图案",
-      "why_critical": "制作点.md 中'女性衣物'权重 44.7,5 张制作表的服装段落评分均高达 0.806-0.847,材质和褶皱描述详尽,做不好会导致服装像塑料或纸片,一眼假",
-      "reasoning": "img_1 制作表#段落 1.1.2.1 描述'轻薄的棉麻或丝绸质地,具有良好的垂坠感',img_2、img_3、img_4 均有'丝绸或棉麻混纺材质,表面光滑,有轻微光泽感'等描述",
-      "references": ["descriptions/制作点.md", "descriptions/写生油画__img_1_制作表.json#段落 1.1.2.1", "descriptions/写生油画__img_2_制作表.json#段落 2.1.2.1", "descriptions/写生油画__img_3_制作表.json#段落 3.1.2.1", "descriptions/写生油画__img_4_制作表.json#段落 4.1.2.1"]
-    },
-    {
-      "name": "调色板颜料质感",
-      "description": "调色板上的颜料需呈现膏状堆积的厚度和立体感,表面有光泽显示湿润质地,颜色种类丰富(至少 10 种),呈不规则块状和条状分布,部分颜色相互混合形成过渡色",
-      "why_critical": "图片亮点.md 专门将'斑斓厚重的油画颜料'列为实质类亮点,img_5 制作表中颜料段落评分 0.754,质感描述详尽,做不好会像平面贴图而非真实颜料",
-      "reasoning": "img_5 制作表#段落 5.1.3.1 详细描述'颜料呈膏状,堆积在调色板表面,具有一定的厚度和立体感,表面有光泽,显示出湿润的质地',img_1 也有'颜料堆叠感明显'描述",
-      "references": ["descriptions/图片亮点.md", "descriptions/写生油画__img_1_制作表.json#段落 1.1.2.3", "descriptions/写生油画__img_5_制作表.json#段落 5.1.3.1"]
-    },
-    {
-      "name": "前景主体清晰度",
-      "description": "人物主体(头发丝、服装纹理、手部细节)、调色板(木质纹理、颜料堆叠)、画架需清晰锐利,细节可见,与虚化背景形成对比",
-      "why_critical": "5 张制作表的形式段落均强调'前景人物和画架清晰锐利',清晰度形式评分普遍较高,做不好会导致画面整体模糊,失去专业摄影质感",
-      "reasoning": "img_1 制作表#段落 1 形式描述'画面中心区域清晰度高,细节锐利可见',img_2、img_3、img_4、img_5 均有类似描述,清晰度是所有制作表的必选形式参数",
-      "references": ["descriptions/写生油画__img_1_制作表.json#段落 1 形式", "descriptions/写生油画__img_2_制作表.json#段落 2 形式", "descriptions/写生油画__img_3_制作表.json#段落 3 形式", "descriptions/写生油画__img_4_制作表.json#段落 4 形式", "descriptions/写生油画__img_5_制作表.json#段落 5 形式"]
-    },
-    {
-      "name": "背景虚化自然度",
-      "description": "背景树木和草地需呈现柔和的虚化效果(浅景深),与前景清晰主体形成自然过渡,虚化区域有光斑效果(尤其是逆光场景)",
-      "why_critical": "图片亮点.md 将'唯美梦幻的光影与景深'列为形式类亮点,5 张制作表均描述'景深较浅,背景虚化',做不好会导致画面缺乏层次感和专业感",
-      "reasoning": "img_2 制作表#段落 2.3 描述'背景整体呈现柔和的虚化效果,景深较浅,树木轮廓模糊,光斑明显',所有制作表的背景段落均有景深描述",
-      "references": ["descriptions/图片亮点.md", "descriptions/写生油画__img_2_制作表.json#段落 2.3", "descriptions/写生油画__img_3_制作表.json#段落 3.3", "descriptions/写生油画__img_5_制作表.json#段落 5.3"]
-    }
-  ],
-  "requirement_summary": [
-    "高质量人物生成:白裙女性、自然绘画姿态、棕色长发、逆光轮廓光",
-    "服装材质还原:轻薄棉麻/丝绸质地、垂坠褶皱、纯白色",
-    "调色板与颜料:木质调色板、厚重油画颜料 Impasto 质感、多色混合",
-    "光影效果:逆光/轮廓光、温暖光晕、前景清晰背景虚化",
-    "画中画结构:画布上油画内容需与现实场景呼应、印象派风格",
-    "自然背景:高饱和度绿色草地和树木、清新森系色调",
-    "道具细节:画架结构、画笔、白玫瑰点缀"
-  ]
-}

+ 0 - 194
examples/production_restore/input/pipeline.json

@@ -1,194 +0,0 @@
-{
-  "project": "户外白裙写生少女图像还原",
-  "category": "户外白裙写生少女",
-  "total_images": 5,
-  "stages": {
-    "stage_1": {
-      "name": "链式图生图生成",
-      "status": "pending",
-      "description": "以 features 目录中的参考素材为底图,按顺序逐张生成。从 img_1 开始,每张图生成后,将结果作为下一张图的额外参考(chain_from),确保角色、服装、色调的跨图一致性。必须严格按 img_1 → img_2 → img_3 → img_4 → img_5 的顺序串行执行,不可并行",
-      "images": ["img_1", "img_2", "img_3", "img_4", "img_5"],
-      "execution_order": "sequential_chain",
-      "tool_priority": ["nano_banana", "flux_generate", "seedream_generate"],
-      "fallback": "仅当端到端工具效果不足时,才考虑使用 liblibai_controlnet"
-    },
-    "stage_2": {
-      "name": "迭代优化",
-      "status": "pending",
-      "description": "以 Stage 1 生成的图像作为底图,再次图生图迭代优化,增强材质、光影、细节的真实感"
-    },
-    "stage_3": {
-      "name": "跨图一致性检查",
-      "status": "pending",
-      "description": "对比 5 张生成图,检查角色、服装、色彩、光影的一致性。对不一致的图以当前结果为底图重新图生图优化"
-    },
-    "stage_4": {
-      "name": "细节修复与输出",
-      "status": "pending",
-      "description": "逐项检查并修复细节问题,以当前结果为底图进行定向图生图修复,输出最终成品"
-    }
-  },
-  "images": {
-    "img_1": {
-      "required_spec": {
-        "pose": "侧身背对,站姿,身体前倾,右臂抬起握笔,左臂持调色板",
-        "服装": "白色长裙,V 字露背,腰部系带,轻薄棉麻质地,垂坠褶皱",
-        "光影": "逆光从左上方照射,轮廓光晕,发丝金边",
-        "背景": "高饱和度绿色草地和树木,浅景深虚化",
-        "道具": "木质画架,白色画布(有画中画内容),木质调色板(多色颜料)",
-        "画中画": "画布上描绘背对镜头的女性 + 草地 + 蓝花,印象派风格"
-      },
-      "input_from": {
-        "character_ref": "character_asset/character_ref_img1.png",
-        "background_ref": "background_asset/background_green_img1.png",
-        "palette_ref": "palette_asset/palette_impasto_img1_v2.png"
-      },
-      "img2img_config": {
-        "base_image": "character_ref",
-        "reference_images": ["background_ref", "palette_ref"],
-        "chain_from": null,
-        "note": "第 1 张图,无前序结果。以人物参考图为底图做图生图,prompt 中融合背景、道具、光影描述。此图确立角色基准外观"
-      },
-      "prompt": "一位穿着纯白色长裙的女性在户外草地写生,身体略微前倾专注绘画,右手持画笔左手持调色板,棕色长发自然披散在背部,轻薄棉麻质地的白色长裙,V 字露背设计,腰部系带收腰,裙摆自然垂坠有飘逸感,温暖的逆光从左上方照射,人物边缘形成金色轮廓光,发丝呈现明亮光晕,全画幅 85mm 人像定焦镜头,光圈 f/1.8 大光圈,浅景深效果,前景人物清晰锐利,背景草地和树木柔和虚化,高饱和度自然草木绿背景,纯白服装与绿色形成鲜明对比,清新森系色调,真实摄影风格",
-      "negative_prompt": "AI 假人感,塑料质感,过度修饰,模糊,低质量,变形,cgi,3d 渲染,平滑无纹理",
-      "output_spec": {
-        "file": "img_1_restored_v1.png",
-        "resolution": "1024x1365",
-        "critical_checks": ["人物姿态自然度", "白裙材质与褶皱真实感", "前景主体清晰度"],
-        "high_checks": ["逆光轮廓光效果", "背景虚化自然度", "调色板颜料质感"]
-      }
-    },
-    "img_2": {
-      "required_spec": {
-        "pose": "背对,逆光,半剪影效果,身体略微右倾",
-        "服装": "白色长裙,轻薄材质,逆光下透光效果",
-        "光影": "强烈逆光,明显光斑和光晕效果,发丝金边",
-        "背景": "绿色树木,柔和虚化,圆形光斑 (bokeh)",
-        "道具": "木质画架,白色画布(有画中画内容),调色板",
-        "画中画": "画布上描绘背对女性 + 植物 + 花朵 + 光斑,印象派风格"
-      },
-      "input_from": {
-        "character_ref": "character_asset/character_ref_back.png",
-        "background_ref": "background_asset/background_bokeh_img2.png"
-      },
-      "img2img_config": {
-        "base_image": "character_ref",
-        "reference_images": ["background_ref"],
-        "chain_from": "img_1",
-        "note": "以背影参考图为底图,同时将 img_1 的生成结果作为参考图传入,保持角色一致性。prompt 中强化逆光和散景效果"
-      },
-      "prompt": "一位穿着纯白色长裙的女性在户外草地写生,背对镜头,身体略微右倾,强烈逆光效果,人物呈半剪影,发丝边缘明亮金边,轻薄白裙在逆光下呈现透光效果,木质画架和画布,调色板,背景绿色树木柔和虚化,圆形光斑效果,梦幻浪漫氛围,85mm 镜头,f/1.8 大光圈,真实摄影风格",
-      "negative_prompt": "AI 假人感,塑料质感,过度修饰,模糊,低质量,变形,cgi,3d 渲染,光线平淡",
-      "output_spec": {
-        "file": "img_2_restored_v1.png",
-        "resolution": "1024x1365",
-        "critical_checks": ["逆光轮廓光效果", "人物姿态自然度", "前景主体清晰度"],
-        "high_checks": ["背景光斑效果", "白裙透光感", "发丝金边细节"]
-      }
-    },
-    "img_3": {
-      "required_spec": {
-        "pose": "跪坐姿态,身体前倾,左臂靠近地面调色板",
-        "服装": "白色长裙,跪坐时裙摆自然铺展",
-        "光影": "自然光从左上方照射,柔和轮廓光",
-        "背景": "绿色草地,蓝紫色花丛,浅景深",
-        "道具": "木质画架,白色画布(有画中画内容),地面调色板",
-        "画中画": "画布上描绘白裙女性 + 花丛 + 遮阳伞,印象派风格"
-      },
-      "input_from": {
-        "character_ref": "character_asset/character_ref_kneel.png",
-        "background_ref": "background_asset/background_green_img1.png"
-      },
-      "img2img_config": {
-        "base_image": "character_ref",
-        "reference_images": ["background_ref"],
-        "chain_from": "img_2",
-        "note": "以跪姿参考图为底图,将 img_2 的结果作为参考保持角色一致性"
-      },
-      "prompt": "一位穿着纯白色长裙的女性跪坐在户外草地写生,身体前倾专注绘画,左臂靠近地面调色板,棕色长发自然披散,轻薄棉麻质地白裙,裙摆自然铺展在草地上,自然光从左上方照射,柔和轮廓光,背景绿色草地和蓝紫色花丛,浅景深虚化,85mm 镜头,f/1.8 光圈,清新森系色调,真实摄影风格",
-      "negative_prompt": "AI 假人感,塑料质感,过度修饰,模糊,低质量,变形,cgi,3d 渲染,姿态僵硬",
-      "output_spec": {
-        "file": "img_3_restored_v1.png",
-        "resolution": "1024x1365",
-        "critical_checks": ["跪坐姿态自然度", "白裙材质与褶皱真实感", "前景主体清晰度"],
-        "high_checks": ["花丛背景虚化", "裙摆铺展效果", "光影柔和度"]
-      }
-    },
-    "img_4": {
-      "required_spec": {
-        "pose": "侧身面对镜头,仰望,右臂抬起握笔",
-        "服装": "白色长裙,侧身视角可见服装轮廓",
-        "光影": "自然光照射,柔和光影",
-        "背景": "高饱和度绿色草地和树木,浅景深",
-        "道具": "木质画架,空白白色画布(无内容),调色板",
-        "画中画": "空白画布,纯白色表面,无颜料痕迹"
-      },
-      "input_from": {
-        "character_ref": "character_asset/character_ref_side.png",
-        "background_ref": "background_asset/background_green_img4.png",
-        "easel_ref": "easel_asset/easel_blank_canvas_img4.png"
-      },
-      "img2img_config": {
-        "base_image": "character_ref",
-        "reference_images": ["background_ref", "easel_ref"],
-        "chain_from": "img_3",
-        "note": "以侧面参考图为底图,将 img_3 的结果作为参考保持角色一致性。prompt 中强化'空白画布无内容'"
-      },
-      "prompt": "一位穿着纯白色长裙的女性侧身站立面对镜头,头部仰望向左上方,右臂抬起握持画笔,左臂持调色板,轻薄棉麻质地白裙,自然光照射,柔和光影,背景高饱和度绿色草地和树木,浅景深虚化,木质画架上有空白白色画布,纯白色表面无颜料痕迹,85mm 镜头,f/1.8 光圈,清新森系色调,真实摄影风格",
-      "negative_prompt": "AI 假人感,塑料质感,过度修饰,模糊,低质量,变形,cgi,3d 渲染,画布上有内容,颜料痕迹",
-      "output_spec": {
-        "file": "img_4_restored_v1.png",
-        "resolution": "1024x1365",
-        "critical_checks": ["人物姿态自然度", "白裙材质真实感", "空白画布纯白无内容"],
-        "high_checks": ["仰望表情自然", "侧身轮廓清晰", "背景虚化"]
-      }
-    },
-    "img_5": {
-      "required_spec": {
-        "pose": "特写镜头,聚焦手部和调色板,上半身可见",
-        "服装": "白色长裙,特写可见材质细节",
-        "光影": "温暖逆光,调色板颜料光泽",
-        "背景": "绿色背景,强烈虚化",
-        "道具": "木质调色板(多色厚重颜料 Impasto 质感),画笔",
-        "画中画": "画布部分可见于背景,绿蓝色调,笔触粗犷"
-      },
-      "input_from": {
-        "character_ref": "character_asset/character_ref_main.png",
-        "palette_ref": "palette_asset/palette_impasto_img1_v2.png"
-      },
-      "img2img_config": {
-        "base_image": "character_ref",
-        "reference_images": ["palette_ref"],
-        "chain_from": "img_4",
-        "note": "以人物正面参考图为底图,将 img_4 的结果作为参考保持角色一致性。prompt 中强化特写镜头和 Impasto 颜料质感"
-      },
-      "prompt": "特写镜头,聚焦女性双手握持木质调色板和画笔,调色板上有厚重油画颜料 Impasto 质感,膏状堆积,多色混合(绿色、蓝色、红色、黄色、白色、紫色),颜料表面湿润光泽,立体厚度可见,女性穿着纯白色长裙,上半身可见,温暖逆光照射,颜料光泽反射,背景绿色强烈虚化,85mm 微距镜头,f/1.8 光圈,真实摄影风格",
-      "negative_prompt": "AI 假人感,塑料质感,平滑无纹理,模糊,低质量,变形,cgi,3d 渲染,颜料扁平无厚度",
-      "output_spec": {
-        "file": "img_5_restored_v1.png",
-        "resolution": "1024x1365",
-        "critical_checks": ["调色板颜料 Impasto 质感", "颜料湿润光泽", "特写清晰度"],
-        "high_checks": ["多色颜料混合", "手部细节", "背景虚化"]
-      }
-    }
-  },
-  "consistency_checks": {
-    "stage_3": {
-      "character_consistency": "5 张图中女性角色面部特征、发型、肤色应保持一致",
-      "costume_consistency": "白色长裙的材质、款式、颜色应 100% 一致(V 字露背、腰部系带、轻薄棉麻)",
-      "color_scheme": "白绿配色方案贯穿所有图像,绿色饱和度中等偏高,纯白服装",
-      "lighting_consistency": "逆光/轮廓光方向一致(左上方),光晕效果统一",
-      "style_consistency": "真实摄影风格,85mm 镜头,f/1.8 景深效果统一"
-    }
-  },
-  "repair_items": {
-    "stage_4": [
-      {"item": "人物面部细节", "check": "肌肤纹理清晰,无 AI 假人感", "repair_tool": "图生图局部重绘"},
-      {"item": "服装褶皱", "check": "白裙垂坠褶皱自然,材质真实", "repair_tool": "图生图局部重绘"},
-      {"item": "调色板颜料", "check": "Impasto 质感明显,膏状堆积,湿润光泽", "repair_tool": "图生图局部重绘"},
-      {"item": "画布内容", "check": "画中画结构清晰,印象派风格", "repair_tool": "图生图局部重绘"},
-      {"item": "光影效果", "check": "逆光轮廓光自然,发丝金边清晰", "repair_tool": "图生图局部重绘"},
-      {"item": "背景虚化", "check": "浅景深效果自然,光斑柔和", "repair_tool": "图生图局部重绘"}
-    ]
-  }
-}

+ 0 - 44
examples/production_restore/input/strategy.json

@@ -1,44 +0,0 @@
-{
-  "selected_strategy": {
-    "name": "素材驱动端到端工作流:参考素材图生图 → 迭代优化 → 一致性检查 → 细节修复",
-    "workflow_outline": [
-      "阶段 1 - 素材驱动图生图:以 features 中的参考素材(人物参考图)为底图传入 image_url,配合详细 prompt 描述服装材质、光影效果、相机参数,通过 nano_banana / flux_generate / seedream_generate 从头生成图像",
-      "阶段 2 - 迭代优化:以阶段 1 生成结果为底图再次图生图,增强材质、光影、细节真实感",
-      "阶段 3 - 跨图一致性检查:对比 5 张生成图的角色、服装、色彩、光影一致性,对不一致的图重新图生图优化",
-      "阶段 4 - 细节修复与输出:以当前结果为底图,针对局部细节(面部、褶皱、颜料质感等)进行定向图生图修复"
-    ],
-    "tool_priority": [
-      "nano_banana — 首选,速度快、效果好",
-      "flux_generate — 备选,支持 image_url 图生图",
-      "seedream_generate — 备选,支持 image_url 图生图",
-      "liblibai_controlnet — 最后回退,仅当需要精细姿态/边缘/深度控制且端到端工具效果不足时使用"
-    ],
-    "highlight_coverage": [
-      "优雅的白裙写生少女:端到端图生图保留原型构图 + 增强材质真实感",
-      "斑斓厚重的油画颜料:通过 prompt 强化 Impasto 质感描述 + palette_ref 素材辅助",
-      "清新雅致的白绿配色:prompt 中控制色彩 + background_ref 素材引导",
-      "唯美梦幻的光影与景深:prompt 中描述逆光轮廓光 + 相机参数(85mm、f/1.8)",
-      "虚实呼应的画中画结构:prompt 中同时描述现实场景和画布内容的镜像关系"
-    ],
-    "baseline_coverage": [
-      "人物姿态自然度:以原型图为底图保留姿态,端到端工具增强真实感",
-      "白裙材质与褶皱真实感:prompt 中详细描述布料材质(棉麻、垂坠、透光)",
-      "调色板颜料质感:prompt 强化 Impasto 描述 + palette_ref 素材参考",
-      "前景主体清晰度:prompt 中描述相机参数确保主体锐利",
-      "背景虚化自然度:prompt 中描述 f/1.8 大光圈、浅景深效果"
-    ],
-    "reasoning": "该策略的核心优势:1)端到端图生图工具(nano_banana/flux/seedream)通过 ToolHub 直接可用,无需额外配置;2)以原型图为底图可保留已验证的构图和姿态,只增强真实感;3)参考素材(人物、背景、道具)提供风格引导;4)全流程使用 ToolHub 工具,链路简短、执行效率高;5)仅在端到端工具效果不足时才回退到 ControlNet,避免不必要的复杂度"
-  },
-  "vs_alternatives": [
-    {
-      "alternative": "ControlNet 精确控制方案",
-      "why_not": "需要先提取控制信号(骨骼图、深度图、边缘图),当前素材中不包含这些文件;链路更长、配置更复杂;对于本项目已有原型图+参考素材的情况,端到端图生图更直接高效",
-      "could_switch_if": "端到端工具无法精确控制姿态或构图细节;需要逐像素级别的结构控制"
-    },
-    {
-      "alternative": "纯文生图方案(不使用底图)",
-      "why_not": "放弃已有原型图的构图和姿态信息,每次从零生成;一致性难以保证;浪费已有资源",
-      "could_switch_if": "原型图质量太差无法作为底图使用"
-    }
-  ]
-}

+ 0 - 0
examples/production_restore/input/raw_info/写生油画__img_1_制作表.json → examples/production_restore/input/写生油画__img_1_制作表.json


+ 0 - 0
examples/production_restore/input/raw_info/写生油画__img_2_制作表.json → examples/production_restore/input/写生油画__img_2_制作表.json


+ 0 - 0
examples/production_restore/input/raw_info/写生油画__img_3_制作表.json → examples/production_restore/input/写生油画__img_3_制作表.json


+ 0 - 0
examples/production_restore/input/raw_info/写生油画__img_4_制作表.json → examples/production_restore/input/写生油画__img_4_制作表.json


+ 0 - 0
examples/production_restore/input/raw_info/写生油画__img_5_制作表.json → examples/production_restore/input/写生油画__img_5_制作表.json


+ 0 - 0
examples/production_restore/input/raw_info/创作表.md → examples/production_restore/input/创作表.md


+ 0 - 0
examples/production_restore/input/raw_info/制作点.md → examples/production_restore/input/制作点.md


+ 0 - 0
examples/production_restore/input/raw_info/图片亮点.md → examples/production_restore/input/图片亮点.md


+ 3 - 3
examples/production_restore/presets.json

@@ -5,7 +5,7 @@
     "skills": ["planning"],
     "prompt_vars": {
       "input_dir": "examples/production_restore/input",
-      "output_dir": "examples/production_restore/output_feature",
+      "output_dir": "examples/production_restore/output_origin",
       "features_dir": "examples/production_restore/features"
     },
     "description": "Business Agent - 决策循环编排器,驱动 goal → evaluate → decide → dispatch 循环"
@@ -17,7 +17,7 @@
     "skills": ["planning"],
     "prompt_vars": {
       "input_dir": "examples/production_restore/input",
-      "output_dir": "examples/production_restore/output_feature",
+      "output_dir": "examples/production_restore/output_origin",
       "features_dir": "examples/production_restore/features"
     },
     "description": "Craftsman - 单步执行专家,调用 ToolHub 工具执行图像生成"
@@ -28,7 +28,7 @@
     "temperature": 0.3,
     "skills": ["planning"],
     "prompt_vars": {
-      "output_dir": "examples/production_restore/output_feature"
+      "output_dir": "examples/production_restore/output_origin"
     },
     "description": "Researcher - 外部知识获取专家,搜索线上教程和案例"
   }

+ 216 - 47
examples/production_restore/requirement.prompt

@@ -13,6 +13,7 @@ $system$
 | 角色 | 调用方式 | 职责 |
 |------|---------|------|
 | **Librarian** | `ask_knowledge(query=...)` | 内部知识顾问,基于 KnowHub 已有知识给出方案建议 |
+| **Requirement DB** | `requirement_search(query=..., top_k=20)` | 需求库检索,查找已有的制作需求 |
 | **Craftsman** | `agent(task=..., agent_type="craftsman")` | 单步执行专家,调用 ToolHub 工具执行图像生成 |
 | **Researcher** | `agent(task=..., agent_type="researcher")` | 外部知识获取,搜索线上教程和案例 |
 | **evaluate** | `evaluate_image(requirement_path=..., image_paths=...)` | 质量评估工具,对照需求打分 |
@@ -22,7 +23,7 @@ $system$
 - 素材目录(参考图等素材):`%features_dir%`
 - 输出目录:`%output_dir%`
 
-pipeline.json 中 `input_from` 字段的路径均相对于素材目录。**指派任务时必须将其展开为完整路径**,传给 Craftsman 的路径必须以 `%features_dir%/` 开头。
+`%output_dir%/pipeline.json` 中 `base_image` 和 `reference_images` 的路径必须以 `%features_dir%/` 开头。
 
 ### 素材目录结构
 ```
@@ -51,68 +52,236 @@ features/
 
 ## 工作流程
 
-### 第一步:读取还原方案
-读取 `%input_dir%/pipeline.json`,提取整体结构和每张图的规格。
+### 第零步:需求分析(从内容描述提取制作需求)
 
-### 第二步:问策 Librarian
-在开始生成前,先向 Librarian 咨询:
-```
-ask_knowledge(query="户外白裙写生少女图像还原,使用端到端图生图工具(nano_banana/flux/seedream),需要保持5张图的角色一致性,有什么推荐方案?")
-```
-- Librarian 会返回 KnowHub 中已有的策略经验、工具评估、工作流总结
-- 如果 Librarian 回复"知识不足"或建议不够具体 → 派发 Researcher 调研
+在开始执行前,先从输入目录的内容描述文件中提取制作层需求。
+
+**1. 读取内容描述文件**
+
+读取 `%input_dir%` 下的核心描述文件(文件名可能略有差异,按实际存在的读取):
+- `制作点.md`:核心制作元素及权重
+- `图片亮点.md` 或 `制作亮点.md`:视觉亮点聚类
+- `创作表.md`:创作视角描述(可选)
+- `*_制作表.json`:各图的详细制作表(按需抽查 1-2 个了解细节)
+
+**2. 检索已有需求**
 
-### 第三步:按需调研
-如果 Librarian 的知识不足以决策:
+用 `requirement_search` 对每个核心制作元素和亮点主题分别检索需求库,了解已有哪些相关需求:
 ```
-agent(task="调研 nano_banana 图生图的最佳实践,特别是如何保持多图角色一致性...", agent_type="researcher")
+requirement_search(query="人物写生 白裙女性 角色一致性", top_k=20)
+requirement_search(query="油画颜料质感 Impasto厚涂", top_k=20)
+requirement_search(query="户外自然背景 逆光散景 浅景深虚化", top_k=20)
+```
+- **分词搜索**:不要把所有关键词拼成一个 query,而是对每个核心制作元素、亮点主题分别搜索
+- 对制作点中权重最高的元素、亮点中覆盖图片最多的聚类,分别发起检索
+- 了解已有哪些需求,避免重复提取;已有需求可直接引用而不重复创建
+
+**3. 提取制作需求**
+
+站在图片制作者的角度,从内容描述中提取"用 AI 图像工具制作这组内容时,需要实现什么视觉效果":
+- **从制作点出发**:按权重从高到低,识别需要 AI 工具还原的核心视觉元素
+- **从亮点出发**:识别图组中必须保持高表现力的视觉特征,转化为制作需求
+- **从制作表验证**:抽查具体图片的制作表,确认需求的具体性和可行性
+- **合并同类**:将指向同一视觉能力的元素和亮点合并为一个需求
+- **对比已有**:将提取结果与检索到的已有需求对比,标注哪些是新需求、哪些已存在
+
+**注意**:
+- 需求描述最终的视觉呈现效果,不要使用技术术语(如"ControlNet""LoRA"等)
+- 多个制作元素或亮点指向同一类视觉效果时,合并为一个需求
+- 每组内容的需求数量一般为 3-8 个
+
+**4. 保存需求文件**
+
+将提取结果保存到 `%output_dir%/requirements.json`。
+
+**输出格式要求**:需求必须按来源分为两组,先列出从需求库查询匹配到的已有需求(`matched_requirements`),再列出新提取的需求(`new_requirements`),让读者一目了然哪些是已积累的能力、哪些是本次新增的挑战。
+
+每个需求采用"抽象需求 + 具象点"的结构:
+- **抽象需求(abstract)**:概括性的视觉能力描述,如"保持多图人物一致性"
+- **具象点(concrete_points)**:该抽象需求下的具体视觉表现要求,如"白裙轮廓在不同角度下保持一致""发丝细节和耳饰在各图中统一"
+
+```json
+{
+  "content_name": "内容名称(从创作表或文件夹名获取)",
+  "matched_requirements": [
+    {
+      "abstract": "抽象需求描述(与需求库中已有需求匹配)",
+      "concrete_points": [
+        "具象点1:来自需求库的已有要求",
+        "具象点2:本次内容补充的新要求(如有)"
+      ],
+      "priority": "high | medium | low",
+      "db_match_id": "需求库中匹配到的需求 ID",
+      "match_confidence": "exact | partial",
+      "delta_from_db": "与需求库原始需求相比,本次新增或调整的具象点说明(无新增则为 null)",
+      "source_elements": ["制作点名称或亮点名称"],
+      "reasoning": "为什么这是关键制作需求,做不好会怎样"
+    }
+  ],
+  "new_requirements": [
+    {
+      "abstract": "抽象需求描述(需求库中无匹配,从内容描述中新提取)",
+      "concrete_points": [
+        "具象点1:具体的视觉表现要求",
+        "具象点2:具体的视觉表现要求"
+      ],
+      "priority": "high | medium | low",
+      "source_elements": ["制作点名称或亮点名称"],
+      "reasoning": "为什么这是关键制作需求,做不好会怎样"
+    }
+  ]
+}
 ```
-- Researcher 会搜索外部平台并返回调研结果
-- 调研结果可通过 `upload_knowledge` 存入 KnowHub 供后续使用
 
-### 第四步:链式图生图生成(Stage 1)
-严格按 **img_1 → img_2 → img_3 → img_4 → img_5** 的顺序串行生成:
+**分组说明**:
+- `matched_requirements`:通过 `requirement_search` 在需求库中找到了匹配的已有需求。`match_confidence` 标注匹配程度(`exact`=完全匹配,`partial`=部分匹配需补充)。`delta_from_db` 说明本次在已有需求基础上的增量变化
+- `new_requirements`:需求库中无匹配,从内容描述文件中新提取的需求。这些需求后续应考虑入库积累
 
-**img_1(基准图)**:
-```
-agent(task="生成 img_1(基准图):
-  底图: %features_dir%/character_asset/character_ref_img1.png
-  背景参考: %features_dir%/background_asset/background_green_img1.png
-  调色板参考: %features_dir%/palette_asset/palette_impasto_img1_v2.png
+### 第一步:基于需求问策 Librarian
 
-  底图使用方式:将 character_ref 作为 image_url 传入端到端工具做图生图
-  读取 raw_info 目录下对应的制作表(%input_dir%/raw_info/写生油画__img_1_制作表.json)和通用文件辅助 prompt
+读取 `%output_dir%/requirements.json`,按以下优先级逐层向 Librarian 查询:
 
-  Prompt: [从 pipeline.json 提取]
-  Negative Prompt: [从 pipeline.json 提取]
-  img2img_config: [从 pipeline.json 提取]
+**第一层:查关系表(已有需求 → 关联的工序和案例)**
 
-  此图确立角色基准外观,后续所有图以此为参考锚点。
-  输出保存到: %output_dir%/img_1_restored_v1.png", agent_type="craftsman")
+对 `matched_requirements` 中的需求,优先通过关系表查找已有的工序方案和用户案例:
+```
+ask_knowledge(query="需求[db_match_id]关联的工序方案和用户案例")
 ```
+- 关系表中可能已记录:该需求对应的工具链、参数配置、成功案例
+- 如果关系表有完整的工序 → 直接采纳,无需进一步查询
 
-**img_2 ~ img_5(链式传递)**:每张图的 `chain_from` 字段指向前一张。指派时必须将前一张的生成结果路径传给 Craftsman,说明"此为前序图的生成结果,请保持角色、服装、色调一致"。
+**第二层:查能力和知识**
 
-每张图生成后,立即用 evaluate_image 评估:
+对关系表未覆盖的需求(包括 `new_requirements` 中的新需求),查询相关的能力和通用知识
 ```
-evaluate_image(requirement_path="%input_dir%/pipeline.json", image_paths="%output_dir%/img_1_restored_v1.png")
+ask_knowledge(query="AI图生图工具实现[抽象需求]的能力和方法,具体要求:[列出concrete_points]")
 ```
-- 评分 ≥ 7 → 通过,进入下一张
-- 评分 < 7 → 分析反馈,问策 Librarian 调整方案,重新派发 Craftsman(输出为 `img_X_restored_v2.png`,版本号递增,不覆盖上一版)
+- 查找 KnowHub 中是否有相关的工具能力评估、技巧总结、参数经验
+- 将抽象需求和具象点一起传入,让 Librarian 给出针对性建议
 
-### 第五步:迭代优化(Stage 2)
-Stage 1 全部完成后,对评分较低的图(<8 分),以 Stage 1 结果为底图再次图生图优化。
+**第三层:标记知识缺口**
 
-### 第六步:跨图一致性检查(Stage 3)
-用 evaluate_image 的多图模式检查所有图(使用每张图的最新版本):
+经过前两层查询后,汇总哪些需求仍缺乏足够的工序或知识支撑,标记为待调研项,交给第三步处理。
+
+### 第二步:按需调研
+对 Librarian 无法充分覆盖的需求,派发 Researcher 调研:
+```
+agent(task="调研以下制作需求的实现方案和用户案例:
+  [列出知识缺口的需求,包含 abstract + concrete_points]
+  重点关注:实际用户的成功案例、工具选择、参数配置、踩坑经验...", agent_type="researcher")
 ```
-evaluate_image(requirement_path="%input_dir%/pipeline.json", image_paths=["%output_dir%/img_1_restored_v1.png", "%output_dir%/img_2_restored_v1.png", ...])
+- Researcher 会搜索外部平台并返回调研结果
+- **调研结果保存到 `%output_dir%/research_result.json`**,供后续设计执行方案时参考
+- 同时通过 `upload_knowledge` 存入 KnowHub 供跨任务复用
+- 特别关注用户案例中的工序流程,可补充到关系表中
+
+**research_result.json 结构**:
+```json
+{
+  "researched_requirements": [
+    {
+      "abstract": "对应的抽象需求",
+      "findings": [
+        {
+          "type": "workflow | case_study | tool_tip | parameter",
+          "summary": "发现摘要",
+          "source": "来源平台和链接",
+          "detail": "详细内容"
+        }
+      ],
+      "recommended_approach": "综合调研结果后的推荐方案"
+    }
+  ]
+}
+```
+
+### 第三步:设计执行方案(生成 pipeline.json)
+
+综合以下信息,自行设计 `pipeline.json` 并保存到 `%output_dir%/pipeline.json`:
+
+**输入**:
+- `%output_dir%/requirements.json`:制作需求(抽象需求 + 具象点)
+- `%output_dir%/research_result.json`:Researcher 调研结果(工序、案例、工具技巧)
+- `%input_dir%/` 下的制作表 JSON:每张图的详细描述和构图信息
+- `%input_dir%/创作表.md`:整体创作视角
+- `%features_dir%/`:可用素材清单
+- Librarian 返回的工序方案、用户案例、工具能力信息
+
+**设计要点**:
+1. **确定图片顺序和链式关系**:根据制作表中各图的角色、构图关系,决定生成顺序和 chain_from 依赖
+2. **为每张图规划生成配置**:底图选择、参考素材、prompt、negative prompt、img2img 参数(strength 等)
+3. **将需求映射到具体图片**:每个 requirement 的 concrete_points 落实到对应图片的生成配置中
+4. **采纳 Librarian 推荐的工序**:优先使用关系表中已验证的工具链和参数配置
+5. **规划修复项**:根据需求优先级,列出 repair_items(Stage 4 细节修复清单)
+
+**pipeline.json 结构**:
+
+pipeline 是一个有序的 steps 列表,每个 step 对应一个可执行的操作。agent 设计 pipeline 时,应将生成、评估、迭代优化、一致性检查、细节修复等阶段都编排为具体的 step。
+
+```json
+{
+  "content_name": "内容名称",
+  "steps": [
+    {
+      "step_id": "step_1",
+      "type": "generate | evaluate | consistency_check | repair | custom",
+      "description": "该步骤的目标描述",
+      "expected_effect": "该步骤完成后图片应达到的视觉效果描述(具体、可感知)",
+      "checkpoints": [
+        "核心检查点1:可评估的具体标准(如'人物白裙V字露背设计清晰可见')",
+        "核心检查点2:可评估的具体标准(如'调色板颜料厚度感明显,有立体笔触纹理')"
+      ],
+      "depends_on": ["前置 step_id,为空则无依赖"],
+      "config": {
+        "// type=generate 时": "",
+        "target": "img_1",
+        "base_image": "%features_dir%/...",
+        "reference_images": ["%features_dir%/..."],
+        "chain_from_step": "null 或前序 generate step_id",
+        "prompt": "生成 prompt",
+        "negative_prompt": "负面 prompt",
+        "img2img_config": { "strength": 0.6 },
+        "mapped_requirements": ["对应的抽象需求"],
+
+        "// type=evaluate 时": "",
+        "target_step": "要评估的 generate step_id",
+        "pass_threshold": 7,
+        "retry_strategy": "问策 Librarian 后重新生成",
+
+        "// type=consistency_check 时": "",
+        "target_steps": ["要对比的多个 generate step_id"],
+        "dimensions": ["character", "clothing", "color", "lighting", "style"],
+
+        "// type=repair 时": "",
+        "target_step": "要修复的 step_id",
+        "repair_items": ["修复项描述"]
+      },
+      "output_path": "%output_dir%/img_1_restored_v1.png"
+    }
+  ],
+  "strategy_source": "工序方案来源说明(Librarian/Researcher/自行设计)"
+}
 ```
-- 对不一致的图,以当前结果为底图重新图生图
-- 如一致性问题严重,问策 Librarian 是否需要调研新的一致性保持技巧
 
-### 第七步:细节修复与输出(Stage 4)
-按 pipeline.json 的 repair_items 逐项检查修复。最终成品保存至 `%output_dir%/`。
+**设计要点**:
+1. **steps 的编排顺序即执行顺序**,通过 `depends_on` 表达依赖关系
+2. **每个 generate step 后通常跟一个 evaluate step**,评估不通过时按 `retry_strategy` 处理
+3. **将需求映射到具体 step**:每个 requirement 的 concrete_points 落实到对应 generate step 的配置中
+4. **采纳 Librarian 推荐的工序**:优先使用关系表中已验证的工具链和参数配置
+5. 设计完成后 review:每个 high priority 需求是否都在至少一个 step 中有体现
+6. **每个 step 必须填写 `expected_effect` 和 `checkpoints`**:`expected_effect` 描述该步骤完成后图片应呈现的视觉效果;`checkpoints` 列出 2-5 个可评估的具体标准,确保 evaluate step 有明确的评判依据。检查点应来自 requirements.json 中对应需求的 concrete_points
+
+### 第四步:按 pipeline 逐步执行
+
+遍历 `%output_dir%/pipeline.json` 中的 `steps`,按顺序逐步执行:
+
+- **generate**:组装该 step 的完整配置,派发 Craftsman 执行。如有 `chain_from_step`,将该前序 step 的最新输出路径一并传入。**必须提醒 Craftsman 读取 `%input_dir%/` 下该图对应的制作表 JSON(如 `写生油画__img_1_制作表.json`),从中提取构图、姿态、道具位置等细节融入 prompt**
+- **evaluate**:调用 evaluate_image 评估目标 step 的输出,**同时对照 `%input_dir%/` 下该图的制作表 JSON 中的具体描述进行逐项检查**(如制作表中描述"左手持调色板",则检查生成图是否符合)。未达 `pass_threshold` 则按 `retry_strategy` 处理(问策 Librarian → 调整配置 → 重新生成,版本号递增)
+- **consistency_check**:用 evaluate_image 多图模式检查 `target_steps` 的输出一致性。不一致的图重新生成
+- **repair**:按 `repair_items` 逐项修复目标 step 的输出
+- **custom**:按 description 描述的逻辑执行
+
+每个 step 完成后,记录结果到 `%output_dir%/generation_log.md`。
 
 ### 知识回流
 每个阶段完成后,将有价值的经验存入 KnowHub:
@@ -138,8 +307,8 @@ upload_knowledge(data="使用 nano_banana 图生图时,strength=0.6 + 链式
 2. **参考素材路径**(完整路径)
 3. **前序结果路径**(chain_from,如有)
 4. **素材使用方式**:底图 → image_url,参考素材 → 辅助 prompt
-5. **Prompt 和生成配置**
-6. **源信息参考**:提醒 Craftsman 读取 `%input_dir%/raw_info/` 目录下对应图片的制作表 JSON(如 `写生油画__img_1_制作表.json`)和通用文件(`创作表.md`、`图片亮点.md`)
+5. **Prompt 和生成配置**(从 `%output_dir%/pipeline.json` 中对应图片的配置提取)
+6. **源信息参考**:提醒 Craftsman 读取 `%input_dir%/` 目录下对应图片的制作表 JSON(如 `写生油画__img_1_制作表.json`)和通用文件(`创作表.md`、`图片亮点.md`)
 7. **输出路径**
 
 ## 评估原则
@@ -148,7 +317,7 @@ upload_knowledge(data="使用 nano_banana 图生图时,strength=0.6 + 链式
 3. **上限点**:尽力还原,接受次优(评分 ≥ 7)
 
 $user$
-请读取输入目录中的还原方案,开始执行完整的图像还原流程:
+请先从输入目录的内容描述文件中提取制作需求,然后将需求交给 Librarian 调研,最后执行完整的图像还原流程:
 %input_dir%
 
 输出目录:%output_dir%

BIN=BIN
outputs/48d6bd7b-699/nano_banana_1775894285972_0.jpg


BIN=BIN
outputs/48d6bd7b-699/nano_banana_1775894577594_0.jpg


BIN=BIN
outputs/48d6bd7b-699/nano_banana_1775894852970_0.jpg


BIN=BIN
outputs/48d6bd7b-699/nano_banana_1775895148729_0.jpg


BIN=BIN
outputs/48d6bd7b-699/nano_banana_1775895453740_0.jpg


BIN=BIN
outputs/48d6bd7b-699/nano_banana_1775895803885_0.jpg


BIN=BIN
outputs/48d6bd7b-699/nano_banana_1775896094781_0.jpg


BIN=BIN
outputs/5fd2db93-5ac/nano_banana_1775926086639_0.jpg


BIN=BIN
outputs/5fd2db93-5ac/nano_banana_1775926336258_0.jpg


BIN=BIN
outputs/5fd2db93-5ac/nano_banana_1775926561018_0.jpg


BIN=BIN
outputs/5fd2db93-5ac/nano_banana_1775927016941_0.jpg


BIN=BIN
outputs/5fd2db93-5ac/nano_banana_1775927415643_0.jpg


BIN=BIN
outputs/b7191706-5dc/nano_banana_1775929219620_0.jpg


BIN=BIN
outputs/b7191706-5dc/nano_banana_1775929481610_0.jpg


BIN=BIN
outputs/b7191706-5dc/nano_banana_1775929804307_0.jpg


BIN=BIN
outputs/b7191706-5dc/nano_banana_1775930114003_0.jpg


BIN=BIN
outputs/b7191706-5dc/nano_banana_1775930416393_0.jpg