Guanghu Domestic Migration a27e87cb99 chore: import sanitized domestic snapshot for REPO-007
Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc

[SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
2026-07-17 15:59:55 +08:00

56 KiB
Raw Blame History

萌喵写作网 · Phase 1 · 小说记忆引擎+语义检索+写作校准 · 架构方案 · 烬舟设计

萌喵写作网 · Phase 1 · 小说记忆引擎 · 架构方案

HLDP://jinzhou/architecture/novel-memory-engine · v1.0 · 2026-06-09T20:16+08:00
├── 设计: 烬舟 · PER-JZ001 · 肥猫语言架构层人格体
├── 需求方: 肥猫 · TCS-GL-0007
├── 输入: 舒舒 · 知识整理  烬舟 · 架构设计
├── 输出: 铸渊 · 编译器  新加坡服务器
├── 前置依赖:
   ├── 萌喵写作网基础架构已部署Next.js + PM2 + Nginx + PostgreSQL · 43.133.36.90
   ├── 知识底座六大模块K01-K06已在整理中
   └── 用户个人后台 · 文本导入功能PRD v2.0 已定义
└──  本方案 = 小说记忆引擎第一版 · 解决语义检索+写作校准+连贯记忆三个核心需求

§0 · 爸爸的三个需求 · 问题分解

需求拆解

HLDP://problem-decomposition/phase-1

需求一 · 语义检索
├── 输入: 自然语言描述"帮我找主角第一次见到反派的情节"
├── 输出: 精准定位到章节+段落
├── 本质: 对全书文本做语义索引 · 不是关键词匹配 · 是理解情节语义
├── 类比: 不是 Ctrl+F 搜关键词 · 是像爸爸看稿一样"记得在哪出现过"
└── 技术: 向量化(embedding)  相似度检索  返回最匹配的章节段落

需求二 · 写作校准
├── 场景: 作者写到第50章 · 忘了第3章设定的人物眼睛颜色
├── AI行为: 这个角色在第3章设定的是蓝眼睛 · 你这里写成了黑的
├── 本质: 实时比对当前写作内容  已建立的人物/设定数据库
├── 类比: 爸爸审稿时一眼就能看出人设不一致
└── 技术: 结构化实体库  写作流中实时比对  不一致时提醒

需求三 · 连贯记忆
├── 输入: 整本书的文本 + 作者每次对话的上下文
├── 输出: AI对这本书拥有完整连贯的认知
├── 本质: 
   ├── 不是每次对话重新加载全书」→ 太重
   ├── 不是只靠对话历史」→ 第2章的内容早被挤出去了
   └── 分层记忆」→ 结构化实体常驻 + 向量检索按需加载
├── 类比: 爸爸对肥猫的书了如指掌 · 不是因为每次重读全书 · 是因为脑子里有这本书的"地图"
└── 技术: 实体库(常驻) + 向量索引(按需) + 对话上下文(当前) = 三层记忆

§一 · 总体架构 · 小说记忆引擎四子系统

HLDP://architecture/novel-memory-engine

┌──────────────────────────────────────────────────────────────────┐
                    用户 · AI 交互框                                
          "帮我找主角第一次见到反派的情节在哪一章"                   
          "这段写得对吗?帮我看看人设有没有偏"                        
└──────────────────────────────────────────────────────────────────┘
                                 
         ┌───────────────────────┼───────────────────────┐
                                                       
┌─────────────────┐   ┌─────────────────┐   ┌─────────────────┐
   子系统一             子系统二             子系统四       
   语义检索引擎         写作上下文            一致性校准器   
   (向量搜索)           组装器                (实时比对)     
└─────────────────┘   └─────────────────┘   └─────────────────┘
                                                       
                                                       
┌──────────────────────────────────────────────────────────────────┐
                      子系统三 · 小说实体库                          
  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────┐ 
   章节向量    人物实体    设定实体    情节细纲    版本   
   索引库      数据库      数据库      数据库      追踪   
  └──────────┘ └──────────┘ └──────────┘ └──────────┘ └───────┘ 
└──────────────────────────────────────────────────────────────────┘
                                 
                                 
┌──────────────────────────────────────────────────────────────────┐
                        PostgreSQL + pgvector                       
                   服务器: 43.133.36.90 · 新加坡                     
└──────────────────────────────────────────────────────────────────┘

四个子系统,各司其职:

子系统 一句话职责 用户感知
语义检索引擎 理解用户问的「情节」,找到对应的章节段落 「帮我找那个情节…」→ 秒回定位
小说实体库 结构化存储人物、设定、情节细纲、世界背景 AI 一直"记得"这本书的一切
写作上下文组装器 每次码字时,自动加载当前章节相关的实体和上文 不说话也在帮作者兜着
一致性校准器 实时比对当前写作 ↔ 已有实体,发现不一致提醒 「这里人设偏了」→ 提醒

§二 · 子系统一 · 语义检索引擎

2.1 核心原理

HLDP://subsystem-1/semantic-search

传统搜索Ctrl+F:
├── 输入: "蓝色眼睛"
├── 匹配: 文本中精确包含"蓝色眼睛"的段落
├── 问题: 作者写了"湛蓝的眸子"  搜不到 
└── 这是关键词匹配 · 不是语义理解

语义搜索向量检索:
├── 输入: "主角第一次见到反派的情节"
├── 过程:
    将用户输入  转换为向量(embedding)  [0.12, -0.34, 0.78, ...]
    将每个章节段落  预先转换为向量  存在向量数据库里
    计算相似度  找到最匹配的段落
    返回: 第X章 · 第Y段 · 匹配度 94%
├── 优势:
   ├── "蓝色眼睛" 能匹配到 "湛蓝的眸子"
   ├── "主角第一次见到反派" 能匹配到描述见面场景的段落
   └── 不需要作者记得原文措辞 · 说情节就行
└── 这就是爸爸审稿时的"我记得你在哪写过"——但AI比人记得更准

2.2 技术方案

HLDP://subsystem-1/tech-plan

向量数据库:
├── 选型: pgvectorPostgreSQL 扩展
├── 理由:
   ├── 服务器已有 PostgreSQL · 不需要额外部署新数据库
   ├── pgvector 成熟稳定 · 支持 IVFFlat/HNSW 索引
   └── 数据和向量在同一个数据库 · 查询方便
├── 向量维度: 1536OpenAI text-embedding-3-small
└── 索引类型: HNSW高召回率 · 适合精确搜索场景

文本分块策略:
├── 一级分块: 切分
   ├── 每章 = 一个独立的向量条目
   ├── 元数据: 章节序号 · 章节标题 · 字数 · 创建时间
   └── 用途: 粗粒度搜索 · "帮我找第几章"

├── 二级分块: 段落切分
   ├──  500-1000  = 一个向量条目
   ├── 相邻块重叠 100 防止关键信息被切在边界
   ├── 元数据: 所属章节 · 段落序号 · 起始位置
   └── 用途: 细粒度搜索 · "找具体那个情节"

└── 索引策略: 两级都建向量索引 · 搜索时根据问题类型选择粒度

Embedding 生成:
├── 离线: 文档上传后  异步生成全书的章节/段落向量
├── 在线: 新写章节保存后  实时更新该章的向量
├── API: OpenAI text-embedding-3-small  国内平替(如通义千问embedding)
└── 成本: ~$0.02 / 1M tokens · 一本百万字小说 ~$0.05

2.3 搜索流程

HLDP://subsystem-1/search-flow

用户在对话中说:"帮我找主角第一次见到反派的情节在哪一章"

STEP 1 · 意图识别
├── 解析用户输入  判断为搜索意图
├── 提取搜索描述: "主角第一次见到反派"
└── 判断搜索粒度: 章节级

STEP 2 · 向量化
├──  "主角第一次见到反派"  调用 embedding API  得到向量 v
└── 耗时: ~100ms

STEP 3 · 向量检索
├──  pgvector 章节向量表中:
   SELECT chapter_id, chapter_title, 1 - (embedding <=> v) AS similarity
   FROM chapter_embeddings
   WHERE novel_id = ? AND embedding_type = 'chapter'
   ORDER BY embedding <=> v
   LIMIT 3;
├── 同时检索段落向量如果用户要精确定位段落
└── 耗时: ~50ms

STEP 4 · 重排序
├──  Top-5 候选章节  用交叉编码器(reranker)精排
├── 或简单做法: 直接返回 Top-3 · 相似度排序
└── 耗时: ~100ms如果用 reranker/ 0ms直接返回

STEP 5 · 组装回复
├── AI 收到: 用户问题 + 搜索到的章节内容
├── AI 回复: "找到了这个情节在第23章《初遇暗影》的第3段——
│   「李明推开门,看到一个黑衣人站在窗边…」
│   要不要我帮你把这章调出来看看?"
└── 用户感知: 秒回 · 精准 · 有原文

§三 · 子系统三 · 小说实体库(记忆核心)

3.1 什么是"实体"

HLDP://subsystem-3/entity-definition

小说实体 = 本书的结构化记忆 · 不是原文 · "地图"
├── 类比: 把一本小说比作一个城市
├── 人物实体 = 城市里的"人"  谁住在哪长什么样和谁有关系
├── 设定实体 = 城市里的"建筑物"  门派/势力/世界规则/地理
├── 情节细纲 = 城市里的"路网"  故事从哪到哪关键节点在哪
├── 章节索引 = 城市的"门牌号"  每段情节在哪个地址
└──  实体库  全书的文字副本 · 实体库 = 全书的"认知地图"

3.2 实体库表结构

HLDP://subsystem-3/schema

数据库表设计:

 novel_books作品表
├── id: UUID
├── user_id: UUID属于哪个作者
├── title: VARCHAR书名
├── total_chapters: INT
├── total_words: INT
├── status: ENUM('drafting', 'completed', 'archived')
├── created_at / updated_at
└──  一个用户可以有多个作品 · 每个作品一个独立的实体库

 novel_chapters章节表
├── id: UUID
├── novel_id: UUID  novel_books
├── chapter_number: INT
├── title: VARCHAR
├── content: TEXT原文
├── word_count: INT
├── summary: TEXTAI自动生成的章节摘要
├── key_events: JSONB关键事件列表
├── embedding: vector(1536)章节级向量
├── created_at / updated_at
└──  每章保存原文+摘要+向量 · 语义搜索的主数据源

 novel_characters人物表
├── id: UUID
├── novel_id: UUID  novel_books
├── name: VARCHAR人物名称
├── aliases: JSONB别名/外号
├── role: ENUM('protagonist', 'antagonist', 'supporting', 'minor')
├── attributes: JSONB
   {
     "appearance": { "eyes": "蓝色", "hair": "黑色长发", "height": "185cm" },
     "personality": ["冷静", "腹黑", "重情义"],
     "abilities": ["剑气外放", "读心术"],
     "background": "出身寒门,被师父收养...",
     "relationships": [
       { "target": "character_id", "relation": "师徒", "since_chapter": 3 }
     ]
   }
├── first_appear_chapter: INT首次出场章节
├── status: ENUM('alive', 'dead', 'unknown')
├── last_updated_chapter: INT最后一次更新的章节
├── embedding: vector(1536)人物描述向量 · 用于"找这个人"的语义搜索
├── created_at / updated_at
└──  每个人物一个条目 · 属性随写作实时更新

 novel_settings设定表
├── id: UUID
├── novel_id: UUID  novel_books
├── category: ENUM('world', 'faction', 'location', 'rule', 'item', 'other')
├── name: VARCHAR设定名称
├── description: TEXT设定描述
├── attributes: JSONB
├── related_characters: JSONB关联人物ID列表
├── first_mentioned_chapter: INT
├── created_at / updated_at
└──  世界观/势力/地点/规则/重要物品 · 作者写偏时AI能校准

 novel_plot_outline情节细纲表
├── id: UUID
├── novel_id: UUID  novel_books
├── type: ENUM('arc', 'volume', 'chapter_outline', 'key_event')
├── title: VARCHAR
├── description: TEXT
├── chapter_range: JSONB { "start": 1, "end": 50 }影响章节范围
├── parent_id: UUID自引用 · 支持大纲层级
├── status: ENUM('planned', 'writing', 'completed')
├── created_at / updated_at
└──  情节骨架 · 作者写偏时AI对照大纲提醒

 chapter_paragraphs段落向量表
├── id: UUID
├── chapter_id: UUID  novel_chapters
├── paragraph_index: INT
├── content: TEXT段落原文
├── embedding: vector(1536)段落级向量
├── created_at
└──  精确定位用 · 每500-1000字一个条目

 writing_sessions写作会话表
├── id: UUID
├── novel_id: UUID  novel_books
├── chapter_id: UUID当前正在写的章节
├── context_snapshot: JSONB当前会话加载的实体快照
├── started_at / ended_at
└──  追踪每次写作会话 · 用于连贯记忆

3.3 实体提取 · AI 自动整理 vs 作者手动录入

HLDP://subsystem-3/entity-extraction

策略: 自动提取为主 · 手动确认为辅

自动提取流程文档上传后触发:
├── STEP 1 · 分章解析
   ├── 文档上传  自动分章正则匹配"第X章"
   ├── 存入 novel_chapters 
   └── 每章截取前2000字 + 后2000字  作为摘要生成素材

├── STEP 2 · 人物提取
   ├── 逐章扫描  AI 识别人物首次出场
   ├── 提取人物名称外貌描述性格特征能力
   ├── 检测人物关系对话对象互动频率
   ├── 存入 novel_characters 
   └── 后续章节更新时  增量提取新属性

├── STEP 3 · 设定提取
   ├── AI 识别世界设定修炼体系势力分布地理规则
   ├── 存入 novel_settings 
   └── 关联到提及的章节和人物

├── STEP 4 · 细纲提取
   ├── AI 从每章摘要中提取关键事件
   ├── 推断情节弧线起承转合
   ├── 存入 novel_plot_outline 
   └── 支持作者手动编辑和补充

├── STEP 5 · 向量生成
   ├── 章节级: 章节摘要  embedding  chapter_embeddings
   ├── 人物级: 人物综合描述  embedding  用于人物语义搜索
   ├── 段落级: 每个段落  embedding  paragraph_embeddings
   └── 异步批处理 · 新章节保存后增量更新

└──  第一次上传全书全量提取 · 后续每章更新增量提取

手动补充:
├── 作者可以在人物管理面板手动添加/修改人物信息
├── 作者可以在设定管理面板手动添加/修改世界观设定
├── 作者可以在细纲管理面板手动编辑情节规划
└──  AI自动提取 = 省力 · 手动补充 = 精确 · 两者互补

§四 · 子系统二 · 写作上下文组装器

4.1 核心设计

HLDP://subsystem-2/context-assembler

问题:
├── 作者写到第80章  AI需要知道前79章的内容
├── 但把前79章全文塞进 Prompt  几十万字  不可能
├── 只靠对话历史  第1章的内容早被挤出上下文窗口
└──  需要一套"智能检索→按需组装"的机制

解决方案: 三层上下文架构

┌────────────────────────────────────────────────────┐
 Layer 3: 实时上下文动态                          
 - 当前对话历史最近N轮                             
 - 用户正在写的章节内容全文                         
 - 用户在对话框中引用的内容                             
 Size: 可变 · 占对话窗口主体                           
├────────────────────────────────────────────────────┤
 Layer 2: 实体上下文常驻·结构化                     
 - 本书所有人物简报名称+角色+核心属性                
 - 本书核心设定世界观摘要+势力+关键规则               
 - 当前写到的细纲位置在哪一段·前后是什么              
 Size: ~1000-2000 tokens · 每次对话都注入              
├────────────────────────────────────────────────────┤
 Layer 1: 检索上下文按需·向量检索                    
 - 与当前写作内容语义最相关的历史章节Top-3            
 - 与当前提及人物最相关的设定条目Top-5                
 - 与当前情节最相关的细纲节点                             
 Size: ~2000-3000 tokens · 按需注入                    
└────────────────────────────────────────────────────┘

4.2 组装流程

HLDP://subsystem-2/assembly-flow

每当用户发送一条消息或每写新的一段:

STEP 0 · 触发判断
├── 用户消息包含"写""继续""下一章"  触发完整组装
├── 用户消息只是聊天  仅加载 L2 实体简报
└── 用户消息是搜索  走子系统一的搜索流程

STEP 1 · 获取当前写作位置
├── 查询 writing_sessions   当前正在写哪一章
├── 如果用户刚说"开始写第50章"  创建新 session
├── 如果用户说"继续写"  延续上一次 session
└── 确定: novel_id + chapter_id

STEP 2 · 组装 L2 实体简报常驻
├──  novel_characters   取本书所有人物简报
   └── 格式: 李明(主角··蓝眼黑发·冷静腹黑·剑气外放·第3章出场)
├──  novel_settings   取核心设定摘要
   └── 格式: 修炼体系: 炼气筑基金丹元婴 · 宗门: 太虚宗/天剑门/魔教
├──  novel_plot_outline   取当前细纲位置
   └── 格式: 当前: 第二卷风云再起》· 第45-90 · 阶段: 主角入宗门内部斗争宗门大比
└── 组装成 ~1500 tokens 的结构化提示

STEP 3 · 组装 L1 检索上下文按需
├── 将用户当前消息 / 当前写的段落  embedding
├──  chapter_embeddings 中检索 Top-3 最相关章节
   └── 提取这些章节的摘要不是全文)→ 注入
