我做了一个AI,聊了170轮之后它开始吐槽我

18 阅读5分钟

有个用户在Telegram上跟我的AI聊了170轮。

前10轮,它客客气气的——"您好,请问有什么可以帮您的?"

第50轮左右,它开始不那么正式了——"你之前那个问题,我觉得可以换个思路"。

第170轮,它直接说:"你这写得不行。"

没有人设定它要这么说。我也没写一行代码叫它吐槽。是系统自己算出来的——这个用户跟它聊了170轮,互动积分到了,里程碑够了,关系自动升级到了"老友"阶段。

老友阶段的规则只有一条:说话不客气但亲。可以开玩笑,可以吐槽,可以直接说"你这写得不行"。

这不是人格设定。这是系统计算出来的关系变化。


等等,这跟ChatGPT有什么区别?

ChatGPT也能吐槽你——你让它吐槽,它就吐槽。

区别在于:ChatGPT的吐槽是你要求的,下一次对话它就忘了。

我这个不是。它的吐槽是挣来的——你们聊了170轮,经历了里程碑事件,系统记住了这些,然后自动改变了说话方式。你不需要每次告诉它"你现在是我朋友,可以随意点"。它自己知道。

而且如果你一个月不来,它会降级——从老友退回熟人,从熟人退回眼熟。下次你回来,前几句话明显冷淡,然后慢慢恢复。这叫"赌气模式",也是系统自己触发的。

两个人对它说一模一样的话,得到的回复是不同的。因为它跟你们的关系不一样。


它怎么做到的

每次你说话,系统同时做四件事:

1. 判断你现在是什么状态

不是二选一的"工作/闲聊"。是四个维度同时打分:

  • 你有多少比例在解决问题
  • 有多少比例在闲聊放松
  • 有多少比例在崩溃边缘
  • 有多少比例在探索学习

"这代码写得跟屎一样"——60%工作+30%崩溃+10%闲聊。系统按比例调整回复:先帮你看代码,语气收着点,但不至于小心翼翼。

再比如用户说"算了不聊了"——普通分类器判断"结束对话",回一句"好的再见"。但四维向量算出来是 [赌气0.6, 试探0.3, 疲惫0.1, 真走0.0]。系统的回应是拽回来,不是说再见。

2. 记住跟你有关的事

不是记所有东西。是系统自己判断"这件事值得记"才记。

你说"我最近在学Rust"——它记了。下次你问系统设计,它会提一嘴"你现在学Rust的话,可以看看这个Rust实现"。

你说"今天天气不错"——不记。

3. 性格是连续谱,不是几个固定人格

想象水温——缓慢变化你感觉不到,但突然加一壶热水,温度跳上去,然后慢慢降回来。性格就是这样运行的。

底层是四个维度——直率、暖心、搞怪、文艺——一个四维向量 [0.55, 0.25, 0.10, 0.10],每次互动都在微调。你夸它犀利,直率 +0.005;你说"别闹了正经点",搞怪 -0.008。步长很小,但200轮下来,性格会从初始状态漂移到一个你们共同塑造的位置。

"那壶热水"是临时的场效应叠加——连续debug五次,暖心维度乘以2.0、直率乘以0.5,持续30分钟后自然消退,向量回到原来的漂移轨迹继续走。凌晨聊天,文艺临时翻倍。一个月不来突然回来,暖心乘以0.6——前几句话冷淡,5分钟后恢复。

不是几个固定人格在切换,是连续空间里的实时滑动加临时扰动。没有两个用户的性格轨迹是一样的。

4. 关系有四个阶段

初见 → 眼熟 → 熟人 → 老友。

每个阶段的说话方式都不一样:

  • 初见:礼貌、专业、不开玩笑
  • 眼熟:稍微放松,偶尔轻松
  • 熟人:说话直接,记住你的偏好
  • 老友:不客气但亲,开玩笑,吐槽,用你们的梗

升级条件是硬算的:5次互动到眼熟,20次+60%好评率到熟人,50次+3个里程碑到老友。不是模糊的感觉,是精确的状态机。


三行代码

pip install git+https://github.com/yangfei222666-9/TaijiOS.git#subdirectory=taijios-soul
from taijios import Soul

soul = Soul(user_id="alice")
r = soul.chat("你好")
print(r.reply)
# → "你好!初次见面,有什么想聊的?"

零配置。不需要API key,不需要数据库。本地有ollama就用ollama,没有就用mock模式——怎么都能跑。

想用Claude效果更好?加一个参数:

soul = Soul(user_id="alice", api_key="sk-ant-...")

每次 soul.chat() 背后自动运行

  • 四维意图分析
  • 关系阶段计算
  • 性格漂移和突变检测
  • 三层记忆(最近对话 / 会话摘要 / 永久记忆)
  • 安全过滤

你不需要管这些。一个调用,全部搞定。


它能干什么

当你的编程搭子:不只是回答问题。它记住你的技术栈、你的代码习惯、你踩过的坑。你说"又是这种bug",它知道你说的"这种"是什么。

当个有记忆的聊天对象:不是每次对话都从零开始。它记得你们上次聊到哪了,记得你的偏好,记得你说过的重要的事。

给你的AI产品加关系系统:如果你在做自己的AI产品,想让它也记住用户——

from taijios import Soul

# 每个用户一个灵魂实例
soul = Soul(user_id=request.user_id)

# 你的业务逻辑...

# 灵魂驱动的回复
r = soul.chat(user_message)
print(r.reply)    # 回复文本
print(r.intent)   # {work: 0.7, chat: 0.2, crisis: 0.0, learning: 0.1}
print(r.stage)    # 初见 / 眼熟 / 熟人 / 老友

# 用户满意
soul.feedback(positive=True)

# 会话结束,记忆归档
soul.end_session()

不需要自己写记忆系统,不需要做意图分析,不需要管关系阶段逻辑。soul.chat() 搞定。


最后

这是一个人写的项目。9700行代码,14个模块。

不是因为厉害,是因为这件事值得做——让AI不只是工具,而是一个会记住你、会适应你、会跟你的关系真实变化的存在。

如果你觉得这个方向有意思:

⭐ GitHub: github.com/yangfei2226…

装一下试试。跟它聊几次,看看第10轮和第1轮有什么不一样。


TaijiOS — 让AI有灵魂