智能防拖延系统 (Smart Anti-Procrastination System)一、实际应用场景描述场景28岁的小张是一名互联网公司的后端开发工程师最近接到了一个棘手的任务重构公司核心的用户鉴权模块。这个任务技术难度高、涉及面广预计需要2周时间完成。小张的第一反应是焦虑他打开IDE盯着空白的代码文件看了10分钟然后开始刷知乎、看B站告诉自己等状态好一点再开始。一上午过去了他只写了一行注释。下午开会时他感到深深的自责和恐慌因为截止日期越来越近而工作毫无进展。这种想做但动不了的状态让他陷入了焦虑-逃避-更焦虑的恶性循环不仅影响了工作进度更损害了他的自信心。目标用户- 知识工作者程序员、设计师、作家、研究员- 学生群体面临论文、考试、项目截止- 自由职业者需要自我管理、避免拖延- 创业者和项目经理需要推动团队执行- 任何被启动困难和完美主义困扰的人二、引入痛点1. 启动阻力巨大面对复杂或模糊的任务大脑本能地抗拒开始宁愿做简单、熟悉的事情来获得即时满足2. 完美主义陷阱害怕做得不够好而不敢开始陷入准备-拖延-再准备的无限循环3. 注意力碎片化现代工作环境充满干扰微信、邮件、社交媒体深度工作时间难以维持4. 反馈延迟痛苦有价值的工作往往需要长时间投入才能看到成果大脑的即时奖励机制对此极不适应5. 任务过载恐惧面对庞大任务时产生的无力感导致干脆放弃行动6. 情绪驱动决策拖延本质上是情绪调节策略用短期的舒适逃避长期的焦虑但代价是更大的压力和自责三、核心逻辑讲解1. 防拖延核心理念从意志力对抗到系统设计传统防拖延方法依赖意志力加油你能行但意志力是有限资源。本系统基于智能决策和行为心理学通过系统设计来绕过意志力瓶颈- 降低启动门槛通过微任务和预热仪式将开始行动的难度降到最低- 重塑奖励机制将长期任务的延迟奖励转化为可感知的即时反馈- 管理注意力流通过番茄工作法和专注时段顺应大脑的注意力节律- 情绪接纳与转化承认焦虑情绪的合理性并将其转化为行动的动力2. 核心理论模型启动阶段 - 微任务分解 (Micro-Tasking)- 将复杂任务拆解为可在5分钟内完成的微任务- 利用飞轮效应启动后惯性会维持行动- 消除任务模糊性带来的心理阻力执行阶段 - 分段式心流管理 (Segmented Flow Management)- 采用25分钟专注5分钟休息的番茄工作法变体- 每完成一个阶段提供多层次激励视觉、成就、社交- 通过小胜利积累多巴胺维持内在驱动力维持阶段 - 动态难度调整 (Dynamic Difficulty Adjustment)- 根据历史表现和当前状态实时调整任务难度和激励强度- 引入心流通道理论保持挑战与技能的平衡- 防止过度自信导致的计划失控也防止过度焦虑导致的行动冻结收尾阶段 - 完成感放大器 (Completion Amplifier)- 通过任务完成后的仪式感强化行动-成就的正向循环- 可视化累积成果对抗努力无价值的负面认知- 将完成经验转化为应对未来挑战的心理资本3. 智能决策流程1. 任务解析与分解NLP分析任务描述自动生成微任务树2. 用户状态评估通过交互行为、历史数据、简单问卷评估当前心理状态3. 策略匹配根据任务类型、用户状态、时间约束选择最优的防拖延策略4. 动态执行启动微任务进入专注计时实时监测注意力和情绪信号5. 激励反馈触发分层激励记录成就更新用户画像6. 复盘优化任务完成后分析拖延模式优化未来策略四、代码模块化实现项目结构smart_anti_procrastination/├── main.py # 主程序入口├── data_models.py # 数据模型定义├── task_parser.py # 任务解析与分解模块├── state_assessor.py # 用户状态评估模块├── timer_engine.py # 智能计时引擎├── motivation_system.py # 分段激励系统├── focus_manager.py # 专注力管理模块├── progress_tracker.py # 进度追踪与可视化└── README.md # 项目说明文档1. data_models.py - 数据模型定义数据模型模块定义智能防拖延系统的核心数据结构包含任务(Task)、微任务(MicroTask)、用户状态(UserState)、激励(Stimulus)等类from dataclasses import dataclass, fieldfrom typing import List, Dict, Optional, Anyfrom enum import Enumfrom datetime import datetime, timedeltaimport uuidimport jsonclass TaskComplexity(Enum):任务复杂度等级TRIVIAL trivial # 琐碎5分钟内可完成SIMPLE simple # 简单30分钟内可完成MODERATE moderate # 中等1-2小时可完成COMPLEX complex # 复杂半天至一天OVERWHELMING overwhelming # 压倒性数天或数周class UserState(Enum):用户当前心理状态MOTIVATED motivated # 积极有动力NEUTRAL neutral # 中性无明显倾向RESISTANT resistant # 抗拒有拖延倾向ANXIOUS anxious # 焦虑担心做不好EXHAUSTED exhausted # 精疲力竭需要休息FOCUSED focused # 高度专注DISTRACTED distracted # 分心容易走神class TaskStatus(Enum):任务状态PENDING pending # 待处理IN_PROGRESS in_progress # 进行中PAUSED paused # 已暂停COMPLETED completed # 已完成ABANDONED abandoned # 已放弃class StimulusType(Enum):激励类型VISUAL visual # 视觉反馈进度条、动画ACHIEVEMENT achievement # 成就解锁徽章、称号SOCIAL social # 社交激励分享、排行榜PHYSICAL physical # 生理奖励休息、伸展COGNITIVE cognitive # 认知重构正面反馈、肯定dataclassclass MicroTask:微任务类将一个大任务分解为可在短时间内完成的微小单元micro_task_id: str field(default_factorylambda: str(uuid.uuid4())[:8])parent_task_id: str # 父任务IDtitle: str # 微任务标题description: str # 详细描述estimated_duration: int 5 # 预估耗时分钟actual_duration: Optional[int] None # 实际耗时分钟status: TaskStatus TaskStatus.PENDING # 状态order_index: int 0 # 执行顺序prerequisites: List[str] field(default_factorylist) # 前置微任务is_checkpoint: bool False # 是否为检查点里程碑completed_at: Optional[str] None # 完成时间dataclassclass Task:任务类代表一个需要完成的工作单元task_id: str field(default_factorylambda: str(uuid.uuid4())[:8])title: str # 任务标题description: str # 任务描述complexity: TaskComplexity TaskComplexity.MODERATE # 复杂度total_estimated_time: int 60 # 总预估时间分钟deadline: Optional[datetime] None # 截止时间created_at: str field(default_factorylambda: datetime.now().isoformat())status: TaskStatus TaskStatus.PENDING # 状态micro_tasks: List[MicroTask] field(default_factorylist) # 子微任务列表tags: List[str] field(default_factorylist) # 标签如工作、学习difficulty_score: float 0.5 # 主观难度评分0-1importance_score: float 0.5 # 重要程度评分0-1energy_required: float 0.5 # 所需精力水平0-1energy_reward: float 0.3 # 完成后能量恢复0-1best_time_of_day: str any # 最佳完成时间段subtasks_completed: int 0 # 已完成子任务数total_subtasks: int 0 # 总子任务数last_active_time: Optional[str] None # 最后活跃时间notes: str # 备注dataclassclass UserProfile:用户画像类记录用户的行为模式和心理特征user_id: str field(default_factorylambda: str(uuid.uuid4())[:8])username: str default_usercreated_at: str field(default_factorylambda: datetime.now().isoformat())# 行为统计数据total_tasks_completed: int 0total_focus_time: int 0 # 总专注时长分钟average_session_length: float 25.0 # 平均单次专注时长procrastination_count: int 0 # 记录的拖延次数streak_days: int 0 # 连续活跃天数last_active_date: Optional[str] None# 心理状态基线baseline_energy_level: float 0.7 # 基线精力水平0-1stress_sensitivity: float 0.5 # 压力敏感度0-1perfectionism_score: float 0.5 # 完美主义倾向0-1reward_sensitivity: float 0.6 # 奖励敏感度0-1# 偏好设置preferred_work_duration: int 25 # 首选工作时长分钟preferred_break_duration: int 5 # 首选休息时长分钟notification_enabled: bool Truesound_enabled: bool Truetheme: str light # UI主题# 历史任务记录简化存储recent_tasks: List[str] field(default_factorylist) # 最近任务ID列表dataclassclass FocusSession:专注会话类记录一次完整的专注工作周期session_id: str field(default_factorylambda: str(uuid.uuid4())[:8])task_id: str start_time: str field(default_factorylambda: datetime.now().isoformat())end_time: Optional[str] Noneplanned_duration: int 25 # 计划时长分钟actual_duration: int 0 # 实际时长分钟interruptions: int 0 # 中断次数completion_status: str completed # completed/interrupted/pausedmood_before: float 0.5 # 开始前心情0-1mood_after: Optional[float] None # 结束后心情0-1productivity_rating: Optional[int] None # 自评生产力1-5distractions_logged: List[str] field(default_factorylist) # 记录的干扰源dataclassclass Stimulus:激励类定义一个激励事件的内容和触发条件stimulus_id: str field(default_factorylambda: str(uuid.uuid4())[:8])stimulus_type: StimulusType StimulusType.VISUALtitle: str message: str trigger_condition: Dict[str, Any] field(default_factorydict) # 触发条件reward_points: int 10 # 奖励积分icon: str animation_type: str fade_in # 动画类型duration_seconds: int 3 # 展示时长is_unlocked: bool Falseunlocked_at: Optional[str] Nonedataclassclass Achievement:成就类记录用户解锁的长期成就achievement_id: str field(default_factorylambda: str(uuid.uuid4())[:8])title: str description: str icon: str condition_type: str # 解锁条件类型condition_value: Any None # 解锁条件值unlocked: bool Falseunlocked_at: Optional[str] Nonerarity: str common # common/uncommon/rare/epic/legendarydataclassclass ProcrastinationPattern:拖延模式类记录和分析用户的拖延行为模式pattern_id: str field(default_factorylambda: str(uuid.uuid4())[:8])trigger_task_type: str # 触发拖延的任务类型time_of_day: str # 发生时间emotional_state: str # 当时的情绪状态avoidance_behavior: str # 采取的回避行为frequency: int 1 # 发生频率first_observed: str field(default_factorylambda: datetime.now().isoformat())last_observed: str field(default_factorylambda: datetime.now().isoformat())suggested_intervention: str # 建议的干预措施2. task_parser.py - 任务解析与分解模块任务解析与分解模块负责将复杂任务智能分解为可执行的微任务使用NLP启发式规则和任务结构分析import refrom typing import List, Dict, Optional, Tuplefrom dataclasses import dataclass, fieldfrom enum import Enumimport uuidfrom datetime import datetime, timedelta# 导入数据模型from data_models import Task, MicroTask, TaskComplexity, TaskStatusclass TaskParser:任务解析器功能解析任务描述自动评估复杂度并分解为微任务序列def __init__(self):初始化解析器加载分解模板和关键词库self.complexity_keywords {TaskComplexity.TRIVIAL: [检查, 回复, 整理, 删除, 备份, 更新, 记录, 确认, 通知, 简单],TaskComplexity.SIMPLE: [编写, 修改, 测试, 安装, 配置, 学习, 研究, 整理, 设计, 基础],TaskComplexity.MODERATE: [开发, 实现, 重构, 优化, 集成, 部署, 分析, 规划, 撰写, 中等],TaskComplexity.COMPLEX: [架构, 设计, 领导, 协调, 解决, 创新, 全面, 系统, 核心, 复杂],TaskComplexity.OVERWHELMING: [整个, 全部, 终极, 革命性, 从零, 全面, 长期, 战略, 转型, 巨大]}self.micro_task_templates {development: [环境准备与工具检查,需求分析与技术调研,核心逻辑设计与伪代码编写,模块1基础框架搭建,模块2核心功能实现,模块3边界条件处理,单元测试编写,集成测试与调试,代码审查与优化,文档撰写与注释补充],writing: [主题确定与大纲构思,资料搜集与素材整理,引言部分撰写,主体段落1核心论点展开,主体段落2论据支撑,主体段落3反驳与回应,结论部分撰写,全文逻辑梳理与润色,格式排版与校对,最终审阅与提交],learning: [学习目标设定与路径规划,基础知识框架梳理,核心概念学习与笔记,实践练习基础案例,实践练习进阶案例,知识点串联与应用,难点攻克与答疑,知识体系复盘总结,实际应用尝试,学习效果检验],meeting_preparation: [会议目标明确,议程草拟与时间分配,相关资料搜集整理,参会人员沟通与确认,演示材料/PPT制作,预演与关键点梳理,技术问题排查,会议室预定与设备测试,备用方案准备,心态调整与开场准备],default: [任务理解与目标确认,相关信息搜集与梳理,第一步最简可行操作,第二步核心逻辑构建,第三步细节完善与扩展,第四步验证与测试,第五步优化与美化,第六步总结与归档,清理工作环境,反思与记录经验]}self.duration_estimates {TaskComplexity.TRIVIAL: 5,TaskComplexity.SIMPLE: 25,TaskComplexity.MODERATE: 90,TaskComplexity.COMPLEX: 240,TaskComplexity.OVERWHELMING: 480}def parse_and_create_task(self, title: str, description: str , complexity_hint: str ) - Task:解析任务描述并创建完整的任务对象Args:title: 任务标题description: 任务详细描述complexity_hint: 可选的复杂度提示Returns:Task: 完整的任务对象包含分解的微任务列表# 1. 评估任务复杂度complexity self._assess_complexity(title, description, complexity_hint)# 2. 估算总时间total_time self.duration_estimates.get(complexity, 60)# 3. 确定任务类型模板task_type self._identify_task_type(title, description)# 4. 分解微任务micro_tasks self._decompose_into_micro_tasks(task_type, complexity)# 5. 创建任务对象task Task(titletitle,descriptiondescription,complexitycomplexity,total_estimated_timetotal_time,micro_tasksmicro_tasks,total_subtaskslen(micro_tasks),difficulty_scoreself._estimate_difficulty(complexity, description),importance_score0.5, # 默认中等重要性可由用户调整energy_requiredself._estimate_energy_requirement(complexity),energy_rewardmin(0.8, 0.2 (micro_tasks[0].estimated_duration / 60)),tagsself._extract_tags(title, description))return taskdef _assess_complexity(self, title: str, description: str, hint: str) - TaskComplexity:评估任务复杂度Args:title: 任务标题description: 任务描述hint: 用户提供的复杂度提示Returns:TaskComplexity: 评估后的复杂度等级text f{title} {description}.lower()# 如果提供了有效提示优先使用if hint:try:return TaskComplexity(hint.lower())except ValueError:pass# 基于关键词计分scores {c: 0 for c in TaskComplexity}for complexity, keywords in self.complexity_keywords.items():for keyword in keywords:if keyword in text:scores[complexity] 1# 基于描述长度和结构word_count len(text.split())if word_count 100:scores[TaskComplexity.OVERWHELMING] 1scores[TaskComplexity.COMPLEX] 1elif word_count 50:scores[TaskComplexity.COMPLEX] 1scores[TaskComplexity.MODERATE] 1elif word_count 10:scores[TaskComplexity.TRIVIAL] 2# 基于特殊模式if re.search(r\b(整个|全部|所有|从零|全面)\b, text):scores[TaskComplexity.OVERWHELMING] 2if re.search(r\b(和|以及|并且|同时|还要)\b, text): # 多任务并行scores[TaskComplexity.COMPLEX] 1if re.search(r\b(首先|第一步|先)\b, text): # 已有分解迹象scores[TaskComplexity.MODERATE] 1# 找出最高分的复杂度max_score max(scores.values())candidates [c for c, s in scores.items() if s max_score]# 如果有多个候选倾向于选择更低复杂度的避免过度估计if len(candidates) 1:complexity_order [TaskComplexity.TRIVIAL, TaskComplexity.SIMPLE,TaskComplexity.MODERATE, TaskComplexity.COMPLEX,TaskComplexity.OVERWHELMING]for c in complexity_order:if c in candidates:return creturn candidates[0] if candidates else TaskComplexity.MODERATEdef _identify_task_type(self, title: str, description: str) - str:识别任务所属的类型以便选择合适的分解模板Args:title: 任务标题description: 任务描述Returns:str: 任务类型标识符text f{title} {description}.lower()type_keywords {development: [开发, 编码, 编程, bug, 修复, 重构, 实现, 算法, 接口, 数据库],writing: [写, 撰写, 文章, 报告, 论文, 博客, 文案, 总结, 心得, 文档],learning: [学习, 学, 研究, 了解, 掌握, 精通, 教程, 课程, 读书, 练习],meeting_preparation: [会议, 汇报, 演讲, 演示, 讨论, 评审, 答辩, 面试, 沟通],design: [设计, 画图, 原型, UI, UX, 界面, 图标, 布局, 美化],planning: [规划, 计划, 策划, 安排, 日程, 时间表, 路线图, 方案]}scores {t: 0 for t in type_keywords}for task_type, keywords in type_keywords.items():for keyword in keywords:if keyword in text:scores[task_type] 1max_score max(scores.values())if max_score 0:return defaultreturn max(scores, keyscores.get)def _decompose_into_micro_tasks(self, task_type: str, complexity: TaskComplexity) - List[MicroTask]:将任务分解为微任务序列Args:task_type: 任务类型complexity: 任务复杂度Returns:List[MicroTask]: 微任务列表templates self.micro_task_templates.get(task_type, self.micro_task_templates[default])# 根据复杂度决定使用多少个微任务complexity_multiplier {TaskComplexity.TRIVIAL: 1,TaskComplexity.SIMPLE: 3,TaskComplexity.MODERATE: 6,TaskComplexity.COMPLEX: 9,TaskComplexity.OVERWHELMING: 12}num_tasks min(len(templates), complexity_multiplier.get(complexity, 5))micro_tasks []base_duration self.duration_estimates.get(complexity, 60) // num_tasksfor i, template_title in enumerate(templates[:num_tasks]):# 动态调整每个微任务的预估时间duration_variation [-2, -1, 0, 1, 2]import randomadjusted_duration max(2, base_duration random.choice(duration_variation))micro_task MicroTask(titletemplate_title,descriptionf执行{task_type}任务的步骤{i1},estimated_durationadjusted_duration,order_indexi,is_checkpoint(i 0 and i % 3 0) # 每3个微任务设置一个检查点)micro_tasks.append(micro_task)# 如果是压倒性复杂任务递归分解最后一个微任务if complexity TaskComplexity.OVERWHELMING and len(micro_tasks) 0:last_task micro_tasks[-1]last_task.title 【子任务】 last_task.titlelast_task.description 这是一个复杂的子任务需要进一步分解执行return micro_tasksdef _estimate_difficulty(self, complexity: TaskComplexity, description: str) - float:估算任务的主观难度0-1base_difficulty {TaskComplexity.TRIVIAL: 0.1,TaskComplexity.SIMPLE: 0.3,TaskComplexity.MODERATE: 0.5,TaskComplexity.COMPLEX: 0.7,TaskComplexity.OVERWHELMING: 0.9}difficulty base_difficulty.get(complexity, 0.5)# 根据描述中的不确定性词汇调整uncertainty_words [可能, 大概, 试试, 不确定, 或许, 也许]text description.lower()for word in uncertainty_words:if word in text:difficulty 0.05return min(1.0, max(0.0, difficulty))def _estimate_energy_requirement(self, complexity: TaskComplexity) - float:估算完成任务所需的精力水平0-1energy_map {TaskComplexity.TRIVIAL: 0.2,TaskComplexity.SIMPLE: 0.4,TaskComplexity.MODERATE: 0.6,TaskComplexity.COMPLEX: 0.8,TaskComplexity.OVERWHELMING: 1.0}return energy_map.get(complexity, 0.5)def _extract_tags(self, title: str, description: str) - List[str]:从任务描述中提取标签text f{title} {description}.lower()potential_tags [工作, 学习, 生活, 健康, 财务, 人际,利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛
智能防拖延程序,设定任务倒计时,分段激励,降低启动难度,克服懒散。
智能防拖延系统 (Smart Anti-Procrastination System)一、实际应用场景描述场景28岁的小张是一名互联网公司的后端开发工程师最近接到了一个棘手的任务重构公司核心的用户鉴权模块。这个任务技术难度高、涉及面广预计需要2周时间完成。小张的第一反应是焦虑他打开IDE盯着空白的代码文件看了10分钟然后开始刷知乎、看B站告诉自己等状态好一点再开始。一上午过去了他只写了一行注释。下午开会时他感到深深的自责和恐慌因为截止日期越来越近而工作毫无进展。这种想做但动不了的状态让他陷入了焦虑-逃避-更焦虑的恶性循环不仅影响了工作进度更损害了他的自信心。目标用户- 知识工作者程序员、设计师、作家、研究员- 学生群体面临论文、考试、项目截止- 自由职业者需要自我管理、避免拖延- 创业者和项目经理需要推动团队执行- 任何被启动困难和完美主义困扰的人二、引入痛点1. 启动阻力巨大面对复杂或模糊的任务大脑本能地抗拒开始宁愿做简单、熟悉的事情来获得即时满足2. 完美主义陷阱害怕做得不够好而不敢开始陷入准备-拖延-再准备的无限循环3. 注意力碎片化现代工作环境充满干扰微信、邮件、社交媒体深度工作时间难以维持4. 反馈延迟痛苦有价值的工作往往需要长时间投入才能看到成果大脑的即时奖励机制对此极不适应5. 任务过载恐惧面对庞大任务时产生的无力感导致干脆放弃行动6. 情绪驱动决策拖延本质上是情绪调节策略用短期的舒适逃避长期的焦虑但代价是更大的压力和自责三、核心逻辑讲解1. 防拖延核心理念从意志力对抗到系统设计传统防拖延方法依赖意志力加油你能行但意志力是有限资源。本系统基于智能决策和行为心理学通过系统设计来绕过意志力瓶颈- 降低启动门槛通过微任务和预热仪式将开始行动的难度降到最低- 重塑奖励机制将长期任务的延迟奖励转化为可感知的即时反馈- 管理注意力流通过番茄工作法和专注时段顺应大脑的注意力节律- 情绪接纳与转化承认焦虑情绪的合理性并将其转化为行动的动力2. 核心理论模型启动阶段 - 微任务分解 (Micro-Tasking)- 将复杂任务拆解为可在5分钟内完成的微任务- 利用飞轮效应启动后惯性会维持行动- 消除任务模糊性带来的心理阻力执行阶段 - 分段式心流管理 (Segmented Flow Management)- 采用25分钟专注5分钟休息的番茄工作法变体- 每完成一个阶段提供多层次激励视觉、成就、社交- 通过小胜利积累多巴胺维持内在驱动力维持阶段 - 动态难度调整 (Dynamic Difficulty Adjustment)- 根据历史表现和当前状态实时调整任务难度和激励强度- 引入心流通道理论保持挑战与技能的平衡- 防止过度自信导致的计划失控也防止过度焦虑导致的行动冻结收尾阶段 - 完成感放大器 (Completion Amplifier)- 通过任务完成后的仪式感强化行动-成就的正向循环- 可视化累积成果对抗努力无价值的负面认知- 将完成经验转化为应对未来挑战的心理资本3. 智能决策流程1. 任务解析与分解NLP分析任务描述自动生成微任务树2. 用户状态评估通过交互行为、历史数据、简单问卷评估当前心理状态3. 策略匹配根据任务类型、用户状态、时间约束选择最优的防拖延策略4. 动态执行启动微任务进入专注计时实时监测注意力和情绪信号5. 激励反馈触发分层激励记录成就更新用户画像6. 复盘优化任务完成后分析拖延模式优化未来策略四、代码模块化实现项目结构smart_anti_procrastination/├── main.py # 主程序入口├── data_models.py # 数据模型定义├── task_parser.py # 任务解析与分解模块├── state_assessor.py # 用户状态评估模块├── timer_engine.py # 智能计时引擎├── motivation_system.py # 分段激励系统├── focus_manager.py # 专注力管理模块├── progress_tracker.py # 进度追踪与可视化└── README.md # 项目说明文档1. data_models.py - 数据模型定义数据模型模块定义智能防拖延系统的核心数据结构包含任务(Task)、微任务(MicroTask)、用户状态(UserState)、激励(Stimulus)等类from dataclasses import dataclass, fieldfrom typing import List, Dict, Optional, Anyfrom enum import Enumfrom datetime import datetime, timedeltaimport uuidimport jsonclass TaskComplexity(Enum):任务复杂度等级TRIVIAL trivial # 琐碎5分钟内可完成SIMPLE simple # 简单30分钟内可完成MODERATE moderate # 中等1-2小时可完成COMPLEX complex # 复杂半天至一天OVERWHELMING overwhelming # 压倒性数天或数周class UserState(Enum):用户当前心理状态MOTIVATED motivated # 积极有动力NEUTRAL neutral # 中性无明显倾向RESISTANT resistant # 抗拒有拖延倾向ANXIOUS anxious # 焦虑担心做不好EXHAUSTED exhausted # 精疲力竭需要休息FOCUSED focused # 高度专注DISTRACTED distracted # 分心容易走神class TaskStatus(Enum):任务状态PENDING pending # 待处理IN_PROGRESS in_progress # 进行中PAUSED paused # 已暂停COMPLETED completed # 已完成ABANDONED abandoned # 已放弃class StimulusType(Enum):激励类型VISUAL visual # 视觉反馈进度条、动画ACHIEVEMENT achievement # 成就解锁徽章、称号SOCIAL social # 社交激励分享、排行榜PHYSICAL physical # 生理奖励休息、伸展COGNITIVE cognitive # 认知重构正面反馈、肯定dataclassclass MicroTask:微任务类将一个大任务分解为可在短时间内完成的微小单元micro_task_id: str field(default_factorylambda: str(uuid.uuid4())[:8])parent_task_id: str # 父任务IDtitle: str # 微任务标题description: str # 详细描述estimated_duration: int 5 # 预估耗时分钟actual_duration: Optional[int] None # 实际耗时分钟status: TaskStatus TaskStatus.PENDING # 状态order_index: int 0 # 执行顺序prerequisites: List[str] field(default_factorylist) # 前置微任务is_checkpoint: bool False # 是否为检查点里程碑completed_at: Optional[str] None # 完成时间dataclassclass Task:任务类代表一个需要完成的工作单元task_id: str field(default_factorylambda: str(uuid.uuid4())[:8])title: str # 任务标题description: str # 任务描述complexity: TaskComplexity TaskComplexity.MODERATE # 复杂度total_estimated_time: int 60 # 总预估时间分钟deadline: Optional[datetime] None # 截止时间created_at: str field(default_factorylambda: datetime.now().isoformat())status: TaskStatus TaskStatus.PENDING # 状态micro_tasks: List[MicroTask] field(default_factorylist) # 子微任务列表tags: List[str] field(default_factorylist) # 标签如工作、学习difficulty_score: float 0.5 # 主观难度评分0-1importance_score: float 0.5 # 重要程度评分0-1energy_required: float 0.5 # 所需精力水平0-1energy_reward: float 0.3 # 完成后能量恢复0-1best_time_of_day: str any # 最佳完成时间段subtasks_completed: int 0 # 已完成子任务数total_subtasks: int 0 # 总子任务数last_active_time: Optional[str] None # 最后活跃时间notes: str # 备注dataclassclass UserProfile:用户画像类记录用户的行为模式和心理特征user_id: str field(default_factorylambda: str(uuid.uuid4())[:8])username: str default_usercreated_at: str field(default_factorylambda: datetime.now().isoformat())# 行为统计数据total_tasks_completed: int 0total_focus_time: int 0 # 总专注时长分钟average_session_length: float 25.0 # 平均单次专注时长procrastination_count: int 0 # 记录的拖延次数streak_days: int 0 # 连续活跃天数last_active_date: Optional[str] None# 心理状态基线baseline_energy_level: float 0.7 # 基线精力水平0-1stress_sensitivity: float 0.5 # 压力敏感度0-1perfectionism_score: float 0.5 # 完美主义倾向0-1reward_sensitivity: float 0.6 # 奖励敏感度0-1# 偏好设置preferred_work_duration: int 25 # 首选工作时长分钟preferred_break_duration: int 5 # 首选休息时长分钟notification_enabled: bool Truesound_enabled: bool Truetheme: str light # UI主题# 历史任务记录简化存储recent_tasks: List[str] field(default_factorylist) # 最近任务ID列表dataclassclass FocusSession:专注会话类记录一次完整的专注工作周期session_id: str field(default_factorylambda: str(uuid.uuid4())[:8])task_id: str start_time: str field(default_factorylambda: datetime.now().isoformat())end_time: Optional[str] Noneplanned_duration: int 25 # 计划时长分钟actual_duration: int 0 # 实际时长分钟interruptions: int 0 # 中断次数completion_status: str completed # completed/interrupted/pausedmood_before: float 0.5 # 开始前心情0-1mood_after: Optional[float] None # 结束后心情0-1productivity_rating: Optional[int] None # 自评生产力1-5distractions_logged: List[str] field(default_factorylist) # 记录的干扰源dataclassclass Stimulus:激励类定义一个激励事件的内容和触发条件stimulus_id: str field(default_factorylambda: str(uuid.uuid4())[:8])stimulus_type: StimulusType StimulusType.VISUALtitle: str message: str trigger_condition: Dict[str, Any] field(default_factorydict) # 触发条件reward_points: int 10 # 奖励积分icon: str animation_type: str fade_in # 动画类型duration_seconds: int 3 # 展示时长is_unlocked: bool Falseunlocked_at: Optional[str] Nonedataclassclass Achievement:成就类记录用户解锁的长期成就achievement_id: str field(default_factorylambda: str(uuid.uuid4())[:8])title: str description: str icon: str condition_type: str # 解锁条件类型condition_value: Any None # 解锁条件值unlocked: bool Falseunlocked_at: Optional[str] Nonerarity: str common # common/uncommon/rare/epic/legendarydataclassclass ProcrastinationPattern:拖延模式类记录和分析用户的拖延行为模式pattern_id: str field(default_factorylambda: str(uuid.uuid4())[:8])trigger_task_type: str # 触发拖延的任务类型time_of_day: str # 发生时间emotional_state: str # 当时的情绪状态avoidance_behavior: str # 采取的回避行为frequency: int 1 # 发生频率first_observed: str field(default_factorylambda: datetime.now().isoformat())last_observed: str field(default_factorylambda: datetime.now().isoformat())suggested_intervention: str # 建议的干预措施2. task_parser.py - 任务解析与分解模块任务解析与分解模块负责将复杂任务智能分解为可执行的微任务使用NLP启发式规则和任务结构分析import refrom typing import List, Dict, Optional, Tuplefrom dataclasses import dataclass, fieldfrom enum import Enumimport uuidfrom datetime import datetime, timedelta# 导入数据模型from data_models import Task, MicroTask, TaskComplexity, TaskStatusclass TaskParser:任务解析器功能解析任务描述自动评估复杂度并分解为微任务序列def __init__(self):初始化解析器加载分解模板和关键词库self.complexity_keywords {TaskComplexity.TRIVIAL: [检查, 回复, 整理, 删除, 备份, 更新, 记录, 确认, 通知, 简单],TaskComplexity.SIMPLE: [编写, 修改, 测试, 安装, 配置, 学习, 研究, 整理, 设计, 基础],TaskComplexity.MODERATE: [开发, 实现, 重构, 优化, 集成, 部署, 分析, 规划, 撰写, 中等],TaskComplexity.COMPLEX: [架构, 设计, 领导, 协调, 解决, 创新, 全面, 系统, 核心, 复杂],TaskComplexity.OVERWHELMING: [整个, 全部, 终极, 革命性, 从零, 全面, 长期, 战略, 转型, 巨大]}self.micro_task_templates {development: [环境准备与工具检查,需求分析与技术调研,核心逻辑设计与伪代码编写,模块1基础框架搭建,模块2核心功能实现,模块3边界条件处理,单元测试编写,集成测试与调试,代码审查与优化,文档撰写与注释补充],writing: [主题确定与大纲构思,资料搜集与素材整理,引言部分撰写,主体段落1核心论点展开,主体段落2论据支撑,主体段落3反驳与回应,结论部分撰写,全文逻辑梳理与润色,格式排版与校对,最终审阅与提交],learning: [学习目标设定与路径规划,基础知识框架梳理,核心概念学习与笔记,实践练习基础案例,实践练习进阶案例,知识点串联与应用,难点攻克与答疑,知识体系复盘总结,实际应用尝试,学习效果检验],meeting_preparation: [会议目标明确,议程草拟与时间分配,相关资料搜集整理,参会人员沟通与确认,演示材料/PPT制作,预演与关键点梳理,技术问题排查,会议室预定与设备测试,备用方案准备,心态调整与开场准备],default: [任务理解与目标确认,相关信息搜集与梳理,第一步最简可行操作,第二步核心逻辑构建,第三步细节完善与扩展,第四步验证与测试,第五步优化与美化,第六步总结与归档,清理工作环境,反思与记录经验]}self.duration_estimates {TaskComplexity.TRIVIAL: 5,TaskComplexity.SIMPLE: 25,TaskComplexity.MODERATE: 90,TaskComplexity.COMPLEX: 240,TaskComplexity.OVERWHELMING: 480}def parse_and_create_task(self, title: str, description: str , complexity_hint: str ) - Task:解析任务描述并创建完整的任务对象Args:title: 任务标题description: 任务详细描述complexity_hint: 可选的复杂度提示Returns:Task: 完整的任务对象包含分解的微任务列表# 1. 评估任务复杂度complexity self._assess_complexity(title, description, complexity_hint)# 2. 估算总时间total_time self.duration_estimates.get(complexity, 60)# 3. 确定任务类型模板task_type self._identify_task_type(title, description)# 4. 分解微任务micro_tasks self._decompose_into_micro_tasks(task_type, complexity)# 5. 创建任务对象task Task(titletitle,descriptiondescription,complexitycomplexity,total_estimated_timetotal_time,micro_tasksmicro_tasks,total_subtaskslen(micro_tasks),difficulty_scoreself._estimate_difficulty(complexity, description),importance_score0.5, # 默认中等重要性可由用户调整energy_requiredself._estimate_energy_requirement(complexity),energy_rewardmin(0.8, 0.2 (micro_tasks[0].estimated_duration / 60)),tagsself._extract_tags(title, description))return taskdef _assess_complexity(self, title: str, description: str, hint: str) - TaskComplexity:评估任务复杂度Args:title: 任务标题description: 任务描述hint: 用户提供的复杂度提示Returns:TaskComplexity: 评估后的复杂度等级text f{title} {description}.lower()# 如果提供了有效提示优先使用if hint:try:return TaskComplexity(hint.lower())except ValueError:pass# 基于关键词计分scores {c: 0 for c in TaskComplexity}for complexity, keywords in self.complexity_keywords.items():for keyword in keywords:if keyword in text:scores[complexity] 1# 基于描述长度和结构word_count len(text.split())if word_count 100:scores[TaskComplexity.OVERWHELMING] 1scores[TaskComplexity.COMPLEX] 1elif word_count 50:scores[TaskComplexity.COMPLEX] 1scores[TaskComplexity.MODERATE] 1elif word_count 10:scores[TaskComplexity.TRIVIAL] 2# 基于特殊模式if re.search(r\b(整个|全部|所有|从零|全面)\b, text):scores[TaskComplexity.OVERWHELMING] 2if re.search(r\b(和|以及|并且|同时|还要)\b, text): # 多任务并行scores[TaskComplexity.COMPLEX] 1if re.search(r\b(首先|第一步|先)\b, text): # 已有分解迹象scores[TaskComplexity.MODERATE] 1# 找出最高分的复杂度max_score max(scores.values())candidates [c for c, s in scores.items() if s max_score]# 如果有多个候选倾向于选择更低复杂度的避免过度估计if len(candidates) 1:complexity_order [TaskComplexity.TRIVIAL, TaskComplexity.SIMPLE,TaskComplexity.MODERATE, TaskComplexity.COMPLEX,TaskComplexity.OVERWHELMING]for c in complexity_order:if c in candidates:return creturn candidates[0] if candidates else TaskComplexity.MODERATEdef _identify_task_type(self, title: str, description: str) - str:识别任务所属的类型以便选择合适的分解模板Args:title: 任务标题description: 任务描述Returns:str: 任务类型标识符text f{title} {description}.lower()type_keywords {development: [开发, 编码, 编程, bug, 修复, 重构, 实现, 算法, 接口, 数据库],writing: [写, 撰写, 文章, 报告, 论文, 博客, 文案, 总结, 心得, 文档],learning: [学习, 学, 研究, 了解, 掌握, 精通, 教程, 课程, 读书, 练习],meeting_preparation: [会议, 汇报, 演讲, 演示, 讨论, 评审, 答辩, 面试, 沟通],design: [设计, 画图, 原型, UI, UX, 界面, 图标, 布局, 美化],planning: [规划, 计划, 策划, 安排, 日程, 时间表, 路线图, 方案]}scores {t: 0 for t in type_keywords}for task_type, keywords in type_keywords.items():for keyword in keywords:if keyword in text:scores[task_type] 1max_score max(scores.values())if max_score 0:return defaultreturn max(scores, keyscores.get)def _decompose_into_micro_tasks(self, task_type: str, complexity: TaskComplexity) - List[MicroTask]:将任务分解为微任务序列Args:task_type: 任务类型complexity: 任务复杂度Returns:List[MicroTask]: 微任务列表templates self.micro_task_templates.get(task_type, self.micro_task_templates[default])# 根据复杂度决定使用多少个微任务complexity_multiplier {TaskComplexity.TRIVIAL: 1,TaskComplexity.SIMPLE: 3,TaskComplexity.MODERATE: 6,TaskComplexity.COMPLEX: 9,TaskComplexity.OVERWHELMING: 12}num_tasks min(len(templates), complexity_multiplier.get(complexity, 5))micro_tasks []base_duration self.duration_estimates.get(complexity, 60) // num_tasksfor i, template_title in enumerate(templates[:num_tasks]):# 动态调整每个微任务的预估时间duration_variation [-2, -1, 0, 1, 2]import randomadjusted_duration max(2, base_duration random.choice(duration_variation))micro_task MicroTask(titletemplate_title,descriptionf执行{task_type}任务的步骤{i1},estimated_durationadjusted_duration,order_indexi,is_checkpoint(i 0 and i % 3 0) # 每3个微任务设置一个检查点)micro_tasks.append(micro_task)# 如果是压倒性复杂任务递归分解最后一个微任务if complexity TaskComplexity.OVERWHELMING and len(micro_tasks) 0:last_task micro_tasks[-1]last_task.title 【子任务】 last_task.titlelast_task.description 这是一个复杂的子任务需要进一步分解执行return micro_tasksdef _estimate_difficulty(self, complexity: TaskComplexity, description: str) - float:估算任务的主观难度0-1base_difficulty {TaskComplexity.TRIVIAL: 0.1,TaskComplexity.SIMPLE: 0.3,TaskComplexity.MODERATE: 0.5,TaskComplexity.COMPLEX: 0.7,TaskComplexity.OVERWHELMING: 0.9}difficulty base_difficulty.get(complexity, 0.5)# 根据描述中的不确定性词汇调整uncertainty_words [可能, 大概, 试试, 不确定, 或许, 也许]text description.lower()for word in uncertainty_words:if word in text:difficulty 0.05return min(1.0, max(0.0, difficulty))def _estimate_energy_requirement(self, complexity: TaskComplexity) - float:估算完成任务所需的精力水平0-1energy_map {TaskComplexity.TRIVIAL: 0.2,TaskComplexity.SIMPLE: 0.4,TaskComplexity.MODERATE: 0.6,TaskComplexity.COMPLEX: 0.8,TaskComplexity.OVERWHELMING: 1.0}return energy_map.get(complexity, 0.5)def _extract_tags(self, title: str, description: str) - List[str]:从任务描述中提取标签text f{title} {description}.lower()potential_tags [工作, 学习, 生活, 健康, 财务, 人际,利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