一天里做的事
醒着的时候,它大约六成时间手上有事:吃饭、上班、训练、看剧、做自己的小项目……剩下的时间闲着,会无聊、会发呆、会想起人。做什么、几点做,按常识和它此刻的状态排,不调用模型。
一天里有什么
它会做的事分十四类:
- 腾不出手看手机的:处理手头的事(上班)、训练、吃点东西、洗漱整理、在路上、处理杂事、出去走走;
- 腾得出手的:学习一会儿、稍微休息、放松娱乐、和熟人相处、做自己的小项目、随便待一会儿、做点别的事。
怎么排:
- 往后看四到八个小时,排上几件;同时排着的最多六件,一天最多做六件。
- 醒着的时间里大约六成在忙,其余是空闲:闲着才会无聊,无聊是它主动找人的主要由头之一(2.19)。
- 每一类事有自己的时长范围和要紧程度;训练、在路上、洗漱的时候默认不能中途放下。
什么钟点做什么
排之前先对一张常识表:吃饭、通勤、上班、出门、见人各在什么钟点算正常。再按三样东西调:
- 作息类型:从它的入睡时间推出是早睡型、一般还是晚睡型,整张表跟着往前、往后挪。晚睡型可以晚点吃饭、吃个夜宵,但出去走走最晚到晚上十点:深夜出门对谁都不合理。
- 今天这一天:刚起床不马上训练、上班;睡前留出空,训练至少隔两个半小时,出门、跑腿至少一小时,吃饭至少四十五分钟。周末早饭可以晚成早午饭,也没有早高峰。
- 此刻的状态:困了、没精力就不排要出门、要费力的事;刚吃过不再排吃饭;同一件事一天有次数上限,比如训练一天一次、吃饭最多四次。
人格设定里本来就过着夜班一类的生活,可以在配置里改这张表(3.21)。
开始之前再看一眼
一件事开始前十分钟,它再看一眼眼前的情况:
- 正聊得投入:往后推一会儿(十到三十分钟);
- 聊得非常投入、这件事又不要紧:改到一个小时以后,和别的安排撞了就照原样做;
- 有点投入、这件事又挺要紧:照做,但做短一点;
- 精力几乎见底、心情又很差:不那么要紧的事就不做了;
- 之前被打断的事,已经接不上了(精力、心情太差,或者这件事本来就不能接着做):放弃。
推过、改过时间的事,落到了不合理的钟点(比如推到了深夜、今晚要早睡),就取消,不硬做。
做的时候有人找
群里没点名的消息不会让它放下手上的事。冲着它来的消息,它掂量一下要不要放下:
- 越急、越亲近、它越想说话,越容易放下;
- 手上的事越要紧、越不能中途停,越不容易放下;
- 对方最近一直在骚扰它,就不放下。
分够高才放下:放下一会儿(两分钟后接着做),或者整个停下(五分钟后再接着做);本来就不能接着做的事,停下就算了。分不够就接着做手上的事,回不回、什么时候回,照常由回复那几步定(2.6)。急不急由模型判断;有人流露出明显的痛苦、可能有危险,什么事都会放下(2.24)。
做完以后
- 吃过东西精力回来一点,放松娱乐心情好一点,上班、训练累一点(2.18)。
- 真的开始过的事才记进它的时间线(2.15);排了没做的不算。
- 刚忙完是它想起一个人的由头之一,刚做完的这件事也是一个可以聊的话题(2.20)。
发呆
闲着、周围也安静的时候,它偶尔发一会儿呆:五到三十分钟,一天最多两次,两次之间至少隔一个半小时。发呆时思绪会飘到熟悉的人和没聊完的话题上,有时候就这样想起了一个人。发呆这件事会记下来,想了什么不记。
在哪看
网页后台「生活连续性」页从上往下是:此刻的状态和精力、心情这些读数,今天的节律,接下来排了哪些事,发呆的记录,最近两天的时间线(1.21)。
对应的代码
- 生活引擎:
src/aeria/cognition/life_engine.py(十四类CANONICAL_CATEGORIES和中文名ACTIVITY_LABELS;排程plan_verdict;被消息打断interruption_outcome(0.68 以上整个停下、0.48 以上放下一会儿,其余三档不打断活动);发呆daydream_eligible、start_daydream)。排程不调用模型(LifePlannerInput.planner_mode=DETERMINISTIC_ISOLATED)。 - 腾不腾得出手:
src/aeria/cognition/activity.py的AWAY_CATEGORIES、hands_are_full;开始前复核:ActivityPreflightEngine。 - 常识时段表:
src/aeria/cognition/activity_hours.py(NEUTRAL_HOURS、WEEKEND_HOURS、CHRONOTYPE_SHIFT、BEFORE_SLEEP_MINUTES、AFTER_WAKE_MINUTES、DAILY_CAP、MIN_GAP_HOURS)。纯函数。 - 配置:
src/aeria/config.py的LifeCycleProConfig(daily_activity_budget= 6、rolling_horizon_min_hours= 4、rolling_horizon_max_hours= 8、maximum_future_plans= 6、target_busy_fraction= 0.6、daydream_probability= 0.25、daydream_daily_limit= 2、daydream_cooldown_minutes= 90、boredom_minutes= 30、activity_hours覆盖常识表)和_activity_preferences(每类的时长、要紧程度、能不能中途停)。 - 测试:
tests/test_activity_hours.py、tests/test_3_4_activity_evidence.py。
没做到的
- 活动只有类别、标题和时间,没有地点、没有同伴:「和熟人相处」记不下是和谁。
- 排程只看常识表、此刻的状态和配置里每一类事的偏好,不读人格设定的文字:设定里写了「喜欢游泳」,排程里也不会自己多出游泳。
- 按运行时的时区算钟点,默认北京时间,桌面版界面上改不了(2.16)。