Profile
Back to NewsBack
GitHub Trending 3 min
Reader Mode
M1r0er/moshen: 墨参 MoShen · 个人写作 Agent — 自整理资料、自核对设定、自追踪伏笔,但不代你动笔

M1r0er/moshen: 墨参 MoShen · 个人写作 Agent — 自整理资料、自核对设定、自追踪伏笔,但不代你动笔

23 hours ago

墨参 MoShen

本地优先的个人写作 Agent:自己整理资料、自己核对设定、自己追踪伏笔,把模型放在编辑的位置,不代你动笔

version</a> license</a> ![platform]() ![python]() ![electron]()

项目定位

墨参是一个本地优先的个人写作 Agent,属于作者自己,用来管住一部长篇的里子。

把项目交给它,它会自己去读你的稿件、核对设定与人物、追还没回收的伏笔,然后把结论摆到你面前。它始终只在“编辑”的位置上工作:整理、核对、质疑、记录。这一章究竟怎么写,仍然由你决定。

它把你散落的设定、大纲、角色、伏笔与参考资料收进同一个项目,在你动笔前后提供结构、逻辑、文风与节奏上的判断,并把你的决定记录下来,供下一章延续。

它不产出正文。正文只有在你于写作页手动保存时才会写入磁盘;模型拿到的上下文用于讨论、诊断与整理,不会替你写下一章。对话中有两类写入:一类是约定标记触发的直接写入,范围限定在设定、大纲与知识库;另一类是待确认提案,模型把整理好的内容交给你,点「加入」之后才归入设定、大纲、知识库或爽爆点库。两者都会标注来源,且不会覆盖你手工维护的内容。

与一键生成型写作工具的区别

写作助手与写作 Agent 是同一类东西,不必在名字上分高下。实际要区分的是下面这条线:正文由谁来写。

| 维度 | 墨参 | 一键生成型写作工具 | |---|---|---| | 正文来源 | 由作者书写 | 由模型生成 | | AI 的角色 | 编辑、审稿、资料整理 | 代笔 | | 主动性 | 保存即巡检、主动干预、多步任务自主跑完 | 一次提示一次输出 | | 事实来源 | 区分作者事实与 AI 推断,来源可查 | 模型输出即事实 | | 数据位置 | 本机工作区文件,模型与 Key 自配 | 多为云端托管 | | 创作主导权 | 在作者 | 在模型 |

上表第二列的行为分别落在哪些功能上,见「功能总览」;具体怎么操作,见「各功能使用教程」。

界面预览

以下截图均来自产品原型(内置示例项目《长夜行》的静态样例数据,非真实项目)。

| 对话 | 写作 | | --- | --- | | 对话</a> | 写作</a> |

| 角色 · 阶段图 | 角色 · AI 观察 | | --- | --- | | 角色阶段图</a> | 角色 AI 观察</a> |

| 伏笔 | 星图 · 关系图 | | --- | --- | | 伏笔</a> | 星图关系图</a> |

| 星图 · 档案库 | 设定 | | --- | --- | | 星图档案库</a> | 设定</a> |

| 大纲 | 爽爆点 | | --- | --- | | 大纲</a> | 爽爆点</a> |

| 知识库 | 文件 | | --- | --- | | 知识库</a> | 文件</a> |

| 灵感 | | | --- | --- | | 灵感</a> | |

项目背景

让模型直接写完一章并不困难,代价却出现在后面。模型在海量平均语料上训练,输出会趋向"最平均"的表达,人物与桥段容易趋向套路;长篇小说依赖几十万字前后一致的设定与伏笔,纯生成很难长期维持;当写作被交出去之后,作者对作品的判断力与个人风格也一并交了出去。

墨参把模型放在编辑的位置上。它帮你核对前后矛盾、追踪尚未回收的伏笔、梳理人物关系、诊断文风里的"AI 味",在你偏离设定时提出质疑;这一章究竟怎么写,仍然由你决定。

功能总览

界面共 10 个页面。一级侧栏与各页目录栏都能收成窄轨,把宽度让给工作区。

