MPlus
AI驱动的自媒体选题和模拟预测智能体 / 基于 Ripple 预测引擎实现
Install / Use
/learn @xyskywalker/MPlusREADME
<!-- 目录 -->
功能特性
- 💡 头脑风暴: 基于 CAMEL ChatAgent 的实时 AI 对话,支持 WebSocket 流式输出、智能联网搜索、平台画像注入、选题就绪度评估
- 📋 选题管理: 从对话中智能提取结构化选题,支持多平台适配、选题编辑和导出
- 📊 模拟预测: 通过 Ripple CAS 社会行为预测引擎模拟内容传播效果,提供多维数据洞察与合议庭评审报告
- 👤 平台账号管理: 管理各平台自媒体账号信息,为模拟预测提供真实账号画像
- 🌐 平台画像系统: 内置 6 大主流平台的深度画像数据(算法机制、爆款特征、互动基准等),驱动 AI 生成平台化内容建议
- ⚙️ 模型配置: 支持多种 LLM 模型配置(OpenAI 兼容、Claude、Azure-OpenAI),支持默认模型和快速任务模型分离配置
快速开始
TUI 启动模式(推荐初学者)
只需三步,无需安装 Node.js,使用仓库内置已构建的前端。TUI 会自动完成 Python 依赖安装、数据库初始化并启动服务:
- 确保已安装 Python 3.11+
- 克隆仓库
- 启动 TUI
git clone <仓库地址>
cd MPlus-dev
python tui/main.py
# 或: poetry run mplus
在 TUI 菜单中选择「0. 一键初始化」即可。Windows / macOS / Linux 均可使用。
环境要求
- Python 3.11+(运行时必需)
- Node.js 16+(仅开发/重新构建前端时需要;TUI 模式使用内置已构建版本,无需 Node.js)
- Poetry(Python 依赖管理,推荐)或 pip
1. 安装依赖
后端依赖:
# 使用 Poetry(推荐)
poetry install
# 或在已激活的虚拟环境中使用 pip
pip install -e .
前端依赖:
cd frontend
npm install --legacy-peer-deps
2. 配置环境
cp .env.example .env
编辑 .env 设置服务地址和端口。LLM 模型的 API Key 等配置通过 Web 界面完成(启动后访问 设置 → 模型配置)。
3. 初始化数据库
python scripts/init_db.py
4. 启动开发服务
后端服务:
uvicorn backend.main:app --host 0.0.0.0 --port 8000 --reload
前端开发服务器(可选,开发调试用):
cd frontend
npm run dev
前端 Vite 开发服务器运行在 3000 端口,自动代理
/api和/ws请求到后端 8000 端口。
5. 访问应用
- Web 界面: http://localhost:3000(开发模式)或 http://localhost:8000(生产模式)
- API 文档: http://localhost:8000/docs
生产构建与部署
MPlus 采用前后端一体化部署方案:前端经 Vite 编译为纯静态文件(HTML/CSS/JS),由 FastAPI 直接服务。运行时仅需 Python 环境,无需 Node.js。
一键构建
项目提供了 scripts/build.sh 构建脚本,适配 macOS 和 Linux:
# 完整构建(安装依赖 + 编译前端 + 初始化数据库)
./scripts/build.sh
# 构建后清理 node_modules(节省磁盘空间,运行时不需要)
./scripts/build.sh --clean
# 构建完成后直接启动生产服务
./scripts/build.sh --start
# 加速重复构建(跳过依赖安装步骤)
./scripts/build.sh --skip-npm --skip-poetry
构建脚本功能:
| 步骤 | 说明 |
|------|------|
| 系统检测 | 自动识别 macOS / Linux,检查架构信息 |
| 依赖检查 | 验证 Node.js(>=16,仅构建时需要)、Python 3、Poetry |
| 环境配置 | 自动从 .env.example 创建 .env,生产环境默认关闭 DEBUG |
| Python 依赖 | 通过 poetry install 安装后端依赖 |
| 前端编译 | TypeScript 类型检查 + Vite 生产构建,输出到 backend/static/ |
| 数据库初始化 | 自动检测并在需要时初始化 SQLite 数据库 |
手动构建
如果不使用构建脚本,也可手动执行:
# 1. 编译前端
cd frontend
npm install --legacy-peer-deps
npm run build # 输出到 backend/static/
# 2. 回到项目根目录
cd ..
# 3. 初始化数据库(首次部署)
python scripts/init_db.py
启动生产服务
构建完成后,仅需 Python 环境即可运行:
# 方式一:直接启动(确保已激活 Python 虚拟环境)
uvicorn backend.main:app --host 0.0.0.0 --port 8000
# 方式二:通过 Poetry 启动
poetry run uvicorn backend.main:app --host 0.0.0.0 --port 8000
# 方式三:使用 TUI 管理界面
poetry run mplus
生产环境下访问 http://localhost:8000 即可使用完整应用,FastAPI 自动服务
backend/static/中的前端静态文件。
项目结构
MPlus-dev/
├── assets/ # 静态资源(主视觉图片等)
├── backend/ # 后端服务(FastAPI)
│ ├── api/ # API 路由模块
│ │ ├── accounts.py # 平台账号管理 API
│ │ ├── chat.py # WebSocket 实时对话 API
│ │ ├── sessions.py # 会话管理 API
│ │ ├── topics.py # 选题管理 API
│ │ ├── simulations.py # 模拟预测 API
│ │ └── platforms.py # 平台信息 API
│ ├── db/ # 数据库模块
│ │ ├── database.py # 异步引擎 / 会话工厂 / 初始化
│ │ └── crud.py # 所有 CRUD 操作
│ ├── models/ # SQLAlchemy ORM 数据模型
│ ├── prompts/ # AI 提示词模板
│ │ └── brainstorm_prompts.py # 头脑风暴提示词
│ ├── services/ # 业务服务层
│ │ ├── brainstorm.py # 头脑风暴核心服务(CAMEL ChatAgent)
│ │ ├── model_factory.py # CAMEL 模型工厂
│ │ ├── platform_loader.py # 平台画像加载器
│ │ ├── topic_extractor.py # 选题智能提取服务
│ │ ├── llm_service.py # 统一 LLM 接口
│ │ ├── simulation_service.py # 模拟任务管理服务
│ │ ├── ripple_adapter.py # Ripple CAS 引擎适配器
│ │ ├── report_service.py # 模拟报告生成服务
│ │ ├── web_search_service.py # 联网搜索服务
│ │ └── options_service.py # 应用选项服务
│ ├── tools/ # CAMEL Agent 工具
│ │ └── anspire_search.py # Anspire 搜索工具
│ ├── static/ # 前端构建产物(生产模式自动服务)
│ ├── config.py # Pydantic Settings 配置管理
│ ├── exceptions.py # MplusException 异常体系
│ └── main.py # FastAPI 应用入口
├── frontend/ # 前端应用(React 18 + TypeScript)
│ ├── src/
│ │ ├── components/ # 通用 UI 组件
│ │ │ ├── Layout.tsx # 全局布局(导航栏、侧边栏)
│ │ │ ├── MarkdownRenderer.tsx # Markdown 渲染
│ │ │ ├── SimulationResultModal.tsx # 模拟结果弹窗
│ │ │ ├── PlatformSelect.tsx # 平台选择器
│ │ │ ├── ModelSelect.tsx # 模型选择器
│ │ │ ├── PlatformIcons.tsx # 平台图标
│ │ │ ├── TagInput.tsx # 标签输入
│ │ │ ├── Modal.tsx # 模态框
│ │ │ ├── Toast.tsx # 消息提示
│ │ │ └── Loading.tsx # 加载状态
│ │ ├── hooks/ # 自定义 Hooks
│ │ │ └── useChat.ts # WebSocket 实时对话 Hook
│ │ ├── pages/ # 页面组件
│ │ │ ├── HomePage.tsx # 首页
│ │ │ ├── BrainstormPage.tsx # 头脑风暴
│ │ │ ├── TopicsPage.tsx # 选题管理
│ │ │ ├── SimulationPage.tsx # 模拟预测
│ │ │ ├── AccountsPage.tsx # 平台账号管理
│ │ │ └── SettingsPage.tsx # 系统设置
│ │ ├── services/ # API 服务
│ │ │ └── api.ts # Axios API 客户端
│ │ ├── stores/ # 状态管理
│ │ │ └── appStore.ts # Zustand 全局状态
│ │ ├── App.tsx # 根组件(路由配置)
│ │ └── main.tsx # 应用入口
│ ├── vite.config.ts # Vite 构建配置
│ ├── tsconfig.json # TypeScript 配置
│ ├── tailwind.config.js # Tailwind CSS 配置
│ └── package.json # 前端依赖
├── config/ # 运行时配置
│ └── app_options.yaml # UI 下拉选项配置
├── skills/ # Agent Skills(平台画像与模拟技能)
│ └── social-media/
│ ├── platforms/ # 6 大平台画像定义(Markdown)
│ ├── prompts/ # 模拟角色提示词
│ └── rubrics/ # 评估校准标准
├── scripts/ # 脚本工具
│ ├── build.sh # 生产环境构建脚本
│ ├── start.sh # 开发环境启动脚本
│ └── init_db.py # 数据库初始化脚本
├── tui/ # TUI 终端管理界面(Rich)
│ └── main.py # TUI 入口
├── data/ # 数据目录(SQLite 数据库、模拟结果)
├── pyproject.toml # Poetry 项目配置
└── .env.example # 环境变量模板
前端路由
| 路径 | 页面 |
|------|------|
| / | 首页 |
| /brainstorm | 头脑风暴(新建会话) |
| /brainstorm/:sessionId | 头脑风暴(继续会话) |
| /topics | 选题管理 |
| /simulation | 模拟预测 |
| /simulation/:topicId | 选题模拟 |
| /accounts | 平台账号管理 |
| /settings | 系统设置 |
核心架构
头脑风暴 AI 对话流程
用户输入 → WebSocket → BrainstormService
│
┌────────┼────────┐
│ │ │
搜索意图分析 记忆加载 平台画像注入
│ │ │
└────────┼────────┘
│
CAMEL ChatAgent
(流式响应)
│
┌────────┼────────┐
│ │ │
选题就绪度 自动标题 阶段提醒
评估 生成 注入
│ │ │
└────────┼────────┘
│
选题智能提取
(TopicExtractor)
核心能力:
- CAMEL ChatAgent: 基于 CAMEL-AI 框架的有状态对话智能体,支持多轮交互和上下文记忆
- 智能搜索: LLM 判断搜索意图 → Anspire API 联网搜索 → LLM 筛选相关结果 → 注入对话上下文
- 平台画像驱动: 根据用户选择的目标平台,自动加载平台画像(算法机制、爆款特征、用户偏好等)注入提示词
- 选题提取: 对话达到一定深度后,使用独立模型调用从对话中提取结构化选题信息
- 阶段提醒: 根据对话轮次动态注入引导策略,推动对话从发散走向收敛
模拟预测流程
选题输入 → SimulationService → RippleAdapter → Ripple CAS 引擎
│
┌────────────────┼────────────────┐
│ │ │
Star Agents Sea Agents Omniscient
(意见领袖) (普通用户) (全视者裁决)
│ │ │
└────────────────┼────────────────┘
│
Deliberation
(合议庭评审)
│
ReportService
(解读报告生成)
技术栈
| 层级 | 技术 | |------|------| | 后端 | Python 3.11+, FastAPI, async SQLAlchemy, aiosqlite, Pydantic, WebSocket | | 前端 | React 18, TypeScript, Vite, Tailwind CSS, Zustand, Recharts, react-markdown | | 数据库 | SQL
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
