moshen
Health Gecti
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 50 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
墨参 MoShen · 个人写作 Agent — 自整理资料、自核对设定、自追踪伏笔,但不代你动笔
项目定位
墨参是一个属于你自己的个人写作 Agent。它不是一个等你发问的聊天框——把项目交给它,它会自己去读你的稿件、自己去核对设定与人物、自己去追还没回收的伏笔,然后把结论摆到你面前。这一章究竟怎么写,仍然由你决定。
它把你散落的设定、大纲、角色、伏笔与参考资料收进同一个项目,在你动笔前后提供结构、逻辑、文风与节奏上的判断,并把你的决定记录下来,供下一章延续。
它不产出正文。正文只有在你于写作页手动保存时才会写入磁盘;模型拿到的上下文用于讨论、诊断与整理,不会替你写下一章。对话中有两类写入:一类是约定标记触发的直接写入,范围限定在设定、大纲与知识库;另一类是待确认提案,模型把整理好的内容交给你,点「加入」之后才归入设定、大纲、知识库或爽爆点库。两者都会标注来源,且不会覆盖你手工维护的内容。
为什么是写作 Agent,而不是写作助手
助手等你提问,Agent 自己开工。差别落在这些具体行为上:
| 行为 | 墨参怎么做 |
|---|---|
| 保存即巡检 | 你每次保存章节,它会用一次调用同时产出两类结果:新埋 / 回收的伏笔直接进伏笔台账,对已知角色的提及与状态变化排进角色页的「AI 观察」收件箱 |
| 主动干预 | 发现逻辑漏洞、设定矛盾、节奏问题时不等你问,按 L1 建议 / L2 质询 / L3 否决三级主动提出 |
| 自己跑长任务 | 星图分析、拆书蒸馏、AI 审稿、角色分阶段解析都会自己走完整流程,带实时进度,可暂停 / 继续 / 停止,也可收起后继续在后台跑 |
| 自己决定喂什么给模型 | 审稿只送设定树 + 人物档案 + 大纲 + 待审正文;角色分阶段只送提到该角色的章节;同一章内容没变就跳过,不重复烧 token |
| 自己落盘并交回执 | 报告写进 reports/ 并同步进知识库,任务失败会带回失败原因供你重试 |
| 自己维护一致性 | 同一本书的肖像共用一份经题材识别的画风档案;正文里出现角色条目时自动标蓝,点开即见该角色当前阶段 |
它仍然只在"编辑"的位置上工作:整理、核对、质疑、记录,不代笔。
与一键生成型写作工具的区别
| 维度 | 墨参 | 一键生成型 AI 写作工具 |
|---|---|---|
| 正文来源 | 由作者书写 | 由模型生成 |
| AI 的角色 | 编辑、审稿、资料整理 | 代笔 |
| 主动性 | 保存即巡检、主动干预、多步任务自主跑完 | 一次提示一次输出 |
| 事实来源 | 区分作者事实与 AI 推断,来源可查 | 模型输出即事实 |
| 数据位置 | 本机工作区文件,模型与 Key 自配 | 多为云端托管 |
| 创作主导权 | 在作者 | 在模型 |
项目背景
让模型直接写完一章并不困难,代价却出现在后面。模型在海量平均语料上训练,输出会趋向"最平均"的表达,人物与桥段容易趋向套路;长篇小说依赖几十万字前后一致的设定与伏笔,纯生成很难长期维持;当写作被交出去之后,作者对作品的判断力与个人风格也一并交了出去。
墨参把模型放在编辑的位置上。它帮你核对前后矛盾、追踪尚未回收的伏笔、梳理人物关系、诊断文风里的"AI 味",在你偏离设定时提出质疑;这一章究竟怎么写,仍然由你决定。
功能
界面共 10 个页面(一级侧栏与各页目录栏都可以收起成窄轨,把空间让给工作区)。
| 页面 | 能做什么 |
|---|---|
| 对话 | 讨论大纲、人物、设定、伏笔与逻辑;流式输出;输入意图自动路由到合适的职能模型;发现问题时给出 L1 建议 / L2 质询 / L3 否决;可提出待确认提案,由你点选后归入设定、大纲、知识库或爽爆点 |
| 写作 | 富文本正文编辑器,自动保存,实时字数与保存状态;正文中提到的角色条目自动标蓝,点开即见该角色档案与成长阶段;AI 审稿(单章 / 全书)给出设定一致性、人物 OOC、逻辑因果、节奏、文风与伏笔的问题清单;单章与全文伏笔检测、回收检测;章节创作流程管理;保存后自动巡检(见下) |
| 角色 | 角色 = 档案 + 阶段节点 + 事件连线 + AI 观察收件箱。阶段图可拖拽摆位、手动增删阶段与连线,连线标注"从这一阶段到下一阶段经历的事件";AI 分阶段解析按正文把角色拆成成长阶段(档位只控制切分粒度,不预设阶段数量);「AI 观察」收纳保存章节时自动提取的提及与新别名,逐条采纳或忽略;设定页的人物条目可一键「添加到角色」 |
| 伏笔 | 伏笔台账:记录埋设与回收、按状态与时间排序,未回收的排在前面 |
| 星图 | 从稿件抽取角色 / 世界 / 势力 / 地点 / 事件 / 道具六类实体及关系;重新分析采用增量更新(AI 只提交变更补丁,逐字段更新、可随剧情增删,不会整份重写已有设定);也可手动新增、编辑、删除条目与关系;3D 关系图支持拖拽旋转、拖拽节点、滚轮缩放,右键节点或连线可直接编辑;条目档案可手动补充;手动维护的内容不会被 AI 覆盖;出品风格档案(可选)为同一本书统一肖像画风;可选人物肖像生成 |
| 设定 | 多级设定目录树、按类别筛选 + 标题关键词搜索、AI 优化、从文档提取设定、导出 txt / md / html / docx |
| 大纲 | 节点与连线式大纲,区分主线与支线 |
| 爽爆点 | 大纲页的子页面:按剧情段 / 副本登记爽点、爆点、钩子等,记录每个点用了多少次,附审美疲劳提示,并可用 AI 检查已有正文修正使用次数 |
| 知识库 | 本地文件分析整理、按关键词生成参考文档、从对话保存、重新分析 |
| 灵感 | 指定灵感文件夹,浏览并读取其中的常见文本与 Word 文档 |
| 文件 | 上传 txt / md / docx;文风诊断、逻辑检查、冲突值计算、全面诊断;拆书蒸馏 |
保存后的自动巡检
在「设置 → 写作偏好」里有两个开关(默认关闭,开启会消耗 token):
- 自动伏笔检测:核对本章新埋与回收的伏笔,直接更新伏笔台账;
- 实时更新条目:提取本章对已知角色的提及、状态变化与新别名。
两项都开启时合并为一次调用,同一段正文只送模型一遍;同一章内容没有变化时跳过,不重复消耗。伏笔结果直接生效,条目观察只排进角色页「AI 观察」收件箱——采纳后才写进阶段或别名,忽略即隐藏,不会改动设定页。
创作流程与门禁
写作页把"规划 → 草稿 → 审稿 → 修稿 → 定稿"落成显式的章节状态,并记录每次变迁:
- 状态只向前推进,回退需要显式重置;
- 草稿不能跳过审稿直接定稿;
- 「审稿」既可以用页面里的 AI 审稿生成问题清单(报告同时落进
reports/与知识库),也可以自行标记; - 已定稿章节只读,改动前必须重置;
- 修改已审稿或已修稿的正文,该章会退回草稿并提示重新审稿。
快速开始
安装版
安装包由 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。提交前请确认:
- 后端可编译:
python -m compileall backend - 前端内联脚本语法正确;
- 若改动版本号,需同步
package.json、backend/main.py(FastAPI 与/api/health)、frontend/index.html三处。
致谢
架构与产品思路受以下开源项目启发:
- tianming-skill by 子夜
- harnessNovel by XTmingyue
- AI-Novel-Writer by EthanYoQ
许可证
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi