Skip to content

About

A controllable, revisable, consistency-first AI system for long-form novel writing — temporal story bible, foreshadowing scheduler, cascading outline engine, and tag-based style control wrapped around any LLM.

Topics

Resources

Contributing

Stars

13 stars

Watchers

0 watching

Forks

Repository files navigation

藏山

一个可控、改得动、不崩的 AI 长篇小说创作系统。(jarvis-write · Cangshan)

English | 简体中文

写长篇小说时,AI 工具的头号问题不是"写不出来",而是写到几十万字后人设崩、伏笔丢、大纲改不动。藏山不是又一个"一键生成器"——生成文字的活交给 LLM,本项目做的是包在 LLM 外面的控制层:故事圣经管事实、伏笔调度管回收、大纲级联管改动、倾向标签管风格,让长篇创作全程可控、可改、可追溯。

🎯 初心:写《剑来》《青山》那样的长篇网文——先「能看」,再「爱看」,终「好看」。 能看是底线——百万字不崩人设、不丢伏笔、不自相矛盾;爱看是及格——章章有钩子、大纲随时改得动;好看是追求——文字有质感、读不出 AI 腔。详见项目愿景。

写作工作台

写作工作台:左侧全局工坊导航,书内按「开书 / 写作 / 全书」三区推进;写作区即「正文即界面」——本章正文为主场,章首交稿单与本章蓝图一键展开,右栏 AI 窄栏常驻(随便问 / 整章不满意),改动一律 diff 逐条验收

📸 更多截图(桌面版 / 移动端)
首页 · 我的小说 应用锁

✨ 故事工坊——自己冒出一个点子时进这里,一段话直接拍成竖屏短片:

故事工坊

移动端已适配,手机浏览器打开即用:

🖥️ 下载桌面版(Windows 安装包,开箱即用) → GitHub Releases

🌐 官网与在线文档 → ynnyh.github.io/jarvis-write

💬 想直接试用、不想自己部署? 扫码进 QQ 群领邀请码,开箱即用 → 见文末交流群

✨ 四个别人没有的杀手锏

市面上的 AI 写作工具大多止步于"生成",jarvis-write 的价值在于生成之后还改得动、不崩、你说了算——尤其这一版,把"一眼读得出是 AI 写的"这个老大难,当成重中之重来攻:

  • 🔗 大纲级联更新——改任意一章大纲,系统自动做改动分级(小改零成本短路)、分析下游影响、你勾选后级联重生成;已有正文自动标记失配,大纲全程版本化可回退。这一条,同类开源项目里一个都没做。
  • 🧭 长程一致性引擎——时序故事圣经(每条事实绑生效章节区间,可查"第 N 章时角色是什么状态")+ 伏笔四态调度(埋设/强化/回收/弃用,到期自动提醒),章后自动抽取实体与事实写回圣经。几十万字不自相矛盾。
  • 🎚️ 标签化倾向系统——风格/节奏/基调不再写死在 Prompt 里:chips + 自定义输入 + 预设模板,贯穿大纲、正文、润色三个节点,全程你说了算。
  • 🧬 去 AI 味 · 双向锚定 + 自愈闭环——把"读得出是 AI 写的"当头号敌人来打:正向喂名家 / 预设文风范本(余华、鲁迅、汪曾祺、金庸、王小波、海明威…任选,也可喂自己的范文、或从已认可章节自动提取)给笔法一个具体的"人"去学,负向用 ✗AI 腔→✓人话 配对反例把套话逐条划掉;定稿再过一道量化 AI 味门禁(9 类套话规则 + 句长节奏 / 段落结构统计打分),超标就定向去味重写→复测→收敛,没改好自动回退、绝不落更差的版本。定稿主审还过一道叙事架构指纹检查(叙述者点题说教 / 结局"选择+接纳+成长"三脚架 / 情绪呈现单一化 / 模板转折),去味重写带校准纪律防矫枉过正——研究(StoryScope)实证:只凭叙事结构就能 93% 检出 AI 小说,光改措辞远远不够。正向锚一路铺到续写、片段润色、整章润色每一个入口。名家文风一律标注"风格参考·非原作节选",范本为本项目自撰仿写,不含任何原作节选。