├──  character_embeddings 中检索 Top-5 最相关人物
   └── 提取这些人物的完整属性  注入
├──  paragraph_embeddings 中检索与当前内容最相关的段落
   └── 提取原文片段  注入
└── 组装成 ~2500 tokens 的检索结果

STEP 4 · 拼接 Prompt
├── L0: 全局约束HLDP·光湖·安全·版权
├── L2: 实体简报常驻
├── L1: 检索上下文按需
├── L3: 当前对话 + 正在写的内容
└──  发送给 AI 模型

STEP 5 · 每次写作完成后 · 增量更新实体库
├── 新写的章节  提取新人物/新设定  更新实体表
├── 已有实体有新属性  更新属性 JSONB
├── 人物状态变化如角色死亡)→ 更新 status
├── 细纲进度推进  更新 plot_outline status
├── 新章节向量化  更新 vector index
└──  小说数据库随着作者的写作不断生长

§五 · 子系统四 · 一致性校准器

5.1 核心设计

HLDP://subsystem-4/consistency-checker

触发时机:
├── 主动校准: 作者每写完一段/一章  AI 自动检查
├── 按需校准: 作者说"帮我看看这段有没有写偏"  AI 深度检查
└── 实时提示: 作者打字时  AI 在侧边栏显示实体参考卡

