news 2026/10/11 16:10:44

开发者自建ADHD外部大脑:命令行任务管理与时间盒系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开发者自建ADHD外部大脑:命令行任务管理与时间盒系统

“i-have-adhd”这个项目名第一次出现在我屏幕上时,我就愣住了。这不是矫情,是一个做了很多年开发的人,终于肯给自己贴上的标签。ADHD,注意力缺陷多动障碍,听起来像小孩才有的毛病,但成年开发者里带着它工作的比例高得离谱:一边亢奋地写原型,一边连吃完饭都拖到下午;时间感知失灵,五分钟的活儿感觉像两小时,两小时的deadline像永远没有;脑子里同时跑着十个线程,最后哪个都没跑到终点。

所以我做了这个小项目,叫“i-have-adhd”。它不是什么医学诊断平台,也不是什么科学严谨的心理治疗工具。它就是一个普通开发者给自己搭的“外部大脑”系统:用一套极轻量的流程,把大脑记不住、管不住、看不见的东西,全部放到一个可交互的命令行工具里。我把它做成了开源项目,陆续有朋友在抄,也有人直接拿配置去改。这篇文章,就把整个设计和实现过程拆开来聊聊,适合同样觉得“脑子不好使”的人,也适合想帮朋友做点什么的人——你可以直接照着抄,也可以当一篇产品设计案例看。

1. 这项目是怎么来的

1.1 承认“我有ADHD”之后,我反而轻松了

很多人第一次意识到自己有ADHD,不是在诊室,而是在某一晚加班写代码的时候。就我自己来说,那阵子刚接手一个跨平台系统,任务拆了三十多张卡片,每一张都标注“紧急”。头两天我打了鸡血一样狂写,第三天突然打开项目文件就烦,于是去调字体、配编辑器主题、折腾快捷键。等到一周过去,代码没写几行,键鼠驱动倒是重装了四遍。最要命的是,真正重要的事情——比如月底要交的阶段性成果——我总会拖到最后一夜,然后靠肾上腺素硬扛。

后来去医院评估,医生说我的注意力系统对“奖励”的感知阈值比普通人高,越远的奖赏越刺激不了大脑,越紧急的最后期限反而越能启动多巴胺。听完我反而笑了:这解释了所有“明明能做却不去做”的时刻。可光有解释没用,日子还得过。所以我决定从工具角度下手,试试能不能通过外部机制骗过这个大脑回路。

项目取名“i-have-adhd”,其实是我每天要对自己说的话。它不是自我可怜,而是提醒:你的大脑确实和别人不一样,你不需要假装正常,你要用别的方法。

1.2 这个项目到底做什么,适合谁抄作业

它的核心用途是四件事:任务捕获、任务分解、时间盒提醒、每日复盘。听起来很像常见的待办事项App,对吧?区别在于三点:

第一,它运行在终端里,打开就是收件箱,没有任何社交、统计图表、会员体系。没有需要花费耐心去学的东西,输入一条待办,回车,结束。第二,它默认把每条任务拆到“能直接开干”的程度,不让你站在任务前思考“从哪开始”。第三,它的输出是纯文本,我可以把数据丢进微信传输助手的发送框,也可以同步到网盘,不会绑定任何服务。

哪些人适合试这个方案?首先是和我一样,用市面上所有任务管理工具都撑不过两周的人;其次是觉得“计划不如变化”但依然相信系统能帮上忙的人;最后是开发者,你可以直接改造和复用它的代码,把它变成自己的形状。如果你只是轻度拖延,用普通日历就够了;但如果你的问题是“知道该做什么但无法启动”,那这套系统可能真的对味。

2. 设计思路:给ADHD大脑做一套外部系统

2.1 得先搞清楚三件事

做工具之前,我花了不少时间梳理ADHD大脑最让人头疼的三件事。

一是工作记忆太小。普通人的工作记忆像是桌面,最多同时摆开四五样东西;ADHD的桌面却常常只有一张纸那么大,放不下两个任务。所以工具的第一要义是“随时清空脑内感想”:想到什么立刻记下来,不要在心里默念“我等会儿再写”,因为等会儿就没了。

二是时间感知失灵。我认识一个很优秀的插画师,她说她画一张图要多久,自己永远估计不出来,只能以“早上开始画了”和“天黑了”为标准。这种状态叫“时间盲”,手头正在做的事会让人完全感觉不到时间流淌。所以工具要主动提醒你:时间盒到点了,该换换脑子了。

三是启动阻力过大。对一个ADHD大脑来说,“把垃圾倒了”需要经历“从沙发上站起来、走到垃圾桶旁边、弯腰、拿袋、下楼、丢、回来”十几个步骤,每一步都是一种消耗。如果任务清单上写着“完成项目文档”,那启动阻力直接爆表,大脑会立刻去找别的刺激。所以,必须把大任务分解到“两步以内能迈开腿”的粒度。

2.2 三条铁律:摩擦为零、全部外置、进度可见

基于上面三个洞察,我给项目立了三条设计铁律。

第一条,摩擦为零。任何功能如果超过两次点击(或者两秒的思考时间),ADHD用户就会弃用它,然后开始研究“怎么把终端变成复古像素风”。所以命令一律极短,比如task 写博客大纲这一个命令就可以完成捕获,自动设置优先级、自动打时间戳。不需要先选列表再选标签再选日期,那些普通产品里理所当然的“规范”,到这里全是劝退开关。

第二条,全部外置。大脑只能当“创作者”,不能当“存储盘”。所有待办、提醒、日程、复盘内容都落到文件里,系统定时读取,在关键节点主动推送。人不管内存,人只负责输入和行动。为此我强迫自己接受一个习惯:想到的任何事情,哪怕只是“书架上那本书该还了”,也必须先敲进任务箱,然后才允许放在脑子里。

第三条,进度可见。ADHD患者对“看不到成果”的容忍度极低。一个任务做了一半,没有勾选、没有状态变化,就会觉得“白干了”。所以系统里每一项完成都会产出一个明确的“完成”标记,并写入当日日志。这样一来,哪怕今天只完成了三件小事,晚上打开日志也有三个实实在在的勾,比任何安慰都管用。

2.3 技术选型我就没纠结过

有些朋友看了我的演示视频,问为什么不用 Electron、不做一个 Web App、不搞个漂亮界面。我的回答是:ADHD用户根本不会为了“界面好看”天天打开一个软件。界面越是华丽,越容易引发研究主题皮肤之类的偏题行为。

技术栈我选得非常务心:Python 写核心逻辑,JSON + Markdown 当数据存储,系统自带的通知服务做提醒,定时任务用 cron。没有数据库,没有云服务,没有队列。依赖只有一个 Python 标准库加一个用于系统通知的库,如果实在没有网络环境,甚至可以退化成打印文字。

选它的理由也很直接:

  • 纯文本存储意味着数据永远在我手里。今天用这个工具,明天不用了,信息还是普通文件,随便哪个文本编辑器都能打开。
  • 终端操作可以直接嵌入肌肉记忆。开终端本来就是我每天的工作习惯,不需要额外点开某个软件,少一次点击就多一分坚持下来的可能。
  • 模块拆得足够开。每个功能都能单独拎出来测,坏了也只坏一块,不耽误其他模块使用。

项目做出来之后,我的朋友 A 把它狠狠吐槽了一顿:“你这不就是个脚本合集吗?”我说,对,就是脚本合集。对我来说,能让人一直在用的脚本合集,远胜过一个打开率百分之一的精美应用。

3. 核心模块是怎么搭起来的

3.1 任务捕获与分解:把“做项目”变成“点下一项”

整个系统的入口是一个叫捕获的命令。它的结构非常直白:

task 给窗口换个密封条 task "写周报 30分钟" task "给客户回电话 #工作"

捕获不是单纯记录,它内置了一个粗糙的解析器。普通输入会进入未整理箱;带#标签的会追加标签;带时间词的会生成对应的定时提醒。你不需要严格遵守格式,写得越随意越好,因为捕获的本质是“让大脑快速卸载”,而不是“录入档案”。