🎬 漫剧工坊:写完的小说,一键变成漫剧

不止能写、能改——「全书 → 漫剧」把已定稿章节改编成竖屏漫剧的完整拍摄手册,从画风到预告片的整条制片流水线,拿去即梦 / 可灵 / Midjourney / 剪映照单施工:

① 画风方向拍板        ② 资产卡(一致性锚)      ③ 切集            ④ 单集流水线                ⑤ 预告片
  国漫/二次元/3D/  →    画风锁定段         →    按短剧节奏切  →    剧本 → 分镜表 →        →   30-60s 高能混剪
  水墨/赛博/真人写实    角色锁定外貌段           每集钩子+卡点       三轨绘图提示词              金句文案+标题卡
  (AI 按书荐前三)       场景定调段+定妆照                           成片包:配音稿/剪辑清单/SRT
  • 一致性是命门:画风锚、人物锚、场景锚由资产卡统一管理,逐字注入每一格分镜提示词(LLM 偶发漏注入时引擎兜底强制拼入)——同一个人不换脸、上百格画风不漂移。这正是"拍出来像一部剧"和"一百张拼贴"的区别。
  • 定妆照锁脸:文字锚只能把漂移压小、压不到零——角色卡上一步「出定妆照」,AI 写一条参考图专用提示词(单人正面半身 / 纯色背景 / 3:4,带本书画风锚),你出一张满意的上传回角色卡,之后凡这个角色出场的分镜都提示你带上它当垫图。文字锚 + 参考图,是当前业界最稳的锁脸做法。
  • 提示词一键粘贴,认得你用的生图站:每格三份现成的——① 只有一个描述框的站(GPT-image / DALL·E / 豆包 / 通义)负面词改写成「【不要出现】…」并入正文,整段粘一次就行;② 有负面词框的站(即梦 / 可灵 / SD / ComfyUI)正文与负面词分开粘;③ Midjourney / Niji 用英文 + --ar 9:16 + --no。三份由后端同一套规则生成,站内所见 / 导出手册 / CSV(含 paste_oneframe 整段列)完全一致
  • 画风方向你拍板:国漫厚涂 / 日系二次元 / 3D 动画 / 水墨国风 / 赛博霓虹 / 真人写实六向硬约束(真人写实挂恐怖谷警示,动画系为默认推荐);不确定就「AI 荐方向」——按书的题材/基调荐前三,带理由带优先级,点一下即选中
  • 导演知识已编码:切集按短剧行规(每集独立冲突 + 3 秒钩 + 结尾卡点,3000 字一章约出 4-6 集);分镜带景别/运镜、成片包带转场与按段配乐标——你出的是「手」,不是「脑」
  • 成片包管到出片:配音稿(TTS 友好文本 + 声线 + 估时,配音与画面时长不匹配自动提示)+ 剪辑清单 + SRT 字幕(剪映/PR 直接导入);出片顺序:定妆照 → 出图 → 图生视频 → 配音 → 按清单拼 → 压字幕 → 铺 BGM
  • 预告片一键混剪:从各集钩子/高能分镜混剪 30-60 秒——炸点开场、冲突连切、悬念定格,附金句文案骨架与标注取材来源的分镜表
  • 配音合规红线:只用音色特征描述 + TTS 平台正版音色库选型,绝不克隆、不指名模仿任何真人声音;商用发布前确认所选音色的商用授权
  • 沿用「只产提示词」哲学:不接生成模型、零新配置——图像视频模型迭代快、按张按秒计费,编排与专业知识才是我们做的部分,工具你自己挑

