Releases: MRXOAD/xuanji-write
v0.2.0 — 监控分流 + 8 个新能力打包
v0.2.0 — 监控分流 + 8 个新能力打包
距 v0.1.0 一周。这版集中加了 8 件实际写长篇要用的能力,所有改动都向后兼容,300 章存量项目无影响。
主要新能力
1. 写作 / 监控分两套 API
监控调用(伏笔抽取 / L2 章级 fact-check / L3 段级 review)频率高,可以挂便宜小模型省钱。.env 加 MONITORING_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 / off。chapter%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
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 处堵这种问题:
- system prompt 项目级角色锚点 —
设定集/角色约束.md每行一条,自动注入 - 大纲驱动 — 每章必须有
大纲/第NNN章-XXX.md,缺则自动从*阶段支架.md表格生成降级版 - 长程上下文混合 — 近 2 章 + 卷头章 + 跨段锚点 + quest 主线 + 未回收伏笔的源章,5 类来源最多 5 章
- 角色对白历史样本 — 从已写章节自动抽该角色的对白模式,挑 4 条注入(模仿语气不照抄)
- 章末 audit 验证 — 7 类正则:修仙词 / 主角名串稿 / 元信息漏字 / 死活状态 / 字数异常 / 自造姓氏 / 姐姐错名
- 失败自动 retry — audit 检出 errors 时,把问题清单注入 user prompt 重生成一次
- 伏笔自动追踪 — 每章写完用小 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