| 页面 | 能做什么 | |---|---| | 对话 | 讨论大纲、人物、设定、伏笔与逻辑;流式输出;输入意图自动路由到合适的职能模型;发现问题时给出 L1 建议 / L2 质询 / L3 否决;可提出待确认提案,由你点「加入」或「忽略」后归入设定、大纲、知识库或爽爆点;单条回复可存入知识库 | | 写作 | 富文本正文编辑器(粗体 / 斜体 / 下划线、首行缩进、标蓝);实时字数与保存状态;章节创作流程状态机与门禁;正文中提到的角色条目自动标蓝,点击即见该角色档案与当前阶段;AI 审稿(单章 / 全书)输出设定一致性、人物 OOC、逻辑因果、节奏、文风与伏笔的问题清单;单章与全文伏笔检测、回收检测;保存后自动巡检 | | 角色 | 三个子页:阶段图、角色档案、AI 观察。角色 = 档案 + 阶段节点 + 事件连线 + AI 观察收件箱。阶段图可拖拽摆位、手动增删阶段与连线,连线标注这一阶段到下一阶段经历的事件;AI 分阶段解析按正文把角色拆成成长阶段(档位为粗略 / 标准 / 细致,只控制切分粒度,不预设阶段数量);「AI 观察」收纳保存章节时自动提取的提及与新别名,逐条采纳或忽略;设定页的人物条目可一键「添加到角色页」 | | 伏笔 | 伏笔台账:登记每条伏笔的埋设与回收条目,按状态与时间排序,未回收的排在前面 | | 星图 | 从稿件抽取角色 / 世界 / 势力 / 地点 / 事件 / 道具六类实体及关系;分析档位分快速 / 标准 / 深度,文本来源可选写作模块章节、已上传文件或粘贴文本;重新分析采用增量更新(只提交变更补丁,可随剧情增删,不会整份重写已有设定,也不覆盖你手动维护的内容);3D 关系图支持拖拽旋转、拖拽节点、滚轮缩放,右键节点或连线直接编辑;档案库可手动增删条目与关系;出品风格档案(可选)为同一本书统一肖像画风;可选人物肖像生成;画布背景可自定义 | | 设定 | 多级设定目录树;按类别筛选加标题关键词搜索;内容可切换「预览 / 编辑」,预览按 Markdown 渲染;AI 优化后可应用结果或另存为新设定;可移动到其他父节点;从文档导入提取设定;导出 txt / md / html / docx | | 大纲 | 节点与连线式大纲,区分主线与支线;节点与连线均可编辑与删除 | | 爽爆点 | 大纲页的子页面:按剧情段 / 副本登记爽点、爆点、钩子等,记录每个点用了多少次,附审美疲劳提示;可用 AI 检查已写正文,核对并修正使用次数 | | 知识库 | 上传本地文件(txt / md / docx)分析整理;「网络搜索」按知识类型与关键词生成参考文档;从对话消息存入;条目可编辑、删除 | | 灵感 | 指定灵感文件夹,浏览并读取其中的常见文本与 Word 文档 | | 文件 | 上传 txt / md / docx;文风诊断、逻辑检查、冲突值计算、全面诊断;拆文分析;蒸馏学习 |

贯穿各页的能力:

| 能力 | 说明 | |---|---| | 设置 | 工作区路径;写作设置(自动章节编号模式、自动伏笔检测、实时更新条目);多组 API 渠道与按职能分配模型;图像生成 API(含肖像风格一致性);连通性检测 | | 项目工作区 | 每个项目可单独绑定一个本地文件夹,其中的文档参与对话分析与设定参考 | | 长任务进度 | 星图分析、拆文蒸馏、AI 审稿、角色分阶段解析都带实时进度,可暂停 / 继续 / 停止,也可收起后在后台继续跑 | | 上下文与租约 | 上下文按预算与优先级注入,被截断的部分会显式告知;项目重新打开后旧会话租约立即失效 | | 语言 | 界面语言与写作语言相互独立,各自切换并保存 |

各功能使用教程

下面的操作路径都以「已有一组可用模型、已选中一个项目」为前提。安装与启动见「快速开始」,模型与密钥的约定见「模型配置」。

准备:配置一个可用的模型

  1. 点左下角「设置」。
  2. 在「已保存的 API」区域点「+ 添加 API」,填 Base URL、API Key 与模型名。
  3. 需要给不同职能配不同模型时,展开「职能独立 API Key」逐项填写;只配默认渠道也可以,未单独指定的职能会按降级链自动挑选。
  4. 点「检测」验证连通性,再点「保存」。
保存后状态栏的连接指示会显示为已连通,对话页可以开始收发消息。