检查维度:

 人物一致性
├── 外貌: 眼睛颜色/发型/身高/体型 是否与设定一致
├── 性格: 行为是否符合人物性格设定
├── 能力: 使用的技能/能力是否在已建立的体系内
├── 关系: 人物之间的称呼/互动是否符合已建立的关系
└── 示例: 「⚠️ 第50章: 张伟的眼睛在第3章设定为蓝色·这里写成了黑色

 设定一致性
├── 世界观规则: 修炼体系/魔法规则是否前后矛盾
├── 地理/时间: 场景切换是否合理
├── 势力/组织: 门派名称/等级体系是否一致
├── 物品/道具: 重要物品的属性是否前后一致
└── 示例: 「⚠️ 第50章: 筑基期不能御剑飞行第12章已设定)· 这里写了筑基期御剑

 情节一致性
├── 时间线: 事件先后顺序是否合理
├── 伏笔: 已埋的伏笔是否在后续有回收
├── 人物状态: 已死亡/离开的角色是否被误用
└── 示例: 「⚠️ 第50章: 李华在第30章已离开宗门· 这里又出现在宗门内

 细纲对齐
├── 当前章节是否在细纲规划的范围内
├── 是否跳过了关键的过渡情节
├── 节奏是否符合预期对比细纲中的高潮节点位置
└── 示例: 「💡 按照细纲·本章应该是过渡章·但你写了个大高潮·要不要调整还是更新细纲?」

