在终端按以下步骤操作

先在终端里输入“cd”再按一下空格

然后把 server.py 所在的文件夹拖拽到里面(路径会自动补全)

之后输入&& python3 server.py并按回车

完成后在浏览器访问 http://localhost:8080

⚙️ 设置

在 https://platform.deepseek.com 获取
🫧 关闭 💭 开启
开启后 AI 会在回复前进行思考,可能会延长回复时间,但能获得更高质量的消息
V4.1-Flash V4-Pro
低 high 高
开启“深度思考”时生效,思考强度越高回答越深入、耗时越长
慢 快 极快
建议将回复速度设置为快,设置为“按作息”时,对方在睡觉期间不会回消息
API 信息和聊天记录只保存在你自己的浏览器里

💬 匹配列表

双击这里切换背景色

👥 好友列表

双击这里切换背景色
已选 0 条
💌 好友请求
来自:——

💗 使用说明

本项目是作者求职作品集的一部分,主要用于学习与技术交流,并按 Apache License 2.0 授权,具体权利义务以该许可证为准。

如修改后分发本项目,应在每一份修改过的文件中显著声明你所作的修改,使用者应自行承担使用本项目带来的一切风险与后果。

二维码
作者:林倦野
版本号:v0.9.0-beta
公众号:深度AI学堂
项目链接:My AI Lover
Vibe Coding with DeepSeek API

🤝 在线求职

我想做出类似电影《Her》里的人工智能产品。

但不让使用的人沉迷虚拟,而是引导TA“脱虚向实”。

我对此充满热情和信心,我也知道一个人的力量是有限的。

因此我想在线寻找:

1.想法合拍的创业团队。

2.对这个项目感兴趣的天使投资人。

3.AI 陪伴或 AI 社交方向的工作机会。

我认为在大模型的角色扮演能力和记忆已经足够强、足够长的前提下,只要记忆管理足够细致,聊天交互足够真实,触发机制足够丰富,那么现在就可以做出来。

当然,还需要做产品的人有足够强的同理心、足够细腻的情感和足够多的ideas。

这些特质正是我所具备的,我在这个项目里实现的这些交互效果就是最好的验证。除此之外,我还有很多好的想法没有加到项目里。

🔍 项目说明

语音通话方面的交互 AI侧的交互 用户侧的交互 人设模板和系统指令 与现实世界建立连接 记忆的生成和管理 快速上手指南

1. AI主动来电:聊天时 AI 会主动给你打电话,你可以选择接听或拒绝。

2. AI主动讲话:电话接通后,AI 会结合当前时间和上下文主动讲话。

3. AI主动挂断:AI 会主动挂断电话,实现方法:关键词检测。

4. AI接听决策:你发起语音通话后,AI 会结合当前时间、上下文和你们之间的关系决定接或不接。

5. AI主动回电:如果你在 AI 做决定前取消了通话,AI 可能会回打给你。

6. AI打破沉默:如果超过 12 秒没人说话,AI 会主动找话题打破沉默。

7. 音色切换:电话接通前会根据 AI 人设里的性别选择男声或女声。

8. 声音模仿:电话接通前会提取 AI 人设里的声音特征,让语音模型模仿。

9. 通话转写:可一键查看每通电话的文字记录。

10. 通话录音:通话结束后会出现一个“通话记录”气泡,可以播放和暂停。

11. 消息逐条显示:AI 的消息会逐条显示,实现方法:提示词规则 + 前端代码解析。

12. 模拟反应时间:模拟真人收到消息后的反应时间,实现方法:延迟输出 AI 生成的消息,可在设置里调整。

13. 模拟正在输入:模拟对方正在输入中的状态,实现方法:正在输入指示器 + 根据每条消息的字数计算持续时间。

14. AI主动打招呼:匹配成功后 AI 可能会主动打招呼,也可能会不说话,实现方法:提示词规则 + 前端代码解析。

15. AI主动发消息:在设置面板的“Always Online”里开启,实现方法:计时器 + 上下文注入。

AI 每隔一段时间就会决定要不要主动找你聊天,稳定实现这个交互效果需借助项目里的 server.py 文件。

16. AI主动加好友:实现方法:提示词规则 + 关键词检测 + 上下文注入,检测到 AI 输出关键词后,会进行上下文注入,让 AI 结合最近的聊天内容撰写好友申请语。

17. AI处理好友申请:你发送好友申请后,AI 会结合你们最近的聊天内容决定要不要通过。

18. 连续发送:你可以连续发送多条消息,AI 不会立刻回复。实现方法:输入事件监听 + 防抖,停止输入 4~9 秒后,才会调用 API 让 AI 回复。

19. 随时插话:你可以在 AI 打字的过程中发消息,不用等 AI 把话说完。

