store

package
v0.7.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 17, 2026 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Overview

Package store 提供基于文件系统的持久化存储。

架构:1 个 IO 基座 + 多个子存储 + 1 个组合根。 每个子存储持有独立的 IO 实例和独立的 sync.RWMutex。 主要领域(Progress、Outline、Drafts、Summaries 等)的读写互不阻塞; WorldStore 将多个低频小领域合并共享一把锁。

组合根 Store 持有所有子存储的引用,并串行协调跨域操作 (ExpandArc、AppendVolume、ClearHandledSteer);多个文件不构成事务原子提交, 调用依靠安全写入顺序、显式错误与同参数幂等重放恢复。

子存储划分:

  • ProgressStore: 进度主状态(meta/progress.json)
  • OutlineStore: 前提、大纲(扁平/分层)、指南针
  • DraftStore: 章节构思、草稿、终稿
  • SummaryStore: 章/弧/卷摘要
  • RunMetaStore: 运行元数据(模型、干预历史)
  • SignalStore: 一次性信号文件(PendingCommit 恢复)
  • CheckpointStore: step 级 checkpoint(meta/checkpoints.jsonl)
  • RuntimeStore: 运行时事件队列(meta/runtime/*.jsonl)
  • CharacterStore: 角色档案、状态快照
  • WorldStore: 时间线、伏笔、关系、状态变化、世界规则、风格规则、审阅

Index

Constants

View Source
const (
	LegacyProjectFormatVersion  = 1
	CurrentProjectFormatVersion = 2
)
View Source
const CompactTag = "[session_compact:"

CompactTag 是占位标记前缀,方便搜索和还原。

Variables

View Source
var ErrOutlineChapterNotFound = errors.New("outline chapter not found")

ErrOutlineChapterNotFound 表示章节尚未进入当前大纲。

Functions

func ChapterRecordPath added in v0.7.6

func ChapterRecordPath(chapter int) string

func IsCompacted added in v0.1.2

func IsCompacted(text string) bool

IsCompacted 检查文本是否已被压缩。

Types

type ArcBoundary

type ArcBoundary struct {
	IsArcEnd       bool
	IsVolumeEnd    bool
	Volume         int
	Arc            int
	StartChapter   int
	EndChapter     int
	NextVolume     int
	NextArc        int
	NeedsExpansion bool
	NeedsNewVolume bool // 卷末且当前 layered_outline 没有下一卷
}

ArcBoundary 弧边界信息。

func (*ArcBoundary) HasNextArc added in v0.0.2

func (b *ArcBoundary) HasNextArc() bool

HasNextArc 是否还有后续弧。

type BookStore added in v0.7.6

type BookStore struct {
	// contains filtered or unexported fields
}

BookStore 管理作品对外信息,meta/book.json 是唯一事实源,book.md 是可读投影。

func NewBookStore added in v0.7.6

func NewBookStore(io *IO) *BookStore

func (*BookStore) Load added in v0.7.6

func (s *BookStore) Load() (*domain.BookMetadata, error)

Load 读取作品信息;尚未生成时返回 nil。

func (*BookStore) Save added in v0.7.6

func (s *BookStore) Save(book domain.BookMetadata) error

Save 保存规范化的作品信息及其可读投影。

type CastStore added in v0.4.0

type CastStore struct {
	// contains filtered or unexported fields
}

CastStore 管理配角名册(meta/cast_ledger.json)。

配角名册记录"出现过的有名字的次要角色",与 characters.json(核心角色档案)正交:

  • characters.json:Architect 显式设计的主角 + 关键配角,写作期不修改
  • cast_ledger.json:commit_chapter 工具自动累加,所有有名字的非核心配角

MergeAppearances 是幂等的:同一章重复 commit 不会重复累加 AppearanceCount。

func NewCastStore added in v0.4.0

func NewCastStore(io *IO) *CastStore

func (*CastStore) Load added in v0.4.0

func (s *CastStore) Load() ([]domain.CastEntry, error)

Load 读取配角名册。文件不存在时返回空切片。

func (*CastStore) MergeAppearances added in v0.4.0

func (s *CastStore) MergeAppearances(
	chapter int,
	characters []string,
	intros []domain.CastIntro,
	knownCore map[string]bool,
) error

MergeAppearances 把本章出场记录合并进名册。

参数:

  • chapter: 本章号
  • characters: 本章出场名字数组(来自 commit_chapter.Characters)
  • intros: Writer 显式声明的新角色简介(首次出场或补全 BriefRole)
  • knownCore: characters.json 中已有的核心角色名集合(这些跳过 ledger 写入)

行为:

  • 名字在 knownCore 中:跳过(核心角色档案是其唯一记录入口)
  • 名字已在 ledger 且 chapter 已在 AppearanceChapters:完全跳过(幂等)
  • 名字已在 ledger 但 chapter 是新的:更新 LastSeenChapter + 追加 chapter + count++
  • 名字未在 ledger:新增条目
  • intros 中的 BriefRole 仅在 ledger 条目 BriefRole 仍为空时采用,避免覆盖更早的简介

func (*CastStore) RecentActive added in v0.4.0

func (s *CastStore) RecentActive(limit int) ([]domain.CastEntry, error)

RecentActive 返回最近活跃的 N 条配角条目(按 LastSeenChapter 倒序)。 用于 novel_context 召回 Writer 写下一章时可能需要的"近期出场配角"。

已升格到 characters.json 的条目(Promoted=true)会被跳过,避免与核心档案重复召回。

func (*CastStore) Save added in v0.4.0

func (s *CastStore) Save(entries []domain.CastEntry) error

Save 整体保存配角名册(原子写入)。

type ChapterFeedback added in v0.7.0

type ChapterFeedback struct {
	Chapter          int      `json:"chapter"`
	StoryChanged     bool     `json:"story_changed,omitempty"`
	ChangeSummary    string   `json:"change_summary,omitempty"`
	Deviation        string   `json:"deviation,omitempty"`
	Suggestion       string   `json:"suggestion,omitempty"`
	DownstreamIssues []string `json:"downstream_issues,omitempty"`
	At               string   `json:"at"`
}

ChapterFeedback 一条带章节号的大纲反馈。

func (ChapterFeedback) RequiresImmediateReview added in v0.7.6

func (f ChapterFeedback) RequiresImmediateReview() bool

RequiresImmediateReview 区分外部修订影响与普通写作反馈。普通反馈留到下一次 自然结构操作统一吸收;外部修订可能使即将续写的大纲失效,必须先交 Architect。

type ChapterRecordStore added in v0.7.6

type ChapterRecordStore struct {
	// contains filtered or unexported fields
}

func NewChapterRecordStore added in v0.7.6

func NewChapterRecordStore(io *IO) *ChapterRecordStore

func (*ChapterRecordStore) Accept added in v0.7.6

func (s *ChapterRecordStore) Accept(chapter int, origin domain.ChapterOrigin, content string, facts domain.ChapterFacts, style domain.StyleDelta) (*domain.ChapterRecord, error)

func (*ChapterRecordStore) Load added in v0.7.6

func (s *ChapterRecordStore) Load(chapter int) (*domain.ChapterRecord, error)

func (*ChapterRecordStore) LoadCompleted added in v0.7.6

func (s *ChapterRecordStore) LoadCompleted(chapters []int) ([]domain.ChapterRecord, error)

func (*ChapterRecordStore) Save added in v0.7.6

func (s *ChapterRecordStore) Save(record domain.ChapterRecord) error

type ChapterViolations added in v0.7.0

type ChapterViolations struct {
	Chapter    int               `json:"chapter"`
	Violations []rules.Violation `json:"violations"`
	At         string            `json:"at"`
}

ChapterViolations 一章的机械违规记录。

type CharacterStore added in v0.0.3

type CharacterStore struct {
	// contains filtered or unexported fields
}

CharacterStore 管理角色档案和状态快照。

func NewCharacterStore added in v0.0.3

func NewCharacterStore(io *IO, outline *OutlineStore) *CharacterStore

func (*CharacterStore) Load added in v0.0.3

func (s *CharacterStore) Load() ([]domain.Character, error)

Load 从 characters.json 读取角色档案。

func (*CharacterStore) LoadLatestSnapshots added in v0.0.3

func (s *CharacterStore) LoadLatestSnapshots() ([]domain.CharacterSnapshot, error)

LoadLatestSnapshots 加载最近一次角色快照(按卷弧倒序查找)。

func (*CharacterStore) LoadSnapshots added in v0.0.3

func (s *CharacterStore) LoadSnapshots(volume, arc int) ([]domain.CharacterSnapshot, error)

LoadSnapshots 读取指定卷弧的角色快照。

func (*CharacterStore) Save added in v0.0.3

func (s *CharacterStore) Save(chars []domain.Character) error

Save 同时保存 characters.json 和 characters.md(原子写入)。

func (*CharacterStore) SaveSnapshots added in v0.0.3

func (s *CharacterStore) SaveSnapshots(volume, arc int, snapshots []domain.CharacterSnapshot) error

SaveSnapshots 保存角色状态快照到 meta/snapshots/v{vol}a{arc}.json。

type CheckpointStore added in v0.1.0

type CheckpointStore struct {
	// contains filtered or unexported fields
}

CheckpointStore 管理 step 级 checkpoint 的追加与查询。 磁盘格式:meta/checkpoints.jsonl,只追加;查询走内存镜像。 不变量:cache 是 checkpoints.jsonl 的镜像,由 Append/Reset 单点维护。 并发:cache 受 io.mu 保护,写走 Lock、读走 RLock。

func NewCheckpointStore added in v0.1.0

func NewCheckpointStore(io *IO) *CheckpointStore

NewCheckpointStore 创建 checkpoint 存储,从磁盘一次性加载已有 checkpoint 到 cache。

func (*CheckpointStore) All added in v0.1.0

func (cs *CheckpointStore) All() []domain.Checkpoint

All 返回全部 checkpoint 列表副本(按 seq 递增)。

func (*CheckpointStore) Append added in v0.1.0

func (cs *CheckpointStore) Append(scope domain.Scope, step, artifact, digest string) (*domain.Checkpoint, error)

Append 追加一条 checkpoint。 幂等:相同 Scope + Step + Digest 已存在则跳过写入,直接返回已有记录。

func (*CheckpointStore) AppendArtifact added in v0.3.0

func (cs *CheckpointStore) AppendArtifact(scope domain.Scope, step, artifact string) (*domain.Checkpoint, error)

AppendArtifact 计算 artifact 内容指纹后追加 checkpoint。

func (*CheckpointStore) AppendArtifacts added in v0.7.4

func (cs *CheckpointStore) AppendArtifacts(scope domain.Scope, step string, artifacts ...string) (*domain.Checkpoint, error)

AppendArtifacts 为同一步骤的多个正式工件生成组合指纹。 Artifact 保留第一个主工件路径;任一关联工件变化都会产生新 checkpoint。

func (*CheckpointStore) InitError added in v0.7.3

func (cs *CheckpointStore) InitError() error

InitError 返回构造时加载 checkpoint 镜像的错误。Store.Init 必须先检查它, 防止损坏的 jsonl 被解释成“没有 checkpoint”。

func (*CheckpointStore) Latest added in v0.1.0

func (cs *CheckpointStore) Latest(scope domain.Scope) *domain.Checkpoint

Latest 返回指定 scope 的最新 checkpoint。

func (*CheckpointStore) LatestByStep added in v0.1.0

func (cs *CheckpointStore) LatestByStep(scope domain.Scope, step string) *domain.Checkpoint

LatestByStep 返回指定 scope + step 的最新 checkpoint。

func (*CheckpointStore) LatestGlobal added in v0.1.0

func (cs *CheckpointStore) LatestGlobal() *domain.Checkpoint

LatestGlobal 返回全局最新 checkpoint(不区分 scope)。

func (*CheckpointStore) Reset added in v0.1.0

func (cs *CheckpointStore) Reset() error

Reset 清空 checkpoint 文件与 cache。仅在新建小说时使用。 先删文件再清内存:删除失败时保留 cache 与 seqGen,避免内存与磁盘状态错位。

type DecisionRecord added in v0.7.0

type DecisionRecord struct {
	SchemaVersion  int             `json:"schema_version"`
	ID             string          `json:"id"`
	At             string          `json:"at"`
	Kind           string          `json:"kind"`    // intervention | plan_start | volume_end | ...
	Decider        string          `json:"decider"` // arbiter | architect(卷末评审)
	CheckpointSeq  int64           `json:"checkpoint_seq,omitempty"`
	Input          string          `json:"input,omitempty"`
	InputTruncated bool            `json:"input_truncated,omitempty"`
	Facts          json.RawMessage `json:"facts,omitempty"`
	Decision       json.RawMessage `json:"decision,omitempty"`
	Reason         string          `json:"reason,omitempty"`
	Error          string          `json:"error,omitempty"` // 裁定失败时的错误文本——失败也是审计事实,没有它排障只能靠推理
	Model          string          `json:"model,omitempty"`
	DurationMs     int64           `json:"duration_ms,omitempty"`
}

DecisionRecord 一次语义裁定的审计记录。facts 只存结构化事实与引用,不复制正文。 input 保留在记录内(离线重放必需);脱敏发生在 diag export 边界,不在落盘时。

type DecisionStore added in v0.7.0

type DecisionStore struct {
	// contains filtered or unexported fields
}

DecisionStore 审计运行时的 LLM 语义裁定(meta/decisions.jsonl,append-only)。

定位(docs/engine-arbiter.md §4.3):审计与离线重放的数据源——记录"当时看到什么 事实、做了什么裁定",供 eval 回归与未来 Arbiter 的 A/B 对照。它**不是**事件溯源, 也**不是**恢复数据源(恢复只依赖 Progress/Checkpoint/RunMeta 等事实层)。

func NewDecisionStore added in v0.7.0

func NewDecisionStore(io *IO) *DecisionStore

func (*DecisionStore) Append added in v0.7.0

Append 落盘一条裁定记录;SchemaVersion/At/ID 由本方法补齐,input 超限截断。 返回补齐后的记录(ID 供调用方关联,如 PlanStartRecord.DecisionID)。

func (*DecisionStore) Recent added in v0.7.0

func (s *DecisionStore) Recent(n int) ([]DecisionRecord, error)

Recent 返回最近 n 条记录(旧→新);文件缺失返回空。

已提交损坏行必须显式返回错误——Arbiter 不能在缺失部分历史的事实包上继续裁定。 崩溃打断的尾部残行(末字节非 '\n')由 committedDataUnlocked 截断并显式告警;这不是 猜测式修复,因为本文件协议规定只有换行结束的记录才算提交。

type DraftStore added in v0.0.3

type DraftStore struct {
	// contains filtered or unexported fields
}

DraftStore 管理章节构思、草稿和终稿。

func NewDraftStore added in v0.0.3

func NewDraftStore(io *IO) *DraftStore

func (*DraftStore) AppendDraft added in v0.0.3

func (s *DraftStore) AppendDraft(chapter int, content string) error

AppendDraft 追加内容到现有草稿(续写模式)。

func (*DraftStore) ExtractDialogue added in v0.0.3

func (s *DraftStore) ExtractDialogue(characterName string, aliases []string, maxSamples, maxCompletedChapter int) ([]string, error)

ExtractDialogue 从已提交章节中提取指定角色的对话片段。 maxCompletedChapter 由调用方传入,避免跨域依赖。

func (*DraftStore) ExtractStyleAnchors added in v0.0.3

func (s *DraftStore) ExtractStyleAnchors(maxAnchors, maxCompletedChapter int) ([]string, error)

ExtractStyleAnchors 从已提交章节中提取代表性段落作为风格锚点。 maxCompletedChapter 由调用方传入,避免跨域依赖。

func (*DraftStore) LoadChapterContent added in v0.0.3

func (s *DraftStore) LoadChapterContent(chapter int) (string, int, error)

LoadChapterContent 加载章节草稿正文及字数。

func (*DraftStore) LoadChapterPlan added in v0.0.3

func (s *DraftStore) LoadChapterPlan(chapter int) (*domain.ChapterPlan, error)

LoadChapterPlan 读取章节构思。

func (*DraftStore) LoadChapterRange added in v0.0.3

func (s *DraftStore) LoadChapterRange(from, to, maxRunes int) (map[int]string, error)

LoadChapterRange 读取指定范围的终稿原文片段。

func (*DraftStore) LoadChapterText added in v0.0.3

func (s *DraftStore) LoadChapterText(chapter int) (string, error)

LoadChapterText 读取已提交的终稿原文。

func (*DraftStore) LoadDraft added in v0.0.3

func (s *DraftStore) LoadDraft(chapter int) (string, error)

LoadDraft 读取整章草稿。

func (*DraftStore) SaveChapterPlan added in v0.0.3

func (s *DraftStore) SaveChapterPlan(plan domain.ChapterPlan) error

SaveChapterPlan 保存章节构思到 drafts/{ch}.plan.json。

func (*DraftStore) SaveDraft added in v0.0.3

func (s *DraftStore) SaveDraft(chapter int, content string) error

SaveDraft 保存整章草稿到 drafts/{ch}.draft.md。

func (*DraftStore) SaveFinalChapter added in v0.0.3

func (s *DraftStore) SaveFinalChapter(chapter int, content string) error

SaveFinalChapter 保存最终章节正文到 chapters/{ch}.md。

type IO added in v0.0.3

type IO struct {
	// contains filtered or unexported fields
}

IO 封装文件系统读写操作,提供加锁和原子写入。 每个子存储持有独立的 IO 实例,拥有各自的 sync.RWMutex。

func (*IO) AppendLine added in v0.1.0

func (io *IO) AppendLine(rel string, data []byte) error

func (*IO) AppendLineUnlocked added in v0.1.0

func (io *IO) AppendLineUnlocked(rel string, data []byte) error

func (*IO) EnsureDirs added in v0.0.3

func (io *IO) EnsureDirs(dirs []string) error

EnsureDirs 创建指定的子目录。

func (*IO) ReadFile added in v0.0.3

func (io *IO) ReadFile(rel string) ([]byte, error)

func (*IO) ReadFileUnlocked added in v0.0.3

func (io *IO) ReadFileUnlocked(rel string) ([]byte, error)

func (*IO) ReadJSON added in v0.0.3

func (io *IO) ReadJSON(rel string, v any) error

func (*IO) ReadJSONUnlocked added in v0.0.3

func (io *IO) ReadJSONUnlocked(rel string, v any) error

func (*IO) RemoveFile added in v0.0.3

func (io *IO) RemoveFile(rel string) error

func (*IO) RemoveFileUnlocked added in v0.0.3

func (io *IO) RemoveFileUnlocked(rel string) error

func (*IO) WithWriteLock added in v0.0.3

func (io *IO) WithWriteLock(fn func() error) error

func (*IO) WriteFileUnlocked added in v0.0.3

func (io *IO) WriteFileUnlocked(rel string, data []byte) error

func (*IO) WriteJSON added in v0.0.3

func (io *IO) WriteJSON(rel string, v any) error

func (*IO) WriteJSONUnlocked added in v0.0.3

func (io *IO) WriteJSONUnlocked(rel string, v any) error

func (*IO) WriteMarkdown added in v0.0.3

func (io *IO) WriteMarkdown(rel string, content string) error

func (*IO) WriteMarkdownUnlocked added in v0.0.3

func (io *IO) WriteMarkdownUnlocked(rel string, content string) error

WriteMarkdownUnlocked 写出 .md sidecar。约定:每个 .md 都是对应 .json 的 best-effort 人类可读视图,绝非数据源——运行时与导出一律从 .json 重新渲染。 各 Save 方法在同一写锁内先写 .json 再写此 .md,是两次独立的 tmp+rename; 二者之间崩溃会留下 .md 落后于 .json,这是可接受的(无人把 .md 当数据读, 下次写同一 scope 即自愈)。故意不为此加两文件原子提交——那是过度设计。

type ModelLookup added in v0.4.0

type ModelLookup func(agentName string) (provider, model string)

ModelLookup 在 logger 写入时按 agent 名查"当时生效"的 provider/model。 用 func 类型而不是 interface,方便调用方用闭包注入归一规则(如 architect_short → architect)。 返回空字符串表示未知,调用方仍照常写入但不带 _meta,replay 时退回 ModelSet fallback。

type OutlineStore added in v0.0.3

type OutlineStore struct {
	// contains filtered or unexported fields
}

OutlineStore 管理故事前提、大纲(扁平/分层)和指南针。

func NewOutlineStore added in v0.0.3

func NewOutlineStore(io *IO) *OutlineStore

func (*OutlineStore) AppendOutlineFeedback added in v0.7.0

func (s *OutlineStore) AppendOutlineFeedback(fb ChapterFeedback) error

AppendOutlineFeedback 追加一条 writer 反馈。相同章节与内容视为同一事实, 使 commit 在 ProgressMarked 前崩溃重放时不会重复累加附属反馈。

func (*OutlineStore) CheckArcBoundary added in v0.0.3

func (s *OutlineStore) CheckArcBoundary(chapter int) (*ArcBoundary, error)

CheckArcBoundary 检查某章是否为弧/卷的最后一章。

func (*OutlineStore) ClearLayeredOutline added in v0.0.3

func (s *OutlineStore) ClearLayeredOutline() error

ClearLayeredOutline 清理分层大纲文件。

func (*OutlineStore) ClearOutlineFeedback added in v0.7.0

func (s *OutlineStore) ClearOutlineFeedback() error

ClearOutlineFeedback 清空反馈池(architect 结构操作成功 = 反馈已被参考)。

func (*OutlineStore) CompletedArcBoundaries added in v0.7.6

func (s *OutlineStore) CompletedArcBoundaries(lastCompleted int) ([]ArcBoundary, error)

CompletedArcBoundaries 按故事顺序返回已完成的详细弧边界。

func (*OutlineStore) GetChapterFromLayered added in v0.0.3

func (s *OutlineStore) GetChapterFromLayered(chapter int) (*domain.OutlineEntry, error)

GetChapterFromLayered 从分层大纲中按全局章节号查找。

func (*OutlineStore) GetChapterOutline added in v0.0.3

func (s *OutlineStore) GetChapterOutline(chapter int) (*domain.OutlineEntry, error)

GetChapterOutline 获取指定章节的大纲条目。

func (*OutlineStore) LoadCompass added in v0.0.3

func (s *OutlineStore) LoadCompass() (*domain.StoryCompass, error)

LoadCompass 读取终局方向指南针。

func (*OutlineStore) LoadFoundationAudit added in v0.7.4

func (s *OutlineStore) LoadFoundationAudit() (*domain.FoundationAudit, error)

LoadFoundationAudit 读取最近一次基础设定语义审查。

func (*OutlineStore) LoadLayeredOutline added in v0.0.3

func (s *OutlineStore) LoadLayeredOutline() ([]domain.VolumeOutline, error)

LoadLayeredOutline 读取分层大纲。

func (*OutlineStore) LoadOutline added in v0.0.3

func (s *OutlineStore) LoadOutline() ([]domain.OutlineEntry, error)

LoadOutline 从 outline.json 读取结构化大纲。

func (*OutlineStore) LoadPendingOutlineFeedback added in v0.7.0

func (s *OutlineStore) LoadPendingOutlineFeedback() ([]ChapterFeedback, error)

LoadPendingOutlineFeedback 读取未消费的反馈(旧→新)。损坏行显式返回错误, 防止 Architect 在缺失部分反馈的上下文上继续结构操作并随后清空原文件。

func (*OutlineStore) LoadPremise added in v0.0.3

func (s *OutlineStore) LoadPremise() (string, error)

LoadPremise 读取 premise.md。不存在时返回空字符串。

func (*OutlineStore) LocateChapter added in v0.0.3

func (s *OutlineStore) LocateChapter(chapter int) (volume, arc int, err error)

LocateChapter 根据全局章节号定位所在的卷和弧。

func (*OutlineStore) SaveCompass added in v0.0.3

func (s *OutlineStore) SaveCompass(compass domain.StoryCompass) error

SaveCompass 保存终局方向指南针。

func (*OutlineStore) SaveFoundationAudit added in v0.7.4

func (s *OutlineStore) SaveFoundationAudit(a domain.FoundationAudit) error

SaveFoundationAudit 保存 Architect 对当前基础设定版本的语义审查。

func (*OutlineStore) SaveLayeredOutline added in v0.0.3

func (s *OutlineStore) SaveLayeredOutline(volumes []domain.VolumeOutline) error

SaveLayeredOutline 以分层大纲为唯一来源,保存分层视图并同步重建扁平派生视图。 调用方不需要、也不应再单独维护 outline.json/outline.md。

func (*OutlineStore) SaveOutline added in v0.0.3

func (s *OutlineStore) SaveOutline(entries []domain.OutlineEntry) error

SaveOutline 同时保存 outline.json 和 outline.md(原子写入)。

func (*OutlineStore) SaveOutlineFeedbackResolution added in v0.7.6

func (s *OutlineStore) SaveOutlineFeedbackResolution(reason string, count int) error

func (*OutlineStore) SavePremise added in v0.0.3

func (s *OutlineStore) SavePremise(content string) error

SavePremise 保存故事前提到 premise.md。

type ProgressStore added in v0.0.3

type ProgressStore struct {
	// contains filtered or unexported fields
}

ProgressStore 管理创作进度状态。

func NewProgressStore added in v0.0.3

func NewProgressStore(io *IO) *ProgressStore

func (*ProgressStore) AdvancePhase added in v0.7.6

func (s *ProgressStore) AdvancePhase(phase domain.Phase) error

AdvancePhase 将创作阶段至少推进到 phase;已经到达更后阶段时保持不变。 适用于可重复保存的阶段工件,避免修订旧工件被误判为阶段回退。

func (*ProgressStore) ApplyReviewOutcome added in v0.7.3

func (s *ProgressStore) ApplyReviewOutcome(flow domain.FlowState, chapters []int, reason string) (*domain.Progress, error)

ApplyReviewOutcome 原子应用审阅产生的流程状态。审阅语义由上层决定;Store 只负责 校验 Flow 迁移和返工章节,并保证 Flow、PendingRewrites、RewriteReason 不出现中间态。

func (*ProgressStore) ClearInProgress added in v0.0.3

func (s *ProgressStore) ClearInProgress() error

ClearInProgress 清除进度中间状态。

func (*ProgressStore) ClearPendingRewrites added in v0.0.3

func (s *ProgressStore) ClearPendingRewrites() error

ClearPendingRewrites 强制清空重写队列。

func (*ProgressStore) CompleteRewrite added in v0.0.3

func (s *ProgressStore) CompleteRewrite(chapter int) error

CompleteRewrite 从待重写队列中移除已完成的章节。

func (*ProgressStore) Init added in v0.0.3

func (s *ProgressStore) Init(totalChapters int) error

Init 创建初始进度。

func (*ProgressStore) IsChapterCompleted added in v0.1.0

func (s *ProgressStore) IsChapterCompleted(chapter int) (bool, error)

IsChapterCompleted 检查章节是否已提交完成。读取失败显式返回,不能把损坏的 progress 当成“未完成”后继续覆盖章节。

func (*ProgressStore) Load added in v0.0.3

func (s *ProgressStore) Load() (*domain.Progress, error)

Load 读取 meta/progress.json。不存在时返回 nil。

func (*ProgressStore) MarkChapterComplete added in v0.0.3

func (s *ProgressStore) MarkChapterComplete(chapter, wordCount int, hookType, dominantStrand string) error

MarkChapterComplete 标记章节完成,原子性更新进度。

func (*ProgressStore) MarkComplete added in v0.0.3

func (s *ProgressStore) MarkComplete() error

MarkComplete 标记全书创作完成,并清除重开返工标记(完结即不再处于返工态)。

func (*ProgressStore) Reopen added in v0.5.2

func (s *ProgressStore) Reopen(chapters []int, reason string) error

Reopen 把已完结的书重新打开进入返工态:phase complete→writing + 目标章入队 + flow=rewriting, 在一次写锁内原子完成。这是 phaseOrder“只前进”约束的唯一豁免出口——故意不走 ValidatePhaseTransition;回退的合法性收敛在本方法、且受 phase=complete 前置守卫保护, 避免误用导致状态机失控。改完队列后 commit_chapter 会自动重新收尾完结。

func (*ProgressStore) ReopenContinue added in v0.7.2

func (s *ProgressStore) ReopenContinue() error

ReopenContinue 把已完结的书重开为续写态:仅 phase complete→writing,不入返工队列、 不置 ReopenedFromComplete(那是"返工排空后按原结构自动重新完结"的 drain 语义, 续写重开恰恰要扩展结构)。与 Reopen 同为 phaseOrder"只前进"约束的豁免出口, 同受 phase=complete 前置守卫保护;重开后由卷末路由派发架构师续卷。

func (*ProgressStore) Save added in v0.0.3

func (s *ProgressStore) Save(p *domain.Progress) error

Save 保存进度。

func (*ProgressStore) SetFlow added in v0.0.3

func (s *ProgressStore) SetFlow(flow domain.FlowState) error

SetFlow 更新当前流程状态。

func (*ProgressStore) SetLayered added in v0.0.3

func (s *ProgressStore) SetLayered(layered bool) error

SetLayered 设置分层模式标志。

func (*ProgressStore) SetPendingRewrites added in v0.0.3

func (s *ProgressStore) SetPendingRewrites(chapters []int, reason string) error

SetPendingRewrites 设置待重写章节队列和原因。 PendingRewrites 只允许包含已完成章节;未完成章节还没有终稿,不能进入重写/打磨队列。

func (*ProgressStore) SetTotalChapters added in v0.0.3

func (s *ProgressStore) SetTotalChapters(n int) error

SetTotalChapters 更新大纲容量:非分层模式为详细章数,分层模式为内部估算。

func (*ProgressStore) StartChapter added in v0.1.0

func (s *ProgressStore) StartChapter(chapter int) error

StartChapter 标记某章进入写作中状态。它不能承担阶段迁移职责;调用方必须先由 foundation/import 流程把 Progress 明确推进到 writing,避免错误派单绕过规划阶段。

func (*ProgressStore) UpdatePhase added in v0.0.3

func (s *ProgressStore) UpdatePhase(phase domain.Phase) error

UpdatePhase 更新创作阶段。

func (*ProgressStore) UpdateVolumeArc added in v0.0.3

func (s *ProgressStore) UpdateVolumeArc(volume, arc int) error

UpdateVolumeArc 更新当前卷弧位置。

func (*ProgressStore) ValidateChapterWork added in v0.1.2

func (s *ProgressStore) ValidateChapterWork(chapter int) error

ValidateChapterWork 校验当前章节是否允许被规划或提交。 Writer 只能在 writing 阶段工作;打磨/重写流程下,只允许处理 PendingRewrites 中的章节。阶段约束在 Store 边界再守一次,避免错误的 Arbiter 派单绕过 Router。

func (*ProgressStore) ValidatePendingRewrites added in v0.5.3

func (s *ProgressStore) ValidatePendingRewrites(chapters []int) error

ValidatePendingRewrites 校验章节列表是否可进入返工队列,不修改状态。

type RevisionStore added in v0.7.6

type RevisionStore struct {
	// contains filtered or unexported fields
}

func NewRevisionStore added in v0.7.6

func NewRevisionStore(io *IO) *RevisionStore

func (*RevisionStore) ClearPending added in v0.7.6

func (s *RevisionStore) ClearPending() error

func (*RevisionStore) LoadPending added in v0.7.6

func (s *RevisionStore) LoadPending() (*domain.PendingRevision, error)

func (*RevisionStore) SavePending added in v0.7.6

func (s *RevisionStore) SavePending(pending domain.PendingRevision) error

type RunMetaStore added in v0.0.3

type RunMetaStore struct {
	// contains filtered or unexported fields
}

RunMetaStore 管理运行元信息(模型、干预历史、规划级别等)。

func NewRunMetaStore added in v0.0.3

func NewRunMetaStore(io *IO) *RunMetaStore

func (*RunMetaStore) ClearAdvanceHold added in v0.7.0

func (s *RunMetaStore) ClearAdvanceHold(expected domain.AdvanceHold) error

ClearAdvanceHold 只消费调用方刚读取的同一个意图;目标已不存在时幂等。

func (*RunMetaStore) ClearAdvancePermit added in v0.7.0

func (s *RunMetaStore) ClearAdvancePermit(chapter int) error

ClearAdvancePermit 仅消费匹配的章节许可;目标已不存在时幂等。

func (*RunMetaStore) ClearPendingSteer added in v0.0.3

func (s *RunMetaStore) ClearPendingSteer() error

ClearPendingSteer 清除已处理的 Steer 指令。

func (*RunMetaStore) GrantAdvancePermit added in v0.7.0

func (s *RunMetaStore) GrantAdvancePermit(chapter int) error

GrantAdvancePermit 为 review 模式持久化一个精确章节许可。

func (*RunMetaStore) Init added in v0.0.3

func (s *RunMetaStore) Init(style, provider, model string) error

Init 初始化或更新运行元信息;跨重启保留全部运行意图事实—— PlanStart 尤其关键:规划期(启动裁定已落盘、首个 foundation 未落盘)崩溃后, 它是恢复规划师身份的唯一依据,被 Init 覆盖会让恢复直接停机。

func (*RunMetaStore) Load added in v0.0.3

func (s *RunMetaStore) Load() (*domain.RunMeta, error)

Load 读取运行元信息。

func (*RunMetaStore) Save added in v0.0.3

func (s *RunMetaStore) Save(meta domain.RunMeta) error

Save 保存运行元信息到 meta/run.json。

func (*RunMetaStore) SetAdvanceHold added in v0.7.0

func (s *RunMetaStore) SetAdvanceHold(hold domain.AdvanceHold) error

SetAdvanceHold 登记一次性暂停意图;在途意图不允许被另一条静默覆盖。

func (*RunMetaStore) SetAdvanceMode added in v0.7.0

func (s *RunMetaStore) SetAdvanceMode(mode domain.ChapterAdvanceMode) error

SetAdvanceMode 切换章节推进模式。切回 auto 时在同一写锁内清除章节许可。

func (*RunMetaStore) SetPendingSteer added in v0.0.3

func (s *RunMetaStore) SetPendingSteer(input string) error

SetPendingSteer 记录未完成的 Steer 指令。

func (*RunMetaStore) SetPlanStart added in v0.7.0

func (s *RunMetaStore) SetPlanStart(rec domain.PlanStartRecord) error

SetPlanStart 固化启动裁定事实(裁定先落事实再起执行;规划期崩溃恢复据此续跑)。

func (*RunMetaStore) SetPlanningTier added in v0.0.3

func (s *RunMetaStore) SetPlanningTier(tier domain.PlanningTier) error

SetPlanningTier 记录当前作品的规划级别。

func (*RunMetaStore) SetStartPrompt added in v0.7.0

func (s *RunMetaStore) SetStartPrompt(prompt string) error

SetStartPrompt 固化用户的原始创作需求——输入事实,在启动裁定**之前**落盘。 裁定失败(如模型故障)时它仍然在,恢复/继续由引擎据此补裁(engine.planStartFallback), 启动失败不再是死局。

type RuntimeStore added in v0.1.0

type RuntimeStore struct {
	// contains filtered or unexported fields
}

RuntimeStore 管理统一运行时队列和每任务日志。

func NewRuntimeStore added in v0.1.0

func NewRuntimeStore(io *IO) *RuntimeStore

func (*RuntimeStore) AppendQueue added in v0.1.0

AppendQueue 追加一条运行时队列记录,并自动分配递增序号。

func (*RuntimeStore) AppendTaskLog added in v0.1.0

func (s *RuntimeStore) AppendTaskLog(taskID string, entry domain.RuntimeTaskLogEntry) error

AppendTaskLog 追加某个任务的运行日志。

func (*RuntimeStore) LoadQueue added in v0.1.0

func (s *RuntimeStore) LoadQueue() ([]domain.RuntimeQueueItem, error)

LoadQueue 读取当前持久化的全部运行时队列项。

func (*RuntimeStore) LoadQueueAfter added in v0.1.0

func (s *RuntimeStore) LoadQueueAfter(afterSeq int64) ([]domain.RuntimeQueueItem, error)

LoadQueueAfter 返回指定序号之后的队列项。

func (*RuntimeStore) LoadTaskLog added in v0.1.0

func (s *RuntimeStore) LoadTaskLog(taskID string) ([]domain.RuntimeTaskLogEntry, error)

LoadTaskLog 读取某个任务的全部运行日志。

func (*RuntimeStore) Reset added in v0.1.0

func (s *RuntimeStore) Reset() error

Reset 清空运行时队列和任务日志。

type SessionStore added in v0.1.2

type SessionStore struct {
	// contains filtered or unexported fields
}

SessionStore 追加式记录 LLM 对话历史到 JSONL 文件。 大体积内容(小说正文、完整上下文)用 [session_compact: ...] 占位标记替代。

func NewSessionStore added in v0.1.2

func NewSessionStore(io *IO) *SessionStore

func (*SessionStore) Log added in v0.1.2

func (s *SessionStore) Log(rel string, msg agentcore.AgentMessage) error

Log 追加一条消息到指定路径,自动压缩大内容。 不携带 _meta;仅 cocreate 等无角色路径使用。

func (*SessionStore) LogCoCreate added in v0.3.1

func (s *SessionStore) LogCoCreate(entry any) error

LogCoCreate 追加一条共创对话日志到 meta/sessions/cocreate.jsonl。 共创阶段还没绑定具体小说,统一落到 OutputDir 默认根(output/novel)下, 与正式创作的 agents/* 同位,方便排查。

func (*SessionStore) SubAgentLogger added in v0.1.2

func (s *SessionStore) SubAgentLogger(lookup ModelLookup) func(agentName, task string, msg agentcore.AgentMessage)

SubAgentLogger 返回子代理的 OnMessage 回调。

type SignalStore added in v0.0.3

type SignalStore struct {
	// contains filtered or unexported fields
}

SignalStore 管理一次性信号文件(commit/review 结果、待恢复状态)。

func NewSignalStore added in v0.0.3

func NewSignalStore(io *IO) *SignalStore

func (*SignalStore) ClearLastCommit added in v0.0.3

func (s *SignalStore) ClearLastCommit() error

ClearLastCommit 清除 commit 信号文件。

func (*SignalStore) ClearLastReview added in v0.0.3

func (s *SignalStore) ClearLastReview() error

ClearLastReview 清除审阅信号文件。

func (*SignalStore) ClearPendingCommit added in v0.0.3

func (s *SignalStore) ClearPendingCommit() error

ClearPendingCommit 清除待恢复的章节提交状态。

func (*SignalStore) ClearStaleSignals added in v0.0.3

func (s *SignalStore) ClearStaleSignals()

ClearStaleSignals 清理残留的信号文件(进程重启时调用)。

func (*SignalStore) LoadAndClearLastCommit added in v0.0.3

func (s *SignalStore) LoadAndClearLastCommit() (*domain.CommitResult, error)

LoadAndClearLastCommit 原子性读取并清除 commit 信号,防止 TOCTOU 竞态。

func (*SignalStore) LoadAndClearLastReview added in v0.0.3

func (s *SignalStore) LoadAndClearLastReview() (*domain.ReviewEntry, error)

LoadAndClearLastReview 原子性读取并清除审阅信号。

func (*SignalStore) LoadLastCommit added in v0.0.3

func (s *SignalStore) LoadLastCommit() (*domain.CommitResult, error)

LoadLastCommit 读取最近一次 commit 结果。

func (*SignalStore) LoadLastReviewSignal added in v0.0.3

func (s *SignalStore) LoadLastReviewSignal() (*domain.ReviewEntry, error)

LoadLastReviewSignal 读取审阅信号文件。

func (*SignalStore) LoadPendingCommit added in v0.0.3

func (s *SignalStore) LoadPendingCommit() (*domain.PendingCommit, error)

LoadPendingCommit 读取待恢复的章节提交状态。

func (*SignalStore) SaveLastCommit added in v0.0.3

func (s *SignalStore) SaveLastCommit(result domain.CommitResult) error

SaveLastCommit 保存最近一次 commit 结果到 meta/last_commit.json。

func (*SignalStore) SaveLastReview added in v0.0.3

func (s *SignalStore) SaveLastReview(r domain.ReviewEntry) error

SaveLastReview 保存最近一次审阅结果到 meta/last_review.json。

func (*SignalStore) SavePendingCommit added in v0.0.3

func (s *SignalStore) SavePendingCommit(pending domain.PendingCommit) error

SavePendingCommit 保存待恢复的章节提交状态。

type SimulationStore added in v0.4.2

type SimulationStore struct {
	// contains filtered or unexported fields
}

func NewSimulationStore added in v0.4.2

func NewSimulationStore(io *IO) *SimulationStore

func (*SimulationStore) Load added in v0.4.2

func (*SimulationStore) Save added in v0.4.2

func (s *SimulationStore) Save(profile domain.SimulationProfile) error

type Store

type Store struct {
	Progress       *ProgressStore
	Book           *BookStore
	Outline        *OutlineStore
	Drafts         *DraftStore
	Summaries      *SummaryStore
	RunMeta        *RunMetaStore
	UserRules      *UserRulesStore
	Signals        *SignalStore
	Runtime        *RuntimeStore
	Characters     *CharacterStore
	Cast           *CastStore
	World          *WorldStore
	Checkpoints    *CheckpointStore
	Sessions       *SessionStore
	Usage          *UsageStore
	Simulation     *SimulationStore
	Decisions      *DecisionStore
	ChapterRecords *ChapterRecordStore
	Revisions      *RevisionStore
	// contains filtered or unexported fields
}

Store 是状态管理的组合根,持有所有子存储。

func NewStore

func NewStore(dir string) *Store

NewStore 创建状态管理器,dir 为小说输出根目录。

func (*Store) AppendVolume added in v0.0.2

func (s *Store) AppendVolume(vol domain.VolumeOutline) error

AppendVolume 追加新卷到分层大纲末尾(Outline + Progress 联动)。

func (*Store) CheckConsistency added in v0.2.0

func (s *Store) CheckConsistency() []string

CheckConsistency 对事实层做一次浅层校验,用于启动/恢复时生成 warning。 纯只读:不修正数据,仅返回可读的问题描述。调用方决定如何展示(log / UI)。 为避免扫全目录带来的 IO 开销,只校验 Progress 的关键点:

  • 最后一个完成章节必须在 chapters/ 下存在终稿
  • Layered 模式下,当前 Volume/Arc 必须能在 layered_outline 中找到

func (*Store) ClearHandledSteer

func (s *Store) ClearHandledSteer() error

ClearHandledSteer 清除 PendingSteer 并重置旧版 FlowSteering 状态。 两个文件无法组成文件系统事务,因此先写可重复的 Progress,最后才删除恢复意图; 任一步失败都至少保留 PendingSteer,下一次 Resume 可以安全重放。

func (*Store) Dir

func (s *Store) Dir() string

Dir 返回输出根目录。

func (*Store) ExpandArc added in v0.0.2

func (s *Store) ExpandArc(volumeIdx, arcIdx int, expansion domain.ArcExpansion) error

ExpandArc 将骨架弧校准并展开为详细章节(Outline + Progress 联动)。

func (*Store) FoundationFingerprint added in v0.7.4

func (s *Store) FoundationFingerprint() (string, error)

FoundationFingerprint 返回当前基础设定工件的内容指纹。Architect 必须把 novel_context 读到的这个值原样交回审查工具,确保结论针对的是实际落盘版本, 而不是会话中尚未保存或已经过期的内容。

func (*Store) FoundationMissing added in v0.1.2

func (s *Store) FoundationMissing() ([]string, error)

FoundationMissing 返回初始规划中尚缺的作品信息与基础设定,顺序稳定。 长篇模式(已有 layered_outline)额外要求 compass。读取失败必须原样返回,不能把 损坏或无权限读取的工件误判成“尚未创建”,否则调用方可能覆盖真实数据。

func (*Store) Init

func (s *Store) Init() error

Init 创建所需的子目录结构。

func (*Store) InvalidateChapterAggregates added in v0.7.6

func (s *Store) InvalidateChapterAggregates(fromChapter int) error

InvalidateChapterAggregates 删除输入范围包含修订章节的模型派生工件。 章节级投影由 revision.Projector 单独重建。

func (*Store) LoadProjectFormatVersion added in v0.7.6

func (s *Store) LoadProjectFormatVersion() (int, error)

LoadProjectFormatVersion 返回作品目录的数据格式版本。旧作品没有版本文件, 视为 v1,由启动迁移统一升级,业务代码无需保留旧格式分支。

func (*Store) ReviseOutline added in v0.7.4

func (s *Store) ReviseOutline(fromChapter int, replacement []domain.OutlineEntry) (int, error)

ReviseOutline 从 fromChapter 起替换尚未发生的计划尾段。 扁平大纲替换全书尾段;分层大纲只替换目标章所在弧的尾段。这个定义让同一载荷 重放仍得到同一结果,同时避免 JSON Patch 和 insert/delete 等操作枚举。

func (*Store) SaveProjectFormatVersion added in v0.7.6

func (s *Store) SaveProjectFormatVersion(version int) error

SaveProjectFormatVersion 在一次迁移全部完成后原子更新项目格式版本。

type SummaryStore added in v0.0.3

type SummaryStore struct {
	// contains filtered or unexported fields
}

SummaryStore 管理章节、弧、卷摘要。

func NewSummaryStore added in v0.0.3

func NewSummaryStore(io *IO, outline *OutlineStore) *SummaryStore

func (*SummaryStore) FindCharacterAppearances added in v0.0.3

func (s *SummaryStore) FindCharacterAppearances(names []string, endChapter, recentWindow int) (map[string]int, error)

FindCharacterAppearances 批量查找多个角色的最后出场章节号。

func (*SummaryStore) HasArcSummary added in v0.2.0

func (s *SummaryStore) HasArcSummary(volume, arc int) (bool, error)

HasArcSummary 检查指定弧是否已保存摘要。

func (*SummaryStore) HasVolumeSummary added in v0.2.0

func (s *SummaryStore) HasVolumeSummary(volume int) (bool, error)

HasVolumeSummary 检查指定卷是否已保存摘要。

func (*SummaryStore) LoadAllVolumeSummaries added in v0.0.3

func (s *SummaryStore) LoadAllVolumeSummaries() ([]domain.VolumeSummary, error)

LoadAllVolumeSummaries 加载所有已有卷摘要。

func (*SummaryStore) LoadArcSummaries added in v0.0.3

func (s *SummaryStore) LoadArcSummaries(volume int) ([]domain.ArcSummary, error)

LoadArcSummaries 加载一卷内所有已有弧摘要。

func (*SummaryStore) LoadArcSummary added in v0.0.3

func (s *SummaryStore) LoadArcSummary(volume, arc int) (*domain.ArcSummary, error)

LoadArcSummary 读取指定弧的摘要。

func (*SummaryStore) LoadRecentSummaries added in v0.0.3

func (s *SummaryStore) LoadRecentSummaries(current, count int) ([]domain.ChapterSummary, error)

LoadRecentSummaries 加载 current 章之前最近 count 章的摘要。

func (*SummaryStore) LoadSummary added in v0.0.3

func (s *SummaryStore) LoadSummary(chapter int) (*domain.ChapterSummary, error)

LoadSummary 读取指定章节的摘要。

func (*SummaryStore) LoadSummaryTitle added in v0.7.6

func (s *SummaryStore) LoadSummaryTitle(chapter int) (string, error)

LoadSummaryTitle 读取章节标题并在进程内缓存。标题仅在 SaveSummary 时变化, 无需重复解码同一份章节摘要。

func (*SummaryStore) LoadVolumeSummary added in v0.0.3

func (s *SummaryStore) LoadVolumeSummary(volume int) (*domain.VolumeSummary, error)

LoadVolumeSummary 读取指定卷的摘要。

func (*SummaryStore) SaveArcSummary added in v0.0.3

func (s *SummaryStore) SaveArcSummary(sum domain.ArcSummary) error

SaveArcSummary 保存弧级摘要。

func (*SummaryStore) SaveSummary added in v0.0.3

func (s *SummaryStore) SaveSummary(sum domain.ChapterSummary) error

SaveSummary 保存章节摘要到 summaries/{ch}.json。

func (*SummaryStore) SaveVolumeSummary added in v0.0.3

func (s *SummaryStore) SaveVolumeSummary(sum domain.VolumeSummary) error

SaveVolumeSummary 保存卷级摘要。

type UsageStore added in v0.4.0

type UsageStore struct {
	// contains filtered or unexported fields
}

UsageStore 持久化 token / cost 累计用量到 meta/usage.json。 写入走 IO 的 atomic write(tmp + rename),Save 路径每次完整覆盖整个 state。

func NewUsageStore added in v0.4.0

func NewUsageStore(io *IO) *UsageStore

func (*UsageStore) Load added in v0.4.0

func (s *UsageStore) Load() (*domain.UsageState, error)

Load 读取 usage.json。文件不存在或 schema 版本不匹配时返回 (nil, nil), 由调用方决定是否走 session replay 一次性回填。

func (*UsageStore) Save added in v0.4.0

func (s *UsageStore) Save(state domain.UsageState) error

Save 把 state 完整覆盖落盘。调用方负责 debounce / 节流。

type UserRulesStore added in v0.6.0

type UserRulesStore struct {
	// contains filtered or unexported fields
}

UserRulesStore 管理本书归一化后的用户规则快照(meta/user_rules.json)。

运行时唯一事实源:novel_context 注入与 commit_chapter 检查都只读这一份, 不再反复读 rules 文件(避免漂移与双读者发散)。快照由开书/导入/刷新时归一化生成。

func NewUserRulesStore added in v0.6.0

func NewUserRulesStore(io *IO) *UserRulesStore

func (*UserRulesStore) Load added in v0.6.0

func (s *UserRulesStore) Load() (*rules.Snapshot, error)

Load 读取 meta/user_rules.json。不存在时返回 nil(调用方据此惰性生成)。

func (*UserRulesStore) Save added in v0.6.0

func (s *UserRulesStore) Save(snap *rules.Snapshot) error

Save 保存快照。

type WorldStore added in v0.0.3

type WorldStore struct {
	// contains filtered or unexported fields
}

WorldStore 管理时间线、伏笔、人物关系、状态变化、世界规则、风格规则、审阅和交接。

func NewWorldStore added in v0.0.3

func NewWorldStore(io *IO) *WorldStore

func (*WorldStore) AppendStateChanges added in v0.0.3

func (s *WorldStore) AppendStateChanges(changes []domain.StateChange) error

AppendStateChanges 追加角色状态变化。同一状态变化重复提交时按稳定 key 去重。

func (*WorldStore) AppendTimelineEvents added in v0.0.3

func (s *WorldStore) AppendTimelineEvents(newEvents []domain.TimelineEvent) error

AppendTimelineEvents 追加时间线事件。同一事件重复提交时按稳定 key 去重,保证 commit_chapter 崩溃后重跑不会污染时间线。

func (*WorldStore) HasArcReview added in v0.2.0

func (s *WorldStore) HasArcReview(chapter int) (bool, error)

HasArcReview 检查指定章节(弧末章)是否已保存 scope=arc 的评审。

func (*WorldStore) HasGlobalReview added in v0.7.0

func (s *WorldStore) HasGlobalReview(chapter int) (bool, error)

HasGlobalReview 检查指定章节是否已保存 scope=global 的全局审阅 (save_review 落盘为 reviews/%02d-global.json;非分层书按 ReviewInterval 触发)。

func (*WorldStore) LoadActiveForeshadow added in v0.0.3

func (s *WorldStore) LoadActiveForeshadow() ([]domain.ForeshadowEntry, error)

LoadActiveForeshadow 返回未回收的伏笔条目。

func (*WorldStore) LoadAuthorRevisionStyle added in v0.7.6

func (s *WorldStore) LoadAuthorRevisionStyle() (*domain.AuthorRevisionStyle, error)

func (*WorldStore) LoadForeshadowLedger added in v0.0.3

func (s *WorldStore) LoadForeshadowLedger() ([]domain.ForeshadowEntry, error)

LoadForeshadowLedger 读取伏笔账本。

func (*WorldStore) LoadLastReview added in v0.0.3

func (s *WorldStore) LoadLastReview(fromChapter int) (*domain.ReviewEntry, error)

LoadLastReview 读取最近一次全局审阅。

func (*WorldStore) LoadRecentTimeline added in v0.0.3

func (s *WorldStore) LoadRecentTimeline(current, window int) ([]domain.TimelineEvent, error)

LoadRecentTimeline 返回最近 window 章内的时间线事件。

func (*WorldStore) LoadRelationships added in v0.0.3

func (s *WorldStore) LoadRelationships() ([]domain.RelationshipEntry, error)

LoadRelationships 读取人物关系状态。

func (*WorldStore) LoadReview added in v0.0.3

func (s *WorldStore) LoadReview(chapter int) (*domain.ReviewEntry, error)

LoadReview 读取章节审阅结果。

func (*WorldStore) LoadReviewsAffectingChapter added in v0.7.4

func (s *WorldStore) LoadReviewsAffectingChapter(chapter int) ([]domain.ReviewEntry, error)

LoadReviewsAffectingChapter 返回所有明确把 chapter 纳入返工队列的评审, 新到旧排列。弧/全局评审存放在评审终点,不能再按目标章节文件名查找。

func (*WorldStore) LoadRuleViolations added in v0.7.0

func (s *WorldStore) LoadRuleViolations(chapter int) []rules.Violation

LoadRuleViolations 读取某章最新一条机械违规记录;无记录返回 nil。

func (*WorldStore) LoadStateChanges added in v0.0.3

func (s *WorldStore) LoadStateChanges() ([]domain.StateChange, error)

LoadStateChanges 读取全部状态变化记录。

func (*WorldStore) LoadStyleRules added in v0.0.3

func (s *WorldStore) LoadStyleRules() (*domain.WritingStyleRules, error)

LoadStyleRules 读取写作风格规则。

func (*WorldStore) LoadTimeline added in v0.0.3

func (s *WorldStore) LoadTimeline() ([]domain.TimelineEvent, error)

LoadTimeline 读取时间线。

func (*WorldStore) LoadWorldRules added in v0.0.3

func (s *WorldStore) LoadWorldRules() ([]domain.WorldRule, error)

LoadWorldRules 读取世界规则。

func (*WorldStore) SaveAuthorRevisionStyle added in v0.7.6

func (s *WorldStore) SaveAuthorRevisionStyle(style domain.AuthorRevisionStyle) error

func (*WorldStore) SaveForeshadowLedger added in v0.0.3

func (s *WorldStore) SaveForeshadowLedger(entries []domain.ForeshadowEntry) error

SaveForeshadowLedger 全量写入 foreshadow_ledger.json + foreshadow_ledger.md(原子写入)。

func (*WorldStore) SaveRelationships added in v0.0.3

func (s *WorldStore) SaveRelationships(entries []domain.RelationshipEntry) error

SaveRelationships 全量写入 relationship_state.json + relationship_state.md(原子写入)。

func (*WorldStore) SaveReview added in v0.0.3

func (s *WorldStore) SaveReview(r domain.ReviewEntry) error

SaveReview 保存审阅结果。

func (*WorldStore) SaveRuleViolations added in v0.7.0

func (s *WorldStore) SaveRuleViolations(chapter int, violations []rules.Violation) error

SaveRuleViolations 追加一章的机械违规(空列表也追加——覆盖旧记录,表示重写后已清)。

func (*WorldStore) SaveStateChanges added in v0.7.6

func (s *WorldStore) SaveStateChanges(changes []domain.StateChange) error

SaveStateChanges 全量替换状态变化事实,供章节修订后重建投影。

func (*WorldStore) SaveStyleRules added in v0.0.3

func (s *WorldStore) SaveStyleRules(rules domain.WritingStyleRules) error

SaveStyleRules 保存写作风格规则。

func (*WorldStore) SaveTimeline added in v0.0.3

func (s *WorldStore) SaveTimeline(events []domain.TimelineEvent) error

SaveTimeline 全量替换时间线事实与人类可读投影。

func (*WorldStore) SaveWorldRules added in v0.0.3

func (s *WorldStore) SaveWorldRules(rules []domain.WorldRule) error

SaveWorldRules 全量写入 world_rules.json + world_rules.md(原子写入)。

func (*WorldStore) UpdateForeshadow added in v0.0.3

func (s *WorldStore) UpdateForeshadow(chapter int, updates []domain.ForeshadowUpdate) error

UpdateForeshadow 批量应用伏笔增量操作。

func (*WorldStore) UpdateRelationships added in v0.0.3

func (s *WorldStore) UpdateRelationships(changes []domain.RelationshipEntry) error

UpdateRelationships 合并关系变化。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL