情绪事件拆分与去偏见记录系统当情绪失控时用代码帮你看清事实心理健康与创新能力课程 · 技术实践工具纯 Python 3.8 · 零第三方依赖 · 本地优先 · 隐私安全一、实际应用场景描述这是一套为心理健康与创新能力课程设计的技术实践工具解决一个非常具体的问题你刚和老板开完会方案被批了。你坐在工位上脑中闪过一万句话——我彻底完了。他肯定觉得我是废物。每次都是这样我在这团队就是个边缘人。这些想法感觉像事实但它们大部分是情绪化的解读不是事实。如果你此刻打开电脑开始复盘你写下的不是复盘是自我攻击的弹药。这个工具要做的事在你情绪最烈的时候用结构化提问强行把你从情绪脑拽回理性脑把事件和情绪拆到不同的格子里。自由倾诉(释放) → 情绪标注(命名) → 事实提取(5W) → 偏见检测(识别)↓中性改写(去毒) → 理性替代(选择)它不替你思考不给你灌鸡汤。它只是提供脚手架让你自己走完从情绪到理性那几步。二、引入痛点痛点 1情绪化表达伪装成事实我完了 — 这是事实还是感受他肯定觉得我不行 — 这是读心还是观察大脑在情绪高潮时分不清感觉和事实。结果就是你相信了自己编造的灾难故事并据此行动逃避、攻击、崩溃。痛点 2自由书写反而强化情绪很多情绪日记让你想到什么写什么。问题在于在情绪巅峰时自由书写等于给情绪化思维做扩写练习。你写得越多越确信自己的灾难化解读。痛点 3复盘时事实已经被污染等你冷静下来回看昨天的日记上面写满了我完了他讨厌我——这些已经被情绪染色的记录会再次触发同样的情绪。你没有干净的事实基线可以复盘。痛点 4认知偏差教科书化缺少个人数据CBT认知行为疗法教材列出了 10 种认知扭曲但你最常犯的是哪几种 不记录就永远不知道。群体统计无法替代个人数据。本工具的定位不是心理咨询替代物不是 productivity 鸡汤而是一个中立的思维显微镜——帮你看见自己思维中的自动 bug像调试代码一样调试你的认知。三、核心逻辑讲解3.1 系统数据流┌──────────────────────────────────────────────────────┐│ CLI 主入口 (main.py) │├──────────────────────────────────────────────────────┤│ EmotionDebiasingAPI (对外接口) │├──────────────┬───────────────┬───────────────────────┤│GuidedInput │BiasDetection │ReviewReportGenerator ││引导式输入 │认知偏见检测 │复盘报告生成 ││ │ │ ││• 5步引导 │• 10种认知扭曲 │• 情绪分布统计 ││• 事实提取 │• 词典匹配 │• 偏见频率统计 ││• 理性生成 │• 中性改写 │• 强度趋势分析 │├──────────────┴───────────────┴───────────────────────┤│ StorageEngine (JSON 存储) ││ raw_inputs / facts / emotions / biases / final │└──────────────────────────────────────────────────────┘3.2 核心算法认知偏差检测这是系统的眼睛。原理不复杂——词典匹配 上下文提示BIAS_DICTIONARY {catastrophizing: {zh: [完了, 全完了, 崩溃, 要死了, 彻底完了],en: [disaster, ruined, cant take it],},mind_reading: {zh: [肯定觉得, 一定认为, 心里肯定],en: [must think, probably thinks],},# ... 共 10 种}# 检测逻辑for bias_type, lang_dict in BIAS_DICTIONARY.items():for kw in lang_dict[zh] lang_dict[en]:if kw.lower() in text_lower:detected.append(bias_type)break # 每种偏见只记一次为什么用词典而不是机器学习维度 词典匹配 机器学习准确率 中看词典质量 高有标注数据时可解释性 ✅ 精确知道命中哪个词 ❌ 黑箱冷启动 ✅ 开箱即用 ❌ 需要标注数据依赖 零 sklearn 训练数据对心理健康工具来说可解释比高准确率更重要——用户需要知道我为什么被标记为灾难化思维才能自己做认知重评。3.3 引导式输入的 UX 设计核心创新不是让你自由写一大段而是用 5 个结构化问题强制切换思维模式Step 1: 自由倾诉释放情绪不评判 我完了项目要炸了老板肯定觉得我是废物Step 2: 情绪标注给情绪命名情绪标签: anxious强度: 9身体感受: 心跳很快手心出汗Step 3: 事实提取核心步骤Who → 老板和我What → 他对方案提了3点修改意见When → 上午10点Where → 会议室How → 在会议上当众提出Step 4: 偏见检测自动⚠ 检测到: catastrophizing, mind_reading, labelingStep 5: 理性替代脚手架非答案区分可能的和已发生的最坏情况发生的概率有多大?为什么5W 提问能切换思维模式回答Who/What/When/Where激活的是侦探脑冷静、客观、取证和情绪脑用不同的神经网络。通过提问强行切换本身就是一种自我调节。3.4 中性改写策略不是替用户改写整段话避免AI 说你该这么想的权威感而是1. 替换绝对化词汇总是→经常完全→很大程度上2. 分离感觉与事实在文末追加[事实核查] 提示3. 用户自己完成最终改写3.5 趋势分析你在变好吗# 把情绪强度列表分成前后两半mid len(intensities) // 2first_half intensities[:mid]second_half intensities[mid:]diff mean(second_half) - mean(first_half)if diff -0.5: trend ↓ 情绪强度在下降(改善)elif diff 0.5: trend ↑ 情绪强度在上升(关注)else: trend → 基本稳定注意强度下降 ≠ 情绪消失了可能是你更善于拆解了。工具追踪的是应对能力不是开心程度。四、代码模块化设计整个系统分为 7 个模块单一文件main.py约 970 行模块 职责 关键方法RawEmotionInput /FactRecord /EmotionRecord /BiasAnalysis /DebiasedRecord 5 个数据模型dataclass 自动序列化StorageEngine JSON 文件读写append(),read_all()GuidedInput 5 步引导式输入guided_checkin()BiasDetectionEngine 10 种认知偏差检测analyze(),print_analysis()ReviewReportGenerator 周期性复盘报告generate_report()EmotionDebiasingAPI 对外简洁接口process(),guided_checkin()main() CLI 入口 子命令路由模块依赖无循环main → EmotionDebiasingAPI → GuidedInput → StorageEngineBiasDetectionEngine → StorageEngineReviewReportGenerator → StorageEngine关键设计决策决策 选择 理由5 个独立数据模型 拆分存储 事实与情绪天然隔离便于统计词典匹配 零依赖 可解释性强CBT 场景最关键不替用户改写 只提供线索 保留用户自主性避免权威依赖趋势用均值差 不用相关系数 小样本直观易懂本地 JSON 不上传 心理健康数据极度敏感五、README 文件和使用说明完整的README.md 和CHEAT_SHEET.md 已包含在项目中。核心使用流程5 分钟上手# 1. 进入项目cd emotion_debiasing_tool# 2. 一键看演示python main.py demo# 3. 清空演示数据开始记录自己的rm -f data/*.json# 4. 日常使用 —— 情绪来袭时python main.py checkin# 5. 快速分析一段文本不写入存储python main.py analyze 我完了项目肯定要失败# 6. 每周复盘python main.py report 14作为模块导入from main import EmotionDebiasingAPIapi EmotionDebiasingAPI()result api.process(我彻底完了老板肯定觉得我是废物)print(result[biases]) # [catastrophizing, mind_reading]print(result[neutral_rewrite]) # 中性改写版本print(result[rational_thought]) # 理性替代想法print(result[suggestions]) # [写下最坏/最好/最可能三种结果...]推荐记录节奏时刻 操作 频率负面情绪刚出现时checkin 引导录入 即时事后回看analyze 分析旧日记 任意每周一次report 7 周报 每周每月一次report 30 月报 每月六、核心知识点卡片CHEAT_SHEET.md 中包含 10 张卡片这里摘录最关键的几张卡片 1事件与情绪的分离CBT 核心A (Activating Event) → B (Belief) → C (Consequence)客观事件 认知解读 情绪结果不是事件让你痛苦是你对事件的解读让你痛苦。两个人对同一件事被批评可能一个愤怒一个感激——差异在B不在A。卡片 210 种认知偏差速查偏差 典型表达 一句话破解灾难化 完了全毁了 最坏情况概率多大读心术 他肯定觉得 我有证据还是猜的非黑即白 总是从不 有没有中间地带贴标签 我是废物 行为≠人的全部情绪化推理 感觉他不喜欢我 感觉≠事实卡片 3为什么不替用户思考很重要❌ 你应该这样想... → 剥夺自主性制造依赖✅ 你可以问自己... → 保留主权赋能用户工具提供脚手架用户自己走完最后一步。这不是产品策略是伦理底线。卡片 4数据结构即偏见过滤❌ 一个大字段存一切:我完了项目要炸了老板肯定觉得我是废物✅ 拆到 5 个结构化字段:fact 方案被提了3点修改意见emotion anxious(9)bias [catastrophizing, mind_reading]rational 区分可能的和已发生的拆分本身就是过滤。七、实际运行效果运行python main.py demo 的真实输出已验证可运行原文: 我彻底完了项目肯定要失败老板一定觉得我是废物每次都是这样情绪: anxious (强度 9)⚠ 检测到认知偏差: catastrophizing all_or_nothing overgeneralization中性改写:我比较完了项目肯定要失败老板一定觉得我是废物每次都是这样[事实核查] 哪些部分是已发生的事实? 哪些是担忧的猜测? 理性参考: 区分可能的和已发生的先处理确定的部分| 最坏情况的概率有多大?练习建议:• 写下最坏/最好/最可能三种结果比较概率• 找一个部分成功的例子挑战全或无思维• 问自己: 这次和上次真的是同一件事吗?复盘报告输出 复盘报告 (近 14 天)总记录数: 8平均情绪强度: 7.2 / 10强度趋势: ↓ 情绪强度在下降(改善) 高频情绪:anxious: 2次 | sad: 2次 | ashamed: 1次 高频认知偏差:catastrophizing: 2次 | all_or_nothing: 2次 常见触发关键词:项目 × 2 | 方案 × 2 | 会议 × 2八、总结这个工具做了什么1. 拆分用结构化提问把事件和情绪强制分离到不同字段2. 检测自动识别你文本中的认知偏差类型10 种3. 改写提供中性化线索但不替你思考4. 追踪统计你最常犯的偏差和情绪趋势让改善可见这个工具没做什么- ❌ 不做心理健康诊断- ❌ 不上传任何数据到云端- ❌ 不告诉你应该怎么想- ❌ 不替代专业心理咨询它的核心价值不是让你不焦虑而是让你在焦虑时仍能看清什么是事实、什么是解读。这个区别就是 CBT 里说的认知重评——它不改变外部事件但改变你和事件的关系。工具只是把这条路从抽象概念变成可执行的操作步骤。⚠️ 重要声明本工具仅供个人情绪记录与反思不构成任何心理健康诊断或医疗建议。如负面情绪持续超过 2 周并影响日常生活请寻求专业心理咨询师或精神科医生的帮助。利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