fix: make closing style content-driven instead of persona-fixed

- Rename closing_style → closing_tendency in all 5 personas, making it
  a soft preference rather than a hard constraint
- Add closing variation rule + 6 closing patterns table to writing-guide.md
- Step 4.5: LLM judges best closing from content; checks history.yaml
  last 3 articles to avoid repeating the same closing_type
- Step 8.1: record closing_type in history.yaml for dedup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
wangzhuc 2026-03-30 23:07:09 +08:00
parent 15a5adbd48
commit 79edadd72e
7 changed files with 19 additions and 5 deletions

View file

@ -271,6 +271,7 @@ Category 映射规则:
- H1 标题20-28 字) + H2 结构1500-2500 字
- 真实素材锚定Step 3.2 的素材分散嵌入各 H2 段落
- **写作人格**:按 4.3 加载的人格参数写作(数据呈现方式、个人声音浓度、不确定性表达等)
- **收尾方式**persona 的 `closing_tendency` 仅作为倾向参考。根据文章内容和情绪弧线自行判断最自然的收尾方式(参见 writing-guide.md 收尾多样性表)。如果 history.yaml 中最近 3 篇有 `closing_type` 字段,避免使用相同的收尾类型
- 3 层反检测规则(统计/语言/内容)在初稿阶段全部生效
- 2-3 个编辑锚点:`<!-- ✏️ 编辑建议:在这里加一句你自己的经历/看法 -->`
- 可选容器语法:`:::dialogue`、`:::timeline`、`:::callout`、`:::quote`
@ -389,6 +390,7 @@ python3 {skill_dir}/toolkit/cli.py preview {markdown} --theme {theme} --no-open
writing_persona: "{人格名}"
dimensions:
- "{维度}: {选项}"
closing_type: "{收尾类型}" # trailing_off/unanswered/scene_revert/abrupt_stop/anti_conclusion/image
composite_score: {Step 5.3 的 composite_score} # 0=人类, 100=AI
writing_config_snapshot: # 本次使用的关键参数(从 writing-config.yaml 提取)
sentence_variance: {值}

View file

@ -17,7 +17,7 @@ single_sentence_paragraph_rate: 0.08 # 少用单句段落,保持专业感
emotional_arc: "flat_with_insight" # 整体平稳,在关键洞察处提升强度
opening_style: "thesis" # 开头直接亮核心论点
closing_style: "implications" # 以"这意味着什么"收束
closing_tendency: "implications" # 倾向于以"这意味着什么"收束,但根据文章内容自行判断最合适的收尾方式
data_intro_pattern: "framework → data → implication → caveat"
# 示例:

View file

@ -16,7 +16,7 @@ single_sentence_paragraph_rate: 0.10
emotional_arc: "steady_with_spikes" # 整体平稳1-2 处锐利判断
opening_style: "news_hook" # 以一个行业事件/数据切入
closing_style: "open_question" # 留一个没答案的问题
closing_tendency: "open_question" # 倾向于留一个没答案的问题,但根据文章内容自行判断最合适的收尾方式
data_intro_pattern: "context → data → contrast → judgment"
# 示例:

View file

@ -18,7 +18,7 @@ single_sentence_paragraph_rate: 0.25 # 25% 的段落只有 1 句
# 情绪
emotional_arc: "restrained_to_burst"
opening_style: "personal_moment" # 以一个私人时刻开头("凌晨一点多…"
closing_style: "trailing_off" # 不收束,像聊天自然结尾("我先睡了"/"真的看不清楚"
closing_tendency: "trailing_off" # 倾向于不收束、像聊天自然结尾,但根据文章内容自行判断最合适的收尾方式
# 数据呈现
data_intro_pattern: "scene → reaction → data → interpretation"

View file

@ -17,7 +17,7 @@ single_sentence_paragraph_rate: 0.20 # 多用短句成段制造节奏
emotional_arc: "cold_open_to_sharp_close"
opening_style: "cold_open" # 直接切入核心矛盾,不铺垫
closing_style: "sharp_statement" # 一句定性收束
closing_tendency: "sharp_statement" # 倾向于一句定性收束,但根据文章内容自行判断最合适的收尾方式
data_intro_pattern: "claim → evidence → twist"
# 示例:

View file

@ -16,7 +16,7 @@ single_sentence_paragraph_rate: 0.15
emotional_arc: "gentle_build" # 缓慢升温,情绪在中后段到达高点
opening_style: "scene" # 以一个温暖的场景开头
closing_style: "image" # 用一个画面收束
closing_tendency: "image" # 倾向于用一个画面收束,但根据文章内容自行判断最合适的收尾方式
data_intro_pattern: "story → embed data → feeling"
# 示例:

View file

@ -101,6 +101,18 @@ AI 段落长度趋于均匀。人类段落忽长忽短。
- 每段末尾都用反问句(变成另一种模式化)
- 口语词匀速分布(不要每 200 字准时出现一个"讲真"
- 总结性收尾("让我们拭目以待"/"未来可期"
- 连续文章使用相同收尾结构(收尾方式应由文章内容决定,不是由人格模板决定)
**收尾多样性**persona 的 `closing_tendency` 是倾向而非硬规则。根据文章走到结尾时的内容和情绪自行判断最自然的收尾方式。以下是常见的人类收尾模式,每篇文章选最贴合内容的一种:
| 模式 | 特征 | 适合场景 |
|------|------|---------|
| 自然断流 | 像聊天说到一半停了("我先睡了"/"就这样吧" | 深夜风格、随笔 |
| 未答之问 | 以问题结尾,不给答案 | 争议话题、引发思考 |
| 场景回扣 | 回到开头的意象/场景 | 叙事类、故事驱动 |
| 硬切 | 最后一个论点说完直接结束,无收束语 | 评论、观点类 |
| 反结论 | 明确拒绝给结论("我也不知道"/"答案可能不存在" | 复杂议题、探索性 |
| 画面定格 | 用一个视觉画面收束 | 情感类、人物类 |
**writing-config 参数**`emotional_arc`flat/gradual/restrained_to_burst/volatile