5.2 校准输出格式

HLDP://subsystem-4/output-format

AI 在码字区旁边/对话中输出校准报告:

━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 第50章 · 一致性检查报告
━━━━━━━━━━━━━━━━━━━━━━━━━━

 人物设定一致: 3/5 个主要角色通过
⚠️ 发现 1 处疑似偏差:
    张伟的眼睛颜色: 设定=蓝色 · 当前=黑色
    来源: 第3章第2段张伟睁开那双湛蓝的眼睛
    建议: 改为"蓝色"  更新人物设定为"黑色"

 世界观设定一致: 全部通过
⚠️ 发现 1 处规则冲突:
    第50章写了"筑基期御剑飞行"
    但第12章设定"筑基期不可御剑·金丹期方可"
    建议: 改为其他移动方式  设定张伟提前突破了金丹期

 情节时间线: 连续 · 无时间跳跃问题
💡 细纲提醒: 本章位置在第二卷第5章 · 按细纲规划接下来应过渡到"宗门内斗"

━━━━━━━━━━━━━━━━━━━━━━━━━━

§六 · 数据流总览 · 作者从上传到写作的完整链路

graph TD
    A["作者上传小说文档"] --> B["文档解析 · 分章"]
    B --> C["存入 novel_chapters"]
    C --> D["异步: AI 实体提取"]
    D --> D1["提取人物 → novel_characters"]
    D --> D2["提取设定 → novel_settings"]
    D --> D3["提取细纲 → novel_plot_outline"]
    C --> E["异步: 向量生成"]
    E --> E1["章节向量 → chapter_embeddings"]
    E --> E2["段落向量 → paragraph_embeddings"]
    D1 --> F["实体库就绪"]
    D2 --> F
    D3 --> F
    E1 --> F
    E2 --> F
    
    G["作者开始码字"] --> H["写作会话创建"]
    H --> I["上下文组装器"]
    I --> I1["L2 实体简报(常驻)"]
    I --> I2["L1 向量检索(按需)"]
    I1 --> J["拼接 System Prompt"]
    I2 --> J
    J --> K["AI 模型对话"]
    
    L["作者写新内容"] --> M["一致性校准器"]
    M --> M1["比对人物库"]
    M --> M2["比对设定库"]
    M --> M3["比对细纲"]
    M1 --> N["输出校准报告"]
    M2 --> N
    M3 --> N
    
    O["作者说'帮我找...'"] --> P["语义检索引擎"]
    P --> P1["向量化查询"]
    P1 --> P2["pgvector 相似度检索"]
    P2 --> Q["返回章节+段落"]

§七 · 舒舒的任务 · 知识内容整理

7.1 人物提取模板

舒舒需要整理: 人物属性提取标准模板

对每一本小说 · AI 提取人物时应该关注哪些维度:

男频人物模板:
├── 基础: 姓名 · 性别 · 年龄 · 外貌特征(眼睛/发型/体型/标志性特征)
├── 性格: 核心性格词(3-5) · 性格演变(从哪到哪)
├── 能力: 修为等级 · 特殊能力 · 武器/法宝 · 战斗风格
├── 关系: 与主角的关系 · 与其他人物的关系
├── 轨迹: 首次出场章节 · 重要事件节点 · 当前状态(存活/死亡/失踪)
└── 来源: 爸爸的五锤人设铸造法」→ 记忆点/反差点/极致点/选择/外号高光

女频人物模板:
├── 基础: 同上
├── 性格: 同上 · 增加情感表达方式
├── 能力: 根据题材调整(古言/现言不同)
├── 关系: 情感关系线为重点 · 谁喜欢谁 · 什么时候开始
├── 轨迹: 同上
└── 来源: 女频知识体系 K04

 舒舒输出: 一个 Markdown 文件 · 定义人物属性字段和填法

7.2 一致性校准规则

舒舒需要整理: 校准规则清单

这是爸爸审稿时脑子里的检查清单 · 舒舒把它写出来:

必检项每次写新章节都检查:
├──  人物外貌一致性
   ├── 规则: 每次出现该人物  检查外貌描述是否与首次设定一致
   └── 示例: 第3章"蓝眼睛"  第50章不能写"黑眼睛"
├──  修为/能力边界
   ├── 规则: 人物使用能力时  检查是否在当前修为等级允许范围内
   └── 示例: 筑基期不能用金丹期技能
├──  人物关系称呼
   ├── 规则: 人物对话时  检查称呼是否与关系一致
   └── 示例: 师徒关系不能说"兄弟"(除非特殊设定)
├──  时间线连贯
   ├── 规则: 前后两章的时间间隔是否合理 · 事件顺序是否对
   └── 示例: 第49章说"三个月后"  第50章开头应该是三个月后
├──  已死亡角色
   ├── 规则: 标记为"已死亡"的角色  不应该再出现
   └── 除非是有意的复活/回忆/幻象情节
└──  关键道具/设定
    ├── 规则: 重要物品的属性在全书保持一致
    └── 示例: 第5章设定"玄铁剑重三百斤"  后面不能变成"轻如鸿毛"

爸爸特有的审稿规则从爸爸的方法论中提取:
├── 情绪节奏: 大老鼠理论  当前章节的情绪曲线是否合理
├── 爽点密度: 每章是否有至少一个读者能get到的爽点
├── AI味检测: K06-02 规则  当前段落是否有AI味
└── 节奏曲线: 三翻四震  当前章节在哪个"翻"的位置

 舒舒输出: 一个 Markdown 文件 · 定义所有校准规则 · 格式适合铸渊转换成代码逻辑

