ZenStory AI

Practical guide · 实用指南

Keep a long novel consistent: character knowledge, promises and unresolved clues

AI 写长篇怎样少崩人设、少忘伏笔:把已知、承诺和线索分开

Source checked 2026-09-12 · 源码核对日期

Before continuing, separate what is true in the story, what each character knows and what the reader has actually seen. Carry forward the relevant current state and unfinished commitments, not the whole conversation. Oh Story stores this handoff in project files and a structured tracking workflow. The original three-chapter example below shows how to use it without turning a future plan into an event that already happened; it is not a claim of error-free writing over hundreds of chapters.

续写前,先分清故事里真正发生了什么、每个角色知道什么,以及读者已经看到什么。带上本章相关的当前状态与未完承诺,不要只靠整段聊天“记住一切”。Oh Story 用项目文件和结构化追踪流程承接这些信息。下面用原创三章示例说明怎样使用,尤其不把未来计划当成已发生的事实;这不代表已证明连续几百章都不会出错。

Oh StorySource on GitHub

Before you start · 开始之前

Steps · 操作步骤

  1. Separate identity from the latest state Read the relevant 设定/角色/{角色名}.md for stable characterization and 追踪/角色状态/{角色名}.md for current location, goal, relationships, knowledge and open threads. “Xu Tang has an older brother” does not mean she knows he sent this letter. A returning character needs the latest state, not an old introduction copied into the prompt.
  2. Use three information perspectives For each important secret, ask separately: what is the author-confirmed truth, what can each character act on now, and what has the reader been shown? The tracking transaction distinguishes objective_fact from reader_knowledge; character knowledge has its own snapshot. Neither an author-only answer nor a planned reveal should silently appear in the current viewpoint.
  3. Carry a small, relevant handoff The continuation workflow checks the committed chapter, reads 追踪/上下文.md, this chapter’s blueprint and the relevant outline/character material. The context card includes current position, long-term constraints, character state, active clues, recent chapters, next-chapter commitments and continuity risks. Query older material when needed rather than loading every chapter log. These are required workflow steps, not a guarantee that every host always follows them.
  4. Distinguish a story promise from the next writing task Xu Tang’s promise to deliver the letter before seven is an unresolved story obligation with a deadline. The chapter-3 handoff is to find a checkable old address without revealing the sender. A future chapter-4 reveal belongs in the plan; it is not already delivered knowledge. Use next_chapter_commitments for what the next chapter must carry, not as a permanent dumping ground for every plan or character vow.
  5. Let evidence change knowledge before recording a payoff Finding a blue mark is not the same as knowing what it means. Before declaring a clue resolved, show who obtained what evidence and which uncertainty it actually closes. After the chapter is written, have the existing chapter transaction update the result, affected character snapshots, clue state and reader knowledge to match the prose. Do not write a planned discovery into tracking as if the scene already exists.
  6. Keep one tracking authority 追踪/_tracking-state.json is the structured authority. 上下文.md, character snapshots, clue views and author/reader timelines are derived outputs, not extra places to hand-edit the story. The workflow submits one structured transaction through tracking_commit.py; ask the agent to show the resulting handoff, not just reply “I will remember.” The illustrative card below is not a replacement schema or import payload.
  7. Repair old-chapter changes through their consequences If you remove or change the clue in chapter X, request a scoped chapter revision with the intended fact and affected passage. The documented revision path recalculates tracking from X through the last written chapter and identifies later prose that may depend on it. It does not automatically rewrite every later chapter. Preserve current work before a large revision and decide which dependent passages should change.
  1. 把稳定人设与最新状态分开 用相关的 设定/角色/{角色名}.md 理解稳定人设,用 追踪/角色状态/{角色名}.md 看当前位置、目标、关系、本人已知和未结事项。“许棠有一个哥哥”,不等于她知道这封信就是哥哥寄的。久别后重新出场的人物,需要最新状态,不是重贴第一次出场简介。
  2. 把信息分成三个视角 每个重要秘密都分别问:作者已经确定的真相是什么;各角色现在能据此行动的事实是什么;读者已经看见什么?追踪事务区分 objective_factreader_knowledge,角色认知则在各自快照中。作者私下的答案与未来揭示计划,都不能悄悄变成本章视角人物的已知。
  3. 续章只带必要交接 续写流程先核对已提交章,再读 追踪/上下文.md、本章细纲与相关卷纲/人物材料。状态卡包含当前位置、长期约束、核心角色状态、活跃伏笔、近章速记、下一章承诺和连贯性风险;旧信息不够时再定点查,不默认读完所有逐章记录。这是流程要求,不是所有宿主都会自动正确执行的保证。
  4. 分清角色的承诺与下一章的任务 许棠“七点前把信送到”的话,是有期限、尚未兑现的故事责任;第3章的交接任务则是找到可核对的旧地址,同时不揭寄信人。计划第4章揭晓的事应留在规划里,不能算已经交付的信息。next_chapter_commitments 用于下一章必须承接的内容,不是把所有远期计划和角色誓言永远堆进去。
  5. 先有证据改变认知,再记回收 看见蓝色三角,不等于已经知道它是什么意思。宣布伏笔回收前,要在正文中交代谁拿到什么证据,以及它究竟解决了哪个疑问。章节实际写成后,由既有章后事务更新结果、受影响角色快照、伏笔状态与读者认知,并与正文一致;不能把计划中的发现提前登记成发生过的场景。
  6. 只保留一个追踪权威 追踪/_tracking-state.json 是结构化权威;上下文.md、角色快照、伏笔视图和作者/读者时间线都是派生产物,不是另外几处可以手改剧情的地方。流程通过 tracking_commit.py 提交一次结构化事务;要求 Agent 展示更新后的交接,不要只得到“我记住了”。下面的示意卡不是替代 schema,也不是可导入事务。
  7. 旧章变动要顺着后果修 删除或改变第 X 章线索时,带着原段落和希望保留的事实请求范围明确的大修。文档规定从 X 章重算到最后已写章的追踪状态,并列出可能依赖它的后续正文;这不会自动改写所有后文。大修前先保留当前作品,再决定哪些相关段落需要一起改。

