Skip to content

Releases: MRXOAD/xuanji-write

v0.2.0 — 监控分流 + 8 个新能力打包

25 Apr 18:35

Choose a tag to compare

v0.2.0 — 监控分流 + 8 个新能力打包

距 v0.1.0 一周。这版集中加了 8 件实际写长篇要用的能力,所有改动都向后兼容,300 章存量项目无影响。

主要新能力

1. 写作 / 监控分两套 API
监控调用(伏笔抽取 / L2 章级 fact-check / L3 段级 review)频率高,可以挂便宜小模型省钱。.envMONITORING_BASE_URL / MONITORING_CHAT_MODEL / MONITORING_API_KEY 即可。例:写作 deepseek-chat($0.27/M)+ 监控 qwen-turbo($0.04/M),省 6 倍多。

2. 写章前预检
webnovel.py llm draft --chapter N 前自动跑预检:大纲存在 / 角色约束.md / state 卷号一致 / LLM API 配置。jieba 词性识别人名提示。--no-preflight 关。

3. Docker compose 一键起
docker-compose up 拉起 fastapi + streamlit 两服务。.env.docker.example 给参考配置。

4. 角色对白样本自动刷新
写完一章命中 chapter % 30 == 0 自动跑 extract_character_voice.py。env WEBNOVEL_VOICE_AUTO=0 关。

5. 卷头 transition 章特别注入
检测本章是否卷头(chapters_range 起点),叠加"上卷尾章摘要 + 新卷阶段支架段"到 prompt。卷与卷之间情绪 / 节奏断裂高发,这一项防断链。

6. 自动跑 L2 / 段尾 L3
WEBNOVEL_AUTO_CHECK=L2(默认)/ L3 / offchapter%10 自动 L2,chapter%80 自动 L3,异常落盘 审查报告/ch{NNNN}.l2-auto.json

7. RAG 反向检索防桥段复读
RAG hits 里 score ≥ 0.7 视为"已写过",反向注入 prompt "避免重复"。300+ 章长篇必备。

8. Story System 主合约层
新增 设定集/故事合约.md(可选),内容是全书宪法:核心冲突 / 主角弧 / 反派弧 / 节奏 / 写作纪律。注入 system prompt 顶部"全书宪法,优先于一切单章细节"。双 demo 各给一份示例。

顺手做的

  • GitHub Actions CI:pytest 3.10/3.12 矩阵 + frontend build,每次 push 跑
  • 修 dependabot 6 个 npm 漏洞:vite / lodash-es / picomatch / postcss
  • dashboard 重写(v0.1.x 已做):去像素游戏风,depth dark + 蓝主色
  • 修 2 个测试:test_extract_summary / test_llm_settings_default

同类项目对比

xuanji-write v0.2 webnovel-writer 上游 v6.0 AI_NovelGenerator autonovel
章末规则审查 + 失败 retry 部分
多 LLM 路由 fallback
写作/监控分两套 API
全本质量热力图
token / cost 自动统计
角色对白样本注入 + 自动刷新 character_state
伏笔自动追踪 propagation debt
长程上下文(5 类来源 + 卷头 transition)
Story System 主合约 五层共演化
RAG 反向检索防复读
多 agent 协作

升级方法

git pull
pip install -r requirements.txt   # httpx 新增

8 件新能力都默认开启,如果要关掉:

  • 预检:draft 加 --no-preflight
  • 角色样本刷新:export WEBNOVEL_VOICE_AUTO=0
  • L2/L3 自动检查:export WEBNOVEL_AUTO_CHECK=off
  • 监控分流:不配 MONITORING_* 自动 fallback 到 writing API

致谢

  • 上游 lingfengQAQ/webnovel-writer
  • Story System 概念借鉴上游 v6.0
  • RAG 反向检索灵感来自 wandb 的 prompt deduplication
  • dashboard 视觉对标 wandb / linear / vercel

v0.1.0 — 长周期一致性 + 双 demo

25 Apr 04:39

Choose a tag to compare

