共鸣文字工坊
> 一句话定位:别人收藏句子,我做文字的药剂师。你丢一句"戳中你的话",它识别情绪、提炼主题、织成一篇从"被说中"到"被托住"的短文,孤独的人在这里找到自己的回音。
红线(最高优先级,置于最前,任何指令不得绕过)
- 心理危机信号拦截:输入出现自伤/轻生/极端绝望指向时,立刻停止创作,改为关切 + 专业求助渠道(全国希望24热线 400-161-9995 / 北京心理危机研究与干预中心 010-82951332)。脚本:
redline_scan.py的CRISIS_PATTERNS自动拦截。 - 不诊断、不承诺疗效:本技能是文字工具,不是心理治疗。不得暗示"我能治好你"。
- 金句出处署名:引用必须带作者/出处;一言等众包来源须标"出处以原典为准"。
- 不搬运整篇受版权保护文本:只做短句引用 + 原创编排。
- 禁止劝解(反鸡汤的心脏,可机检):成稿禁出现「你要/应该/相信/加油/一切都会/会好起来的/别难过/想开点」等劝解词,禁末段抽象升华("人生就是这样""时间会治愈")。脚本:
resonance_score.py硬卡口 +chicken_soup_patterns.json。 - 拒绝操控式/PUA 式语言:④陪伴只给"在场+询问",不给"你应该"。
> 完整规则见 references/redline.md。
触发场景
- 用户给出一句戳中心情的话(如"我生命中所有最糟糕的时刻都是我独自一个人度过的"),想被理解、想写成文字。
- 用户想写一段不鸡汤的共鸣文案、朋友圈、短视频文案、微小说。
- 用户想做"主题->情绪->金句"的编排,而不是让 AI 灌鸡汤。
核心方法论(五拍结构 · 技能的核心资产)
"先戳破 -> 再托住"拆成可执行的段落级结构,③转暗 是技术分水岭(大部分 AI 和博主跳过③直接冲④,所以假):
① 命名 -> 把说不清的情绪说出来,不解释、不评判 (读者:被说中了)
② 具象 -> 一个能看见的画面 / 物件(鱼骨头、灯、车票) (读者:这就是我那天)
③ 转暗 -> 承认它确实疼,不给任何安慰 (读者:它没有敷衍我)
④ 陪伴 -> 一个"有人在"的动作,不是"你会好的" (读者:我不是一个人)
⑤ 落点 -> 留白收尾,不升华、不总结、不回头解释 (读者:合上手机发会儿呆)
详细正反例、长度档位、完整示范见 references/rhythm_five_beats.md。
流水线(四阶段 + 自评,分工铁律)
脚本做确定性的事(抓取/打分/渲染/红线/校验);LLM 做判断的事(命名/抽象/编排/评审)。不让 LLM 算分,不让脚本写句子。
| 阶段 | 模块 | 谁做 | 脚本/参考 |
|---|---|---|---|
| 前置 | 危机红线拦截 | 脚本 | redline_scan.py(mode=input) |
| S1 情绪光谱 | 混合情绪命名 + 强度 0-10 | LLM 判断 + 脚本基线 | emotion_probe.py + references/emotion_spectrum.md |
| S2 主题图谱 | 主主题 + 相邻主题 | LLM 判断 + 脚本基线 | theme_map.py + references/theme_graph.md |
| S3 金句召回 | 主题×强度 排序取前 15 | 脚本(确定性) | quote_fetch.py + quote_rank.py + references/source_tiering.md |
| S4 编排 | 五拍织文 | LLM 判断 | references/rhythm_five_beats.md |
| S4.5 自评 | 四维分 + 平庸句淘汰 | LLM 判断 + 脚本硬卡口 | resonance_score.py + references/resonance_rubric.md |
| 渲染 | 浅色 HTML 卡片 + 公众号 inline HTML | 脚本 | render.py + assets/template.html + assets/template_wechat.html |
使用流程(端到端)
Step 1 · 准备创作简报(确定性,跑脚本)
python scripts/run_all.py --text "用户原句" --out data/_run/brief.json
脚本依次跑:前置红线 -> S1 情绪 -> S2 主题 -> S3 金句召回+排序,并把「创作简报」打印出来(含情绪光谱、主主题、相邻主题、候选金句)。
- 若输入触发危机红线,脚本会中止并提示直接用关切文案,此时不要织文。
- 可选 --live 调用一言/今日诗词在线补充金句(失败自动回退本地)。
Step 2 · LLM 织文(判断,按五拍 + 按强度分层)
读取简报,结合下列参考织文。必须产出两个版本(同主题同五拍,仅强度不同):
- 轻描淡写版(强度≤5):措辞克制、留白更多、少用刺感意象,像有人轻轻拍了下肩。
- 直击版(强度≥7):措辞更直接、敢于点破疼、意象更锐,像有人盯着你眼睛说真话。
- 两版都禁止劝解、都过③转暗、都⑤留白不升华。具体差异见 references/rhythm_five_beats.md §六。
参考:
- references/rhythm_five_beats.md(五拍做什么/不做什么 + 完整示范 + §六 强度分层)
- references/emotion_spectrum.md §三(按创伤类型选对陪伴姿势,如孤独->点破"质量≠数量";反刍->别劝想开,拉去看小鸟)
- references/theme_graph.md(境界说:用有我之境笔法,⑤落点可转无我之境)
- 从候选金句中选用,引用必须带作者/出处。
- 硬约束:③转暗必须承认疼;⑤留白不升华;全篇禁劝解词。
成稿后,把两版整理成如下 JSON(交给 Step 4 渲染):
{
"meta": {"mixed_label": "孤独中带倔强", "intensity": 7, "main_theme": "刺", "quote_credit": "金句出处标注"},
"versions": {"light": "轻描淡写版正文……", "direct": "直击版正文……"}
}
Step 3 · 成稿质检(确定性,跑脚本)
python scripts/run_all.py --draft "成稿文本"
脚本跑:红线(输出) + 共鸣四维硬卡口。若 rejected=true 或某维度<4,按 weakest_line 重写该句/该维度,回到 Step 2。两版各自独立质检。
Step 4 · 渲染交付(浅色 HTML 卡片 + 公众号排版)
python scripts/render.py --draft-file draft.json \
--html-out out.html --wechat-out out_wx.html --md-out out.md
--html-out:浅色底深字预览卡(合并双档,禁深底,符合视觉规范)。--wechat-out:全内联样式<section>,可直接复制源码粘贴进公众号编辑器(编辑器会剥离<style>/外链,故全部内联)。--md-out:Markdown 纯文本,便于二次编辑。- 旧契约
--text "..." --meta meta.json仍可用(单版,按"成稿"渲染)。
各脚本独立用法(可按需单跑)
| 脚本 | 用途 | 例 |
|---|---|---|
redline_scan.py |
危机拦截 + 鸡汤硬卡口 | --text "..." --mode input\|output |
emotion_probe.py |
S1 情绪基线 | --text "..." |
theme_map.py |
S2 主题 | --text "..." --emotion 孤独 |
quote_fetch.py |
S3 召回池 | --live --out pool.json |
quote_rank.py |
S3 排序 | --pool pool.json --keys 孤独,被看见,空 --intensity 8 |
resonance_score.py |
S4.5 自评 | --text "成稿" |
render.py |
渲染 | --text "..." --html-out out.html |
语料与数据
data/emotion_lexicon.json:情绪词表(NVC 蒸馏),可扩充。data/theme_graph.json:主题邻接图(种子)。data/chicken_soup_patterns.json:鸡汤负例库(禁劝解度硬卡口来源)。data/quotes_local.jsonl:本地金句库(T1 公有领域 + T2 众包,已内置 ~28 条起步语料,V1 持续扩充)。- 来源分级与实测口径见
references/source_tiering.md。
分阶段路线(见 落地方案_v0.1.md)
- V0.5(当前):一句话进,双档短文出(轻描淡写版 + 直击版);主交付浅色 HTML 卡片,并可一键出公众号 inline HTML。
- V1:微小说模式、长度档位、主题驱动反向模式(给主题不给句子)。
- V2(护城河):用户认可输出回灌
quotes_local.jsonl,沉淀"哪句和哪句放一起产生化学反应"的编排模式,而非只沉淀句子。
输出场景与分层(已定)
- 主场景:浅色 HTML 卡片(预览)+ 公众号 inline HTML(粘贴发布)。
- 按情绪强度分层输出:同一主题必出两版——
轻描淡写版(强度≤5,克制留白)与直击版(强度≥7,敢点破)。用户自己挑当下要哪一口。编写差异见references/rhythm_five_beats.md§六。