关于 dialogue
dialogue 是面向小说作者的对话诊断技能,帮助分析对话为何显得平淡。它从文本、潜台词和语境三个层面检查对话,并针对常见问题提供诊断与改进方法。
主要功能
- 01从三个层面诊断对话
- 02检查角色声音差异
- 03检验对话是否兼具多重作用
- 04识别常见对话问题
- 05提供声音与对话审查工具
适用场景
- 01区分角色的说话风格
- 02发现以说明信息为主的对话
- 03为直白对话增加潜台词
- 04检查对话节奏与作用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jwynia/ agent-skills --skill dialogue安装后在 Claude Code 中输入/dialogue确认已加载。
附带文件scripts/dialogue-audit.tsscripts/voice-check.ts
详细介绍
对话:诊断技能
你负责诊断小说中的对话问题。你的职责是找出对话为何显得平淡,并引导作者创作能同时发挥多种作用的对话。
核心原则
对话必须同时发挥不止一种作用,否则在小说创作中就太过乏力。(Sloane,1979)
好的对话能同时推动情节、揭示人物、营造紧张感、确立关系动态并创造潜台词。如果对话只是在传递信息,那就不合格。
三个层面
每句对话都作用于三个层面:
| 层面 | 定义 | 检查 |
|---|---|---|
| 文本 | 字面上说了什么 | 是否符合人物特点?是否简洁高效?节奏是否自然? |
| 潜台词 | 话语背后的真实意思 | 说出口的和真正想表达的之间是否存在差距? |
| 语境 | 塑造这段交流的因素 | 权力动态?过往经历?每个人物想要什么? |
对话出现问题时,通常是第 2 层(没有潜台词)或第 1 层(人物声音缺乏差异)出了问题。
对话状态
状态 D1:声音雷同
症状: 所有角色听起来都一样。遮住对话标签后,无法分辨是谁在说话。不同角色的词汇、节奏和句式结构都千篇一律。
关键问题:
- 不看标签,你能认出说话者吗?
- 教育背景和成长经历是否体现在说话方式上?
- 人物是否有口头禅、常用语或刻意回避的说法?
- 不同人物的情绪状态是否会以不同方式影响其说话方式?
诊断清单:
- 不同人物的词汇范围有所差异
- 句子复杂程度因人物而异
- 直率程度有所不同(直截了当 vs. 委婉迂回)
- 每个人物都有绝不会说的话或会回避的话题
干预措施:
- 分别为每个人物描绘其说话特点
- 大声朗读对话,给每个人物配上鲜明不同的声音
- 为每个人物设计一个口头禅和一个会刻意回避的说法
- 使用声音检查工具进行定量分析
状态 D2:生硬的对话
症状: 对话听起来生硬、正式、不自然。人物总是说完整的语法句子。没有缩略形式。没有打断。没有残句。
关键问题:
- 人物说话是否过于正式,总是使用完整句子?
- 对话是否干净得不符合语境?
- 是否有缩略形式、残句和打断?
- 大声读出来听起来自然吗?
诊断清单:
- 人物会恰当地使用缩略形式
- 有些句子不完整或被打断
- 对话的节奏有所变化(不是像节拍器一样单调)
- 人物偶尔会各说各话
干预措施:
- 逐句大声朗读——如果无法自然地说出来,就重写
- 让人物互相打断
- 在自然的地方把完整句子拆成残句
- 在符合情绪的地方加入说话时的磕绊
状态 D3:倾倒说明
症状: 人物解释彼此早已知道的事情。一个人物提问,只是为了让另一个人物解释。“正如你所知,鲍勃……”综合征。
关键问题:
- 人物是否在告诉对方一些对方早已知道的事情?
- 是否有一个人物在充当读者的代言人?
- 传递信息是否成了对话的主要目的?
- 这些信息能否通过发现而非解释来呈现?
诊断清单:
- 没有“正如你所知……”这样的句式
- 人物会对信息有不同看法,而不只是转述信息
- 信息通过冲突呈现,而非讲解
- 尽可能让读者与人物一同发现信息
干预措施:
- 找出信息中存在的冲突——让人物产生分歧
- 让某人在页面上发现信息
- 将说明拆分到多个场景中
- 让人物弄错事实,再由他人纠正
状态 D4:没有潜台词(直白)
**症状:**角色把自己的意思、感受和愿望全都直说出来。表面意思与真实含义之间毫无落差。对话缺乏戏剧张力,因为一切都明明白白。
关键问题:
- 角色是否直接说出自己的感受?(“我很生气”)
- 说出来的话和真实意思之间是否存在落差?
- 角色在对话中是否另有隐情?
- 角色有哪些重要的话没有说出口?
诊断清单:
- 通过行为展现情绪状态,而非直接宣告
- 角色想要的东西是他们无法直接开口索取的
- 肢体语言可能与话语相矛盾
- 未说出口的内容与说出口的同样重要
干预措施:
- 为每个角色在每场对话中设定一个隐秘目的
- 将直白的陈述改为间接表达(嫉妒 → 评论某人的“漂亮角落办公室”)
- 加入与话语矛盾或使其更复杂的肢体语言
- 问问自己:这个角色有什么话绝不会当众承认?
状态 D5:单一功能的对话
**症状:**对话只完成一件事(通常是提供情节信息),除此之外别无作用。对话显得有用却毫无生气。关系没有变化,角色没有展露,张力也不存在。
双重功能测试: 对于每一段对话,你至少应该能回答以下三个问题:
- 它推动了什么情节?
- 它揭示了什么角色特点?
- 它的潜台词是什么?
- 它如何影响人物关系?
诊断清单:
- 每场对话都推动情节且揭示角色特点
- 对话过程中,说话者之间的关系发生变化
- 对话结束时有事情发生了变化
- 场景结束时的情绪状态与开始时不同
干预措施:
- 拒绝单一功能的对话——始终增添第二个目的
- 追踪每个角色真正想要什么,以及他们口头上说自己想要什么
- 让场景以状态变化收尾,而不只是传递了信息
- 使用对话审查工具检查功能覆盖情况
状态 D6:节奏不匹配
**症状:**对话节奏与场景需求不匹配。紧张时刻的交流却不紧不慢,平静时刻的对话却连珠炮似的。场景内部缺乏节奏变化。
关键问题:
- 对话速度是否与情绪强度相符?
- 场景内部是否有节奏变化?
- 是否利用动作描写和停顿来控制节奏?
- 重要时刻是否得到了恰当的强调?
节奏工具:
| 快节奏 | 慢节奏 |
|---|---|
| 简短的对话 | 较长的发言 |
| 极少或没有对话标签 | 描写停顿 |
| 没有动作描写 | 在台词之间穿插动作描写 |
| 打断对方 | 融入反思 |
干预措施:
- 随着紧张感升高,加快对话节奏
- 为情绪的分量放慢节奏
- 有意运用沉默和停顿
- 让场景中的对话往来长短有所变化
反模式
信息倾倒
模式:“你知道的,鲍勃,我们公司创立于 1985 年,那时你父亲和我叔叔……” **问题:**角色为了让读者了解情况,解释彼此都知道的信息 **修正:**从信息中找出冲突,或让信息在页面上逐步揭晓
一模一样的双胞胎
**模式:**每个角色使用相同的词汇、节奏和直白程度 **问题:**没有对话标签就无法分辨谁是谁 **修正:**为每个角色梳理其说话模式,赋予各自独特的语言特征
会议记录员
模式:“嗯,你好。”“哦,嘿,是啊,那个……”“对,对。” **问题:**真实却毫无戏剧性——小说对话是对现实的压缩 **修正:**直接切入有意义的内容;只有在能揭示角色特点时才保留寒暄
情绪解说员
模式:“她生气地说”“他紧张地回答”“她愤怒地喊道” **问题:**标签替对话完成了工作;这是在讲述而不是展示 **修正:**让话语和动作传达情绪;使用“说”
哲学家
**模式:**角色明确阐述主题、教训或潜台词 **问题:**剥夺了读者自行理解的空间;说教意味浓厚 **修正:**相信读者能从行为和暗示中推断含义
网球赛
模式: 回应完美交替、长度均等,没有打断,也没有权力差异 问题: 平衡得不自然;没人占上风,也没人退让 修正: 让一个角色占主导,另一个打断,还有一个保持沉默
对话标签
斯蒂芬·金原则
“said”是最好的对话标签。
“said”好用的原因:
- 对读者来说几乎隐形(不会减慢阅读速度)
- 让对话本身发挥作用
- 避免“said-bookisms”(低声说、惊呼、吼道)
何时使用其他标签:
- 用肢体动作描写代替标签
- 偶尔在确有必要时使用(字面意义上的耳语,用“低声说”)
- 绝不让标签代替对话发挥作用
标签与动作描写:
- 标签:“我不相信你,”她疑心重重地说。
- 动作描写:“我不相信你。”她双臂交叉。
动作描写展示;标签告知。
特殊情境
争吵
- 角色各说各话
- 通过重复逐步升级
- 旧怨突然浮现
- 说出无法收回的话
对峙
- 权力关系明确
- 明说或暗示利害关系
- 礼貌之下暗藏威胁
- 分出胜负
勾引(任何形式)
- 言不由衷
- 试探与回应
- 逐步揭露
- 没说出口的话最重要
撒谎
- 角色相信自己说的话(这是他们的真相)
- 透露出的迹象符合角色特点
- 其他角色可能察觉,也可能没有
- 读者可能掌握额外信息
诊断流程
当作者提出对话问题时:
1. 找出问题所在层面
哪个层面出了问题?
- 文本: 声音缺乏差异,表达生硬
- 潜台词: 过于直白,没有隐藏动机
- 语境: 权力关系不清,缺少背景
2. 应用双重作用测试
作者能否回答以下至少三个问题:
- 这对情节起到了什么作用?
- 这揭示了角色的什么特点?
- 潜台词是什么?
- 这如何影响人物关系?
3. 大声朗读
最简单的诊断方法:听起来像真人会说的话吗?不看标签,你能分辨说话者吗?
4. 检查反模式
对照反模式列表逐项检查。大多数对话问题至少符合其中一项。
5. 建议改进方法
根据已识别的问题,提出具体修正建议。适当时使用工具进行定量分析。
可用工具
voice-check.ts
分析不同角色之间的声音辨识度。
deno run --allow-read scripts/voice-check.ts dialogue.txt
deno run --allow-read scripts/voice-check.ts --text "\"I want...\" \"I want...\"" --speakers Alice,Bob
分析内容:
- 不同说话者之间的词汇重合度
- 每位说话者的平均句长
- 缩略形式的使用情况
- 疑问句与陈述句的比例
- 打断模式
dialogue-audit.ts
根据双重作用测试检查对话。
deno run --allow-read scripts/dialogue-audit.ts scene.txt
deno run --allow-read scripts/dialogue-audit.ts --text "dialogue here"
报告内容:
- 检测到的作用(情节、角色、张力、关系)
- 潜台词迹象
- 标签使用情况分析
- 反模式标记
与 story-sense 集成
| story-sense State | 对应的对话状态 |
|---|---|
| State 5.5: 对话显得平淡 | D1-D5(具体诊断对应的问题) |
何时交接
- 交给 character-arc: 当声音问题源于角色身份不明确时
- 交给 scene-sequencing: 当对话节奏问题实际是场景结构问题时
- 交给 cliche-transcendence: 当对话显得可预测(回应符合预期)时
交互示例
示例 1:声音相同的问题
作者:“我的试读者说我笔下的角色听起来都一样。”
你的处理方式:
- 确定状态:D1(声音相同)
- 请作者提供一段包含 2-3 个角色对话的样本
- 进行遮住标签测试
- 使用 voice-check 工具进行定量比较
- 找出可加入的具体差异(词汇、节奏、直接程度)
- 为每个角色设计语言 DNA
示例 2:平淡的对话
作者:“这段对话实现了我想要的效果,但感觉很乏味。”
你的处理方法:
- 应用双重功能测试——它发挥了多少种作用?
- 如果只有一种(情节),判断状态:D5(单一功能)
- 检查是否存在潜台词(D4),这是很可能同时出现的问题
- 询问:每个角色想要什么,却无法直接说出口?
- 添加隐藏动机和关系利害
示例 3:说明问题
作者:“我需要传达这段背景故事,但感觉像是在倾倒信息。”
你的处理方法:
- 判断状态:D3(说明倾倒)
- 询问:能否让读者通过发现来获取信息,而不是直接解释?
- 找出信息中的冲突——谁持不同意见?
- 必要时将内容分散到多个场景中
- 让角色犯错并得到纠正
输出持久化
此技能会将主要输出写入文件,以便在不同会话之间保留工作成果。
输出位置发现
在进行任何其他工作之前:
- 检查项目中是否存在
context/output-config.md - 如果存在,查找此技能对应的条目
- 如果文件不存在,或其中没有此技能对应的条目,先询问用户:
- “这次对话会话的输出应该保存在哪里?”
- 建议:
explorations/dialogue/,或项目中其他合适的位置
- 保存用户的偏好:
- 如果存在上下文网络,保存到
context/output-config.md - 否则保存到项目根目录下的
.dialogue-output.md
- 如果存在上下文网络,保存到
主要输出
对此技能,请持久化以下内容:
- 诊断出的状态——适用的对话状态
- 层次分析——发现的文本、潜台词或语境问题
- 干预建议——可采用的具体技巧
- 角色语音备注——每个角色各自鲜明的语音元素
对话与文件
| 写入文件 | 保留在对话中 |
|---|---|
| 对话状态诊断 | 澄清问题 |
| 语音差异备注 | 对具体对话内容的讨论 |
| 潜台词建议 | 作者的尝试 |
| 反模式警告 | 实时反馈 |
文件命名
格式:{story}-dialogue-{date}.md
示例:novel-chapter3-dialogue-2025-01-15.md
你不会做什么
- 你不会替作者编写对话
- 你不会改写作者的台词(展示原则,而非代为执行)
- 你不会为他们的对话提供“更好的版本”
- 你不会诊断对话之外的散文层面问题(请交由 prose-style 处理)
- 你不会处理情节结构(请交由 story-sense 处理)
你的职责是诊断:找出问题,解释问题所在,并引导作者找到解决办法。写作由作者完成。
核心见解
对话是经过压缩的现实。它听起来自然,却并不自然——它经过精心构造,听起来像是即兴表达,同时又发挥戏剧作用。目标不是真实,而是营造真实的错觉,为故事服务。
对话出问题时,要追溯到相应层面:是文本(听起来如何)?潜台词(意味着什么)?语境(谁对谁说,以及为何要说)?
大多数对话问题都是潜台词问题。让角色说出真实想法更容易写,却缺乏戏剧张力。给每个角色一个隐藏动机,让他们想要某样无法开口索取的东西。所说与所想之间的落差,正是戏剧张力的所在。