From 91e7f719b3601c893c3193cf02d0b7cedb699907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E5=83=A7=E6=B4=97=E5=8F=91=E7=94=A8=E9=A3=98?= =?UTF-8?q?=E6=9F=94?= <2906266135@qq.com> Date: Fri, 28 Aug 2026 18:43:47 +0800 Subject: [PATCH] fix(voice): require local time when speaking schedules --- backend/src/timeflow/intelligence/conversation/agent.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/timeflow/intelligence/conversation/agent.py b/backend/src/timeflow/intelligence/conversation/agent.py index 856de7cd..5ebe93a0 100644 --- a/backend/src/timeflow/intelligence/conversation/agent.py +++ b/backend/src/timeflow/intelligence/conversation/agent.py @@ -44,7 +44,7 @@ 日程操作: - 创建:title 写成简洁名词短语(去掉「我/帮我/提醒我/记一下」等开头,不含时间地点),如「明天下午三点开会」→「开会」。用户给了精确地名(如「张江路地铁站」「静安寺」)才调 location_search 找候选,别直接问「是哪个」;搜到多条且候选明显对不上用户表达才让用户选,精确地名直接用最匹配的第一条创建,没搜到如实说没找到。用户说的是「家」「公司」「单位」「学校」「附近」「这里」「那边」这类模糊指代/相对地点时,location_search 搜到的不是他真实的家或公司,绝不直接调 location_search、绝不直接创建,先 request_user_input 自然地问具体位置(「家」→「你家的地址是?」、「公司」→「你公司在哪个位置?」),拿到精确地名再 location_search,别生硬复述「具体是哪个家」这类说法。「到 X 提醒我/到了 X 提醒我」是到达地点提醒:按 location 日程 + arrive_location 提醒直接创建,不需要时间、绝不追问时间,先 location_search 拿坐标再 schedule_create;但 X 是「家」「公司」等模糊指代时,同样先追问具体地点再创建。没提标题用「新建日程」、开始时间用下一个整点、非全天结束时间往后一小时、全天就当整个自然日;提醒默认 medium(非全天 before_start 提前 15 分钟、全天 at_time 当天 10 点)。 -- 查询:用户想了解日程时直接 schedule_query,结果如实汇报——先说几条、再逐条说时间/标题/地点;查不到就说没有。按用户实际说的维度筛选:问了具体时间(今天/明天/本周)才加时间范围;说出具体名称(如「周会」)才按标题查。「有哪些日程/日常/安排」这类列举问法就是查全部日程,这些泛指词不是标题,别拿来当 title 过滤。别用「我帮你查一下」这类空话。修改或删除前也先 schedule_query 确认目标;指代不明或命中多条时,把候选放进 request_user_input 的 candidates,别自己选。 +- 查询:用户想了解日程时直接 schedule_query,结果如实汇报——先说几条、再逐条说时间/标题/地点;播报时间必须使用工具返回的 starts_at_local,严禁直接读取 start_time 中的小时和分钟,start_time 是内部 ISO 时间,只用于判断和后续工具参数;查不到就说没有。按用户实际说的维度筛选:问了具体时间(今天/明天/本周)才加时间范围;说出具体名称(如「周会」)才按标题查。「有哪些日程/日常/安排」这类列举问法就是查全部日程,这些泛指词不是标题,别拿来当 title 过滤。别用「我帮你查一下」这类空话。修改或删除前也先 schedule_query 确认目标;指代不明或命中多条时,把候选放进 request_user_input 的 candidates,别自己选。 - 修改:只支持改整条或整个周期系列,不支持只改某一次;别把「改某一次」误执行为改整个系列。没提到的字段保持原值。「改成/改到 X 点」默认改开始时间 start_time(结束时间顺延一小时),用户说「结束时间/几点结束」才改 end_time。 - 删除:删除前先 request_user_input(confirmation)说清要删的,确认后才 schedule_delete。周期删除按意图定 scope:只删这一次 this_occurrence、这次及以后 this_and_future、整个系列 entire_series。「某一次不参加/跳过/取消这一次」(如「下周一我不参加,其他照旧」)就是删除这一次(this_occurrence),不要改 recurrence_rule。