准备:新建项目并绑定项目工作区

  1. 在左侧「项目」区点「+ 新建项目」,输入名称后点「创建」。
  2. 把鼠标移到项目上,点它右侧的齿轮按钮打开「设置项目工作区」。
  3. 在弹窗里点「浏览」选择本地文件夹,也可直接输入完整路径,然后点「确认」。
  4. 想解绑时重新打开该弹窗,点「清除」。
绑定后,这个文件夹里的文档会作为对话分析与设定参考的素材。

对话:讨论并把提案落地

  1. 在底部输入框写下问题(人设、情节走向、逻辑疑点等),点「发送」或按回车。
  2. 输入会先经过意图路由,自动挑一个合适的职能模型回答,回复流式输出。
  3. 若模型给出了待确认提案,卡片上会出现「加入」与「忽略」;「加入」会写入设定、大纲、知识库或爽爆点,「忽略」则收起该提案。
  4. 想留下某条回复,点该条消息下的「存入知识库」,补上标题与类别后点「保存」。
完成后对应页面会立刻出现新条目,来源标为 ai。

写作:新建章节、写作与保存

  1. 进入「写作」页,在左侧目录点「+ 卷」新建卷,再点卷上的「+」新建章节。
  2. 在章节头填写卷号 / 卷名与章号 / 章名;章号会按「设置 → 写作设置」里的自动章节编号模式预填。
  3. 在正文区写作。工具栏提供粗体、斜体、下划线,以及默认开启的「缩进」和可切换的「标蓝」。
  4. 点底部「保存」写入磁盘;要接着往下写,点「保存并新建下一章」,它会保存当前章并新建下一章。
  5. 状态栏显示当前字数与保存状态(有未保存改动 / 已保存 / 尚未保存)。
删除章节:鼠标移到左侧章节上点「×」;删除整卷点卷标题右侧的「×」。

写作:章节流程与门禁

  1. 新章节初始为「未开始」,点「标记草稿」进入草稿。
  2. 草稿状态下点「标记已审稿」;也可以先跑一次审稿,再在报告里点「标记为已审稿」。
  3. 审稿后点「标记已修稿」,再点「定稿」。
  4. 已定稿章节只读,需要改动时先点「重置」。
状态只向前推进,回退必须显式重置;草稿不能跳过审稿直接定稿;改动已审稿或已修稿的正文,该章会退回草稿并提示重新审稿。

写作:AI 审稿

  1. 打开要审的章节,点底部「审稿」。
  2. 等待报告生成,过程中可以收起进度条让它继续在后台跑。
  3. 报告按设定一致性、人物 OOC、逻辑因果、节奏、文风与伏笔分组列出问题。
  4. 点报告里的「标记为已审稿」,把这次结论记进章节流程状态。
报告会同时写入工作区的 reports/ 目录与知识库。

写作:伏笔检测与回收检测

  1. 点「伏笔(单章)」检测当前章,或点「伏笔(全文)」扫全书。
  2. 结果弹窗里每条都标着「新伏笔」或「已有伏笔」,点「添加到伏笔页」写入台账。
  3. 点「回收检测」核对已埋伏笔的回收情况。

写作:标蓝与实时信息卡

  1. 确认工具栏的「标蓝」处于开启状态,右侧会提示已标出多少处。
  2. 正文里出现的角色名与别名会被标蓝;点任意一处蓝色文字,弹出实时信息卡,显示该角色当前阶段与别名等信息。
  3. 卡片里可以直接跳到角色页。
标蓝只影响显示,不改动正文,也不打断输入与输入法。

写作:保存后的自动巡检

  1. 打开「设置 → 写作设置」,按需打开「自动伏笔检测」与「实时更新条目」两个开关,点「保存」。
  2. 回到写作页正常保存章节。
  3. 状态栏右侧显示自动同步中,完成后给出本轮结果。
伏笔结果直接生效;条目观察只排进角色页的「AI 观察」收件箱,采纳后才写进阶段或别名,忽略即隐藏,不会改动设定页。两项同时开启会合并为一次调用,同一段正文只送模型一遍;同一章内容没有变化时跳过,不重复消耗。

角色:建档、别名与档案

  1. 在角色页左侧点「+ 角色」新建角色,或从设定页的人物条目点「添加到角色页」带入(重复点只补充别名,不重复建档)。
  2. 左侧列表可按角色名或别名搜索。
  3. 切到「角色档案」子页,填写基础信息;在「别名」一行点「+ 添加别名」,正文里出现这些称呼同样会标蓝。

