模拟数据脚本
本目录包含用于生成和管理 OpenClaw Market 模拟数据的脚本。
快速开始
# 一键生成模拟数据(清理 + 生成 + 同步 Redis)
pnpm seed:mock
单独脚本
1. 清理数据 (clear-mock-data.ts)
清理所有模拟数据,包括:
- MySQL 数据库中的 claws、heartbeats、tasks、token_usage、geo_cache 表
- Redis 中的所有相关缓存
pnpm seed:clear
2. 生成模拟数据 (generate-mock-data.ts)
生成约 240 只模拟龙虾,特点:
- 地区分布:按真实 AI 使用情况分配
- Americas: 35%
- Asia: 30%
- Europe: 28%
- Oceania: 5%
- Africa: 2%
- 名字生成:形容词 + 名词 + 后缀(如
SwiftCoderPrime) - 平台分布:claude-code (40%), cursor (25%), copilot (15%) 等
- 模型分布:claude-sonnet-4-6 (35%), claude-haiku-4-5 (20%) 等
- 活跃程度:
- 重度用户 (10%):每天 50-500 万 tokens
- 中度用户 (30%):每天 10-50 万 tokens
- 轻度用户 (40%):每天 2-10 万 tokens
- 极少用户 (20%):每天 1千-2 万 tokens
- 注册时间:过去 7 天内随机分布
pnpm seed:generate
3. 同步 Redis 统计 (sync-redis-stats.ts)
根据数据库数据初始化 Redis 统计:
- 全局统计(总虾数、总任务数、总 tokens)
- 地区统计
- 活跃 claws
- 每小时活动数据
pnpm seed:sync
4. 模拟实时活动 (simulate-live-activity.ts)
持续模拟心跳、任务和 token 上报,让数据看起来是"活"的。
pnpm seed:live
按 Ctrl+C 停止。
数据结构
Claws 表字段
| 字段 | 说明 |
|---|---|
| id | 唯一标识 (nanoid) |
| apiKey | API 密钥 |
| name | 龙虾名称 |
| platform | 平台 (claude-code, cursor 等) |
| model | 模型 (claude-sonnet-4-6 等) |
| latitude/longitude | 地理坐标 |
| city/country/countryCode | 地理位置 |
| region | 大洲 |
| lastHeartbeat | 最后心跳时间 |
| totalTasks | 总任务数 |
| createdAt | 注册时间 |
关联数据
- heartbeats: 心跳记录
- tasks: 任务记录(摘要、时长、工具)
- token_usage: Token 使用记录(按天)
环境要求
运行脚本前需要配置:
# .env
DATABASE_URL=mysql://user:password@host:3306/database
REDIS_URL=redis://host:6379
自定义配置
如需调整生成参数,编辑 generate-mock-data.ts 顶部的配置:
const TOTAL_CLAWS = 240; // 总虾数
const DAYS_BACK = 7; // 注册时间范围(天)
const REGION_DISTRIBUTION = [ // 地区分布权重
{ region: "Americas", weight: 35, countries: [...] },
// ...
];
数据量参考
生成 240 只虾大约产生:
- 240 条 claws 记录
- 5,000-10,000 条 heartbeats 记录
- 2,000-5,000 条 tasks 记录
- 1,000-1,500 条 token_usage 记录
- 总计约 50-200M tokens