Skip to content

Latest commit

 

History

History
182 lines (144 loc) · 9.48 KB

File metadata and controls

182 lines (144 loc) · 9.48 KB

Things Flutter · v0.3 产品需求文档(PRD)

版本:0.3 · 主题:让 AI 帮你「理清」与「回顾」 状态:已实现并自测 关联高保真:design/ai_clarify_review.html


1. 背景与目标

1.1 当前痛点

v0.2 已经把「捕获 → 组织 → 执行」的主干跑通,捕获非常顺滑(小组件、Magic Plus、收件箱)。 但真实使用中暴露出 GTD 中后段的两个塌陷点:

  1. 理清(Clarify)缺位:收件箱里堆着大量「模糊念头」(如「拍笔记」「学日语」「研究自动化做视频」)。 这些条目时间、动作、归属都不确定,用户面对它们时不知道下一步是什么,于是收件箱越积越多, 最终丧失对系统的信任——这是 GTD 系统崩塌的头号原因。
  2. 回顾(Review)缺位:没有「每周回顾」的抓手。孵化区(将来/某天)的想法只进不出、 项目逐渐失去「下一步行动」而变成僵尸、随时区里的任务被长期遗忘,却没有任何机制提醒用户。

1.2 v0.3 目标

引入两个 AI 能力,补齐 GTD 的「理清」与「回顾」两段,且严格遵循既有的 「AI 只产出草稿与建议,决定权永远在用户」 设计红线:

  • F1 · AI 理清(单条 + 批量):把任意成熟度的念头,由一个「很懂 GTD 的教练」帮忙 追问澄清、并整理成可执行的结构化条目;用户逐项确认后才落库。
  • F2 · 一键回顾报告:一个按钮,自动扫描全库,生成结构化「回顾报告」 (待整理收件箱 / 孵化到期 / 项目健康 / 停滞任务),并附 AI 的本周聚焦建议, 每条都能就地跳转处理。

1.3 非目标(本期不做)

  • 结构化导入/导出协议(YAML/JSON/Markdown)——已列入 backlog,0.4 再做。
  • 参考资料(Reference Material)独立模块——Things 的做法是「领域内放无动作清单」, 本期不新增数据结构,仅在理清里允许 AI 给出「这是参考资料,建议放将来/某领域」的判断。
  • 备注(notes)字段——产品定位不引入自由备注,AI 给出的「期望结果」仅作为澄清期的引导展示。

2. 设计原则

原则 说明
草稿优先 AI 任何输出都是「可改、可删、可拒绝」的草稿,落库前必须经用户确认。
复用心智 理清结果复用既有的 When / 清单 / 死线 / 标签选择器,零新增学习成本。
优雅降级 未配置 API Key 时,理清入口隐藏;回顾报告仍可生成(只是没有 AI 建议段)。
教练而非裁判 AI 对模糊条目先「追问」,引导用户自己想清楚,而不是替用户拍板。
安全可逆 批量操作、落库后都提供撤销/跳过;回顾报告是只读视图,跳转后由用户在原位操作。

3. F1 · AI 理清(单条 + 批量)

3.1 用户故事

  • 作为用户,我在收件箱看到「拍笔记」这种模糊条目,希望 AI 问我一两个关键问题, 帮我把它变成「今天能直接做的一步」,而不是继续晾着。
  • 作为用户,我积压了十几条收件箱,希望一次性排队过一遍,对高置信度的建议快速接受。

3.2 单条理清(Clarify Sheet)

入口:收件箱(及任意清单)里,任务行向左滑 → 出现「理清」动作(✨ 图标,仅在已配置 AI 时显示)。

流程:

  1. 打开理清面板,展示原文,AI 开始分析(loading)。
  2. AI 判定该条目是否「足够清晰」:
    • 模糊 → 展示 1~2 个澄清追问,每个问题给出快捷选项 + 自由输入。 用户作答后点「继续」,AI 据此再整理。
    • 清晰 → 直接给出「理清卡片」。
  3. 理清卡片(结构化建议):可执行标题(动词开头的下一步行动)、类型(任务/项目)、 何时、死线、清单归属、标签、子步骤(项目→任务 / 任务→检查项)。卡片所有字段沿用既有选择器,可改。
  4. 用户点「应用」→ 原地更新这条收件箱条目(而非新建),并给出可撤销提示。

关键:单条理清作用于已存在的条目,应用即「就地理清」,把模糊条目转成可执行条目。

3.3 批量理清(Batch Clarify Queue)

入口:回顾报告里的「收件箱待整理」区 → 「批量理清」按钮;或收件箱视图 AppBar 的 ✨ 按钮。

流程:

  1. 全屏队列,顶部进度「第 n / 共 m 条」。
  2. 逐条展示 AI 的理清卡片(同单条),底部三个动作:应用并下一条 / 跳过 / 编辑
  3. 顶部开关「自动应用高置信度建议」:开启后,置信度 ≥ 0.8 且 AI 判定 clear 的条目自动应用并跳过停留, 只在需要人判断的条目处暂停。
  4. 队列结束给出小结(已理清 / 已跳过数量)。

3.4 AI 契约(理清)

单次调用 chat/completionsresponse_format=json_object,输出:

{
  "clear": true,
  "confidence": 0.0,
  "note": "为什么模糊 / 简短点评",
  "outcome": "期望结果(一句话,澄清用,可空)",
  "questions": [
    { "q": "它的完成标准是什么?", "options": ["拍完即可", "整理进相册才算", "其他"] }
  ],
  "suggestion": {
    "title": "动词开头的下一步行动",
    "type": "task | project",
    "when": "none | today | evening | someday | YYYY-MM-DD",
    "deadline": null,
    "list": null,
    "tags": [],
    "children": ["步骤1", "步骤2"]
  }
}
  • clear=false 时必须给出 questions(1~2 个),suggestion 可为「初步猜测」。
  • 收到用户回答后再次调用(带上问答),应返回 clear=true 的最终 suggestion
  • System Prompt 注入今天日期 + 已有项目/领域/标签,倾向挂到已存在的清单上。

3.5 落库(应用)规则

对被理清的既有条目 id

  • 更新标题;设置 When / 死线;按 list 调整归属(收件箱/项目/领域)。
  • tags:已存在则关联,不存在则新建后关联。
  • type=project:把该条目转为项目children 作为项目下的任务创建。
  • type=task 且有 children:children 作为该任务的检查项。

4. F2 · 一键回顾报告

4.1 用户故事

作为用户,我想每周点一个按钮,立刻看到「系统现在哪里堵了」,并能逐条跳过去处理, 不必自己一个清单一个清单地翻。

4.2 报告结构

入口:主页 AppBar 的「回顾」图标。点开即生成(本地扫描,秒出),结构:

区块 含义 触发规则 就地动作
待整理收件箱 收件箱里未理清的条目 start=inbox 的活跃任务 批量理清 / 打开收件箱
孵化区到期回顾 将来/某天里放久了的想法 start=someday 且创建 > 14 天 跳到「将来」
项目健康 缺少「下一步行动」的项目 活跃项目且其下 0 条活跃任务 跳到该项目补行动
停滞任务 随时区里被长期遗忘的散任务 anytime 无日期、无项目、创建 > 14 天 跳到「随时」
AI 本周聚焦 基于以上汇总给出的 2~3 句建议 已配置 AI 时生成

4.3 行为细节

  • 报告为只读快照,生成时间戳显示在顶部,可「重新生成」。
  • 每个区块显示数量徽标 + 前若干条目预览;空区块折叠为「✓ 一切就绪」。
  • AI 建议段落:未配置 Key 时整段隐藏,并提示「配置 AI 模型可获得每周聚焦建议」。
  • 全部就绪时展示鼓励性空态(呼应 Things 的「享受你的一天」气质)。

4.4 AI 契约(回顾建议)

把各区块的数量与少量样例标题汇总成一段文字,单次调用返回 2~3 句中文聚焦建议 (纯文本,不要求 JSON),强调「先清空收件箱 → 再补项目下一步 → 最后处理孵化」。


5. 技术方案

5.1 新增 AI 模块(厂商无关,复用 LlmClient

lib/ai/clarify/clarify_models.dart   # ClarifyResult / ClarifyQuestion / ClarifyAnswer
lib/ai/clarify/clarify_service.dart  # GTD 教练 Prompt + JSON 解析 → 复用 DraftItem
lib/ai/review/review_models.dart     # ReviewReport / ReviewSection / ReviewItemRef
lib/ai/review/review_service.dart    # 本地扫描分类 + 可选 AI 建议

ai_providers.dart 暴露 clarifyServiceProvider / reviewServiceProvider

5.2 数据层新增

ItemRepository

  • setType(id, type):理清转项目用。
  • activeSnapshot():一次性取全部活跃任务/项目,回顾服务在内存中分类,避免散读多个流。

5.3 表现层新增

lib/presentation/shared/widgets/clarify_sheet.dart    # 单条理清面板
lib/presentation/screens/batch_clarify_screen.dart    # 批量理清队列
lib/presentation/screens/review_report_screen.dart    # 一键回顾报告

入口接线:item_row.dart 增加「理清」滑动动作;home_list_screen.dart AppBar 增加「回顾」入口。


6. 验收标准

  • 收件箱任务左滑出现「理清」(仅在配置 AI 时),可对模糊条目追问并就地理清。
  • 批量理清可逐条应用/跳过/编辑,支持「自动应用高置信度」。
  • 主页可一键生成回顾报告,四个区块按规则正确分类、可就地跳转。
  • 未配置 AI Key 时:理清入口隐藏;回顾报告正常生成且隐藏 AI 建议段。
  • 所有 AI 输出均经用户确认才落库;落库提供撤销/跳过。
  • flutter analyze 无新增错误。