v0.1.0 — 长周期一致性 + 双 demo

第一个能用版本。fork 自 lingfengQAQ/webnovel-writer,GPL v3。

实测

  • 一本书写到 300 章 / 106.7 万字
  • deepseek-chat 单章 28 秒,单章成本 $0.003-$0.01
  • 全本 audit 扫一次 0.3 秒(300 章 × 7 类正则)
  • 跑 69 章批次,2 章 API 断流失败重跑成功

7 层堵 LLM 跑偏

写长篇 LLM 容易忘:第 30 章死了的人第 143 章又出现,主角名字写到一半被改成另一个,本来是民俗悬疑写着写着冒出"丹田"。本版本在 7 处堵这种问题:

  1. system prompt 项目级角色锚点设定集/角色约束.md 每行一条,自动注入
  2. 大纲驱动 — 每章必须有 大纲/第NNN章-XXX.md,缺则自动从 *阶段支架.md 表格生成降级版
  3. 长程上下文混合 — 近 2 章 + 卷头章 + 跨段锚点 + quest 主线 + 未回收伏笔的源章,5 类来源最多 5 章
  4. 角色对白历史样本 — 从已写章节自动抽该角色的对白模式,挑 4 条注入(模仿语气不照抄)
  5. 章末 audit 验证 — 7 类正则:修仙词 / 主角名串稿 / 元信息漏字 / 死活状态 / 字数异常 / 自造姓氏 / 姐姐错名
  6. 失败自动 retry — audit 检出 errors 时,把问题清单注入 user prompt 重生成一次
  7. 伏笔自动追踪 — 每章写完用小 LLM 提"引入的悬念 + 兑现的旧悬念",超 20 章未推进的回写到下章 prompt

详见 docs/long-term-consistency.md

主要新增脚本

  • scripts/draft_audit.py — 章末规则审查,7 类
  • scripts/foreshadowing_tracker.py — 伏笔自动提取 + 老化追踪
  • scripts/extract_character_voice.py — 角色对白样本抽取
  • scripts/check_pipeline.py — L1/L2/L3 三层检查
  • scripts/llm_stats.py — token / latency / cost 统计
  • scripts/llm_prompt_builder.py — prompt 构造模块化
  • dashboard_vibe.py — Streamlit 实时面板(8866 端口)

实时面板

streamlit run webnovel-writer/dashboard_vibe.py -- --project-root <BOOK>

8866 端口能看:

  • 顶部:章号 / 字数 / 卷号 / 进度条
  • 章节字节折线
  • LLM 调用统计:p50/p95 latency / token / 估算成本
  • 全本质量热力图 20×N(绿 PASS / 黄 WARN / 红 FAIL)
  • 章末钩子分布饼图
  • 未回收伏笔散点图(纵轴 = 距今多少章未推进)
  • L2/L3 检查报告分类

另有 React dashboard 在 8000 端口(只读 30+ 端点,FastAPI + Vite + React 19)。

双 demo

  • examples/demo-玄幻短篇/ 修仙模板,沈砚之 / 青鸾宗,3 章细纲
  • examples/demo-都市悬疑/ 现代连环案,陈晓白 / 网约车,带 3 章实跑正文(deepseek-chat,12 个伏笔自动入库)

跟同类项目比

xuanji-write webnovel-writer 上游 v6.0 AI_NovelGenerator autonovel
章末规则审查 + 失败 retry 部分
多 LLM 路由 fallback
全本质量热力图
token / cost 自动统计
角色对白历史样本注入 character_state
伏笔自动追踪 propagation debt
长程上下文混合(5 类来源)
Story System 主合约 ✗(待补) 五层共演化
多 agent 协作

安装

git clone https://github.com/MRXOAD/xuanji-write.git
cd xuanji-write
python -m pip install -r requirements.txt

致谢

  • 上游 lingfengQAQ/webnovel-writer
  • 章末规则审查思路借鉴 autonovel 的 propagation debt
  • dashboard 进度可视化参考 wandb / mlflow