1. 项目概述:打造你的AI船员舰队
去年我在开发IM-Claude项目时,最初只是想让Claude AI能通过微信和Telegram聊天。但随着项目迭代,我逐渐意识到:单一AI角色就像孤独航行的船只,而真正的乐趣在于组建一支个性鲜明的船员队伍。这就是"多虚拟人"功能的由来——让每个用户都能创建属于自己的AI船员舰队。
这个功能的核心价值在于:
- 每个虚拟船员拥有独立的人格记忆
- 支持无限扩展的个性化角色库
- 完全本地化部署,隐私安全有保障
- 通过简单配置文件即可定制角色
提示:虽然项目基于Claude API,但所有对话数据都存储在本地,不会上传到任何第三方服务器,这对注重隐私的用户尤为重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能解析
2.1 多虚拟人交互机制
消息路由系统是这个功能最精妙的设计。当收到"阿瓜 今天天气怎么样?"这样的消息时:
-
首先进行消息预处理:
- 去除前后空格
- 转换全角冒号为半角
- 统一处理@符号
-
使用正则表达式
/^([^:\s@]+)[:\s@]+(.+)/进行匹配:- 第一捕获组获取角色名
- 第二捕获组获取实际消息内容
-
匹配失败则使用默认角色
这种设计支持了四种调用方式:
bash复制阿瓜 今天吃什么 # 空格分隔
阿瓜:今天吃什么 # 冒号分隔
@阿瓜 今天吃什么 # @符号调用
阿瓜,今天吃什么 # 中文逗号分隔
2.2 独立对话记忆实现
每个虚拟人的对话记忆隔离是通过Session Key实现的:
javascript复制// 生成唯一的会话ID
const sessionKey = `${userId}:${personaName}`;
// 存储结构示例
{
"user123:阿瓜": [
{role: "user", content: "今天天气怎样"},
{role: "assistant", content: "阿瓜: 阳光超好~适合出门拍照哦(◕‿◕✿)"}
],
"user123:海贼王": [
{role: "user", content: "推荐个运动"},
{role: "assistant", content: "海贼王: 当