详见官网 功能导览 · 漫剧工坊。

📣⚡💡✨🎂 宣传片工坊 & 情绪短片工坊 & 灵感工坊 & 故事工坊 & 生日祝福工坊:不写小说,也能用这台制片台

漫剧之外,同一套制片管线(锚段一致性 / 三轨提示词 / 切段 / SRT)又开了五个工坊,服务五类新需求:

📣 宣传片工坊(城市 / 景区 / 品牌)——先聊后做:

  • 与 AI 策划总监多轮研讨(真流式打字机):你说「想从吃的入手」,他反问关键问题、给具体方案、每轮复述共识;聊透了一键收敛成创作简报(定位/受众/段落结构/slogan/需人工核实清单)——简报是契约,可锁定可重收敛,不玩「一版不对推倒重来」
  • 素材点事实红线:史实/数据/slogan 只可引用你给的素材点,拿不准的自动进核实清单——宣传片把年代写错就是事故
  • 全链路:风格+地标卡 → 解说词 → 分镜 → 三轨提示词 → 生成切段(镜头边界并段 ≤5/10/15s,每段整段视频提示词+首帧指引,贴画布拼接工作流)→ 成片包 → 四格式导出

⚡ 情绪短片工坊(15/30 秒,双入口)——一次三本子,三选一:

  • 通用入口:遗憾/争吵/爱情/童趣等十大情绪命题,一次产 3 个不同切入的本子(钩子→蓄势→金句字幕卡),每本自带三轨提示词/切段/SRT——短视频是试号逻辑,不磨单版
  • 小说衍生入口(全书→「投流」页签):从你的定稿章节抽金句名场面出投流种草片,金句溯源校验——引用必须给出正文原句并逐句比对,编造的当场标红。它读的是你的书,引用的是你写的话,这是和通用 AI 聊天拉开差距的地方

💡 灵感工坊(玩法短视频)——选个玩法,一次三本子:

  • 治愈手绘 / 黏土定格 / 赛博雨夜 / 像素复古 / 动物拟人 / 荒诞脑洞等十二种玩法,玩法 directive 自带强画风锚,画风气质一眼可辨;允许荒诞与反差,越有梗越对,拿去做账号试号 / 日常更新

✨ 故事工坊(自由创作)——我突然有个点子,直接拍:

  • 自己冒出一个具体场景(「小朋友和妈妈坐出租车,车上的搞笑对话」)时进这条:一段话把点子写下来,AI 以你的点子为本子主轴——第 1 个本子忠实还原你的故事,另两条同场景换镜头语言变体,不另起炉灶编新故事;画风任选(Q版沙雕漫画 / 日系二次元 / 3D 动画…),手卡自带角色定妆卡,先出定妆照锁脸再逐段出片,人物不漂

🎂 生日祝福工坊(30/60 秒,寿星定制)——填一份寿星资料,一次三本子三选一:

  • 结构化寿星资料:称呼(祝福台词点名用)/ 关系 / 里程碑(周岁/成人礼/大寿)/ 回忆点(2-5 条具体场景、梗、口头禅)/ 送出人——定制感的全部来源;六大基调(整蛊爆笑/催泪走心/温馨日常/惊喜反转/燃向里程碑/宠溺可爱)各带三幕节奏契约(开场 3 秒点名抛悬念 → 回忆杀具体到物 → 高潮收在吹蜡烛/拥抱那一帧)
  • 儿童向风格包:佩奇式简笔动画 / 奥特曼式特摄英雄 / 汪汪队式 3D 救援 / 恐龙世界 / 童话城堡 / 小小宇航员六套内置「世界包」——寿星作为主角进入动画片世界(变身小小英雄、当救援队长…),每一格都有TA;版权口径与灵感工坊同(标签提示「同款气质」,提示词只写画风特征不点名 IP);出片传小朋友照片走图生视频,TA 就出现在那个世界里
  • 回忆点防编造校验:分镜必须落在你给的回忆点上,引擎逐条做关键词核对,对不上的当场标进「需核实」——定制片最怕张冠李戴的「假回忆」
  • 分段出片玩法指引:手卡与出片盘按段标注建议工具路径——普通段文生视频、回忆杀段传寿星真实照片走图生视频(提示词已含「保持参考照片面部特征与体型」)、想让寿星照片开口说祝福走对口型工具单独做;沿用「只产提示词」哲学,出片仍拿去即梦/可灵/剪映

