# 拾时信息理解与提醒规范 v0.6

日期：2026-10-12。执行规则库版本：0.6.0。现行实现规范，替代v0.5中关于简单指令、指定提醒与补充重解析的处理方式。

## 1. 产品目标与输入

日程入口提交即表示希望整理和安排，不再询问参与意愿；笔记单独保存，不解析提醒。优先识别一个主要事项，过滤截图无关内容，相关步骤和细则归入同一事项。确有多个独立事项时一次选择保留项，不默认全建。不从群名、头像或年级推断用户身份。

原始文字、原图、来源、首次submittedAt及输入时区先保存。重试和补充不改变首次时间；原文与摘要、用户回答及提醒计划分别保存。图片直接请求视觉模型，没有OCR前置步骤。状态栏时钟不是消息时间，相关日期分隔线只作用于对应消息。

来源为direct且确属当前用户直接指令时，相对日期以首次提交为参照。粘贴、分享、图片及“老师说／原通知／转发”等引用中的相对日期依可靠消息日期解释；缺少依据才问消息日期。输入渠道本身不能证明转述消息是在今天发送。

## 2. 本地优先链路

```mermaid
flowchart TD
    A[保存原始输入与首次时间] --> B{图片还是文字}
    B -->|图片| M[视觉模型理解]
    B -->|文字或语音转写| C[本地单事项解析]
    C -->|明确| V[统一依据与时间校验]
    C -->|已知字段缺失| Q[页面或通知栏选项]
    C -->|复杂或不支持| T[文字模型理解]
    Q --> L[保存回答，先本地重建候选]
    L -->|本地可完成| V
    L -->|仍需理解| T
    M --> V
    T --> V
    V -->|关键歧义| Q
    V -->|无时间| N[无提醒待办]
    V -->|可靠时间| P[统一提醒计算]
    P --> S[保存并登记普通系统通知]
```

本地支持一个行动、一个时间表达的短文本：明确日期、今晚／明晚、中文钟点、分钟、半点、一刻／三刻、本周／下周、相对时长、明确提前量，以及单节点开放或截止。含多个时间、长通知、多句细则、条件、否定、暂定、重复、改期和引用时转模型；关键词只作分流，不代替完整理解。

已知单字段歧义直接生成needs_confirmation，不登记模型任务。选项后先本地重建并校验，能完成则在同一事项ID上安排提醒，无需模型配置。复杂内容由JobScheduler联网后台任务续跑，不增加常驻服务、轮询或闹钟界面。加急请求遭系统拒绝时回退普通持久化任务。

## 3. 结构化事实与证据

候选包含title、action、evidence、details、nodes、ambiguities。时间节点kind可为open、start、deadline、end、repeat、unknown、reminder。节点expression逐字复制原文，evidence必须包含它；行动和每项细则也需要连续原文依据。

reminder是用户指定的提醒时刻，与事项发生时刻分开。原文明确提前要求可在对应节点附leadMinutes及leadEvidence，两者成对出现；本地验证原话与整数一致，范围0至10080分钟。准时提醒为0。模型不得提供默认提前量、时间戳、完成状态或系统调度决定。

协议2支持新节点和提前字段；JSON根version仍为1，旧节点缺少新字段正常读取。网关对协议1或缺失协议的旧客户端移除提前字段，并将reminder兼容为旧start；旧包仍使用旧语义。升级不批量改写用户已保存或手动设置的提醒。新客户端也按原文语法复核旧服务将明确提醒误标为start的情况。

标题通常6至16字；action只写核心行动，通常20至35字。入口、材料范围、截图要求、提交形式、文件命名、接收对象和适用条件分别成条。细则不生成独立完成状态。摘要不覆盖原文，不因缩短而删掉条件或否定。附件名不是附件正文，网址不是已读取的网页。

图片先形成相关transcript，再逐字复制依据；视觉折行可还原为一句，但同一响应的依据、空格和换行必须一致。不转写状态栏、群名、头像、无关附件和邻近消息。图片依据校验不能证明转写完全正确，须用图片样本评估。

## 4. 时间解释

