Phase 1+2: Rename CrowdSight + fix Thai vocabulary

Phase 1: Rename MiroFish → CrowdSight across all files
- 39 files, 114+ occurrences replaced
- Frontend, backend, locales, config, README, docker-compose

Phase 2: Fix difficult Thai vocabulary
- เมล็ดพันธุ์แห่งความจริง → ข้อมูลตั้งต้น
- สกัดเอนทิตี → ดึงตัวละคร
- ฉีดความจำ → เพิ่มความจำ
- ออนโทโลยี → โครงสร้างข้อมูล
- เอนทิตี → ตัวละคร
- พลวัตกลุ่ม → พฤติกรรมกลุ่ม
- โลกคู่ขนาน → โลกจำลอง

Only string changes, no logic changes.
This commit is contained in:
Kunthawat Greethong
2026-06-26 10:27:48 +07:00
parent 0e263f0490
commit 596a75c229
39 changed files with 166 additions and 166 deletions

View File

@@ -1,5 +1,5 @@
# ================================================================
# MiroFish 环境变量配置
# CrowdSight 环境变量配置
# ================================================================
# 复制此文件为 .env 并填入你的 API 密钥:
# cp .env.example .env

View File

@@ -33,7 +33,7 @@ jobs:
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository_owner }}/mirofish
images: ghcr.io/${{ github.repository_owner }}/crowdsight
tags: |
type=ref,event=tag
type=sha

View File

