技术架构

基于 LangGraph 的多 Agent 状态机,统一路由、分层记忆、类型化审查

Agent 协作拓扑

graph TB START([作者输入]) --> dispatch{dispatch 路由} dispatch -->|init 阶段| dialogue[对话助手
阶段机讨论] dispatch -->|done 阶段| intent[意图识别器
Tier0 关键词 + Tier1 LLM] dialogue --> dispatch intent --> dispatch dispatch --> world[🌍 世界构建师] dispatch --> char[🧙 人物设定师] dispatch --> plot[📋 剧情编排师] dispatch --> presenter[呈现层
14 种面板] world --> dispatch char --> dispatch plot --> dispatch presenter --> END([等待作者]) plot -->|章节规划| writer[✍️ 执笔作者] writer -->|总是| quality[🔍 质量审查员] quality -->|通过| reader[📖 读者代言人] quality -->|失败| writer reader -->|通过| archive[📦 存档] reader -->|失败| writer archive --> dispatch style dispatch fill:#7C5CFC,color:#fff,stroke:none style writer fill:#10B981,color:#fff,stroke:none style quality fill:#F472B6,color:#fff,stroke:none style reader fill:#FBBF24,color:#333,stroke:none style archive fill:#38BDF8,color:#fff,stroke:none
写作 Pipeline 内部直连(热路径),其余节点通过 dispatch 统一路由

两档模型策略

档位用途特点延迟
Fast对话路由、结构化决策、质量硬伤检查、元数据提取非流式同步,高准确率1-3s
Thinking世界/人物/主线构建、正文写作、读者模拟流式 + reasoning chain30-120s

思考模式由两个独立开关控制:ENABLE_THINKING(API 层:是否启用 reasoning) + SHOW_THINKING(UI 层:是否显示思考过程)

多模型厂商适配

Thinking 参数自动按厂商生成,一套代码适配主流大模型:

厂商Thinking 参数示例模型
Qwen (阿里百炼)extra_body.enable_thinking=Trueqwen3-max / qwen3.5-flash
Anthropic Claudethinking.budget_tokens=Nclaude-sonnet-4-5
DeepSeek默认开启deepseek-r1
智普 GLMextra_body.thinking.type="enabled"GLM-Z1 / GLM-4.5
字节豆包extra_body.thinking.type="enabled"Doubao-1.5-thinking
Google Geminireasoning_effortgemini-2.5-pro
OpenAI o 系列reasoning_efforto3 / o4-mini

状态管理与持久化

💾

NovelState

50+ 字段的 TypedDict 全局状态,覆盖书目/类型/世界/人物/剧情/写作/审查/记忆/流程全维度。

🗄️

SQLite 持久化

每本书独立 state.db(全量快照)+ checkpoints.db(LangGraph SqliteSaver)。messages 不持久化。

📁

文件系统

library/book_{id}/chapters/ch0001.txt — 每章正文独立存储。vector_store/ — FAISS 索引 + metadata。

技术栈

🔗

LangGraph

多 Agent 状态机编排
条件边 + checkpoint

🤖

LiteLLM

统一 LLM 调用层
7+ 厂商 thinking 适配

🔍

FAISS

本地向量检索
SentenceTransformers

🖥️

Rich

CLI 交互界面
Panel / Spinner / 流式输出

🐍

Python 3.11+

零构建步骤
pip install 即用