编写程序实时记录情绪波动节点,关联当日工作效率,总结情绪规律,规划高创造力时段。

📅 2026/7/23 12:28:02 👁️ 阅读次数 📝 编程学习
编写程序实时记录情绪波动节点,关联当日工作效率,总结情绪规律,规划高创造力时段。

情绪-效率关联分析系统:用 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解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!