
我记得最初把这个项目命名为i-have-adhd时并不是想做一个“确诊工具”或者“吃药提醒”。那会儿我刚被诊断为成人 ADHD 不久脑袋里像同时开着十几个浏览器标签页每一个都在播放不同的声音但又没有一个真正读完过。市面上那些任务管理软件我几乎都试过Notion、滴答清单、Todoist装了又删删了又装——不是它们不好而是它们默认用户是一个“有稳定执行功能的正常人”。而 ADHD 人群真正需要的不是更多提醒而是更少阻力。i-have-adhd 最开始只是我自己写的一个本地 HTML 页面用来做“外部化控制”的随身面板把脑子里乱窜的想法快速丢出去把一个任务拆成傻瓜都能执行的三步把“现在该干什么”这件事从大脑里搬出来。后来我把它做成了一个开源的个人项目发现不少同为 ADHD 的朋友也在用还给我提了很多需求。这篇文章我就把整个项目的设计思路、核心功能拆解、技术实现细节和踩过的坑完整地写一遍。如果你是 ADHD 患者、患者家属或者只是觉得自己“越来越难专注、做事启动困难”的人这篇内容都会对你有用。它不是一个医疗方案而是一套“怎么给自己搭建外部脚手架”的实践经验。1. 项目缘起为什么传统任务管理工具帮不了 ADHD 人群我和一位精神科医生朋友聊过这个现象ADHD 患者不是“不知道要做什么”而是“知道要做但身体就是不动”。这在医学上叫执行功能障碍Executive Dysfunction它影响的不是智力而是把大脑指令转化为实际行动的能力。传统任务管理工具的核心逻辑是“列清单-排优先级-设提醒”这套逻辑对非 ADHD 人群有效但对 ADHD 人群来说它在最关键的环节——任务启动Task Initiation——面前完全失灵了。1.1 理解 ADHD 最被低估的症状启动困难你可能见过这样的场景一个人对着电脑屏幕发呆论文/报告/代码已经拖了三天明明再写两段就能收尾但手指就是敲不下去。旁人会以为这是懒、拖延、意志力差但 ADHD 患者心里清楚那种“启动障碍”不是心理上的抗拒而是一种生理性的卡顿——就像你握住方向盘踩下油门但变速箱死活挂不上挡。我的项目首先要解决的就是这个“挂不上挡”的问题。传统清单告诉你“做什么”但没说“怎么做”。而 ADHD 大脑在面对任何稍微复杂的任务时会瞬间被拆解出来的几十个步骤吓退于是选择逃避。i-have-adhd 的第一个核心功能就是把所有任务都强制拆成“不超过三步的微行动”并且每一步都具体到身体动作级别不给你的大脑留下任何“自由发挥”的空间。1.2 时间盲Time Blindness是另一个巨大的隐性障碍ADHD 人群普遍存在“时间盲”现象不是时间观念差而是大脑对时间流逝的感知异常。正常人觉得“过了10分钟”ADHD 患者可能感觉刚过了1分钟正常人觉得“还有两天才截止”ADHD 患者觉得“那就是明年的事”。这导致两个极端要么在最后24小时疯狂冲刺要么在截止日之前完全没有紧迫感。我开发 i-have-adhd 时专门设计了一个“可视化时间块”模块核心思路是——不给用户看闹钟只给用户看进度条。比如某个任务计划用25分钟完成界面上会显示一根逐渐填充的进度条而不是数字跳动的计时器。进度条对 ADHD 大脑来说是一种具象的“外部时间感”它可以代替大脑内部那个无法正常工作的感官系统。1.3 工作记忆的容量限制为什么“记不住”不是不重视还有一个被误读很深的症状ADHD 患者的工作记忆Working Memory容量显著小于常人。普通人的工作记忆大致能同时容纳4-7个信息块而 ADHD 患者可能只有2-3个甚至更少。这意味着你告诉一个 ADHD 的人“去楼上拿三样东西”他走到一半可能就忘了要拿什么。这不是故意忽视而是工作记忆被其他信息挤爆了。所以 i-have-adhd 有一条铁律任何信息只要能打字记录就绝不依赖大脑保存。这就是“外部化记忆”的设计基础也就是我们常说的“把大脑的 RAM 换到硬盘上”。2. 整体设计思路少即是多低阻力才可能被长期使用传统管理工具疯狂堆砌功能标签、看板、甘特图、日历同步、团队协作、统计报表……但对 ADHD 人群来说每一个额外的功能都是一次额外的认知负载都可能成为放弃使用的原因。i-have-adhd 的设计哲学可以总结为三句话卸载负担、降低门槛、即时反馈。2.1 核心原则一切设计都为了“减少大脑预处理量”我给 i-have-adhd 定了一个硬性指标从用户打开 APP 到完成“记录一个想法/创建一项任务”整个流程不应超过5次点击或10秒时间。这个指标的来源是 ADHD 的“冲动窗口”特性——当一个想法或一个念头出现时它通常在几秒钟内就会消失或被另一个念头覆盖只有极低延迟的捕获工具才能接住它。实测下来的结果是这个指标比想象中难达成。我第一版做了三个输入入口又被网友骂到合并成一个全局悬浮按钮。现在的版本里所有新增内容都集中在一个巨大的文本输入框系统会自动提取日期、关键词、任务与好点子。用户只需像发一条微信一样把内容丢进去剩下的一切由程序处理。2.2 降低启动阻力从打开 APP 到进入状态只需要一步桌面端和移动端的启动方式也做了特殊优化。在手机上现代操作系统的“小组件”和“桌面快捷方式”被充分利用——一个 1×1 的小组件直接展示当前唯一要紧的那件事不需要解锁、不需要打开 APP、不需要点进列表瞥一眼就够。有趣的是很多用户反馈说“看到桌面上那个小组件写着‘你现在只需要写一段开头’我竟然真的就写了”。这背后其实有一个心理机制启动成本越低启动概率越高。当行动提示Cue足够明显、行动步骤足够少时ADHD 大脑更愿意响应。我们的目的不是培养“自制力”而是绕过对自制力的需要。2.3 注意保护自主感绝不“通过惩罚来控制人”因为 ADHD 患者普遍有“拒绝敏感性”Rejection Sensitive Dysphoria对批评、警告、压迫性提醒的痛苦感受比普通人强烈得多。所以 i-have-adhd 在设计上有一条伦理原则不设惩罚性提醒所有激励都以正强化为主。比如番茄钟结束时不会弹“你浪费时间了”之类的斥责而是用一句“你今天又推进了一步很好”。很多项目管理工具喜欢搞“连续打卡天数”来裹挟用户这在 ADHD 人群这里效果往往适得其反——一旦断签一次用户的羞耻感会直接淹没所有继续使用的动力。3. 核心功能模块拆解到底给用户提供了什么i-have-adhd 的功能不多但都是针对 ADHD 的核心痛点精准设计的。大致可以分为五个模块微行动任务管理、时间感知辅助、外部化记忆捕获、情绪与能量记录、伙伴陪伴模式。3.1 微行动任务管理把“复习电子学”变成“打开书第12页”任务管理模块是项目的门面也是最容易理解但最难做对的地方。我做了好几种任务拆解方案最终采用的规则是“三步法”任何任务系统强制要求用户在创建时填写“要做的事情”然后智能拆分成三个子步骤每个子步骤都必须用动词开头给足上下文和动作对象。举两个我在开发过程中反复用来做测试的例子普通清单里写“处理工作邮件。”微行动模式改成打开邮箱客户端只处理未读邮件中来自老板的那一份回复后关闭浏览器标签页。还有更生活化的“整理房间”被拆成“把地上所有衣服捡起来放进框里”“把桌面上的杯子拿去厨房”“给植物浇水”。你看拆分后的步骤必须在物理空间中找得到明确的落点而不是抽象概念。这一步完成后加一个带有“完成动画”的勾选效果——虽然幼稚但不少人反馈这个颗粒感的勾掉动作真会带来多巴胺奖励让人愿意继续打第二颗勾。3.2 时间感知辅助让“还有多久”看得见、摸得着我把第二个模块叫“时间锚”——它不是一个简单倒计时而是将时间感知“空间化”的一组小工具。最主要的是两种视图第一种是“进度块”。选一个目标时段比如25分钟写作界面上会显示一个缓缓填满的盒子每小时还会标记一个刻度。这个视图对那些容易陷入“心流”后忘记时间的人非常有用。有一次我写代码写high了完全忘记下午还有一个会议直到进度块响起提示音才把我从代码里拽出来。对我来说这比日历的弹窗提醒要有效得多——因为弹窗太容易被忽略而那个逐渐填满的盒子像一面墙一样立在那里让我对“时间正在流逝”这件事有体感。第二种是“截止日倒排”。把截止日期输入系统后会自动生成一个“倒推式计划表”比如“离交稿还有5天那第4天必须完成初稿第3天必须完成提纲……”。ADHD 大脑天然只关心激动人心/极度紧急的事倒排计划将抽象的时间间隔变成了具体的“最后一个正常节点”这是一种变相给大脑建立外部结构的方法。这里有个关键的实现细节要注意倒排计划默认从截止日的当天半夜开始按天计算也就是给了“第0天”的缓冲因为 ADHD 用户普遍低估任务时长没有缓冲的话计划表几乎必然崩溃一旦崩溃用户就再也不点开了。3.3 外部化记忆捕获给大脑装一个“第二硬盘”这个模块灵感来自 GTDGetting Things Done里的“收集箱”但做得很轻。i-have-adhd 的首页有一个永远置顶的大输入框点击后输入任何想捕获的内容比如“哦对了我下午要交房租”“我应该买一包电池”“突然想起来上周和 Lisa 的对话里有个好点子”。系统会自动做三件事提取日期/地点/时间关键词若是任务则进入任务列表否则进入“灵感便签”如果内容中带“*”号则标记为“重要”出现在主界面显眼位置如果检测到内容包含情绪词如烦、开心、崩溃则同步计入情绪记录。因为整个捕获过程只有“点一下-打字-回车”三步实际操作中真的做到了一键记录。很多用户给我的反馈是以前脑子里存不住事现在把一切交给“外部硬盘”大脑终于有空余 RAM 去处理真正需要处理的工作了。这一点我自己深有体会过去我总在淋浴时迸发灵感但等到擦干身体找纸笔时灵感早就像气泡一样爆掉了。现在我把一个语音输入快捷方式放在锁屏界面洗澡时对着空气说一件事就自动落到系统里。3.4 情绪与能量记录看懂自己的波动周期ADHD 患者常伴随情绪调节障碍和能量水平剧烈波动。同一件事状态好时半小时完成状态差时可能变成一座不可逾越的大山。所以 i-have-adhd 加了情绪记录功能但它不是一个日记本而是通过两次点击完成的“能量标记”。每次完成任务后APP 会问一个问题“刚才做这件事时你的能量如何” 用户只需滑动一个1-5的滑块。多次记录后系统会在日历视图上生成一张“能量热力图”——用颜色标记每天什么时段你感觉精力充沛、什么时段容易崩溃。这个功能我原本以为是锦上添花没想到成了许多用户最依赖的功能。原因是 ADHD 伴发的昼夜节律紊乱相当普遍很多人晚上10点后才进入状态白天却硬逼自己在办公室耗时间。知道了自己的能量曲线后他们就可以做“顺应昼夜节律的任务分配”把需要高度专注的写作放到深夜把机械性工作放到午后。还有个实用技巧要分享这份能量数据对就诊也很有用。医生拿到一份“过去三个月的精力波动记录”比听患者回忆“我最近好像状态不太好”要准确得多。每次复诊前导出最近30天的记录省去不少口舌。3.5 伙伴陪伴模式自动生成“一声不吭的线上同桌”这个功能来自被称为 Body Doubling身体象征陪伴的 ADHD 自助策略。原理很简单当有人在旁边即使是虚拟地坐着ADHD 患者会更容易完成任务因为“旁边那个人”形成了一个无言的监督感。2020年后海外出现了各种专门做 Body Doubling 的网站我调研后觉得这套机制完全可以自动化。i-have-adhd 实现了一个“陪伴会话”功能用户可以发起一个15-60分钟的专注时段系统会随机匹配另一个也在专注的用户可选陌生人或自己创建的房间。但是注意——双方不需要打开摄像头也不需要聊天界面上只有一个并排的头像和一个共享的计时/进度条。这个设计的巧妙之处在于它只提供了一个“有人在陪我”的心理感受却完全不会引发社交焦虑。我自己用过不少次效果意外地好。写方案讲到一半想刷手机时看到屏幕上另一个头像还在安静地“陪着”自己就会莫名产生一种“不能半途而废”的责任感。技术上实现这个功能也不复杂。服务端用 WebSocket 保持房间连接每小时一个房间最多容纳6人专注时段结束时才会散场。为了防止用户找到“对口型聊天搭子”后开始闲聊全程没有文字消息框只有三个固定表情可选点个赞/比个心/加油避免互动模式被过度扩展。4. 技术实现细节与配置方法从零搭一个这样的系统我采用的技术栈很“朴素”前端是原生 JavaScript 一个单页 HTML 框架后端用 Python FastAPI SQLite部署在一台低配云服务器上数据通过 API 同步。之所以刻意保持简单是因为现代前端框架React/Vue的依赖链太重对单人维护的开源项目来说每次升级依赖都可能带来不可控的故障。保持“能用且修得快”是长期维护的首要原则。4.1 数据库设计贴任务优先而非贴概念如果你也想实现类似的功能数据库表结构建议尽量精简。我的核心表只有3张tasks 表任务ID、内容、子步骤JSON数组、完成状态、创建时间、截止时间、是否重要标记。notes 表灵感便签ID、内容、标签自动提取、创建时间。moods 表情绪/能量记录ID、等级1-5、关联任务ID可为空、时间戳。我特意没有用关系型数据库的外键去关联用户和所有行为而是把 userId 直接作为每张表的一个普通字段。这么设计的原因在于ADHD 用户经常会在凌晨突然批量导入几十条“旧想法”如果系统此时去做复杂的关联查询极容易出现性能瓶颈或数据状态不一致。字段冗余查询简单对个人项目来说是稳字当头。4.2 关键算法如何智能提取任务与关键词文本自动提取的逻辑不重没必要上大语言模型我用了规则词典的轻量方案实测可靠率约85%剩余15%靠用户手动修正但整体不增加操作步骤。具体实现是用正则表达式抓取“今天/明天/后天/下周一/X月X日/15:00/下午3点”等日期时间短语构建一个动词词典识别“买、写、交、打、回、拿、去、整理、预约”等动作词如果识别到动作词并且有明确对象词就生成一个任务否则一律归入灵感便签特殊标记包含感叹号的内容自动标为“重要”。比如输入“明天下午3点交房租”输出结果就是任务“交房租”截止时间“明天下午3点”重要标记“true”。整个过程本地处理只需不到10毫秒完全不依赖外部API也不会有数据隐私泄露的风险。4.3 配置与部署给自部署用户的最小可行方案项目支持两种运行方式云端共用用户注册账号或本地单机默认不注册。本地单机是最省心的模式——SQLite 数据文件就在本地没有网络依赖也不存在“数据在别人服务器上”的心理负担。很多关注隐私的用户会更倾向这一模式。如果你想要自部署参考配置很固定Python 3.10pip 安装 fastapi uvicorn python-multipart启动命令uvicorn main:app --host 0.0.0.0 --port 8000反向代理用 Caddy 或 Nginx自动申请 HTTPS 证书。注意自部署时一定要设置一个访问签名参数否则服务暴露到公网后通用爬虫会把你页面里的数据抓走。这是我自己踩过的坑——上线第一个月有用户告诉我他在 Google 搜索结果里看到了自己的任务记录我赶紧给后端加了一层 token 校验又给数据表做了加密字段。4.4 界面设计的取舍不为视觉牺牲效率视觉上i-have-adhd 刻意做得很“素”白底、黑字、一个强调色。因为 ADHD 人群对视觉刺激非常敏感花哨的渐变动画、高饱和色块会让注意力被反复吸走。强调色也不是装饰用而是承担唯一的信息层级作用——当前最需要做的事用高亮色显示其余一切一律置灰。交互上的一个重要原则是“减少按钮数量”。主界面常驻按钮只有3个捕获输入框、开始专注、进入任务列表。焦点永远在“下一个动作”上。我删掉了统计报表卡片、日历快览、排行徽章这些常见的“增效功能”因为测试中它们只会诱使用户不停查看数据而不是真正去做事。5. 实测反馈与常见问题排查真实使用时避坑指南项目上线后我邀请了几十位网友进行内测身份覆盖学生、程序员、设计师、自由职业者和一位中学老师。四个月的反馈和迭代过程里有几个问题反复出现值得展开讲讲。5.1 “我又忘了用这个软件” —— 如何对抗遗忘曲线最典型的反馈来自前两周的用户目录清单建好了功能也好用但我第二天就忘了打开它。这是做 ADHD 工具最难绕开的死结——人越需要外部提醒越会忘记打开提醒工具。后来我做的修改是把“每日启动引导”做成系统消息推送而不是 APP 内通知。道理很简单APP 发出的通知会被折叠在通知中心里而系统推送带上声音和震动之后感知度完全不一样。同时移动端设置了“一个固定时间的强提醒”默认是每天早上9点推一段话“看看你现在最需要做的事是什么。”这个固定时间提醒比随机的低频提醒有效得多因为 ADHD 人群对规律性的依赖比常人更强。5.2 “我拆了步骤但根本不想动手” —— 任务拆分的颗粒度问题有段时间收到密集反馈“任务拆成三步了但我还是不想动。” 一开始我以为大家是懒后来发现是拆得还不够小。ADHD 大脑对任务的心理阻力阈值非常低你再写“打开电脑”“进入编辑器”它心里的小恶魔会说“我已经记不清文件名了”然后就放弃了。我的解决方案是加入一个“傻瓜模式”用户可以在任务详情页把子步骤继续展开为“物理动作”“提交周报”再拆为打开电脑电源打开浏览器输入网址点第一个按钮上传本周工作内容。听上去夸张但对启动障碍严重的用户来说这样的步骤才堪称“大脑无障碍通道”。有个用户给我留言说她本来拖了三周没敢提交的项目报销单用这个模式从“打开电脑”开始最终20分钟内就填完了。这条消息让我确信这个思路是对的。5.3 “数据同步冲突了” —— 多端使用的同步策略双端手机电脑用户占到40%所以同步问题成了bug高发区。早期我采用的同步策略是“时间戳覆盖”结果经常出现手机端覆盖电脑端新数据的情况。后来改成“LWWLast-Write-Wins 冲突分区保留”策略相同一条记录被本地编辑后系统比较修改时间晚的生效但不覆盖的另一版会存到“冲突备份文件夹”绝不丢数据。这条经验也写在了 README 的UC文档里如果你自己搭项目建议刚开始就用该策略不要嫌弃麻烦能为你省掉大量丢失数据后处理用户投诉的时间。5.4 关于手机性能过热的反馈有用户反馈打开“陪伴会话”并同时开“进度块”动画后手机发烫严重。排查发现是进度块每100毫秒渲染一次 Canvas 动画导致 GPU 占用过高。修复方法很简单把动画刷新频率降到500毫秒一次并且改成 CSS 过渡动画而不是 Canvas 重绘。这也让我长了个记性——ADHD 工具面向的是高频率使用的轻量场景任何持续性的高功耗动画都是不环保的最终会把人从专注中拽出来。5.5 常见问题速查表现象可能原因解决办法任务同步丢失/错乱老版本采用时间戳覆盖升级到 0.6 版冲突分区保留策略提醒不触发系统通知权限未开启检查系统设置允许通知文本提取失败输入内容中没有动词手动编辑任务不依赖自动提取陪同时段卡住WebSocket 断连刷新页面重连服务端已加心跳保活数据不加载本地 SQLite 文件损坏备份库文件使用 sqlite3 recover 修复6. 对 ADHD 人群以外的价值为什么普通人也能受益虽然项目名是“i-have-adhd”但后来我发现很多没有确诊过的人也在使用而且反馈不错。这说明“ADHD 友好的设计”其实是一种“极端用户思维”——照顾了认知条件最紧张的那批人反而会让普通用户用得更顺。6.1 所有人都面对同样的认知过载问题在信息过载、多任务切换成为常态的今天很多人的注意力碎片化程度并不亚于 ADHD 患者。你不需要被诊断为 ADHD也可能会遇到记不清一件事、在开始任务前焦虑、刷手机刷到忘记正事、面对大项目不知从何下手。i-have-adhd 提供的“外部化大脑”思路本质上是对抗现代数字环境的生存技能。一个非 ADHD 用户分享过他的用法他是产品经理每天面对大量需求以前靠 Excel 管理项目进度但一旦有新需求插入就手忙脚乱。改用 i-have-adhd 的“微行动截止日倒排”后他每天只花15分钟把当天最重要的三项任务拆到“物理动作”级别剩下的时间只跟着系统走就行。他说“这种被外力推着走的感觉反而是一种自由”这句话我很喜欢。6.2 正向提醒的理念值得借鉴普通的生产力工具经常用“你还有169封未读邮件”这种负向提醒制造焦虑而 i-have-adhd 采用的是正向锚定。这个方法移植到团队协作中同样有效比如用“你已经完成了今早的关键任务”替代“你还有两个没完成”。在我的实测中正向锚定比负向提醒在长期使用率上高出27%。这不是玄学而是符合激励理论的基本规律——行为的持续发生需要高频的正反馈而不是高频的负刺激。7. 接下来的扩展方向与个人体会项目到现在已经稳定运行了大半年源码和部署文档都放在 GitHub 上欢迎任何人拿去自部署或改造。我自己的本职是软件开发者做这个项目最大的收获反而不是代码本身而是它彻底改变了我对“自律工具”的理解自律不是靠意志力硬撑而是靠合理的外部环境设计去消解对意志力的依赖。最近在考虑两个扩展方向一是语音优先的下一个版本。ADHD 用户经常在开车、做家务、走路时想到重要的事这时打字是一件物理上就被阻断的事情。我已经在小范围测试一个纯语音版本用户只要对手机说一句话系统就能自动识别并归类。这个功能如果能做出来生活记录的门槛还会再降一个量级。二是多人家庭模式。很多 ADHD 患者的家人也想帮忙但因为不理解病状而常常催促反而导致关系紧张。我打算做一个“家庭协同面板”让患者和家人共享一个非评判性的任务视图家人能看见“今天完成了什么”而不是“还有什么没做”。这可能才是对这个群体更深层、更有温度的支持。最后说一个项目开发过程中给我留下最深印象的真实反馈吧。有个刚被诊断为 ADHD 的大学女孩给我留言说“原来我不是懒我只是需要一套适合我的工具。看到终于有一个软件是为我这种人设计的我觉得自己不是孤身一人。” 这正是我坚持维护这个项目最大的理由。做工具的乐趣不只是技术实现更是把一个真切地改变生活的东西亲手送到需要它的人面前。