Skip to content

AI 群聊模拟

WeLink 支持基于真实群聊记录,用 AI 模拟群友继续聊天。AI 会学习每个成员的说话风格、用词习惯和发言频率,生成"如果群友们继续聊下去"的模拟对话。

功能入口

群聊详情弹窗中,点击顶部的 「AI 群聊」 Tab 即可进入。

使用方法

1. 选择参考消息数

控制 AI 读取多少条历史消息来学习群友风格:

选项说明适合场景
500 条轻量模式,速度快快速体验、小群
1000 条推荐,平衡速度和风格准确度日常使用
2000 条深度模式,风格更准大群、想要更真实的效果
3000 条最深度,token 消耗大对风格还原度要求高

2. 选择每次生成轮数

每轮模拟一位群友发言,可选 5/10/15/20 轮。

3. 选择参与成员

从群成员排行中勾选要参与模拟的成员(默认 top 10),取消勾选的成员不会发言。

4. 设定话题和氛围(可选)

  • 话题/场景:输入具体话题(如"讨论周末去哪吃饭"),不填则自由发挥
  • 聊天氛围:可选 自然 / 日常闲聊 / 激烈讨论 / 深夜吐槽 / 搞笑段子 / 正经严肃

5. 点击"开始模拟"

AI 会:

  1. 读取最近的群聊记录
  2. 分析选中成员的发言比例和说话风格
  3. 按概率随机选择群友,逐轮生成模拟消息

6. 加入群聊

底部输入框可以随时发消息"加入"群聊。发送后 AI 会基于你的消息内容,让群友自然回应。

7. 继续聊

点击"继续聊"可以在已有对话基础上继续模拟更多轮次。

技术原理

成员风格画像

WeLink 从历史消息中提取每个成员的量化风格特征

  • 消息长度:平均字数 → 判断是"惜字如金"还是"长篇大论"
  • 表情使用频率:含表情/emoji 的消息占比
  • 提问频率:含问号的消息占比 → 判断是否"爱提问"
  • 语气强度:含感叹号的消息占比
  • 简短回复倾向:5 字以内消息的占比

这些特征被转化为自然语言标签(如"惜字如金,回复简短、爱用表情"),与 10 条精选说话样本一起构成每个人的风格画像。

发言概率

每轮选择哪个成员发言,基于该成员在历史消息中的发言占比。例如某成员占全群发言量的 35%,那么每轮有 35% 的概率被选中发言。

多轮对话记忆

模拟过程使用 LLM 的多轮对话(multi-turn)机制:

  • 每轮生成的消息作为 assistant 回复保留在对话历史中
  • LLM 能"记住"已经说过什么,避免重复
  • 用户发的消息也会加入对话历史,群友的后续回应会考虑用户说的内容

系统 Prompt 结构

[规则] 区分成员风格、承接上文、回应用户消息、避免重复

[成员画像]
## Saka(发言占比 35%)
性格特征:话多、爱用表情、语气强烈
说话样本:「xxx」「yyy」...

## Ødegaard(发言占比 20%)
性格特征:惜字如金、很少用表情
说话样本:「xxx」...

[最近 50 条群聊记录作为上下文]

注意事项

  • 需要先在设置中配置 LLM 提供商(DeepSeek / Kimi / OpenAI / Claude / Gemini / MiniMax / GLM / Grok / Ollama / 自定义)
  • 消息越多,AI 学习的风格越准确,但 token 消耗也越大
  • 模拟结果仅供娱乐,不代表真实群友的真实想法
  • 支持所有 WeLink 已适配的 LLM 提供商
  • 模拟过程中可随时点击"停止"

API 接口

POST /api/ai/group-sim

发起群聊模拟,返回 SSE 流。

请求体:

json
{
  "group_username": "xxx@chatroom",
  "message_count": 1000,
  "profile_id": "profile-uuid",
  "user_message": "可选,用户加入群聊的消息",
  "history": [
    { "speaker": "Saka", "content": "之前模拟的消息" }
  ],
  "rounds": 10,
  "topic": "可选,话题/场景设定,如:讨论周末去哪吃饭",
  "mood": "可选,聊天氛围:casual / heated / latenight / funny / serious",
  "members": ["Saka", "Ødegaard", "Saliba"]
}
字段类型说明
group_usernamestring群聊 username(必填)
message_countnumber参考消息条数,默认 1000
profile_idstringLLM 配置 ID
user_messagestring用户加入群聊的消息(可选)
historyarray已有的模拟对话历史(前端维护)
roundsnumber每次生成轮数,默认 5,最多 20
topicstring话题/场景设定(可选,不填则自由发挥)
moodstring聊天氛围(可选):casual=日常、heated=激烈、latenight=深夜、funny=搞笑、serious=严肃
membersstring[]指定参与成员名单(可选,为空则自动取 top 10)

SSE 响应:

每条 data: 为一个 JSON 对象:

json
{"speaker": "Saka", "content": "模拟的消息内容"}

最后一条:

json
{"done": true}

WeLink · AGPL-3.0 · 所有数据仅在本地处理,不上传任何服务器 · vdev