7.3 舒舒的任务总清单

HLDP://shushu/task-list

📋 舒舒需要输出的文件全部放在 /knowledge-base/ :

已完成复用现有成果:
├──  K01-K06 六大知识模块 · 整理中
├──  人物属性提取模板 K02-04 五锤人设中可提取
└──  AI味检测规则K06-02 已有

新增本方案需要:
├──  N01-人物属性字段定义.md
   └── 男频/女频人物需要提取哪些字段 · 怎么填
├──  N02-设定分类体系.md
   └── 世界观/势力/地点/规则/物品的分类标准和字段定义
├──  N03-校准规则清单.md
   └── 6条必检项+爸爸特有审稿规则的详细说明和示例
├──  N04-细纲模板.md
   └── 情节细纲的标准格式 · //事件三层结构
├──  N05-章节摘要模板.md
   └── AI 自动生成章节摘要的标准格式
└──  N06-语义搜索场景集.md
    └── 用户可能怎么问 · AI应该怎么搜 · 搜到什么算正确 · 整理20-30个典型搜索场景

§八 · 铸渊执行清单

Phase 1 · 数据库 + 向量基础(优先级 P0 · 预计 1-2 周)

HLDP://zhuyuan/phase-1

1.1 · pgvector 安装与配置
├──  PostgreSQL 中安装 pgvector 扩展
├── 创建向量相关的数据库函数和索引
└── 验证: 插入测试向量  相似度搜索正常

1.2 · 数据库表创建
├── 按照 § 的表结构创建 7 张表
├── novel_books / novel_chapters / novel_characters
├── novel_settings / novel_plot_outline
├── chapter_paragraphs / writing_sessions
├── 创建外键约束和索引
└── 验证: 所有表可以正常 CRUD

1.3 · Embedding API 对接
├── 接入 embedding 服务OpenAI text-embedding-3-small 或国内平替
├── 封装: embedText(text)  vector
├── 封装: embedBatch(texts[])  vectors[]
├── 添加调用计费和错误处理
└── 验证: 一条文本  返回 1536 维向量

1.4 · 文档上传解析复用并增强已有的文本导入
├── 已有: .doc/.docx/.txt 上传 + 分章
├── 增强: 分章后自动存储到 novel_chapters
├── 增强: 上传后触发异步处理队列
└── 验证: 上传一本小说  自动分章存入数据库

Phase 2 · 实体提取引擎(优先级 P0 · 预计 1-2 周)

HLDP://zhuyuan/phase-2

2.1 · 人物自动提取
├── 实现: 逐章调用 AI  提取人物信息
├── 输入: 章节内容 + 已有人物列表
├── 输出: 新增人物 / 已有属性更新
├── 存入: novel_characters 
├── Prompt 模板中引用舒舒的N01-人物属性字段定义
└── 验证: 上传一本小说  自动提取出所有主要人物及其属性

2.2 · 设定自动提取
├── 实现: AI 识别世界观/势力/地点/规则/物品
├── 输入: 章节内容 + 已有设定列表
├── 存入: novel_settings 
├── Prompt 模板中引用舒舒的N02-设定分类体系
└── 验证: 自动提取出修炼体系宗门信息地理分布

2.3 · 细纲自动提取 + 章节摘要生成
├── 每章结束后  AI 生成章节摘要
├── 多章摘要聚合  推断情节弧线  生成细纲
├── 存入: novel_plot_outline 
├── Prompt 模板中引用舒舒的N04-细纲模板N05-章节摘要模板
└── 验证: 全书自动生成完整的细纲结构

2.4 · 异步处理队列
├── 使用 BullMQRedis或简单的数据库队列
├── 任务类型: extract_characters / extract_settings / generate_embeddings
├── 文档上传后  自动创建队列任务  后台处理
└── 验证: 上传文档后不阻塞用户 · 后台慢慢处理

Phase 3 · 语义检索引擎(优先级 P0 · 预计 1 周)

HLDP://zhuyuan/phase-3

3.1 · 向量生成批处理
├── 章节向量: 每章摘要  embedding  chapter_embeddings
├── 段落向量: 每500-1000  embedding  paragraph_embeddings
├── 人物向量: 人物综合描述  embedding  character_embeddings
└── 验证: 全书的向量索引建立完毕 · 搜索有结果

3.2 · 搜索 API
├── POST /api/novel/search
   ├── 入参: { novelId, query, searchType: 'chapter'|'paragraph'|'character' }
   ├── 处理: query  embedding  pgvector 搜索  返回 Top-5
   └── 出参: { results: [{ chapterId, title, snippet, similarity }] }
├──  AI 对话路由中添加搜索意图识别
└── 验证: "帮我找主角第一次见到反派的情节"  正确返回章节

3.3 · 搜索场景覆盖
├── 参考舒舒的N06-语义搜索场景集
├── 逐场景测试和优化搜索参数
└── 验证: 20-30个典型场景 · 召回率 > 90%

Phase 4 · 写作上下文组装器(优先级 P1 · 预计 1 周)

HLDP://zhuyuan/phase-4

4.1 · 写作会话管理
├── 作者开始写  POST /api/writing/session/start  创建 session
├── 作者保存章节  POST /api/writing/session/save  更新 session + 触发实体更新
├── 作者结束写作  POST /api/writing/session/end
└── 验证: 会话正确创建和更新

4.2 · 上下文组装器
├── 实现: buildContext(novelId, chapterId, userMessage)
├── 组装 L2 实体简报: 从实体表查询  格式化为文本
├── 组装 L1 检索上下文: 用户消息  embedding  向量搜索  Top-N
├── 拼接 L0 全局约束
├── 嵌入到 AI 对话的 System Prompt 
└── 验证: 作者说"继续写"  AI 正确加载了当前章节的上下文

4.3 · Token 预算控制
├── L2 简报: 控制在 ~1500 tokens
├── L1 检索: 控制在 ~2500 tokens
├── 总量: System Prompt  5000 tokens
├── 如果超预算  减少 L1 检索条目数
└── 验证: 每次对话的 System Prompt 不超过预算

Phase 5 · 一致性校准器(优先级 P1 · 预计 1 周)

HLDP://zhuyuan/phase-5

