2026-07-20 23:32:32 +08:00

天璇 (TianXuan) — TLS 流数据分析平台

基于 Polars + scikit-learn + Three.js 的 TLS 流量分析工具。CSV 上传后支持手动分步分析(工作流构建器)、LLM 全自动分析(MCP 工具链)、聚类 3D 地球可视化。全离线运行,内嵌 Python 3.12 运行时。

功能概述

模块 说明
CSV 上传 多文件拖拽、BOM 自动检测、schema 容错、ZIP 自动解压
手动分析 工作流构建器:添加/排序/保存工具链,串行执行
LLM 自动分析 OpenAI 兼容 API,自动编排 filter→profile→entity→cluster→feature
聚类可视化 HDBSCAN/KMeansSilhouette/DB 评估,Canvas 散点图 + 地理分布
3D 地球 Three.js 流量弧线,TLS 版本着色,经纬线+国境线
降维 UMAP + TruncatedSVD 用于高维数据降维与可视化
实体画像 聚合特征 + Z-Score 簇偏离量,自定义实体列/IP 子网掩码
MCP 协议 30 个 JSON-RPC 工具供外部 LLM 编排调用
增量更新 update.bat + rollback.bat,用户数据/代码分离

技术栈

组件 选型
后端 Django 4.2 + SQLite WAL
数据处理 Polars 1.42 (LazyFrame + streaming)
机器学习 scikit-learn (HDBSCAN, KMeans, MiniBatchKMeans, IsolationForest), UMAP, TruncatedSVD, StandardScaler
前端 3D Three.js (603KB, 离线, 地球贴图 1.4MB)
前端图表 纯 Canvas 2D (散点图/地理分布/Silhouette)
配置管理 Pydantic + YAML
LLM 协议 MCP SDK (stdio) + OpenAI 兼容 API
运行时 内嵌 Python 3.12 (~593MB)

安装

项目自包含,无需预装 Python。解压后即可使用。

:: 首次部署 — 初始化数据库
runtime\python\python.exe manage.py migrate

使用方法