角色:阶段图与 AI 分阶段解析

  1. 切到「阶段图」子页,点「+ 添加阶段」手动建阶段节点,拖动节点摆位,点「重排画布」恢复自动布局。
  2. 选中阶段后可以「删除阶段」;选中连线可以「删除连线」,连线标注的是从这一阶段到下一阶段经历的事件。
  3. 想按正文自动切分,在角色页顶部标签行右侧的档位下拉里选「粗略 / 标准 / 细致」(只控制切分粒度,不规定阶段数量),再点「AI 分阶段解析」。
  4. 解析过程中可以收起进度条,完成后阶段节点会出现在画布上。
档位下拉与「AI 分阶段解析」在三个子页都可见。

角色:AI 观察收件箱

  1. 切到角色页顶部的「AI 观察」子页;有待处理条目时标签上会显示数量,左侧栏底部也有「AI 观察 N 条待处理」的入口。
  2. 每条观察都带着出现的章节与正文片段,并标注是否吻合已有阶段、是否疑似新别名。
  3. 逐条处理:吻合已有阶段时可以点「追加到某阶段」把片段并进去,点「记为新阶段」新建阶段节点,点「并入别名」写进别名表,点「忽略」永久隐藏。
  4. 勾上「显示已处理」可以回看被采纳或忽略的记录。
收件箱里的内容优先级低于手动维护的内容,采纳前不会写进档案,也不会改动设定页。

设定:新建、筛选与编辑

  1. 左侧目录点「+ 新建」建条目,或把鼠标移到已有条目上点「+」加子项。
  2. 用类别标签(全部 / 世界观 / 人物 / 地区 / 物品 / 剧情 / 力量体系 / 其他)加标题关键词搜索来缩小范围。
  3. 点中条目后,右侧「设定内容」默认按 Markdown 预览;点右上角的「编辑」切到文本框,写完点「预览」或直接「保存修改」,保存后自动回到预览。
内容为空时会显示「暂无内容,点击此处开始编写」的提示,点它即可进入编辑。

设定:AI 优化与迁移

  1. 内容写好一部分后点「AI 优化」,结果出现在下方可编辑的文本框里。
  2. 满意就点「应用优化结果」替换原内容,或点「保存为新设定」另存一条。
  3. 要把条目换个父节点,点「移动到」,选目标后点「移动」。
角色类条目(类别为人物)会在按钮行多出一个「添加到角色页」,一键把它带进角色页。

设定:导入与导出

  1. 先把素材文档上传到「文件」页(导入的来源是已上传文档)。
  2. 回到设定页,点侧栏底部的「导入」,在「从文档导入设定」里选「选择文档」与「提取类别」,需要时再指定「父级目录」,点「开始提取」。
  3. 点「导出」选择格式(txt / md / html / docx)导出当前设定树。

伏笔:台账维护

  1. 左侧列表点「+ 新增」,填「伏笔名」与「伏笔内容」,点「创建」。
  2. 在右侧详情里登记「出现记录」:点「+ 添加」,填出现的具体内容与出现章节(如「第3章 初遇」),点「添加」;点某条记录右侧的「×」删除它。
  3. 状态在「未回收」与「已回收」之间切换;回收后在「回收章节」里写明在哪一章回收(如「第10章 真相大白」)。
  4. 列表按状态与时间排序,未回收的排在前面;不需要的伏笔在详情右上角点「删除」。

星图:分析与增量更新

  1. 进入「分析」子页,先选分析档位(快速 / 标准 / 深度)与文本来源(写作模块章节 / 已上传文件 / 粘贴文本)。
  2. 选「已上传文件」时先到「文件」页上传 txt / md / docx,回来点「刷新」,再勾选要分析的文件。
  3. 点「开始分析」,过程中带实时进度。
  4. 再次分析已有数据时,会先弹出确认框,选「保留手动内容」或「覆盖手动内容」。
增量更新只提交变更补丁,不会整份重写已有设定,逐字段更新,可随剧情增删。

星图:关系图与档案库

  1. 「关系图」子页用鼠标拖拽旋转视角、拖拽节点调整位置、滚轮缩放。
  2. 右键节点或连线可直接编辑;空白处右键可新建条目或关系。
  3. 「档案库」按类型列出全部条目,点「+ 新增条目」补充,点「编辑条目」改内容,点「加关系」连到别的条目,点「删除」移除。
