用 Python 构建一个人际关系心理能量审计工具不统计“聊了多久”而统计“每次对话后我变得更想创造还是更想逃避”内容紧扣心理健康与创新能力课程保持去营销化、中立、可教学、可复用不涉及任何 App 推广或引流。项目名SocialEnergy — 人际沟通心理能量审计器一、实际应用场景描述在心理健康与创新能力课程中有一个常被忽视的隐形损耗源“社交噪音”——那些看似正常、却在悄悄耗尽创造力的对话现实场景包括- 创意工作者每天被大量即时消息打断- 某些对话结束后感到空虚、疲惫、注意力涣散- 另一些对话结束后感到被理解、被激发、思维更清晰- 社交软件只显示“在线时长”“发言次数”从不提示“能量净值”心理学与创新研究指出- 心理能量Mental Energy 是创造力的底层燃料- 人际关系可分为 能量汲取型 / 能量耗竭型 / 能量滋养型- 长期忽视能量收支会导致 慢性创造力枯竭SocialEnergy 的目标不是管理社交而是把“对话”当作一次心理能量交易记录净值识别模式保护创造力二、引入痛点现有社交工具的盲区维度 社交软件 SocialEnergy统计对象 时长、条数 心理能量变化关注点 活跃度 创造力影响反馈机制 已读回执 能量净值提示目标 提高粘性 保护注意力真实痛点- 程序鼓励“多聊”不关心“聊完后的状态”- 缺乏量化“人际能耗”的工具- 创新者常在无意识中被低质量沟通掏空- 难以区分“正常社交”与“隐性消耗”三、核心逻辑讲解先讲思想核心隐喻每一次对话都是一次心理能量的存取款程序做了什么1. 记录单次对话后的能量变化- 不记录聊天内容隐私保护- 只记录主观能量评分-5 到 52. 计算对象的能量净值- 累计得分- 平均每次对话能量变化3. 识别消耗型沟通对象- 设定阈值如平均分 -1- 标记为“需谨慎互动”4. 生成人际能量报告- 滋养型 / 中性 / 消耗型对象分布- 能量趋势周 / 月关键设计原则- 不读取聊天内容- 不联网、不上传数据- 完全本地、主观自评- 不评判人际关系只呈现模式四、代码模块化设计项目结构social_energy/│├── README.md├── requirements.txt├── main.py├── core/│ ├── interaction.py # 单次对话记录│ ├── contact_book.py # 联系人能量档案│ ├── analyzer.py # 能量趋势分析│ └── reporter.py # 报告生成└── data/└── energy_log.json五、核心代码实现Python1️⃣ 单次对话记录interaction.py# core/interaction.pyfrom dataclasses import dataclassfrom datetime import datetimefrom typing import Optionaldataclassclass Interaction:单次对话的能量记录不保存任何聊天内容仅记录能量变化contact: str # 联系人标识timestamp: datetime # 对话结束时间energy_delta: int # 能量变化-5 ~ 5note: Optional[str] # 可选备注如深度交流/琐事def validate(self):确保能量值在合理范围内if not -5 self.energy_delta 5:raise ValueError(能量变化必须在 -5 到 5 之间)设计说明使用dataclass 简化数据结构明确字段含义便于教学2️⃣ 联系人能量档案contact_book.py# core/contact_book.pyfrom datetime import datetimefrom pathlib import Pathimport jsonfrom .interaction import Interactionclass ContactBook:维护联系人的心理能量档案所有数据本地存储def __init__(self):self.path Path(data/energy_log.json)self.path.parent.mkdir(exist_okTrue)if not self.path.exists():self._write([])def _read(self) - list:with open(self.path, r, encodingutf-8) as f:return json.load(f)def _write(self, data: list):with open(self.path, w, encodingutf-8) as f:json.dump(data, f, ensure_asciiFalse, indent2)def add_interaction(self, interaction: Interaction):记录一次对话interaction.validate()data self._read()data.append({contact: interaction.contact,timestamp: interaction.timestamp.isoformat(),energy_delta: interaction.energy_delta,note: interaction.note})self._write(data)def get_contact_stats(self, contact: str) - dict:获取单个联系人的能量统计data self._read()records [r for r in data if r[contact] contact]if not records:return {contact: contact, count: 0}deltas [r[energy_delta] for r in records]return {contact: contact,count: len(records),total_energy: sum(deltas),avg_energy: sum(deltas) / len(deltas),last_interaction: max(r[timestamp] for r in records)}设计说明所有记录本地保存无网络请求符合隐私保护原则3️⃣ 能量趋势分析analyzer.py# core/analyzer.pyfrom typing import List, Dictfrom .contact_book import ContactBookclass EnergyAnalyzer:分析人际能量模式识别消耗型与滋养型关系def __init__(self, contact_book: ContactBook):self.book contact_bookdef classify_contacts(self, threshold: float -1.0) - Dict[str, List[str]]:根据平均能量变化分类联系人threshold: 判定为消耗型的阈值data self.book._read()contacts set(r[contact] for r in data)result {draining: [], # 消耗型avg thresholdneutral: [], # 中性threshold ≤ avg ≤ 1nourishing: [] # 滋养型avg 1}for contact in contacts:stats self.book.get_contact_stats(contact)avg stats.get(avg_energy, 0)if avg threshold:result[draining].append(contact)elif avg 1.0:result[nourishing].append(contact)else:result[neutral].append(contact)return resultdef top_drainers(self, n: int 3) - List[tuple]:返回能量消耗最大的 N 个联系人data self.book._read()contacts set(r[contact] for r in data)scores []for c in contacts:stats self.book.get_contact_stats(c)scores.append((c, stats.get(avg_energy, 0)))return sorted(scores, keylambda x: x[1])[:n]设计说明分类逻辑透明、可调适合课堂讨论“阈值设定的合理性”4️⃣ 报告生成reporter.py# core/reporter.pyfrom .analyzer import EnergyAnalyzerclass Reporter:生成人际能量审计报告用于个人反思与教学讨论def __init__(self, analyzer: EnergyAnalyzer):self.analyzer analyzerdef generate_report(self):classification self.analyzer.classify_contacts()drainers self.analyzer.top_drainers()print(\n 人际心理能量审计报告)print( * 50)print(\n 关系类型分布)print(f 滋养型1以上{len(classification[nourishing])} 人)print(f 中性型-1 ~ 1{len(classification[neutral])} 人)print(f 消耗型-1以下{len(classification[draining])} 人)if classification[nourishing]:print(\n✨ 滋养型关系值得投入)for c in classification[nourishing][:5]:print(f • {c})if drainers:print(\n⚠️ 需谨慎互动的对象能量消耗最大)for c, score in drainers:print(f • {c}平均能量变化{score:.1f})print(\n 教学提示)print(1. 此工具不评判他人仅反映你的主观体验)print(2. 消耗型关系未必是对方的问题可能是匹配度或情境问题)print(3. 保护创造力需要主动管理人际能量收支)print(4. 建议每周回顾一次而非频繁查看)return classification5️⃣ 主程序main.py# main.pyfrom datetime import datetimefrom core.interaction import Interactionfrom core.contact_book import ContactBookfrom core.analyzer import EnergyAnalyzerfrom core.reporter import Reporterdef main():# 初始化book ContactBook()analyzer EnergyAnalyzer(book)reporter Reporter(analyzer)# 示例记录几次对话实际应由用户输入book.add_interaction(Interaction(contact同事A,timestampdatetime.now(),energy_delta-3,note抱怨工作无实质交流))book.add_interaction(Interaction(contact导师B,timestampdatetime.now(),energy_delta4,note深度讨论创意方向))book.add_interaction(Interaction(contact老友C,timestampdatetime.now(),energy_delta2,note轻松聊天互相支持))# 生成报告reporter.generate_report()if __name__ __main__:main()六、README 文件# SocialEnergy一个用于心理健康与创新能力课程的人际心理能量审计工具。## 目的- 改变社交时长 社交价值的默认假设- 量化每次对话后的心理能量变化- 识别持续消耗创造力的沟通对象- 保护并优化人际能量分配## 使用说明### 运行环境- Python 3.8- 仅使用标准库### 启动bashpython main.py### 记录对话修改 main.py 中的 Interaction 记录pythonbook.add_interaction(Interaction(contact联系人名称,timestampdatetime.now(),energy_delta-2, # -5(极度消耗) 到 5(极度滋养)note可选备注))### 能量评分参考- 5深度启发创造力激增- 2愉快放松略有收获- 0无明显影响- -2略感疲惫注意力分散- -5极度消耗产生自我怀疑## 输出内容- 关系类型分布滋养/中性/消耗- 能量消耗最大的联系人- 教学提示与反思建议## 适用场景- 创意工作者的自我管理- 心理健康课程中的能量管理模块- 创新团队的沟通模式反思- 个人成长与边界设立练习## 重要说明- 本工具不读取、不存储任何聊天内容- 所有数据本地保存无网络传输- 能量评分为纯粹主观感受无客观标准- 不用于评判他人仅用于自我觉察- 消耗型关系可能源于情境、匹配度而非对方好坏七、核心知识点卡片去营销化卡片 1心理能量与创造力- 关键词自我损耗、注意力资源、恢复周期- 要点创造力依赖心理能量低质量社交是最大的隐形消耗源之一卡片 2主观量化与自我觉察- 关键词内感受、能量会计、模式识别- 要点无法客观测量的事物可以通过结构化主观记录变得可见卡片 3边界设立的认知基础- 关键词能量守恒、主动筛选、创造性保护- 要点保护创造力不是冷漠而是对有限心理资源的负责任分配八、总结工程师视角这个程序在功能上极其简陋但在认知上可能极其锋利。技术层面- 用最少的代码表达了一种全新的“社交计量”维度- 刻意回避了 NLP、情感分析等技术诱惑保持纯粹的主观记录- 所有设计决策都指向一个目标保护创造力而非优化社交心理层面- 把“和谁聊天”从习惯性行为转变为有意识的能量投资决策- 帮助使用者区分- “这个人对我不好” ← 评判- “这段关系消耗我的创造力” ← 觉察最终价值不是告诉你“应该删掉哪些好友”而是提供一个安静的工具让你能诚实地问自己“在我有限的创造性能量里我愿意把哪一部分留给哪一种对话”利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