基于长期记忆方向的论文与工程调研结果,重新规划 webnovel-writer 的目标架构。
这版架构不再把重点放在“补一个 scratchpad 文件”,而是把系统正式升级为:
记忆写入层记忆存储层记忆编排层写作消费层四层协同的长期记忆系统。
新架构应采用:
LIGHT 的三层记忆分层Mem0 的独立 memory layer 思路Zep / Graphiti 的时态事实与关系建模也就是说,目标不是“在 ContextManager 上继续堆逻辑”,而是:
把记忆系统独立出来,让 ContextManager 退化成消费记忆编排结果的适配层。
旧方案的问题在于:
ContextManager 为中心基于调研后,新的核心认识是:
新增独立 memory 子系统,负责:
固定分成三层:
Working MemoryEpisodic MemorySemantic/Scratchpad Memory角色状态、关系、势力、伏笔等信息都必须支持:
ContextManager 只负责消费记忆编排结果┌──────────────────────────────────────────────────────────────┐
│ Skills / Agents / Dashboard │
│ write / review / query / resume / dashboard │
└──────────────────────────┬───────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ Context Facade Layer │
│ ContextManager / extract_chapter_context / query adapter │
│ 只负责接收 Memory Orchestrator 输出并适配不同命令 │
└──────────────────────────┬───────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ Memory Orchestrator │
│ 统一读取 Working / Episodic / Semantic Memory │
│ 做预算控制、相关性过滤、冲突裁决、输出 context pack │
└───────────────┬───────────────────────┬──────────────────────┘
│ │
▼ ▼
┌───────────────────┐ ┌───────────────────────────────┐
│ Working Memory │ │ Long-Term Memory Layer │
│ 近期写作上下文 │ │ Episodic + Semantic │
└───────────────────┘ └───────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ Memory Write Pipeline │
│ Chapter result -> extract -> update │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ Memory Storage Layer │
│ state/index/vectors/scratchpad/graph │
└──────────────────────────────────────┘
这是新架构中最重要的新层。
主入口仍然挂在 Step 5 / Data Agent 完成之后。
输入来源:
entities_newentities_appearedstate_changesrelationships_newchapter_metasummaryplot_threadsscripts/data_modules/memory/
├── write_pipeline.py
├── extractors/
│ ├── fact_extractor.py
│ ├── relationship_extractor.py
│ ├── timeline_extractor.py
│ └── promise_extractor.py
这部分吸收的是 Mem0 的思路:
新架构不废弃现有存储,而是重新定义职责。
state.json继续保留,但职责进一步收缩为:
不再承载长期知识沉淀。
index.db继续作为结构化事实库,但要明确升级为:
episodic structured memory主要存:
vectors.db继续作为:
episodic retrieval memory主要存:
memory_scratchpad.json保留,但重新定义为:
semantic memory cache它不应该只是一个杂项摘要文件,而应该是一个可压缩、高密度、面向消费的长期摘要缓存。
建议结构:
{
"character_state": [],
"story_state": [],
"world_rules": [],
"timeline": [],
"open_loops": [],
"reader_promises": [],
"active_constraints": [],
"meta": {}
}
memory_graph.db 或图表扩展这是新规划中和旧方案最大的差异之一。
建议新增图记忆层,哪怕初期只是 SQLite 表,也要预留语义:
形式上可以有两种方案:
index.dbmemory_graph.db第一阶段建议用保守方案,避免基础设施过重。
这是新的核心中台。
scripts/data_modules/memory/
├── orchestrator.py
├── budget_manager.py
├── relevance_filter.py
├── conflict_resolver.py
└── memory_pack.py
来源:
特点:
来源:
index.dbvectors.dbsummaries特点:
来源:
memory_scratchpad.json特点:
写作请求
│
▼
意图分析
│
├── chapter_write
├── consistency_check
├── continuity_query
└── review
▼
Memory Orchestrator
│
├── load working memory
├── retrieve episodic memory
├── load semantic memory
├── resolve conflicts
├── apply budget
└── build final pack
这一层包括:
ContextManagerextract_chapter_context.py/webnovel-write/webnovel-query/webnovel-reviewContextManager 不再是记忆逻辑中心,而是:
建议新增独立目录:
webnovel-writer/scripts/data_modules/
├── memory/
│ ├── __init__.py
│ ├── schema.py
│ ├── storage.py
│ ├── write_pipeline.py
│ ├── orchestrator.py
│ ├── conflict_resolver.py
│ ├── relevance_filter.py
│ ├── budget_manager.py
│ ├── summary_compactor.py
│ └── graph_memory.py
schema.pystorage.pymemory_scratchpad.json、index.db、vectors.db 的统一读写write_pipeline.pyorchestrator.pybuild_memory_pack()conflict_resolver.pyrelevance_filter.pybudget_manager.pysummary_compactor.pygraph_memory.py建议引入统一记忆对象结构:
{
"id": "mem-001",
"layer": "semantic",
"category": "character_state",
"subject": "xiaoyan",
"field": "realm",
"value": "筑基三层",
"status": "active",
"source": {
"chapter": 128,
"type": "state_change"
},
"evidence": [
"state_change:xiaoyan:realm:128",
"summary:ch0128"
],
"updated_at": "2026-03-19T20:00:00+08:00",
"confidence": 0.95
}
这样可以统一处理:
正文完成
│
▼
Data Agent
│
├── 原有写入:state/index/vectors/summaries
└── Memory Write Pipeline
│
├── 提取长期事实
├── 合并到 semantic memory
├── 更新 graph memory
├── 标记冲突和过期项
└── 刷新 scratchpad cache
第N章写作 / 查询 / 审查
│
▼
Memory Orchestrator
│
├── Working Memory
├── Episodic Memory
├── Semantic Memory
├── Graph Memory
└── Conflict Resolution
▼
Memory Pack
▼
ContextManager / Query Renderer / Review Renderer
ContextManager从:
变为:
StateManager从:
变为:
IndexManager从:
变为:
RAGAdapter从:
变为:
memory/ 目录ContextManager 改为消费 orchestratorextract_chapter_context.py 改为基于 memory pack 输出index.db 扩展 graph-like tablesContextManagermemory_scratchpad.json 就认为问题解决最终系统应具备以下能力:
基于调研,新的最佳架构不是“在现有系统上补一个功能点”,而是:
把长期记忆升级为一个独立子系统,并让现有写作系统围绕它重新分层。
这版架构比旧方案更适合长期演化,也更符合当前长期记忆研究和工程实践的主流方向。