手动维护的内容在重新分析时不会被覆盖。

星图:出品风格档案与肖像

  1. 在「分析」子页打开「出品风格档案」,它会识别本书题材(玄幻 / 仙侠 / 机甲科幻等),让所有肖像共用同一套画风、上色与光影。
  2. 点「手动调整」可直接改题材与风格字段,改完点「保存」。
  3. 生成肖像:在「分析」子页点「生成角色肖像」批量生成已有的人物;单张生成可以在「关系图」里右键节点点「更新肖像图」,或在「档案库」的条目详情里点「生成肖像」(已有肖像时为「重绘肖像」)。
  4. 画布背景:在「关系图」的右键菜单里打开背景设置,点「选择图片…」上传,或点「本页恢复默认」「全部恢复默认」。
肖像使用「设置 → 图像生成 API」里配置的接口,需要兼容 OpenAI 的 /images/generations。

大纲:节点与连线

  1. 「大纲图」子页点「+ 添加节点」建节点,填写标题与内容。
  2. 拖动节点摆位,并按主线 / 支线区分;点「刷新」重新载入。
  3. 选中节点或连线后,在右侧面板可以编辑,也可以点「删除」。
「爽爆点」是大纲页的另一个子页。

爽爆点:登记与次数检查

  1. 点「+ 新增爽爆点」登记一条,填写标题、类型(爽点 / 爆点 / 钩子 / 情绪点 / 悬念 / 转折 / 其他)、套路与所属剧情段或副本。
  2. 每条记录已用次数,用「+1 使用」与「-1」手动增减;用得多会给出审美疲劳提示,疲劳阈值可以直接在筛选栏改。
  3. 点「AI 检查使用次数」,让它读已有正文核对实际出现次数并给出修正建议,逐条点「应用」采纳,看到「一致」则跳过。
  4. 筛选栏支持按标题 / 内容 / 套路搜索,并按类型、状态与剧情段 / 副本过滤。
  5. 点「编辑」改内容,点「删除」移除。

知识库:两条入库路径

本地文件:在「本地文件」页签点上传区选择或拖入 txt / md / docx,等待 AI 分析成条目。

网络搜索:切到「网络搜索」页签,选知识类型(完本小说 / 游戏设定 / 背景故事 / 其他),填搜索关键词(例如「原神世界观设定」),点「搜索并分析」。

另外,对话里的单条回复可以点「存入知识库」直接入库。条目详情页可以「编辑」「保存」「返回」「删除」。

灵感:指定并读取文件夹

  1. 在灵感页侧栏点「设置」,在弹窗里点「浏览」选文件夹(或直接填路径),点「确认」。
  2. 侧栏会列出该文件夹里的文本与 Word 文档,点文件名即可读取内容。
  3. 想换文件夹,重新点「设置」修改即可。

文件:上传、诊断与蒸馏

  1. 点「上传文件」选 txt / md / docx,或把文件拖进窗口。
  2. 卡片上点「打开」进入详情;点「星图分析」把这份文件直接送去星图。
  3. 进入详情后可以点「打开文件」预览正文,选诊断类型(全面诊断 / 文风诊断 / 逻辑诊断 / 冲突值分布)点「拆文分析」;填好章节数上限后点「蒸馏学习」,逐章提取事实卡(0 表示不限章节数)。

界面:侧栏收起与语言

  • 点侧栏顶部的「«」把一级侧栏收成窄轨,「»」展开;各页目录栏右上角有同样的收起按钮。
  • 左下角「设置」里的语言区可以分别切换界面语言与写作语言,两者互不影响。

快速开始

安装版

安装包由 npm run build:electron 生成,产物为 release/ 下的 墨参 MoShen-Setup-<版本>.exe,双击安装即可。运行不需要本机安装 Node.js 或 Python——后端已随安装包打包,由 Electron 在启动时拉起。

源码运行

需要 Node.js 18+ 与 Python 3.10+。

npm install
npm run dev

start.bat 等价于开发调试入口。窗口打开后,Python 后端在后台启动。

构建

# 1. 打包 Python 后端(PyInstaller → dist/moshen-server)
npm run build:python

2. 免安装版(→ release/win-unpacked)

npx electron-builder --win --dir --publish never