真正神奇的是后面的人工归类环节,每天我会用一个叫review的命令把未整理箱里的任务扫一遍。有几个问题会自动弹出:这件事还需要做吗?如果要做,下一个动作是什么?下一个动作需要多少分钟?然后系统会把任务改写成一个“最小可执行动作”,比如“联系老王”改成“给老王发条微信问他周三下午有没有空”。

这一步非常重要。ADHD大脑根本不适合面对“联系老王”这种模糊任务。它太开放了,会忍不住想“老王是谁来着?为什么要联系他?我给他发什么?”然后就走神了。但当任务变成“给老王发条微信问他周三下午有没有空”,大脑不用决策,直接执行,行动就特别顺畅。

3.2 时间盒:和“时间盲”和解

时间盒模块源自番茄工作法,只不过我做了一些针对性的改动。

标准番茄钟是“工作25分钟,休息5分钟”。但这个节奏对ADHD来说可能过于死板:有时候刚进入心流,25分钟到了,强切会非常恼火;有时候状态极差,25分钟都像坐牢。我的方案是引入“可选初始时长”和“强制结束提醒”。

focus 30会启动一个30分钟计时,期间终端会进入专注模式,不再输出别的任务提醒;到点时系统会弹出一条通知:“时间盒结束。要么站起来喝水,要么继续下一个25分钟。没有‘最后五分钟’。”诚实说,强制结束比强制开始更重要,因为ADHD的问题常常不是不开始,而是停不下来。一停,开始下一件事才变得可能。

时间盒模块还附带一个功能叫“余量预警”。比如你预估任务要30分钟,实际上第30分钟时如果还没完成,系统不会逼你继续,而是会问一个问题:“还剩多少?再估一个数。”这个再估的过程,其实是在训练大脑对时间的感知。用久了,我发现自己对“一个番茄钟到底能做多少事”的判断明显变得更准了。

3.3 提醒与回顾:靠系统不靠意志力

所有记忆型任务,比如“周三下午开会”“周五前交材料”,我都会直接交给系统。我不信任自己的脑袋,信任一条 cron 命令。

系统每15分钟扫一次今天的日程,如果到点了,就会向系统通知服务推送一条消息。比如:

你现在应该正在写周报,这个任务分配了45分钟。如果还没开始,请从“列出小标题”开始。

这里我踩过一个很有意思的坑:最初提醒文案写得很温柔,什么“没关系、慢慢来、你一定可以”,结果完全无效。后来发现,对我的大脑来说,“温柔”的提醒会被解读成“可以不做”。反而是“列出小标题”这种命令式文案能触发行动。所以提醒模块的文案系统改成了“状态判断 + 最小指令”的模板:

  • 如果快到截止时间:输出“距离截止还有 XX 分钟,请先完成最小动作:……”
  • 如果已经超时:输出“已超时超过 X 分钟,切换到另一个任务,不要继续耗。”

3.4 数据文件:用纯文本当数据库

我原本是想用 SQLite 的,但仔细一想,给自己用,数据量又小,SQLite 反而增加复杂度。最终所有数据分三个文件存:

  • tasks.json:当前任务清单、未整理箱、项目分解。
  • log.md:每日完成记录,每完成一件事就追加一行。
  • notes/:随手记的参考资料、闪念笔记,每个念头一个 md 文件。

访问方式全都封装在代码里,格式对外就是朴素的 JSON 和 Markdown。好处是,某个周六的晚上我忽然想统计自己过去一周完成了多少件事,不需要跑复杂的报表查询,直接写个 Python 脚本读 log.md 就行。坏处也有,就是多人协作时不好锁文件,但对我这种单人系统来说毫无影响。

4. 从零实操:跑通这套系统的完整过程

4.1 初始化:目录结构和数据文件

你完全可以在自己的机器上搭一个简化版。目录结构我长这样:

i-have-adhd/ ├── adhd.py # 主程序 ├── config.json # 用户配置 ├── data/ │ ├── tasks.json │ ├── log.md │ └── notes/ └── scripts/ ├── remind.py # 提醒脚本 └── review.py # 每日复盘脚本

第一步,建目录,然后创建一个空的config.json:

