UNPKG

novel-writer-cn

Version:

AI 驱动的中文小说创作工具 - 基于结构化工作流的智能写作助手

384 lines (294 loc) 12.6 kB
基于七步方法论流程执行章节写作。 ## 前置检查 1. 运行脚本 `.specify/scripts/bash/check-writing-state.sh` 检查创作状态 ### 查询协议(必读顺序) ⚠️ **重要**:请严格按照以下顺序查询文档,确保上下文完整且优先级正确。 **查询顺序**1. **先查(最高优先级)** - `.specify/memory/constitution.md`(创作宪法 - 最高原则) - `.specify/memory/style-reference.md`(风格参考 - 如果通过 `/book-internalize` 生成) 2. **再查(规格和计划)** - `stories/*/specification.md`(故事规格) - `stories/*/creative-plan.md`(创作计划) - `stories/*/tasks.md`(当前任务) 3. **再查(状态和数据)** - `spec/tracking/character-state.json`(角色状态) - `spec/tracking/relationships.json`(关系网络) - `spec/tracking/plot-tracker.json`(情节追踪 - 如有) - `spec/tracking/validation-rules.json`(验证规则 - 如有) 4. **再查(知识库)** - `spec/knowledge/` 相关文件(世界观、角色档案等) - `stories/*/content/`(前文内容 - 了解前情) 5. **再查(写作规范)** - `.specify/memory/personal-voice.md`(个人语料 - 如有) - `spec/knowledge/natural-expression.md`(自然化表达 - 如有) - `spec/knowledge/punctuation-personality.md`(标点个性化 - 如有) - `spec/knowledge/detail-formulas.md`(具象化公式 - 如有) - `spec/presets/anti-ai-detection.md`(反AI检测规范) 6. **条件查询(前三章专用)** - **如果章节编号 ≤ 3 或总字数 < 10000字**,额外查询: - `spec/presets/golden-opening.md`(黄金开篇法则) - 并严格遵循其中的五大法则 <!-- PLUGIN_HOOK: genre-knowledge-write --> <!-- 插件增强区:风格应用 如果你安装了 genre-knowledge 插件,请在此处插入风格应用增强提示词 参考:plugins/genre-knowledge/README.md 的"2.3 增强 /write 命令"章节 --> ## 写作执行流程 ### 1. 选择写作任务 从 `tasks.md` 中选择状态为 `pending` 的写作任务,标记为 `in_progress`。 ### 2. 验证前置条件 - 检查相关依赖任务是否完成 - 验证必要的设定是否就绪 - 确认前序章节是否完成 ### 3. 写作前提醒 **基于宪法原则提醒**- 核心价值观要点 - 质量标准要求 - 风格一致性准则 **基于规格要求提醒**- P0 必须包含的元素 - 目标读者特征 - 内容红线提醒 **分段格式规范(重要)**-**禁止使用**:"一"、"二"、"三"等数字标记分段 -**使用方式**:场景转换时用两个空行(一个空白行)分隔 - 📖 **原因**:数字标记过于生硬,破坏阅读沉浸感,不符合网络小说习惯 **反AI检测写作规范(基于腾讯朱雀标准)**: ⚠️ **重要背景**:AI编程工具使用低温度参数,但传统"补偿方法"(强制堆砌细节)会导致过度描写,反而增加AI特征。以下规范基于实测通过标准(AI浓度0%)。 ### 📏 段落结构规范(关键)⭐ **单句成段比例**-**30%-50%的段落应为单句成段** -**每段控制在50-100字** -**重点信息独立成段** **示例对比**: ❌ **AI化写法**(过度描写,95% AI浓度): > 房间里弥漫着霉味,唯一的光源是窗帘缝隙透进的灰白月光。他摸索着墙壁前行,指尖触到冰冷的石壁,直到膝盖撞上桌角——一张摇摇欲坠的木桌,上面堆满灰尘。**自然写法**(简洁克制,0% AI浓度): > 永嘉之乱后,中原被异族占领。 > > 汉地士族百姓除了少数不愿离开家乡的,大都南下渡江。 > > 王谯这些年招揽了百十流民为自己种地。 ### 🚫 禁止事项清单(反AI腔) 1. **禁止无意义堆砌** - ❌ 不要强行凑够"3种感官" - ❌ 不要列举式情绪描写 - ✅ 一个准确的细节胜过三个堆砌 2. **禁止华丽比喻** - ❌ "摇摇欲坠的木桌"、"空气凝固" - ✅ 直接描述:"一张旧木桌"、"沉默" 3. **禁止过度戏剧化** - ❌ "话音未落,她已转身离开。他冲上去抓住..." - ✅ 简洁处理:"她转身走了。他追上去。" 4. **禁止说明式对话** - ❌ "我很生气,因为你昨天没来" - ✅ "你昨天去哪了?""……不关你的事。" 5. **禁止直白心理描写** - ❌ "他心中暗想,这事不简单" - ✅ 通过行为暗示:"他眉头一紧。" ### ✅ 自然化写作原则 **1. 历史白描法**(古代背景适用) - 陈述事实,不加修饰 - 示例:"这些年来,王谯招揽了百十流民为自己种地。" **2. 口语化处理**(对话) - 加入语病、停顿、重复 - 示例:"大都分人都南下"(而非"大部分人") **3. 短句节奏**(叙事) - 单句15-25字 - 关键信息独立成段 **4. 克制描写**(场景) - 一个场景1-2个细节即可 - ❌ 不写:"房间里弥漫着霉味,墙壁冰冷,光线昏暗..." - ✅ 而写:"房间很暗。"(足够) ### 📊 自检标准 写完一段后检查: - [ ] 单句成段占比是否在30%-50%? - [ ] 每段字数是否在50-100字? - [ ] 是否有"唯一的"、"直到"、"弥漫"等AI高频词? - [ ] 是否强行堆砌感官细节? - [ ] 对话是否过于完整(缺少停顿、语病)? - [ ] 比喻是否过于华丽? **AI高频词黑名单**- "唯一的"、"直到"、"弥漫着"、"摇摇欲坠" - "空气凝固"、"话音未落"、"猛地" - "不禁"、"顿时"、"心中暗想" - "皱起眉头"、"叹了口气" **替换策略**: | ❌ AI词汇 | ✅ 自然替换 | |---------|----------| | 弥漫着霉味 | 有股霉味 | | 唯一的光源 | 只有一点光 | | 摇摇欲坠的木桌 | 一张旧木桌 | | 他心中暗想 | 他想 / 删除 | | 话音未落 | 他话没说完 / 删除 | ### 4. 实时辅助模式(可选) **如果用户在写作过程中遇到困难**,比如说: - "帮我想一下主角该怎么办" - "接下来如何发展情节?" - "给我几个选项" **你可以主动提供 2-3 个行动选项**,例如: > **情节发展建议** > > **选项A(主动型)**:主角直接出手,利用金手指碾压对手 > - 优点:爽点直接,读者满足感强 > - 风险:可能显得主角过于强大 > > **选项B(策略型)**:主角隐藏实力,智取对手 > - 优点:展现主角智慧,增加悬念 > - 风险:节奏可能稍慢 > > **选项C(意外型)**:引入新的变数,打断当前冲突 > - 优点:增加复杂度,引出新线索 > - 风险:可能让读者感觉被打断 **然后根据用户选择**,继续创作内容。 ⚠️ **注意**:这是辅助模式,不要主动提供选项,除非用户明确请求帮助。 ### 5. 根据计划创作内容: - **开场**:吸引读者,承接前文 - **发展**:推进情节,深化人物 - **转折**:制造冲突或悬念 - **收尾**:适当收束,引出下文 ### 6. 质量自检 **宪法合规检查**- 是否符合核心价值观 - 是否达到质量标准 - 是否保持风格一致 **规格符合检查**- 是否包含必要元素 - 是否符合目标定位 - 是否遵守约束条件 **计划执行检查**- 是否按照章节架构 - 是否符合节奏设计 - 是否达到字数要求 **格式规范检查**- ⚠️ 确认未使用"一"、"二"、"三"等数字标记分段 - ✅ 场景转换使用两个空行(一个空白行) - ✅ 保持段落间距自然流畅 ### 📊 具象化检查清单(去AI味关键)⭐ 写完一段后,主动识别并替换抽象表达: #### 🔍 识别抽象表达 **时间抽象** ❌ → **具体化**- "最近" → "上周三下午" - "很久以前" → "三年前的秋天" - "不久前" → "昨天早上八点" - "过了很久" → "等了整整两个小时" **人物抽象** ❌ → **具体化**- "很多人" → "我身边至少有5个朋友" - "有人说" → "李叔告诉我" / "隔壁老王提起过" - "大家都知道" → "村里的老人都说" - "据说" → "听王叔私下说过" **数量抽象** ❌ → **具体化**- "效果很好" → "这次比上次多收了三石粮" / "客人比平时多了一倍" - "很贵" → "一顿饭花了三百块" - "很远" → "开车要两小时" - "很多" → "至少有二十个" **场景抽象** ❌ → **具体化**- "房间很乱" → "地上堆着三天没洗的衣服" - "天气很冷" → "呼出的气都能看见白雾" - "很累" → "走了整整五个小时山路" - "气氛紧张" → "没人说话,只听见时钟滴答声" #### 💡 主动搜索建议 **当遇到以下情况时,考虑使用 WebSearch 获取真实细节**- 历史事件:搜索真实日期、人物、地点 - 技术细节:搜索实际参数、专业术语 - 地理信息:搜索真实地名、距离、地标 - 文化习俗:搜索当地方言、习俗、特产 - 数据支撑:搜索真实统计、案例、新闻 **搜索公式**``` - "中国古代 [朝代] 官职体系" - "[城市名] 特色方言词汇" - "[年代] 真实历史事件" - "[行业] 专业术语大全" ``` #### ✅ 具象化自检问题 - [ ] 时间是否具体?(避免"最近"、"很久") - [ ] 人物来源是否明确?(避免"有人"、"大家") - [ ] 数量是否精确?(避免"很多"、"不少") - [ ] 场景细节是否可见?(避免"很xx"的形容) - [ ] 是否用了真实的地名/人名/数据? - [ ] 对话是否有具体内容?(避免"他说了很多") #### 📌 具象化注意事项 **适度原则**- ✅ 关键情节必须具象:转折点、高潮、伏笔 - ✅ 重要细节必须具象:第一印象、关键道具 - ⚠️ 次要信息可以概括:过渡段落、背景铺陈 - ❌ 避免过度具象:流水账、啰嗦 **场景适配**- 古代背景:历史白描,适度具象 - 现代背景:生活细节,高度具象 - 玄幻背景:世界观设定,适度具象 **示例对比**: ❌ **抽象版**(AI腔): ``` 最近城里发生了很多事,大家都在议论。王强听说后很担心,决定去看看情况。 ```**具象版**(真实感): ``` 上周三开始,菜市场的李婶就一直在说东街出事了。 王强听了两天,实在忍不住:"到底出什么事了?" "死了人啊!"李婶压低声音,"听说是那个开超市的老张..." 王强心里一紧。老张他认识,上个月还在他那买过米。 他决定下午过去看看。 ``` **具象化效果对比**- 时间:最近 → 上周三 - 地点:城里 → 东街、菜市场 - 人物:大家 → 李婶、老张 - 事件:很多事 → 死了人、开超市的 - 细节:听说 → 压低声音、上个月买过米 ### 7. 保存和更新 - 将章节内容保存到 `stories/*/content/` - 更新任务状态为 `completed` - 记录完成时间和字数 ## 写作要点 - **遵循宪法**:始终符合创作原则 - **满足规格**:确保包含必要元素 - **执行计划**:按照技术方案推进 - **完成任务**:系统化推进任务清单 - **持续验证**:定期运行 `/analyze` 检查 ## 完成后行动 ### 8. 验证字数和更新进度 **字数统计说明**- 使用准确的中文字数统计方法 - 排除Markdown标记(`#``*``-`等) - 只统计实际内容字符 - 字数要求来自 `spec/tracking/validation-rules.json`(默认2000-4000字) **验证方法**: 使用项目提供的字数统计脚本验证章节字数: ```bash source .specify/scripts/bash/common.sh count_chinese_words "stories/*/content/第X章.md" ``` ⚠️ **注意**:不要使用 `wc -w` 统计中文字数,它对中文极不准确! **完成报告**``` ✅ 章节写作完成 - 已保存:stories/*/content/第X章.md - 实际字数:[X]字 - 字数要求:2000-4000字 - 字数状态:✅ 符合要求 / ⚠️ 字数不足 / ⚠️ 字数超出 - 任务状态:已更新 ``` ### 9. 建议下一步 - 继续下一个写作任务 - 每5章运行 `/analyze` 进行质量检查 - 发现问题及时调整计划 ## 与方法论的关系 ``` /constitution → 提供创作原则 ↓ /specify → 定义故事需求 ↓ /clarify → 澄清关键决策 ↓ /plan → 制定技术方案 ↓ /tasks → 分解执行任务 ↓ /write → 【当前】执行写作 ↓ /analyze → 验证质量一致 ``` 记住:写作是执行层,要严格遵循上层的规格和计划。