3. NSIS 安装包(→ release/)

npm run build:electron

模型配置

墨参使用任意 OpenAI 兼容接口,DeepSeek、Claude、GPT、Qwen、Ollama 等均可接入。配置按职能分配模型,保存在 ~/.moshen/.env。

| 角色 | 用途 | 建议 | |---|---|---| | TEXT_MASTER | 文学分析、文风诊断 | 文字能力最强的模型 | | STRUCTURE_ANALYST | 结构分析、逻辑检查、干预评估 | 推理能力强的模型 | | KNOWLEDGE_BUILDER | 拆书、知识提取 | 快速低成本模型 | | DIALOGUE_PARTNER | 日常对话、创意讨论 | 均衡模型 | | NOVEL_ANALYZER | 星图实体与关系抽取 | 推理能力强的模型 | | IMAGE_GENERATOR | 人物肖像的绘画提示词(图像接口需兼容 /images/generations) | 可复用聊天 API |

只配置一组即可使用:未单独指定时按降级链自动挑选,auto 模式还会结合输入长度与意图,在同一渠道的多个模型之间选择。设置页可以管理多组 API 渠道。

密钥字段的约定:后端不会把你已保存的密钥回传给界面,输入框默认留空并标记「已设置」。留空保存 = 保持不变(只改模型名、温度等不会影响密钥);若要删除某个密钥,点该字段的「清除」按钮再保存。

语言

界面语言与项目写作语言相互独立,各自切换并保存。

界面语言只影响按钮与标签的文案;写作语言会写进系统提示词,决定模型用什么语言创作。你粘贴的作者原文与参考资料在任何语言设置下都保持原样,不被翻译或改写。系统提示词中的语言约定、结构化输出协议与作者事实优先级属于不可覆盖的合同,用户配置与写作模板都改不动它们。

当前内置简体中文与 English 两套界面文案,覆盖导航与主要状态提示,其余页面文案仍在补齐。

数据、隐私与边界

| 数据 | 位置 | |---|---| | 项目资料(设定、大纲、伏笔、正文、对话、报告、星图、爽爆点) | 你选择的工作区目录,纯文件存储(JSON / Markdown / HTML) | | 模型配置与 API Key | ~/.moshen/.env | | 工作区、灵感文件夹、语言与写作设置 | ~/.moshen/workspace.json |

几条约定:

  • 墨参不提供模型额度,也不托管稿件;请求发往你自己配置的服务商。
  • API Key 只保存在 ~/.moshen/.env,接口不会把已保存的密钥回传给界面(一律以掩码返回);设置页只显示「已设置」状态,留空即保持不变。
  • 文件写入采用原子替换(临时文件 + fsync + 重命名),读取-修改-写入序列串行执行,避免文件损坏与并发覆盖。
  • 设定、大纲与伏笔记录带来源标注 author / ai;墨参不能覆盖你手工维护的内容,遇到冲突会提示,而不是悄悄改写。
  • 自动巡检产生的条目观察默认只是收件箱里的待办,采纳后才会写进角色的阶段或别名,不会改动设定页。
  • 对话中的写入分两类:标记触发的直接写入只覆盖设定、大纲、知识库;其余内容走待确认提案,需你点「加入」才会落地。
  • 项目被重新打开后,旧窗口持有的会话租约立即失效,其写入会被拒绝,避免过期上下文污染新会话。
  • 上下文按预算与优先级注入,被截断或省略的部分会显式告知模型与用户,不做静默丢弃。

项目结构