🎭 剧本工坊:小说改编成剧,一句话也能直接开写

第五条创作线(/scripts),产出 Fountain 风格文字剧本(场景标题/动作行/对白),和出片工坊互不影响:

  • 两条来路:独立创作(剧名/类型/一句话故事/目标集数);或小说改编——选一本有定稿章的书,AI 把定稿正文压缩成改编蓝本(保留主线冲突与人物弧光,取舍写进风格备忘),一次生成分集大纲建剧
  • 分集大纲:AI 一次出全部集大纲(集名/梗概/开场钩/结尾钩),可整表重建;逐集生成:大纲满意一集才生成一集,自动衔接上一集结尾(末 400 字)、注入风格备忘与当集补充方向,正文随手改、重新生成前明确提示覆盖
  • 阅读体验:场景标题行自动高亮成场景块,每集标注字数与约估片长

💰 写一本长篇的成本,一杯奶茶钱

担心 token 烧钱?拿官方 DeepSeek v4-flash 实测(2026-09,50 章长篇压测,全程峰时跑的):

  • 一章 ≈ 6.7 万 token ≈ 峰时 ¥0.16,低峰 ¥0.08;一章约 2500 字
  • 一部 10 万字长篇(40 章)≈ ¥3~7——一杯奶茶钱,还不限时不限量
  • 设置页「用量与花费」实时显示累计 token 与折算金额;官方 DeepSeek 配置可一键查实时账户余额
  • 官方 API 分峰谷时段(峰时 9:00-12:00、14:00-18:00 价格 ×2),设置页会提示当前时段——长篇批量生成挂低峰,成本再砍一半

