# PRD — InkFlow（移动端 AI 写作助手）

| 项 | 内容 |
|---|---|
| 文档版本 | v1.0 |
| 产品名 | InkFlow |
| 形态 | Android APK（Capacitor），纯前端单机 App |
| 作者 | 产品负责人（独立完成） |
| 状态 | 需求定义完成，原型规格已就绪（见 `prototype-spec-inkflow.md`） |

> 本文档为唯一需求来源。与代码/原型冲突时，以本文档的"范围与目标"为准，并回填差异。

---

## 1. Summary

InkFlow 是一款面向中文创作者的 Android 移动写作 App。它把"AI 写作"从电脑搬到手机：创作者在碎片时间里，用对话式续写、知识库注入、局部改写三个核心动作完成创作，并用内置的文风检测（Slop 检测）保证产出不带明显的"AI 味"。全部数据保存在本机（IndexedDB），用户自带 API Key，无账号、无云端、无中间服务商，隐私优先。

---

## 2. Contacts

| 角色 | 职责 | 说明 |
|---|---|---|
| 产品负责人 | 范围/优先级/验收 | 决策需求边界与发布节奏 |
| 前端开发 | 实现与维护 | React 18 + TypeScript + Capacitor |
| 使用者 | 反馈验证 | 目标用户（作者/爱好者/学生） |

---

## 3. Background

**3.1 为什么做**

移动写作工具长期两极分化：轻量笔记类没有 AI 创作能力，AI 写作 Web 工具又要求创作者回到电脑前。网文作者是典型"碎片时间创作者"——通勤、午休时想续写几段，但现有工具要么不能离线、要么强依赖云端账号。InkFlow 的切入点是：**把完整的 AI 创作闭环（续写 → 注入 → 改写 → 质检）压缩进一部手机，且数据完全自持。**

**3.2 为什么现在**

- 大模型 API 已提供 OpenAI 兼容协议，移动端直接调用门槛低、成本可承受。
- 中文网文/自媒体创作群体庞大，对"AI 辅助但不失个人风格"的需求持续上升。
- 本机推理与 WebView 性能已能满足流式渲染（80ms 批处理）。

**3.3 现有基础**

`novel-app/` 已有可运行 MVP：多模型对话、知识库注入、FIM 局部重写、Slop 质量检测、自动重试、结构化输入、IndexedDB 持久化、APK 打包。本 PRD 在此基础上**明确范围、补齐产品定义、给出验收与发布路径**。

---

## 4. Objective

**为什么（Objective）**：让手机成为创作者随身、私密、可离线的 AI 写作伙伴，把"续写 → 注入 → 改写 → 质检"的完整创作闭环压缩进碎片时间。

**为什么重要（Why it matters）**：现有工具两极分化——轻量笔记无 AI 能力，AI 写作工具又绑定电脑与云端账号；InkFlow 同时解决"随时随地可写"和"数据完全自持"两个未被满足的需求，并确保产出不带明显的 AI 味。

**与愿景的一致性（Alignment）**：符合"AI 辅助创作但不替代个人风格"的定位——知识库保设定、Slop 检测保文风，工具服务于人而非代写。

**关键结果（Key Results，SMART OKR 格式）**：

| KR | 度量方式 | 现状 | 目标 | 时限 |
|---|---|---|---|---|
| KR1：碎片时间可完成有效续写 | 打开 App → 产出可接受文本的步骤数 | 未统计（可演示） | ≤3 步 | v1.1 |
| KR2：产出不被 AI 味污染 | Slop 检测通过率（得分 ≥7） | 未校准 | ≥70% | v1.2 |
| KR3：创作者愿意沉淀创作资产 | 活跃用户知识库条目数（周均） | 0（新功能） | ≥5 | v1.2 |
| KR4：离线稳定可用 | 断网下历史记录与知识库可完整访问（生成需联网） | 部分可用 | 100% | v1.1 |
| KR5：留存验证 | 周 ≥3 次"续写+质检通过"会话的活跃用户数 | 0 | 较上一周期环比增长 | v1.3 |

**非目标（明确不做）**

- 不做多账号 / 登录 / 社交体系
- 不做云端同步与多端协作
- 不做完整富文本编辑器（纯文本消息流）
- 不做横屏 / iPad / iOS 首发适配
- 不做本地模型推理（始终走 API）
- 不做内容社区、排行榜、变现

