日程功能完善
一、需求分析
1.1 日程(或闹铃)功能,固定时间提醒
- 久坐提醒,设置例如每x分钟提醒一次,比如喝水,活动,休息等,控制工作时间。本部分不牵扯AI记忆。
- 日程记录,记录一天所需要做的事情TODO,比如学日语,写代码,画画等。这些可以以
天,周,年为单位记录。当AI发起主动对话的时候,会以此为依据,根据时间和内容和已完成内容,给出提醒。 - 例如,假如我每天设定的日程是这样的,那么达到对应时间,就会触发主动提醒(txt演示,实际上需要更复杂的比如json):
title = 每天の日常计划~
type = daily
character = 钦灵
content = """
12:00: "问候一下莱姆有没有起床,一直都是中午才起来的懒虫。"
14:00: "提醒莱姆午休差不多结束了,赶紧起床写代码啦!"
17:10: "莱姆工作很久啦,提醒他该吃晚饭了。"
19:20: "好啦,该提醒莱姆继续工作了哦,加油更新代码!"
21:20: "提醒一下莱姆这会可以找朋友一起玩游戏了哦。"
23:00: "提醒一下莱姆,他有个朋友叫老张要督促他学习准备12月的考试,不然就要抽死他"
00:00: "提醒一下莱姆,这个时候可以画画或者聊天了呢。"
02:00: "这时候是程序员该睡觉的时间啦,提醒莱姆去睡觉吧。"
"""- 最后,每年的设定,可以作为优先级更高的提醒,作为新的一天第一次主动对话的话题等,因为这部分记忆应该是关于生日或重要日子,节日(可以通过系统直接调用获取)等方面。关于这个,全局只要设定一个就行了。
content = """
"11.09": "今天是莱姆的生日"
"01.04": "今天是Slary要过生日的日子"
"""1.2 TODO 事项功能,作为AI主动对话的话题等。
- 和日程一样,可以通过添加一个列表主题,然后在内容中添加TODO事项,当AI发起主动对话的时候,会以此为依据,根据时间和内容和已完成内容,给出提醒。
title = LingChatのTODO事项~
type = todo
character = 钦灵
content = """
1: "今天要出门运动一下哦"
2: "今天记得Apex马上要更新了"
3: "今天可以画画"
4: "今天可以写代码"
5: "今天可以学习日语"
"""- 每个TODO事项,拥有一个完成的状态或截止日期,重要性等。(所以要使用json存储)
二、系统设计
1.1 日程功能存储逻辑(初级,非数据库版本)
- 使用json存储,每个主题对应一个json文件,文件中存储主题的名称、类型、角色、内容等。
- 在此,我们定义每个主题列表为
ScheduleList,每个日程为Schedule,ScheduleList拥有一下属性:
yaml
title: string // 日程主题名称
type: string // 日程主题类型,如daily或以后的其他类型
character?: string // 日程主题角色(如果没有则全都提醒)
avalibaleWeeks?: int[] // 可选项,表示该日程主题在周的哪几天提醒,默认全部
scheduleList: Schedule[] // 主题对应的日程列表- 对于每个
Schedule,拥有以下属性:
yaml
title: string // 日程名称
time: string // 日程时间
content: string // 日程内容
prompt?: string // 可选项,可以作为替代content的给ai更详细的提示词- 特别的,对于年日历的设定,可以单独设定一个文件,存储在
schedule文件夹下,文件名为year.json,属性如下:
yaml
contents: Schedule[] // 年日历内容这里的Schedule和上面的一样,但从一天的时间变成了日期(或日期+时间)。
1.2 TODO 事项功能存储逻辑(初级,非数据库版本)
- 使用json存储,每个主题对应一个json文件,文件中存储主题的名称、类型、角色(这里作为可选)、内容等。
- 在此,我们定义每个主题列表为
TodoList,每个TODO事项为Todo,TodoList拥有一下属性:
yaml
title: string // 待办事项主题名称
character?: string // 待办事项主题角色(可选)
todoList: Todo[] // 主题对应的日程列表- 对于每个
Todo,拥有以下属性:
yaml
content: string // 待办事项内容
completed: boolean // 是否完成
deadline?: string // 可选项,表示该待办事项的截止日期
importance: int // 重要性,0-10,0表示不重要,10表示非常重要额外、废弃思路
似乎不太需要的需求
- 然后,每周上的设定可以如下,每周的设定上,可以作为仅提醒AI一次的(新的一天第一次主动对话的话题):
- 感觉这个不太需要,可以考虑最后再做,直接通过下面的年(可以通过月查看)来设定似乎更靠谱,一般人也不需要一周固定安排。
title = 每周の日常计划~
type = weekly
character = 钦灵
content = """
1: "今天要出门运动一下哦"
2: "今天记得Apex马上要更新了"
3: "今天可以去打羽毛球啦"
4: "明天可以睡大觉了"