核心特性

  • 正文即界面的写作工作台:日常写作按「开书 / 写作 / 全书」三区组织;写作区打开就是本章正文,选中段落就地「改这段 / 手改」,读到多处问题可边读边批注、一次性定点改;一条常驻 AI 窄栏梳理修改意见后锁情节整章优化或重写,AI 改动一律 diff 逐条验收、旧版留快照;章首一张交稿单用一句话报告本章自检(校对、与设定有无冲突),要改的一键带进验收流。命令面板 Ctrl+K 输章号或动作名直达,全套快捷键桌面端与浏览器通用
  • 全书全文检索(Ctrl+Shift+F):正文 / 大纲 / 设定 / 事实 / 伏笔五类一键横查,命中带上下文摘要与高亮,点章节直达、点设定跳故事圣经;FTS5 trigram 倒排索引由数据库触发器自动同步(任何写路径都不漏),写作中随手核对「这个人之前说过什么」不再靠翻
  • 自由改稿与同文双轨:默认「正文即界面」段落点选之外另备两种整章模式——自由改稿(CodeMirror 6 编辑器:搜索替换 / 撤销历史 / 实时字数,生成任务进行中自动只读);双轨对照(左栏当前定稿只读参照、右栏新稿编辑,逐段差异统计实时显示,写回走同一验收链路、旧版自动留快照)——大改整章不再憋在气泡里
  • 六步生成流水线:种子 → 角色动力学 → 世界观 → 情节架构 → 章节蓝图 → 逐章正文(成熟的雪花写作法 Prompt 体系,鸣谢见文末);生成章节蓝图时逐章增量生长,进度实时显示「已生成 N / 共 M 章」,不再对着黑盒批量调用干等
  • 章节标题风格与一键批量改名:生成蓝图前先给全书标题定调——朴素 / 带钩子 / 悬疑冷峻 / 含蓄诗意,治「AI 起名个个『惊天逆转!命运终章!』」的标题党毛病;已成书可在大纲页一键为全书重拟一整批标题,old→new 逐条预览、勾选、可自改,只换标题、不动剧情,已写正文不会被标失配
  • 长程一致性引擎:时序故事圣经(每条事实绑定生效章节区间,可查"第 N 章时角色状态")、伏笔四态调度(埋设/强化/回收/弃用,到期自动提醒)、章后自动抽取实体与事实写回圣经
  • 逐章生成 + 一致性检查:定稿后自动与故事圣经比对找矛盾,问题列表交用户拍板,不擅自改稿;被拦下时章首一张说人话的卡给三个明确选择(按矛盾重写 / 改设定 / 忽略继续),不必懂黑话;内置重复用词检测
  • 大纲级联更新:随时改任意一章大纲,系统自动做改动分级(minor 零成本短路)→ 下游影响分析 → 用户勾选后级联重生成;已有正文自动标记失配,大纲全程版本化可回溯
  • 润色引擎:整章或选段风格化润色,锁定情节事实(润色前抽事实清单、润色后逐条校验)
  • 去 AI 味(双向锚定 + 自愈闭环):正向锚——名家 / 预设文风范本(可选余华 / 鲁迅 / 汪曾祺等,或喂自己的范文、从已认可章节提取)+ ✗AI 腔→✓人话 配对反例;检测——9 类套话规则库(含专揪「脑内涟漪 / 仿佛有人在远方呼唤 / 无形的手」式空洞比喻的重罚旁路)+ 4 项句式统计(句长 burstiness / 节拍器句组 / 段落结构 / 长重复)打 AI 味指数;门禁——定稿超标自动定向去味重写、复测收敛、没改好即回退,绝不落更差版本;重写带校准纪律(只改诊断点、情绪呈现混用、留平庸句),闭环带过度矫正检测(节奏打碎到夸张/满篇一行段=反向指纹,丢弃回退);主审带叙事架构指纹清单(叙述者点题说教 / 结局"选择+接纳+成长"三脚架 / 模板转折 Echo test / 情绪呈现单一化 / 模糊指涉 / 关系全正向)——措辞干净也藏不住结构上的 AI 味。正向锚铺满续写 / 片段润色 / 整章润色所有入口;名家文风均标注"风格参考·非原作节选"(自撰仿写,不嵌原文)
  • 场景节拍 + 文风备忘:章节蓝图带 3-5 个场景节拍,正文按节拍铺场景不再松散;文风备忘随书自动累积(调性/人物声音/复现意象),注入后续章节,长篇后段不变味;不同任务自动分档采样温度
  • 已有书翻新引擎:旧章节按新逻辑重构——回填节拍、初始化文风备忘、轻度重润(锁情节)/ 重度重写(整章重跑);中途失败已完成章进度保留,可续跑剩余章节
  • 质感看板:章节地图带主审四维评分与 AI 味指数,哪章该返工一目了然
  • 时序事实时间线:全书区「时间线」页签把每个角色的时序事实画成章节区间条,谁在第几章到第几章是什么状态一眼看穿,按重要度着色、按类型过滤、点条跳章——「第 N 章时他是什么状态」的可视化版
  • 人物卡关系证据链:每条关系边带原文证据(引用到具体章节的关系型事实,新→旧最多 3 条)——关系图不只好看,还有据可查
  • 整本旧书导入(TXT / DOCX):自动识别分卷与章节标题(第X章 / 序章 / 楔子 / 番外 / 后记…),没有章标题按段落长度兜底切章;兼容 GBK 等老编码,单文件 ≤20MB;导入正文按「已定稿」入库,直接可读、可检索、可跑已有书翻新
  • 标签化倾向系统:chips + 自定义输入 + 预设模板,贯穿大纲、正文、润色三个节点,风格/节奏/基调由用户说了算
  • 创作偏好档案:文风 / 禁忌 / 读者定位 / 其他主张结构化沉淀为项目级档案,作为最高优先级约束贯穿所有生成环节;研讨中的主张可一键吸收沉淀,已生成的老书打开即自动从正文反向提炼启用
  • 字数守卫与自动拆章:定稿超标自动压缩重写,严重超标自动拆章(LLM 选断点 + 全表编号顺移 + 圣经/摘要重建),结构改动与正文同事务原子落地,中途崩溃不损坏正文
  • 编辑部回显:主审 / 校对结果留存,生成时的自动修复清单与手动待修清单打开即见,正文一旦改动自动失效,不留过期误导
  • 重写前先聊:重写前与 AI 多轮对话蒸馏出精准修改意见,再据此重写,避免"AI 猜你想要什么"
  • AI 对话真流式打字机:选段讨论、整章问答、重写研讨的回复逐字流式蹦出来(像真人敲键盘),首字未到时原地转圈,聊完自动收敛出修改意见 / 改写建议与档位建议;基于 fetch + ReadableStream 手工解帧(带鉴权),经中转站 / CDN 反代也不被攒着一次性下发
  • 全书阅读器:主题(纸张/牛皮纸/夜间)、字体、字号可调;段落级 AI 问答与润色,选中即问、采纳即替换
  • 漫剧工坊(衍生改编):把已定稿小说改编成竖屏漫剧拍摄手册——画风方向自己拍板(国漫厚涂 / 日系二次元 / 3D / 水墨 / 赛博 / 真人写实,AI 也可按书荐前三个带理由)→ 美术风格卡 / 角色卡 / 场景卡(画风锚 + 人物锚逐字注入每格分镜,保一致性;角色可出定妆照参考图提示词并上传存档,锁脸从文字提升到像素)→ 集数规划(每集开场钩子 + 结尾卡点)→ 单集剧本(对白 / 口播双模式)→ 分镜表 → 三轨绘图提示词(中文六层 / 英文 / 负面词,按你用的生图站一键粘贴:单描述框站整段版 / 双框站分开版 / MJ 参数版,手册与 CSV 同规则)→ 成片包(声线选型 + 配音稿 + 剪辑清单 + SRT 字幕,配音走平台正版音色、禁克隆他人声音)→ 预告片一键混剪(高能镜头 + 金句文案,30-60 秒),整集导出 Markdown / CSV / JSON / 成片包 / 字幕,拿去即梦 / 可灵 / MJ / 剪映出片;工作台管线步骤条 + 资产侧栏布局,沿用「只产提示词」哲学,不接生成模型
  • 多用户:JWT 登录 + 邀请码注册 + 每用户独立配置 LLM key + 数据隔离;移动端已适配
  • 公开分享链接:整本书或单章生成免登录只读链接,任何人在牛皮纸阅读页直接读(衬线正文、章内导航、页脚产品入口),可随时撤销、带浏览计数;公开面只回书名与正文,零敏感数据
  • 导出与统计:整本导出 txt / epub;token 用量统一埋点、实时统计
  • 成本与用量透明:设置页「用量与花费」按模型显示调用次数 / token / 按官方牌价折算金额(无可靠牌价的模型如实标注不编价);官方 DeepSeek 配置可实时查询上游账户余额(总余额 / 赠送额度 / 是否足够继续生成);官方峰谷定价时段提示,欠费时明确告知充值后续跑、已生成内容不丢
  • Docker 一键部署:单容器,前端产物由 FastAPI 托管,数据卷持久化;官方镜像 ghcr.io 多架构(amd64/arm64),发版自动构建,一条 docker run 即起
  • 迁移前自动备份:启动检测到数据库有 pending 迁移时,先用 SQLite backup API 快照到 migrations-backup/(保留份数可配),升级失败可手动回滚
  • 模型渠道主动限速:每套模型配置可设并发上限与 RPM(次/分钟),按「渠道+模型」全站共享计数——多人共用一个中转站时自动排队,防 429、防封号
  • 桌面版(Windows):安装包开箱即用,免登录单机运行、数据落本机;由 GitHub Actions 自动构建并发布到 Releases