- 日期、事项时间、提醒时间、消息时间和提交时间各自有含义，不能互相替代。
- “明晚九点”明确为次日21:00；无早晚的1至12点必须只确认时段。冒号时刻及21点等明确24小时表达可直接解释。
- 中午12点和凌晨0点明确；上午／下午／晚上12点需确认。中午3点、上午15:00等矛盾只问具体时刻，不问消息日期。
- 直接提醒仅有明确钟点时默认首次提交当天；当天已过则选择日期，不静默滚到明天。仅有事项钟点缺日期时问“这件事是哪天？”。明确过去日期保持过去，不补发。
- “半小时后”等相对时长以首次submittedAt为起点，重试或晚补充不重新倒计时；当前链路不把旧消息的相对时长锚定到导入时刻。
- 只有日期保留日期精度，09:00是通知策略，不冒充具体截止时刻；指定分钟级提前量若缺少具体钟点，必须补充钟点。
- 缺失年份优先采用用户明确回答；否则只在提交日前一年、当年和后一年中选择唯一最近且相差不超过120天的合法日期。最近日期已过不滚到下一年。学年与年级名不构成年份依据。
- 缺少年份先选最近年份再核对星期，不能为了匹配星期选择更远年份。非法日期、时区不存在或重复的当地时刻，以及真实星期冲突都需确认。
- 本周／下周以可靠参照日期所在周计算；裸写周五、月底、上旬、节后等不能唯一解释时保持待补充。
- 支持中文年月日、数字年月日、同月省略范围及24:00次日零点；不自行补造结束时间。
- 报名、申请、采集、办理窗口使用open/deadline；到场活动使用start/end。学年、历史统计范围、他人期限和日常客服时间不生成用户提醒。
- 预计、暂定且最终时间另行通知不登记预计时刻。改期仅保留最新生效节点，旧时间作历史细则；取消不沿用旧节点，延期未定保持unknown。历史事项自动匹配仍未实现。

## 5. 提醒优先级与策略

| 时间事实或要求 | 行为 |
|---|---|
| 时间明确修饰“提醒我／通知我” | 指定时刻提醒，不套默认提前量 |
| 原文明确“提前多久／准时提醒” | 按对应事项节点和原文要求计算 |
| 只提供事项开始 | 默认提前30分钟；默认提前点已过而开始尚未来到时，按开始时刻 |
| 报名或办理开放 | 开放时提醒 |
| 只提供明确截止 | 截止前1小时一次；导入时已在最后1小时且余时超过2分钟，则尽快提醒一次 |
| 只提供结束 | 展示节点，默认不提醒 |
| 日期级开放、开始或截止 | 当日09:00一次；当日09:00已过则尽快一次，文案保留日期精度 |
| 原文无时间 | 保存待办，不提醒、不追问 |
| 重复 | 保存待规划；完整无限期规则不要求补造结束日期 |

例：“明天下午3点提醒我参加会议”按15:00；“明天下午3点参加会议”按14:30；“明天下午3点参加会议，提前10分钟提醒我”按14:50。指定提前时刻已经过去时不改用默认值。

指定提醒晚于同一事项明确截止时，保留原事实并确认一次有效时刻。多个可靠节点可生成多个提醒；同一事项同一触发时刻合并为一次通知。事实有关键歧义时当前实现阻止整组自动调度，部分可靠节点与待定节点并存仍待实现。

## 6. 必要确认与状态

问题只问影响主体、身份或时间的缺失。页面和通知共用短问题；通知最多两个快捷答案加“其他”入口，不复述整段通知或显示技术诊断。早晚选项保留原分钟；钟点冲突可以选择明确的完整时刻；过去的当天钟点可选明天。不要求对每条成功创建的事项确认。

回答与原文分开保存；问题是元数据，只有回答是新增事实。更正同一消息日期或年份用最新回答。修改时区、日期与原始输入的依据必须可核对。已确认字段不重复询问；完整答案仍无可靠结果时保留输入和答案，进入可重试失败，不循环同一个问题。

通知选项绑定当前事项修订；过期通知、重复点击、完成、删除、编辑及手动提醒均优先于旧响应。保存后安排提醒失败仍保留同一事项，不重复创建。需要模型时必须保存pending_ai才登记任务；本地确认不需要pending_ai。

自动创建条件为主体单一、行动及节点有依据、时间唯一合法、无关键歧义、已有本地提醒策略。不使用模型自报百分数作为放行门槛。格式错误、截断、证据错误或联网失败保留原文并可重试，不创建虚假提醒。

整件事完成取消全部未来提醒；通知划掉、查看详情和打开链接不等于完成。恢复只安排未来有效节点。重复的本次完成与结束系列属于两个层级，完整调度尚待实现。

## 7. 运行稳定性与验证

文字模型保持低强度思考，图片保持高强度思考；不以关闭事实校验换取速度。服务格式或依据错误可严格修复一次；网络和上游瞬时故障有界退避，鉴权、额度、请求错误不无意义重试。每次重试沿用首次时间、时区和原始内容。

每次扩大本地语法必须同时加入正反样本，检查最终状态、问题类型、提醒数量与时间、旧提醒取消和重复提交。测试覆盖晨间／晚间、跨午夜、过期日期、模糊早晚、冲突钟点、粘贴日期参照、条件、否定、重复、笔记、多事项及真实模型文字／合成图片。性能分别记录本地核心与远端耗时，不把JVM测试当真机能耗或总体准确率。

本轮验证见local-parser-validation-2026-10-12.md。开发集用于发现回归；独立保留集、真实用户样本及多厂商通知到达验收仍需后续完成。