Example · 示例

ORIGINAL EDITORIAL EXAMPLE — The Returned Letter
These are authored excerpts and a planning card, not an executed Oh Story project.
No tracking JSON or chapter file is supplied by this example.

Established in chapter 1, at 18:20:
Xu Tang slips an unopened returned letter into her inner pocket.
“Before seven, I will put this into Aunt Shen’s hands.”

Established in chapter 2, at 18:35:
The clerk covers the page corner with a finger.
“This page records returned items, not the sender’s name.”
Xu Tang sees a blue triangle beside the date. The envelope is still sealed in her inner pocket.

Author-only decision:
Her older brother sent the letter; the triangle relates to a changed address.
The author plans evidence-based confirmation in chapter 4, not chapter 3.
This is approved background, not a fact Xu Tang has learned or the reader has seen.

Handoff before chapter 3 — explanatory labels, not a transaction schema:
- Character knowledge: returned letter; blue triangle; sender still unconfirmed.
- Reader knowledge: the same visible facts; no reveal of the brother as sender.
- Prop/location: sealed letter remains with Xu Tang at the returns desk.
- Unfinished story obligation: deliver it to Aunt Shen before 19:00.
- Next chapter’s job: obtain a checkable old address and a next action.
- Still withheld: sender identity and the triangle’s confirmed meaning.
- Planned future event: chapter 4 confirmation; not a completed payoff now.

Bad continuation:
“Xu Tang recognized her brother’s forwarding mark. With the letter delivered,
she decided to wait for him at the pier.”
Why it breaks continuity: she gains two answers without evidence, and an undelivered
letter becomes delivered without a scene. An intention is mistaken for an event.