---

## 5. Market Segment

**5.1 目标用户画像**

| 画像 | 特征 | 核心痛点 | 使用情境 |
|---|---|---|---|
| 网文作者（主力） | 日更压力大，碎片时间写 | 卡文、段落不满意、怕写崩人设 | 通勤/午休用手机续写章节、局部改写 |
| 写作爱好者 | 有灵感无体系 | 不会管理设定，产出随意 | 手机随手记灵感、润色段落 |
| 学生 | 论文/作业需要文案 | 需要大纲与文案辅助 | 碎片时间生成与润色 |

**5.2 核心场景**

1. **碎片续写**：作者在通勤时打开 App → 进入小说项目 → 输入一句"主角推开酒吧门" → AI 流式续写 300 字 → 作者预览后存下。
2. **卡文改写**：写了一半不满意 → 选中段落 → FIM 前缀/后缀保留 → 只重写中间 → 对比新旧版本。
3. **设定注入**：作者把主角人设存进知识库 → 注入对话 → AI 续写时自动遵守人设，不跑偏。
4. **质量把关**：生成完成后 → 文风检测 → 提示"N 处疑似 AI 味" → 作者针对性修改或自动重试。

---

## 6. Value Proposition

**6.1 给用户的收益**

| 用户任务 | 获得 |
|---|---|
| 碎片时间续写 | 手机上完成一次完整创作闭环，不再依赖电脑 |
| 局部改写 | 只改中间段，前文后文不动，节省全文重跑成本 |
| 保持人设/世界观 | 知识库注入让 AI 遵守设定，减少跑偏 |
| 避免"AI 味" | Slop 检测提前拦截陈词滥调，产出更像人写 |

**6.2 对比竞品的差异**

| 维度 | 主流 AI 写作 Web 工具 | InkFlow |
|---|---|---|
| 使用场景 | 依赖电脑/浏览器 | 手机 APK，离线可用 |
| 数据归属 | 云端账号，平台留存 | 本机 IndexedDB，数据自持 |
| 收费模式 | 订阅制（月费数十至百余元档） | 自带 API Key，按 Token 实付 |
| 质量保障 | 依赖用户自查 | 内置 Slop 检测 + 自动重试 |

---

## 7. Solution

**7.1 架构概览**

```
React 18 + TypeScript（纯前端）
├── Zustand 状态管理 + idb-keyval（IndexedDB 持久化）
├── Vite 5 构建 + Capacitor 6 打包 APK
└── 直连大模型 API（OpenAI 兼容协议）
```

- 无后端、无账号、无中间服务商；用户自带 API Key。
- 全部数据本机存储：`inkflow-chat/settings/knowledge/prompts/projects/checker/outline`。

**7.2 核心功能（MVP 已具备）**

| 模块 | 功能 | 说明 |
|---|---|---|
| 对话写作 | 流式生成、多模型（DeepSeek/SiliconFlow/OpenAI/Claude/Gemini）、版本切换、克隆/重命名/删除 | 80ms 批处理渲染 |
| 知识库注入 | 6 类条目（提示词/信息卡/词库/草稿/正文/参考），`{{kb:条目名}}` 注入 | 按对话管理，范围通用/限定 |
| FIM 局部重写 | 前缀+后缀保留，只改写中间段 | 支持 Chat 与 FIM 两种 API 模式 |
| Slop 质量检测 | 6 大类词条 × L1–L3 严重度 + 7 项统计扣分（0–10 分） | 流式增量/全量/实时高亮三模式 |
| 自动重试 | 按 Slop 评分自动重试，阈值 7、最多 3 次 | 仅结束时 / 持续扫描两种策略 |
| 结构化输入 | 多段输入模板，逐段折叠/展开 | 适合"大纲→正文" |
| 项目系统 | 项目分组管理对话 | 默认项目自动创建 |
| 设置 | 主题/提供商/Key/Temperature/禁词/参数开关 | 见原型规格 §9.10 |

**7.3 界面与交互**

以"聊天应用模板"为唯一页面模板，单主页面 + overlay 面板（历史/知识库/设置/提示词）。全部交互规格见 `prototype-spec-inkflow.md` §5–§12（含页面布局、组件、功能点、图标符号表、Mock 三态）。