{ "timebox_default": 25, "review_time": "21:30", "notify": true, "storage": "./data" }

字段很好理解。timebox_default是默认专注时长,我建议一开始用25分钟,习惯后再调整;notify控制是否发送系统通知;storage是数据目录。

4.2 写命令:一个命令完成一次捕获

核心的捕获函数非常简单:

def add_task(raw_text): data = load_json("data/tasks.json") ts = datetime.now().isoformat() tags = re.findall(r"#(\w+)", raw_text) clean = re.sub(r"#(\w+)", "", raw_text).strip() item = { "id": uuid4().hex[:8], "text": clean, "tags": tags, "created": ts, "status": "inbox", "timebox": None } data.append(item) save_json("data/tasks.json", data) print(f"已捕获: {clean}")

如果还想要通过命令行直接传参而不是交互输入,可以用sys.argv读取。比如执行python adhd.py 给显示器换根线,程序会直接把它存进去。这一步我做了个别名放在 shell 配置里:

alias task="python3 ~/adhd/adhd.py"

这样每次只要敲task 某个念头就会自动记录。用顺手之后,这个命令变成了我脑中“念头卸载”的动作反射,比掏手机打开待办软件快十倍。

4.3 接通知:让系统主动来找你

先决条件是让系统能发通知。我用的方案是终端内调用系统通知脚本,Linux 上可以用notify-send,macOS 用osascript。我用一个很小的脚本封装:

import subprocess, platform def notify(title, message): system = platform.system() if system == "Linux": subprocess.run(["notify-send", title, message]) elif system == "Darwin": subprocess.run(["osascript", "-e", f'display notification "{message}" with title "{title}"'])

然后配合 cron 定时调用。打开crontab -e,添加:

*/15 * * * * cd ~/adhd && python3 scripts/remind.py

remind.py会扫描tasks.json中带提醒时间的任务,时间到了就调用notify。这个套路不难,但用完真心觉得舒服:系统不会沉默,你一旦忘了重要的事,它会自己跳出来拍你肩膀。

4.4 定制化:把默认配置改成自己的

每个人的 ADHD 表现都不一样,配置必须可调。我经历了三个阶段才稳定下来:

第一阶段,完全用默认配置,不加任何自定义。这个阶段被强制习惯“输入数据”这个动作,别的都先不管。第二阶段,根据自己观察改时间盒参数。我发现下午2点到4点是我的低谷期,所以把下午的默认专注时长调成15分钟,并在配置文件里备注“下午只做维护类任务,不安排创造类工作”。第三阶段,加入自己的“彩蛋”——比如每完成三个任务,系统会随机打印一句当时的激励语录;完成了一个被拖延两周以上的任务,它会额外追加一条“这是本周期最大的胜利”。

配置本身其实很简单,核心在于你愿不愿意一次一次地改、一次一次地试错。不要期待搬到手就神效,它是你的工具,不是你的主人。

5. 真实使用中的坑,我替你踩过了

5.1 工具也会“陈旧化”,新鲜感一过就停用

这是最典型的问题。我刚做完这个项目的前两周,天天热情高涨地记录、时间盒、复盘;到了第三周,某天晚上忘了跑复盘,第二天就变成“补复盘”,第三天彻底不想打开。回头一分析,原因很朴素:新鲜感带来的多巴胺撑不住了。

我的解法是“降级使用”。不是断了这个工具,而是允许自己连续三天只做捕获,不做时间盒。哪怕系统里堆了一百条未整理任务,也允许它们堆着。核心原则是:不能断掉“外部存储”这个习惯。等到状态回暖,再清理。这个“低电量模式”非常管用,它让工具从“热血项目”慢慢变成了“日用家具”。

5.2 别把一个工具做成第二个负担

工具本身成了负担,这是很多人做个人系统的通病。我见过一个人花了大半周给任务系统加标签、堆图标、调颜色,结果本末倒置。ADHD工具最怕“功能膨胀”:每多一个功能,就多一分认知负担,到最后你花在维护系统上的时间,超过了它帮你省出的时间。

