编写程序实时记录情绪波动节点,关联当日工作效率,总结情绪规律,规划高创造力时段。
情绪-效率关联分析系统:用 Python 量化你的创造力节律
心理健康与创新能力课程 · 技术实践工具
零依赖 · 本地优先 · 隐私安全
一、实际应用场景描述
这是一套为"心理健康与创新能力"课程设计的技术实践工具。它的使用场景非常具体:
你是一名知识工作者(开发者、设计师、研究者、学生),每天在电脑前工作 6-10 小时。 你隐约感觉自己有些日子效率奇高,有些日子坐了一天什么都没干成,但你不清楚这背后的规律——到底是什么在影响你的创造力输出?
这个工具解决的核心问题是:
通过持续自我记录 + 统计分析,帮你发现"什么样的情绪状态下,创造力产出最高",从而主动规划深度工作时段。
四个核心动作形成闭环:
情绪签到 → 工作记录 → 关联分析 → 时段规划
↑ ↓
←←←←← 次日执行 ←←←←← 报告输出 ←←←←←←
二、引入痛点
痛点 1:情绪是"黑箱"
大多数人靠"感觉"判断自己的状态——"今天状态不错"、"最近有点累"。但这些模糊感知有两个问题:
- 无量化:无法回答"你上周的平均情绪分是多少"
- 无记忆:三天前的情绪波动早已遗忘
痛点 2:效率归因错误
当我们效率低时,常归咎于"不够努力"或"拖延症"。但数据分析可能揭示真正的原因:你只是在错误的时间做了错误的事。下午 3 点写代码效率低下,不是因为你懒,而是因为你的认知节律本就不在高峰。
痛点 3:心理健康课程缺"工具感"
很多心理健康课程停留在理论层面——知道"情绪管理很重要",但缺乏可执行的、数据驱动的日常实践工具。
本工具的定位
不是心理咨询替代物,不是 productivity 鸡汤,而是一个中立的数据记录与分析工具——就像健身房的体重秤和训练日志,它只负责测量和呈现,解读权在你自己。
三、核心逻辑讲解
3.1 数据流全景
┌──────────────┐ ┌──────────────┐ ┌─────────────────┐
│ MoodRecorder │ │ Productivity │ │ AnalyticsEngine │
│ 情绪签到 │────→│ Recorder │────→│ 分析引擎 │
│ (30秒/次) │ │ 工作记录 │ │ • 相关性计算 │
└──────────────┘ └──────────────┘ │ • 时段聚类 │
│ • 波动分析 │
└────────┬────────┘
↓
┌─────────────────┐
│ ReportGenerator │
│ 终端仪表盘 │
│ JSON导出 │
└─────────────────┘
3.2 三个核心算法
算法一:皮尔逊相关系数(情绪 ↔ 效率)
这是整个系统的"灵魂算法"。它回答一个问题:情绪好和效率高,到底是真有关系,还是只是你的错觉?
def _pearson_correlation(self, x, y):
n = len(x)
mx, my = mean(x), mean(y)
num = sum((xi - mx) * (yi - my) for xi, yi in zip(x, y))
den = sqrt(sum((xi-mx)**2)) * sqrt(sum((yi-my)**2))
return num / den # 值域 [-1, 1]
直觉理解:如果把每天的"平均情绪分"和"平均效率分"画成散点图,相关系数就是这条趋势线的斜率方向。r=0.7 意味着"情绪每高1分,效率大约也高0.7分"。
算法二:时段聚合 + 综合评分(发现黄金时段)
综合评分 = 创造力 × 0.5 + 效率 × 0.3 + 情绪 × 0.2
权重设计逻辑:创造力权重最高(这是"创新能力课程"的核心关注点),效率次之(产出质量),情绪最低(它是前提条件而非目标本身)。
算法三:情绪熵/波动幅度(稳定性度量)
用标准差衡量情绪波动。低波动=稳定,高波动=剧烈起伏。持续高波动本身就是一个值得关注的信号。
3.3 为什么用"天"做对齐粒度?
你可能注意到代码中有一个关键步骤:先把同一天的多次记录取平均,再算天与天之间的相关性。
这是因为:
- 同一次情绪签到和工作记录的时间差可能只有几分钟,天然相关(刚喝了咖啡当然都高),没有统计意义
- 以"天"为粒度,才能看出"今天整体情绪好 → 今天整体产出高"的宏观规律
四、代码模块化设计
整个系统分为 7 个模块,各司其职,通过构造函数注入依赖:
模块 职责 关键方法
"MoodRecord" /
"WorkRecord" /
"DailySummary" 数据模型(@dataclass) 自动序列化
"StorageEngine" JSON 文件读写
"append_mood()",
"load_all_work()"
"MoodRecorder" 情绪签到
"log_mood()",
"quick_checkin()"
"ProductivityRecorder" 工作记录 + Pomodoro 会话
"log_work()",
"start/end_focus_session()"
"AnalyticsEngine" 核心分析算法
"compute_correlation()",
"find_peak_creativity_windows()"
"ReportGenerator" 报告输出
"print_dashboard()",
"export_json_report()"
"main()" CLI 入口 子命令路由
模块间依赖关系(无循环依赖)
main → MoodRecorder → StorageEngine
→ ProductivityRecorder → StorageEngine
→ AnalyticsEngine → StorageEngine
→ ReportGenerator → AnalyticsEngine
设计决策说明
决策 选择 理由
存储格式 JSON 文件 零依赖、人类可读、易备份迁移
序列化 @dataclass + asdict 代码简洁,类型清晰
CLI 框架 手写 argv 解析 避免引入 click/argparse 依赖
随机种子 seed(42) 演示数据可复现
评分校验 max(1, min(10, x)) 防呆设计,防止误输入
五、README 文件和使用说明
完整的 README.md 和 CHEAT_SHEET.md 已包含在项目中。以下是核心使用流程:
5 分钟上手
# 1. 克隆项目
cd mood_productivity_tracker
# 2. 一键看演示(生成14天模拟数据 + 完整报告)
python run.py
# 3. 清空演示数据,开始记录自己的
rm -rf data/*.json
# 4. 日常使用
python main.py checkin # 情绪签到(30秒)
python main.py work coding 8 7 # 记录工作(效率8, 创造力7)
python main.py report # 随时查看分析报告
最低有效数据量
连续记录 7 天以上,分析结果才有统计意义。建议前两周每天至少签到 3 次 + 记录 2 次工作。
六、核心知识点卡片
"CHEAT_SHEET.md" 中包含 10 张卡片,覆盖:
卡片 知识点
#1 皮尔逊相关系数公式与解读
#2 情绪标准差与心理意义
#3 时段聚合算法(Time-Bucket)
#4 加权综合评分模型
#5 滑动窗口与实时趋势
#6 @dataclass 使用技巧
#7 本地优先存储架构
#8 CLI 子命令设计模式
#9 模拟数据生成策略
#10 心理健康与创造力研究共识
这里摘录最关键的几张:
卡片 1:皮尔逊相关系数
r = Σ((xi - x̄)(yi - ȳ)) / √(Σ(xi-x̄)²) · √(Σ(yi-ȳ)²)
|r| ≥ 0.8 → 极强 | 0.6-0.8 → 强 | 0.4-0.6 → 中等
0.2-0.4 → 弱 | < 0.2 → 极弱
⚠ 相关 ≠ 因果。正相关只说明同向变化。
卡片 4:综合评分加权模型
综合评分 = 创造力 × 0.5 + 效率 × 0.3 + 情绪 × 0.2
权重逻辑:
创造力 0.5 → 课程核心关注点
效率 0.3 → 产出质量
情绪 0.2 → 前提条件,非目标本身
卡片 10:研究共识(仅供参考)
- 适度唤醒理论:创造力在中等唤醒水平时最佳
- 情绪广度效应:积极情绪拓宽注意力,促进发散思维
- 心流状态:挑战与技能匹配时,创造力输出最高
- circadian 节律:多数人认知高峰在上午 9-11 点
- 个体差异巨大:群体规律仅供参考,本工具帮你发现自己的规律
七、演示输出示例
运行
"python run.py" 后的实际输出(已验证):
============================================================
📊 情绪-效率关联分析仪表盘
生成时间: 2026-07-23 03:50
============================================================
【情绪 ↔ 效率 相关性】
皮尔逊 r = 0.013 (极弱/无正相关)
【情绪规律总结】
记录总数: 44
平均情绪分: 5.4 / 10
情绪波动幅度: 1.83
主导情绪: calm
高频情绪Top3: calm(10次), tired(10次), anxious(8次)
📈 时段情绪分布:
08:00-10:00 ████████████████████████████ 6.3
10:00-12:00 ██████████████████████████████ 6.6
14:00-16:00 ███████████████████████ 5.2
16:00-18:00 ███████████████████ 4.3
【🏆 高创造力黄金时段】
#1 08:00-10:00 综合评分 7.3 (创造力 7, 效率 8.3, 情绪 6.3)
#2 10:00-12:00 综合评分 7.1
#3 14:00-16:00 综合评分 5.0
💡 建议在 08:00-10:00 安排高难度创造性任务
⚠ 14:00-16:00 低效时段,建议安排机械性工作
============================================================
注:演示数据的相关系数为 0.013(极低),这是因为随机种子生成的模拟数据未做强关联设计。真实使用 7+ 天后,你自己的数据会呈现更有意义的相关性。
八、总结
这个工具做了什么
1. 降低记录门槛 — 30 秒签到,零依赖安装,本地存储
2. 提供统计视角 — 用皮尔逊相关、时段聚合等算法,把模糊感受变成可量化指标
3. 输出可执行建议 — 不只是"你的情绪还行",而是"把创造性工作安排在 9-11 点"
4. 保持中立立场 — 工具只呈现数据,不做诊断、不给鸡汤、不引流
这个工具没做什么
- ❌ 不做心理健康诊断
- ❌ 不上传任何数据到云端
- ❌ 不依赖任何第三方服务
- ❌ 不承诺"用了就能提高效率"
延伸思考
这个项目的核心价值不在于代码本身,而在于 "自我量化"(Quantified Self)的方法论。当你开始持续记录,你就从"被动感受情绪"变成了"主动观察情绪"——而这个视角的转换本身,就是心理健康课程中"元认知"能力的体现。
下一步可以扩展的方向:接入 matplotlib 做可视化图表、用 SQLite 支持更大数据量、增加情绪预警机制(连续低落自动提醒休息)、引入 sklearn 做简单的创造力预测模型。
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!
