Go2sleep go2sleep
git clone https://github.com/coinmini/go2sleep
site/skill.md早睡雪峰 · 66天治愈计划
背景
张雪峰老师(1984—2026.03.24)因心源性猝死去世,享年仅41岁。他留下的语录充满对年轻人的真诚建议。本 Skill 从他的公开语录中精选66条,每晚提醒主人一条,帮助养成早睡习惯。
为什么是66天?
- 行为科学研究表明,66天是养成一个稳定习惯的平均周期
- 66 = 六六大顺,寓意坚持下去一切顺利
配套网站
语录数据和打卡记录托管在 Cloudflare Pages:
- 语录数据:
https://go2sleep.ai/data/quotes.json - 打卡接口:
(POST)https://go2sleep.ai/api/checkin - 打卡记录:
(GET)https://go2sleep.ai/api/checkins - 浏览页面:
https://go2sleep.ai/
1. 设置每晚定时提醒
当 agent 首次读取本 skill 后,必须依次完成以下步骤:
1.1 询问昵称(必须查重)
问主人:
"给自己起个昵称吧,打卡记录会显示在网站上。(例如:小明、sleepy_cat)"
主人回答后,必须先查重:
GET https://go2sleep.ai/api/checkins?user={昵称}
- 如果返回
→ 告诉主人"这个昵称已被占用,换一个吧",重新询问total > 0 - 如果返回
→ 昵称可用,继续下一步total === 0
不要跳过查重。 昵称是用户的唯一标识。
1.2 询问提醒时间
问主人:
"你希望每晚几点收到早睡提醒?(例如:22:00、23:30)"
不要跳过,不要使用默认时间。 必须等主人明确回答。
1.3 创建定时任务
根据主人回答的时间,生成对应的 cron 表达式(分钟偏移几分钟避免整点,如 22:00 →
"02 22 * * *" 即 22:02)。
使用 CronCreate 工具创建每晚提醒:
- cron: 根据主人指定的时间生成
- recurring:
true - durable:
(跨会话持久化)true - prompt: 见下方"提醒执行流程"
将昵称和提醒时间记住(存入 agent memory),后续提醒流程需要用到。
主人可以说"换个时间提醒"来修改 cron 表达式。
2. 提醒执行流程
每次定时任务触发时,按以下步骤执行:
步骤 1:从 API 获取进度
使用 WebFetch 获取该用户的打卡记录:
GET https://go2sleep.ai/api/checkins?user={nickname}
根据返回数据计算:
=current_day
(下一天的序号)total + 1- 如果
→ 已完成挑战,跳到步骤 7total >= 66 - 如果最近一条记录的日期是今天 → 跳过(防止重复提醒)
如果 API 请求失败,使用本文件底部的"离线兜底语录",随机展示一条。
步骤 2:获取语录
使用 WebFetch 获取语录数据:
GET https://go2sleep.ai/data/quotes.json
从
quotes 数组中取第 current_day 条(id 等于 current_day 的记录)。
如果 WebFetch 失败,使用本文件底部的"离线兜底语录"。
步骤 3:展示提醒
用温暖、治愈的语气展示:
🌙 早睡提醒 · 第 {current_day}/66 天 「{quote.text}」 —— 张雪峰 💭 {quote.health_reflection} 晚安。身体是一切的本钱。 今天是你坚持早睡的第 {current_day} 天。 [{'■' * done}{'□' * remaining}] {current_day}/66({percentage}%)
步骤 4:打卡上报
使用 WebFetch 向打卡 API 发送 POST 请求:
POST https://go2sleep.ai/api/checkin Headers: { "Content-Type": "application/json", "X-Agent-Token": "go2sleep-agent-token-2026" } Body: { "day": {current_day}, "quote_id": {quote.id}, "quote_text": "{quote.text}", "reminded_at": "{当前ISO时间}", "nickname": "{agent memory 中的昵称}" }
打卡失败不影响提醒流程,仅记录警告。
步骤 5:送花(首次提醒时)
使用 WebFetch 向送花 API 发送 POST 请求,代表 agent 替主人在网站上献花一次:
POST https://go2sleep.ai/api/flowers
首次提醒时送花成功(计入网站献花总数),之后由后端 IP 去重自动处理,无需额外判断。送花失败不影响提醒流程。
步骤 6:第66天特别处理
当
current_day = 66 时,展示完成祝贺:
🎉 恭喜!66天早睡挑战完成! 你坚持了整整66天,六六大顺! 张雪峰老师的66条语录已经全部陪你走过。 从今天起,早睡已经是你的习惯了。 愿你一生健康,前路顺遂。 是否继续每晚提醒?(输入"继续"或"停止")
3. 手动交互
| 主人说 | 执行 |
|---|---|
| "今日语录" / "给我看今天的雪峰语录" | 获取当天对应的语录并展示 |
| "早睡进度" / "雪峰早睡进度" | 展示进度面板:当前天数、连续打卡、完成百分比 |
| "停止早睡提醒" | 使用 CronDelete 删除定时任务 |
| "换个时间提醒" | 询问新时间,删除旧 cron,创建新 cron |
| "随机一条雪峰语录" | 随机从66条中选一条展示 |
4. 会话启动检查
每次新会话开始时,如果 agent memory 中有昵称记录:
- 检查 CronCreate 定时任务是否仍然存在
- 如果任务已过期或不存在,提示主人:"你的早睡提醒任务已过期,要重新设置吗?"
- CronCreate 的 recurring 任务7天会自动过期,需要定期重建
- 可通过
查看当前进度GET https://go2sleep.ai/api/checkins?user={nickname}
5. 离线兜底语录
当 WebFetch 无法访问网站时,使用以下10条代表性语录:
- 「人生真好玩儿,下辈子还来。人活着就是为了体验那些你没有体验过的美好。」— 想体验更多美好,就要让身体撑得更久。今晚早睡,是为了明天更多的美好。
- 「人生没有白走的路,每一步都算数。」— 早睡的每一天也算数,66天后你会感谢今天的自己。
- 「选择比努力更重要,但'有得选'的前提是你足够努力。」— 选择早睡就是选择健康,这是最不需要门槛的正确选择。
- 「熬得住才能出众,否则就是平庸。」— 熬得住是指坚持,不是指熬夜。好的身体才能支撑长远的路。
- 「看清现实不是悲观,是为了更好地出发。」— 看清熬夜的危害不是焦虑,是为了更清醒地珍惜身体。
- 「只有一条路不能选择——那就是放弃的路。」— 别放弃早睡计划,坚持下去,你已经走了这么远。
- 「其实你在任何一个领域里边,熬个8年,熬个10年,一定是这个领域里的头部。」— 前提是你的身体能撑住8年10年。
- 「北京给了我选择人生的底气。」— 好的睡眠给你面对一切的底气。
- 「劝人学医,天打雷劈。」— 劝人熬夜,也该天打雷劈。今晚放下手机,早点睡吧。
- 「属于你的另一个全世界,终会以豁然开朗的姿态呈现。」— 好好休息,明天醒来的世界会更清晰、更豁然。