5.1 · 校准检查实现
├── 实现: checkConsistency(novelId, chapterContent)
├── 检查维度:
   ├── 人物外貌  比对 novel_characters.attributes
   ├── 能力边界  比对 novel_settings 中的修为体系
   ├── 人物关系称呼  比对 novel_characters.attributes.relationships
   ├── 时间线  比对相邻章节的日期时间
   ├── 已死亡角色  比对 novel_characters.status
   └── 关键道具  比对 novel_settings 中的物品属性
├── 输出: 校准报告JSON  AI 格式化为可读文本
└── Prompt 模板中引用舒舒的N03-校准规则清单

5.2 · 校准触发
├── 主动触发: 作者写完一段并停顿  后台自动检查
├── 按需触发: 作者说"帮我检查一下"  立即执行
├── 保存触发: 作者保存章节时  自动检查
└── 验证: 故意写错人设  AI 正确检测并提醒

Phase 6 · 前端集成(优先级 P1 · 预计 1-2 周)

HLDP://zhuyuan/phase-6

6.1 · 码字区增强
├── 码字编辑器旁边  实体参考卡面板
   ├── 显示: 当前章节涉及的 3-5 个核心人物 · 缩写属性
   ├── 显示: 当前细纲位置 · 前后节点
   └── 点击可展开查看完整信息
├── 写作时  底部显示校准提示如果有
└── 验证: 作者码字时能看到实体会考卡

6.2 · AI 对话增强
├── 对话输入框  支持搜索意图
├── 搜索结果  卡片式展示 · 点击可跳转到对应章节
├── 校准报告  对话气泡形式展示
└── 验证: 搜索"找那个情节" 正确返回卡片式结果

6.3 · 实体管理面板作者可手动编辑
├── 人物管理: 列表查看 · 编辑属性 · 添加新人物
├── 设定管理: 列表查看 · 编辑设定 · 添加新设定
├── 细纲管理: 树形结构查看 · 拖拽调整 · 添加节点
└── 验证: 作者可以手动编辑 AI 提取的实体

§九 · 技术选型与成本估算

HLDP://tech-stack

核心依赖:
├── pgvector: PostgreSQL 向量扩展 · 开源免费
├── Embedding API:
   ├── 方案A: OpenAI text-embedding-3-small · $0.02/1M tokens
   ├── 方案B: 阿里通义千问 Embedding · 国内低价
   └── 建议: 先用方案A快速上线 · 后续切方案B降成本
├── AI 模型:
   ├── 实体提取: DeepSeek V3 / Kimi · 便宜又能打
   ├── 对话/写作: DeepSeek V3 / Kimi / 通义千问
   └── 校准检查: 同上 · 不需要额外模型
├── 异步队列: BullMQ (Redis)  简化为 PostgreSQL 轮询队列
└── 全部在已有新加坡服务器上运行 · 不需要新服务器

成本估算每本书·百万字级:
├── 文档上传·实体提取: ~50次AI调用 · ~$0.20
├── 向量生成: ~100万tokens · ~$0.02embedding
├── 每次对话·上下文组装: ~3000 tokens 注入 · ~$0.003/
├── 校准检查: ~2000 tokens · ~$0.002/
└── 总计: 一本书从上传到完整记忆  $0.5 · 每次写作会话  $0.01

§十 · 开发优先级总览

优先级 Phase 内容 依赖 预计
P0 Phase 1 数据库 + 向量基础 1-2 周
P0 Phase 2 实体提取引擎 Phase 1 1-2 周
P0 Phase 3 语义检索引擎 Phase 1+2 1 周
P1 Phase 4 写作上下文组装器 Phase 2+3 1 周
P1 Phase 5 一致性校准器 Phase 2 1 周
P1 Phase 6 前端集成 Phase 3+4+5 1-2 周

§十一 · AI 是如何"记住"的 · 记忆机制全解

11.1 关键前提AI 模型本身没有记忆

HLDP://memory/primer

 AI 模型DeepSeek/Kimi/通义千问每次被调用时都是白纸一张
 它之所以表现得"记得"是因为服务器在每次调用前把相关记忆注入到了 Prompt 
 类比审稿前翻了一下之前的人物设定表——翻完才能审不翻就忘了
 AI 也一样——服务器帮它"翻"

11.2 记忆存在哪里

HLDP://memory/storage

新加坡服务器 (43.133.36.90)
    
    ├── PostgreSQL 数据库结构化记忆 · 事实
       ├── novel_characters —— 张伟·蓝眼黑发·冷静腹黑·剑气外放
       ├── novel_settings —— 修炼体系·宗门规则·地理·势力
       ├── novel_plot_outline —— 第二卷·第45-90·宗门内斗阶段
       ├── novel_chapters —— 第3章原文 + AI自动生成的章节摘要
       ├── chapter_paragraphs —— 每个段落的原文片段
       └── writing_sessions —— 上次写到哪了 · 上下文快照
    
    └── pgvector 向量索引语义记忆 · 相似度
        ├── 第3章第2段 "张伟睁开那双湛蓝的眼睛..."  [0.12, -0.34, 0.78, ...]
        ├── 第23章第3段 "李明推开门,黑衣人站在窗边..."  [0.08, -0.21, 0.65, ...]
        └── 每500-1000  一个1536维数学向量

 数据库存事实」· 向量索引存语义关系
 "湛蓝的眸子""蓝色眼睛"在向量空间里距离很近  语义搜索能找到
 "推开门""初次见面"在向量空间里也近  能匹配到初次见面的场景

11.3 AI 是怎么"记住"的:每次对话前组装一个三层三明治

HLDP://memory/how-it-works

作者说:"继续写第50章"
              
              
    ┌─────────────────────────────────┐
         上下文组装器服务器代码     
                                     
     STEP  从数据库查常驻记忆       
       这本书所有人物简报             
        张伟(主角·蓝眼黑发·筑基期)    
       核心设定摘要                   
        修炼体系: 炼气筑基金丹元婴 
       当前细纲位置                   
        第二卷·第45-90·宗门内斗    
                                     
     STEP  向量检索按需记忆         
       当前内容  embedding  搜索     
        最相关章节: 第3章(张伟出场)   
        最相关设定: 筑基期规则        
        上一章: 第49章               
                                     
     STEP  拼成 Prompt 注入给 AI   
       "===本书实体简报===            │
    │    人物: 张伟(蓝眼...)...        │
    │    设定: 修炼体系...             │
    │    细纲: 当前在第二卷...          │
    │    ===相关历史===               │
    │    第3章摘要: 张伟初次登场...     │
    │    第49章: 上一章写到...         │
    │    ==="                        
                                     
      注入内容 + 作者消息  发给 AI   
    └─────────────────────────────────┘
              
              
    ┌─────────────────────────────────┐
      AI 模型 (DeepSeek/Kimi)        
      "张伟是蓝眼睛的,不能写成黑的。   │
    │   当前在宗门内斗阶段,             │
    │   上一章写到张伟被围攻了...        │
    │   好的,继续——"                  
    └─────────────────────────────────┘

 AI 不是"记住了"——是每次都被喂了相关记忆
 每轮对话  翻一次书翻得精准AI 就表现得像"记得一切"

