Twin AI人格与记忆系统:使用说明

项目简介

Twin(Portable AI Persona & Memory System)旨在解决每次AI交互都从零开始、失去用户偏好和历史上下文的问题。它通过构建一个可移植的身份层,记住用户是谁,整合“人格(Persona)+目标(Goals)+记忆(Memories)”来提供一致的AI上下文。其核心是一个基于Model Context Protocol (MCP) 的服务器,负责生成和管理用户AI人格。

主要功能点

  • AI人格生成: 根据连接的社交账户数据(如YouTube、GitHub、LinkedIn等)或自定义指令,通过LLM(大语言模型)或规则引擎自动生成详细的AI人格。
  • 人格管理: 提供保存、获取、更新和回滚AI人格版本的功能,确保人格数据的一致性和可追溯性。
  • 人格导出: 支持将生成的人格数据导出为JSON、YAML或LLM可直接使用的Prompt模板格式。
  • 上下文提供: 通过MCP协议将AI人格、目标、兴趣和相关记忆打包成LLM可理解的上下文,支持LLM客户端获取和使用。
  • 记忆管理: 与Mem0.ai集成,管理用户长期记忆,并根据任务目的检索相关记忆作为上下文的一部分。
  • LLM偏好配置: 用户可以为不同任务(如编程、创意写作、数据分析、通用聊天)配置首选的LLM模型。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/haresh-seenivasagan/twin.git
    cd twin
  2. 安装依赖:

    pnpm install
  3. 配置环境变量: 在项目根目录创建'.env.local'文件,并配置以下关键环境变量(请根据您的实际情况和Cloudflare Workers设置填写):

    • 'NEXT_PUBLIC_SUPABASE_URL': Supabase项目的URL。
    • 'NEXT_PUBLIC_SUPABASE_ANON_KEY': Supabase的公开匿名密钥。
    • 'MCP_ADMIN_API_KEY': MCP服务器的管理员API密钥,用于管理功能。
    • 'GOOGLE_CLIENT_ID': Google OAuth客户端ID。
    • 'GOOGLE_CLIENT_SECRET': Google OAuth客户端Secret。
    • 'YOUTUBE_REDIRECT_URI': YouTube OAuth重定向URI,例如'http://localhost:3000/api/youtube/callback'。
    • 'GEMINI_API_KEY': Google Gemini API密钥(用于LLM驱动的人格生成,请从Google AI Studio获取)。
    • 'MEM0_API_KEY': Mem0.ai的API密钥(用于记忆管理)。
    • 'NEXT_PUBLIC_MCP_SERVER_URL': 已部署的MCP Persona服务器的URL,例如'https://twin-mcp-persona.your-domain.workers.dev/mcp'。
  4. 启动开发服务器(前端应用):

    pnpm dev

    应用程序将在'http://localhost:3000'可用。

  5. 部署MCP Persona服务器(Cloudflare Workers): 'workers/mcp-persona'目录下的代码是一个独立的Cloudflare Workers项目,作为MCP服务器提供服务。您需要将其部署到Cloudflare Workers环境。

    • 确保您的Cloudflare账户已配置好Workers,并创建名为'twin-mcp-persona'的Worker。
    • 配置Worker的各项环境变量,包括:'GEMINI_API_KEY'、'ADMIN_API_KEYS'(多个密钥用逗号分隔)、'LIFETIME_LIMIT'(速率限制,例如'100')、以及可能需要的'RATE_LIMIT' KV命名空间绑定。
    • 将'workers/mcp-persona/cloudflare-worker.js'部署为Cloudflare Worker的主脚本。
    • 部署后,更新前端应用中的'NEXT_PUBLIC_MCP_SERVER_URL'指向此Worker的URL。

服务器配置(供MCP客户端使用)

MCP客户端在连接MCP服务器时,需要以下JSON格式的配置信息。这些配置将指导客户端如何与Twin MCP Persona服务器建立通信:

{
  "serverName": "twin-mcp-persona",
  "command": "wrangler",
  "args": [
    "dev",
    "workers/mcp-persona/cloudflare-worker.js",
    "--port", "8787",
    "--binding", "MCP_PERSONA:service_binding=twin-mcp-persona",
    "--var", "GEMINI_API_KEY=<你的Gemini API密钥>",
    "--var", "ADMIN_API_KEYS=<你的管理员API密钥,逗号分隔>",
    "--var", "LIFETIME_LIMIT=100",
    "--binding", "RATE_LIMIT:kv_namespace=RATE_LIMIT_KV"
  ],
  "comment_command": "命令: 使用Cloudflare Wrangler CLI启动本地开发服务器。",
  "comment_args_dev": "参数: 启动 'workers/mcp-persona/cloudflare-worker.js' 的开发模式,此文件是MCP服务器的入口。",
  "comment_args_port": "参数: 指定本地MCP服务器监听的端口,例如'8787'。",
  "comment_args_binding_mcp_persona": "参数: 配置一个名为 'MCP_PERSONA' 的服务绑定,用于Worker间直接通信,提高效率。'twin-mcp-persona'应替换为你的Worker名称。",
  "comment_args_var_gemini_api_key": "参数: 设置Gemini API密钥,用于AI人格的LLM生成。请替换为你的实际密钥。",
  "comment_args_var_admin_api_keys": "参数: 设置管理员API密钥,用于访问服务器的管理员功能。请替换为你的实际密钥,多个密钥用逗号分隔。",
  "comment_args_var_lifetime_limit": "参数: 配置非管理员用户的请求生命周期限制,例如'100'次。",
  "comment_args_binding_rate_limit": "参数: 配置一个名为 'RATE_LIMIT' 的KV命名空间绑定,用于存储和管理速率限制数据。需要确保你的Cloudflare Workers项目已设置名为 'RATE_LIMIT_KV' 的KV命名空间。"
}

基本使用方法

  1. 连接账户: 用户在前端应用中通过OAuth授权连接其Google (YouTube)、GitHub、LinkedIn等社交和开发者账户。
  2. 生成人格: 应用程序收集到的账户数据会发送到Twin MCP Persona服务器的 'persona.generate_from_accounts' 工具。服务器根据这些数据(结合LLM或规则)生成用户的详细AI人格。
  3. 获取上下文: 当LLM客户端需要与用户交互时,它会向Twin MCP Persona服务器发送请求,调用相关工具或获取资源,以获取包含用户AI人格、当前目标、兴趣和相关记忆的个性化上下文。
  4. 调用工具: LLM客户端可以调用MCP服务器注册的各种工具,如 'persona.save' (保存/更新人格)、'persona.get' (获取人格)、'persona.export' (导出人格) 等,来管理和利用用户的AI人格数据。

信息

分类

AI与计算