A permitted opening revision, not a complete chapter:
Xu Tang took out the still-sealed letter and laid it beside the register.
“Is this triangle something your office draws when a letter comes back?”
She checked the wall clock. Twenty-five minutes until seven.

If chapter 3 later establishes the old address, record that new knowledge after
the scene is actually written. The triangle can remain unresolved; finding a lead
is not proof of the sender or fulfillment of the delivery promise.

Read-only handoff request for an agent in the existing book project:
Before drafting, show the actual last committed chapter and the next blueprint.
For the involved characters, separate author truth, character knowledge and reader
knowledge. List the current letter/prop state, unresolved clues, deadline and the
next chapter’s specific commitment. Identify the source chapter or author decision
for each; keep unknowns unknown. Do not draft prose or hand-edit tracking yet.
After I settle the direction, I will explicitly request the chapter.

If revising an earlier chapter:
“I am changing the blue triangle in chapter 2 to a torn corner; keep the sender
unrevealed. Show which later references and planned reveals depend on the triangle,
use the existing revision workflow for tracking, and do not rewrite later prose
outside the scope I specify.”
原创编辑示例——《退回来的信》
下面是为指南写的片段与规划卡,不是运行过的 Oh Story 工程。
示例不提供追踪 JSON 或真实章节文件。

第1章已经成立,18:20:
许棠把尚未拆封的退信放进内袋。
“七点前,我会把它送到沈姨手里。”

第2章已经成立,18:35:
登记员用指节挡住页角。
“这里只记退件,寄信人的名字不在这页。”
许棠看见日期旁一个蓝色三角。信仍未拆封,放在她内袋里。

作者私下确定的设定:
寄信人是她的哥哥;三角与改寄地址有关。
作者计划第4章才通过证据确认,不在第3章揭晓。
这是批准的背景,不是许棠已经获知或读者已经看到的事。

第3章之前的交接——以下是说明性标签,不是事务 schema:
- 角色已知:退信、蓝色三角;寄信人尚未确认。
- 读者已知:同样的可见事实;尚未揭示哥哥就是寄信人。
- 道具/位置:信仍封口,在许棠内袋里;她仍在退件登记台旁。
- 未完故事责任:19:00 前把信交到沈姨手中。
- 下一章任务:找到可核对的旧地址,让行动有新的方向。
- 暂不揭示:寄信人身份与三角的确定含义。
- 未来计划:第4章确认;现在不能标成已经回收。

有问题的续写:
“许棠认出,那是哥哥改寄时留下的记号。既然信已经送达,
她决定去码头等他。”
问题:没有证据就得到两个答案,又没有交信场景便把未送达改成已送达。
把计划或意图误当成已经发生的事件。

允许的开头修改,不是完整一章:
许棠取出没拆封的信,压在登记簿旁。
“这个三角,是你们收退件时画的吗?”
她看了一眼墙上的钟。离七点还有二十五分钟。

如果第3章后来确实写出了旧地址,章后再记录这项新认知。
三角仍可保持未解:找到下一条线索,不等于确认寄信人,也不等于兑现送信承诺。

给同一书稿目录中 Agent 的只读交接请求:
写正文前,先列出实际最后提交章与下一章细纲。
针对本章人物,分开作者真相、本人已知和读者已知;列出信件/道具当前状态、
未结线索、期限与下一章的具体承诺。每项标出依据章节或作者决定,未知保持未知。
暂不写正文,不手改追踪;等方向确定后,我会明确点名要写的章节。

如果要修改旧章:
“我准备把第2章的蓝色三角改成信封缺角,仍不揭寄信人。
先指出后续哪些引用和揭示计划依赖三角,追踪走已有大修流程;
后文只改我指定的范围,不自动重写整本书。”

Expected files · 预期文件

Verify the result · 验证结果与边界

Sources and version notes · 来源与版本说明