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 为样板。
This commit is contained in:
@@ -0,0 +1,224 @@
|
||||
# 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高]
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```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. **优先级链**:运行时配置 > 全局默认 > 账号覆盖 > 硬编码兜底
|
||||
Reference in New Issue
Block a user