:: 双击启动 Web 界面 (http://127.0.0.1:8000/)
run.bat          :: 非阻塞启动,打印 PID 后退出,日志写入 logs/tianxuan.log

:: 命令行一键管道
runtime\python\python.exe manage.py run_pipeline "data/*.csv"

:: 开发模式启动
set PYTHONUTF8=1
runtime\python\python.exe manage.py runserver

Web 工作流: 上传 CSV → 手动分析(工作流构建器)或 LLM 自动分析 → 检视聚类概览/簇详情/实体画像/3D 地球

CLI 管道: 加载 CSV → 类型检测 → 实体聚合 → 聚类 → 特征提取 → 写入数据库

项目结构

天璇/
├── analysis/                    核心分析模块 (Django app)
│   ├── views/                   视图包 (12 模块)
│   │   ├── __init__.py          重导出所有视图函数
│   │   ├── helpers.py           辅助函数 (_extract_lat, _extract_lon)
│   │   ├── dashboard.py         首页 + 运行记录
│   │   ├── pipeline.py          管道执行器 (_run_pipeline_worker)
│   │   ├── clustering.py        聚类概览/详情/3D 地球数据
│   │   ├── entity.py            实体画像页
│   │   ├── upload.py            CSV 上传 (拖拽/多文件/进度)
│   │   ├── manual.py            手动分析工作流构建器
│   │   ├── auto.py              LLM 自动分析 (SSE 流式)
│   │   ├── globe.py             3D 地球数据接口
│   │   ├── config.py            配置编辑 + LLM 连通性测试
│   │   ├── log_viewer.py        日志查看器
│   │   └── tools.py             工具实验室
│   ├── tools/                   工具包 (17 模块, 30 个 MCP 工具实现)
│   │   ├── __init__.py          重导出所有 handler
│   │   ├── _registry.py         工具元数据定义 (Tool schema)
│   │   ├── _dispatch.py         工具调用分发器
│   │   ├── _helpers.py          共享辅助 (过滤/截断/数据集决议)
│   │   ├── load_data.py         CSV 加载 (glob/递归/ZIP/schema 容错)
│   │   ├── profile.py           数据概要统计 + 相关性矩阵
│   │   ├── filter.py            数据过滤 (12 操作符 + AND/OR)
│   │   ├── preprocess.py        预处理 (StandardScaler/OneHot/填充)
│   │   ├── clustering.py        聚类执行 (HDBSCAN/KMeans + 自动降维)
│   │   ├── evaluate.py          聚类质量评估 (Silhouette/DB/CH)
│   │   ├── features.py          特征提取 (Z-Score/ANOVA/UMAP)
│   │   ├── entities.py          实体画像 + 自适应评分 (SVD 权重)
│   │   ├── anomalies.py         异常检测 (IsolationForest) + UMAP 可视化
│   │   ├── export.py            结果导出 (CSV/Parquet/JSON)
│   │   ├── analysis.py          只读分析 (6 工具: 模式/时序/FFT/TLS/地理/实体)
│   │   ├── diagnostics.py       诊断 (7 工具: 校验/分布/异常值/聚类诊断/对比/导出/修复)
│   │   ├── data_mgmt.py         数据管理 (列表/删除/克隆)
│   │   └── distance_matrix.py   LLM 驱动距离计算
│   ├── tool_registry.py         旧编排层 (薄包装,重导出 tools/)
│   ├── mcp_server.py            MCP stdio 服务器
│   ├── data_loader.py           CSV 加载底层实现
│   ├── data_profiler.py         列统计 + 相关性矩阵
│   ├── data_validator.py        列校验 (缺失/异常值/IP 有效性)
│   ├── type_classifier.py       值优先类型检测 (MAC/端口/IPv4/URL/HEX/经纬度)
│   ├── geoip.py                 GeoIP 经纬度查询
│   ├── ip_clustering.py         IP 子网聚类与转换
│   ├── session_store.py         线程安全内存会话存储
│   ├── distance.py              距离计算 (IP 子网/地理/Levenshtein/Hamming/FFT)
│   ├── models.py                ORM: AnalysisRun, ClusterResult, EntityProfile, ClusterFeature
│   ├── urls.py                  路由注册
│   ├── nl_describe.py           自然语言数据描述
│   ├── profile_util.py          画像工具函数
│   ├── tls_ref.py               TLS 参考数据
│   ├── db_utils.py              SQLite 工具
│   ├── constants.py             全局常量
│   ├── appdata.py               应用数据路径管理
│   └── management/commands/     CLI 命令
│       ├── start_mcp.py         MCP 服务器启动
│       ├── run_pipeline.py      一键 CLI 管道
│       └── import_tlsdb.py      TLS 数据库导入
├── tianxuan/                    Django 项目配置
│   ├── settings.py              ALLOWED_HOSTS 自动检测, LOGGING 文件+stderr
│   ├── wsgi.py                  SQLite 启动自修复
│   ├── urls.py                  路由汇总
│   └── llm_orchestrator.py     LLM 编排 (策略式提示词, 自动错误恢复)
├── config/                      配置管理
│   ├── config.yaml              自动生成默认配置 (entity, server, data, clustering, llm)
│   ├── loader.py                Pydantic 配置加载 + 文件修改检测
│   └── __init__.py
├── templates/                   页面模板 (13 个 HTML)
│   ├── base.html                导航: 首页/上传/手动/LLM/记录/地球/配置
│   ├── analysis/                分析页面 (6 个)
│   │   ├── dashboard.html       首页
│   │   ├── run_list.html        运行记录列表
│   │   ├── run_detail.html      运行详情
│   │   ├── cluster_overview.html 聚类概览
│   │   ├── cluster_detail.html  簇详情
│   │   └── entity_profile.html  实体画像
│   └── tianxuan/                功能页面 (6 个)
│       ├── upload.html          CSV 上传
│       ├── manual.html          手动分析
│       ├── auto.html            LLM 自动分析
│       ├── globe.html           3D 地球
│       ├── config.html          配置编辑
│       └── log_viewer.html      日志查看
├── static/tianxuan/             离线静态资源
│   ├── three.min.js             Three.js 3D 引擎 (603KB)
│   ├── earth_atmos_2048.jpg     地球贴图 (1.4MB)
│   └── world_borders.js         177 国完整国境线 (269KB)
├── runtime/python/              便携 Python 3.12 运行时 (~593MB)
├── scripts/                     工具脚本
│   ├── gen_test_data.py         测试数据生成
│   ├── gen_complex_test.py      复杂数据生成
│   ├── column_survey.py         CSV 列结构调查
│   ├── diagnose_compare.py      跨机日志对比诊断
│   └── debug_db.py              DB 持久化调试
├── tests/                       端到端测试
│   ├── test_e2e_full.py
│   ├── test_e2e_batch.py
│   └── _test_hdbscan.py
├── docs/                        文档
│   ├── 工作流.md                 完整分析流水线
│   └── 故障诊断手册.md            问题排查指南
├── run.bat                      用户启动入口 (含 PYTHONUTF8=1)
├── shell.bat                    Django shell
├── update.bat                   增量更新
├── rollback.bat                 更新回滚
├── build.bat                    构建打包
└── manage.py                    Django 管理入口

架构要点

  • views 包: 原单体 views.py (2000+ 行) 拆分为 12 个模块,按功能域分离 (dashboard, pipeline, clustering, entity, upload, manual, auto, globe, config, log_viewer, tools, helpers)
  • tools 包: 原 tool_registry.py 拆分为 17 个模块 (14 个 handler 模块 + 3 个基础设施模块),每个工具领域独立文件
  • 30 个 MCP 工具 分四层: 核心 (14 个)、只读分析 (6 个)、诊断 (7 个)、数据管理 (3 个)
  • 纯 Canvas 2D 图表: 零外部 JS 依赖,散点图/地理分布/Silhouette 均纯 Canvas 绘制
  • tuple 替代 frozenset: 避免跨机 PYTHONHASHSEED 差异
  • 值优先类型检测: config → 值采样 → 名称推断 → STRING 回退 (type_classifier.py)
  • TruncatedSVD 降维: 特征 >50 维时自动降维至 50compute_scores 中学习自适应评分权重
  • UMAP 2D 嵌入: 训练 10K 样本 + 批量变换 1K 批次,存入 EntityProfile 表
  • 上传目录隔离: %APPDATA%/TianXuan/data/uploads/,与项目路径无关

目标设备

条件 规格
操作系统 Windows 10 1909+
内存 8 GB
GPU 无独立显卡(核显可运行 Three.js)
磁盘 SSD 推荐(SQLite WAL 优化)
数据规模 支持 2500 个 CSV × 10000 行 × 50~58 列
S
Description
No description provided
Readme 75 MiB
Languages
Python 53.7%
JavaScript 24.7%
HTML 21.3%
Batchfile 0.3%