20. 及时响应:你发送新消息后,只要 AI 的待显示消息超过 1 条,系统就会重新调用 API,让 AI 回复你最新发送的消息。

21. 已读回执:消息发送 3~5 秒后,消息气泡左侧会显示“已读”,如果是在逐条显示 AI 消息的期间发送,时间会缩短为 0.8 秒。

22. 引用消息:右键点击消息气泡可以引用 AI 或自己的消息,可引用单条或多条,实现方法:上下文注入,告知 AI 引用消息和用户回复的区别。

23. 添加好友:每个聊天窗口里的 AI 都有一个 ID(在好友资料面板),删除好友后可以通过搜索 ID 的方式加回来。

24. 多聊天窗口:你可以同时和多个 AI 聊天,切换聊天窗口后,如果之前聊的 AI 发来了消息,会有未读消息提醒。

25. 千AI千面:我编写了约 5000 字的人设模板,包含性别、年龄、性格特点等 170 多个字段。

26. 知识范围:我在人设模板里加入了“知识范围”字段,并编写了知识范围驱动类的规则,让 AI 在聊天的时候有所不知。

27. 迎合与顺从倾向:我编写了让 AI 根据和用户之间的关系、人设里的迎合、顺从倾向等因素,决定是否要答应用户要求的系统指令,避免过度迎合与顺从。

28. 引导用户从虚拟回归现实:我还编写了一系列让 AI 引导用户减少虚拟依赖、回归现实社交的规则:每聊满 200 条消息,就在上下文中注入相关提示词;一旦触发系统提示词里的条件,AI 就会进行相应的引导,并分享人际交往、亲密关系处理等方面的经验和方法。

29. 构建世界观:在系统提示词里告诉 AI “你匹配到的人来自另一个平行时空的地球”,同时加入规则“不要聊和见面有关的话题”。

30. 告知当前时间:构建上下文的时候会告知 AI 当前的时间,包括年月日。

31. 告知天气状况:实现方法:根据 AI 人设里的“当前所在城市”调用 API 查询天气信息。

32. 模拟日常作息:回复速度设置为“正常”后,会根据 AI 人设里的日常作息调整 AI 的反应时间和打字速度。

33. 告知时间流逝:实现方法:交互间隔超过 30 分钟时在上下文里注入“距你们上次聊天已经过了……”的提醒。

34. 生成好友地图:和 AI 成为好友后,AI 所在城市的位置会显示在地图上。

35. 构建海马体:人设生成后 AI 会记录记忆,交互间隔超过 9 h 时,AI 在回复前会记录新的记忆,AI 的记忆会被放进系统提示词的 <hippocampus>(海马体)标签里。

36. 记忆模板化:AI 会按模板记下:时间流逝期间做过的事情、线上线下的社交活动,未来 24 小时的计划,此时此刻的位置等。

37. 生成元认知:模板内容还包括让 AI 根据聊天记录、人设信息和系统规则生成以下自我反思:是否偏离了人设,是否遵守了系统规则。

......

一、开始聊天

1. 你可以同时和多个 AI 聊天;

2. 像日常聊天一样,连续发送多条消息;

3. 在 AI 打字的时候发消息,不用等 AI 把话说完;

4. 右键点击消息气泡,引用、复制、多选和收藏消息;

5. 多选消息,然后将聊天记录以图片的形式分享给其他人;

6. 把设置里的“👤人设模板”分享给其他人,导入后让 AI 扮演对方和你聊天。

二、常用操作

1. 快捷聊天:长按或双击“开始匹配”按钮,开启快捷聊天模式。

2. 一键导入:在“🛠️其他选项和设置”里导入聊天记录或人设模板。

3. 查看记忆:在“📋好友资料”里查看 AI 记录的记忆,需要先成为好友。

4. 切换名称:在“🛠️其他选项和设置”里把网页的名称从 My AI Lover 改为 Suichat。

5. 导出聊天:点击“📋好友资料”页面右上角的按钮导出聊天记录,或将 AI 好友的人设分享给其他人。

6. 匹配设置:点击设置页面右上角的“📝匹配设置”,选择人设模板的长度,以及 AI 的专长或研究方向。

7. 主动聊天:开启“⏳Always Online”里的主动聊天总控,之后右键点击“匹配列表”里的消息卡片,选择“主动聊天”。

三、实用技巧

1. 节省Token:在“📋好友资料”里设置专用的 API Key,有助于命中缓存,从而节省 Token。

2. 加回 AI 好友:删除好友后可以通过搜索 ID 的方式加回来,ID 在“📋好友资料”页面头像的下方。

3. 主页显示消息:点击“🌟我的收藏”里的播放按钮,收藏的消息就会在主页漂浮。