**7.4 Assumptions（我们相信但尚未验证的假设）**

| # | 假设 | 若失败的影响 | 验证方式 |
|---|---|---|---|
| A1 | 目标用户愿意自带 API Key 换取免费/低成本 | 非技术用户被配置门槛挡在门外 | 设置页引导 + 上手说明；小范围可用性测试 |
| A2 | 碎片时间场景确实需要"手机上完成整段续写" | 用户仍倾向电脑长文写作，移动定位失效 | 观察"从打开到存稿"的会话时长分布 |
| A3 | 知识库注入能显著减少人设跑偏，用户愿为此维护条目 | 维护成本 > 收益，知识库成摆设 | 周知识库条目数 + 注入后重生成占比 |
| A4 | Slop 检测的评分标准接近目标用户认可的"不像 AI" | 评分失真，自动重试误杀/漏杀 | 抽样真人对比校准权重 |
| A5 | 纯前端单机（无账号）足够支撑留存 | 无云端导致换机即失，用户流失 | 导出/WebDAV 补位 + 留存观察 |

**7.5 已知技术债（建议在正式发布前解决）**

| 优先级 | 问题 | 位置 |
|---|---|---|
| P0 | `setProvider` 未同步 `modelConfig.providerName`，切换提供商后请求发错端点 | `settingsStore.ts:114` |
| P0 | Anthropic/Google API 为 stub，实际走 OpenAI 格式 | `api/client.ts` |
| P0 | 文风自动模式 UI 与 `toolSlopDetect` 未打通，自动检查无法从 UI 开启 | `HomePage.tsx:55` |
| P1 | FIM 无法携带对话历史（`/beta/completions` 仅接受 prompt+suffix） | `providers/openai.ts` |
| P1 | 4 个页面文件未路由、5 个组件为空占位（dead code） | `pages/` `components/` |
| P2 | IndexedDB 500ms 批量 flush，异常退出可能丢数据 | `storage/database.ts` |

---

## 8. Release

**8.1 里程碑**

| 版本 | 范围 | 验收门槛 |
|---|---|---|
| v1.0（当前 MVP） | 对话/知识库/FIM/Slop/重试/结构化输入/项目/设置 | 核心 6 模块可演示、APK 可安装、离线可用 |
| v1.1（质量版） | 修复 P0 三个 bug + 文风自动模式打通 UI | 切换提供商请求端点正确；自动检查可从 UI 开启 |
| v1.2（体验版） | 夜间模式、写作统计面板、iOS 适配 | 数据统计可见、iOS 可运行 |
| v1.3（同步版） | WebDAV 备份同步、角色一致性校验 | 可跨设备恢复数据 |

**8.2 发布节奏建议**

- v1.0 → v1.1：1–2 周（以 bug 修复为主，不做新功能）
- v1.1 → v1.2：2–3 周
- 每个版本发布前对照 `prototype-spec-inkflow.md` §14 验收清单 + §16 工程规范

**8.3 发布检查（Go/No-Go）**

- [ ] P0 技术债已解决
- [ ] 断网场景核心功能可用
- [ ] Slop 检测无 console 报错、评分可用
- [ ] 版本切换/知识库注入/FIM 三主链路可完整点通
- [ ] 数据删除/导出有二次确认与备份能力

---

## 9. Risks & Open Questions

**9.1 风险**

| 风险 | 影响 | 应对 |
|---|---|---|
| 自带 API Key 门槛高 | 非技术用户不会配置 | 设置页引导 + 快速上手说明 |
| 移动端流式渲染性能 | 低端机卡顿 | 已有 80ms 批处理；持续压测 |
| FIM 无对话上下文 | 局部改写可能脱离上下文 | v1.1 评估换 DeepSeek FIM 端点或降级为 assistant-prefix |
| 单机数据丢失 | 用户卸载即失 | 导出备份 + 后续 WebDAV |

**9.2 开放问题**

- [ ] 是否提供"一键内置免费模型"以降低 Key 门槛（待验证用户意愿）
- [ ] 文风检测的权重是否需要对标真人写作语料校准
- [ ] 是否接受 iOS 适配优先级高于 WebDAV

---

*文档结束。原型规格见 `prototype-spec-inkflow.md`；技术细节见 `README.md` 与 `功能清单与页面布局文档.md`。*
