用 Python 构建一个“自主决策频率与创意产出”相关性分析工具统计一周内你主动拒绝他人安排的次数分析“心理独立程度”与“每周创意数量”的相关性。内容紧扣心理健康与创新能力课程保持去营销化、中立、可教学、可复用不涉及任何测评/社交产品推广。项目名AutoNoimyPulse — 心理独立度与创意相关性分析仪一、实际应用场景描述在心理健康与创新能力课程中有一个被反复验证的命题“心理独立”Psychological Autonomy是个体创造力的前置条件——你有多敢说“不”决定了你有多少认知资源用于创造。现实场景包括- 职场人每周被无数会议、临时任务、他人安排塞满- 想做自己的事但“不好意思拒绝”“怕影响关系”- 创新课程讲“自主性”“内在动机”但学生/职场人缺乏量化自己“被他人支配程度”的工具- 没有人把“拒绝次数”和“本周创意产出”放在一张图上。心理学研究指出- 自主性Autonomy是自我决定论SDT三大基本心理需求之一Deci Ryan- 外部控制感越强内在动机和创造力越低Lepper Greene- “能说‘不’”不是冷漠而是认知资源的自我保护机制。AutoNoimyPulse 的目标不是“劝你当刺头”而是把“你有多敢为自己做主”变成一个可观测、可记录的指标并检验它是否真的和你的创造力相关。二、引入痛点现有时间管理 / 健康工具的盲区维度 传统时间管理工具 AutoNoimyPulse关注点 完成了多少任务 多少任务是别人安排的核心指标 效率、完成率 自主决策频率 vs 创意产出行为导向 优化执行 检测心理独立程度创新价值 几乎为零 量化“自主性”与“创造力”的关系真实痛点- “我好忙但不知道忙了些什么” —— 因为从未统计“别人塞给你的事”有多少- “想拒绝但不敢” —— 缺乏数据支撑“我是不是被过度安排了”- “创造力下降”找不到原因 —— 没人把“被动接受”和“创意枯竭”放在一张图上- 创新课程缺乏个人化实验工具 —— 讲了很多理论学生不会“测自己”三、核心逻辑讲解先讲思想核心隐喻你的认知带宽就像手机电量——别人安排的事是“后台程序”拒绝是“关闭后台”把电量留给自己的创造力。程序做了什么1. 定义“他人安排事件”- 来源同事、老板、家人、朋友……- 记录时间、内容、你最终是否接受- 关键分类主动拒绝 vs 被动接受2. 定义“创意产出事件”- 本周产出了几个新想法/方案/作品- 不是“完成了多少”而是“原创了多少”3. 核心分析相关性检测- X 轴本周主动拒绝次数心理独立指数- Y 轴本周创意产出数量- 计算 Pearson 相关系数- 附带散点图文本版直观展示趋势4. 心理独立程度分级- 低0-2 次/周高度依赖他人议程- 中3-5 次/周有一定自主意识- 高6 次/周心理独立性较强5. 关键洞察输出- 相关性是否显著- 拒绝最多的那天创意产出是否更高- “被动接受”的事项中有多少本可以拒绝关键设计原则- 不评判“拒绝”对错只记录事实- 不鼓励无差别拒绝而是“有意识的自主决策”- 相关性 ≠ 因果程序会明确标注- 所有数据本地存储完全私密四、代码模块化设计项目结构autonomy_pulse/│├── README.md├── requirements.txt├── main.py├── core/│ ├── event_logger.py # 他人安排事件记录│ ├── creativity_logger.py # 创意产出记录│ ├── correlation_analyzer.py # 相关性分析引擎│ └── reporter.py # 心理独立度报告└── data/└── weekly_log.json五、核心代码实现Python1️⃣ 他人安排事件记录event_logger.py# core/event_logger.pyfrom dataclasses import dataclass, fieldfrom datetime import datetime, timedeltafrom typing import List, Optionalimport jsonfrom pathlib import Pathimport uuiddataclassclass ScheduledEvent:一条他人安排事件核心记录谁安排了什么以及你的回应id: str field(default_factorylambda: str(uuid.uuid4()))timestamp: datetime field(default_factorydatetime.now)# 事件信息 source: str # 谁安排的老板/同事A/家人content: str # 具体内容is_unsolicited: bool True # 是否未经你主动请求的# 你的回应 accepted: bool True # True 被动接受False 主动拒绝reason_if_rejected: str # 拒绝的理由可选# 自我反思关键字段was_it_my_decision: bool True # 最终是我的决定吗# 如果 acceptedTrue 但 was_it_my_decisionFalse → 被动接受# 如果 acceptedFalse 但 was_it_my_decisionTrue → 主动拒绝 ✅def is_active_rejection(self) - bool:判断是否为主动拒绝核心指标return not self.accepted and self.was_it_my_decisiondef is_passive_acceptance(self) - bool:判断是否被动接受return self.accepted and not self.was_it_my_decisiondef to_dict(self) - dict:return {id: self.id,timestamp: self.timestamp.isoformat(),source: self.source,content: self.content,is_unsolicited: self.is_unsolicited,accepted: self.accepted,reason_if_rejected: self.reason_if_rejected,was_it_my_decision: self.was_it_my_decision,}class EventLogger:他人安排事件记录器def __init__(self, log_path: str data/weekly_log.json):self.log_path Path(log_path)self.log_path.parent.mkdir(exist_okTrue)if not self.log_path.exists():self._write({events: [], creative_entries: []})def _read(self) - dict:with open(self.log_path, r, encodingutf-8) as f:return json.load(f)def _write(self, data: dict):with open(self.log_path, w, encodingutf-8) as f:json.dump(data, f, ensure_asciiFalse, indent2)def log_event(self, event: ScheduledEvent):data self._read()data[events].append(event.to_dict())self._write(data)def get_events_this_week(self) - List[ScheduledEvent]:获取本周事件data self._read()cutoff datetime.now() - timedelta(days7)results []for item in data[events]:ts datetime.fromisoformat(item[timestamp])if ts cutoff:results.append(self._to_event(item))return resultsdef _to_event(self, data: dict) - ScheduledEvent:return ScheduledEvent(iddata[id],timestampdatetime.fromisoformat(data[timestamp]),sourcedata[source],contentdata[content],is_unsoliciteddata.get(is_unsolicited, True),accepteddata[accepted],reason_if_rejecteddata.get(reason_if_rejected, ),was_it_my_decisiondata.get(was_it_my_decision, True),)设计说明was_it_my_decision 是整个系统的认知核心——接受不一定被动拒绝不一定主动关键在这是谁的决定2️⃣ 创意产出记录creativity_logger.py# core/creativity_logger.pyfrom dataclasses import dataclass, fieldfrom datetime import datetime, timedeltafrom typing import Listimport jsonfrom pathlib import Pathimport uuiddataclassclass CreativeEntry:一条创意产出记录id: str field(default_factorylambda: str(uuid.uuid4()))timestamp: datetime field(default_factorydatetime.now())description: str # 创意内容简述category: str idea # idea / solution / project / insightenergy_level: int 5 # 产生时的精力 1-10def to_dict(self) - dict:return {id: self.id,timestamp: self.timestamp.isoformat(),description: self.description,category: self.category,energy_level: self.energy_level,}class CreativityLogger:创意产出记录器def __init__(self, log_path: str data/weekly_log.json):self.log_path Path(log_path)def _read(self) - dict:with open(self.log_path, r, encodingutf-8) as f:return json.load(f)def _write(self, data: dict):with open(self.log_path, w, encodingutf-8) as f:json.dump(data, f, ensure_asciiFalse, indent2)def log_creative_entry(self, entry: CreativeEntry):data self._read()data[creative_entries].append(entry.to_dict())self._write(data)def get_entries_this_week(self) - List[CreativeEntry]:data self._read()cutoff datetime.now() - timedelta(days7)results []for item in data.get(creative_entries, []):ts datetime.fromisoformat(item[timestamp])if ts cutoff:results.append(CreativeEntry(iditem[id],timestampts,descriptionitem[description],categoryitem.get(category, idea),energy_levelitem.get(energy_level, 5),))return results3️⃣ 相关性分析引擎correlation_analyzer.py# core/correlation_analyzer.pyfrom typing import List, Dictfrom datetime import datetime, timedeltafrom .event_logger import EventLogger, ScheduledEventfrom .creativity_logger import CreativityLogger, CreativeEntryclass CorrelationAnalyzer:分析自主决策频率与创意产出的相关性核心指标- X每周主动拒绝次数心理独立指数- Y每周创意产出数量def __init__(self,event_logger: EventLogger,creativity_logger: CreativityLogger,weeks: int 4):self.event_logger event_loggerself.creativity_logger creativity_loggerself.weeks weeksdef analyze(self) - Dict:对最近 N 周做相关性分析返回- weekly_data: 每周的拒绝次数 创意数量- pearson_r: 相关系数- interpretation: 解读weekly self._collect_weekly_data()if len(weekly) 2:return {error: 需要至少 2 周的数据才能做相关性分析,weeks_collected: len(weekly),}# 提取 X 和 Yx [w[rejections] for w in weekly]y [w[creative_count] for w in weekly]# Pearson 相关系数教学用纯 Python 实现r self._pearson(x, y)interpretation self._interpret_correlation(r, len(weekly))return {weeks_analyzed: len(weekly),weekly_data: weekly,pearson_r: round(r, 3),interpretation: interpretation,x_label: 每周主动拒绝次数,y_label: 每周创意产出数量,}def _collect_weekly_data(self) - List[Dict]:收集最近 N 周的数据now datetime.now()weekly []for i in range(self.weeks):week_start now - timedelta(days(i 1) * 7)week_end now - timedelta(daysi * 7)# 本周事件events self.event_logger.get_events_this_week()week_events [e for e in eventsif week_start e.timestamp week_end]# 本周创意entries self.creativity_logger.get_entries_this_week()week_creative [e for e in entriesif week_start e.timestamp week_end]rejections sum(1 for e in week_events if e.is_active_rejection())weekly.append({week: fW{i1},start: week_start.strftime(%m/%d),end: week_end.strftime(%m/%d),total_scheduled: len(week_events),rejections: rejections,passive_accepts: sum(1 for e in week_events if e.is_passive_acceptance()),creative_count: len(week_creative),creative_categories: [e.category for e in week_creative],})return weeklydef _pearson(self, x: List[float], y: List[float]) - float:Pearson 相关系数 —— 纯 Python 实现适合教学n len(x)if n ! len(y) or n 2:return 0.0sum_x sum(x)sum_y sum(y)sum_xy sum(a * b for a, b in zip(x, y))sum_x2 sum(a * a for a in x)sum_y2 sum(b * b for b in y)numerator n * sum_xy - sum_x * sum_ydenominator ((n * sum_x2 - sum_x ** 2) *(n * sum_y2 - sum_y ** 2)) ** 0.5if denominator 0:return 0.0return numerator / denominatordef _interpret_correlation(self, r: float, n: int) - Dict:解读相关系数abs_r abs(r)if abs_r 0.3:strength 极弱或无关elif abs_r 0.5:strength 弱相关elif abs_r 0.7:strength 中等相关elif abs_r 0.9:strength 强相关else:strength 极强相关direction 正相关 if r 0 else 负相关 if r 0 else 无相关# 教学提示if n 4:caveat ⚠️ 数据量较少4 周结论仅供参考建议持续记录 8 周以上else:caveat 数据量充足结论有参考价值return {strength: strength,direction: direction,summary: f{direction}{strength},caveat: caveat,note: 相关性 ≠ 因果性请结合个人反思综合判断,}def autonomy_level(self, rejections: int) - Dict:心理独立程度分级if rejections 6:return {level: 高,label: 心理独立型,description: 你有较强的自主决策意识善于保护自己的认知资源,suggestion: 保持同时留意是否过度拒绝导致协作困难,}elif rejections 3:return {level: 中,label: 过渡探索型,description: 你开始有意识地做自主决策但仍有提升空间,suggestion: 尝试下周多拒绝 1-2 件不是你决定要做的事,}else:return {level: 低,label: 高度依赖型,description: 你的日程可能被他人议程主导自主认知空间有限,suggestion: 从最小的不开始——拒绝一件无关紧要的事观察感受,}设计说明_pearson 用纯 Python 实现不依赖 NumPy——让教学时每一行数学都可见、可拆解4️⃣ 心理独立度报告reporter.py# core/reporter.pyfrom typing import List, Dictfrom .event_logger import EventLoggerfrom .creativity_logger import CreativityLoggerfrom .correlation_analyzer import CorrelationAnalyzerclass AutonomyReporter:生成心理独立度与创意相关性报告def __init__(self,event_logger: EventLogger,creativity_logger: CreativityLogger,analyzer: CorrelationAnalyzer,):self.event_logger event_loggerself.creativity_logger creativity_loggerself.analyzer analyzerdef generate(self):print(\n * 70)print( AutoNoimyPulse · 心理独立度与创意相关性分析)print( * 70)# 本周快照 events self.event_logger.get_events_this_week()creative self.creativity_logger.get_entries_this_week()active_rejections sum(1 for e in events if e.is_active_rejection())passive_accepts sum(1 for e in events if e.is_passive_acceptance())total_scheduled len(events)print(f\n 本周快照)print(f 他人安排事件{total_scheduled} 件)print(f 主动拒绝{active_rejections} 次 ✅)print(f 被动接受{passive_accepts} 次 ⚠️)print(f 创意产出{len(creative)} 条)# 心理独立程度 autonomy self.analyzer.autonomy_level(active_rejections)print(f\n{ * 70})print(f 心理独立程度{autonomy[level]} —— {autonomy[label]})print(f {autonomy[description]})print(f 建议{autonomy[suggestion]})# 相关性分析 analysis self.analyzer.analyze()if error in analysis:print(f\n⚠️ {analysis[error]})returnprint(f\n{ * 70})print(f 相关性分析最近 {analysis[weeks_analyzed]} 周)print(f{ * 70})# 散点图文本版print(f\n 每周数据)print(f {周:6} {拒绝次数:10} {创意数量:10} {被动接受:10})print(f {- * 40})for w in analysis[weekly_data]:print(f {w[week]:6} {w[rejections]:10} f{w[creative_count]:10} {w[passive_accepts]:10})# 文本散点图self._print_text_scatter(analysis[weekly_data])# 核心结果interp analysis[interpretation]print(f\n Pearson 相关系数 r {analysis[pearson_r]})print(f {interp[summary]})print(f {interp[caveat]})print(f {interp[note]})# 教学提示 print(f\n{ * 70})print(f 教学提示)print(f 1. 正相关意味着拒绝越多自主越强创意产出越高)print(f 2. 负相关可能意味着拒绝过多导致孤立反而抑制创意)print(f 3. 最佳区间通常在中等拒绝频率3-6 次/周)print(f 4. 建议持续记录 8 周以上观察个人规律)print(f 5. 被动接受 主动拒绝 时需要关注认知资源保护)def _print_text_scatter(self, weekly_data: List[Dict]):简单的文本散点图if not weekly_data:returnx_vals [w[rejections] for w in weekly_data]y_vals [w[creative_count] for w in weekly_data]max_x max(x_vals) if x_vals else 1max_y max(y_vals) if y_vals else 1print(f\n 文本散点图X拒绝次数Y创意数量)print(f Y)for y in range(max_y, -1, -1):row f {y} │for x in range(max_x 1):if any(w[rejections] x and w[creative_count] y for w in weekly_data):row ●else:row print(row)print( ─ * (max_x * 2 3))x_label for x in range(max_x 1):x_label f {x}print(x_label)print( X 每周主动拒绝次数)5️⃣ 主程序main.py# main.pyfrom datetime import datetime, timedeltafrom core.event_logger import EventLogger, ScheduledEventfrom core.creativity_logger import CreativityLogger, CreativeEntryfrom core.correlation_analyzer import CorrelationAnalyzerfrom core.reporter import AutonomyReporterdef main():# 初始化 event_logger EventLogger()creativity_logger CreativityLogger()analyzer CorrelationAnalyzer(event_logger, creativity_logger, weeks4)reporter AutonomyReporter(event_logger, creativity_logger, analyzer)print( AutoNoimyPulse · 心理独立度与创意相关性分析\n)# 模拟本周的他人安排事件 # 真实使用中这些是用户逐条记录的# 事件 1老板安排的临时会议 → 被动接受event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days6, hours10),source老板,content临时拉会讨论 Q4 规划,acceptedTrue,was_it_my_decisionFalse, # 被动))# 事件 2同事请求帮忙 → 主动拒绝event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days5, hours3),source同事A,content帮忙改一下他的 PPT,acceptedFalse,was_it_my_decisionTrue,reason_if_rejected我手头有自己的 deadline,))# 事件 3朋友约饭 → 主动拒绝event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days4, hours5),source朋友B,content下班一起去新开的火锅店,acceptedFalse,was_it_my_decisionTrue,reason_if_rejected今天想留时间写代码,))# 事件 4家人要求帮忙 → 被动接受event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days3, hours8),source家人,content周末陪去逛街买衣服,acceptedTrue,was_it_my_decisionFalse,))# 事件 5额外任务 → 主动拒绝event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days2, hours6),source同事C,content参加他负责的项目评审会,acceptedFalse,was_it_my_decisionTrue,reason_if_rejected和我的工作方向无关不想分散注意力,))# 模拟本周创意产出 creativity_logger.log_creative_entry(CreativeEntry(timestampdatetime.now() - timedelta(days5, hours8),description想到了用 Redis 做 API 限流的新方案,categorysolution,energy_level8,))creativity_logger.log_creative_entry(CreativeEntry(timestampdatetime.now() - timedelta(days4, hours1),description设计一个命令行工具能自动整理每日笔记,categoryproject,energy_level7,))creativity_logger.log_creative_entry(CreativeEntry(timestampdatetime.now() - timedelta(days3, hours4),description突然意识到拒绝不必要的事后下午的时间质量完全不同,categoryinsight,energy_level9,))creativity_logger.log_creative_entry(CreativeEntry(timestampdatetime.now() - timedelta(days1, hours2),description想出一个用 Git hooks 自动跑 lint 的改进流程,categorysolution,energy_level6,))# 为了演示相关性再补 3 周数据 # 真实使用中这些是用户持续记录的# 这里用更完整的数据让 Pearson 计算有意义# ...为简洁实际使用时建议运行 4 周以上# 生成报告 reporter.generate()if __name__ __main__:main()六、README 文件# AutoNoimyPulse一个心理独立度与创意产出相关性分析工具。## 目的- 量化你有多敢为自己做主- 检验心理独立程度与每周创意数量是否相关- 帮助识别被他人议程主导的认知资源泄漏- 服务于心理健康与创新能力课程的教学实践## 使用说明### 运行环境- Python 3.8- 仅使用标准库### 启动bashpython main.py### 记录他人安排事件pythonfrom core.event_logger import EventLogger, ScheduledEventlogger EventLogger()logger.log_event(ScheduledEvent(source谁安排的,content具体内容,acceptedTrue/False, # 接受还是拒绝was_it_my_decisionTrue/False # 这是我的决定吗))### 关键字段说明| 字段 | 含义 | 为什么重要 ||---|---|---|| accepted | 是否接受 | 接受≠被动拒绝≠主动 || was_it_my_decision | 是我的决定吗 | 核心字段区分主动拒绝和被动接受 || reason_if_rejected | 拒绝理由 | 帮助复盘这是有效拒绝还是过度防御 |### 记录创意产出pythonfrom core.creativity_logger import CreativityLogger,利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛
编写程序,统计一周主动拒绝他人安排的次数,分析自主决策频率和每周创意数量的相关性,检测心理独立程度。
发布时间:2026/7/16 1:43:44
用 Python 构建一个“自主决策频率与创意产出”相关性分析工具统计一周内你主动拒绝他人安排的次数分析“心理独立程度”与“每周创意数量”的相关性。内容紧扣心理健康与创新能力课程保持去营销化、中立、可教学、可复用不涉及任何测评/社交产品推广。项目名AutoNoimyPulse — 心理独立度与创意相关性分析仪一、实际应用场景描述在心理健康与创新能力课程中有一个被反复验证的命题“心理独立”Psychological Autonomy是个体创造力的前置条件——你有多敢说“不”决定了你有多少认知资源用于创造。现实场景包括- 职场人每周被无数会议、临时任务、他人安排塞满- 想做自己的事但“不好意思拒绝”“怕影响关系”- 创新课程讲“自主性”“内在动机”但学生/职场人缺乏量化自己“被他人支配程度”的工具- 没有人把“拒绝次数”和“本周创意产出”放在一张图上。心理学研究指出- 自主性Autonomy是自我决定论SDT三大基本心理需求之一Deci Ryan- 外部控制感越强内在动机和创造力越低Lepper Greene- “能说‘不’”不是冷漠而是认知资源的自我保护机制。AutoNoimyPulse 的目标不是“劝你当刺头”而是把“你有多敢为自己做主”变成一个可观测、可记录的指标并检验它是否真的和你的创造力相关。二、引入痛点现有时间管理 / 健康工具的盲区维度 传统时间管理工具 AutoNoimyPulse关注点 完成了多少任务 多少任务是别人安排的核心指标 效率、完成率 自主决策频率 vs 创意产出行为导向 优化执行 检测心理独立程度创新价值 几乎为零 量化“自主性”与“创造力”的关系真实痛点- “我好忙但不知道忙了些什么” —— 因为从未统计“别人塞给你的事”有多少- “想拒绝但不敢” —— 缺乏数据支撑“我是不是被过度安排了”- “创造力下降”找不到原因 —— 没人把“被动接受”和“创意枯竭”放在一张图上- 创新课程缺乏个人化实验工具 —— 讲了很多理论学生不会“测自己”三、核心逻辑讲解先讲思想核心隐喻你的认知带宽就像手机电量——别人安排的事是“后台程序”拒绝是“关闭后台”把电量留给自己的创造力。程序做了什么1. 定义“他人安排事件”- 来源同事、老板、家人、朋友……- 记录时间、内容、你最终是否接受- 关键分类主动拒绝 vs 被动接受2. 定义“创意产出事件”- 本周产出了几个新想法/方案/作品- 不是“完成了多少”而是“原创了多少”3. 核心分析相关性检测- X 轴本周主动拒绝次数心理独立指数- Y 轴本周创意产出数量- 计算 Pearson 相关系数- 附带散点图文本版直观展示趋势4. 心理独立程度分级- 低0-2 次/周高度依赖他人议程- 中3-5 次/周有一定自主意识- 高6 次/周心理独立性较强5. 关键洞察输出- 相关性是否显著- 拒绝最多的那天创意产出是否更高- “被动接受”的事项中有多少本可以拒绝关键设计原则- 不评判“拒绝”对错只记录事实- 不鼓励无差别拒绝而是“有意识的自主决策”- 相关性 ≠ 因果程序会明确标注- 所有数据本地存储完全私密四、代码模块化设计项目结构autonomy_pulse/│├── README.md├── requirements.txt├── main.py├── core/│ ├── event_logger.py # 他人安排事件记录│ ├── creativity_logger.py # 创意产出记录│ ├── correlation_analyzer.py # 相关性分析引擎│ └── reporter.py # 心理独立度报告└── data/└── weekly_log.json五、核心代码实现Python1️⃣ 他人安排事件记录event_logger.py# core/event_logger.pyfrom dataclasses import dataclass, fieldfrom datetime import datetime, timedeltafrom typing import List, Optionalimport jsonfrom pathlib import Pathimport uuiddataclassclass ScheduledEvent:一条他人安排事件核心记录谁安排了什么以及你的回应id: str field(default_factorylambda: str(uuid.uuid4()))timestamp: datetime field(default_factorydatetime.now)# 事件信息 source: str # 谁安排的老板/同事A/家人content: str # 具体内容is_unsolicited: bool True # 是否未经你主动请求的# 你的回应 accepted: bool True # True 被动接受False 主动拒绝reason_if_rejected: str # 拒绝的理由可选# 自我反思关键字段was_it_my_decision: bool True # 最终是我的决定吗# 如果 acceptedTrue 但 was_it_my_decisionFalse → 被动接受# 如果 acceptedFalse 但 was_it_my_decisionTrue → 主动拒绝 ✅def is_active_rejection(self) - bool:判断是否为主动拒绝核心指标return not self.accepted and self.was_it_my_decisiondef is_passive_acceptance(self) - bool:判断是否被动接受return self.accepted and not self.was_it_my_decisiondef to_dict(self) - dict:return {id: self.id,timestamp: self.timestamp.isoformat(),source: self.source,content: self.content,is_unsolicited: self.is_unsolicited,accepted: self.accepted,reason_if_rejected: self.reason_if_rejected,was_it_my_decision: self.was_it_my_decision,}class EventLogger:他人安排事件记录器def __init__(self, log_path: str data/weekly_log.json):self.log_path Path(log_path)self.log_path.parent.mkdir(exist_okTrue)if not self.log_path.exists():self._write({events: [], creative_entries: []})def _read(self) - dict:with open(self.log_path, r, encodingutf-8) as f:return json.load(f)def _write(self, data: dict):with open(self.log_path, w, encodingutf-8) as f:json.dump(data, f, ensure_asciiFalse, indent2)def log_event(self, event: ScheduledEvent):data self._read()data[events].append(event.to_dict())self._write(data)def get_events_this_week(self) - List[ScheduledEvent]:获取本周事件data self._read()cutoff datetime.now() - timedelta(days7)results []for item in data[events]:ts datetime.fromisoformat(item[timestamp])if ts cutoff:results.append(self._to_event(item))return resultsdef _to_event(self, data: dict) - ScheduledEvent:return ScheduledEvent(iddata[id],timestampdatetime.fromisoformat(data[timestamp]),sourcedata[source],contentdata[content],is_unsoliciteddata.get(is_unsolicited, True),accepteddata[accepted],reason_if_rejecteddata.get(reason_if_rejected, ),was_it_my_decisiondata.get(was_it_my_decision, True),)设计说明was_it_my_decision 是整个系统的认知核心——接受不一定被动拒绝不一定主动关键在这是谁的决定2️⃣ 创意产出记录creativity_logger.py# core/creativity_logger.pyfrom dataclasses import dataclass, fieldfrom datetime import datetime, timedeltafrom typing import Listimport jsonfrom pathlib import Pathimport uuiddataclassclass CreativeEntry:一条创意产出记录id: str field(default_factorylambda: str(uuid.uuid4()))timestamp: datetime field(default_factorydatetime.now())description: str # 创意内容简述category: str idea # idea / solution / project / insightenergy_level: int 5 # 产生时的精力 1-10def to_dict(self) - dict:return {id: self.id,timestamp: self.timestamp.isoformat(),description: self.description,category: self.category,energy_level: self.energy_level,}class CreativityLogger:创意产出记录器def __init__(self, log_path: str data/weekly_log.json):self.log_path Path(log_path)def _read(self) - dict:with open(self.log_path, r, encodingutf-8) as f:return json.load(f)def _write(self, data: dict):with open(self.log_path, w, encodingutf-8) as f:json.dump(data, f, ensure_asciiFalse, indent2)def log_creative_entry(self, entry: CreativeEntry):data self._read()data[creative_entries].append(entry.to_dict())self._write(data)def get_entries_this_week(self) - List[CreativeEntry]:data self._read()cutoff datetime.now() - timedelta(days7)results []for item in data.get(creative_entries, []):ts datetime.fromisoformat(item[timestamp])if ts cutoff:results.append(CreativeEntry(iditem[id],timestampts,descriptionitem[description],categoryitem.get(category, idea),energy_levelitem.get(energy_level, 5),))return results3️⃣ 相关性分析引擎correlation_analyzer.py# core/correlation_analyzer.pyfrom typing import List, Dictfrom datetime import datetime, timedeltafrom .event_logger import EventLogger, ScheduledEventfrom .creativity_logger import CreativityLogger, CreativeEntryclass CorrelationAnalyzer:分析自主决策频率与创意产出的相关性核心指标- X每周主动拒绝次数心理独立指数- Y每周创意产出数量def __init__(self,event_logger: EventLogger,creativity_logger: CreativityLogger,weeks: int 4):self.event_logger event_loggerself.creativity_logger creativity_loggerself.weeks weeksdef analyze(self) - Dict:对最近 N 周做相关性分析返回- weekly_data: 每周的拒绝次数 创意数量- pearson_r: 相关系数- interpretation: 解读weekly self._collect_weekly_data()if len(weekly) 2:return {error: 需要至少 2 周的数据才能做相关性分析,weeks_collected: len(weekly),}# 提取 X 和 Yx [w[rejections] for w in weekly]y [w[creative_count] for w in weekly]# Pearson 相关系数教学用纯 Python 实现r self._pearson(x, y)interpretation self._interpret_correlation(r, len(weekly))return {weeks_analyzed: len(weekly),weekly_data: weekly,pearson_r: round(r, 3),interpretation: interpretation,x_label: 每周主动拒绝次数,y_label: 每周创意产出数量,}def _collect_weekly_data(self) - List[Dict]:收集最近 N 周的数据now datetime.now()weekly []for i in range(self.weeks):week_start now - timedelta(days(i 1) * 7)week_end now - timedelta(daysi * 7)# 本周事件events self.event_logger.get_events_this_week()week_events [e for e in eventsif week_start e.timestamp week_end]# 本周创意entries self.creativity_logger.get_entries_this_week()week_creative [e for e in entriesif week_start e.timestamp week_end]rejections sum(1 for e in week_events if e.is_active_rejection())weekly.append({week: fW{i1},start: week_start.strftime(%m/%d),end: week_end.strftime(%m/%d),total_scheduled: len(week_events),rejections: rejections,passive_accepts: sum(1 for e in week_events if e.is_passive_acceptance()),creative_count: len(week_creative),creative_categories: [e.category for e in week_creative],})return weeklydef _pearson(self, x: List[float], y: List[float]) - float:Pearson 相关系数 —— 纯 Python 实现适合教学n len(x)if n ! len(y) or n 2:return 0.0sum_x sum(x)sum_y sum(y)sum_xy sum(a * b for a, b in zip(x, y))sum_x2 sum(a * a for a in x)sum_y2 sum(b * b for b in y)numerator n * sum_xy - sum_x * sum_ydenominator ((n * sum_x2 - sum_x ** 2) *(n * sum_y2 - sum_y ** 2)) ** 0.5if denominator 0:return 0.0return numerator / denominatordef _interpret_correlation(self, r: float, n: int) - Dict:解读相关系数abs_r abs(r)if abs_r 0.3:strength 极弱或无关elif abs_r 0.5:strength 弱相关elif abs_r 0.7:strength 中等相关elif abs_r 0.9:strength 强相关else:strength 极强相关direction 正相关 if r 0 else 负相关 if r 0 else 无相关# 教学提示if n 4:caveat ⚠️ 数据量较少4 周结论仅供参考建议持续记录 8 周以上else:caveat 数据量充足结论有参考价值return {strength: strength,direction: direction,summary: f{direction}{strength},caveat: caveat,note: 相关性 ≠ 因果性请结合个人反思综合判断,}def autonomy_level(self, rejections: int) - Dict:心理独立程度分级if rejections 6:return {level: 高,label: 心理独立型,description: 你有较强的自主决策意识善于保护自己的认知资源,suggestion: 保持同时留意是否过度拒绝导致协作困难,}elif rejections 3:return {level: 中,label: 过渡探索型,description: 你开始有意识地做自主决策但仍有提升空间,suggestion: 尝试下周多拒绝 1-2 件不是你决定要做的事,}else:return {level: 低,label: 高度依赖型,description: 你的日程可能被他人议程主导自主认知空间有限,suggestion: 从最小的不开始——拒绝一件无关紧要的事观察感受,}设计说明_pearson 用纯 Python 实现不依赖 NumPy——让教学时每一行数学都可见、可拆解4️⃣ 心理独立度报告reporter.py# core/reporter.pyfrom typing import List, Dictfrom .event_logger import EventLoggerfrom .creativity_logger import CreativityLoggerfrom .correlation_analyzer import CorrelationAnalyzerclass AutonomyReporter:生成心理独立度与创意相关性报告def __init__(self,event_logger: EventLogger,creativity_logger: CreativityLogger,analyzer: CorrelationAnalyzer,):self.event_logger event_loggerself.creativity_logger creativity_loggerself.analyzer analyzerdef generate(self):print(\n * 70)print( AutoNoimyPulse · 心理独立度与创意相关性分析)print( * 70)# 本周快照 events self.event_logger.get_events_this_week()creative self.creativity_logger.get_entries_this_week()active_rejections sum(1 for e in events if e.is_active_rejection())passive_accepts sum(1 for e in events if e.is_passive_acceptance())total_scheduled len(events)print(f\n 本周快照)print(f 他人安排事件{total_scheduled} 件)print(f 主动拒绝{active_rejections} 次 ✅)print(f 被动接受{passive_accepts} 次 ⚠️)print(f 创意产出{len(creative)} 条)# 心理独立程度 autonomy self.analyzer.autonomy_level(active_rejections)print(f\n{ * 70})print(f 心理独立程度{autonomy[level]} —— {autonomy[label]})print(f {autonomy[description]})print(f 建议{autonomy[suggestion]})# 相关性分析 analysis self.analyzer.analyze()if error in analysis:print(f\n⚠️ {analysis[error]})returnprint(f\n{ * 70})print(f 相关性分析最近 {analysis[weeks_analyzed]} 周)print(f{ * 70})# 散点图文本版print(f\n 每周数据)print(f {周:6} {拒绝次数:10} {创意数量:10} {被动接受:10})print(f {- * 40})for w in analysis[weekly_data]:print(f {w[week]:6} {w[rejections]:10} f{w[creative_count]:10} {w[passive_accepts]:10})# 文本散点图self._print_text_scatter(analysis[weekly_data])# 核心结果interp analysis[interpretation]print(f\n Pearson 相关系数 r {analysis[pearson_r]})print(f {interp[summary]})print(f {interp[caveat]})print(f {interp[note]})# 教学提示 print(f\n{ * 70})print(f 教学提示)print(f 1. 正相关意味着拒绝越多自主越强创意产出越高)print(f 2. 负相关可能意味着拒绝过多导致孤立反而抑制创意)print(f 3. 最佳区间通常在中等拒绝频率3-6 次/周)print(f 4. 建议持续记录 8 周以上观察个人规律)print(f 5. 被动接受 主动拒绝 时需要关注认知资源保护)def _print_text_scatter(self, weekly_data: List[Dict]):简单的文本散点图if not weekly_data:returnx_vals [w[rejections] for w in weekly_data]y_vals [w[creative_count] for w in weekly_data]max_x max(x_vals) if x_vals else 1max_y max(y_vals) if y_vals else 1print(f\n 文本散点图X拒绝次数Y创意数量)print(f Y)for y in range(max_y, -1, -1):row f {y} │for x in range(max_x 1):if any(w[rejections] x and w[creative_count] y for w in weekly_data):row ●else:row print(row)print( ─ * (max_x * 2 3))x_label for x in range(max_x 1):x_label f {x}print(x_label)print( X 每周主动拒绝次数)5️⃣ 主程序main.py# main.pyfrom datetime import datetime, timedeltafrom core.event_logger import EventLogger, ScheduledEventfrom core.creativity_logger import CreativityLogger, CreativeEntryfrom core.correlation_analyzer import CorrelationAnalyzerfrom core.reporter import AutonomyReporterdef main():# 初始化 event_logger EventLogger()creativity_logger CreativityLogger()analyzer CorrelationAnalyzer(event_logger, creativity_logger, weeks4)reporter AutonomyReporter(event_logger, creativity_logger, analyzer)print( AutoNoimyPulse · 心理独立度与创意相关性分析\n)# 模拟本周的他人安排事件 # 真实使用中这些是用户逐条记录的# 事件 1老板安排的临时会议 → 被动接受event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days6, hours10),source老板,content临时拉会讨论 Q4 规划,acceptedTrue,was_it_my_decisionFalse, # 被动))# 事件 2同事请求帮忙 → 主动拒绝event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days5, hours3),source同事A,content帮忙改一下他的 PPT,acceptedFalse,was_it_my_decisionTrue,reason_if_rejected我手头有自己的 deadline,))# 事件 3朋友约饭 → 主动拒绝event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days4, hours5),source朋友B,content下班一起去新开的火锅店,acceptedFalse,was_it_my_decisionTrue,reason_if_rejected今天想留时间写代码,))# 事件 4家人要求帮忙 → 被动接受event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days3, hours8),source家人,content周末陪去逛街买衣服,acceptedTrue,was_it_my_decisionFalse,))# 事件 5额外任务 → 主动拒绝event_logger.log_event(ScheduledEvent(timestampdatetime.now() - timedelta(days2, hours6),source同事C,content参加他负责的项目评审会,acceptedFalse,was_it_my_decisionTrue,reason_if_rejected和我的工作方向无关不想分散注意力,))# 模拟本周创意产出 creativity_logger.log_creative_entry(CreativeEntry(timestampdatetime.now() - timedelta(days5, hours8),description想到了用 Redis 做 API 限流的新方案,categorysolution,energy_level8,))creativity_logger.log_creative_entry(CreativeEntry(timestampdatetime.now() - timedelta(days4, hours1),description设计一个命令行工具能自动整理每日笔记,categoryproject,energy_level7,))creativity_logger.log_creative_entry(CreativeEntry(timestampdatetime.now() - timedelta(days3, hours4),description突然意识到拒绝不必要的事后下午的时间质量完全不同,categoryinsight,energy_level9,))creativity_logger.log_creative_entry(CreativeEntry(timestampdatetime.now() - timedelta(days1, hours2),description想出一个用 Git hooks 自动跑 lint 的改进流程,categorysolution,energy_level6,))# 为了演示相关性再补 3 周数据 # 真实使用中这些是用户持续记录的# 这里用更完整的数据让 Pearson 计算有意义# ...为简洁实际使用时建议运行 4 周以上# 生成报告 reporter.generate()if __name__ __main__:main()六、README 文件# AutoNoimyPulse一个心理独立度与创意产出相关性分析工具。## 目的- 量化你有多敢为自己做主- 检验心理独立程度与每周创意数量是否相关- 帮助识别被他人议程主导的认知资源泄漏- 服务于心理健康与创新能力课程的教学实践## 使用说明### 运行环境- Python 3.8- 仅使用标准库### 启动bashpython main.py### 记录他人安排事件pythonfrom core.event_logger import EventLogger, ScheduledEventlogger EventLogger()logger.log_event(ScheduledEvent(source谁安排的,content具体内容,acceptedTrue/False, # 接受还是拒绝was_it_my_decisionTrue/False # 这是我的决定吗))### 关键字段说明| 字段 | 含义 | 为什么重要 ||---|---|---|| accepted | 是否接受 | 接受≠被动拒绝≠主动 || was_it_my_decision | 是我的决定吗 | 核心字段区分主动拒绝和被动接受 || reason_if_rejected | 拒绝理由 | 帮助复盘这是有效拒绝还是过度防御 |### 记录创意产出pythonfrom core.creativity_logger import CreativityLogger,利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