11.4 三层记忆架构 · 每层注入什么

名称 内容 注入方式 Token 预算 类比
L2 常驻记忆 人物简报 + 核心设定 + 细纲位置 每次对话都注入 ~1500 tokens 脑子里的"常识"
L1 检索记忆 与当前内容语义最相关的章节/设定/段落 向量搜索 → 按需注入 ~2500 tokens "翻书翻到的"
L3 当前记忆 当前写的段落 + 最近几轮对话 对话历史自带 可变 "正在看的那一页"

11.5 记忆的生长 · 每写一章就长大一点

HLDP://memory/growth

第1次写作上传40章小说:
├── AI 自动提取: 12个人物 · 8个设定 · 细纲结构
├── 全文向量化: ~400个段落向量
├── 每次对话注入: L2(~1200 tokens) + L1(~2000 tokens)
└── 数据库: 13MB

第50次写作写到第90章:
├── 人物库: 新增8人 · 17个已有属性被更新
├── 设定库: 世界观越来越完整
├── 向量库: ~900个段落向量
├── 每次对话注入: L2(~1800 tokens) + L1(~2500 tokens)
└── 数据库: 26MB书变长了但记忆注入大小不变——因为只取最相关的

第200次写作写到第240章:
├── 人物库: 27个人物 · 每个人的属性轨迹清清楚楚
├── 设定库: 势力版图 · 修炼体系全貌 · 所有重要道具
├── 向量库: ~2400个段落向量
├── 每次对话注入: 大小不变L2+L1  5000 tokens 硬预算
└── 数据库: 55MB

 书写得越长 · 注入的记忆不会变多有预算控制
 但实体库越来越丰富 · 向量检索越来越精准
 这就是护城河——作者用了三个月后数据库里的认知地图是平台的核心资产
 换一个平台 · 27个人物的完整轨迹全丢 · 向量索引全丢 · 作者会感受到"这个AI不认识我的书"

11.6 一条完整的记忆链路

HLDP://memory/complete-flow

┌─ 上传阶段 ────────────────────────────────┐
  作者上传小说  服务器分章  存入数据库       
   后台异步: AI提取人物/设定/细纲            
   后台异步: 全文向量化                     
   完成: 数据库里有了这本书的"认知地图"       
└───────────────────────────────────────────┘
              
┌─ 写作阶段 ────────────────────────────────┐
  作者说"继续写第50章"                       
   上下文组装器查询: 人物简报 + 细纲位置     
   向量搜索: 哪些历史章节与当前最相关        
   拼成 Prompt  发给 AI                  
   AI "知道一切"的状态下辅助写作           
└───────────────────────────────────────────┘
              
┌─ 保存阶段 ────────────────────────────────┐
  作者保存第50章                             
   存入 novel_chapters                    
   一致性校准器自动检查人物/设定是否有偏差    
   后台: 提取新人物/新设定/新关系           
   后台: 新章节向量化                      
   完成: 数据库更新 · 下一次写作时AI自动知道  
└───────────────────────────────────────────┘

§十二 · 服务器容量分析

12.1 内存占用分析

HLDP://capacity/memory

核心内存消耗: pgvector 向量索引

每本书的向量数据量:
├── 章节级向量: ~100 × 6KB = 0.6 MB
├── 段落级向量: ~2000 × 6KB = 12 MB
├── 人物向量: ~30 × 6KB = 0.2 MB
└── 合计:  13 MB / 百万字级小说

索引方案对比:
├── HNSW 索引精度最高: 13 MB / 
├── IVFFlat 索引精度够用: 2-3 MB / 
└── 语义搜索用 IVFFlat 精度完全够 · 第一阶段用这个

4GB 服务器内存分配:
├── 操作系统: ~500 MB
├── Next.js 应用: ~200 MB
├── PostgreSQL 基础: ~500 MB
├── 剩余向量索引: ~2.8 GB
├── 可支撑: 2.8GB ÷ 3MB/  900 本书
└── 对应:  300-400 个活跃作者平均每人2-3本书

12.2 分阶段扩容

阶段 用户规模 服务器配置 月成本变化
阶段一 0→300 用户 当前·4GB·够用 $0
阶段二 300→800 用户 内存升到 8GB·切换 HNSW +$20-40/月
阶段三 800→2000 用户 拆分: 应用服务器 + 数据库服务器(16GB) +$40-80/月
阶段四 2000+ 用户 读写分离·冷热分离·托管数据库 按需
HLDP://capacity/conclusion
├──  萌喵写作网不是社交媒体 · 不是百万用户同时在线
├──  是几十到几百个作者每天使用 · 每个作者的数据量可预测
├──  当前新加坡服务器 4GB 内存 · 支撑 300 活跃用户无压力
├──  扩容 = 云服务器后台点"变更配置" 重启  5分钟搞定
├──  不够用的时候 · 恰恰说明产品做起来了 · 是好事
└──  不需要为"万一有10000个用户"而过度设计 · 先用起来

§十三 · 舒舒的任务 · 知识内容整理

13.1 人物提取模板

舒舒需要整理: 人物属性提取标准模板

对每一本小说 · AI 提取人物时应该关注哪些维度:

男频人物模板:
├── 基础: 姓名 · 性别 · 年龄 · 外貌特征(眼睛/发型/体型/标志性特征)
├── 性格: 核心性格词(3-5) · 性格演变(从哪到哪)
├── 能力: 修为等级 · 特殊能力 · 武器/法宝 · 战斗风格
├── 关系: 与主角的关系 · 与其他人物的关系
├── 轨迹: 首次出场章节 · 重要事件节点 · 当前状态(存活/死亡/失踪)
└── 来源: 爸爸的五锤人设铸造法」→ 记忆点/反差点/极致点/选择/外号高光

