项目简介

IntelliVNG MCP 服务是 IntelliVNG Studio 的核心后端,旨在通过先进的AI多智能体系统,帮助用户从一个简单的想法快速创作出完整的视觉小说游戏。它不只是简单的AI模型API封装,而是集成了Tree-of-Thoughts、ReAct、Few-Shot CoT等前沿AI研究成果,实现端到端的故事生成、可视化编辑和导出功能。该服务以标准化的方式向客户端提供上下文信息和AI功能,并通过流式事件实时通知客户端生成进度。

主要功能点

  • AI多智能体协作创作: 包含故事规划师(Story Planner)、节点写手(Node Writer)和故事审阅者(Story Reviewer)三大核心智能体,协同完成故事创作。
  • 上下文与工具管理: 托管和管理AI创作所需的角色、世界观、场景等“资源”,并提供丰富的“工具”供智能体调用,例如结构校验、路径分析、图片生成等。
  • Prompt模板管理: 集中管理和渲染用于与大型语言模型交互的Prompt模板,支持多语言本地化。
  • 实时进度通知: 通过Server-Sent Events (SSE) 协议,向客户端推送AI创作的实时进度、日志和阶段信息。
  • 内容生成与优化: 能够根据用户输入自动生成完整的世界观、角色、场景和多结局剧本,并支持智能审阅与重写。
  • 素材自动生成: 集成文生图、图生图能力,可自动生成角色立绘、场景背景等视觉素材。
  • 通用表单AI自动补全: 为角色、世界观、场景、主题等各类表单提供智能补全辅助。
  • 多语言支持: AI生成内容和系统提示支持简体中文、繁体中文和英文。

安装步骤

  1. 克隆仓库: 打开终端,运行以下命令克隆项目仓库:
    git clone https://github.com/FE-square/IntelliVNG.git
    cd IntelliVNG
  2. 安装依赖: 使用pnpm安装所有项目依赖:
    pnpm install
  3. 配置环境变量: 在 'apps/intelli-services/' 目录下创建一个 '.env' 文件,并填入以下内容。请确保替换 'sk-xxxx' 为您自己的OpenAI兼容API Key,以及 'TONGYI_API_KEY'。
    OPENAI_API_KEY=sk-xxxx # 您的OpenAI或兼容API服务的密钥
    OPENAI_BASE_URL=https://api.openai.com/v1 # OpenAI API服务的基础URL,默认为OpenAI官方地址
    OPENAI_MODEL_NAME=gpt-4.1 # 使用的AI模型名称,例如gpt-4.1, gpt-4o-mini, qwen-plus等
    TONGYI_API_KEY=sk-yyyy # 您的通义万相API密钥,用于图像生成
    PORT=4000 # 服务启动端口,默认为4000
    CORS_ORIGIN=http://localhost:3000,http://127.0.0.1:3000 # 允许跨域访问的前端地址
    • 注意: 推荐使用GPT系列模型以获得最佳结构化输出支持。如果使用Qwen模型,部分ReAct工具调用可能会自动回退到单次审阅流程。
    • 通义万相: 图像生成需要 'TONGYI_API_KEY'。

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

IntelliVNG MCP 服务器通过 HTTP/SSE 协议提供服务。MCP 客户端可以通过配置以下信息连接并调用其能力:

{
  "server_name": "IntelliVNG MCP 服务",
  "description": "基于AI多智能体的视觉小说游戏创作后端服务",
  "command": "pnpm",
  "args": [
    "dev:serv"
  ],
  "env": {
    "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY",
    "OPENAI_BASE_URL": "https://api.openai.com/v1",
    "OPENAI_MODEL_NAME": "gpt-4.1",
    "TONGYI_API_KEY": "YOUR_TONGYI_API_KEY",
    "PORT": "4000",
    "CORS_ORIGIN": "http://localhost:3000,http://127.0.0.1:3000"
  },
  "protocol": "http",
  "endpoints": {
    "generate_story": {
      "method": "POST",
      "url": "http://localhost:4000/api/game/generate-by-agents",
      "description": "使用多智能体AI系统生成视觉小说剧本,支持SSE实时进度。请求体包含完整的项目设定:characters(角色列表), worldSetting(世界观), scenes(场景列表), themeSetting(主题风格),可选locale(用户语言)和idea(故事创意,用于缓存)。",
      "parameters": [
        { "name": "characters", "type": "array", "description": "角色列表,包含名称、描述、ID等" },
        { "name": "worldSetting", "type": "object", "description": "世界观设定,包含名称、时代、地点、规则等" },
        { "name": "scenes", "type": "array", "description": "场景列表,包含名称、类型、氛围、细节等" },
        { "name": "themeSetting", "type": "object", "description": "主题风格设定,包含主题、风格、基调等" },
        { "name": "locale", "type": "string", "enum": ["zh-CN", "zh-HK", "en-US"], "description": "用户语言" },
        { "name": "idea", "type": "string", "description": "简短的故事创意(可选,用于缓存)" }
      ],
      "response_stream": "Server-Sent Events",
      "events": [
        {"event": "session", "description": "会话开始/结束状态"},
        {"event": "progress", "description": "AI生成各阶段的实时进度和详细信息"},
        {"event": "result", "description": "最终生成的GameProject数据"},
        {"event": "error", "description": "生成过程中的错误信息"}
      ]
    },
    "generate_image": {
      "method": "POST",
      "url": "http://localhost:4000/api/game/generate-image-stream",
      "description": "AI生成图片,支持流式状态返回,可用于角色立绘、头像、场景背景。请求体包含prompt(图像生成提示词), type(图片类型,'sprite', 'avatar', 'background'), 可选size(尺寸), refImageUrl(参考图URL), refStrength(参考图强度)。",
      "parameters": [
        { "name": "prompt", "type": "string", "description": "图像生成提示词" },
        { "name": "type", "type": "string", "enum": ["sprite", "avatar", "background"], "description": "图片类型" },
        { "name": "size", "type": "string", "description": "图片尺寸,如'1024*768'" },
        { "name": "refImageUrl", "type": "string", "description": "参考图URL(可选,用于保持风格一致性)" },
        { "name": "refStrength", "type": "number", "description": "参考图强度 (0-1,默认0.7)" }
      ],
      "response_stream": "Server-Sent Events",
      "events": [
        {"event": "data", "description": "图片生成状态(PENDING/RUNNING/SUCCEEDED/FAILED)及最终图片URL"}
      ]
    },
    "autocomplete_form": {
      "method": "POST",
      "url": "http://localhost:4000/api/game/autocomplete-form",
      "description": "AI自动补全表单字段,支持角色、世界观、场景、主题等多种表单类型。请求体包含formType(表单类型), partialData(已部分填写的表单数据), 可选context(上下文信息)和locale(用户语言)。",
      "parameters": [
        { "name": "formType", "type": "string", "enum": ["character", "world", "scene", "theme", "background"], "description": "表单类型" },
        { "name": "partialData", "type": "object", "description": "已部分填写的表单数据" },
        { "name": "context", "type": "object", "description": "上下文信息,如项目标题、故事类型、已有条目等" },
        { "name": "locale", "type": "string", "enum": ["zh-CN", "zh-HK", "en-US"], "description": "用户语言" }
      ],
      "response": "JSON",
      "success_field": "success",
      "data_field": "data",
      "error_field": "error"
    },
    "quick_setup": {
      "method": "POST",
      "url": "http://localhost:4000/api/game/quick-setup",
      "description": "根据一句话描述快速生成项目的完整设定(标题、角色、世界观、场景、主题)。请求体包含prompt(故事描述)和可选locale(用户语言)。",
      "parameters": [
        { "name": "prompt", "type": "string", "description": "故事的简要描述" },
        { "name": "locale", "type": "string", "enum": ["zh-CN", "zh-HK", "en-US"], "description": "用户语言" }
      ],
      "response": "JSON",
      "success_field": "success",
      "data_field": "data",
      "error_field": "error"
    },
    "get_project": {
      "method": "GET",
      "url": "http://localhost:4000/api/game/projects/:id",
      "description": "根据项目ID获取项目详细数据。",
      "parameters": [
        { "name": "id", "type": "string", "location": "path", "description": "项目唯一ID" }
      ],
      "response": "JSON",
      "success_field": "success",
      "data_field": "data",
      "error_field": "error"
    },
    "list_projects": {
      "method": "GET",
      "url": "http://localhost:4000/api/game/projects",
      "description": "获取所有已保存的项目列表。",
      "response": "JSON",
      "success_field": "success",
      "data_field": "data",
      "error_field": "error"
    },
    "update_project": {
      "method": "PUT",
      "url": "http://localhost:4000/api/game/projects/:id",
      "description": "更新或创建项目。URL路径包含项目ID,请求体为要更新的项目数据。",
      "parameters": [
        { "name": "id", "type": "string", "location": "path", "description": "项目唯一ID" },
        { "name": "project_data", "type": "object", "location": "body", "description": "要更新的项目数据" }
      ],
      "response": "JSON",
      "success_field": "success",
      "data_field": "data",
      "error_field": "error"
    }
  }
}

基本使用方法

  1. 启动服务: 在项目根目录运行以下命令启动后端服务:
    pnpm dev:serv
    服务将默认运行在 'http://localhost:4000'。
  2. 通过API调用功能:
    • 生成剧本: 向 'http://localhost:4000/api/game/generate-by-agents' 发送POST请求,并在请求体中包含角色、世界观、场景和主题风格等JSON数据。此接口会通过SSE流式返回AI生成进度和最终结果。
    • 生成图片: 向 'http://localhost:4000/api/game/generate-image-stream' 发送POST请求,提供图片描述、类型和尺寸,将通过SSE流式返回生成状态和图片URL。
    • 自动补全表单: 向 'http://localhost:4000/api/game/autocomplete-form' 发送POST请求,提供表单类型和部分数据,AI将补全剩余字段并返回。
    • 快速设定: 向 'http://localhost:4000/api/game/quick-setup' 发送POST请求,提供一句话故事描述,AI将返回完整的项目设定。
  3. 连接前端: 默认情况下,前端应用('pnpm dev:web' 启动,运行在 'http://localhost:3000')将自动连接此后端服务,您可以通过前端界面进行可视化操作。

信息

分类

开发者工具