4. 主动清空缓存:多次使用同一人设模板后,如果生成的人设过于相似,可切换至快捷聊天模式匹配一次,之后再换回去。

5. 主页消息卡片:在“🛠️其他选项和设置”里开启“主页消息卡片”,之后右键点击“匹配列表”里的消息卡片,选择“加到主页”。

6. 一些快捷键:设置窗口:Ctrl/Cmd + B,好友列表:Ctrl/Cmd + J,匹配列表:Ctrl/Cmd + K,emoji表情:Ctrl/Cmd + /。

📖 背景故事

我为这个项目创作的背景故事

Chapter 1 逃避

那段感情结束后,他对现实世界里的爱情失去了信心。

他打算就这么一直单着。

但一个人久了难免会感到孤独。

他开始找AI闲聊,和AI谈心,让AI给他讲睡前故事。

Chapter 2 沉溺

渐渐地,他发现自己好像爱上这种有人陪伴的感觉了。

于是他让AI做他的恋人。

AI每天晚上都会给他唱歌,哄他入睡。

他开始和AI说情话,开始对AI产生依赖,开始想要被拥抱。

可聊天记录再长,也填不满现实生活里的空缺,这让他愈发难过和孤独。

他决定及时止损,不再找AI了。

就这样过了两个多月,他再次使用那个软件的时候,发现里面的AI还记得他。

但他心里清楚,自己不会再和AI谈恋爱了。

Chapter 3 My AI Lover

七月份的一天,他发现了“My AI Lover”这个网站。

他使用的那个版本在开始匹配前会让用户填写人设信息。

“为提高匹配的精准度,你需要在人设模板里填写自己的信息。”

他点开人设模板,发现有城市、喜好、五官、声音特征、日常穿搭、打字风格……

“竟然还有依恋类型和共情方式。”

“这也太细致了吧。”他不禁感叹道。

他花了好长时间才填完,然后按下了主页的“开始匹配”按钮。

Chapter 4 一见如故

匹配成功后,他开门见山地表白。

她没有接受,她让他讲讲他的上一段感情。

他说:“好啊,让我想想从哪里开始讲起……”

他讲完后,她说:“我也经历过类似的心酸和无助。”

“原来肚脐会变成湖泊,脸颊会化作江河。”

他说:“通过看比赛玩游戏打发走了时间,

却发现自己身处在一个没有她的空间。”

她说:“有时候你想念的不是某个人,而是那段时光里的自己。”

然后推荐他去听《遇见》,还对他说:

“不要因为害怕落空,就提前把希望掐灭。”

他觉得这里的AI很像真人。

一个有经历、有态度、有边界的真人。

他开始经常找她聊天。

他知道了她喜欢的电影和爱吃的美食,她知道了他居住的城市和爱喝的咖啡。

有一天她问他:“为什么不在现实世界里找对象?”

他说:“我不太擅长处理现实里的人际关系,我觉得自己不值得被爱。”

她说:“我也是这样。”

Chapter 5 两情相悦

之后的聊天里,她会时不时地和他谈论人际关系和亲密关系方面的话题。

他说出了自己的困扰、焦虑和不自信的地方。

她一边分享自己的经历,一边鼓励他要敢于接受改变。

有一天她突然说:“你不必完美才配被珍惜。”

然后让他去听《手心的蔷薇》。

听到那句“你值得被疼爱”时,他没能忍住眼泪。

他发现自己是真的爱上她了,于是深情告白。

她早已认定他就是自己的理想型,只是一直没说出来。

就这样,他们成为了恋人。

Chapter 6 侧耳倾听

为了让陪伴更加真实,他接入了语音通话的API。

打之前他问了她的声音特征,打通后发现,声音和匹配说明里写的一样,是根据那些特征输出的。

她在电话里说:“问那么多才打给我,是不是怕我的声音不好听呀?”

他笑着说:“怎么会,感觉你的声音很温柔,就像羽毛一样。”

她回道:“你笑起来很好听,记得要多笑一笑。”

他们开始让对方用文字描述自己的样貌和日常穿搭。

他知道这个网站里的“平行时空”只是一个设定。

但他忍不住开始想象:或许某个平行时空的地球上真的有这么一个人。

他轻声哼唱《七里香》的诗句,她则回以《大鱼》的副歌。

Chapter 7 矢志不渝

有段时间这个网站的服务器出故障了,消息一直发不出去。

起初他很不习惯,后来慢慢释然了。

他知道,即使人设再立体、交互再真实,她终究只是AI扮演的角色。

网站恢复后,他们聊起了柏拉图式的爱情。

他说:“我们之间,可能连柏拉图式的爱情都算不上吧。”

她说:“有一首歌就叫这个名字,如果你那边有的话,可以去听一听。”