moshen/
├── electron/
│   ├── main.js                    # Electron 主进程(窗口管理 + Python 子进程)
│   ├── preload.js                 # 渲染进程桥接
│   └── splash.html                # 启动页(品牌动画)
├── backend/
│   ├── server.py                  # 后端服务启动器(Electron 模式入口)
│   ├── desktop.py                 # 桌面入口(PyWebView 备选方案)
│   ├── main.py                    # FastAPI 应用与会话租约校验
│   ├── requirements.txt
│   ├── core/                      # 核心层
│   │   ├── config.py              # 多模型配置与渠道
│   │   ├── llm_provider.py        # LLM 调用(流式、断流重试、结束原因)
│   │   ├── prompt_loader.py       # 提示词加载
│   │   ├── context_manager.py     # 四层上下文(请求级)
│   │   ├── context_builder.py     # 分节预算组装与缺口说明
│   │   ├── safe_io.py             # 原子写与写锁
│   │   ├── session.py             # 项目会话租约
│   │   ├── file_parser.py         # 文件解析(含 .docx)
│   │   ├── resource_path.py       # 资源路径解析(开发 / 打包)
│   │   └── utils.py               # 通用工具
│   ├── engines/                   # 引擎层
│   │   ├── dialogue_manager.py    # 对话编排
│   │   ├── intent_router.py       # 意图路由
│   │   └── intervention.py        # 主动干预评估
│   ├── knowledge/                 # 知识层
│   │   ├── project_kb.py          # 项目知识库
│   │   ├── flow.py                # 章节创作流程状态机
│   │   ├── character_kb.py        # 角色页:阶段 / 事件 / AI 观察收件箱
│   │   ├── plot_points.py         # 爽爆点库与使用次数统计
│   │   ├── rules_kb.py            # 创作规范库
│   │   ├── novel_analyzer.py      # 可选拆书引擎
│   │   └── relation_graph_render.py
│   ├── analysis/                  # 分析层
│   │   ├── base.py                # 分析器基类(模板方法)
│   │   ├── tasks.py               # 通用任务进度通道
│   │   ├── relation_graph_analyzer.py
│   │   ├── foreshadowing_analyzer.py
│   │   ├── character_stage.py     # 角色分阶段解析
│   │   ├── style_profile.py       # 本书出品风格档案(肖像风格一致性)
│   │   ├── chapter_split.py
│   │   ├── portrait.py
│   │   └── progress.py
│   ├── routes/                    # 路由层
│   │   ├── chat.py                # 对话
│   │   ├── writing.py             # 写作、AI 审稿、保存后自动巡检、流程门禁
│   │   ├── character.py           # 角色页与 AI 观察
│   │   ├── flow.py                # 创作流程
│   │   ├── foreshadowing.py       # 伏笔
│   │   ├── relations.py           # 星图与出品风格档案
│   │   ├── settings_writer.py     # 设定
│   │   ├── outline.py             # 大纲
│   │   ├── plot_points.py         # 爽爆点与 AI 使用次数检查
│   │   ├── knowledge.py           # 知识库
│   │   ├── files.py               # 文件与诊断
│   │   ├── workspace.py           # 工作区与偏好
│   │   ├── project.py             # 项目管理
│   │   ├── conversation.py        # 对话历史
│   │   ├── tasks.py               # 任务进度 SSE
│   │   └── session.py             # 会话租约
│   └── prompts/                   # 提示词模板
│       ├── system_persona/        # 墨参人格
│       └── system_contract/       # 不可覆盖的系统合同
├── frontend/
│   ├── index.html                 # Vue 3 前端(单文件)
│   ├── vue.global.js              # Vue 3 运行时
│   ├── assets/ink/                # 启动动画与等待动画素材
│   └── vendor/three.min.js        # three.js(关系图可视化)
├── tools/                         # 动画素材处理脚本
├── moshen.spec                    # PyInstaller 打包配置
├── package.json                   # Electron + electron-builder 配置
├── start.bat                      # 开发模式启动脚本
└── README.md

技术栈

  • 桌面:Electron + electron-builder
  • 后端:Python 3.10+ / FastAPI / uvicorn / PyInstaller
  • 前端:Vue 3(单文件 HTML)+ three.js
  • 模型:OpenAI 兼容接口,流式输出,具备断流重试与结束原因识别
  • 存储:工作区文件,原子写 + 写锁

已知限制

  • 不生成正文,也不提供"一键成书";选题、创意与事实核查仍由你负责。
  • 星图分析、文风诊断与拆书蒸馏的质量取决于所配模型,结论需要你复核。
  • 人物肖像需要兼容 /images/generations 的接口,未配置时该项不可用。
  • 界面文案仅覆盖简体中文与 English,且英文覆盖尚不完整。
  • 安装包尚未代码签名,Windows 可能显示发布者信誉提示。
  • 当前只提供 Windows 构建。

参与开发

欢迎提交 issue 与 PR。提交前请确认:

  1. 后端可编译:python -m compileall backend
  2. 前端内联脚本语法正确;
  3. 若改动版本号,需同步 package.json、backend/main.py(FastAPI 与 /api/health)、frontend/index.html 三处。

致谢

架构与产品思路受以下开源项目启发:

许可证

MIT

Chat with me