240 lines
11 KiB
Markdown
240 lines
11 KiB
Markdown
<div align="center">
|
|
|
|
<img src="./static/image/MiroFish_logo_compressed.jpeg" alt="MiroFish Logo" width="75%"/>
|
|
|
|
<a href="https://trendshift.io/repositories/16144" target="_blank"><img src="https://trendshift.io/api/badge/repositories/16144" alt="666ghj%2FMiroFish | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
|
|
|
简洁通用的群体智能引擎,预测万物
|
|
</br>
|
|
<em>A Simple and Universal Swarm Intelligence Engine, Predicting Anything</em>
|
|
|
|
<a href="https://www.shanda.com/" target="_blank"><img src="./static/image/shanda_logo.png" alt="666ghj%2FMiroFish | Shanda" height="40"/></a>
|
|
|
|
[](https://github.com/666ghj/MiroFish/stargazers)
|
|
[](https://github.com/666ghj/MiroFish/watchers)
|
|
[](https://github.com/666ghj/MiroFish/network)
|
|
[](https://hub.docker.com/)
|
|
[](https://deepwiki.com/666ghj/MiroFish)
|
|
|
|
[](http://discord.gg/ePf5aPaHnA)
|
|
[](https://x.com/mirofish_ai)
|
|
[](https://www.instagram.com/mirofish_ai/)
|
|
|
|
[English](./README.md) | [中文文档](./README-ZH.md)
|
|
|
|
</div>
|
|
|
|
## ⚡ Overview
|
|
|
|
**MiroFish** is a next-generation AI prediction engine powered by multi-agent technology. By extracting seed information from the real world (such as breaking news, policy drafts, or financial signals), it automatically constructs a high-fidelity parallel digital world. Within this space, thousands of intelligent agents with independent personalities, long-term memory, and behavioral logic freely interact and undergo social evolution. You can inject variables dynamically from a "God's-eye view" to precisely deduce future trajectories — **rehearse the future in a digital sandbox, and win decisions after countless simulations**.
|
|
|
|
> You only need to: Upload seed materials (data analysis reports or interesting novel stories) and describe your prediction requirements in natural language</br>
|
|
> MiroFish will return: A detailed prediction report and a deeply interactive high-fidelity digital world
|
|
|
|
### Our Vision
|
|
|
|
MiroFish is dedicated to creating a swarm intelligence mirror that maps reality. By capturing the collective emergence triggered by individual interactions, we break through the limitations of traditional prediction:
|
|
|
|
- **At the Macro Level**: We are a rehearsal laboratory for decision-makers, allowing policies and public relations to be tested at zero risk
|
|
- **At the Micro Level**: We are a creative sandbox for individual users — whether deducing novel endings or exploring imaginative scenarios, everything can be fun, playful, and accessible
|
|
|
|
From serious predictions to playful simulations, we let every "what if" see its outcome, making it possible to predict anything.
|
|
|
|
## 🌐 Live Demo
|
|
|
|
Welcome to visit our online demo environment and experience a prediction simulation on trending public opinion events we've prepared for you: [mirofish-live-demo](https://666ghj.github.io/mirofish-demo/)
|
|
|
|
## 📸 Screenshots
|
|
|
|
<div align="center">
|
|
<table>
|
|
<tr>
|
|
<td><img src="./static/image/Screenshot/运行截图1.png" alt="Screenshot 1" width="100%"/></td>
|
|
<td><img src="./static/image/Screenshot/运行截图2.png" alt="Screenshot 2" width="100%"/></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img src="./static/image/Screenshot/运行截图3.png" alt="Screenshot 3" width="100%"/></td>
|
|
<td><img src="./static/image/Screenshot/运行截图4.png" alt="Screenshot 4" width="100%"/></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img src="./static/image/Screenshot/运行截图5.png" alt="Screenshot 5" width="100%"/></td>
|
|
<td><img src="./static/image/Screenshot/运行截图6.png" alt="Screenshot 6" width="100%"/></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
## 🎬 Demo Videos
|
|
|
|
### 1. Wuhan University Public Opinion Simulation + MiroFish Project Introduction
|
|
|
|
<div align="center">
|
|
<a href="https://www.bilibili.com/video/BV1VYBsBHEMY/" target="_blank"><img src="./static/image/武大模拟演示封面.png" alt="MiroFish Demo Video" width="75%"/></a>
|
|
|
|
Click the image to watch the complete demo video for prediction using BettaFish-generated "Wuhan University Public Opinion Report"
|
|
</div>
|
|
|
|
### 2. Dream of the Red Chamber Lost Ending Simulation
|
|
|
|
<div align="center">
|
|
<a href="https://www.bilibili.com/video/BV1cPk3BBExq" target="_blank"><img src="./static/image/红楼梦模拟推演封面.jpg" alt="MiroFish Demo Video" width="75%"/></a>
|
|
|
|
Click the image to watch MiroFish's deep prediction of the lost ending based on hundreds of thousands of words from the first 80 chapters of "Dream of the Red Chamber"
|
|
</div>
|
|
|
|
> **Financial Prediction**, **Political News Prediction** and more examples coming soon...
|
|
|
|
## 🔄 Workflow
|
|
|
|
1. **Graph Building**: Seed extraction & Individual/collective memory injection & GraphRAG construction
|
|
2. **Environment Setup**: Entity relationship extraction & Persona generation & Agent configuration injection
|
|
3. **Simulation**: Dual-platform parallel simulation & Auto-parse prediction requirements & Dynamic temporal memory updates
|
|
4. **Report Generation**: ReportAgent with rich toolset for deep interaction with post-simulation environment
|
|
5. **Deep Interaction**: Chat with any agent in the simulated world & Interact with ReportAgent
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Option 1: Source Code Deployment (Recommended)
|
|
|
|
#### Prerequisites
|
|
|
|
| Tool | Version | Description | Check Installation |
|
|
|------|---------|-------------|-------------------|
|
|
| **Node.js** | 18+ | Frontend runtime, includes npm | `node -v` |
|
|
| **Python** | ≥3.11, ≤3.12 | Backend runtime | `python --version` |
|
|
| **uv** | Latest | Python package manager | `uv --version` |
|
|
|
|
#### 1. Configure Environment Variables
|
|
|
|
```bash
|
|
# Copy the example configuration file
|
|
cp .env.example .env
|
|
|
|
# Edit the .env file and fill in the required API keys
|
|
```
|
|
|
|
**Required Environment Variables:**
|
|
|
|
```env
|
|
# LLM API Configuration (supports any LLM API with OpenAI SDK format)
|
|
# Recommended: Alibaba Qwen-plus model via Bailian Platform: https://bailian.console.aliyun.com/
|
|
# High consumption, try simulations with fewer than 40 rounds first
|
|
LLM_API_KEY=your_api_key
|
|
LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
LLM_MODEL_NAME=qwen-plus
|
|
|
|
# Zep Cloud Configuration
|
|
# Free monthly quota is sufficient for simple usage: https://app.getzep.com/
|
|
ZEP_API_KEY=your_zep_api_key
|
|
```
|
|
|
|
#### Security configuration (required for production)
|
|
|
|
The backend ships secure-by-default. When `FLASK_DEBUG=false` (the default) the app
|
|
runs under **gunicorn** (no Werkzeug debugger) and refuses to start unless these are set:
|
|
|
|
```env
|
|
# A random secret (required when FLASK_DEBUG=false):
|
|
# python -c "import secrets;print(secrets.token_hex(32))"
|
|
SECRET_KEY=your_random_secret
|
|
|
|
# API-key auth is ON by default — every /api/* request must carry the key.
|
|
# Clients send X-API-Key: <API_KEY> (or Authorization: Bearer <API_KEY> ).
|
|
AUTH_ENABLED=true
|
|
API_KEY=your_strong_api_key
|
|
```
|
|
|
|
- The bundled web UI reads the key from the **build-time** var **`VITE_API_KEY`** (set it equal to
|
|
`API_KEY`) and sends it automatically as `X-API-Key`. It must be present **before** the frontend
|
|
is built:
|
|
- **Docker:** put `VITE_API_KEY` in the root `.env`; `docker compose up --build` injects it as a
|
|
build-arg (docker-compose.yml `build.args` → Dockerfile `ARG VITE_API_KEY` → `npm run build`).
|
|
The pre-built `ghcr.io` image (used by a bare `docker compose up` without `--build`) bakes no
|
|
custom key — rebuild, or use `AUTH_ENABLED=false` for that path.
|
|
- **Local frontend build:** copy `frontend/.env.example` → `frontend/.env` and set `VITE_API_KEY`,
|
|
then `npm run build`. (The root `.env` is read by the backend only, not by Vite.)
|
|
- ⚠️ A key baked into the client bundle is extractable by anyone who loads the page — for
|
|
multi-tenant/public exposure replace this with session login or a gateway that injects per-user
|
|
tokens. For local/internal/VPN or behind-a-gateway single-host use it is sufficient.
|
|
- Local development / simplest single-host demo: set `AUTH_ENABLED=false` to disable the key
|
|
requirement entirely (the API is then protected only by your network boundary).
|
|
- Cost controls (denial-of-wallet): a run is bounded by `OASIS_DEFAULT_MAX_ROUNDS` (when the
|
|
client omits `max_rounds`), the hard ceilings `OASIS_MAX_ROUNDS_CAP` / `OASIS_MAX_AGENTS_CAP`,
|
|
and per-round / total timeouts `OASIS_ROUND_TIMEOUT_SEC` / `OASIS_RUN_TIMEOUT_SEC`. See
|
|
`.env.example` for defaults.
|
|
- Run the production server with a **single worker** (`gunicorn -w 1 --threads N`); simulation
|
|
run-state is held in-process, so multiple workers break stop/status routing.
|
|
|
|
#### 2. Install Dependencies
|
|
|
|
```bash
|
|
# One-click installation of all dependencies (root + frontend + backend)
|
|
npm run setup:all
|
|
```
|
|
|
|
Or install step by step:
|
|
|
|
```bash
|
|
# Install Node dependencies (root + frontend)
|
|
npm run setup
|
|
|
|
# Install Python dependencies (backend, auto-creates virtual environment)
|
|
npm run setup:backend
|
|
```
|
|
|
|
#### 3. Start Services
|
|
|
|
```bash
|
|
# Start both frontend and backend (run from project root)
|
|
npm run dev
|
|
```
|
|
|
|
**Service URLs:**
|
|
- Frontend: `http://localhost:3000`
|
|
- Backend API: `http://localhost:5001`
|
|
|
|
**Start Individually:**
|
|
|
|
```bash
|
|
npm run backend # Start backend only
|
|
npm run frontend # Start frontend only
|
|
```
|
|
|
|
### Option 2: Docker Deployment
|
|
|
|
```bash
|
|
# 1. Configure environment variables (same as source deployment)
|
|
cp .env.example .env
|
|
|
|
# 2. Pull image and start
|
|
docker compose up -d
|
|
```
|
|
|
|
Reads `.env` from root directory by default, maps ports `3000 (frontend) / 5001 (backend)`
|
|
|
|
> Mirror address for faster pulling is provided as comments in `docker-compose.yml`, replace if needed.
|
|
|
|
## 📬 Join the Conversation
|
|
|
|
<div align="center">
|
|
<img src="./static/image/QQ群.png" alt="QQ Group" width="60%"/>
|
|
</div>
|
|
|
|
|
|
|
|
The MiroFish team is recruiting full-time/internship positions. If you're interested in multi-agent simulation and LLM applications, feel free to send your resume to: **mirofish@shanda.com**
|
|
|
|
## 📄 Acknowledgments
|
|
|
|
**MiroFish has received strategic support and incubation from Shanda Group!**
|
|
|
|
MiroFish's simulation engine is powered by **[OASIS (Open Agent Social Interaction Simulations)](https://github.com/camel-ai/oasis)**, We sincerely thank the CAMEL-AI team for their open-source contributions!
|
|
|
|
## 📈 Project Statistics
|
|
|
|
<a href="https://www.star-history.com/#666ghj/MiroFish&type=date&legend=top-left">
|
|
<picture>
|
|
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=666ghj/MiroFish&type=date&theme=dark&legend=top-left" />
|
|
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=666ghj/MiroFish&type=date&legend=top-left" />
|
|
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=666ghj/MiroFish&type=date&legend=top-left" />
|
|
</picture>
|
|
</a> |