我自己也中过招。有一段时间我执着于“把所有笔记都自动结构化”,写了各种解析器、分类器,后来又想把笔记自动打上情绪标签。做了三天,终于意识到这纯粹是另一种拖延:看起来在生产工具,实际上在回避真正该做的事。最后我把这些“高级功能”全部删除。恢复简单之后,系统才重新变得可用。

5.3 问题排查速查表

现象可能原因处理办法
每天早上一打开终端,就逃避使用功能太多,产生了启动压力恢复“低电量模式”,只留捕获命令
捕获记录倒是很多,但没行动捕获和行动之间缺少“分解”步骤执行review,把大任务一步步拆小
番茄钟响了我还不想停正进入心流,但已经超时允许“只加一个小番茄”,但必须设5分钟休息
提醒发了,我却完全忽略无声通知或系统弹窗容易被忽略换成有声音的提醒,并把重要提醒设置为全屏
复盘写不下去,觉得“今天没干什么”记录粒度太粗,看不到成果每天允许记录3件“最早最小的事”,哪怕只是叠了衣服

这张速查表是从我的真实日志里整理出来的。如果你的症状不一样,建议花一周时间用笔记录“在哪个环节断掉”,再制定自己的对策。

6. 我的体会和还能玩出的花样

6.1 工具是拐杖不是神药

做完这个项目之后,有一个很深的体会:工具能帮你把碎片拼成图,但它不会让你瞬间变成蜈蚣一样高效的巨人。它更多像拐杖,你腿受了伤,拄着它能走得更稳,但真正把你推到终点的,还是你自己想往前走的念头。

我见过有人抱着工具找“终极效率心态”,搜了一圈觉得这个不顺滑、那个不漂亮,一周换一个软件,最后比不用工具更挫败。而“i-have-adhd”这种低技术含量的脚本合集,反而因为“接得住”被我一直用着。以前我总觉得,做工具要酷、要自动、要智能;现在我知道,对很多人来说,能做到“让你明天还愿意打开”就是最好的设计。我一直把它放在终端里,而不是做成一个需要“涮存在感”的应用,正是为了尊重这个真相。

6.2 后续想加的东西

现在这套系统已经成了我日常作息的一部分,我也在琢磨下一步扩展的方向。一个是“晨间一页纸”:每天早上自动生成一张当日卡片,上面只有三件事,其他统一收进存档,避免一上来就被几十项任务吓退。另一个是“任务能量值”:根据一天里的不同时段给任务标出“适合做”和“不适合做”,比如我的代码写作低谷期就绝不安排需要极度专注的调试工作。

还有一个更长远的方向是“同伴同步”。把一个任务清单放到局域网共享里,和同样有注意力困难的室友互相看进度。不需要说服对方,只是为了让对方知道“你不是一个人在挣扎”。这其实是 ADHD 支援里很关键的一部分——社群感。工具再轻,也得有人一起走。

最后分享一个小技巧:每周末我会把log.md里本周完成的事情快速扫一遍,选其中一件最有成就感的,把它复制到根目录的wins.md里。等哪一天觉得自己什么都没做成的时候,打开wins.md,里面全是过去打败过的怪兽。这套机制成本为零,却是我个人系统里最有价值的部分——它印证了:只要方法合适,一颗总是忘记灵感的大脑,也能留下一条又一条真实的足迹。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 16:09:40

知乎评论爬取实战:x-zse-96签名逆向与Node.js/Python混合抓取方案

简介:知乎评论爬取中的x-zse-96参数逆向分析,是爬虫开发者绕开知乎反爬机制、获取高质量评论数据的关键突破口。这份代码包面向中高级爬虫工程师与逆向分析爱好者,聚焦x-zse-96参数的生成逻辑与验证机制,帮助读者理解参数如何构造…

作者头像 李华
网站建设 2026/10/11 16:06:29

工具退役≠知识消亡:面向继承者的废弃工具归档策略

我在团队里处理过一个非常典型的场景:一套内部构建工具用了快六年,某天被正式宣判退役,原维护者三个月后就要离岗。交接时我们打开它的文档,发现除了安装步骤和几段配置说明,没有任何人写清楚“为什么当时放弃开源方案…

作者头像 李华