快速开始

方式一:桌面版安装包(最简单 · Windows)

从 GitHub Releases 下载最新的 jarvis-write_<版本>_x64-setup.exe,双击安装即可。免登录单机运行,作品数据存在本机(%APPDATA%\jarvis-write),无需部署、无需配置数据库。首次打开后在「模型设置」里填上你自己的 LLM API key 即可开始创作。

方式一 · 五:安卓 App(远程客户端)

安卓端是 Capacitor 壳 + 你自己的 jarvis-write 服务:App 打包了移动端全部界面,数据与生成都在你的服务上。两种装法:

  • APK 直装:从 Releases 下载 jarvis-write-android-debug.apk(debug 签名,直接安装),首次打开已预置官方服务器地址,可改成自己的部署
  • PWA 免安装:浏览器打开自部署站点 → 菜单「添加到主屏幕」,同样的全屏 App 体验

APK 为 debug 签名(自用侧载定位);要上架应用商店再补正式签名。

方式二:Docker(自部署多用户服务)

拉现成镜像(推荐,amd64/arm64 都有)——每次发 v* 标签自动构建推送:

docker run -d --name jarvis-write -p 8000:8000 \
  -e APP_MODE=server -e APP_ENV=prod \
  -e INVITE_CODE=你的邀请码 -e JWT_SECRET=随机长串 \
  -e ADMIN_USERNAME=admin -e ADMIN_PASSWORD=强密码 \
  -v jarvis_write_data:/srv/data \
  ghcr.io/ynnyh/jarvis-write:latest