@@ -1,24 +1,24 @@
<div align="center">
<img src="./static/image/MiroFish_logo_compressed.jpeg" alt="MiroFish Logo" width="75%"/>
<img src="./static/image/CrowdSight_logo_compressed.jpeg" alt="CrowdSight 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>
<a href="https://trendshift.io/repositories/16144" target="_blank"><img src="https://trendshift.io/api/badge/repositories/16144" alt="666ghj%2FCrowdSight | 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>
<a href="https://www.shanda.com/" target="_blank"><img src="./static/image/shanda_logo.png" alt="666ghj%2FCrowdSight | Shanda" height="40"/></a>
[![GitHub Stars](https://img.shields.io/github/stars/666ghj/MiroFish?style=flat-square&color=DAA520)](https://github.com/666ghj/MiroFish/stargazers)
[![GitHub Watchers](https://img.shields.io/github/watchers/666ghj/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/watchers)
[![GitHub Forks](https://img.shields.io/github/forks/666ghj/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/network)
[![GitHub Stars](https://img.shields.io/github/stars/666ghj/CrowdSight?style=flat-square&color=DAA520)](https://github.com/666ghj/CrowdSight/stargazers)
[![GitHub Watchers](https://img.shields.io/github/watchers/666ghj/CrowdSight?style=flat-square)](https://github.com/666ghj/CrowdSight/watchers)
[![GitHub Forks](https://img.shields.io/github/forks/666ghj/CrowdSight?style=flat-square)](https://github.com/666ghj/CrowdSight/network)
[![Docker](https://img.shields.io/badge/Docker-Build-2496ED?style=flat-square&logo=docker&logoColor=white)](https://hub.docker.com/)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/666ghj/MiroFish)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/666ghj/CrowdSight)
[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=flat-square&logo=discord&logoColor=white)](http://discord.gg/ePf5aPaHnA)
[![X](https://img.shields.io/badge/X-Follow-000000?style=flat-square&logo=x&logoColor=white)](https://x.com/mirofish_ai)
[![Instagram](https://img.shields.io/badge/Instagram-Follow-E4405F?style=flat-square&logo=instagram&logoColor=white)](https://www.instagram.com/mirofish_ai/)
[![X](https://img.shields.io/badge/X-Follow-000000?style=flat-square&logo=x&logoColor=white)](https://x.com/crowdsight_ai)
[![Instagram](https://img.shields.io/badge/Instagram-Follow-E4405F?style=flat-square&logo=instagram&logoColor=white)](https://www.instagram.com/crowdsight_ai/)
[English](./README.md) | [中文文档](./README-ZH.md)
@@ -26,14 +26,14 @@
## ⚡ 项目概述
**MiroFish** 是一款基于多智能体技术的新一代 AI 预测引擎。通过提取现实世界的种子信息(如突发新闻、政策草案、金融信号),自动构建出高保真的平行数字世界。在此空间内,成千上万个具备独立人格、长期记忆与行为逻辑的智能体进行自由交互与社会演化。你可透过「上帝视角」动态注入变量,精准推演未来走向——**让未来在数字沙盘中预演,助决策在百战模拟后胜出**。
**CrowdSight** 是一款基于多智能体技术的新一代 AI 预测引擎。通过提取现实世界的种子信息(如突发新闻、政策草案、金融信号),自动构建出高保真的平行数字世界。在此空间内,成千上万个具备独立人格、长期记忆与行为逻辑的智能体进行自由交互与社会演化。你可透过「上帝视角」动态注入变量,精准推演未来走向——**让未来在数字沙盘中预演,助决策在百战模拟后胜出**。
> 你只需:上传种子材料(数据分析报告或者有趣的小说故事),并用自然语言描述预测需求</br>
> MiroFish 将返回:一份详尽的预测报告,以及一个可深度交互的高保真数字世界
> CrowdSight 将返回:一份详尽的预测报告,以及一个可深度交互的高保真数字世界
### 我们的愿景
MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体互动引发的群体涌现,突破传统预测的局限:
CrowdSight 致力于打造映射现实的群体智能镜像,通过捕捉个体互动引发的群体涌现,突破传统预测的局限:
- **于宏观**:我们是决策者的预演实验室,让政策与公关在零风险中试错
- **于微观**:我们是个人用户的创意沙盘,无论是推演小说结局还是探索脑洞,皆可有趣、好玩、触手可及
@@ -42,7 +42,7 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体
## 🌐 在线体验
欢迎访问在线 Demo 演示环境,体验我们为你准备的一次关于热点舆情事件的推演预测:[mirofish-live-demo](https://666ghj.github.io/mirofish-demo/)
欢迎访问在线 Demo 演示环境,体验我们为你准备的一次关于热点舆情事件的推演预测:[crowdsight-live-demo](https://666ghj.github.io/crowdsight-demo/)
## 📸 系统截图
@@ -65,10 +65,10 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体
## 🎬 演示视频
### 1. 武汉大学舆情推演预测 + MiroFish项目讲解
### 1. 武汉大学舆情推演预测 + CrowdSight项目讲解
<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>
<a href="https://www.bilibili.com/video/BV1VYBsBHEMY/" target="_blank"><img src="./static/image/武大模拟演示封面.png" alt="CrowdSight Demo Video" width="75%"/></a>
点击图片查看使用微舆BettaFish生成的《武大舆情报告》进行预测的完整演示视频
</div>
@@ -76,9 +76,9 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体
### 2. 《红楼梦》失传结局推演预测
<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>
<a href="https://www.bilibili.com/video/BV1cPk3BBExq" target="_blank"><img src="./static/image/红楼梦模拟推演封面.jpg" alt="CrowdSight Demo Video" width="75%"/></a>
点击图片查看基于《红楼梦》前80回数十万字MiroFish深度预测失传结局
点击图片查看基于《红楼梦》前80回数十万字CrowdSight深度预测失传结局
</div>
> **金融方向推演预测**、**时政要闻推演预测**等示例陆续更新中...
@@ -215,20 +215,20 @@ docker compose up -d
&nbsp;
MiroFish团队长期招募全职/实习如果你对多Agent应用感兴趣欢迎投递简历至**mirofish@shanda.com**
CrowdSight团队长期招募全职/实习如果你对多Agent应用感兴趣欢迎投递简历至**crowdsight@shanda.com**
## 📄 致谢
**MiroFish 得到了盛大集团的战略支持和孵化!**
**CrowdSight 得到了盛大集团的战略支持和孵化!**
MiroFish 的仿真引擎由 **[OASIS](https://github.com/camel-ai/oasis)** 驱动,我们衷心感谢 CAMEL-AI 团队的开源贡献!
CrowdSight 的仿真引擎由 **[OASIS](https://github.com/camel-ai/oasis)** 驱动,我们衷心感谢 CAMEL-AI 团队的开源贡献!
## 📈 项目统计
<a href="https://www.star-history.com/#666ghj/MiroFish&type=date&legend=top-left">
<a href="https://www.star-history.com/#666ghj/CrowdSight&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" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=666ghj/CrowdSight&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=666ghj/CrowdSight&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=666ghj/CrowdSight&type=date&legend=top-left" />
</picture>
</a>

View File

@@ -1,24 +1,24 @@
<div align="center">
<img src="./static/image/MiroFish_logo_compressed.jpeg" alt="MiroFish Logo" width="75%"/>
<img src="./static/image/CrowdSight_logo_compressed.jpeg" alt="CrowdSight 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>
<a href="https://trendshift.io/repositories/16144" target="_blank"><img src="https://trendshift.io/api/badge/repositories/16144" alt="666ghj%2FCrowdSight | 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>
<a href="https://www.shanda.com/" target="_blank"><img src="./static/image/shanda_logo.png" alt="666ghj%2FCrowdSight | Shanda" height="40"/></a>
[![GitHub Stars](https://img.shields.io/github/stars/666ghj/MiroFish?style=flat-square&color=DAA520)](https://github.com/666ghj/MiroFish/stargazers)
[![GitHub Watchers](https://img.shields.io/github/watchers/666ghj/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/watchers)
[![GitHub Forks](https://img.shields.io/github/forks/666ghj/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/network)
[![GitHub Stars](https://img.shields.io/github/stars/666ghj/CrowdSight?style=flat-square&color=DAA520)](https://github.com/666ghj/CrowdSight/stargazers)
[![GitHub Watchers](https://img.shields.io/github/watchers/666ghj/CrowdSight?style=flat-square)](https://github.com/666ghj/CrowdSight/watchers)
[![GitHub Forks](https://img.shields.io/github/forks/666ghj/CrowdSight?style=flat-square)](https://github.com/666ghj/CrowdSight/network)
[![Docker](https://img.shields.io/badge/Docker-Build-2496ED?style=flat-square&logo=docker&logoColor=white)](https://hub.docker.com/)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/666ghj/MiroFish)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/666ghj/CrowdSight)
[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=flat-square&logo=discord&logoColor=white)](http://discord.gg/ePf5aPaHnA)
[![X](https://img.shields.io/badge/X-Follow-000000?style=flat-square&logo=x&logoColor=white)](https://x.com/mirofish_ai)
[![Instagram](https://img.shields.io/badge/Instagram-Follow-E4405F?style=flat-square&logo=instagram&logoColor=white)](https://www.instagram.com/mirofish_ai/)
[![X](https://img.shields.io/badge/X-Follow-000000?style=flat-square&logo=x&logoColor=white)](https://x.com/crowdsight_ai)
[![Instagram](https://img.shields.io/badge/Instagram-Follow-E4405F?style=flat-square&logo=instagram&logoColor=white)](https://www.instagram.com/crowdsight_ai/)
[English](./README.md) | [中文文档](./README-ZH.md)
@@ -26,14 +26,14 @@
## ⚡ 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**.
**CrowdSight** 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
> CrowdSight 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:
CrowdSight 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
@@ -42,7 +42,7 @@ From serious predictions to playful simulations, we let every "what if" see its
## 🌐 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/)
Welcome to visit our online demo environment and experience a prediction simulation on trending public opinion events we've prepared for you: [crowdsight-live-demo](https://666ghj.github.io/crowdsight-demo/)
## 📸 Screenshots
@@ -65,10 +65,10 @@ Welcome to visit our online demo environment and experience a prediction simulat
## 🎬 Demo Videos
### 1. Wuhan University Public Opinion Simulation + MiroFish Project Introduction
### 1. Wuhan University Public Opinion Simulation + CrowdSight 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>
<a href="https://www.bilibili.com/video/BV1VYBsBHEMY/" target="_blank"><img src="./static/image/武大模拟演示封面.png" alt="CrowdSight 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>
@@ -76,9 +76,9 @@ Click the image to watch the complete demo video for prediction using BettaFish-
### 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>
<a href="https://www.bilibili.com/video/BV1cPk3BBExq" target="_blank"><img src="./static/image/红楼梦模拟推演封面.jpg" alt="CrowdSight 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"
Click the image to watch CrowdSight'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...
@@ -215,20 +215,20 @@ Reads `.env` from root directory by default, maps ports `3000 (frontend) / 5001
&nbsp;
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**
The CrowdSight 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: **crowdsight@shanda.com**
## 📄 Acknowledgments
**MiroFish has received strategic support and incubation from Shanda Group!**
**CrowdSight 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!
CrowdSight'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">
<a href="https://www.star-history.com/#666ghj/CrowdSight&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" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=666ghj/CrowdSight&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=666ghj/CrowdSight&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=666ghj/CrowdSight&type=date&legend=top-left" />
</picture>
</a>

View File

@@ -1,5 +1,5 @@
"""
MiroFish Backend - Flask应用工厂
CrowdSight Backend - Flask应用工厂
"""
import os
@@ -27,7 +27,7 @@ def create_app(config_class=Config):
app.json.ensure_ascii = False
# 设置日志
logger = setup_logger('mirofish')
logger = setup_logger('crowdsight')
# 只在 reloader 子进程中打印启动信息(避免 debug 模式下打印两次)
is_reloader_process = os.environ.get('WERKZEUG_RUN_MAIN') == 'true'
@@ -36,7 +36,7 @@ def create_app(config_class=Config):
if should_log_startup:
logger.info("=" * 50)
logger.info("MiroFish Backend 启动中...")
logger.info("CrowdSight Backend 启动中...")
logger.info("=" * 50)
# 启用CORS
@@ -51,14 +51,14 @@ def create_app(config_class=Config):
# 请求日志中间件
@app.before_request
def log_request():
logger = get_logger('mirofish.request')
logger = get_logger('crowdsight.request')
logger.debug(f"请求: {request.method} {request.path}")
if request.content_type and 'json' in request.content_type:
logger.debug(f"请求体: {request.get_json(silent=True)}")
@app.after_request
def log_response(response):
logger = get_logger('mirofish.request')
logger = get_logger('crowdsight.request')
logger.debug(f"响应: {response.status_code}")
return response
@@ -71,10 +71,10 @@ def create_app(config_class=Config):
# 健康检查
@app.route('/health')
def health():
return {'status': 'ok', 'service': 'MiroFish Backend'}
return {'status': 'ok', 'service': 'CrowdSight Backend'}
if should_log_startup:
logger.info("MiroFish Backend 启动完成")
logger.info("CrowdSight Backend 启动完成")
return app

View File

@@ -20,7 +20,7 @@ from ..models.task import TaskManager, TaskStatus
from ..models.project import ProjectManager, ProjectStatus
# 获取日志器
logger = get_logger('mirofish.api')
logger = get_logger('crowdsight.api')
def allowed_file(filename: str) -> bool:
@@ -337,7 +337,7 @@ def build_graph():
project.error = None
# 获取配置
graph_name = data.get('graph_name', project.name or 'MiroFish Graph')
graph_name = data.get('graph_name', project.name or 'CrowdSight Graph')
chunk_size = data.get('chunk_size', project.chunk_size or Config.DEFAULT_CHUNK_SIZE)
chunk_overlap = data.get('chunk_overlap', project.chunk_overlap or Config.DEFAULT_CHUNK_OVERLAP)
@@ -377,7 +377,7 @@ def build_graph():
# 启动后台任务
def build_task():
set_locale(current_locale)
build_logger = get_logger('mirofish.build')
build_logger = get_logger('crowdsight.build')
try:
build_logger.info(f"[{task_id}] 开始构建图谱...")
task_manager.update_task(

View File

@@ -17,7 +17,7 @@ from ..models.task import TaskManager, TaskStatus
from ..utils.logger import get_logger
from ..utils.locale import t, get_locale, set_locale
logger = get_logger('mirofish.api.report')
logger = get_logger('crowdsight.api.report')
# ============== 报告生成接口 ==============
@@ -939,7 +939,7 @@ def search_graph_tool():
请求JSON
{
"graph_id": "mirofish_xxxx",
"graph_id": "crowdsight_xxxx",
"query": "搜索查询",
"limit": 10
}
@@ -987,7 +987,7 @@ def get_graph_statistics_tool():
请求JSON
{
"graph_id": "mirofish_xxxx"
"graph_id": "crowdsight_xxxx"
}
"""
try:

View File

@@ -17,7 +17,7 @@ from ..utils.logger import get_logger
from ..utils.locale import t, get_locale, set_locale
from ..models.project import ProjectManager
logger = get_logger('mirofish.api.simulation')
logger = get_logger('crowdsight.api.simulation')
# Interview prompt 优化前缀
@@ -172,7 +172,7 @@ def create_simulation():
请求JSON
{
"project_id": "proj_xxxx", // 必填
"graph_id": "mirofish_xxxx", // 可选如不提供则从project获取
"graph_id": "crowdsight_xxxx", // 可选如不提供则从project获取
"enable_twitter": true, // 可选默认true
"enable_reddit": true // 可选默认true
}
@@ -183,7 +183,7 @@ def create_simulation():
"data": {
"simulation_id": "sim_xxxx",
"project_id": "proj_xxxx",
"graph_id": "mirofish_xxxx",
"graph_id": "crowdsight_xxxx",
"status": "created",
"enable_twitter": true,
"enable_reddit": true,
@@ -1381,7 +1381,7 @@ def generate_profiles():
请求JSON
{
"graph_id": "mirofish_xxxx", // 必填
"graph_id": "crowdsight_xxxx", // 必填
"entity_types": ["Student"], // 可选
"use_llm": true, // 可选
"platform": "reddit" // 可选

View File

@@ -7,7 +7,7 @@ import os
from dotenv import load_dotenv
# 加载项目根目录的 .env 文件
# 路径: MiroFish/.env (相对于 backend/app/config.py)
# 路径: CrowdSight/.env (相对于 backend/app/config.py)
project_root_env = os.path.join(os.path.dirname(__file__), '../../.env')
if os.path.exists(project_root_env):
@@ -62,7 +62,7 @@ class Config:
"""Flask配置类"""
# Flask配置
SECRET_KEY = os.environ.get('SECRET_KEY', 'mirofish-secret-key')
SECRET_KEY = os.environ.get('SECRET_KEY', 'crowdsight-secret-key')
DEBUG = os.environ.get('FLASK_DEBUG', 'True').lower() == 'true'
# JSON配置 - 禁用ASCII转义让中文直接显示而不是 \uXXXX 格式)

View File

@@ -55,7 +55,7 @@ class GraphBuilderService:
self,
text: str,
ontology: Dict[str, Any],
graph_name: str = "MiroFish Graph",
graph_name: str = "CrowdSight Graph",
chunk_size: int = 500,
chunk_overlap: int = 50,
batch_size: int = 3
@@ -192,12 +192,12 @@ class GraphBuilderService:
def create_graph(self, name: str) -> str:
"""创建Zep图谱公开方法"""
graph_id = f"mirofish_{uuid.uuid4().hex[:16]}"
graph_id = f"crowdsight_{uuid.uuid4().hex[:16]}"
self.client.graph.create(
graph_id=graph_id,
name=name,
description="MiroFish Social Simulation Graph"
description="CrowdSight Social Simulation Graph"
)
return graph_id

View File

@@ -23,7 +23,7 @@ from ..utils.logger import get_logger
from ..utils.locale import get_language_instruction, get_locale, set_locale, t
from .zep_entity_reader import EntityNode, ZepEntityReader
logger = get_logger('mirofish.oasis_profile')
logger = get_logger('crowdsight.oasis_profile')
@dataclass

View File

@@ -410,7 +410,7 @@ class OntologyGenerator:
code_lines = [
'"""',
'自定义实体类型定义',
'由MiroFish自动生成,用于社会舆论模拟',
'Auto-generated by CrowdSight,用于社会舆论模拟',
'"""',
'',
'from pydantic import Field',

View File

@@ -30,7 +30,7 @@ from .zep_tools import (
InterviewResult
)
logger = get_logger('mirofish.report_agent')
logger = get_logger('crowdsight.report_agent')
class ReportLogger:
@@ -353,8 +353,8 @@ class ReportConsoleLogger:
# 添加到 report_agent 相关的 logger
loggers_to_attach = [
'mirofish.report_agent',
'mirofish.zep_tools',
'crowdsight.report_agent',
'crowdsight.zep_tools',
]
for logger_name in loggers_to_attach:
@@ -369,8 +369,8 @@ class ReportConsoleLogger:
if self._file_handler:
loggers_to_detach = [
'mirofish.report_agent',
'mirofish.zep_tools',
'crowdsight.report_agent',
'crowdsight.zep_tools',
]
for logger_name in loggers_to_detach:

View File

@@ -23,7 +23,7 @@ from ..utils.logger import get_logger
from ..utils.locale import get_language_instruction, t
from .zep_entity_reader import EntityNode, ZepEntityReader
logger = get_logger('mirofish.simulation_config')
logger = get_logger('crowdsight.simulation_config')
# 中国作息时间配置(北京时间)
CHINA_TIMEZONE_CONFIG = {

View File

@@ -19,7 +19,7 @@ from enum import Enum
from ..utils.logger import get_logger
logger = get_logger('mirofish.simulation_ipc')
logger = get_logger('crowdsight.simulation_ipc')
class CommandType(str, Enum):

View File

@@ -19,7 +19,7 @@ from .oasis_profile_generator import OasisProfileGenerator, OasisAgentProfile
from .simulation_config_generator import SimulationConfigGenerator, SimulationParameters
from ..utils.locale import t
logger = get_logger('mirofish.simulation')
logger = get_logger('crowdsight.simulation')
class SimulationStatus(str, Enum):
@@ -520,7 +520,7 @@ class SimulationManager:
"parallel": f"python {scripts_dir}/run_parallel_simulation.py --config {config_path}",
},
"instructions": (
f"1. 激活conda环境: conda activate MiroFish\n"
f"1. 激活conda环境: conda activate CrowdSight\n"
f"2. 运行模拟 (脚本位于 {scripts_dir}):\n"
f" - 单独运行Twitter: python {scripts_dir}/run_twitter_simulation.py --config {config_path}\n"
f" - 单独运行Reddit: python {scripts_dir}/run_reddit_simulation.py --config {config_path}\n"

View File

@@ -24,7 +24,7 @@ from ..utils.locale import get_locale, set_locale
from .zep_graph_memory_updater import ZepGraphMemoryManager
from .simulation_ipc import SimulationIPCClient, CommandType, IPCResponse
logger = get_logger('mirofish.simulation_runner')
logger = get_logger('crowdsight.simulation_runner')
# 标记是否已注册清理函数
_cleanup_registered = False

View File

@@ -13,7 +13,7 @@ from ..config import Config
from ..utils.logger import get_logger
from ..utils.zep_paging import fetch_all_nodes, fetch_all_edges
logger = get_logger('mirofish.zep_entity_reader')
logger = get_logger('crowdsight.zep_entity_reader')
# 用于泛型返回类型
T = TypeVar('T')

View File

@@ -18,7 +18,7 @@ from ..config import Config
from ..utils.logger import get_logger
from ..utils.locale import get_locale, set_locale
logger = get_logger('mirofish.zep_graph_memory_updater')
logger = get_logger('crowdsight.zep_graph_memory_updater')
@dataclass

View File

@@ -21,7 +21,7 @@ from ..utils.llm_client import LLMClient
from ..utils.locale import get_locale, t
from ..utils.zep_paging import fetch_all_nodes, fetch_all_edges
logger = get_logger('mirofish.zep_tools')
logger = get_logger('crowdsight.zep_tools')
@dataclass

View File

@@ -27,7 +27,7 @@ def _ensure_utf8_stdout():
LOG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'logs')
def setup_logger(name: str = 'mirofish', level: int = logging.DEBUG) -> logging.Logger:
def setup_logger(name: str = 'crowdsight', level: int = logging.DEBUG) -> logging.Logger:
"""
设置日志器
@@ -88,7 +88,7 @@ def setup_logger(name: str = 'mirofish', level: int = logging.DEBUG) -> logging.
return logger
def get_logger(name: str = 'mirofish') -> logging.Logger:
def get_logger(name: str = 'crowdsight') -> logging.Logger:
"""
获取日志器(如果不存在则创建)

View File

@@ -9,7 +9,7 @@ import functools
from typing import Callable, Any, Optional, Type, Tuple
from ..utils.logger import get_logger
logger = get_logger('mirofish.retry')
logger = get_logger('crowdsight.retry')
def retry_with_backoff(

View File

@@ -15,7 +15,7 @@ from zep_cloud.client import Zep
from .logger import get_logger
logger = get_logger('mirofish.zep_paging')
logger = get_logger('crowdsight.zep_paging')
_DEFAULT_PAGE_SIZE = 100
_MAX_NODES = 2000

View File

@@ -1,11 +1,11 @@
[project]
name = "mirofish-backend"
name = "crowdsight-backend"
version = "0.1.0"
description = "MiroFish - 简洁通用的群体智能引擎,预测万物"
description = "CrowdSight - 简洁通用的群体智能引擎,预测万物"
requires-python = ">=3.11,<3.13"
license = { text = "AGPL-3.0" }
authors = [
{ name = "MiroFish Team" }
{ name = "CrowdSight Team" }
]
dependencies = [

View File

@@ -1,5 +1,5 @@
# ===========================================
# MiroFish Backend Dependencies
# CrowdSight Backend Dependencies
# ===========================================
# Python 3.11+ required
# Install: pip install -r requirements.txt

View File

@@ -1,5 +1,5 @@
"""
MiroFish Backend 启动入口
CrowdSight Backend 启动入口
"""
import os

View File

@@ -1,9 +1,9 @@
services:
mirofish:
image: ghcr.io/666ghj/mirofish:latest
crowdsight:
image: ghcr.io/666ghj/crowdsight:latest
# 加速镜像(如拉取缓慢可替换上方地址)
# image: ghcr.nju.edu.cn/666ghj/mirofish:latest
container_name: mirofish
# image: ghcr.nju.edu.cn/666ghj/crowdsight:latest
container_name: crowdsight
env_file:
- .env
ports:

View File

@@ -8,8 +8,8 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/png" href="/icon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="MiroFish - 社交媒体舆论模拟系统" />
<title>MiroFish - 预测万物</title>
<meta name="description" content="CrowdSight - 社交媒体舆论模拟系统" />
<title>CrowdSight - 预测万物</title>
</head>
<body>
<div id="app"></div>

View File

@@ -2,10 +2,10 @@
<div class="home-container">
<!-- 顶部导航栏 -->
<nav class="navbar">
<div class="nav-brand">MIROFISH</div>
<div class="nav-brand">CROWDSIGHT</div>
<div class="nav-links">
<LanguageSwitcher />
<a href="https://github.com/666ghj/MiroFish" target="_blank" class="github-link">
<a href="https://github.com/666ghj/CrowdSight" target="_blank" class="github-link">
{{ $t('nav.visitGithub') }} <span class="arrow"></span>
</a>
</div>
@@ -44,7 +44,7 @@
<div class="hero-right">
<!-- Logo 区域 -->
<div class="logo-container">
<img src="../assets/logo/MiroFish_logo_left.jpeg" alt="MiroFish Logo" class="hero-logo" />
<img src="../assets/logo/CrowdSight_logo_left.jpeg" alt="CrowdSight Logo" class="hero-logo" />
</div>
<button class="scroll-down-btn" @click="scrollToBottom">

View File

@@ -3,7 +3,7 @@
<!-- Header -->
<header class="app-header">
<div class="header-left">
<div class="brand" @click="router.push('/')">MIROFISH</div>
<div class="brand" @click="router.push('/')">CROWDSIGHT</div>
</div>
<div class="header-center">

View File

@@ -3,7 +3,7 @@
<!-- Header -->
<header class="app-header">
<div class="header-left">
<div class="brand" @click="router.push('/')">MIROFISH</div>
<div class="brand" @click="router.push('/')">CROWDSIGHT</div>
</div>
<div class="header-center">

View File

@@ -2,7 +2,7 @@
<div class="process-page">
<!-- 顶部导航栏 -->
<nav class="navbar">
<div class="nav-brand" @click="goHome">MIROFISH</div>
<div class="nav-brand" @click="goHome">CROWDSIGHT</div>
<!-- 中间步骤指示器 -->
<div class="nav-center">

View File

@@ -3,7 +3,7 @@
<!-- Header -->
<header class="app-header">
<div class="header-left">
<div class="brand" @click="router.push('/')">MIROFISH</div>
<div class="brand" @click="router.push('/')">CROWDSIGHT</div>
</div>
<div class="header-center">

View File

@@ -3,7 +3,7 @@
<!-- Header -->
<header class="app-header">
<div class="header-left">
<div class="brand" @click="router.push('/')">MIROFISH</div>
<div class="brand" @click="router.push('/')">CROWDSIGHT</div>
</div>
<div class="header-center">

View File

@@ -3,7 +3,7 @@
<!-- Header -->
<header class="app-header">
<div class="header-left">
<div class="brand" @click="router.push('/')">MIROFISH</div>
<div class="brand" @click="router.push('/')">CROWDSIGHT</div>
</div>
<div class="header-center">

View File

@@ -26,8 +26,8 @@
"files": "files"
},
"meta": {
"title": "MiroFish - Predict Everything",
"description": "MiroFish - Social Media Opinion Simulation System"
"title": "CrowdSight - Predict Everything",
"description": "CrowdSight - Social Media Opinion Simulation System"
},
"nav": {
"visitGithub": "Visit our Github page"
@@ -38,7 +38,7 @@
"heroTitle1": "Upload Reports,",
"heroTitle2": "Predict the Future",
"heroDesc": "From a single document, {brand} extracts reality seeds to auto-generate a parallel world with up to {agentScale}. Inject variables from a god's-eye view to find the {optimalSolution} in complex group dynamics.",
"heroDescBrand": "MiroFish",
"heroDescBrand": "CrowdSight",
"heroDescAgentScale": "million-scale Agents",
"heroDescOptimalSolution": "\"local optimum\"",
"slogan": "Let Agents rehearse the future, let decisions prevail",
@@ -67,7 +67,7 @@
"inputParams": "Input Parameters",
"simulationPrompt": ">_ 02 / Simulation Prompt",
"promptPlaceholder": "// Describe your simulation or prediction requirement in natural language",
"engineBadge": "Engine: MiroFish-V1.0",
"engineBadge": "Engine: CrowdSight-V1.0",
"startEngine": "Start Engine",
"initializing": "Initializing..."
},
@@ -151,7 +151,7 @@
"setupComplete": "Setup Complete",
"setupCompleteDesc": "Simulation environment is ready. You can now start the simulation.",
"roundsConfig": "Simulation Rounds Configuration",
"roundsConfigDesc": "MiroFish auto-plans to simulate {hours} real-world hours, each round representing {minutesPerRound} minutes of elapsed time",
"roundsConfigDesc": "CrowdSight auto-plans to simulate {hours} real-world hours, each round representing {minutesPerRound} minutes of elapsed time",
"customToggle": "Custom",
"roundsUnit": "rounds",
"estimatedDuration": "For 100 Agents: est. ~{minutes} minutes",
@@ -263,7 +263,7 @@
"selectChatTarget": "Select chat target",
"sendSurvey": "Send survey to the world",
"reportAgentChat": "Report Agent - Chat",
"reportAgentDesc": "A conversational version of the report generation agent with access to 4 professional tools and MiroFish's complete memory",
"reportAgentDesc": "A conversational version of the report generation agent with access to 4 professional tools and CrowdSight's complete memory",
"toolInsightForge": "InsightForge Deep Attribution",
"toolInsightForgeDesc": "Aligns real-world seed data with simulation state, combining Global/Local Memory for cross-temporal deep attribution analysis",
"toolPanoramaSearch": "PanoramaSearch Full Tracking",

View File

@@ -26,8 +26,8 @@
"files": "ไฟล์"
},
"meta": {
"title": "MiroFish - พยากรณ์ทุกสิ่ง",
"description": "MiroFish - ระบบจำลองความคิดเห็นบนโซเชียลมีเดีย"
"title": "CrowdSight - พยากรณ์ทุกสิ่ง",
"description": "CrowdSight - ระบบจำลองความคิดเห็นบนโซเชียลมีเดีย"
},
"nav": {
"visitGithub": "เยี่ยมชมหน้า Github ของเรา"
@@ -37,8 +37,8 @@
"version": "/ v0.1-Preview",
"heroTitle1": "อัปโหลดรายงาน,",
"heroTitle2": "พยากรณ์อนาคต",
"heroDesc": "จากเอกสารเพียงชิ้นเดียว {brand} จะสกัดเมล็ดพันธุ์แห่งความจริงเพื่อสร้างโลกคู่ขนานโดยอัตโนมัติที่มี Agent ได้สูงสุดถึง {agentScale} ฉีดตัวแปรจากมุมมองเหนือกว่าเพื่อค้นหา {optimalSolution} ในพลวัตกลุ่มที่ซับซ้อน",
"heroDescBrand": "MiroFish",
"heroDesc": "จากเอกสารเพียงชิ้นเดียว {brand} จะสกัดข้อมูลตั้งต้นเพื่อสร้างโลกจำลองโดยอัตโนมัติที่มี Agent ได้สูงสุดถึง {agentScale} เพิ่มตัวแปรจากมุมมองเหนือกว่าเพื่อค้นหา {optimalSolution} ในพฤติกรรมกลุ่มที่ซับซ้อน",
"heroDescBrand": "CrowdSight",
"heroDescAgentScale": "ระดับล้าน Agent",
"heroDescOptimalSolution": "\"ค่าเหมาะสมเฉพาะที่\"",
"slogan": "ให้ Agent ซักซ้อมอนาคต ให้การตัดสินใจเป็นผู้ชนะ",
@@ -51,23 +51,23 @@
"metricHighAvailDesc": "Agent นับล้าน",
"workflowSequence": "ขั้นตอนการทำงาน",
"step01Title": "สร้างกราฟ",
"step01Desc": "สกัดเมล็ดพันธุ์ & ฉีดความจำ & สร้าง GraphRAG",
"step01Desc": "สกัดข้อมูลตั้งต้น & เพิ่มความจำ & สร้าง GraphRAG",
"step02Title": "ตั้งค่าสภาพแวดล้อม",
"step02Desc": "สกัดเอนทิตี & สร้างบุคลิกภาพ & ฉีดค่าตั้ง Agent",
"step02Desc": "ดึงตัวละคร & สร้างบุคลิกภาพ & ฉีดค่าตั้ง Agent",
"step03Title": "การจำลอง",
"step03Desc": "จำลองคู่ขนานสองแพลตฟอร์ม & วิเคราะห์ความต้องการอัตโนมัติ & ความจำเชิงเวลา",
"step04Title": "รายงาน",
"step04Desc": "Report Agent โต้ตอบกับสภาพแวดล้อมหลังการจำลองผ่านเครื่องมือครบครัน",
"step05Title": "การโต้ตอบ",
"step05Desc": "สนทนากับบุคคลที่จำลอง & พูดคุยกับ Report Agent",
"realitySeed": "01 / เมล็ดพันธุ์แห่งความจริง",
"realitySeed": "01 / ข้อมูลตั้งต้น",
"supportedFormats": "รูปแบบ: PDF, MD, TXT",
"dragToUpload": "ลากไฟล์เพื่ออัปโหลด",
"orBrowse": "หรือคลิกเพื่อเลือกไฟล์",
"inputParams": "พารามิเตอร์นำเข้า",
"simulationPrompt": ">_ 02 / คำสั่งจำลอง",
"promptPlaceholder": "// อธิบายความต้องการในการจำลองหรือพยากรณ์ของคุณเป็นภาษาธรรมชาติ",
"engineBadge": "Engine: MiroFish-V1.0",
"engineBadge": "Engine: CrowdSight-V1.0",
"startEngine": "เริ่ม Engine",
"initializing": "กำลังเริ่มต้น..."
},
@@ -84,15 +84,15 @@
]
},
"step1": {
"ontologyGeneration": "การสร้างออนโทโลยี",
"ontologyGeneration": "การสร้างโครงสร้างข้อมูล",
"ontologyCompleted": "สำเร็จ",
"ontologyGenerating": "กำลังสร้าง",
"ontologyPending": "รอดำเนินการ",
"ontologyDesc": "LLM วิเคราะห์เนื้อหาเอกสารและความต้องการในการจำลอง สกัดเมล็ดพันธุ์แห่งความจริง และสร้างโครงสร้างออนโทโลยีที่เหมาะสมโดยอัตโนมัติ",
"ontologyDesc": "LLM วิเคราะห์เนื้อหาเอกสารและความต้องการในการจำลอง สกัดข้อมูลตั้งต้น และสร้างโครงสร้างโครงสร้างข้อมูลที่เหมาะสมโดยอัตโนมัติ",
"analyzingDocs": "กำลังวิเคราะห์เอกสาร...",
"graphRagBuild": "สร้าง GraphRAG",
"graphRagDesc": "จากออนโทโลยีที่สร้างขึ้น เอกสารจะถูกแบ่งเป็นส่วนย่อยโดยอัตโนมัติและส่งไปยัง Zep เพื่อสร้างกราฟความรู้ สกัดเอนทิตีและความสัมพันธ์ สร้างความจำเชิงเวลาและบทสรุปชุมชน",
"entityNodes": "โหนดเอนทิตี",
"graphRagDesc": "จากโครงสร้างข้อมูลที่สร้างขึ้น เอกสารจะถูกแบ่งเป็นส่วนย่อยโดยอัตโนมัติและส่งไปยัง Zep เพื่อสร้างแผนภูมิความรู้ ดึงตัวละครและความสัมพันธ์ สร้างความจำเชิงเวลาและบทสรุปชุมชน",
"entityNodes": "โหนดตัวละคร",
"relationEdges": "เส้นเชื่อมความสัมพันธ์",
"schemaTypes": "ประเภท Schema",
"buildComplete": "สร้างเสร็จสมบูรณ์",
@@ -108,15 +108,15 @@
"simInstanceDesc": "สร้างอินสแตนซ์การจำลองใหม่และดึงเทมเพลตพารามิเตอร์โลก",
"asyncTaskDone": "งานแบบอะซิงโครนัสเสร็จสมบูรณ์",
"generateAgentPersona": "สร้างบุคลิกภาพ Agent",
"generateAgentPersonaDesc": "ผสานบริบทเพื่อสกัดเอนทิตีและความสัมพันธ์จากกราฟความรู้โดยอัตโนมัติ เริ่มต้นบุคคลที่จำลอง และกำหนดพฤติกรรมและความจำที่เป็นเอกลักษณ์จากเมล็ดพันธุ์แห่งความจริง",
"generateAgentPersonaDesc": "ผสานบริบทเพื่อดึงตัวละครและความสัมพันธ์จากแผนภูมิความรู้โดยอัตโนมัติ เริ่มต้นบุคคลที่จำลอง และกำหนดพฤติกรรมและความจำที่เป็นเอกลักษณ์จากข้อมูลตั้งต้น",
"currentAgentCount": "Agent ปัจจุบัน",
"expectedAgentTotal": "Agent ทั้งหมดที่คาดหวัง",
"relatedTopicsCount": "หัวข้อที่เกี่ยวข้องกับเมล็ดพันธุ์แห่งความจริง",
"relatedTopicsCount": "หัวข้อที่เกี่ยวข้องกับข้อมูลตั้งต้น",
"generatedAgentPersonas": "บุคลิกภาพ Agent ที่สร้างแล้ว",
"unknownProfession": "ไม่ทราบอาชีพ",
"noBio": "ไม่มีประวัติย่อ",
"dualPlatformConfig": "สร้างค่าตั้งสองแพลตฟอร์ม",
"dualPlatformConfigDesc": "LLM ตั้งค่าการไหลของเวลาโลก ขั้นตอนการแนะนำ ชั่วโมงที่ใช้งานของแต่ละบุคคล ความถี่ในการโพสต์ ตัวกระตุ้นเหตุการณ์ และอื่นๆ อย่างชาญฉลาดตามความต้องการและเมล็ดพันธุ์แห่งความจริง",
"dualPlatformConfigDesc": "LLM ตั้งค่าการไหลของเวลาโลก ขั้นตอนการแนะนำ ชั่วโมงที่ใช้งานของแต่ละบุคคล ความถี่ในการโพสต์ ตัวกระตุ้นเหตุการณ์ และอื่นๆ อย่างชาญฉลาดตามความต้องการและข้อมูลตั้งต้น",
"simulationDuration": "ระยะเวลาจำลอง",
"roundDuration": "ระยะเวลาต่อรอบ",
"totalRounds": "รอบทั้งหมด",
@@ -151,7 +151,7 @@
"setupComplete": "ตั้งค่าเสร็จสมบูรณ์",
"setupCompleteDesc": "สภาพแวดล้อมจำลองพร้อมแล้ว คุณสามารถเริ่มการจำลองได้",
"roundsConfig": "กำหนดค่ารอบการจำลอง",
"roundsConfigDesc": "MiroFish วางแผนอัตโนมัติเพื่อจำลอง {hours} ชั่วโมงโลกจริง แต่ละรอบแทนเวลาที่ผ่านไป {minutesPerRound} นาที",
"roundsConfigDesc": "CrowdSight วางแผนอัตโนมัติเพื่อจำลอง {hours} ชั่วโมงโลกจริง แต่ละรอบแทนเวลาที่ผ่านไป {minutesPerRound} นาที",
"customToggle": "กำหนดเอง",
"roundsUnit": "รอบ",
"estimatedDuration": "สำหรับ 100 Agent: ประมาณ ~{minutes} นาที",
@@ -165,14 +165,14 @@
"profileModalCountry": "ประเทศ/ภูมิภาค",
"profileModalMbti": "MBTI ที่ปรากฏ",
"profileModalBio": "ประวัติบุคลิกภาพ",
"profileModalTopics": "หัวข้อที่เกี่ยวข้องกับเมล็ดพันธุ์แห่งความจริง",
"profileModalTopics": "หัวข้อที่เกี่ยวข้องกับข้อมูลตั้งต้น",
"profileModalPersona": "ภูมิหลังบุคลิกภาพโดยละเอียด",
"personaDimExperience": "ประสบการณ์เหตุการณ์เต็มรูปแบบ",
"personaDimExperienceDesc": "เส้นทางพฤติกรรมที่สมบูรณ์ในเหตุการณ์นี้",
"personaDimBehavior": "โปรไฟล์พฤติกรรม",
"personaDimBehaviorDesc": "สรุปประสบการณ์และความชอบด้านพฤติกรรม",
"personaDimMemory": "รอยประทับความจำที่เป็นเอกลักษณ์",
"personaDimMemoryDesc": "ความจำที่เกิดจากเมล็ดพันธุ์แห่งความจริง",
"personaDimMemoryDesc": "ความจำที่เกิดจากข้อมูลตั้งต้น",
"personaDimSocial": "เครือข่ายสังคม",
"personaDimSocialDesc": "การเชื่อมต่อระหว่างบุคคลและกราฟการโต้ตอบ",
"genderMale": "ชาย",
@@ -222,28 +222,28 @@
"expandAllEntities": "แสดงทั้งหมด {count} ▼",
"scenarioLabel": "สถานการณ์: ",
"tabKeyFacts": "ข้อเท็จจริงสำคัญ ({count})",
"tabCoreEntities": "เอนทิตีหลัก ({count})",
"tabCoreEntities": "ตัวละครหลัก ({count})",
"tabRelationChains": "สายโซ่ความสัมพันธ์ ({count})",
"tabSubQueries": "คำถามย่อย ({count})",
"panelKeyFacts": "ข้อเท็จจริงสำคัญล่าสุดจากความจำเชิงเวลา",
"totalCount": "ทั้งหมด {count}",
"totalEntityCount": "ทั้งหมด {count}",
"panelCoreEntities": "เอนทิตีหลัก",
"panelCoreEntities": "ตัวละครหลัก",
"factCount": "{count} ข้อเท็จจริง",
"panelRelationChains": "สายโซ่ความสัมพันธ์",
"panelSubQueries": "คำถามย่อยจากการวิเคราะห์แบบ Drift",
"emptyKeyFacts": "ไม่มีข้อเท็จจริงสำคัญ",
"emptyCoreEntities": "ไม่มีเอนทิตีหลัก",
"emptyCoreEntities": "ไม่มีตัวละครหลัก",
"emptyRelationChains": "ไม่มีสายโซ่ความสัมพันธ์",
"tabActiveFacts": "ข้อเท็จจริงที่ใช้งาน ({count})",
"tabHistoricalFacts": "ข้อเท็จจริงในอดีต ({count})",
"tabEntities": "เอนทิตี ({count})",
"tabEntities": "ตัวละคร ({count})",
"panelActiveFacts": "ข้อเท็จจริงที่ใช้งาน",
"emptyActiveFacts": "ไม่มีข้อเท็จจริงที่ใช้งาน",
"panelHistoricalFacts": "ข้อเท็จจริงในอดีต",
"emptyHistoricalFacts": "ไม่มีข้อเท็จจริงในอดีต",
"panelEntities": "เอนทิตี",
"emptyEntities": "ไม่มีเอนทิตี",
"panelEntities": "ตัวละคร",
"emptyEntities": "ไม่มีตัวละคร",
"searchLabel": "ค้นหา: ",
"tabFacts": "ข้อเท็จจริง ({count})",
"tabEdges": "เส้นเชื่อม ({count})",
@@ -263,9 +263,9 @@
"selectChatTarget": "เลือกเป้าหมายสนทนา",
"sendSurvey": "ส่งแบบสำรวจไปยังโลกจำลอง",
"reportAgentChat": "Report Agent - สนทนา",
"reportAgentDesc": "เวอร์ชันสนทนาของ Agent สร้างรายงาน พร้อมเข้าถึงเครื่องมือมืออาชีพ 4 ชิ้นและความจำครบถ้วนของ MiroFish",
"reportAgentDesc": "เวอร์ชันสนทนาของ Agent สร้างรายงาน พร้อมเข้าถึงเครื่องมือมืออาชีพ 4 ชิ้นและความจำครบถ้วนของ CrowdSight",
"toolInsightForge": "InsightForge การวิเคราะห์เชิงลึก",
"toolInsightForgeDesc": "ปรับข้อมูลเมล็ดพันธุ์แห่งความจริงให้ตรงกับสถานะการจำลอง ผสาน Global/Local Memory สำหรับการวิเคราะห์เชิงลึกข้ามเวลา",
"toolInsightForgeDesc": "ปรับข้อมูลข้อมูลตั้งต้นให้ตรงกับสถานะการจำลอง ผสาน Global/Local Memory สำหรับการวิเคราะห์เชิงลึกข้ามเวลา",
"toolPanoramaSearch": "PanoramaSearch การติดตามครบถ้วน",
"toolPanoramaSearchDesc": "อัลกอริทึม BFS บนกราฟที่สร้างเส้นทางการแพร่กระจายของเหตุการณ์ขึ้นใหม่ จับภาพโทโพโลยีเต็มรูปแบบของการไหลข้อมูล",
"toolQuickSearch": "QuickSearch การค้นหาอย่างรวดเร็ว",
@@ -300,7 +300,7 @@
"nodeDetails": "รายละเอียดโหนด",
"relationship": "ความสัมพันธ์",
"graphDataLoading": "กำลังโหลดข้อมูลกราฟ...",
"waitingOntology": "รอการสร้างออนโทโลยี...",
"waitingOntology": "รอการสร้างโครงสร้างข้อมูล...",
"toggleMaximize": "ขยาย/คืนค่า",
"closeHint": "ปิดคำแนะนำ"
},
@@ -336,16 +336,16 @@
"requireProjectId": "กรุณาระบุ project_id",
"configError": "ข้อผิดพลาดในการกำหนดค่า: {details}",
"zepApiKeyMissing": "ยังไม่ได้ตั้งค่า ZEP_API_KEY",
"ontologyNotGenerated": "ยังไม่ได้สร้างออนโทโลยี กรุณาเรียก /ontology/generate ก่อน",
"ontologyNotGenerated": "ยังไม่ได้สร้างโครงสร้างข้อมูล กรุณาเรียก /ontology/generate ก่อน",
"graphBuilding": "กำลังสร้างกราฟ อย่าส่งซ้ำ หากต้องการสร้างใหม่ เพิ่ม force: true",
"textNotFound": "ไม่พบเนื้อหาข้อความที่สกัดแล้ว",
"ontologyNotFound": "ไม่พบคำจำกัดความออนโทโลยี",
"ontologyNotFound": "ไม่พบคำจำกัดความโครงสร้างข้อมูล",
"graphBuildStarted": "เริ่มงานสร้างกราฟแล้ว สอบถามความคืบหน้าผ่าน /task/{taskId}",
"graphBuildComplete": "สร้างกราฟเสร็จสมบูรณ์",
"buildFailed": "สร้างล้มเหลว: {error}",
"taskNotFound": "ไม่พบงาน: {id}",
"graphDeleted": "ลบกราฟแล้ว: {id}",
"entityNotFound": "ไม่พบเอนทิตี: {id}",
"entityNotFound": "ไม่พบตัวละคร: {id}",
"graphNotBuilt": "ยังไม่ได้สร้างกราฟ กรุณาเรียก /api/graph/build ก่อน",
"requireSimulationId": "กรุณาระบุ simulation_id",
"simulationNotFound": "ไม่พบการจำลอง: {id}",
@@ -360,7 +360,7 @@
"unknownScript": "ไม่ทราบสคริปต์: {name} ที่มี: {allowed}",
"scriptFileNotFound": "ไม่พบไฟล์สคริปต์: {name}",
"requireGraphId": "กรุณาระบุ graph_id",
"noMatchingEntities": "ไม่พบเอนทิตีที่ตรงกัน",
"noMatchingEntities": "ไม่พบตัวละครที่ตรงกัน",
"maxRoundsPositive": "max_rounds ต้องเป็นจำนวนเต็มบวก",
"maxRoundsInvalid": "max_rounds ต้องเป็นจำนวนเต็มที่ถูกต้อง",
"invalidPlatform": "ประเภทแพลตฟอร์มไม่ถูกต้อง: {platform} ตัวเลือก: twitter/reddit/parallel",
@@ -401,7 +401,7 @@
"initGraphService": "กำลังเริ่มต้นบริการสร้างกราฟ...",
"textChunking": "กำลังแบ่งข้อความเป็นส่วนย่อย...",
"creatingZepGraph": "กำลังสร้างกราฟ Zep...",
"settingOntology": "กำลังตั้งค่าคำจำกัดความออนโทโลยี...",
"settingOntology": "กำลังตั้งค่าคำจำกัดความโครงสร้างข้อมูล...",
"addingChunks": "กำลังเพิ่ม {count} ส่วนข้อความ...",
"waitingZepProcess": "รอ Zep ประมวลผลข้อมูล...",
"fetchingGraphData": "กำลังดึงข้อมูลกราฟ...",
@@ -409,7 +409,7 @@
"buildFailed": "สร้างล้มเหลว: {error}",
"startBuildingGraph": "กำลังเริ่มสร้างกราฟ...",
"graphCreated": "สร้างกราฟแล้ว: {graphId}",
"ontologySet": "ตั้งค่าออนโทโลยีแล้ว",
"ontologySet": "ตั้งค่าโครงสร้างข้อมูลแล้ว",
"textSplit": "แบ่งข้อความเป็น {count} ส่วน",
"fetchingGraphInfo": "กำลังดึงข้อมูลกราฟ...",
"sendingBatch": "กำลังส่งชุด {current}/{total} ({chunks} ส่วน)...",
@@ -424,7 +424,7 @@
"startPreparingEnv": "กำลังเตรียมสภาพแวดล้อมจำลอง...",
"connectingZepGraph": "กำลังเชื่อมต่อกราฟ Zep...",
"readingNodeData": "กำลังอ่านข้อมูลโหนด...",
"readingComplete": "เสร็จ พบ {count} เอนทิตี",
"readingComplete": "เสร็จ พบ {count} ตัวละคร",
"startGenerating": "กำลังเริ่มสร้าง...",
"analyzingRequirements": "กำลังวิเคราะห์ความต้องการจำลอง...",
"generatingOutline": "กำลังสร้างเค้าโครงรายงาน...",
@@ -454,7 +454,7 @@
"agentConfigResult": "ค่าตั้ง Agent: สร้าง {count} รายการ",
"postAssignResult": "กำหนดโพสต์: กำหนด {count} โพสต์",
"profileGenerated": "[สร้างแล้ว] {name} ({type})",
"readingGraphEntities": "กำลังอ่านเอนทิตีกราฟ",
"readingGraphEntities": "กำลังอ่านตัวละครกราฟ",
"generatingProfiles": "กำลังสร้างโปรไฟล์ Agent",
"generatingSimConfig": "กำลังสร้างค่าตั้งจำลอง",
"preparingScripts": "กำลังเตรียมสคริปต์"
@@ -499,8 +499,8 @@
"detectedExistingPrep": "ตรวจพบการเตรียมการที่มีอยู่ ใช้โดยตรง",
"prepareTaskStarted": "เริ่มงานเตรียมการแล้ว",
"prepareTaskId": " └─ รหัสงาน: {taskId}",
"zepEntitiesFound": "พบ {count} เอนทิตีจากกราฟ Zep",
"entityTypes": " └─ ประเภทเอนทิตี: {types}",
"zepEntitiesFound": "พบ {count} ตัวละครจากกราฟ Zep",
"entityTypes": " └─ ประเภทตัวละคร: {types}",
"startPollingProgress": "กำลังตรวจสอบความคืบหน้าการเตรียมการ...",
"prepareFailed": "เตรียมการล้มเหลว: {error}",
"prepareException": "เกิดข้อผิดพลาดในการเตรียมการ: {error}",
@@ -637,14 +637,14 @@
"fetchingNodeEdges": "กำลังดึงเส้นเชื่อมสำหรับโหนด {uuid}...",
"foundNodeEdges": "พบ {count} เส้นเชื่อมที่เกี่ยวข้องกับโหนด",
"fetchNodeEdgesFailed": "ดึงเส้นเชื่อมโหนดล้มเหลว: {error}",
"fetchingEntitiesByType": "กำลังดึงเอนทิตีประเภท {type}...",
"foundEntitiesByType": "พบ {count} เอนทิตีประเภท {type}",
"fetchingEntitySummary": "กำลังดึงสรุปความสัมพันธ์สำหรับเอนทิตี {name}...",
"fetchingEntitiesByType": "กำลังดึงตัวละครประเภท {type}...",
"foundEntitiesByType": "พบ {count} ตัวละครประเภท {type}",
"fetchingEntitySummary": "กำลังดึงสรุปความสัมพันธ์สำหรับตัวละคร {name}...",
"fetchingGraphStats": "กำลังดึงสถิติสำหรับกราฟ {graphId}...",
"fetchingSimContext": "กำลังดึงบริบทการจำลอง: {requirement}...",
"insightForgeStart": "InsightForge การค้นหาเชิงลึก: {query}...",
"generatedSubQueries": "สร้าง {count} คำถามย่อย",
"insightForgeComplete": "InsightForge เสร็จ: {facts} ข้อเท็จจริง, {entities} เอนทิตี, {relationships} ความสัมพันธ์",
"insightForgeComplete": "InsightForge เสร็จ: {facts} ข้อเท็จจริง, {entities} ตัวละคร, {relationships} ความสัมพันธ์",
"generateSubQueriesFailed": "สร้างคำถามย่อยล้มเหลว: {error}, ใช้ค่าเริ่มต้น",
"panoramaSearchStart": "PanoramaSearch การค้นหากว้าง: {query}...",
"panoramaSearchComplete": "PanoramaSearch เสร็จ: {active} ใช้งาน, {historical} อดีต",

View File

@@ -26,8 +26,8 @@
"files": "个文件"
},
"meta": {
"title": "MiroFish - 预测万物",
"description": "MiroFish - 社交媒体舆论模拟系统"
"title": "CrowdSight - 预测万物",
"description": "CrowdSight - 社交媒体舆论模拟系统"
},
"nav": {
"visitGithub": "访问我们的Github主页"
@@ -38,7 +38,7 @@
"heroTitle1": "上传任意报告",
"heroTitle2": "即刻推演未来",
"heroDesc": "即使只有一段文字,{brand} 也能基于其中的现实种子,全自动生成与之对应的至多{agentScale}构成的平行世界。通过上帝视角注入变量,在复杂的群体交互中寻找动态环境下的{optimalSolution}",
"heroDescBrand": "MiroFish",
"heroDescBrand": "CrowdSight",
"heroDescAgentScale": "百万级Agent",
"heroDescOptimalSolution": "\"局部最优解\"",
"slogan": "让未来在 Agent 群中预演,让决策在百战后胜出",
@@ -67,7 +67,7 @@
"inputParams": "输入参数",
"simulationPrompt": ">_ 02 / 模拟提示词",
"promptPlaceholder": "// 用自然语言输入模拟或预测需求(例.武大若发布撤销肖某处分的公告,会引发什么舆情走向)",
"engineBadge": "引擎: MiroFish-V1.0",
"engineBadge": "引擎: CrowdSight-V1.0",
"startEngine": "启动引擎",
"initializing": "初始化中..."
},
@@ -151,7 +151,7 @@
"setupComplete": "准备完成",
"setupCompleteDesc": "模拟环境已准备完成,可以开始运行模拟",
"roundsConfig": "模拟轮数设定",
"roundsConfigDesc": "MiroFish 自动规划推演现实 {hours} 小时,每轮代表现实 {minutesPerRound} 分钟时间流逝",
"roundsConfigDesc": "CrowdSight 自动规划推演现实 {hours} 小时,每轮代表现实 {minutesPerRound} 分钟时间流逝",
"customToggle": "自定义",
"roundsUnit": "轮",
"estimatedDuration": "若Agent规模为100预计耗时约 {minutes} 分钟",
@@ -263,7 +263,7 @@
"selectChatTarget": "选择对话对象",
"sendSurvey": "发送问卷调查到世界中",
"reportAgentChat": "Report Agent - Chat",
"reportAgentDesc": "报告生成智能体的快速对话版本,可调用 4 种专业工具,拥有MiroFish的完整记忆",
"reportAgentDesc": "报告生成智能体的快速对话版本,可调用 4 种专业工具,拥有CrowdSight的完整记忆",
"toolInsightForge": "InsightForge 深度归因",
"toolInsightForgeDesc": "对齐现实世界种子数据与模拟环境状态结合Global/Local Memory机制提供跨时空的深度归因分析",
"toolPanoramaSearch": "PanoramaSearch 全景追踪",

View File

@@ -1,7 +1,7 @@
{
"name": "mirofish",
"name": "crowdsight",
"version": "0.1.0",
"description": "MiroFish - 简洁通用的群体智能引擎,预测万物",
"description": "CrowdSight - 简洁通用的群体智能引擎,预测万物",
"scripts": {
"setup": "npm install && cd frontend && npm install",
"setup:backend": "cd backend && uv sync",