Files
eaiadmin 011f722999 feat: 专员 JSON 配置体系 + 配图提示词规则重构
- 新增配图提示词 JSON 规则(image_prompt.json):封面图 + 每 500 字按字数分布
- 新增 Go 配置加载器(weixin_public_account_image_prompt_config.go):从嵌入的 spec 目录读取 JSON 配置
- 新增 weixin_public_account 完整 spec 目录:skill.md, workflow.json, domains.json, policy.json, validators/
- 新增 pj0012 参考文件(pj0012-wechat-image-spec.md):配图规则 + 专员 JSON 定义体系
- 产物 Tab 添加下载按钮 + 整体导出区
- 修复前端 Markdown 渲染 bug + 步骤消息分段问题

所有专员定义向 JSON 配置迁移,以 weixin_public_account 为样板。
2026-09-24 23:01:06 +08:00

7.4 KiB
Raw Permalink Blame History

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/<account_id>/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高]

示例:

[ 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 提示词模板格式

# 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 结构

{
  "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 结构

{
  "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. 优先级链:运行时配置 > 全局默认 > 账号覆盖 > 硬编码兜底