源码构建:

git clone https://github.com/ynnyh/jarvis-write.git
cd jarvis-write

# 配置必填环境变量(见下方"配置要点"),然后:
docker compose up --build

访问 http://localhost:8000(端口可用 PORT 环境变量覆盖)。SQLite 数据持久化在 named volume jarvis_write_data。

方式三:本地开发

# 后端(首次需建 venv、pip install -r requirements.txt、cp .env.example .env 并配 key)
cd backend && python -m app        # http://127.0.0.1:8000

# 前端(另开终端,/api 代理到 8000)
cd frontend && npm install && npm run dev   # http://localhost:5173

详细步骤、冒烟测试与目录结构见 backend/README.md。

配置要点

配置项 说明
JWT_SECRET JWT 签名密钥,必填,必须设为随机长串(公网部署否则 token 可被伪造)。APP_ENV=prod 下仍用弱默认值将拒绝启动
ADMIN_PASSWORD 初始管理员密码,必填(Docker 下无默认值;代码默认值仅限本地开发)
INVITE_CODE 注册邀请码:填对才能注册;留空则关闭注册
LLM API key 支持 DeepSeek / OpenAI / Gemini 及任意 OpenAI 兼容中转站。每个账号登录后在设置页配自己的 key——可存多套命名配置,一键切换默认(强模型档)/快档(存数据库,推荐);也可用 .env 做兜底

完整配置项见 backend/.env.example。

文档索引

🌐 在线文档站(含全部设计文档 + 本地搜索):ynnyh.github.io/jarvis-write

文档 内容
docs/00-overview.md 项目愿景、设计思路,以及与同类项目的差异化对比
docs/01-architecture.md 系统架构、代码目录结构、技术选型理由
docs/02-data-model.md 数据模型:全部表结构、字段、关系
docs/03-engines.md 核心引擎设计:一致性 / 大纲级联 / 润色 / 翻新 + 生成质量增强
docs/04-tag-system.md 标签化倾向系统:chips + 自定义输入 + 预设模板
docs/05-roadmap.md 分阶段落地路线图、验收标准与落地偏差记录
backend/README.md 后端运行、测试与目录结构细节

