# pj0012 配图提示词规则参考 > 来源:/home/eaiadmin/eaifiles/codebase/pj0012-aiw-mbai-u/ > 用于指导 pj0235 的配图提示词规则设计。 ## 一、整体架构 pj0012 将配图规则完全外置为 **JSON 配置文件 + Markdown 提示词模板**,代码层不做硬编码。 ``` config/wechat/ ├── skills/wechat_article_skill_ITandAI/ │ ├── prompts/image_prompt_generate.prompt.md # 提示词模板 │ ├── validators/image.validator.json # 验证规则 │ └── retries/retry-policy.json # 重试策略 ├── wechat_default_image_requirements.json # 默认配图要求 ├── wechat_working_image_requirements.json # 运行时配图要求 └── accounts//wechat_working_image_requirements.json # 账号级覆盖 ``` ## 二、配图提示词生成规则 ### 2.1 分布规则 - **标题下方主图**(`TITLE_PIC`):第 1 段对应,1 张,16:9 横图 - **段落配图**(`IMAGE_PROMPT_01`, `IMAGE_PROMPT_02`...):按正文段落 1:1 生成 - **正文分割方式**:按 `#` 标题或双空行分割为段落 ### 2.2 括号标记格式 配图提示词以括号标记形式嵌入正文,格式为: ``` [槽位名: 提示词内容, size: 宽x高] ``` 示例: ```markdown [ TITLE_PIC: 封面配图提示词, size: 1024x576 ] [ IMAGE_PROMPT_01: 第1段配图提示词, size: 1024x576 ] [ IMAGE_PROMPT_02: 第2段配图提示词, size: 1024x576 ] ``` 每个标记插入在对应段落下方,后续图片生成步骤从中解析出 key、prompt、size。 ### 2.3 提示词模板 ``` 真实人物纪实摄影,公众号文章配图,第{N}段核心画面,{段落内容摘要120字},构图清晰,主体突出,电影感光影,细节丰富,高清 ``` **模板要素**: - 风格前缀:`真实人物纪实摄影,公众号文章配图` - 序号:`第{N}段核心画面` - 内容摘要:段落内容截断至 120 字 - 视觉要求:`构图清晰,主体突出,电影感光影,细节丰富,高清` - 长度约束:**40-70 个中文字** ### 2.4 全局规则(image.validator.json) | 规则 | 说明 | |------|------| | 必须包含主体 | 每个提示词必须描述画面主体 | | 必须包含场景 | 每个提示词必须描述画面场景 | | 必须包含光线 | 每个提示词必须描述光线效果 | | 禁止文字覆盖 | 不允许提示词中包含文字说明 | | 禁止拼贴风格 | 不允许拼贴/ collage 风格 | | 段落映射完整 | 段落数必须与提示词数一致 | ### 2.5 重试策略 - 默认最大重试次数:2 次 - 每次重试将失败的检查项反馈给 LLM - 重试耗尽后降级为模板拼接(兜底) ### 2.6 图片规格 | 属性 | 值 | |------|------| | 尺寸比例 | 16:9 横版 | | 分辨率 | 1792x1024 | | 提示词标签 | 1024x576 | ### 2.7 账号级风格覆盖 每个账号可独立配置图片风格,存储在 `wechat_working_image_requirements.json`: | 账号 | 风格 | 数量策略 | |------|------|---------| | default | 真实人物纪实摄影 | 按正文段落数量生成 | | account | 美食摄影风格 | 根据菜品种类灵活配图 | | account-01a312 | 通信科技行业视觉 | 关键概念一图一景 | | account-73971d | 未来科技自然动感 | 按技术模块分层展示 | ## 三、专员 JSON 定义体系 ### 3.1 技能包(Skill Package)结构 ``` config/{workspace}/skills/{skill_name}/ ├── SKILL.md # 技能描述 + 执行策略 ├── prompts/ │ ├── {step_id}.prompt.md # 步骤提示词模板(YAML 变量注入) │ └── ... ├── validators/ │ ├── {step_id}.validator.json # 验证规则 │ └── ... ├── styles/ │ ├── style-01-*.json # 文体变体 │ └── ... ├── retries/ │ └── retry-policy.json # 重试策略 └── fallbacks/ ├── fallback-policy.json # 降级策略 └── {step_id}.fallback.json # 步骤级降级资产 ``` ### 3.2 配置文件分类 | 类型 | 文件 | 内容 | 读取时机 | |------|------|------|---------| | 技能描述 | SKILL.md | 名称、描述、适用场景、执行流程 | 路由选择 | | 提示词模板 | prompts/*.prompt.md | LLM 提示词({{变量}} 注入) | 步骤执行 | | 验证规则 | validators/*.json | 检查清单、质量规则、重试反馈 | 输出验证 | | 文体变体 | styles/*.json | 风格偏好、关注点、验证器强调 | 步骤执行 | | 重试策略 | retries/*.json | 每步骤最大重试次数、策略 | 循环控制 | | 降级资产 | fallbacks/*.json | 降级提示词、默认值 | 重试耗尽 | | 业务数据 | *_working_*.json | 当前活跃配置(无缓存) | 运行时 | ### 3.3 提示词模板格式 ```markdown # prompts/outline_generate.prompt.md # Role You are the `outline_generate` draft executor for `wechat_article_skill_ITandAI`. # Goal Generate the first draft of... # Runtime Context {{runtime_inputs}} # 运行时注入 # Contract Excerpt {{contract_excerpt}} # Validator Excerpt {{validator_excerpt}} ``` 变量解析:`prompt.replace("{{var_name}}", value)` ### 3.4 验证器 JSON 结构 ```json { "step_id": "outline_generate", "checks": ["markdown_structure", "required_sections", ...], "word_budget_rules": { ... }, "repair_strategy": { "mode": "draft_then_repair", "repair_prompt_asset": "prompts/outline_repair.prompt.md", "reuse_last_draft_on_next_round": true }, "quality_rules": { "min_bullet_chars": 18, "ban_generic_patterns": ["^先用.+切入", ...], "placeholder_phrases": ["相关信号", ...] }, "retry_feedback_template": "The outline draft failed validation. Fix: {failed_checks}" } ``` ### 3.5 重试策略 JSON 结构 ```json { "default_max_retries": 2, "step_overrides": { "hot_topic_extract": 1, "topic_refine": 1, "outline_generate": 2, "content_generate": 2, "image_prompt_generate": 2, "pagemd_prepare": 0 }, "policy": { "regenerate_fully": true, "include_failed_checks_in_feedback": true, "allow_partial_patch": false } } ``` ### 3.6 多账号覆盖机制 ``` config/wechat/ # 全局默认 ├── wechat_working_image_requirements.json ├── wechat_working_outline_templates.json └── accounts/ ├── default/ # 默认账号覆盖 ├── account/ # 账号 "account" 覆盖 └── account-01a312/ # 账号 "account-01a312" 覆盖 ├── wechat_working_image_requirements.json └── wechat_working_outline_templates.json ``` 加载优先级:`accounts/{account_id}/` → 全局默认 → 硬编码兜底 ### 3.7 热更新机制 - 每次请求重新读取 JSON 文件,**不缓存** - 修改配置文件后下次请求即生效,**无需重启** - 文件不存在时返回空字典(安全降级) - 解析异常时返回空字典(安全降级) ## 四、核心设计原则 1. **三层分离**:Contract(契约层,人可读)→ Truth(数据层,机器可读)→ Skill(执行层,代码适配) 2. **代码是运行时适配器**:按路径读取 JSON/文本 → 注入运行时参数 → 执行验证 → 控制重试 → 调用 LLM 3. **不硬编码业务内容**:业务规则变更全部通过修改 JSON/Markdown 实现 4. **优先级链**:运行时配置 > 全局默认 > 账号覆盖 > 硬编码兜底