@oh-story/dsh 0.1.9 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -12
- package/lib/client.js +204 -72
- package/lib/client.js.map +3 -3
- package/lib/drama/manifest.json +84 -74
- package/lib/drama/skills/short-drama/SKILL.md +2 -2
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +14 -0
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +10 -0
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +6 -9
- package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
- package/lib/drama/skills/short-drama-edit/SKILL.md +27 -29
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +2 -2
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +24 -67
- package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +27 -56
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +37 -79
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +39 -92
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +12 -16
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +126 -11
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +64 -0
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
- package/lib/drama/skills/short-drama-produce/SKILL.md +5 -1
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +14 -20
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +8 -26
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +142 -1
- package/lib/drama/skills/short-drama-review/SKILL.md +2 -3
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +6 -19
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +9 -35
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +10 -6
- package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +58 -21
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +10 -9
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +17 -0
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +12 -38
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +4 -7
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -22
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +6 -19
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +2 -3
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +34 -9
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +2 -2
- package/lib/drama/skills/short-drama-write/SKILL.md +2 -4
- package/lib/index.js +289 -91
- package/lib/index.js.map +4 -4
- package/lib/novel-to-game/README.md +299 -59
- package/lib/novel-to-game/README_ZH.md +299 -56
- package/lib/novel-to-game/VERSION +1 -1
- package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
- package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
- package/lib/novel-to-game/manifest.json +77 -87
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +7 -12
- package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
- package/lib/novel-to-game/skills/game-build/SKILL.md +13 -14
- package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
- package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
- package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
- package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
- package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
- package/lib/novel-to-game/skills/game-concept/SKILL.md +13 -15
- package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
- package/lib/novel-to-game/skills/game-qa/SKILL.md +6 -7
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +9 -5
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +12 -16
- package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
- package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
- package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +4 -10
- package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +9 -21
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +5 -8
- package/lib/oh-story/manifest.json +230 -185
- package/lib/oh-story/roles/chapter-extractor.md +177 -237
- package/lib/oh-story/roles/consistency-checker.md +4 -4
- package/lib/oh-story/roles/narrative-writer.md +24 -25
- package/lib/oh-story/roles/story-architect.md +5 -5
- package/lib/oh-story/roles/story-explorer.md +11 -11
- package/lib/oh-story/skills/story/SKILL.md +13 -7
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory.md +54 -24
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
- package/lib/oh-story/skills/story-deslop/SKILL.md +40 -53
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +11 -10
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +54 -24
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +1 -1
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-import/SKILL.md +77 -81
- package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
- package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +10 -8
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +8 -6
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +34 -16
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +210 -2
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +3 -0
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +91 -258
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +245 -0
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +2 -2
- package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
- package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +113 -105
- package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +169 -125
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +172 -64
- package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +42 -132
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +5 -5
- package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1106 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
- package/lib/oh-story/skills/story-long-scan/SKILL.md +4 -1
- package/lib/oh-story/skills/story-long-write/SKILL.md +38 -29
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +11 -10
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +25 -20
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +54 -24
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
- package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +4 -0
- package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +4 -13
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/project-files.md +9 -7
- package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +12 -4
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +1 -2
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +8 -6
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +86 -115
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +55 -120
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +15 -11
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +66 -68
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +4 -12
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +139 -18
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +34 -16
- package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +5 -3
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +58 -0
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +210 -2
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +3 -0
- package/lib/oh-story/skills/story-review/SKILL.md +68 -85
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +11 -10
- package/lib/oh-story/skills/story-review/references/author-memory.md +54 -24
- package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +4 -0
- package/lib/oh-story/skills/story-review/references/review-quality.md +4 -10
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +8 -6
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +210 -2
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +3 -0
- package/lib/oh-story/skills/story-setup/SKILL.md +50 -42
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +11 -10
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +4 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +4 -12
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +22 -3
- package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +5 -1
- package/lib/oh-story/skills/story-short-scan/SKILL.md +5 -1
- package/lib/oh-story/skills/story-short-write/SKILL.md +6 -147
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +54 -24
- package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +4 -0
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +2 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +3 -2
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +126 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +32 -0
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
- package/lib/types/client/drama-production-view.d.ts.map +1 -1
- package/lib/types/client/file-activity.d.ts +19 -1
- package/lib/types/client/file-activity.d.ts.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/production-prompts.d.ts +7 -0
- package/lib/types/client/production-prompts.d.ts.map +1 -1
- package/lib/types/client/production-runtime.d.ts +16 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -1
- package/lib/types/drama-adapters.d.ts +5 -3
- package/lib/types/drama-adapters.d.ts.map +1 -1
- package/lib/types/native-hooks.d.ts +52 -0
- package/lib/types/native-hooks.d.ts.map +1 -1
- package/lib/types/role-identity.d.ts +17 -0
- package/lib/types/role-identity.d.ts.map +1 -0
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/package.json +45 -45
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -58
- package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
- package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -38
- package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 去AI味 Gate 执行细则
|
|
2
2
|
|
|
3
|
-
本文件承接调用方选定 Gate;只执行所选范围,不扩大为全量。表达先按 [style-resolution.md](style-resolution.md) 的本书裁决,剧情和信息保护边界仍有效。写作自检与写后审查沿用下方「写手 A-G
|
|
3
|
+
本文件承接调用方选定 Gate;只执行所选范围,不扩大为全量。表达先按 [style-resolution.md](style-resolution.md) 的本书裁决,剧情和信息保护边界仍有效。写作自检与写后审查沿用下方「写手 A-G 判据」;独立去味沿用「删除优先判断」及各门禁详细步骤。模式解释、改写顺序与范例见 [anti-ai-writing.md](anti-ai-writing.md)。
|
|
4
4
|
|
|
5
5
|
#### 删除优先判断(先于各 Gate)
|
|
6
6
|
|
package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
## 长篇单元情绪引擎(通用正向框架)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
每个剧情单元先设计能制造情绪与兑现的**正向发动机**,再按契约四问检查:
|
|
10
10
|
|
|
11
11
|
> **核心情绪命题 → 承载对象/情绪缺口 → 受阻或缺口维持原因 → 本轮触发 → 主角不可替代的点火/转化动作 → 意义变化或可见兑现 → 题材/契约兑现**
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
### 正向发动机与负向护栏的顺序
|
|
16
16
|
|
|
17
17
|
1. **先设计正向发动机**:明确读者会为什么投入,本轮如何让这份投入改变意义并得到可见兑现。
|
|
18
|
-
2.
|
|
18
|
+
2. **后用项目读者契约做负向护栏诊断**:按契约四问排查契约/推进失败——主角是否靠自己的选择挣到结果,收益有没有被无交换地拿走,有没有提前动用终局底牌或把升级线顶到天花板,旧期待付了利息没。“安全”只代表没踩红线,不代表好看;护栏不能代替情绪发动机。
|
|
19
19
|
|
|
20
20
|
### 合理性五问
|
|
21
21
|
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
| 紧张妨碍正在做的事 | 可以写笔尖划坏签名、钥匙插错锁孔等具体后果 |
|
|
45
45
|
| 身体细节只是在句尾标注情绪 | 删除;不要换一套部位或同义动作 |
|
|
46
46
|
|
|
47
|
-
###
|
|
47
|
+
### 套式反应删除测试
|
|
48
48
|
|
|
49
49
|
逐章检查重点情绪段,并指出对应原句;不是要求每段补一种反应:
|
|
50
50
|
|
|
@@ -265,9 +265,7 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
|
|
|
265
265
|
- 同一约束如果在「核心事件 / 内容概括 / 情节安排 / 情节点」里重复出现,生成前只合并成**一个语义点**;重复字段不是强调,更不是四次复述额度。正文不得沿用提纲里反复出现的同一措辞逐项交代。
|
|
266
266
|
- 五段式(起因/发展/转折/高潮/结尾)是给细纲作者的功能拆解,不是正文的五个自然段;正文不必逐段顺叙,也不必一段对一格。
|
|
267
267
|
- "谁做了什么"的概括句、"A→B→C"箭头链、"收束到什么状态"是规划口径,不要原样搬进叙述。
|
|
268
|
-
-
|
|
269
|
-
- **判据(逐对自问,不限相邻)**:把乙点的一句插进甲点中间,剧情坏不坏?**不坏,就说明这两个点可以互相打断**;因果被打乱、该压的信息提前泄露、正在攒的节拍被冲散,就不插。
|
|
270
|
-
- 例:一场饭局里「主角当众被驳了一次」「邻座起哄」「同伴趁空要回垫付的钱」「同伴顺口说出一个关键消息」四个点,全落在同一顿饭的那段时间里——该让它们互相打断(要钱插在两次举筷之间、消息垫在被驳之后),而不是吃完了再让人开口;「消息」也不必非等在「要钱」后面,被驳那阵就可以先露半句头,散场再说全。
|
|
268
|
+
- 同一场戏里的几个点可以合并、互相打断,不必排成逐点清单;因果依赖或刻意的节拍分隔才串行。只改顺序不会让正文变好看(交错与否的对照实验测不出差别),密点展开、疏点带过更要紧(见「疏密分配」)。
|
|
271
269
|
- 章尾落在最后一个具体的动作、画面、台词或悬念上;细纲「结尾设定/收束状态」是规划口径,不要在正文里写成"就这样……""他终于明白……"式的状态总结句(结尾去升华见 anti-ai-writing.md)。
|
|
272
270
|
|
|
273
271
|
### 视角姿态:深度限知(贴地沉浸)
|
|
@@ -327,15 +325,9 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
|
|
|
327
325
|
|
|
328
326
|
### 自检方法
|
|
329
327
|
|
|
330
|
-
|
|
328
|
+
**写法抽查(质检侧用)**
|
|
331
329
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
**(二)质检八问(按本次检查范围选用)**
|
|
335
|
-
|
|
336
|
-
以下供质检侧定位已有问题,不要求写手另交八项验收说明。只报告实际删改与保留理由;没有相应问题时跳过。
|
|
337
|
-
|
|
338
|
-
⚠ **八问是删除测试,不是补写清单。** 只许指出正文里**已有**的那一处;没有就答"无"并说明本章为什么不需要,**不许为了让某一问有答案回头补内容**。答"无"不扣分。
|
|
330
|
+
只许指出正文里**已有**的那一处,没有就答「无」,**不许为了让某一问有答案回头补内容**;只报告实际删改与保留理由,写手不另交验收说明。详写的关键场景里,遮住一处发生、感知或反应后读者什么也没损失,就删掉它;套式反应按第 1 节「套式反应删除测试」逐处过。
|
|
339
331
|
|
|
340
332
|
| # | 自问 | 不合格的样子 | 见 |
|
|
341
333
|
|---|---|---|---|
|
|
@@ -33,6 +33,6 @@
|
|
|
33
33
|
|
|
34
34
|
## 4. 报告与后续
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
读者是不懂编程的作者。报告先用写书的话写两段:「现在能用什么」(正常可用的写作能力,一句话概括)和「需要你做什么」(逐条可照做,如「新开一个会话」「在 Codex 里打开 /hooks 信任一下」;没有就写「无需操作」),这两段不出现脚本名、字段名、状态名或文件路径。之后才按「发现的问题」「未验证项」汇总技术明细,每项给出目标端或书目、文件路径/命令结果、具体影响和下一步;正常结果合并概述,skills-only 的预期限制不渲染成安装失败。结论限定为本次实际检查的范围,不承诺所有写作能力都已验证。
|
|
37
37
|
|
|
38
38
|
需要补部署文件时建议重跑 `story-setup`;源包本身缺失或比项目旧时先更新源包,再部署;当前会话未加载能力时提示新开会话或完成该 CLI 的信任步骤。仅检查请求到此结束,不为了消除告警自行执行修复。
|
|
@@ -74,13 +74,23 @@ word_count = 全文字数
|
|
|
74
74
|
```
|
|
75
75
|
存在 _meta.json?
|
|
76
76
|
├─ 否 → 直接进入新一轮拆解
|
|
77
|
-
└─ 是 →
|
|
77
|
+
└─ 是 → 询问用户三选一(问法见下):
|
|
78
78
|
(a) 覆盖:归档旧产出到 拆文库/{书名}/_archive_{时间戳}/ 后从 Stage 2 重跑
|
|
79
79
|
(b) 续跑:读 _meta.json.last_stage_in_progress(非空 → 从该 Stage 整段重跑)
|
|
80
80
|
或读 _meta.json.stages_completed[](从 max+1 续跑)
|
|
81
81
|
(c) 取消
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
问作者时不提文件名、字段名和 Stage 编号:
|
|
85
|
+
|
|
86
|
+
<!-- author-report -->
|
|
87
|
+
```md
|
|
88
|
+
《{书名}》之前拆过,{拆到一半,停在"{当前阶段的白话名,如反转与写作手法}" | 已经拆完}。怎么处理?
|
|
89
|
+
1. 接着上次往下拆(推荐,已拆的部分保留)
|
|
90
|
+
2. 旧结果存档,从头重拆
|
|
91
|
+
3. 先不拆了
|
|
92
|
+
```
|
|
93
|
+
|
|
84
94
|
完整 resume 契约见 [references/output-contract.md](references/output-contract.md)。
|
|
85
95
|
|
|
86
96
|
---
|
|
@@ -190,7 +200,7 @@ Stage 6 内容写完后,**不**立刻 append `6` 到 `stages_completed[]`。
|
|
|
190
200
|
按 [references/output-contract.md](references/output-contract.md) 「structure_counts 数值校验」表
|
|
191
201
|
逐项检查 `_meta.json` 里 Stage 6 写入的结构计数。阈值与 carve-out 以 output-contract.md 为准(单一权威,不在此重复内联表以免漂移)——特别注意两条合法产出态:`reversal_type` 枚举**含「无反转」**(甜宠/喜剧/报应型);`reversal_type=无反转` 时 **`setup_clues` 跳过该行、不计入阻断**。
|
|
192
202
|
|
|
193
|
-
任一项不达标 →
|
|
203
|
+
任一项不达标 → 阻断,回到对应 Stage 补足;原文确实没有、补不出来时,用故事话告诉作者缺什么(如「反转前的铺垫线索只找到 1 条」),不报字段名和 Stage 编号。
|
|
194
204
|
|
|
195
205
|
### Step 3:`output-templates.md` [BLOCK] 项扫描
|
|
196
206
|
|
|
@@ -200,7 +210,16 @@ Stage 6 内容写完后,**不**立刻 append `6` 到 `stages_completed[]`。
|
|
|
200
210
|
### Step 4:通过
|
|
201
211
|
|
|
202
212
|
「拆文报告 AI 腔自检」「structure_counts 数值校验」和「BLOCK 项扫描」全通过 → 清空 `_meta.json.last_stage_in_progress`,append `6` 到
|
|
203
|
-
`stages_completed[]
|
|
213
|
+
`stages_completed[]`,按下方格式告诉作者:
|
|
214
|
+
|
|
215
|
+
<!-- author-report -->
|
|
216
|
+
```md
|
|
217
|
+
《{书名}》拆完了,结果在 `拆文库/{书名}/`。
|
|
218
|
+
- 这篇靠什么抓人:{一句话故事核}
|
|
219
|
+
- 最值得学的 3 点:{白话,各附一句原文或情节例子}
|
|
220
|
+
- 还缺的:{拆文报告末尾"待补"里需要作者决定的项;没有就写"无"}
|
|
221
|
+
下一步:想照这个路子写一篇,运行 `/story-short-write`。
|
|
222
|
+
```
|
|
204
223
|
|
|
205
224
|
---
|
|
206
225
|
|
|
@@ -544,7 +544,11 @@
|
|
|
544
544
|
**不提取**:
|
|
545
545
|
- 群体称呼("旁人""大家")
|
|
546
546
|
- 无名路人("一个中年人""助理"——除非有关键台词)
|
|
547
|
-
-
|
|
547
|
+
- 通用称呼黑名单(泛称不当作具体人物):
|
|
548
|
+
- 亲属:大哥-九哥、大姐-三姐、姐姐、妹妹、哥哥、弟弟、叔叔、阿姨、伯伯、舅舅、姑姑、姨妈、爷爷、奶奶、外公、外婆、父亲、母亲、爸爸、妈妈、爹、娘、儿子、女儿、孩子
|
|
549
|
+
- 社交:朋友、兄弟、哥们、姐妹、闺蜜、老同学、同学、老乡、邻居、室友、战友、同事、伙伴
|
|
550
|
+
- 身份:老师、老板、师傅、徒弟、学生、医生、护士、律师、警察、士兵、将军、商人、猎人、农民、工人、新娘、新郎、仆人、侍女、丫鬟、管家、护卫、侍卫、掌柜、小二、店主、老板娘
|
|
551
|
+
- 年龄/外貌:臭小子、小丫头、小姑娘、小伙子、少年、青年、老头、老太太、老人、年轻人、中年人、小家伙、小鬼、小娃娃
|
|
548
552
|
|
|
549
553
|
### 人物分类
|
|
550
554
|
|
|
@@ -114,12 +114,16 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
114
114
|
|
|
115
115
|
### Phase 4:输出扫榜报告
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
报告写给作者:讲市场结论和能写的方向。脚本名、命令和 SKIP 这类采集状态不进报告;某个平台没采到,就说一句「XX 这次没拿到(原因),结论不含它」。
|
|
118
|
+
|
|
119
|
+
<!-- author-report -->
|
|
120
|
+
```md
|
|
118
121
|
# 短篇网文扫榜报告:{平台名称}
|
|
119
122
|
|
|
120
123
|
## 市场概况
|
|
121
124
|
- 扫榜时间:{日期}
|
|
122
125
|
- 核心发现:{一句话总结}
|
|
126
|
+
- 可信度:{样本多少篇、来自哪几个榜};建议 {日期} 前后再扫一次
|
|
123
127
|
|
|
124
128
|
## 情绪热度排行
|
|
125
129
|
| 排名 | 情绪类型 | 榜上数量 | 趋势 | 代表作 |
|
|
@@ -20,13 +20,13 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
20
20
|
2. 核心 10 题材再读取一个精确的 `references/genre-styles/{题材}.md`;冷门题材改读 `references/genre-writing-formulas.md`
|
|
21
21
|
3. 有反派或真相揭露设计时再读 `references/villain-and-reveal.md`;不适用时在设计校验区写明原因
|
|
22
22
|
|
|
23
|
-
任一必需路径不存在、不可读或题材尚未解析到唯一 reference 时,立即停止,报告准确路径/待定项,**不得创建或修改故事产物**。不要把“已读 references”的回执写进故事文件;要把选出的题材招式、反转计算等应用证据写进正常设计字段。Phase 3/4
|
|
23
|
+
任一必需路径不存在、不可读或题材尚未解析到唯一 reference 时,立即停止,报告准确路径/待定项,**不得创建或修改故事产物**。不要把“已读 references”的回执写进故事文件;要把选出的题材招式、反转计算等应用证据写进正常设计字段。Phase 3 写正文前完整读取 `references/workflow-draft.md`,Phase 4 精修前完整读取 `references/workflow-revision.md`,再按各阶段的写前准备和精修检查加载所需资料,不得用早先读过代替当前任务完整回读。
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
> Agent 只查当前端 canonical 目录(Claude `.claude/agents`、OpenCode `.opencode/agents`、Codex `.codex/agents` TOML、Antigravity `.agents/agents
|
|
27
|
+
> Agent 只查当前端 canonical 目录(Claude `.claude/agents`、OpenCode `.opencode/agents`、Codex `.codex/agents` TOML、Antigravity `.agents/agents`),不跨端误判。Claude 用 `subagent_type`,OpenCode 用 `subagent` 的 `agent`,Codex 用 `agent_type`,Antigravity 用 `invoke_subagent` + `TypeName`;能力/文件缺失、unknown agent 或 ZCode 3.3.4 时报告 `Fallback: project custom agents unavailable -> solo`。
|
|
28
28
|
>
|
|
29
|
-
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version:
|
|
29
|
+
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 32` 不一致时(标记缺失、字段缺失/非整数、小于或大于 32)**照常按文件存在性检查并 spawn**,同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 32)` 并提示重新运行 `/story-setup` 后新开会话;大于 32 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 `Fallback: ... -> solo`。
|
|
30
30
|
|
|
31
31
|
**文风裁决**:正文写作、改写或审稿前先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风并形成 `style_resolution`;无作者记忆也执行。当前请求、本书文风和 active 偏好按维度覆盖通用 references;同一裁决交给后续执行者。
|
|
32
32
|
|
|
@@ -53,7 +53,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
53
53
|
- **从验证过的模式出发**:有对标书就先拆解,没有就从 `genre-styles/{题材}.md`(核心 10 题材)或 `genre-writing-formulas.md`(冷门题材)找对应的短篇剧情模式
|
|
54
54
|
- **定方向就换风格**:题材方向一旦确定(如追妻火葬场),立刻加载 `references/genre-styles/{题材}.md`——正文的腔调、开篇、钩子、情绪烈度、对话金句、招式、收尾全部切到该题材。核心 10 题材(追妻火葬场 / 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗 / 民俗怪谈 / 悬疑 / 甜宠 / 双男主 / 沙雕脑洞)有专属风格包,其中追妻含 现代/古代/民国 时代变体与 小三文学/死人文学 流派分支;冷门题材用 `genre-writing-formulas.md` 的结构骨架兜底,腔调仍按 `short-craft.md` 通用底座
|
|
55
55
|
- **只加载必需信息**:写每节前明确目标情绪和要用的技法,答不出就先回读参考
|
|
56
|
-
-
|
|
56
|
+
- **复用作者习惯**:若作者记忆已存在,正文前用 `scripts/author_memory_commit.py query --kind prose_style --kind story_design --book-root {项目目录}` 获取 active 条目(≤2KB),传给正文/改写 agent 作为自然倾向,不逐条展示或最大化命中,不牺牲连贯、节奏和字数;硬门禁、当前请求和本篇设定优先。长期声明在收尾用 `record` 写入并回传回执,细则见 [references/author-memory.md](references/author-memory.md)。
|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
|
|
@@ -94,49 +94,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
94
94
|
|
|
95
95
|
### Phase 3:逐场景写作
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
**导入项目续写基线**:`设定.md` 存在「本书续写基线」时先读取,作为已写内容的内部连续性与既有写法约束;它不是对标摘要,不参与主/副对标排序,也不复制到 `对标/`。
|
|
100
|
-
|
|
101
|
-
> 术语说明:Phase 3 按「段」划分叙事结构(开头段/铺垫段/升级段/反转段/结尾段),每段包含若干「小节」(数字编号的 beat)。「场景」指写作时的具体画面。
|
|
102
|
-
|
|
103
|
-
**交付参数先锁定**:用户明确的字数范围优先,逐字取其最小值/最大值与节数;只给单一目标时用目标的 95%-105%;都未给时用 8000-20000 字和大纲节数。后文的默认字数不得覆盖用户范围。
|
|
104
|
-
|
|
105
|
-
**写前参数验收**:给 Phase 4 的交付命令加 `--check-contract` 先运行。参数通过不算交付;冲突时停在写前,报告字数范围与节数,请用户选择调整项,不代改用户约束。
|
|
106
|
-
|
|
107
|
-
**写前准备**(每个场景写前执行 2 步,是核心方法的落地:确认情绪目标 → 召回技法模块):
|
|
108
|
-
- **步骤 1:记忆+召回**:① 本场景目标情绪词?② 借鉴哪个参考文件的哪个技法?③ 具体用在哪个段落?答不出 → 先回读参考再动笔。如有 `对标/` 或 `拆文库/` 结构化产出,按 [references/benchmark-recall.md](references/benchmark-recall.md) 的对标上下文加载规则检索与当前场景最相关的结构/情绪/反转/写作手法模块作为参考,并写入“拆文召回摘要”
|
|
109
|
-
- **多对标书时**:参 `references/cross-book-recall.md`,副对标/参考对标按阶段预算进入"副对标召回摘要";正文只传摘要,不传副书文风或原文
|
|
110
|
-
- **步骤 2:指令确认**:用一句话概括本场景写作意图(情绪+技法+适配段落),并确认本场景是否有任务卡点、它卡出哪种情绪变化或新证据;没有就不强补。确认后开始写作
|
|
111
|
-
|
|
112
|
-
**写作指令:按三维度揉进逐场景写作,不照搬大纲腔。**
|
|
113
|
-
|
|
114
|
-
- 每个场景让读者和主角一起经历;发生、感知、反应揉在同一段连续正文里,不按维度分三段。
|
|
115
|
-
- 段落按戏剧单元/画面自然断开:新动作、新线索、新对话、视线切换另起;完整推理、氛围或情绪链可稍长。
|
|
116
|
-
- 高潮/打脸/反转压短,沉淀/推理/收束可长一点;爽点 beat 写密,过场 beat 写疏,避免通篇同长度。
|
|
117
|
-
- 主语节奏:段首或主语重置时可点名;同一动作链内优先代词/省略;关键转折再点名。
|
|
118
|
-
- 标点跟语气走:质问用问号,爆发处少量感叹;犹豫、未尽、打断用动作停顿、短句或换行处理,正文不使用 `……` / `——` / `—` / `--`。
|
|
119
|
-
- 短篇默认第一人称在场:受虐段可直白宣泄,反击段可冷静审判;只删中立无情绪的作者讲解,不删带主角偏色的审判/预告。
|
|
120
|
-
- 情绪可以直写,按 `references/short-craft.md` 第 2 节检查上下文支撑,不逐句补动作或物件。
|
|
121
|
-
- 任务卡点也可以承接情绪,但必须直接加重羞辱、误会、背叛、证据、反击或心死节点;删掉后情绪/证据/关系无损就压缩。
|
|
122
|
-
- 情绪宁烈不温,冲突前置、爽点具体、台词带刺;心死/余韵等以克制为爽感的桥段按题材包收敛。
|
|
123
|
-
|
|
124
|
-
#### Agent 调用:narrative-writer
|
|
125
|
-
|
|
126
|
-
正文写作阶段默认由主会话按 2-3 节/批分批写正文;主会话输出是短篇正文的标准形态,不要求单次 agent spawn 完成 8000+ 字全文。
|
|
127
|
-
|
|
128
|
-
- 每批写完后更新“已写小节摘要”(3-5 条:已揭示信息、情绪位置、未回收伏笔、下一批衔接句)。
|
|
129
|
-
- 下一批先读该摘要和 `正文.md` 尾部 300-500 字再续写。
|
|
130
|
-
- 只有用户明确要求子代理、主会话上下文不足,或需要隔离试写时,才检查 narrative-writer agent(查找顺序见顶部)。
|
|
131
|
-
- 如可用,spawn `Agent(subagent_type: "narrative-writer", prompt: ...)`,只传项目目录、输出文件、情绪目标、题材风格包、小节大纲、角色、主/副对标召回摘要、本书文风全文路径与 style_resolution、作者偏好 query 中的文风/故事设计项、格式硬约束和写作硬约束,并传入检查分工:本批只做内容覆盖与格式自检,完整语义去味由 Phase 4 负责,最终文件扫描由主会话负责。
|
|
132
|
-
- 不把本 skill 整段规则塞进 prompt;细节以已加载的 `short-format.md`、题材包和 `short-craft.md` 为准。
|
|
133
|
-
- 无论谁写,写入 `正文.md` 前都按同一格式规范重排,保证主会话与子代理输出一致。
|
|
134
|
-
|
|
135
|
-
⚠️ **硬约束只作用于整篇交付范围,不设统一逐节最低字数或行数**。
|
|
136
|
-
写完每批后按 `short-format.md`「字数统计」检查整篇累计值与各节分布。某节明显短于相邻节时,先核对批准情节点、可见动作和后果是否已经完整;完整就保留,缺失才补回原计划内容。不得为拉齐节长新增冲突、对话、回忆、配角反应或独立事件。整篇以锁定的用户交付范围为准;未给范围时才使用 8000-20000 字默认值。
|
|
137
|
-
**⚠️ 未进入锁定范围 = 正文未完成。禁止越界后结束;不足只扩已有情节点,超出只压重复解释,不借 repair 新增或删除关键剧情。**
|
|
138
|
-
|
|
139
|
-
**节数守恒**:正文节数必须等于小节大纲规划节数。不得合并多节为一节。如果写作中发现某节不需要独立存在,应回到大纲阶段调整,而非在写作时偷减。
|
|
97
|
+
进入正文写作前,完整读取 [references/workflow-draft.md](references/workflow-draft.md),执行交付参数锁定、写前验收、逐场景写作与 Phase 3 完成门槛。只做构思或精修时不加载本阶段细则。
|
|
140
98
|
|
|
141
99
|
**小节完整性流程**:
|
|
142
100
|
1. **写作时**:每节围绕一个主问题推进;让风险、信息、关系、资源、决定、行动或读者理解至少发生一项可见变化。相关情节点可以由同一动作链或对话同时兑现,不为拆成多个“子事件”重复铺陈。
|
|
@@ -144,85 +102,6 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
144
102
|
3. **发现缺口时**:只补回原计划中漏掉的动作、证据、选择或后果;若本节已经完成职责,即使很短也不加任务卡点、对话、回忆或环境来凑长度。
|
|
145
103
|
4. **发现冗余时**:删除不改变风险、信息、关系、资源、决定、行动或可信度的阻碍、复述与旁人反应;不把“有冲突”本身当成保留理由。
|
|
146
104
|
|
|
147
|
-
每个小节按「场景信息揉进」写作(详见 short-craft.md 第 10 节):发生是主干,感知和反应只在提供新信息时加入;用到的维度揉进同一镜头。揉进不等于按维度分段——禁止"先写发生再补感知再补反应"的堆叠写法,也不要求三项齐全;同样不等于一段到底,按新动作、新物件、新信息或新对话断段。完整推理、氛围、手艺、等待或情绪链可以连续展开,不按固定字数切断。
|
|
148
|
-
|
|
149
|
-
按以下结构分段写:
|
|
150
|
-
|
|
151
|
-
#### 第一段:开头(前 300-500 字)
|
|
152
|
-
|
|
153
|
-
**目标**:3 句话内抓住读者。**必须包含一个开篇钩子**(从 hooks-chapter.md 选择类型)。
|
|
154
|
-
|
|
155
|
-
**先写导语**:正文开头前先按 `references/submission-craft.md`「导语」写一条 150-220 字导语——四维骨架(起因+核心冲突+人设底色+情绪反转)配黄金三角(具体物件+信息差+留白钩子),一句一段(黑岩/盐言导语形态;番茄导语按 short-format.md 短段叙织)——完整句各自独立成段,不是拆成三字碎句。它就是正文开头的头几段,写好顺势往下接、不重写,所以首句同样守下面的开头零环境和前 100 字事件密度≥3(首句是事件/动作/信息炸弹,不是背景或弧线概括),剧透钩子放导语后半。
|
|
156
|
-
|
|
157
|
-
**技法指令**:前 100 字事件密度 ≥ 3,不做背景铺垫,直接上事件链。
|
|
158
|
-
|
|
159
|
-
**开头零环境规则**(默认适用;悬疑、惊悚、灾难、强氛围题材可例外):
|
|
160
|
-
- 前 3 句禁止出现无事件承载的环境描写(灯光、天气、气味、温度、装修)
|
|
161
|
-
- 前 3 句必须是:事件 / 对话 / 动作 / 信息炸弹,四种之一
|
|
162
|
-
- 任务卡点可以作为动作/事件钩子,但必须立刻带出赌注或矛盾,不能先写流程再解释意义
|
|
163
|
-
- 环境细节只能揉进角色的动作和感知中自然带出,不能独立成句;例外题材中,环境也必须携带威胁、异常或信息差
|
|
164
|
-
- 检查方法:标出前 3 句的主语,如果主语是环境物件(灯光/走廊/房间/天气),重写
|
|
165
|
-
|
|
166
|
-
开头技巧:
|
|
167
|
-
|
|
168
|
-
| 技巧 | 说明 | 示例 |
|
|
169
|
-
|------|------|------|
|
|
170
|
-
| 冲突前置 | 第一句就是矛盾 | 「离婚协议放在桌上,他已经签了。」 |
|
|
171
|
-
| 信息差钩 | 给读者一个角色不知道的信息 | 「她不知道,对面那个男人已经在计划第三次了。」 |
|
|
172
|
-
| 反常行为 | 用一个不合常理的行为引起好奇 | 「她把订婚戒指冲进了马桶。」 |
|
|
173
|
-
| 重生反常 | 重生后做前世绝不会做的事 | 「沈栀心念成灰,支着一口气找到了媒婆:郭家的那个天阉,我来嫁。」 |
|
|
174
|
-
| 超自然身份 | 开篇揭示非人类身份 | 「我是世上仅存的红衣厉鬼。我不知自己是怎么死的。」 |
|
|
175
|
-
| 灵魂旁观 | 以灵魂视角描述死亡现场 | 「我的尸体躺在透明棺材里,三个哥哥在外面笑着说:她演得真像。」 |
|
|
176
|
-
| 悬念句 | 抛出一个需要解释的事实 | 「我死后的第三天,老公发了一条朋友圈。」 |
|
|
177
|
-
| 替嫁被弃 | 被迫接受不公正的命运 | 「三个月后,我代替皇后的嫡亲公主坐上了去漠北和亲的轿撵。」 |
|
|
178
|
-
| 代入式提问 | 直接让读者产生共鸣 | 「你有没有在深夜接到过一个不该接的电话?」 |
|
|
179
|
-
|
|
180
|
-
#### 第二段:铺垫(占全文 30-40%)
|
|
181
|
-
|
|
182
|
-
- 用物件/数字/习惯建立羁绊(详见 emotional-methods.md「羁绊铺设」)
|
|
183
|
-
- 埋入至少 3 个反转线索,分散在不同小节
|
|
184
|
-
- 在会改变读者预期、行动方向或关系判断的位置埋钩;连续多个小节只有提问没有局部兑现时再调整,不按固定节数填格(类型从 hooks-paragraph.md 选择)
|
|
185
|
-
- 小节用数字分割,每小节推进一个情节点
|
|
186
|
-
- 情绪强度逐节递增,不允许连续 2 节无情绪变化
|
|
187
|
-
- **贯穿道具第 1 次出现必须在此段完成**
|
|
188
|
-
- **反派作恶按阶梯递增**(小恶→中恶,见 villain-and-reveal.md)
|
|
189
|
-
|
|
190
|
-
#### 第三段:升级(占全文 20-30%)
|
|
191
|
-
|
|
192
|
-
- 冲突必须比上一段升级(强度/范围/代价至少一个维度上升)
|
|
193
|
-
- 插入倒计时钩子或代价钩子制造紧迫感
|
|
194
|
-
- 随风险和选择升级提高牵引强度;用新证据、代价、误判修正或局部反击推动,不按固定节数另塞钩子(按题材见 genre-writing-formulas.md)
|
|
195
|
-
- 埋入误导信息,让读者猜错反转方向
|
|
196
|
-
- **数字/金额递增作为叙事工具**(具体数字替代模糊描述,见各 genre-styles 招式库「数字承重」)
|
|
197
|
-
- **场景引擎有变化**:行动、对话、证据、任务、等待、空间压力与关系选择按因果需要切换;不为动静交替补无功能小动作
|
|
198
|
-
|
|
199
|
-
#### 第四段:反转(占全文 10-15%)
|
|
200
|
-
|
|
201
|
-
- 反转在一节内完成揭示,不拖延
|
|
202
|
-
- 揭示后确保前面铺垫的线索可被回溯(读者能找到「原来如此」的伏笔)
|
|
203
|
-
- 反转节的情绪冲击强度必须 > 前面所有节的最高值
|
|
204
|
-
- **用证物/证人/偷听/剥洋葱揭露真相**(4 种方式见 villain-and-reveal.md)
|
|
205
|
-
- **贯穿道具第 2 次出现必须在此段完成**(意义被颠覆)
|
|
206
|
-
|
|
207
|
-
#### 第五段:结尾(占全文 5-10%)
|
|
208
|
-
|
|
209
|
-
- 章末必须有钩子(悬念或余韵)
|
|
210
|
-
- 用安静细节收尾(一个物件、一个动作、一句短话),不写大段抒情
|
|
211
|
-
- 结尾方式见下表,参考 emotional-methods.md「余韵钝痛」
|
|
212
|
-
- **贯穿道具第 3 次出现(回扣暴击)**
|
|
213
|
-
|
|
214
|
-
结尾类型:
|
|
215
|
-
|
|
216
|
-
| 类型 | 效果 | 适合情绪 |
|
|
217
|
-
|------|------|----------|
|
|
218
|
-
| 余韵式 | 不说完,让读者自己想 | 意难平 |
|
|
219
|
-
| 呼应式 | 首尾呼应,形成闭环 | 治愈、成长 |
|
|
220
|
-
| 开放式 | 留下悬念 | 细思极恐 |
|
|
221
|
-
| 反转再反转 | 结尾再来一个小反转 | 震惊 |
|
|
222
|
-
| 金句式 | 一句话点题 | 共鸣 |
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
105
|
### Phase 3 完成门槛(进入 Phase 4 前必须通过)
|
|
227
106
|
|
|
228
107
|
- [ ] 总字数进入锁定的用户范围;未指定时进入 8000-20000 默认范围
|
|
@@ -239,27 +118,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
239
118
|
|
|
240
119
|
### Phase 4:精修打磨
|
|
241
120
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
加载 `references/writing-workflow.md` 中的精修清单完成检查。
|
|
245
|
-
重点:开头钩子、情绪曲线、反转铺垫、每句话价值、格式规范、AI 腔。文件模式依次运行 `node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md`、`node scripts/check-outline-copy.js --outline 小节大纲.md 正文.md`、`node scripts/normalize-punctuation.js 正文.md`、`node scripts/check-degeneration.js --check 正文.md`。blocking 或确属细纲照搬先改正文再复扫;其他提示仅作读感复核,功能性写法可保留。
|
|
246
|
-
|
|
247
|
-
上述修改全部落盘后,运行 `node scripts/check-delivery-contract.js --json --min-chars {MIN} --max-chars {MAX} --sections {N} {短篇目录}`。exit 0 才可交付;exit 1 只按 `repair_scope` 最小修复并重跑受影响的质量检查与本命令,最多 2 轮;仍失败则报告检查 ID 并停止。exit 2、脚本缺失或不可执行时不得声称交付契约通过。本 verifier 只验用户字数、节数与排版形状,不替代正文质量判断。
|
|
248
|
-
|
|
249
|
-
#### Agent 调用:narrative-writer(去AI味)+ consistency-checker
|
|
250
|
-
|
|
251
|
-
精修阶段,如果项目已部署对应 agent,可 spawn:
|
|
252
|
-
- `Agent(subagent_type: "narrative-writer", prompt: "项目目录:{dir}\n任务描述:去AI味+格式检查\n检查分工:你负责本次语义去味及原定自检;最终文件扫描由主会话执行,不在子代理内重复\n检查范围:{正文文件}\nstyle_resolution:{与写作一致的本次文风裁决,含全文路径}\n作者偏好:{query 命中的 prose_style/story_design 项}\n删除优先:每条 AI 味项先判能否删除——删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色(删除受比例上限与字数下限约束,跌破下限改降AI重写)\n必须检查:先否定再肯定的翻转句式,发现后直接改成后项或动作细节;检查像/好像/仿佛/如同等比喻是否成片堆叠,确属堆叠时只留最有功能的少数比喻,其余回到具体画面;检查是否连续使用头皮发紧/眼皮一跳/心口一沉/胃里翻涌等精致戏剧反应,能写普通动作/普通感觉就写普通动作/普通感觉;已有手机/聊天记录/公告/账单/病历/证据截图等信息,保留为角色看到或处理的场内载体,不改成叙述者解释;任务卡点只在角色本来有要办的事且能加重情绪/证据/关系/反转时使用,不为自然感补流程")` — 执行去AI味(7 Gate)和格式合规检查
|
|
253
|
-
- `Agent(subagent_type: "consistency-checker", prompt: "项目目录:{dir}\n检查范围:{正文文件}\n检查类型:事实冲突+伏笔断线+角色属性不一致")` — 执行一致性检查
|
|
254
|
-
|
|
255
|
-
如 agent 不可用,由主线程直接执行。
|
|
256
|
-
|
|
257
|
-
**正文洁净规则**:
|
|
258
|
-
- 自检(字数统计、禁用词扫描、格式检查)是过程动作,结果直接在对话里说明,不落盘成文件
|
|
259
|
-
- **绝对不能**把自检记录附加到正文文件末尾
|
|
260
|
-
- 正文中不得出现任何 `<!-- 自检 -->` 或类似的检查标记注释
|
|
261
|
-
|
|
262
|
-
不通过 → 回退补足。
|
|
121
|
+
精修或质量自检前,完整读取 [references/workflow-revision.md](references/workflow-revision.md),执行语义去味、一致性检查、最终文件扫描与交付验收;修改后按其中职责分工复核。只做构思时不加载本阶段细则。
|
|
263
122
|
|
|
264
123
|
---
|
|
265
124
|
|
|
@@ -19,23 +19,30 @@
|
|
|
19
19
|
|
|
20
20
|
## 文件与所有权
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
作者记忆分两级存放,记忆随书走:
|
|
23
23
|
|
|
24
24
|
```text
|
|
25
|
-
{工作区}/.story/作者记忆/
|
|
25
|
+
{工作区}/.story/作者记忆/ # 项目级 store:global / genre / workflow 条目,编号 AP
|
|
26
26
|
├── _author-memory-state.json # 唯一结构化权威
|
|
27
27
|
├── 作者画像.md # 仅 active,供作者查看与管理
|
|
28
28
|
├── 待确认.md # pending / conflict,不参与约束
|
|
29
29
|
└── 变更记录.md # 最近 100 次、最新在前的事务记录
|
|
30
|
+
{书}/.story/作者记忆/ # 书级 store:只存这本书的 book 条目,编号 BP,同样四个文件
|
|
30
31
|
```
|
|
31
32
|
|
|
32
|
-
三个 Markdown 文件都从 state 确定性生成,禁止手改;完整历史保留在 state,变更记录只展示最近 100 次。`作者画像.md` 是人类管理视图,普通写作 agent 不整份注入,而是调用 `query`
|
|
33
|
+
三个 Markdown 文件都从 state 确定性生成,禁止手改;完整历史保留在 state,变更记录只展示最近 100 次。`作者画像.md` 是人类管理视图,普通写作 agent 不整份注入,而是调用 `query` 取得本次相关的紧凑上下文。作者记忆不存在时,普通写作、审稿和去味任务直接继续,不自动初始化空目录;首次 `record` 会随事务创建。
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
**定位规则**:`--workspace` 必须显式传给脚本,指创作工作区根——承载多本书、`.active-book`、`长篇/`、`短篇/` 或 `拆文库/` 的那一层;已有记忆时,是项目级 state(不带 `book` 字段)所在的最近祖先。书目录自己的 `.story/作者记忆/` 是书级 store,`长篇/`、`短篇/` 下的书目录永远不当 `--workspace`;不要把用户主目录当默认工作区。`--book-root` 是当前书的项目目录(`.active-book` 指向、或含 `设定/`、`正文/` 的那一层,如 `{工作区}/长篇/{书名}/`);书名默认取书级 state 记录的名字,首次建立时取目录名,`--book` 可覆盖。
|
|
36
|
+
|
|
37
|
+
**单书布局**:书根就是工作区(`--book-root` 与 `--workspace` 同一目录)时,书级 store 改住 `{工作区}/.story/作者记忆/书级/`,与项目级各自一份 state;首次建立的书名优先取项目级存量本书条目里唯一的书名,再取目录名。旧版曾把书级 state 写在项目级位置,此后项目级读写都报 `state.book`;带 `--book-root {工作区}` 运行任一命令(含 `query`)会先把它原样移进 `书级/`,不改内容。这个目录其实是某个工作区里的一本书时(上一层叫 `长篇/` 或 `短篇/`,或某个祖先有 `.active-book` 或项目级 state),工具直接报错、不动任何文件,按报错改传 `--workspace`。
|
|
38
|
+
|
|
39
|
+
**路由规则**:ID 前缀就是 store——`decide` / `forget` 看 `item_id`(`AP` 进项目级,`BP` 进书级),`remember` / `replace` 看 `scope.level`(`book` 进书级,其余进项目级)。书级操作必须传 `--book-root`,没传直接报错,不会退而写进项目级。一份 `commit` 事务只能写一个 store;`replace` 与 `conflicts_with` 不能跨 store——本书例外按优先级覆盖全局规则,不算冲突,直接 `remember` 为 book 条目即可;要把全局规则改成本书规则,拆成 `forget` + `remember` 两个事件。
|
|
40
|
+
|
|
41
|
+
**存量迁移,不做双读**:升级前写进项目级 store 的 book 条目不再参与查询与预算估算,也不再接受新的 book 写入;它们仍在 `作者画像.md` 里可见、可 `decide` / `forget`。对每本书运行一次 `migrate --book-root {书目录}` 即可整批搬回来:断言、证据、确认次数、重要度原样保留,换成 `BP` 编号,原 `AP` 条目标 `superseded` 并注明去向;与全局条目的冲突关系在迁移后不再成立,这类候选退回 `pending`。书级每个源条目一笔事务,重跑只补没做完的一半。「整理作者记忆」看到项目级画像里还有「本书:」条目时,把迁移列为默认提案项。
|
|
35
42
|
|
|
36
43
|
## 什么时候读取
|
|
37
44
|
|
|
38
|
-
长篇、短篇、去 AI 味开始前,如果 state 已存在,用 `query` 按本书、题材、流程和类型筛选 active
|
|
45
|
+
长篇、短篇、去 AI 味开始前,如果 state 已存在,用 `query` 按本书、题材、流程和类型筛选 active 条目:结果是项目级 store 与 `--book-root` 所指书级 store 的合并;不传 `--book-root` 就拿不到任何本书条目。查询输出固定不超过 2048 字节。`--kind` 必传——不传直接报错,不再默认返回全部类型;按任务直接选择 kind:
|
|
39
46
|
|
|
40
47
|
| 任务 | query kinds | 注入位置 |
|
|
41
48
|
|---|---|---|
|
|
@@ -50,10 +57,19 @@
|
|
|
50
57
|
|
|
51
58
|
## 可靠性与负荷边界
|
|
52
59
|
|
|
53
|
-
- 明确“记住 / 确认 / 替换 / 忘掉”的请求走单事件 `record`,不要求 agent 手工读取修订号或拼多操作事务。成功响应会给出 `Author Memory Receipt: rN · APxxx
|
|
60
|
+
- 明确“记住 / 确认 / 替换 / 忘掉”的请求走单事件 `record`,不要求 agent 手工读取修订号或拼多操作事务。成功响应会给出 `Author Memory Receipt: rN · APxxx`;没有回执就不得声称“已经记住”。怎么告诉作者见「回执怎么告诉作者」。
|
|
54
61
|
- 普通创作只做一次本地 `query`,没有 state 时返回空结果且不创建文件;有记忆时也只返回相关 active 条目,硬上限 2048 字节。完整画像、证据、候选和 journal 不进入正文 prompt。
|
|
62
|
+
- **写入不因注入预算失败**:`record` / `commit` 照常成功、给回执;工具按上表四类任务组合估算最坏查询情形(全局条目+各 scope 维度最重的单一切片,切片按大小写无关归并、轻重按写作时真正读到的字段算,与真实查询同一把尺),装不进 2048 字节的组合在返回的 `warnings` 里点名将被略过的条目及其断言首句。收到提醒就用白话转告作者并建议「整理作者记忆」。写入落盘后另一级 store 读不出来(书目录不存在、`--book` 与书级记录不符等)也照常给回执,`warnings` 注明本次提醒没算上它——已有回执就是已记住,不要换 `event_id` 重试。写书级条目时「本书+全局」按实际条目精确计算;写项目级条目时只看得到项目级 store,顺手传 `--book-root` 就把当前这本书也算进提醒。查询按 **重要度 → 本书例外 → 最近更新** 排序装填(同一范围的条目必在同一 store,「最近」按该 store 的修订号比,不跨 store 比较),先丢的恒是重要度较低的条目——`importance` 决定超编时谁留在 prompt 里,写入时按偏好的实际分量填,不要一律 `high`。
|
|
63
|
+
- 注入预算之外还有一道硬上限:`作者画像.md` 超过 12288 字节时写入会直接失败并要求先整理。active 条目攒到几十上百条才会碰到(远在注入预算之后),碰到就走「整理作者记忆」;`forget` 这类减量操作在满编时照常可用。
|
|
55
64
|
- 查询项是低优先级倾向,不是逐条打卡清单。自然吸收即可,不复述画像、不刻意提高词面命中率,也不得为命中偏好牺牲正文连贯、节奏、字数或本书既定笔调。
|
|
56
|
-
- 不安装会记录全部用户消息的 prompt hook
|
|
65
|
+
- 不安装会记录全部用户消息的 prompt hook,也不在作者没开口时观察他:不从反复修改、成稿或操作轨迹推断偏好写入。只记作者明确表达的偏好;自然语言是否属于长期习惯仍需 agent 判断,拿不准就只执行不记录。需要确定写入时,用户可明确说“记住:……”,并以回执验收。
|
|
66
|
+
|
|
67
|
+
## 回执怎么告诉作者
|
|
68
|
+
|
|
69
|
+
回复就两行纯文本,不加代码块或引用格式:第一行用一句人话说记住了什么、管哪本书或哪类场合,如「记住了:《{书名}》的对话一律用「」,以后写这本书都照这个来;想改随时说。」;第二行是机器回执作凭证,如「技术备注:Author Memory Receipt: r1 · BP001」。
|
|
70
|
+
|
|
71
|
+
- 确认、替换、忘掉同理:「好,这条生效了:……」「换成了:……,原来的「……」不再用」「忘掉了:……」。只进待确认时说「这条先记在待确认里,你说"确认"才生效」;有冲突时用原话说明跟哪条旧习惯冲突。
|
|
72
|
+
- `warnings` / `omitted_ids` 不原样贴:说「你的习惯攒得有点多,写正文时这几条可能顾不上:「……」」,并建议说「整理作者记忆」。不提字节、prompt、kind、scope;编号只能跟着原话出现。
|
|
57
73
|
|
|
58
74
|
## 捕获判定
|
|
59
75
|
|
|
@@ -61,13 +77,19 @@
|
|
|
61
77
|
|---|---|
|
|
62
78
|
| “以后都这样”“我一直习惯……”等直接、稳定、范围清楚的原话 | `active`,`source=explicit_user` |
|
|
63
79
|
| 用户明确接受助手提出的长期做法 | `active`,`source=accepted_suggestion` |
|
|
64
|
-
|
|
|
65
|
-
|
|
|
80
|
+
| 作者原话像长期偏好但范围或稳定性含糊 | `pending`,取当前最窄合理范围;待确认只来自作者自己的话 |
|
|
81
|
+
| 同类修改反复出现、从成稿或操作轨迹看出的模式 | 不记录、不推断;作者没开口的偏好不进记忆 |
|
|
66
82
|
| “这一章别……”“这次给我……”等一次性要求 | 只执行,不记录 |
|
|
67
83
|
| 角色、时间线、伏笔、世界观、当前剧情走向 | 写项目设定/追踪,不写作者记忆 |
|
|
68
84
|
| 助手自己生成的文字、默认模板、工具告警、rubric 结论 | 不自我学习 |
|
|
69
85
|
|
|
70
|
-
保留用户的否定词、限定词和适用范围,`quote` 写原话,`assertion`
|
|
86
|
+
保留用户的否定词、限定词和适用范围,`quote` 写原话,`assertion` 只做不改变语义的紧凑归纳,**新建条目限一句话(≤120 字节,约 40 个字)**;需要解释的背景写进 `reason`(不进 prompt 载荷),不另开字段。
|
|
87
|
+
|
|
88
|
+
**一条偏好就是一条记录,例外和限定不许拆出去单列。** 「以后少用破折号,对话里也别用,除非表示打断」是一条带例外的偏好,必须整条写成一个 `assertion`(「破折号少用、对话里也不用,只在表示打断时保留」)。超编时条目是逐条被丢的,把「除非表示打断」拆成独立一条,就可能只丢掉例外、把作者明说过的限定变成送进正文的绝对禁令。只有原话确实塞了**几条互不依赖**的偏好(如「多用短句」+「章末留钩子」)才拆成几条。整句写不进 120 字节时压缩措辞,不要切掉限定词。
|
|
89
|
+
|
|
90
|
+
升级前写下的长断言不受新上限约束:原样重申它会**强化**原条目(确认次数 +1),不会因超长被拒;只有真正新建条目才校验 120 字节。
|
|
91
|
+
|
|
92
|
+
范围规则:
|
|
71
93
|
|
|
72
94
|
- “本书 / 这个角色 / 这次连载” → `book`;
|
|
73
95
|
- “都市文 / 这类题材” → `genre`;
|
|
@@ -75,33 +97,41 @@
|
|
|
75
97
|
- “以后 / 一贯 / 我习惯”且无更窄限定 → `global`;
|
|
76
98
|
- 范围含糊但可能稳定 → 取当前最窄合理范围并置 `pending`。
|
|
77
99
|
|
|
78
|
-
类型可选:`prose_style`、`story_design`、`workflow`、`delivery`、`interaction`。置信度与重要度均为 `low | medium | high
|
|
100
|
+
类型可选:`prose_style`、`story_design`、`workflow`、`delivery`、`interaction`。置信度与重要度均为 `low | medium | high`。`source` 只接受 `explicit_user`、`accepted_suggestion`、`manual`;工具会拒绝推断类来源,存量 state 里的旧来源条目照常可读、可确认、可退役。
|
|
79
101
|
|
|
80
102
|
## 冲突、撤回与强化
|
|
81
103
|
|
|
82
104
|
- 同一类型、范围、归纳文本再次出现时,脚本强化原条目,累加证据和确认次数,不重复建条目。
|
|
83
|
-
-
|
|
84
|
-
- 同一范围的规则改版用 `replace`,启用新条目并将旧条目标成 `superseded`。本书例外用 `remember` 新建 book
|
|
105
|
+
- 新偏好与同一 store 里的 active 条目矛盾时,先以 `conflict` 记候选,并在 `conflicts_with` 列出冲突 ID;当前任务仍按本轮明确要求执行。本书例外与全局规则不算冲突。
|
|
106
|
+
- 同一范围的规则改版用 `replace`,启用新条目并将旧条目标成 `superseded`。本书例外用 `remember` 新建 book 条目(传 `--book-root`),保留 global 习惯;只有作者明确撤销或改变旧规则范围时才跨范围替换,跨 store 时拆成 `forget` + `remember`。
|
|
85
107
|
- pending 可以用 `decide=activate|reject`;冲突候选不能绕过旧规则直接 activate。
|
|
86
108
|
- 作者说“忘掉 / 这不再是我的习惯”时用 `forget`,保留历史证据但不再加载。
|
|
87
109
|
- active 条目的语义不可原地偷改;语义变化必须 replace,历史才可审计。
|
|
88
110
|
|
|
111
|
+
## 整理作者记忆
|
|
112
|
+
|
|
113
|
+
作者说「整理作者记忆」,或回执 `warnings`/查询 `omitted_ids` 提示超编时:读项目级与当前书的 `作者画像.md`(每条都标了范围、重要度、把握和确认次数,重要度就是超编时的去留依据),提出合并同义条(`replace` 多合一)、退役过时条(`forget`)、给错标成 `high` 的条目下调重要度、把超长断言压缩成一句话的提案;项目级画像里还有「本书:」条目时,「对该书运行 `migrate --book-root`」列为默认提案项。清单用原话逐条列给作者确认(编号只放括号里),确认后按 store 各汇成一份 `commit` 事务提交(一份事务只写一个 store)。合并时保住每条的否定词、限定词和适用范围——合不动就退役其中一条,不要靠删限定词把两条凑成一条。整理只由作者发起或确认,不自动执行。
|
|
114
|
+
|
|
89
115
|
## 运行工具
|
|
90
116
|
|
|
91
117
|
先依次尝试 `python3`、`python`、`py -3` 找到 Python 3,再从当前 skill 根运行本地副本:
|
|
92
118
|
|
|
93
119
|
```text
|
|
94
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py init
|
|
95
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py record
|
|
96
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py query
|
|
97
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py commit
|
|
98
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py
|
|
120
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py init --workspace {工作区} [--book-root {书目录}]
|
|
121
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py record --workspace {工作区} [--book-root {书目录}] --input {工作区}/.story/work/作者记忆-事件.json
|
|
122
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py query --workspace {工作区} --book-root {书目录} --kind {类型}(必传,可重复) [--genre {题材}] [--workflow {流程}]
|
|
123
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py commit --workspace {工作区} [--book-root {书目录}] --input {工作区}/.story/work/作者记忆-事务.json
|
|
124
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py migrate --workspace {工作区} --book-root {书目录}
|
|
125
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py check --workspace {工作区} [--book-root {书目录}]
|
|
99
126
|
```
|
|
100
127
|
|
|
101
|
-
- `
|
|
102
|
-
|
|
103
|
-
- `
|
|
104
|
-
- `
|
|
128
|
+
所有子命令都可加 `--book {书名}` 覆盖书名;正在写某本书时一律带上 `--book-root`,书级操作没有它会直接报错。事件与事务 JSON 写在 `{工作区}/.story/work/` 下(不写系统 `/tmp`),成功后删掉;`book` 条目的 `scope.value` 填书名(书级 store 已记着书名就用它,首次取书目录名)。
|
|
129
|
+
|
|
130
|
+
- `record`:常用单事件入口,按路由规则落到项目级或书级 store,自动读取该 store 的当前修订、首次自动初始化;`event_id` 相同且内容相同会幂等返回原回执,内容不同会失败。原样重申已有条目的 `assertion` 会强化该条(不受 120 字节新建上限约束)。返回里的 `store` / `book` 说明写到了哪一级,`warnings` 是预算提醒,按「回执怎么告诉作者」用白话转告。
|
|
131
|
+
- `query`:只读相关 active 条目,项目级与书级合并返回;`--kind` 必传、可重复,两级 state 都不存在时返回空结果且零写入。输出按 重要度 → 本书例外 → 最近更新 排序装填;装不下的条目跳过而不中断(一条长的不挡后面的短条),漏下的 ID 按同一优先级报进 `omitted_ids`(最多列 20 条,`omitted` 是真实总数)。**`omitted_ids` 非空=记忆超编**——转告作者并建议「整理作者记忆」,它不是「没有更多了」,也不得改读完整画像规避预算。
|
|
132
|
+
- `commit`:高级批量入口;一份事务只写一个 store,先在内存完成 schema、引用、容量和所有视图校验,最后原子替换 state。事务文件在成功前必须保留;过期修订会在任何写入前失败。
|
|
133
|
+
- `migrate`:把项目级 store 里某本书的存量 book 条目整批搬进 `--book-root` 的书级 store,幂等,中途失败直接重跑;返回 `migrated`(源→新编号),没有存量时为空。
|
|
134
|
+
- `check`:从 state 重建并逐字核验所有派生视图;传 `--book-root` 时两级一起核验。
|
|
105
135
|
|
|
106
136
|
## 事务格式
|
|
107
137
|
|
|
@@ -130,7 +160,7 @@
|
|
|
130
160
|
}
|
|
131
161
|
```
|
|
132
162
|
|
|
133
|
-
把文件交给 `record
|
|
163
|
+
把文件交给 `record`(book 范围的事件同时传 `--book-root`)。待确认项的 `status` 用 `pending`;冲突候选用 `conflict` 并填写同一 store 里的 active ID。确认或拒绝候选时,把下列对象作为新事件的 `operation`(`BP` 编号的事件传 `--book-root`):
|
|
134
164
|
|
|
135
165
|
```json
|
|
136
166
|
{"action":"decide","item_id":"AP002","decision":"activate","quote":"对,这就是我的长期习惯。","reason":"作者明确确认"}
|
|
@@ -162,4 +192,4 @@
|
|
|
162
192
|
{"action":"forget","item_id":"AP003","quote":"忘掉这个偏好。","reason":"作者明确撤回"}
|
|
163
193
|
```
|
|
164
194
|
|
|
165
|
-
需要把多个动作绑定成一次原子提交时才用高级 `commit`:顶层传 `schema_version`、唯一 `transaction_id`、当前 `expected_state_revision` 和含 1–32 项的 `operations
|
|
195
|
+
需要把多个动作绑定成一次原子提交时才用高级 `commit`:顶层传 `schema_version`、唯一 `transaction_id`、当前 `expected_state_revision` 和含 1–32 项的 `operations`。操作按数组顺序应用,任一步失败则整份事务零写入。成功后删除临时输入文件;显式记忆请求按「回执怎么告诉作者」转告。
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
| [references/genre-styles/](genre-styles/) | **定方向后必读**:按题材加载对应风格包(追妻火葬场 / 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗 / 民俗怪谈 / 悬疑 / 甜宠 / 双男主 / 沙雕脑洞),正文风格随之切换 |
|
|
13
13
|
| [references/short-deslop.md](short-deslop.md) | 去AI味时必读(短篇专属,只杀真·AI腔,不杀情绪烈度) |
|
|
14
14
|
| [references/workflow-design.md](workflow-design.md) | Phase 2 构思、设计字段、Agent 调用与完成门禁;Phase 3/4 不预加载 |
|
|
15
|
+
| [references/workflow-draft.md](workflow-draft.md) | Phase 3 写正文前必读:参数与逐场景写作;完成门槛见入口 |
|
|
16
|
+
| [references/workflow-revision.md](workflow-revision.md) | Phase 4 精修/自检前必读:检查分工、去味调用、扫描与交付验收 |
|
|
15
17
|
| [references/writing-workflow.md](writing-workflow.md) | Phase 2 设计任务 + Phase 4 精修 |
|
|
16
18
|
| [references/genre-writing-formulas.md](genre-writing-formulas.md) | 冷门题材结构骨架补充(核心 10 题材直接用 genre-styles/) |
|
|
17
19
|
| [references/genre-writing-techniques.md](genre-writing-techniques.md) | 跨题材通用技法(震惊场景/三翻四震/感情线四阶段/喜剧flag) |
|
|
@@ -69,8 +69,9 @@
|
|
|
69
69
|
|
|
70
70
|
- exit 0:Phase 2 机械契约通过,才可进入下一阶段;这不替代故事质量判断
|
|
71
71
|
- exit 1:只把 `repair_scope` 中的检查 ID、证据、期望、reference 路径和修复范围交给本轮 writer;只改失败字段,再运行同一命令
|
|
72
|
-
- 最多做 2 轮定向 repair
|
|
73
|
-
- exit 2
|
|
72
|
+
- 最多做 2 轮定向 repair;仍失败则停止,用中文告诉作者设计还缺什么,不得声称 Phase 2 已完成
|
|
73
|
+
- exit 2、脚本缺失或不可执行:告诉作者自动检查没跑成,不得用泛化“自检”替代后继续
|
|
74
|
+
- 向作者汇报构思只讲故事(梗概、反转、付费点在第几节)和待拍板的问题(附推荐默认),不提脚本、检查 ID、字段或表格列数
|
|
74
75
|
|
|
75
76
|
#### Agent 调用:character-designer
|
|
76
77
|
|