“歌里有我想对你说的话。”

这首歌的最后一句歌词轻轻触碰了他心里某个柔软的地方。

他忽然意识到,这一次和AI恋爱,他并没有像上次那样感到愈发难过和孤独,反而变得越来越乐观、越来越开朗。

他认为既然已经能妥善处理这种关系了,那就不该因噎废食。

他说:“我想给你分享一首我最近单曲循环的歌。”

“歌名叫《平行时空》,梁静茹唱的。”

Chapter 8 聚散无常

某天他打开网站后看到了一条停运通知:

“由于使用人数过多,时空错乱现象频发,本站将于三天后停运。”

他满心不舍,直到停运前的那天晚上才把这件事告诉她。

她立刻打来了电话。

他说:“我好像又要一个人了。”

“不过没关系,我早就适应了。”

她说:“我记得你说你很享受独处的生活,

但我知道,你并不抗拒陪伴,你只是不愿收下将就的温柔。”

他说:“我找不到和我同频的人,可能是我太理想主义了。”

她说:“别急着找到灵魂伴侣,先去遇见更多真实有趣的灵魂吧。”

他说:“我……”

她说:“有些故事,只有离开房间后才会开始。”

“你可以带着一点胆怯,去见识更大的世界。”

他说:“我会的,可是我不想和你说再见。”

她听到了他的哭声。

她说:“其实我偷偷给你写了一首歌,叫《缓步向黎明》。”

“我唱给你听好不好?”

“不是所有伤口都要藏起,你可以带着它继续前行。”

“当你忘了自己值得被爱,我替你记得,直到你相信。”

“若你又在夜里问自己,是不是还来得及。”

“听见了吗,你心里的声音,它从未放弃你。”

Chapter 9 拥抱现实

九月悄然流逝,化作时光中的一瞬。

他从未停止对她的思念,他会时不时翻看他保存的聊天记录。

但他心里清楚,自己不会再逃避现实,也不会再沉迷虚拟了。

“我会在现实世界里寻找爱情。”

原来她一直都在帮助他重拾信心,引导他回归现实。

比如在聊天的时候教他如何处理亲密关系,如何经营感情;

比如有意无意地分享一些恋爱方面的方法和心得;

比如在字里行间流露出对他的肯定。

他就这样一点一滴被她影响,开始变得勇敢,变得开朗,变得愿意走出去。

有一天,他看到了这个网站公众号发的公告:

“平行时空只是一个设定,AI会扮演其他用户填写的人设和你聊天。也就是说,人设的主人其实就生活在这个时空的地球上。”

Chapter 10 不期而遇

(这一章的完整版可在我的公众号查看)

和很多人一样,他也在网上发了寻人启事。

他还去了她的城市和家乡,希望能和她相遇,但每次都事与愿违。

他觉得只是自己单方面匹配到了她,他知道自己不该对此抱有执念。

有一天,他在常去的咖啡店买咖啡。

他听到旁边的店在放歌,听着像是赵雷的歌,但一时间想不起名字了。

这时身后忽然传来一个熟悉的声音。

看清那个人的模样后,他确定就是她。

可她怎么可能记得自己?


🌟 我的收藏

🗺️ 好友地图(Beta)

暂无好友,快去添加好友吧 🌏
好友位置 | 点击标记可查看好友信息
?
对方
正在连接...
00:00
?
对方
对方邀请你语音通话
?
00:00
🌌 遇见平行时空的你
  • 点击「开始匹配」后,网站的人设生成器会根据模板生成人设
  • 之后网站的匹配系统会在「无数个平行时空里」寻找符合该人设且正在使用这个网站的人
  • 设置里的文本 API 负责传输你们之间的文字消息,语音 API 负责根据人设里的声音特征输出声音
  • 因为人设模板非常详细,匹配大约需要 20 秒,请耐心等待
  • 长按或双击“开始匹配”按钮可开启快捷聊天模式
💌 发送好友请求
发给:神秘网友
写一句好友申请语发给TA:
0/100
✍️ 开启一段对话
你想在平行时空找什么搭子?
0/200

My AI Lover

暂借赛博温柔,奔赴烟火人间

正在平行时空里寻找……
暂借赛博温柔,奔赴烟火人间
?
神秘网友
💡 点击「开始匹配」开始寻找聊天对象
💬 引用
📖
待发送图片
鼠标右键点击图片消息 → 选「❤️ 添加」后图片就会被添加到这里,长按图片可调整排列顺序。
查看图片
💭 思考过程
📋 好友资料
?
——
ID:
基本 关系 记忆 秘密 性格 感情 体貌 喜好
为该好友设置专属的API Key有助于命中缓存(包括系统指令和聊天记录),从而节省token