{"id":48959185,"url":"https://github.com/91zgaoge/storyforge","last_synced_at":"2026-07-09T05:00:33.262Z","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-07-04T01:17:35.000Z","size":27079,"stargazers_count":46,"open_issues_count":2,"forks_count":12,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-07-04T01:25:37.862Z","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-07-04T01:17:39.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":398,"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":35287396,"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-07-09T02:00:07.329Z","response_time":57,"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-07-09T05:00:33.255Z","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.26.44-gold)](./CHANGELOG.md)\n[![License](https://img.shields.io/badge/license-ISC-blue.svg)](./LICENSE)\n\n**最新动态**：v0.26.44 Genesis 首章质量——开篇骨架步 + 概念加厚 + 策略中文化 + 四元组接入，解决「先写正文、戏剧槽位为空」的时序倒置。\n\n**上一版 v0.26.43** 修复底部「准备上下文」前图标显示为方框——改用 Lucide SVG，不再依赖 WebView emoji 字体。\n\n**上一版 v0.26.42** 修复续写「有 Tab 提示、无幽灵文本、确认后无追加」——接受后 30s 渲染锁未在新续写时清零。\n\n**上一版 v0.26.41** 清偿两项架构债——管线 Finalize 按 `scene_id` 直写编辑场景；`kg_entities`/`memory_items` 统一读模型（VIEW + 链接列，物理表不 DROP）。\n\n**上一版 v0.26.40** 幕后资产闭环 P0–P3——侧栏生成影响徽章、KG 摘要进默认续写、MCP 降级设置扩展、SceneEditor 管线统一、MemoryFacade、生成链路覆盖率。\n\n**上一版 v0.26.39** 幕后信息架构全面重排——侧栏五组分类、数据洞察合并、设置七 Tab 重组。\n\n**上一版 v0.26.37** 修复幕前「保存中」常亮与顶部字数不随正文增长——根因是 `update_scene` IPC 参数形状错误，以及 AI 追加路径未刷新字数/未调度自动保存。\n\n**上一版 v0.26.34** 修复后台提示词页面批量导入参数错误（`promptId` → `prompt_id`），新增「打开目录」按钮以在系统文件管理器中打开当前 prompts 资源目录，并新增「刷新」按钮重新加载提示词列表。\n\n**上一版 v0.26.33** 补齐综合优化计划阶段 2/3/4 的具体 UI/解耦缺口——知识图谱实体可归档、关系可删除；角色关系卡片新增删除按钮；前端 `frontstage` 与 `components/EditorSettings` 解耦。\n\n**上一版 v0.26.30** 热修复旧数据库在 v0.26.28 迁移框架切换后可能缺失 `characters.scenes.world_buildings.kg_entities` 表的 `source` / `is_auto_generated` 列的问题——新增 V103 迁移与 `init_db` 启动兜底修复，确保 Genesis 与资产查询不再报 `no such column: source`。\n\n**上一版 v0.26.29** 热修复 prompts 外部化后的策略选择 JSON schema 不匹配——`selector.rs` 新增 `LegacyStrategyResponse` 兜底解析，修复 Genesis「选择创作策略」步骤 `VALIDATION_FAILED: missing field rationale` 错误。\n\n**上一版 v0.26.26** L2 资产补齐与领域层止血——角色编辑/关系 CRUD、L2 创世溯源徽章、Story System 合同播种状态卡、StorySystem.tsx 拆分、Repository 层 trait 化与拆分。\n\n**上一版 v0.26.25** Backstage Genesis 可观测性与测试基线——GenesisPanel 动态步骤/非致命 errors/L1 创作路径引导/Wizard 重复建故事修复/仪表盘统计卡可点击。\n\n- **v0.26.19 Phase 1（P0 竞态与契约）**：修复 Gap B（空 finalContent 不锁 delivered）、P0-2（角色世界观上下文闭包捕获竞态——character 提示词读取 `bundle.world_building` 恒为空，改为先 await world 拿真实 `world_concept`）、P0-3（ChapterSwitch delivered 时序——懒加载失败不标记 delivered）。\n- **v0.26.19 Phase 2（P1 架构对齐）**：后台错误可观测性（`GenesisContext.errors` → `genesis_runs.steps_json` + `genesis-warnings` 事件 → 前端 toast）；mutex 中毒锁加固；`window/mod.rs` 与 `FrontstageEvent.ts` 注释对齐 auto-accept 真实路径。\n- **v0.26.19 Phase 3（测试加固）**：8% 重试闸门 + ChapterSwitch payload 提取纯函数 + 契约测试；前端 Gap C + 状态机端点测试；**跨层共享 trim golden fixture**（Rust + TS 双跑锁定 `trim_self_repetition` 跨层一致性）。\n- **v0.26.19 Phase 4（代码整洁）**：`*_future` → `*_gen` 重命名；`AppConfig::load` 去重；`appendAiContent` skip 路径不 `markAccepted`；Gap C 重复入站也跳过 setContent。\n\n**上一版 v0.26.18**：加固 Genesis 第一章重复的三个残留竞态缺口：\n\n\n- **根治「新写小说时第一章内容重复」**：替代 v0.26.7–v0.26.14 的散布补丁，从生成侧与前端的两个独立根因进行结构性修复。\n  - **生成侧验证闸门**：`genesis.rs` 检测 LLM 输出自重复比例，≥8% 时用更强 anti-repeat 指令重试；prompt 模板新增「结构纪律」段，明确禁止首尾回环与整章重复。\n  - **前端单写者状态机**：`FrontstageApp` 将 `genesisAutoAcceptedRef` 布尔替换为 `idle → generating → delivered` 三态状态机，`generating` 态阻塞外部内容投递，`delivered` 态阻塞幽灵文本恢复，消除多路径并发导致的重复叠加。\n  - `textCleanup` 与 Rust `trim_self_repetition` 统一 KMP 最长 border 检测，覆盖全部写入路径。\n\n- **修复 Issue #4：应用启动 panic/Windows 闪退**：当应用数据目录不可写导致 `init_db` 失败时，`GatewayExecutor` 不再通过 `state::\u003cDbPool\u003e()` 读取未 manage 的 pool，改为由 `setup` 显式传入 pool 并仅在 pool 可用时初始化网关，避免启动时 panic。\n\n- **清理 CI 格式检查失败**：已全局运行 `cargo +nightly fmt` 与 `prettier --write`，`cargo +nightly fmt -- --check` 与 `npm run format:check` 均已通过。\n\n**上一版**：v0.26.13 修复 Genesis 第一章渲染层视觉重复（幽灵容器残留）；v0.26.12 修复角色列表为空/未加载时的幕前崩溃与订阅状态空值；v0.26.11 修复 Genesis 第一章 store-editor 失步与崩溃隐患：\n\n- **修复「新写小说时第一章内容重复」深层根因**：v0.26.10 已确保数据层面只追加一次，但追加后 store 依赖 200ms onChange debounce 回写，当 `latestContentRef` 与编辑器 HTML 指纹相同时 `handleContentChange` 会提前返回，导致 store 长期为空，后续外部同步/章节切换可能引发视觉重复或内容抖动。v0.26.11 在 `appendAiContent` 追加后立即用 `editorRef.getHTML()` 同步 store 与 `latestContentRef`；`RichTextEditor.appendText` 空文档分支标记外部同步并更新 `lastExternalContentRef`，防止 content prop 被外部同步 effect 再次 setContent。\n- **修复「写完后过会儿页面崩溃」**：确认 `src-tauri/tauri.conf.json` 的 `devUrl` 指向 `http://localhost:5173`，避免 `cargo tauri dev` 加载陈旧 `dist` 中的旧代码触发崩溃；同时通过 store-editor 同步消除状态漂移引发的渲染异常。\n\n\u003e **上一版**：v0.26.9 将重复检测基准从 `editorRef.getText()` 改为 `latestContentRef.current`，覆盖 DOM 滞后竞态；v0.26.8 修复 pipeline-complete 先加载 DB 正文、smart_execute 后返回 final_content 的竞态重复；v0.26.7 修复 React #185 页面崩溃与 ChapterSwitch 路径下的重复。\n\n\u003e **上一版**：v0.24.9 修复 TipTap 渲染错误边界与接受后 30s 禁止外部 setContent，进一步根治内容重复问题。v0.23.74 完成场景优先架构迁移——`scenes.content` 为唯一叙事真相源。\n\n\u003e **上一版**：v0.22.4 异星球末世生存复合题材创作流程优化（GenreResolver 题材解析 + 意图图资产发现 + 模型网关资产标签调度 + TimeSliced 次要题材补强）。v0.22.0 TimeSliced 全资产注入 + Inspector 全资产注入 + 意图调度接线 + 算力档案消费 + 资产→生成参数规则映射。\n\n\u003e 🐛 v0.13.0 引入**分时介入架构**，解开 AI 长篇小说创作中「质量与速度不可兼得」的根本矛盾：\n\n\u003e 🌿 第一性原理：**把大灾难变成即时可见的小债务。** 蚂蚁搬家，不积巨石。\n\nAI 写长篇小说，强化专业资产（合同/伏笔/Inspector/记忆）就慢，放松就崩。v0.13.0 把\"写\"和\"审\"解耦成三条独立时间线：\n\n1. **写作时刻（\u003c 15s 秒出正文）**：`WriteTimeBundle` 只带最小约束（合同红线 + 角色核心 + 场景大纲 + 题材反模式），直连 LLM 单轮生成，立即返回。不跑 Preflight 补合同、不跑 Inspector、不跑 Rewrite。\n2. **审计时刻（后台 30-90s）**：正文返回后，`AuditExecutor` 在后台异步跑 7 维 Inspector，发现的问题以 **inline 标注**（ai_audit 类型，按 severity 红黄蓝着色）回流到编辑器。用户当场处理小债，不让它滚成大灾难。\n3. **洞察时刻（每 5 段深度报告）**：`InsightExecutor` 汇总追读力趋势 + 追读债务 + 标注盘点，产出整体健康度报告，在「叙事分析」页呈现。\n\n顶栏新增**债务指示器**，实时显示未处理标注数，超阈值红色警告。\n\n**Phase 0 实测验证**（qwen3.6-35b，3 场景 A/B 盲测）：最小约束 vs 全量资产平均质量差距仅 **7.9%**（\u003c 30% 阈值），且会被后台审计追平。证实\"慢的根源不是资产量，而是同步链路堆叠的 Inspector/Rewrite\"。\n\n设计文档见 [`docs/plans/2026-06-14-time-sliced-intervention-design.md`](./docs/plans/2026-06-14-time-sliced-intervention-design.md)，验收清单见 [`docs/time-sliced-architecture-qa-checklist.md`](./docs/time-sliced-architecture-qa-checklist.md)，完整变更见 [`CHANGELOG.md`](./CHANGELOG.md)。\n\n\u003cdetails\u003e\n\u003csummary\u003e📦 v0.12.0 性能重构（点击展开）\u003c/summary\u003e\n\nv0.12.0 针对「智能创作无处不在的卡顿、生成无输出」进行系统性性能重构：\n\n1. **后端生成链路止血**：本地/局域网模型默认单候选 + 全局并发限流，候选总超时硬上限 90s；LLM 连接/生成超时拆分；上下文准备、SQLite 高频路径 spawn_blocking 化；全局 Mutex 替换为 OnceLock/RwLock。\n2. **前端响应与大数据量优化**：生成状态精确显示 + 可靠取消；移除高频心跳；场景/章节分页加载；sync-event 批量失效；文思分析移入 Web Worker；RichTextEditor HTML 序列化节流。\n3. **架构级重构**：统一 `generation-status` 事件；知识图谱 viewport 裁剪 + LOD；Agent 编排结构化 trace；后台 Ingest 任务 Semaphore + 取消令牌；引入 `tiktoken-rs` 真实 tokenizer 与上下文预算。\n\n修复计划见 [`PERFORMANCE_FIX_PLAN.md`](./PERFORMANCE_FIX_PLAN.md)，阶段验证报告见 `QA-Stage1-report.md`、`QA-Stage2-report.md`、`QA-Stage3-report.md`。\n\n\u003c/details\u003e\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- **手动 CRUD**：图例面板可新建实体，实体详情面板可添加关系。\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#### 提示词注册表（v0.19.0 新增）\n\n进入 **设置 → 提示词** 可查看和编辑全部 35+ 个 AI 提示词：\n\n- **分类浏览**：15 个分类折叠面板（写作核心 / 审校 / 评点 / 规划 / 分析 / 世界观 / 角色 / 叙事 / 方法论 / 技能 / 记忆 / 知识 / 探测 / 系统 / 其他）\n- **实时搜索**：按提示词 ID、名称、描述或内容关键词搜索\n- **编辑覆盖**：点击任意提示词展开编辑器，修改后保存即可覆盖默认提示词\n- **默认值预览**：已覆盖的提示词显示内置默认值（只读），方便对比修改\n- **批量重置**：一键恢复所有提示词到默认状态\n- **模板变量**：提示词中 `{{variable}}` 形式的变量会自动高亮\n\n所有修改即时生效，下次 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\nreleases 页面提供 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- **提示词注册表**（v0.19.0）：35+ 内置提示词统一注册表，15 分类，前端完整管理，运行时覆盖生效\n- **分时介入架构**（v0.13.0）：三条时间线（写作/审计/洞察）解耦，解开质量与速度矛盾\n- **Context Rot 显式防御**（v0.25.0）：`ContextPrioritizer` 按 Critical/High/Normal/Background 排序系统提示词，并在结尾双重锚定关键约束，缓解长上下文中的 \"Lost in the Middle\"\n- **四级错误分类与恢复**（v0.25.0）：`ErrorSeverity` Fatal/Retry/Degraded/UserAction + 指数退避重试 + 降级回退 + `AgentInterruptionModal` 显式中断 UI\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| [`docs/plans/2026-06-14-time-sliced-intervention-design.md`](./docs/plans/2026-06-14-time-sliced-intervention-design.md) | 分时架构设计文档（Phase 0 已验证）   |\n| [`docs/time-sliced-architecture-qa-checklist.md`](./docs/time-sliced-architecture-qa-checklist.md)                       | 分时架构 QA 验收清单                 |\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"}