尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

任务切换开销与心流保护:用时间盒告别“再看五分钟”的拖延循环

任务切换开销与心流保护:用时间盒告别“再看五分钟”的拖延循环 “小可怎么还不洗澡马上就看完了我想先看完这一章。”这句话是不是特别熟悉不管是室友催你洗澡还是你催自己睡觉只要手头有一本好看的小说、一部上头的剧、一个还没调通的 Bug身体就像被钉在椅子上一样嘴里永远念叨着“就一会儿真的就一会儿”。结果一会儿又一会儿书看完了澡也没洗觉也没睡好第二天顶着黑眼圈继续后悔。今天这篇文章不打算讲什么高深算法也不讨论某个框架的新特性。我想从“看书不想洗澡”这个非常生活化的场景出发聊聊它背后的任务切换成本、心流保护、注意力管理以及一套可以实际落地的时间盒与任务收尾方案。考虑到很多读者本身是程序员我会尽量用计算机领域的思维方式去拆解这个问题并给出一份可以直接运行的小工具代码。如果你也经常陷入“再看五分钟”的循环不知道自己是懒还是拖延这篇文章应该能帮你找到原因并给你一套可执行的行动方案。1. 现象背后的“任务切换焦虑”1.1 书页合不上澡也洗不了先来描述一下这个场景。晚上十点半你窝在沙发上手里捧着一本推理小说。剧情正进入到关键反转每一页都在揭示新的线索。这时室友/妈妈/伴侣在门外喊了一句“怎么还不洗澡都几点了。”你嘴上答应“等我看完这一章。”然后一章接着一章。明明眼睛已经酸了但你就是不想停下来。等到终于把书合上抬头一看已经过去四十分钟。洗澡、吹头发、收拾完躺到床上已经是深夜。你开始懊恼为什么就不能在喊你的那一刻放下书这个场景放在程序员身上更加常见。代码里还有一个 Bug 没调通你告诉自己“调通就去吃饭”结果两个小时过去了饭凉了人也没挪窝。甚至有时候同事喊你去开会你都要把那行代码改完再走。这不是懒。1.2 这不是懒是任务切换成本过高很多人把这种“迟迟不切换任务”的行为简单归结为意志力差。但从认知科学和行为经济学的角度看真正的问题出在“任务切换成本”上。当你在看书或者说调试代码时你的大脑并不是只处理眼前这一件事。它会维护一个“当前任务上下文”包括你已经读到的剧情线、人物关系、推理线索又或者代码里的变量状态、函数调用链、出错路径。这些内容共同构成一个完整的工作集。如果你中途切换到洗澡意味着你要放下当前任务。把工作集暂存到“内存”里。去做另一套完全不同的动作。洗完澡后再回来恢复刚才的上下文。这个过程是需要消耗额外精力的。而人的大脑天然倾向于避免能量消耗于是你会本能地抗拒“切换”这个动作。加上书中剧情正处在高刺激阶段大脑正在享受这种持续的反馈就更不愿意停下来。所以“小可怎么还不洗澡”的答案不是“小可懒”而是“小可的大脑正在高效处理一个高优先级任务并且不愿意承担切换开销”。1.3 这篇文章能帮你什么这篇文章会用计算机系统里的概念帮助你把“不想切换任务”这个抽象感觉拆解清楚。然后我会给出一套具体的行动方案包括如何设置可中止点、如何设计结束仪式、如何用时间盒保护心流与生活节奏并提供一个简单的 Python 命令行任务提醒小工具帮助你从“被动拖延”变成“主动规划”。不保证你看完就立刻变成自律达人但至少下次再有人催你洗澡时你可以清晰地知道我现在不是懒我只是任务切换成本很高并且我已经有办法处理了。2. 用计算机的思维方式理解拖延2.1 上下文切换开销大脑也有“栈”在操作系统里CPU 执行进程时会在进程之间来回切换。每次切换系统都要保存当前进程的运行状态包括寄存器值、程序计数器、栈信息等然后再加载下一个进程的状态。这个过程叫上下文切换它是存在开销的。切换越频繁CPU 真正花在计算上的时间就越少大量时间都消耗在保存和恢复现场上。人脑在面对不同任务时也存在类似的上下文切换开销。比如你在写一份技术方案脑子里装满了需求背景、架构选型、风险点。这时你切换到聊天软件回一个“好的收到”再切回来你要重新回忆刚才的思路。如果只是简单回复还好如果是回复一段需要思考的消息这个上下文恢复成本就非常可观。看书看得正投入时切换到洗澡正是这种开销最大化的场景。因为看书是一个高认知卷入的活动你的工作集非常庞大而洗澡则是一个低认知、机械重复的动作。两者之间没有共享上下文切换等于完全清空再重新加载。2.2 心流状态为什么打断那么难受心理学家米哈里·契克森米哈赖提出过“心流”概念指的是一个人完全沉浸在某项活动中忘记时间流逝、自我意识减弱并且获得高度愉悦感的状态。读书读到入迷、写代码写到忘记吃饭、打游戏打到天亮这些都是典型的心流体验。心流状态有几个重要特征任务难度与个人能力匹配。有即时反馈。注意力高度集中。对时间的感知扭曲。在心流中被打断体验是非常糟糕的。你会感到烦躁、易怒甚至出现生理性不适。这不是矫情而是大脑从“高专注模式”强行切回“外部响应模式”时产生的真实抵抗。这时候如果有人喊你洗澡你的本能反应不是“好我去”而是“烦死了能不能别打断我”。这就是为什么越催你越不想动。2.3 未完成事务与蔡格尼克效应蔡格尼克效应指的是人们对未完成的任务记忆更深刻而且会产生一种持续的心理张力促使你去完成它。举个例子。你正在看一本推理小说凶手还剩最后一章没揭露。你大脑里始终悬着一个“未完成事件”这个悬念会产生认知负荷。只要故事没有闭合大脑就会不断提醒你还差一点还差一点。这种提醒是有侵入性的会让你很难安心去做其他事。放到“洗澡拖延”上就是书还没看完剧情还没闭合大脑不愿意释放这个任务。你强行去洗澡洗澡时脑子里也会一直惦记着凶手是谁。洗完澡回来你大概率还会继续翻几页直到彻底看完才安心。蔡格尼克效应本身是大脑的进化机制它帮助我们在远古时代不遗忘未完成的重要生存任务。但在现代信息过载的环境里它会成为拖延的一大推手。2.4 切换成本模型把上面的因素汇总一下可以抽象出这样一个模型。任务切换成本 当前任务未完成度 × 当前任务认知卷入程度 新任务启动成本这是一个我自己用来理解问题的简化模型不一定严谨但能说明核心如果你手头的事正进行到 90%且需要高度专注那你切换出去的成本就会非常高。相反如果当前任务只进行了 20%或者根本不需要动脑切换就很轻松。所以想让“小可去洗澡”最有效的方式不是提高音量催而是降低切换成本把阅读进度推进到一个“心理可暂停点”。减少新任务的启动阻力。给当前任务一个显式的“收尾信号”。下面我就围绕这三个方向展开具体方法。3. “再看完这一页”背后的三个误区3.1 误区一误判剩余工作量看书时你告诉自己“看完这一章就去洗澡”。但问题在于小说章节的颗粒度往往不是按照“可暂停点”设计的。作者为了使剧情紧凑常常在一章结尾设置悬念让你不得不翻到下一章。你以为“看完这一章”是一个很小的任务但实际当你读完这一章后你会发现自己被扔进了下一个钩子里。于是你再次承诺“那就再看一页”循环往复。在程序员工作中也是这样。你告诉自己“把这个函数改完就下班”但改完函数后你发现还有对应的测试要跑测试跑完又有一堆格式检查要过。你以为的“最后一公里”其实是一条盘山公路。解决思路是不要以任务本身的自然边界作为停止点而是主动设置一个独立于任务内容的停止点。比如“读完当前章的第 20 页就停”而不是“读完这一章”。因为“第 20 页”是一个明确、客观、提前确定好的阈值不随剧情推进而改变。3.2 误区二把“停止点”设得太远当别人喊你洗澡时你可能正处于小说开头剧情还没有进入高潮。此时你会觉得“反正才刚开始再看一会儿也没什么”。这个“一会儿”就是没有边界的停止点。更好的做法是在开始看书之前就设定一个总时长或总页数。比如“只看二十分钟”或“只看两章”。到点以后必须执行收尾动作。注意这里的关键词是“必须”而不是“尽量”。在执行层面可以借助前面的时间盒或闹钟工具。当闹钟响起不是进入“再五分钟”的协商流程而是立刻进入“收尾程序”用书签记录当前位置。在手机上记下一句“下次从这里继续”的备注。合上书。起身离开。这一套动作看起来机械但正是这种机械性才能把理性决策的负担从意志力中剥离出来。3.3 误区三缺少显式收尾动作很多人不愿意立刻去洗澡还有一个很现实的原因洗澡这件事在他们的心理表征里不是一个独立任务而是“洗澡 吹头发 换睡衣 收拾浴室 可能还要顺手洗衣服”的一长串计划。当你想到要执行这么一长串事情时大脑的第一反应是抗拒因为启动成本太高了。这在任务管理领域叫任务膨胀。你以为你不想洗澡其实你是不想做“洗澡”这个任务背后的整个项目。解决办法是给洗澡或者任意你想执行的收尾动作设计一个“极简启动版”只把“走进浴室”作为任务目标。水温、沐浴露、毛巾提前放在顺手位置。洗完出来以后吹头发坐在床上吹不用站在浴室里表演一气呵成。把大任务拆成极小步骤主要目的是降低启动阻力。一旦你完成了第一步“站起来”后面的行为惯性会帮助你继续。4. 一套可执行的任务切换方案4.1 设定“可中止点”而不是“终点”在正式开始一项高卷入任务之前先给自己划一条“停止线”。比如看小说你可以在翻开书之前先翻到目录找到你想看的章节。然后确定看到第 80 页停止或者看到第二十一章结束。这个停止点不是以“讲完一个完整段落”为准而是以你事先画的那条线为准。如果是调试代码可以提前设定最多再调 30 分钟30 分钟后不管有没有调通都必须停下来去做下一件事。当你把“必须完成”改成“按约定停”会发现心理负担明显减少因为大脑不再背负“一定要解决”的包袱。这里有一个小技巧叫“留下一个容易启动的尾巴”。资深写作者常说不要在写完一整章时收工而是写到一半停下来这样第二天回来的时候你知道接下来的句子要怎么连续写启动成本就非常低。放到洗衣服、看书、工作这些事上也是一样的。你可以选择把“看书”停在一个不太刺激的地方这样你的大脑不会因为悬念而一直挂念。4.2 把洗澡/休息设计成“流程闭环”如果你希望自己按照计划去洗澡光靠“计划”本身是不够的你需要一个可以反复执行的固定流程。把碎片动作连成一条流水线减少每个步骤的决策成本。一个简单的睡前收尾闭环可以是这样21:30 提醒“准备收尾”。21:35 合上书记录当前进度。21:38 把手机放到客厅充电。21:40 进浴室。22:00 出浴室吹头发护肤。22:15 上床阅读纸质书或听轻音乐。22:30 关灯睡觉。这个流程的优点在于你不需要在每一个节点问自己“现在要不要做”。流程替你做了决定。你只是按顺序执行。这和程序员在代码里写死状态机的逻辑是一样的状态转移条件一旦满足就自动进入下一个状态而不是每次都用 if 去重新判断。4.3 用 IF-THEN 减少决策消耗心理学中有一种非常有效的自我控制策略叫“执行意图”。它的核心语法就是 IF-THEN如果晚上九点半的闹钟响了我就立刻合上书去阳台站一分钟。如果我看完当前章节我就把书签放到第 20 页处然后去洗澡。如果我在床上拿起手机我先把它放到客厅充电再回来睡觉。IF-THEN 之所以有效是因为它把“要不要做”的决策提前做完了。到了触发条件出现时你不再需要使用意志力去发起行动只需要执行一个预设好的动作。你可以把计划写成一张提示卡贴在书桌或手机壳上。内容简单一点比如21:30 闹钟响起 → 合上书 → 播放一首固定的歌 → 去洗澡你甚至可以给这首歌设置固定曲目每次听到它身体就开始自动走流程不需要大脑做太多判断。4.4 给任务设置“显式边界”示例用程序员熟悉的方式来说就是给每个任务定义一个非常明确的入口条件和出口条件。接口看书入口坐下 打开灯光 翻开书出口累计阅读两章 或 时间到达 21:30退出动作记录进度 合上书 放在床头再看洗澡这件事接口洗澡入口拿换洗衣物 走进浴室出口吹干头发 穿好睡衣退出动作把毛巾挂好 走出浴室把生活中的常见事项按照接口定义的方式写下来。你会发现自己对“什么时候算结束”有了更明确的感知而不是靠“差不多了”这种模糊判断来决策。4.5 时间盒保护心流也保护生活时间盒是项目管理中常用的时间管理方法原来是用来给某项活动分配一个固定时间段的。在软件开发中如果你发现某个任务可能会无限蔓延就给它设一个时间盒到期则停止重新评估下一步。把时间盒用在“看书不想洗澡”上就是提前给“看书”分配一个时间盒比如 30 分钟。闹钟响起时盒子关闭任务无论进行到何处都会被打断。很多人担心这样会破坏心流。确实对高度专注的人来说强行打断会非常难受。所以时间盒的使用需要分两种场景场景一你正在做高价值深度工作比如写代码、写文章、做设计。这时不应随便打断应该在进入任务前评估好时间段并确保在计划停止点收尾。场景二你正在做消遣型阅读、看视频、刷信息流。这类活动没有真正的“截止日期”也就是随时可停。这时时间盒就是对抗拖延的好工具。因此下一次看书之前你先问自己我是在做深度工作还是在做消遣如果是消遣请毫不犹豫地设定时间盒。你是在保护自己的休息时间而不是在培养拖延。5. 一个简单的命令行小工具任务切换提醒器聊了这么多概念接下来我们来做一个真正能用的东西。假设你和小可住在一起你想提醒自己去洗澡又不想被“再看五分钟”困住。我们可以写一个 Python 命令行小工具完成三件事设定一个倒计时任务比如看 20 分钟书。时间到时发出提示音并显示预置的提示语比如“去洗澡”。要求你在命令行里输入确认文字确认后程序退出。这个小工具非常适合放在终端里配合番茄工作法使用也可以作为“洗澡提醒器”“睡觉提醒器”“离开工位提醒器”。5.1 功能设计先明确功能清单通过命令行参数设置分钟数和提示语。倒计时过程中可以随时用 CtrlC 中断。倒计时结束后播放系统提示音支持 macOS 和 LinuxWindows 也可以做到用 beep 频率。打印预设提示语并要求输入“yes”确认。支持循环提醒比如每 30 分钟提醒一次避免一次结束后就忘记。这里用 Python 标准库就能实现不依赖第三方包。无论你是 macOS、Linux 还是 Windows都能跑。5.2 完整代码下面给出完整代码文件命名为task_reminder.py。#!/usr/bin/env python3 # -*- coding: utf-8 -*- task_reminder.py 一个简单的命令行任务提醒器 - 输入分钟后进入倒计时 - 时间到后发出提示音 - 显示提醒文字等待手动确认 - 可循环运行适合作为看书/洗澡/休息的定时器 import argparse import sys import time import platform from datetime import datetime, timedelta def beep(times: int 3): 发出系统提示音。 兼容 macOS、Linux、Windows。 system_name platform.system() try: if system_name Windows: import winsound for _ in range(times): winsound.Beep(880, 500) # 频率 880Hz持续 0.5 秒 time.sleep(0.2) else: # macOS 和 Linux 都可以用 \a 的 ASCII 响铃字符 for _ in range(times): print(\a, end, flushTrue) time.sleep(0.2) except Exception as e: print(f[提醒] 无法播放提示音: {e}) def format_time(seconds: int) - str: 将秒数格式化为 分:秒 minutes, sec divmod(int(seconds), 60) return f{minutes:02d}:{sec:02d} def countdown(total_seconds: int): 倒计时显示每秒刷新一次。 使用回车符 \r 实现单行刷新。 start time.time() end start total_seconds while True: now time.time() remaining end - now if remaining 0: break print(f\r⏳ 剩余时间: {format_time(remaining)}, end, flushTrue) time.sleep(1) print(\r⏳ 时间到 ) def wait_for_confirmation(confirm_word: str yes): 等待用户输入确认词防止误关提醒。 while True: answer input(f输入 {confirm_word} 确认收到提醒: ).strip().lower() if answer confirm_word: print(✅ 已确认祝你生活节奏稳稳的。) break else: print(❌ 输入不匹配请再试一次。) def parse_args(): parser argparse.ArgumentParser( description命令行倒计时提醒器可用于洗澡、休息、下班等场景。 ) parser.add_argument( -m, --minutes, typefloat, default20.0, help倒计时分钟数默认 20 分钟。支持小数比如 0.5 表示 30 秒。 ) parser.add_argument( -t, --text, default该去洗澡了, help提醒文字默认是 该去洗澡了 ) parser.add_argument( -r, --repeat, actionstore_true, help开启循环提醒倒计时结束后继续等待下一次计时。 ) parser.add_argument( -c, --confirm, defaultyes, help收到提醒后需要输入什么来确认默认 yes ) return parser.parse_args() def run_once(args): total_seconds args.minutes * 60 now datetime.now() finish_time now timedelta(secondstotal_seconds) print(f[{now.strftime(%H:%M:%S)}] 开始倒计时 {args.minutes} 分钟) print(f预计结束时间: {finish_time.strftime(%H:%M:%S)}) print(按 CtrlC 可提前结束。) try: countdown(total_seconds) beep(times3) print(f {args.text}) wait_for_confirmation(args.confirm) except KeyboardInterrupt: print(\n\n你主动中断了倒计时。) print(没关系下一次再试试。) return False return True def main(): args parse_args() if args.repeat: print(循环提醒模式已开启按 CtrlC 结束。) while True: # 开启一个倒计时 should_continue run_once(args) if not should_continue: break print(等待下一轮开始...) time.sleep(3) else: run_once(args) if __name__ __main__: main()5.3 运行效果与命令示例先看基础用法。打开终端进入文件所在目录运行python3 task_reminder.py -m 20 -t 小可该去洗澡啦终端开始倒计时输出形如[22:10:32] 开始倒计时 20.0 分钟 预计结束时间: 22:30:32 按下 CtrlC 可提前结束。 ⏳ 剩余时间: 19:58 ⏳ 剩余时间: 19:57 ...倒计时结束后屏幕显示⏳ 时间到 小可该去洗澡啦 输入 yes 确认收到提醒:你输入 yes 后程序退出。如果想循环提醒比如每隔 40 分钟提醒一次喝水可以执行python3 task_reminder.py -m 40 -t 起来接杯水顺便活动一下肩膀 -r如果你希望确认词更短可以设置-c okpython3 task_reminder.py -m 45 -t 站起来远眺一分钟 -c ok运行该脚本时需要注意Windows 的winsound是系统内置模块不需要 pip 安装。macOS 和 Linux 使用\a响铃字符终端音量需要开启。如果你在服务器上运行没有扬声器提示音可能听不到。此时建议配合终端通知工具使用。5.4 如何把这套工具真正用起来工具本身很简单难的是怎么融入生活。这里给出一个参考用法。你可以在书桌旁边放一张便利贴写上晚上 21:30 启动洗澡提醒器终端执行python3 task_reminder.py -m 20 -t 小可去洗澡闹铃响后合上书 打开换洗衣物 走进浴室洗完躺下后记录今日完成事项每次执行前你不必思考“现在要不要看”而是先启动一个 20 分钟的倒计时让倒计时替你做决策。一旦形成了这种习惯洗澡就不再是“与意志力搏斗”而只是“响应一个预设信号”。当然这个脚本只是一个示例。你可以根据自己的习惯改造它。比如加入语音播报功能、接入飞书/企业微信机器人提醒、或者和智能音箱联动。重要的是把外部提醒变成你生活节奏的一部分。6. 常见问题与排查思路在实际使用过程中你可能会遇到各种情况。下面列出几个典型现象和对应的处理思路。问题现象常见原因解决思路设了倒计时闹钟响后还是不想动没有预写“收尾动作”临时决策消耗大提前写好 IF-THEN闹钟只负责触发不负责说服越催越不想去洗澡当前任务处于高卷入状态催促进一步放大抵触终止催促给对方一个“可暂停点”比如等他说完当前章节洗完澡躺到床上又拿起手机刷到半夜睡前缺少“物理隔离”步骤洗漱前把手机放到客厅充电不要带进卧室定好的时间盒总是被“再看一页”突破停止点设置得太模糊把“一章”改成“第 XX 页”或者只读 25 分钟看到一半停下来心理总是挂念剧情/任务处于悬念状态在停止前主动记录进度写一句“下次从哪里继续”用 Python 脚本时提示音没响终端声音关闭或服务器无扬声器检查终端音量更换为桌面通知方式6.1 如何应对“越催越不想动”如果你是小可的室友看到这里你应该明白催不是有效的策略。因为每一次催促都会变成一次新的外部打断打断本身就提高了小可的烦躁程度。更好的做法是创造一个环境降低切换阻力。比如帮他把毛巾和换洗衣物提前放到浴室门口。把浴室暖风提前打开。体谅地说一句“那你看到 X 点再去我帮你留灯。”这些动作的本质是把新任务的启动成本降到接近零。当你想让他去洗澡时不要只动嘴而是尽量让洗澡变得“随时可以无缝切换”。6.2 如何应对“没有看完就放弃”的愧疚感有些人不是拖延而是相反。他们强行中断了阅读去洗澡但洗澡时心不在焉总是纠结“刚才那一章还没看完”。结果澡洗得匆忙书也没看痛快。处理这个问题的方法是在计划停止点之前给自己留一个缓冲。比如你要洗澡但你的书正看到关键情节你可以预留出洗完后 15 分钟的阅读时间作为“悬念释放窗口”。这样你洗澡时大脑知道洗完可以接着看它就不会一直惦记。合理规划任务之间的衔接顺序而不是粗暴地硬切才是真正可持续的方案。6.3 如何应对“每天都提醒但每天都在拖延”一个人的行为习惯不会因为一款工具而彻底改变。如果你发现自己每天都在用同一个脚本提醒自己但每天都在忽略提醒那就说明问题可能不在提醒设备上而在你的生活节奏本身。这时候需要做一次复盘你晚上不想洗澡是因为白天工作太累吗是洗澡这件事本身太麻烦吗还是你在拖延睡觉因为第二天有不想面对的事如果是第三种情况时间盒和脚本都救不了你。你需要的不是更好的提醒器而是调整白天的任务安排减轻焦虑感。技术手段只能帮你“准时切换”不能帮你“解决根本问题”。7. 最佳实践与工程建议把上面的内容沉淀为可复用的建议分几个场景列举如下。7.1 在个人任务管理中引入“收尾协议”每次切换任务之前尤其是从高卷入任务切向生活事务时建议先执行一个固定收尾动作。收尾协议可以是简单的四步记录当前进度。保存必要信息。清理桌面。起身。这些动作的意义在于给大脑一个“任务已暂存”的信号。大脑只有在相信“这个任务跑不丢”的时候才愿意从高专注状态退出来。所以书签、笔记、TODO 列表都是降低切换成本的好工具。7.2 在团队协作中保护他人心流如果你是一名开发人员应该能理解被中途打断的痛苦。在团队协作中尽量减少对他人的非紧急打扰。在群里先留言而不是直接走到工位旁。如果对方正戴着耳机先发一条消息问一下是否方便。开会前 10 分钟提醒而不是提前 1 分钟才拉人。明确标注消息的紧急程度让接收方自己决定何时响应。尊重他人的任务切换成本是团队效率的重要保障。7.3 把生活程序化但保留弹性很多反对时间管理的人会说人生不应该像代码一样被写死。这句话有道理但它混淆了一个概念程序化不等于死板。程序化的核心是把重复性决策变成固定规则把宝贵的注意力留给真正重要的事情。你可以固定早餐吃什么。固定晚上丢垃圾的流程。固定周末整理房间的时间。固定睡前 30 分钟不处理工作消息。然后在剩余时间里保留大量自由空间。这样你既拥有了稳定性又不会变成一个僵化的人。7.4 关于工具的工程化建议如果你打算长期使用类似上面的脚本工具有几点小建议用版本管理工具维护脚本比如放到自己的 dotfiles 或 scripts 仓库中方便多台电脑同步。把参数默认值设置成你最常用的场景减少每次输入参数的成本。在脚本里增加日志输出方便回顾自己一周的执行情况。比如记录每次提醒时间和确认时间。不要依赖这一个脚本解决所有问题。工具越简单越容易坚持。比如你以后可以把脚本接入系统定时任务通过 cron 在每天晚上 21:30 自动弹出提醒完全不用手动执行。这样你少了一个“打开终端”的步骤执行阻力又降低了一分。8. 最后从小小的“合上书”动作开始回到最开始的场景。“小可怎么还不洗澡”“马上就看完了我想先看完。”如果你是小可读完这篇文章也许你会换一种回答“我设一个 20 分钟倒计时看完这一节就去。”这句话听起来差不多但内核完全不同。前者是“我无法决定什么时候停”后者是“我知道什么时候停并且愿意按约定停”。真正让你从“看书看到停不下来”里走出来的不是更强的意志力而是一套提前设计好的切换机制。合上书这个动作很难但如果你提前设置好停止点、收尾仪式和洗澡环境它就变得没那么难了。收藏这篇文章或者把里面的 Python 脚本保存到你的电脑里。下一次当你发现自己又说“再看完这一本”的时候不妨先打开终端给自己开一个 20 分钟的倒计时。书永远看不完澡也不能一直不洗。祝你今晚能在一个合适的节点合上书去洗一个舒服的热水澡。
返回列表