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 密钥: # 复制此文件为 .env 并填入你的 API 密钥:
# cp .env.example .env # cp .env.example .env

View File

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

View File

@@ -1,24 +1,24 @@
<div align="center"> <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> </br>
<em>A Simple and Universal Swarm Intelligence Engine, Predicting Anything</em> <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 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/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/watchers) [![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/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/network) [![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/) [![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) [![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) [![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/mirofish_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) [English](./README.md) | [中文文档](./README-ZH.md)
@@ -26,14 +26,14 @@
## ⚡ 项目概述 ## ⚡ 项目概述
**MiroFish** 是一款基于多智能体技术的新一代 AI 预测引擎。通过提取现实世界的种子信息(如突发新闻、政策草案、金融信号),自动构建出高保真的平行数字世界。在此空间内,成千上万个具备独立人格、长期记忆与行为逻辑的智能体进行自由交互与社会演化。你可透过「上帝视角」动态注入变量,精准推演未来走向——**让未来在数字沙盘中预演,助决策在百战模拟后胜出**。 **CrowdSight** 是一款基于多智能体技术的新一代 AI 预测引擎。通过提取现实世界的种子信息(如突发新闻、政策草案、金融信号),自动构建出高保真的平行数字世界。在此空间内,成千上万个具备独立人格、长期记忆与行为逻辑的智能体进行自由交互与社会演化。你可透过「上帝视角」动态注入变量,精准推演未来走向——**让未来在数字沙盘中预演,助决策在百战模拟后胜出**。
> 你只需:上传种子材料(数据分析报告或者有趣的小说故事),并用自然语言描述预测需求</br> > 你只需:上传种子材料(数据分析报告或者有趣的小说故事),并用自然语言描述预测需求</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"> <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生成的《武大舆情报告》进行预测的完整演示视频 点击图片查看使用微舆BettaFish生成的《武大舆情报告》进行预测的完整演示视频
</div> </div>
@@ -76,9 +76,9 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体
### 2. 《红楼梦》失传结局推演预测 ### 2. 《红楼梦》失传结局推演预测
<div align="center"> <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> </div>
> **金融方向推演预测**、**时政要闻推演预测**等示例陆续更新中... > **金融方向推演预测**、**时政要闻推演预测**等示例陆续更新中...
@@ -215,20 +215,20 @@ docker compose up -d
&nbsp; &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> <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: 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/MiroFish&type=date&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/MiroFish&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> </picture>
</a> </a>

View File

@@ -1,24 +1,24 @@
<div align="center"> <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> </br>
<em>A Simple and Universal Swarm Intelligence Engine, Predicting Anything</em> <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 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/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/watchers) [![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/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/network) [![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/) [![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) [![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) [![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/mirofish_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) [English](./README.md) | [中文文档](./README-ZH.md)
@@ -26,14 +26,14 @@
## ⚡ Overview ## ⚡ 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> > 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 ### 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 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 - **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 ## 🌐 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 ## 📸 Screenshots
@@ -65,10 +65,10 @@ Welcome to visit our online demo environment and experience a prediction simulat
## 🎬 Demo Videos ## 🎬 Demo Videos
### 1. Wuhan University Public Opinion Simulation + MiroFish Project Introduction ### 1. Wuhan University Public Opinion Simulation + CrowdSight Project Introduction
<div align="center"> <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" Click the image to watch the complete demo video for prediction using BettaFish-generated "Wuhan University Public Opinion Report"
</div> </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 ### 2. Dream of the Red Chamber Lost Ending Simulation
<div align="center"> <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> </div>
> **Financial Prediction**, **Political News Prediction** and more examples coming soon... > **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; &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 ## 📄 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 ## 📈 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> <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: 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/MiroFish&type=date&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/MiroFish&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> </picture>
</a> </a>

View File

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

View File

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

View File

@@ -17,7 +17,7 @@ from ..models.task import TaskManager, TaskStatus
from ..utils.logger import get_logger from ..utils.logger import get_logger
from ..utils.locale import t, get_locale, set_locale 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 请求JSON
{ {
"graph_id": "mirofish_xxxx", "graph_id": "crowdsight_xxxx",
"query": "搜索查询", "query": "搜索查询",
"limit": 10 "limit": 10
} }
@@ -987,7 +987,7 @@ def get_graph_statistics_tool():
请求JSON 请求JSON
{ {
"graph_id": "mirofish_xxxx" "graph_id": "crowdsight_xxxx"
} }
""" """
try: try:

View File

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

View File

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

View File

@@ -55,7 +55,7 @@ class GraphBuilderService:
self, self,
text: str, text: str,
ontology: Dict[str, Any], ontology: Dict[str, Any],
graph_name: str = "MiroFish Graph", graph_name: str = "CrowdSight Graph",
chunk_size: int = 500, chunk_size: int = 500,
chunk_overlap: int = 50, chunk_overlap: int = 50,
batch_size: int = 3 batch_size: int = 3
@@ -192,12 +192,12 @@ class GraphBuilderService:
def create_graph(self, name: str) -> str: def create_graph(self, name: str) -> str:
"""创建Zep图谱公开方法""" """创建Zep图谱公开方法"""
graph_id = f"mirofish_{uuid.uuid4().hex[:16]}" graph_id = f"crowdsight_{uuid.uuid4().hex[:16]}"
self.client.graph.create( self.client.graph.create(
graph_id=graph_id, graph_id=graph_id,
name=name, name=name,
description="MiroFish Social Simulation Graph" description="CrowdSight Social Simulation Graph"
) )
return graph_id 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 ..utils.locale import get_language_instruction, get_locale, set_locale, t
from .zep_entity_reader import EntityNode, ZepEntityReader from .zep_entity_reader import EntityNode, ZepEntityReader
logger = get_logger('mirofish.oasis_profile') logger = get_logger('crowdsight.oasis_profile')
@dataclass @dataclass

View File

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

View File

@@ -30,7 +30,7 @@ from .zep_tools import (
InterviewResult InterviewResult
) )
logger = get_logger('mirofish.report_agent') logger = get_logger('crowdsight.report_agent')
class ReportLogger: class ReportLogger:
@@ -353,8 +353,8 @@ class ReportConsoleLogger:
# 添加到 report_agent 相关的 logger # 添加到 report_agent 相关的 logger
loggers_to_attach = [ loggers_to_attach = [
'mirofish.report_agent', 'crowdsight.report_agent',
'mirofish.zep_tools', 'crowdsight.zep_tools',
] ]
for logger_name in loggers_to_attach: for logger_name in loggers_to_attach:
@@ -369,8 +369,8 @@ class ReportConsoleLogger:
if self._file_handler: if self._file_handler:
loggers_to_detach = [ loggers_to_detach = [
'mirofish.report_agent', 'crowdsight.report_agent',
'mirofish.zep_tools', 'crowdsight.zep_tools',
] ]
for logger_name in loggers_to_detach: 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 ..utils.locale import get_language_instruction, t
from .zep_entity_reader import EntityNode, ZepEntityReader from .zep_entity_reader import EntityNode, ZepEntityReader
logger = get_logger('mirofish.simulation_config') logger = get_logger('crowdsight.simulation_config')
# 中国作息时间配置(北京时间) # 中国作息时间配置(北京时间)
CHINA_TIMEZONE_CONFIG = { CHINA_TIMEZONE_CONFIG = {

View File

@@ -19,7 +19,7 @@ from enum import Enum
from ..utils.logger import get_logger from ..utils.logger import get_logger
logger = get_logger('mirofish.simulation_ipc') logger = get_logger('crowdsight.simulation_ipc')
class CommandType(str, Enum): 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 .simulation_config_generator import SimulationConfigGenerator, SimulationParameters
from ..utils.locale import t from ..utils.locale import t
logger = get_logger('mirofish.simulation') logger = get_logger('crowdsight.simulation')
class SimulationStatus(str, Enum): class SimulationStatus(str, Enum):
@@ -520,7 +520,7 @@ class SimulationManager:
"parallel": f"python {scripts_dir}/run_parallel_simulation.py --config {config_path}", "parallel": f"python {scripts_dir}/run_parallel_simulation.py --config {config_path}",
}, },
"instructions": ( "instructions": (
f"1. 激活conda环境: conda activate MiroFish\n" f"1. 激活conda环境: conda activate CrowdSight\n"
f"2. 运行模拟 (脚本位于 {scripts_dir}):\n" f"2. 运行模拟 (脚本位于 {scripts_dir}):\n"
f" - 单独运行Twitter: python {scripts_dir}/run_twitter_simulation.py --config {config_path}\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" 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 .zep_graph_memory_updater import ZepGraphMemoryManager
from .simulation_ipc import SimulationIPCClient, CommandType, IPCResponse from .simulation_ipc import SimulationIPCClient, CommandType, IPCResponse
logger = get_logger('mirofish.simulation_runner') logger = get_logger('crowdsight.simulation_runner')
# 标记是否已注册清理函数 # 标记是否已注册清理函数
_cleanup_registered = False _cleanup_registered = False

View File

@@ -13,7 +13,7 @@ from ..config import Config
from ..utils.logger import get_logger from ..utils.logger import get_logger
from ..utils.zep_paging import fetch_all_nodes, fetch_all_edges 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') T = TypeVar('T')

View File

@@ -18,7 +18,7 @@ from ..config import Config
from ..utils.logger import get_logger from ..utils.logger import get_logger
from ..utils.locale import get_locale, set_locale 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 @dataclass

View File

@@ -21,7 +21,7 @@ from ..utils.llm_client import LLMClient
from ..utils.locale import get_locale, t from ..utils.locale import get_locale, t
from ..utils.zep_paging import fetch_all_nodes, fetch_all_edges from ..utils.zep_paging import fetch_all_nodes, fetch_all_edges
logger = get_logger('mirofish.zep_tools') logger = get_logger('crowdsight.zep_tools')
@dataclass @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') 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 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 typing import Callable, Any, Optional, Type, Tuple
from ..utils.logger import get_logger from ..utils.logger import get_logger
logger = get_logger('mirofish.retry') logger = get_logger('crowdsight.retry')
def retry_with_backoff( def retry_with_backoff(

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,10 +2,10 @@
<div class="home-container"> <div class="home-container">
<!-- 顶部导航栏 --> <!-- 顶部导航栏 -->
<nav class="navbar"> <nav class="navbar">
<div class="nav-brand">MIROFISH</div> <div class="nav-brand">CROWDSIGHT</div>
<div class="nav-links"> <div class="nav-links">
<LanguageSwitcher /> <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> {{ $t('nav.visitGithub') }} <span class="arrow"></span>
</a> </a>
</div> </div>
@@ -44,7 +44,7 @@
<div class="hero-right"> <div class="hero-right">
<!-- Logo 区域 --> <!-- Logo 区域 -->
<div class="logo-container"> <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> </div>
<button class="scroll-down-btn" @click="scrollToBottom"> <button class="scroll-down-btn" @click="scrollToBottom">

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -26,8 +26,8 @@
"files": "files" "files": "files"
}, },
"meta": { "meta": {
"title": "MiroFish - Predict Everything", "title": "CrowdSight - Predict Everything",
"description": "MiroFish - Social Media Opinion Simulation System" "description": "CrowdSight - Social Media Opinion Simulation System"
}, },
"nav": { "nav": {
"visitGithub": "Visit our Github page" "visitGithub": "Visit our Github page"
@@ -38,7 +38,7 @@
"heroTitle1": "Upload Reports,", "heroTitle1": "Upload Reports,",
"heroTitle2": "Predict the Future", "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.", "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", "heroDescAgentScale": "million-scale Agents",
"heroDescOptimalSolution": "\"local optimum\"", "heroDescOptimalSolution": "\"local optimum\"",
"slogan": "Let Agents rehearse the future, let decisions prevail", "slogan": "Let Agents rehearse the future, let decisions prevail",
@@ -67,7 +67,7 @@
"inputParams": "Input Parameters", "inputParams": "Input Parameters",
"simulationPrompt": ">_ 02 / Simulation Prompt", "simulationPrompt": ">_ 02 / Simulation Prompt",
"promptPlaceholder": "// Describe your simulation or prediction requirement in natural language", "promptPlaceholder": "// Describe your simulation or prediction requirement in natural language",
"engineBadge": "Engine: MiroFish-V1.0", "engineBadge": "Engine: CrowdSight-V1.0",
"startEngine": "Start Engine", "startEngine": "Start Engine",
"initializing": "Initializing..." "initializing": "Initializing..."
}, },
@@ -151,7 +151,7 @@
"setupComplete": "Setup Complete", "setupComplete": "Setup Complete",
"setupCompleteDesc": "Simulation environment is ready. You can now start the simulation.", "setupCompleteDesc": "Simulation environment is ready. You can now start the simulation.",
"roundsConfig": "Simulation Rounds Configuration", "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", "customToggle": "Custom",
"roundsUnit": "rounds", "roundsUnit": "rounds",
"estimatedDuration": "For 100 Agents: est. ~{minutes} minutes", "estimatedDuration": "For 100 Agents: est. ~{minutes} minutes",
@@ -263,7 +263,7 @@
"selectChatTarget": "Select chat target", "selectChatTarget": "Select chat target",
"sendSurvey": "Send survey to the world", "sendSurvey": "Send survey to the world",
"reportAgentChat": "Report Agent - Chat", "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", "toolInsightForge": "InsightForge Deep Attribution",
"toolInsightForgeDesc": "Aligns real-world seed data with simulation state, combining Global/Local Memory for cross-temporal deep attribution analysis", "toolInsightForgeDesc": "Aligns real-world seed data with simulation state, combining Global/Local Memory for cross-temporal deep attribution analysis",
"toolPanoramaSearch": "PanoramaSearch Full Tracking", "toolPanoramaSearch": "PanoramaSearch Full Tracking",

View File

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

View File

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

View File

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