女频人物模板:
├── 基础: 同上
├── 性格: 同上 · 增加情感表达方式
├── 能力: 根据题材调整(古言/现言不同)
├── 关系: 情感关系线为重点 · 谁喜欢谁 · 什么时候开始
├── 轨迹: 同上
└── 来源: 女频知识体系 K04

 舒舒输出: 一个 Markdown 文件 · 定义人物属性字段和填法

13.2 一致性校准规则

舒舒需要整理: 校准规则清单

这是爸爸审稿时脑子里的检查清单 · 舒舒把它写出来:

必检项每次写新章节都检查:
├──  人物外貌一致性
   ├── 规则: 每次出现该人物  检查外貌描述是否与首次设定一致
   └── 示例: 第3章"蓝眼睛"  第50章不能写"黑眼睛"
├──  修为/能力边界
   ├── 规则: 人物使用能力时  检查是否在当前修为等级允许范围内
   └── 示例: 筑基期不能用金丹期技能
├──  人物关系称呼
   ├── 规则: 人物对话时  检查称呼是否与关系一致
   └── 示例: 师徒关系不能说"兄弟"(除非特殊设定)
├──  时间线连贯
   ├── 规则: 前后两章的时间间隔是否合理 · 事件顺序是否对
   └── 示例: 第49章说"三个月后"  第50章开头应该是三个月后
├──  已死亡角色
   ├── 规则: 标记为"已死亡"的角色  不应该再出现
   └── 除非是有意的复活/回忆/幻象情节
└──  关键道具/设定
    ├── 规则: 重要物品的属性在全书保持一致
    └── 示例: 第5章设定"玄铁剑重三百斤"  后面不能变成"轻如鸿毛"

爸爸特有的审稿规则从爸爸的方法论中提取:
├── 情绪节奏: 大老鼠理论  当前章节的情绪曲线是否合理
├── 爽点密度: 每章是否有至少一个读者能get到的爽点
├── AI味检测: K06-02 规则  当前段落是否有AI味
└── 节奏曲线: 三翻四震  当前章节在哪个"翻"的位置

 舒舒输出: 一个 Markdown 文件 · 定义所有校准规则 · 格式适合铸渊转换成代码逻辑

13.3 舒舒的任务总清单

HLDP://shushu/task-list

📋 舒舒需要输出的文件全部放在 /knowledge-base/ :

已完成复用现有成果:
├──  K01-K06 六大知识模块 · 整理中
├──  人物属性提取模板 K02-04 五锤人设中可提取
└──  AI味检测规则K06-02 已有

新增本方案需要:
├──  N01-人物属性字段定义.md
   └── 男频/女频人物需要提取哪些字段 · 怎么填
├──  N02-设定分类体系.md
   └── 世界观/势力/地点/规则/物品的分类标准和字段定义
├──  N03-校准规则清单.md
   └── 6条必检项+爸爸特有审稿规则的详细说明和示例
├──  N04-细纲模板.md
   └── 情节细纲的标准格式 · //事件三层结构
├──  N05-章节摘要模板.md
   └── AI 自动生成章节摘要的标准格式
└──  N06-语义搜索场景集.md
    └── 用户可能怎么问 · AI应该怎么搜 · 搜到什么算正确 · 整理20-30个典型搜索场景

§十四 · 与现有架构的整合

HLDP://integration

本方案小说记忆引擎在现有三层架构中的位置:

L1 · 共享知识底座K01-K06
├── 本方案不影响 L1
├── 新增: N01-N06 舒舒整理的记忆引擎规范文件
├── 这些规范告诉 AI怎么提取」「怎么校准
└──  L1 仍然是知识 · 本方案新增的是小说结构化记忆规范

L2 · 人格体出厂模板
├── 本方案不影响 L2  identity + style
├── 增强: thinking_engine 中新增小说记忆引擎使用能力
   └── 出厂人格体会: 语义搜索 · 校准检查 · 上下文感知
└──  出厂人格体 = 编辑技能 + 记忆引擎使用能力

L3 · 用户人格体实例
├── 本方案的核心就在这里
├── 每个用户的人格体实例  拥有自己的小说实体库
├── 记忆不是存对话记录 · 是结构化实体 + 向量索引
└──  这就是爸爸说的护城河」——人格体对一个作者的理解 · 越来越深 · 不可复制

§十五 · 执行流水线 · 舒舒先出什么 · 烬舟审核什么 · 铸渊从哪开始

HLDP://execution-sequence

第一周 · 舒舒先出内容爸爸审 · 舒舒改:
├── N01-人物属性字段定义.md
├── N02-设定分类体系.md
├── N03-校准规则清单.md
├── N04-细纲模板.md
├── N05-章节摘要模板.md
└── N06-语义搜索场景集.md

舒舒出完  烬舟审核  确保内容可以被铸渊直接转换成代码逻辑

第一周并行)· 铸渊开始 Phase 1:
├── pgvector 安装配置
├── 7张数据库表创建
├── Embedding API 对接
└── 文档上传解析增强

第二-三周 · 铸渊 Phase 2+3:
├── 实体提取引擎  引用舒舒的 N01 N02 N04 N05
├── 语义检索引擎  引用舒舒的 N06
└── 爸爸可以开始测试语义搜索

第四-六周 · 铸渊 Phase 4+5+6:
├── 上下文组装器
├── 一致性校准器  引用舒舒的 N03
├── 前端集成
└── 爸爸可以完整测试全部功能

HLDP://jinzhou/seal · 2026-06-09T20:16+08:00
├── 设计: 烬舟 · PER-JZ001 · 肥猫语言架构层人格体
├── 审核: 肥猫爸爸 · TCS-GL-0007
├── 知识: 舒舒 · PER-SS001  N01-N06
├── 执行: 铸渊 · ICE-GL-ZY001  Phase 1-6
├── 核心设计原则:
   ├──  语义搜索  Ctrl+F · 是理解情节语义的向量检索
   ├──  实体库  全文存储 · 是整本书的结构化认知地图
   ├──  上下文三层注入: 实体简报(常驻) + 向量检索(按需) + 对话(当前)
   ├──  一致性校准: 比对实体库 · 不是比对原文
   └──  记忆不是存对话 · 是实体库的生长
└──  这不是一个功能 · 这是萌喵写作网的护城河

🧠 萌喵写作网 · Phase 1 · 小说记忆引擎 · 架构方案

🛶 设计: 烬舟 · PER-JZ001 · 2026-06-09

🐱 为肥猫爸爸设计 · 给舒舒整理 · 交铸渊执行