关系探测仪 relationship-detector v1.0
> ⚠️ 重要免责声明:本工具仅用本地规则做粗粒度参考,不是心理/情感诊断,不替代专业判断。重要关系决策请结合自身感受,必要时咨询可信赖的人或专业人士。聊天记录全程在本地处理,不会上传。
核心卖点
- 完全本地运行:纯规则引擎,不调大模型 API,聊天记录不出本机。
- 三个入口覆盖全场景:用户不用想"该用哪个"——有记录用 A,没记录用 B,单句话用 C。
- 不只分析,还给建议:每条路径都产出可执行的下一步动作。
何时启用
- 用户问"我俩关系怎么样 / 我们算朋友还是暧昧 / TA 是不是在意我"
- 用户贴来聊天记录想看亲密度、沟通风格、近期变化
- 用户拿不准某句话的"真实含义"
- 用户想判断一段关系是滋养还是消耗、要不要继续投入
三条路径与调用方式
脚本:relationship_detector.py(同目录,Python3 标准库即可,HTML 报告零依赖、无网络;matplotlib 仅用于 --out 导出 PNG 图)。
路径 A · 聊天记录分析器
输入聊天记录 txt,输出亲密度雷达图 + 沟通风格报告 + 近期关系变化曲线。
python3 relationship_detector.py analyze <chat.txt> [--self 我] [--other TA] [--out 目录] [--html 报告.html]
- 聊天记录支持三种格式(任选其一,整份保持一致):
- ① 单行式:
说话人: 内容(可带时间戳2024-01-01 12:00 说话人: 内容) - ② 分块式(微信 PC 导出):第 1 行姓名、第 2 行时间、第 3 行起内容,时间支持「月/日 时分」简写(如
8/1 21:30),块间空行分隔 - ③ 同行式:
姓名 2026-08-01 10:23单独一行,下一行起为内容 - 若解析不出对话任一方、或格式不可信,脚本拒绝出分并给出格式指引与文件中实际识别到的说话人,绝不静默给错误分数。
- 输出六维亲密度(互动频率/情绪积极度/主动平衡/话题深度/亲昵用语/深夜亲密)、沟通风格差异、词频信号、按周的关系曲线,并可选导出雷达图与曲线 PNG。
- 理论增强段:戈特曼 5:1 与四骑士健康信号、EFT 恶魔对话修复提示、假性亲密风险、鲍尔比哀悼阶段识别(抗议/绝望/疏离重建,只判断"我"这一侧)、鲍尔比分离反应识别 + 分离 vs 丧失交叉判别(卷二《分离》:对象还在/可重聚 vs 卷三永久丧失,先判别再决定给"修复"还是"接受丧失"建议)、分离触发的愤怒双轴(抗议性=想恢复联结 / 绝望性=病理性风险)。
路径 B · 关系天平
回答 8 个问题(认识多久/联系频率/谁主动/相处感受/分享脆弱/低谷关心/暧昧信号/投入比),输出关系类型诊断 + 投入比天平 + 行动建议。
# 交互模式(无参)
python3 relationship_detector.py balance
# 或一次性传入答案
python3 relationship_detector.py balance --answers '{"know_months":18,"contact_freq":2,"who_initiates":3,"feeling":1,"share_vuln":1,"active_in_low":1,"ambiguous":2,"invest_ratio":2}' [--html 报告.html]
关系类型:暧昧心动 / 成长型 / 稳定友情 / 消耗型 / 单向关系 / 疏远冷淡 / 假性亲密。
附加输出:依恋风格倾向(现象层)+ 内部工作模型四象限与安全基地评分(归因层,鲍尔比卷一)+ 重聚反应桥接(卷二《分离》:由 IWM 象限反查重聚时的典型反应,打通卷一归因与卷二重聚观察);风格层与归因层会交叉验证,一致标 ✅、背离标 ⚠️。
调用 Agent 时,优先用 --answers 把从用户处收集到的答案一次性传入;若用户表述模糊,先澄清关键项再调用。
路径 C · 对话翻译官
输入对方一句话,给出最可能 / 次可能 / 小概率三种解读 + 可执行的回应建议。
python3 relationship_detector.py translate "你开心就好" [--stage 暧昧] [--html 报告.html]
python3 relationship_detector.py translate "视频吗" [--scenario 异地]
- 内置 29 条常见话术映射(在忙吗/随便/晚安/你开心就好/算了…)。
- 场景话术库:
--scenario支持 9 个场景,各 12 条: 暗恋:你有没有喜欢的人 / 今天见到你好开心 / 我们这样算朋友吗异地:视频吗 / 好想见你 / 我们多久没见了 / 你忙你的不用管我相亲:下次可以再约 / 我妈让我来的 / 你挺好的但不太合适职场:这个你看着办 / 能帮个小忙吗 / 在吗(下班后)家庭:我都是为你好 / 你看看别人家媳妇 / 什么时候要孩子反诈骗:猜猜我是谁 / 我是你领导帮忙转个账 / 验证码发我别挂电话前任:我还是放不下你 / 我们要不试试 / 以前那些事都过去了网恋:我们见面吧 / 你先转路费车票钱 / 别告诉你朋友借钱:能借我点钱吗 / 不借是不是不信我 / 不借以后别联系了- 指定场景时优先匹配,不指定也会自动命中并标注"自动匹配"。
- 未命中库时用通用信号法(反问=试探、极短=敷衍、深夜=依赖…)兜底。
--scenario 异地/--scenario 前任会挂载分离/丧失交叉判别:先判断这句话是"分离焦虑(对象还在、可重聚)"还是"哀悼(永久丧失)",再给对应建议,并标出分离触发的愤怒是抗议性还是绝望性。异地场景含 3 条卷二话术(你都不回我消息 / 你又消失了 / 你这次出差要去多久)。--stage可选:刚认识/朋友/暧昧/恋人/冷淡期/已婚稳定;可与--scenario叠加。
使用注意(对 Agent)
- 本技能不调用大模型,分析是规则启发式的,结果应作为"参照"而非"定论",输出时注明这一点。
- 聊天记录含敏感隐私,处理完即止,不要外传、不要写入长期记忆。
- 路径 A 的中文词频已接入 jieba 分词(含否定反转,"不开心"不再误判为"开心");未安装 jieba 时自动降级为子串匹配。对网络新词/反讽仍可能误判,宜结合曲线趋势综合看,避免对单句过度解读。
- 可选依赖:
jieba(分词)、snownlp(情绪第二信号,与词频交叉验证出置信度)、matplotlib(出 PNG 图)。三者缺失均自动降级,不影响主流程。--html报告零依赖、不联网,优先用它给用户交付。 - 危机优先级最高:危机词表分
high(明确自伤/物质滥用/断绝社交)与soft(委婉隐晦,如"想去很远的地方""睡着就不用醒了")两档,共 70+ 条,召回优先。任一词命中(含 soft 档)脚本都会中断常规建议、强制给出心理援助热线 12356。Agent 必须把这段原样传达给用户并放在最前面,不要用常规关系建议稀释它,也不要自行判断"没那么严重"。 - 理论层结论(依恋风格 / 内部工作模型 / 哀悼阶段)一律按"倾向提示"转述,禁止说成"你是 XX 型"这类定论式表达。
- 若用户仅有一句话,直接走路径 C;若有整段记录,走路径 A;若只有主观感受,走路径 B。