{"id":48959185,"url":"https://github.com/91zgaoge/storyforge","last_synced_at":"2026-06-12T21:01:10.398Z","repository":{"id":350591612,"uuid":"1207507435","full_name":"91zgaoge/StoryForge","owner":"91zgaoge","description":"🌿 StoryForge (草苔) — AI导演式小说创作系统。Tauri+Rust驱动的桌面写作软件，集成知识图谱、伏笔追踪、StyleDNA风格引擎、协同编辑、7阶段全自动创作工作流。让AI成为你的创作搭档，越写越懂你。","archived":false,"fork":false,"pushed_at":"2026-06-11T00:31:13.000Z","size":23702,"stargazers_count":31,"open_issues_count":1,"forks_count":8,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-11T02:19:15.416Z","etag":null,"topics":["ai-writing-assistant","collaborative-editing","creative-writing","desktop-app","fiction-writing","knowledge-graph","llm","markdown-editor","narrative-design","novel-writing","ollama","openai","operational-transformation","prosemirror","react","rust","sqlite","tauri","typescript","writing-software"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/91zgaoge.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":"AUDIT_GAP_REPORT_v5.1.md","citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-11T02:58:27.000Z","updated_at":"2026-06-11T00:31:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/91zgaoge/StoryForge","commit_stats":null,"previous_names":["91zgaoge/storyforge"],"tags_count":63,"template":false,"template_full_name":null,"purl":"pkg:github/91zgaoge/StoryForge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/91zgaoge%2FStoryForge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/91zgaoge%2FStoryForge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/91zgaoge%2FStoryForge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/91zgaoge%2FStoryForge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/91zgaoge","download_url":"https://codeload.github.com/91zgaoge/StoryForge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/91zgaoge%2FStoryForge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34262157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-writing-assistant","collaborative-editing","creative-writing","desktop-app","fiction-writing","knowledge-graph","llm","markdown-editor","narrative-design","novel-writing","ollama","openai","operational-transformation","prosemirror","react","rust","sqlite","tauri","typescript","writing-software"],"created_at":"2026-04-18T01:06:27.706Z","updated_at":"2026-06-12T21:01:10.389Z","avatar_url":"https://github.com/91zgaoge.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/logo.png\" alt=\"StoryForge 草苔\" width=\"120\" /\u003e\n\u003c/p\u003e\n\n# StoryForge (草苔) — AI 辅助小说创作系统\n\n\u003e 🌿 越写越懂的 AI 小说创作桌面应用\n\u003e\n\u003e 专为小说作者打造的创作工作台：幕后管理故事/角色/场景/世界观，幕前沉浸式写作，AI 在需要时随行辅助。\n\n[![Version](https://img.shields.io/badge/version-v0.10.0-gold)](./CHANGELOG.md)\n[![License](https://img.shields.io/badge/license-ISC-blue.svg)](./LICENSE)\n\n**最新动态**：v0.10.0 实现「能力发现与自动编排」：技能、方法论、43 个网文体裁画像、Style DNA 统一注册为可发现资产，模型在小说世界生成、章节规划、正文写作各阶段自动选择并应用创作策略；GenesisPipeline 概念生成后自动选择体裁画像、方法论、风格 DNA 并持久化到故事；Planner 与 Writer prompt 自动注入已选策略上下文，43 个网文模板真正参与智能创作；前端创建向导新增 AI 推荐策略确认步骤，故事卡片与编辑表单支持查看和人工覆盖策略。完整报告见 [`CHANGELOG.md`](./CHANGELOG.md)。`cargo test` 332/332 通过，`vitest` 116 passed。\n\n---\n\n## 📖 用户指南\n\n\u003e 以下基于当前版本实际界面截图整理，持续更新。完整图文版见 [`docs/USER_GUIDE.md`](./docs/USER_GUIDE.md)。\n\n### 一、产品概览\n\n**草苔 StoryForge** 将创作流程分为两大空间：\n\n| 空间 | 作用 | 适合场景 |\n|---|---|---|\n| **幕后（Backstage）** | 管理故事、角色、场景、世界观、AI 配置 | 规划、整理素材、配置模型 |\n| **幕前（Frontstage）** | 沉浸式写作界面，专注正文创作 | 码字、与 AI 对话续写 |\n\n核心思路：幕后把创作要素结构化管好，幕前让你专注写字，AI 在需要时介入，不打断心流。\n\n---\n\n### 二、幕前写作界面\n\n![幕前写作](docs/product-screenshots/00_frontstage.png)\n\n极简、全屏的写作环境，唯一目的就是让你专注码字。\n\n#### 顶部状态栏\n\n| 元素 | 作用 |\n|---|---|\n| **草苔** | 返回幕后 |\n| **字数** | 当前章节字数 / 总字数 |\n| **18px** | 当前字号，点击可调 |\n| **色调** | 暖赭 / 冷青 / 琥珀 / 靛紫 四种配色 |\n| **设置** | 打开设置 / 幕后工作室 |\n| **温** | 文思模式切换 |\n\n#### 中间编辑区\n\n- 点击\"开始写作…\"即可输入。\n- 支持富文本格式。\n- 自动保存。\n\n#### 底部 AI 输入栏\n\n- 输入任意指令，例如\"帮我续写下一段\"\"把这段改得更紧张\"\"加入一个意外转折\"。\n- 按回车或点击纸飞机发送。\n\n#### 文思模式\n\n点击右上角 **温** 切换 AI 介入程度：\n\n- **被动**：只在发指令时响应。\n- **主动**：适时给出萤火提示（下一句建议、情节提醒）。\n\n---\n\n### 三、全局导航\n\n左侧边栏是所有功能的入口，任何页面都可以一键切换。\n\n![仪表盘](docs/product-screenshots/01_dashboard.png)\n\n| 按钮 | 作用 |\n|---|---|\n| **开幕前写作** | 快速打开「幕前写作」窗口 |\n| **仪表盘** | 回到首页，查看统计与快捷入口 |\n| **故事** | 管理所有故事项目 |\n| **角色** | 管理登场角色与关系 |\n| **世界构建** | 设定世界观、势力、规则 |\n| **场景** | 管理场景（情节单元） |\n| **知识图谱** | 可视化角色/地点/事件关系 |\n| **技能** | 配置 AI 辅助技能 |\n| **MCP** | 连接外部模型/工具 |\n| **拆书** | 分析参考书籍结构 |\n| **任务** | 查看后台 AI 任务队列 |\n| **伏笔看板** | 追踪伏笔埋设与回收 |\n| **叙事分析** | 诊断故事节奏与结构 |\n| **Story System** | 高级契约与版本管理 |\n| **用量统计** | AI 调用与 Token 消耗 |\n| **写作统计** | 字数、时长、写作习惯 |\n| **设置** | 模型、账号、通用偏好 |\n\n---\n\n### 四、仪表盘 — 创作起点\n\n![仪表盘](docs/product-screenshots/01_dashboard.png)\n\n打开应用后首先进入这里。核心元素：\n\n- **快捷创建**：\n  - **AI 创建故事** —— 输入一句话创意，AI 生成故事框架（含大纲、角色、场景）。\n  - **手动创建** —— 自己填写标题、简介、类型，从零开始。\n- **统计卡片**：故事数 / 角色数 / 场景数，点击可跳转。\n- **GENESIS 运行记录**：显示 AI 自动生成任务的运行历史。\n- **开始创作引导**：没有故事时，下方会出现\"开始你的创作之旅\"，提供 AI/手动两种创建入口。\n\n**典型路径**：打开应用 → 仪表盘 → AI 创建故事 → 输入创意 → 进入「故事」页继续完善。\n\n---\n\n### 五、故事 — 作品管理中心\n\n![故事页](docs/product-screenshots/02_stories.png)\n\n\"故事\"是创作的顶层容器。一本小说、一个短篇，都是一个故事。\n\n首次使用时页面为空，需要先创建故事。有数据后：\n\n- 故事卡片/列表展示标题、类型、进度、最近编辑时间。\n- **打开** / **编辑** / **删除** / **导出** 等操作。\n\n选择一个故事后，左侧底部会显示\"当前编辑\"，角色、场景、世界观等页面自动切换到该故事的数据。\n\n---\n\n### 六、角色 — 人物资料库\n\n![角色页](docs/product-screenshots/03_characters.png)\n\n管理系统化的人物设定：\n\n- **基本信息**：姓名、性别、年龄、外貌。\n- **性格与背景**：性格标签、核心驱动力、出身、目标。\n- **关系网络**：与其他角色的关系可视化。\n- **AI 生成角色**：输入一句话，AI 扩展成完整人设。\n\n这让 AI 在续写时严格遵循人设，避免\"角色崩坏\"。\n\n---\n\n### 七、场景 — 情节单元\n\n![场景页](docs/product-screenshots/04_scenes.png)\n\n\"场景\"是故事的最小情节单位，类似\"一场戏\"。\n\n- 场景卡片：标题、所属章节、出场角色、地点、状态。\n- **新增 / 编辑 / AI 扩写 / 排序**。\n- 把\"写一章\"拆成\"写几场戏\"，降低创作心理压力。\n\n---\n\n### 八、世界构建 — 设定资料库\n\n![世界构建](docs/product-screenshots/05_world_building.png)\n\n存放世界观、势力、地理、规则等背景设定。支持分类浏览、AI 生成世界观、关联角色/场景。\n\n保证奇幻/科幻/架空作品的设定不自相矛盾，防止 AI \"吃书\"。\n\n---\n\n### 九、知识图谱 — 关系可视化\n\n![知识图谱](docs/product-screenshots/06_knowledge-graph.png)\n\n把角色、地点、事件、势力变成一张可交互网络图：\n\n- 拖拽节点、缩放画布。\n- 点击节点查看详情。\n- 筛选显示某类节点。\n\n直观发现\"谁太久没出场\"\"哪条线索忘了回收\"。\n\n---\n\n### 十、技能工坊 — AI 辅助技能\n\n![技能页](docs/product-screenshots/07_skills.png)\n\n管理和配置可复用的 AI 技能模板：\n\n- **导入技能**：导入别人分享的技能配置。\n- **分类筛选**：全部 / 写作 / 分析 / 角色 / 情节 / 风格 / 世界观 / 导出 / 集成 / 自定义。\n- **技能卡片**：名称、描述、适用场景、启用开关。\n\n在幕前写作时，可随时调用已启用的技能（如\"续写\"\"润色\"\"生成大纲\"）。\n\n---\n\n### 十一、MCP — 外部工具连接\n\n![MCP](docs/product-screenshots/08_mcp.png)\n\nMCP（Model Context Protocol）让草苔连接外部模型或数据源，扩展 AI 能力。例如连接专门的\"古文润色\"模型或私有知识库。\n\n---\n\n### 十二、拆书 — 学习经典结构\n\n![拆书](docs/product-screenshots/09_book-deconstruction.png)\n\n上传参考小说，AI 自动分析：\n\n- 整体结构（三幕式、英雄之旅等）\n- 章节节奏与高潮分布\n- 角色出场频率\n- 核心主题\n\n把\"凭感觉写\"变成\"有参照地写\"。\n\n---\n\n### 十三、任务 — 后台作业队列\n\n![任务页](docs/product-screenshots/10_tasks.png)\n\n当 AI 执行批量操作（批量润色、整书生成）时，会在这里显示进度。\n\n- **状态筛选**：全部 / 执行中 / 等待中 / 已完成 / 失败。\n- **新建任务**：手动发起后台 AI 任务。\n\n你可以关闭界面去做别的事，回来在任务页查看结果。\n\n---\n\n### 十四、伏笔看板 — 线索回收\n\n![伏笔看板](docs/product-screenshots/11_foreshadowing.png)\n\n管理伏笔的全生命周期：\n\n- **已埋下 / 已回收 / 待回收 / 废弃** 四态看板。\n- 创建伏笔时填写描述、预期回收章节、重要性。\n- 关联到具体场景。\n\n防止\"开头精彩、结尾烂尾\"，确保每条线索都有交代。\n\n---\n\n### 十五、叙事分析 — 结构诊断\n\n![叙事分析](docs/product-screenshots/12_narrative-analysis.png)\n\n用 AI 诊断故事的叙事健康度：\n\n- 节奏曲线（每章紧张度变化）\n- 角色戏份分布\n- 情节密度（对话/动作/描写比例）\n- AI 诊断建议\n\n像给小说做体检，发现结构问题再针对性修改。\n\n---\n\n### 十六、Story System — 高级契约系统\n\n![Story System](docs/product-screenshots/13_story-system.png)\n\n高级用户功能：\n\n- **契约树**：定义 AI 必须遵守的规则（如\"主角不能死\"\"保持第三人称\"）。\n- **版本记录**：类似 Git 的提交历史，可回溯故事版本。\n- **运行时规则**：控制 AI 生成的行为边界。\n\n让 AI 在长篇幅创作中保持高度一致性。\n\n---\n\n### 十七、用量统计与写作统计\n\n![用量统计](docs/product-screenshots/14_usage-stats.png)\n\n**用量统计**：AI 调用次数、Token 消耗、按模型/功能拆分。适合关注 API 成本的用户。\n\n![写作统计](docs/product-screenshots/15_writing-stats.png)\n\n**写作统计**：每日字数、活跃时段、连续创作天数、平均写作速度。帮助你建立稳定输出节奏。\n\n---\n\n### 十八、设置 — 模型与偏好\n\n![设置页](docs/product-screenshots/16_settings.png)\n\n配置 AI 模型和应用偏好：\n\n- **模型管理**：添加、删除、测试 LLM 连接（聊天/嵌入/多模态/图像）。\n- **Agent 配置**：为不同 AI Agent 分配模型。\n- **创作方法论**：选择雪花法、英雄之旅等创作框架。\n- **工作流**：配置自动化流程。\n- **通用设置**：主题、语言、自动保存、字号、行高。\n- **数据统计**：查看本地功能使用统计。\n- **账号与登录**：管理账号和订阅。\n\n**首次使用建议**：进入 **模型管理** → **添加聊天模型** → 填写 API 地址和 Key → 测试连接 → 完成后即可在幕前调用 AI。\n\n---\n\n### 十九、快速上手\n\n第一次使用草苔，建议按以下顺序：\n\n1. 打开应用 → 看到仪表盘。\n2. 点击 **AI 创建故事** → 输入创意一句话 → 等待 AI 生成框架。\n3. 进入「故事」页 → 确认新建的故事。\n4. 进入「角色」页 → 添加 2-3 个核心角色。\n5. 进入「场景」页 → 创建第一章的关键场景。\n6. 点击左侧 **开幕前写作** → 在幕前界面写第一章。\n7. 卡壳时用底部 AI 输入栏求助。\n8. 返回幕后「叙事分析」查看结构诊断。\n\n---\n\n### 二十、常见状态\n\n- **顶部红色提示条\"无法连接到本地服务\"**：表示前端未连上后端。请等待几秒后点击\"重试\"，或重启应用。\n- **左下角\"登录\"**：未登录状态，点击可登录账号。\n- **右上角更新通知**：有新版本时弹出，可选择安装或忽略。\n\n---\n\n## 🚀 安装与运行\n\n### 下载预构建版本\n\n releases 页面提供 Windows / macOS 安装包，下载后直接安装即可。\n\n### 从源码运行\n\n需要安装 [Node.js](https://nodejs.org/)（推荐 20 LTS）和 [Rust](https://rustup.rs/)。\n仓库通过 `rust-toolchain.toml` 固定 Rust 版本为 **1.95.0**，`rustup` 会自动下载对应工具链。\n\n```bash\n# 1. 克隆仓库\ngit clone https://github.com/91zgaoge/StoryForge.git\ncd StoryForge\n\n# 2. 安装前端依赖\ncd src-frontend \u0026\u0026 npm install\n\n# 3. 安装 Tauri CLI 并运行桌面应用\ncd ..\nnpm install -g @tauri-apps/cli\ncargo tauri dev\n```\n\n\u003e **注意**：`Cargo.lock` 已纳入版本控制。如需升级依赖，请在本地验证 `cargo clippy` / `cargo test` 通过后再提交。\n\n### 仅运行前端（开发调试）\n\n```bash\ncd src-frontend\nnpm run dev\n```\n\n然后在浏览器打开 `http://localhost:5173/`。\n\n---\n\n## 🏗️ 技术栈\n\n- **前端**：React 18 + TypeScript 5.8 + Vite 6 + Tailwind CSS 3\n- **桌面框架**：Tauri 2.4（Rust 后端 + Web 前端）\n- **编辑器**：TipTap / ProseMirror\n- **状态管理**：Zustand + TanStack Query\n- **知识图谱**：ReactFlow\n- **向量存储**：LanceDB + SQLite\n- **LLM 适配**：OpenAI / Anthropic / Ollama / 自定义本地 API\n\n---\n\n## 📚 更多文档\n\n| 文档 | 说明 |\n|---|---|\n| [`docs/USER_GUIDE.md`](./docs/USER_GUIDE.md) | 完整用户指南（含全部截图与详细说明） |\n| [`CHANGELOG.md`](./CHANGELOG.md) | 版本更新日志 |\n| [`ARCHITECTURE.md`](./ARCHITECTURE.md) | 系统架构设计 |\n| [`AGENTS.md`](./AGENTS.md) | 开发代理指南 |\n\n---\n\n## 📸 截图清单\n\n所有界面截图均由 CDP 自动截取，保存在 [`docs/product-screenshots/`](./docs/product-screenshots/)：\n\n| 文件名 | 页面 |\n|---|---|\n| `00_frontstage.png` | 幕前写作 |\n| `01_dashboard.png` | 仪表盘 |\n| `02_stories.png` | 故事 |\n| `03_characters.png` | 角色 |\n| `04_scenes.png` | 场景 |\n| `05_world_building.png` | 世界构建 |\n| `06_knowledge-graph.png` | 知识图谱 |\n| `07_skills.png` | 技能工坊 |\n| `08_mcp.png` | MCP |\n| `09_book-deconstruction.png` | 拆书 |\n| `10_tasks.png` | 任务 |\n| `11_foreshadowing.png` | 伏笔看板 |\n| `12_narrative-analysis.png` | 叙事分析 |\n| `13_story-system.png` | Story System |\n| `14_usage-stats.png` | 用量统计 |\n| `15_writing-stats.png` | 写作统计 |\n| `16_settings.png` | 设置 |\n\n---\n\n## 🤝 参与贡献\n\n欢迎通过 Issue 和 Pull Request 参与项目。大型改动建议先阅读 [`AGENTS.md`](./AGENTS.md) 和 [`ARCHITECTURE.md`](./ARCHITECTURE.md)。\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with 🌿 by StoryForge Team\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F91zgaoge%2Fstoryforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F91zgaoge%2Fstoryforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F91zgaoge%2Fstoryforge/lists"}