技术栈

  • 后端:Python 3.12 + FastAPI(REST + SSE),SQLAlchemy 2.x + SQLite,Pydantic v2
  • LLM 层:自封适配层(DeepSeek / OpenAI / Gemini,不用 LangChain),任务级模型路由(强模型/快模型分档,各选一套配置),cc-switch 风格多配置管理,瞬时错误自动重试 + 流式聚合兜底(防中转站 CDN 掐断长请求)
  • 前端:React + TypeScript + Vite
  • 部署:单容器 Docker(多阶段构建,前端产物由 FastAPI 托管在 /app)
  • 桌面版:Tauri 2 壳 + PyInstaller 冻结后端,GitHub Actions 自动构建 NSIS 安装包并发布到 Releases

项目状态与路线图

阶段 0–8 已全部完成:生成流水线与倾向拼装器、逐章生成、长程一致性引擎、大纲级联更新引擎、润色引擎、Web 前端工作台、token 统计与 txt/epub 导出、Docker 部署、多用户与移动端适配。每阶段验收结果与实现偏差见 docs/05-roadmap.md。

已知遗留项:

  • 逐 token 真流式:AI 对话(选段 / 整章讨论、重写研讨)已升级为 SSE 逐字真流式打字机,章节蓝图生成也已「逐章增量」上报进度;唯逐章正文生成因需串联多步审校(去味 / 一致性 / 字数守卫)仍走"异步任务 + 进度轮询",更适合任务化
  • 数据库当前绑定 SQLite:ORM 层用 SQLAlchemy,但全书全文检索建立在 SQLite 专有语法上(FTS5 + trigram 虚拟表、MATCH / bm25()、json_each),Postgres 无原生等价物。改 DATABASE_URL 切 Postgres 目前不可行,需先重写检索层。此前 README 标注的「可切 Postgres」是不实描述,已更正

质量与回归

  • 改动前后跑评测:python -m app.evals run --fixture po_feng_ji --label after → python -m app.evals gate <after.json>,越界即非 0 退出(可挂 CI)。门槛只锁确定性指标(AI 味 / 复读 / 事实抽取数 / blocker / 篇幅比);主审四维是 LLM 自评、默认同模型自审,只作参考。详见 CONTRIBUTING.md「Prompt 改动守则」
  • 关键环节失败是显式的:一致性检查、章后事实抽取、主审评分任一环节没跑成,都会留下 degraded 标记并隔离章节待人工复核,不会静默冒充「检查通过」

测试

# 后端:接口级 + mock LLM 全链路(独立临时库,不碰开发数据)
cd backend && python -m pytest

# 前端:lint + 构建
cd frontend && npm run lint && npm run build

另有按阶段的自检脚本(backend/scripts/stage*_test.py),详见 backend/README.md。

🫂 交流群

遇到问题、想要邀请码试用、提需求或一起折腾,欢迎进 QQ 群:

jarvis-write QQ 交流群 1006352530

QQ 群:1006352530 · 扫码进群,领邀请码免费试用

🙏 鸣谢

本项目站在许多优秀开源项目的肩上——下面这些能力借鉴了它们的思路,特此致谢(逐个读源码的完整对比见 docs/00-overview.md):

而大纲级联更新引擎、标签化倾向系统,以及把这些"零件"整合成一套连贯控制层的工作,是本项目自研的部分。

License

本项目以 Apache License 2.0 开源。Copyright 2026 ynnyh。

About

A controllable, revisable, consistency-first AI system for long-form novel writing — temporal story bible, foreshadowing scheduler, cascading outline engine, and tag-based style control wrapped around any LLM.

Topics

Resources

Contributing

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages