版本:0.3 · 主题:让 AI 帮你「理清」与「回顾」 状态:已实现并自测 关联高保真:
design/ai_clarify_review.html
v0.2 已经把「捕获 → 组织 → 执行」的主干跑通,捕获非常顺滑(小组件、Magic Plus、收件箱)。 但真实使用中暴露出 GTD 中后段的两个塌陷点:
- 理清(Clarify)缺位:收件箱里堆着大量「模糊念头」(如「拍笔记」「学日语」「研究自动化做视频」)。 这些条目时间、动作、归属都不确定,用户面对它们时不知道下一步是什么,于是收件箱越积越多, 最终丧失对系统的信任——这是 GTD 系统崩塌的头号原因。
- 回顾(Review)缺位:没有「每周回顾」的抓手。孵化区(将来/某天)的想法只进不出、 项目逐渐失去「下一步行动」而变成僵尸、随时区里的任务被长期遗忘,却没有任何机制提醒用户。
引入两个 AI 能力,补齐 GTD 的「理清」与「回顾」两段,且严格遵循既有的 「AI 只产出草稿与建议,决定权永远在用户」 设计红线:
- F1 · AI 理清(单条 + 批量):把任意成熟度的念头,由一个「很懂 GTD 的教练」帮忙 追问澄清、并整理成可执行的结构化条目;用户逐项确认后才落库。
- F2 · 一键回顾报告:一个按钮,自动扫描全库,生成结构化「回顾报告」 (待整理收件箱 / 孵化到期 / 项目健康 / 停滞任务),并附 AI 的本周聚焦建议, 每条都能就地跳转处理。
- 结构化导入/导出协议(YAML/JSON/Markdown)——已列入 backlog,0.4 再做。
- 参考资料(Reference Material)独立模块——Things 的做法是「领域内放无动作清单」, 本期不新增数据结构,仅在理清里允许 AI 给出「这是参考资料,建议放将来/某领域」的判断。
- 备注(notes)字段——产品定位不引入自由备注,AI 给出的「期望结果」仅作为澄清期的引导展示。
| 原则 | 说明 |
|---|---|
| 草稿优先 | AI 任何输出都是「可改、可删、可拒绝」的草稿,落库前必须经用户确认。 |
| 复用心智 | 理清结果复用既有的 When / 清单 / 死线 / 标签选择器,零新增学习成本。 |
| 优雅降级 | 未配置 API Key 时,理清入口隐藏;回顾报告仍可生成(只是没有 AI 建议段)。 |
| 教练而非裁判 | AI 对模糊条目先「追问」,引导用户自己想清楚,而不是替用户拍板。 |
| 安全可逆 | 批量操作、落库后都提供撤销/跳过;回顾报告是只读视图,跳转后由用户在原位操作。 |
- 作为用户,我在收件箱看到「拍笔记」这种模糊条目,希望 AI 问我一两个关键问题, 帮我把它变成「今天能直接做的一步」,而不是继续晾着。
- 作为用户,我积压了十几条收件箱,希望一次性排队过一遍,对高置信度的建议快速接受。
入口:收件箱(及任意清单)里,任务行向左滑 → 出现「理清」动作(✨ 图标,仅在已配置 AI 时显示)。
流程:
- 打开理清面板,展示原文,AI 开始分析(loading)。
- AI 判定该条目是否「足够清晰」:
- 模糊 → 展示 1~2 个澄清追问,每个问题给出快捷选项 + 自由输入。 用户作答后点「继续」,AI 据此再整理。
- 清晰 → 直接给出「理清卡片」。
- 理清卡片(结构化建议):可执行标题(动词开头的下一步行动)、类型(任务/项目)、 何时、死线、清单归属、标签、子步骤(项目→任务 / 任务→检查项)。卡片所有字段沿用既有选择器,可改。
- 用户点「应用」→ 原地更新这条收件箱条目(而非新建),并给出可撤销提示。
关键:单条理清作用于已存在的条目,应用即「就地理清」,把模糊条目转成可执行条目。
入口:回顾报告里的「收件箱待整理」区 → 「批量理清」按钮;或收件箱视图 AppBar 的 ✨ 按钮。
流程:
- 全屏队列,顶部进度「第 n / 共 m 条」。
- 逐条展示 AI 的理清卡片(同单条),底部三个动作:应用并下一条 / 跳过 / 编辑。
- 顶部开关「自动应用高置信度建议」:开启后,置信度 ≥ 0.8 且 AI 判定 clear 的条目自动应用并跳过停留, 只在需要人判断的条目处暂停。
- 队列结束给出小结(已理清 / 已跳过数量)。
单次调用 chat/completions,response_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 注入今天日期 + 已有项目/领域/标签,倾向挂到已存在的清单上。
对被理清的既有条目 id:
- 更新标题;设置 When / 死线;按
list调整归属(收件箱/项目/领域)。 tags:已存在则关联,不存在则新建后关联。type=project:把该条目转为项目,children作为项目下的任务创建。type=task且有children:children 作为该任务的检查项。
作为用户,我想每周点一个按钮,立刻看到「系统现在哪里堵了」,并能逐条跳过去处理, 不必自己一个清单一个清单地翻。
入口:主页 AppBar 的「回顾」图标。点开即生成(本地扫描,秒出),结构:
| 区块 | 含义 | 触发规则 | 就地动作 |
|---|---|---|---|
| 待整理收件箱 | 收件箱里未理清的条目 | start=inbox 的活跃任务 |
批量理清 / 打开收件箱 |
| 孵化区到期回顾 | 将来/某天里放久了的想法 | start=someday 且创建 > 14 天 |
跳到「将来」 |
| 项目健康 | 缺少「下一步行动」的项目 | 活跃项目且其下 0 条活跃任务 | 跳到该项目补行动 |
| 停滞任务 | 随时区里被长期遗忘的散任务 | anytime 无日期、无项目、创建 > 14 天 |
跳到「随时」 |
| AI 本周聚焦 | 基于以上汇总给出的 2~3 句建议 | 已配置 AI 时生成 | — |
- 报告为只读快照,生成时间戳显示在顶部,可「重新生成」。
- 每个区块显示数量徽标 + 前若干条目预览;空区块折叠为「✓ 一切就绪」。
- AI 建议段落:未配置 Key 时整段隐藏,并提示「配置 AI 模型可获得每周聚焦建议」。
- 全部就绪时展示鼓励性空态(呼应 Things 的「享受你的一天」气质)。
把各区块的数量与少量样例标题汇总成一段文字,单次调用返回 2~3 句中文聚焦建议 (纯文本,不要求 JSON),强调「先清空收件箱 → 再补项目下一步 → 最后处理孵化」。
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。
ItemRepository:
setType(id, type):理清转项目用。activeSnapshot():一次性取全部活跃任务/项目,回顾服务在内存中分类,避免散读多个流。
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 增加「回顾」入口。
- 收件箱任务左滑出现「理清」(仅在配置 AI 时),可对模糊条目追问并就地理清。
- 批量理清可逐条应用/跳过/编辑,支持「自动应用高置信度」。
- 主页可一键生成回顾报告,四个区块按规则正确分类、可就地跳转。
- 未配置 AI Key 时:理清入口隐藏;回顾报告正常生成且隐藏 AI 建议段。
- 所有 AI 输出均经用户确认才落库;落库提供撤销/跳过。
-
flutter analyze无新增错误。