TechTonicShift/CityGuardAI
GitHub: TechTonicShift/CityGuardAI
一个集成了3D数字孪生、AI事件分析和自主响应工作流的智慧城市运营仪表板原型系统。
Stars: 0 | Forks: 0
# 🏙️ CityGuardAI
### 自主自愈型智慧城市运营仪表板
**见证一座城市在众目睽睽之下检测、解释并修复基础设施问题。**
[](https://nodejs.org/)
[](https://maplibre.org/)
[](https://ollama.com/)
[](LICENSE)
*一个零依赖的全栈原型,模拟了一个未来的城市街区,传感器在此检测问题,AI 进行解释,自主机器人进行修复——所有这些都可在实时的数字孪生中看到。*
## 📸 演示
### 英雄仪表板 — 高管视图

### 实时数字孪生 — 交互式 3D 地图

### AI Copilot — 可解释性层

### 运营视图 — 响应队列、自主任务与机队

### 事件历史与解决动态

## ✨ 功能
### 🧠 AI 驱动的智能
| 功能 | 描述 |
|---------|-------------|
| **AI Copilot** | 由 Ollama 驱动的自然语言解释,针对每个事件——为何重要、该做什么以及接下来会发生什么 |
| **事件分析** | 结构化的 JSON 简报,包含置信度分数、修复步骤和利益相关者更新 |
| **城市简报** | 高管级别的城市态势摘要、主要风险及建议的下一步行动 |
| **可解释性** | 每一个自主决策都是可追溯且能用通俗易懂的英语解释的 |
### 🗺️ 实时数字孪生
| 功能 | 描述 |
|---------|-------------|
| **3D 等轴测视图地图** | MapLibre GL 将建筑物、道路、管道、区域和仓库渲染为一个生动的城市模型 |
| **实时事件** | 带有严重程度编码光晕的脉动标记显示活跃的问题 |
| **维修路线** | 动画路线显示无人机的飞行路径和地面机器人的导航 |
| **资产追踪** | 地图上所有自主资产的实时位置 |
### 🤖 自主响应引擎
| 功能 | 描述 |
|---------|-------------|
| **自动调度** | AI 根据能力将最合适的可用机器人/无人机匹配给每个事件 |
| **任务生命周期** | 全周期:检测 → 调度 → 进行中 → 修复 → 验证 → 已解决 |
| **机队管理** | 电池监控、充电周期和基于能力的分配 |
| **传感器网络** | 跨越水务、道路、空气质量和洪水类别的健康追踪传感器 |
### 🎛️ 多视图仪表板
| 视图 | 受众 | 展示内容 |
|------|----------|-------|
| **高管** | 市长、投资者 | 城市健康、KPI、实时动态、证据时间线 |
| **运营** | 城市运营商 | 事件队列、任务、机队和场景构建器 |
| **市民** | 公众 | 关于其社区正在发生的事情的通俗语言通告 |
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────────┐
│ Browser (Frontend) │
│ ┌──────────┐ ┌───────────┐ ┌───────────────────────┐ │
│ │ app.js │ │ styles.css│ │ MapLibre GL (vendor) │ │
│ │ SSE ←────│──│───────────│──│── Map Rendering │ │
│ │ UI Logic │ │ Dark Theme│ │ 3D Buildings │ │
│ └────┬─────┘ └───────────┘ │ Route Animation │ │
│ │ └───────────────────────┘ │
└───────│─────────────────────────────────────────────────┘
│ HTTP + SSE
┌───────▼─────────────────────────────────────────────────┐
│ server.js (Backend) │
│ ┌──────────────┐ ┌─────────────┐ ┌────────────────┐ │
│ │ Incident │ │ Mission │ │ city-layout.js │ │
│ │ Engine │ │ Lifecycle │ │ GeoJSON Gen │ │
│ ├──────────────┤ ├─────────────┤ ├────────────────┤ │
│ │ Auto-Dispatch│ │ Fleet Mgmt │ │ Route Planning │ │
│ ├──────────────┤ ├─────────────┤ ├────────────────┤ │
│ │ Sensor Sim │ │ SSE Stream │ │ Map Payload │ │
│ └──────┬───────┘ └─────────────┘ └────────────────┘ │
│ │ │
│ ┌──────▼───────┐ ┌─────────────────────────────────┐ │
│ │ data/ │ │ Ollama AI Integration │ │
│ │ store.json │ │ Incident Analysis + City Briefs │ │
│ │ seed.json │ │ Structured JSON Output │ │
│ └──────────────┘ └─────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
```
## 🚀 快速开始
### 前置条件
- [Node.js](https://nodejs.org/) v18 或更高版本
- [Ollama](https://ollama.com/) (可选 — 用于 AI Copilot 功能)
### 安装
```
# 克隆 repository
git clone https://github.com/TechTonicShift/CityGuardAI.git
cd CityGuardAI
# 启动 server(零依赖——无需 npm install!)
npm start
```
仪表板将可通过 **http://localhost:3000** 访问
### 启用 AI Copilot (可选)
```
# 安装并启动 Ollama
ollama serve
# Pull 推荐的 model
ollama pull qwen3-coder:480b-cloud
# Server 自动连接到位于 http://127.0.0.1:11434/api 的 Ollama
```
对于云端托管的 Ollama 端点:
```
OLLAMA_BASE_URL=https://your-ollama-endpoint.com/api \
OLLAMA_API_KEY=your-api-key \
npm start
```
### 重置演示数据
```
npm run reset
```
## 🎮 使用指南
### 1. **运行演示场景**
点击 **"Run Demo Scenario"** 按钮注入随机的基础设施事件(水管泄漏、道路断裂、空气污染或洪水风险)。系统将:
- 通过传感器网络检测异常
- 使用 AI 分类严重程度和类别
- 在数字孪生地图上显示
- 自动调度最匹配的机器人或无人机(如果自动响应开启)
### 2. **探索视图**
使用顶部的模式标签在 **Executive (高管)**、**Operations (运营)** 和 **Citizen (市民)** 视图之间切换。
### 3. **与事件交互**
点击地图或队列中的任何事件标记以查看:
- 完整的事件详情和 AI 评估
- 置信度分数和预测影响
- 带有时间戳操作的工作日志
### 4. **使用 AI Copilot**
- **"Explain Selected Incident"** — 获取详细的 AI 分析,解释系统为何选择特定的响应
- **"Generate City Brief"** — 获取整个城市当前状态的高管级摘要
### 5. **构建自定义场景**
在运营视图中,使用 **Scenario Builder** 表单创建具有特定类别、严重程度和描述的自定义事件。
## 📁 项目结构
```
CityGuardAI/
├── index.html # Dashboard UI — hero, map, sidebars, operations panels
├── styles.css # Full stylesheet — dark theme, responsive, view modes
├── app.js # Frontend logic — map rendering, SSE, AI copilot, UI state
├── server.js # Backend — HTTP server, incident engine, missions, AI integration
├── city-layout.js # GeoJSON generator — buildings, roads, pipes, zones, routes
├── reset-data.js # Utility to reset store.json back to seed state
├── package.json # Project manifest (zero external dependencies)
├── data/
│ ├── seed.json # Initial city state — sensors, assets, incidents
│ └── store.json # Runtime state (auto-managed by server)
├── vendor/
│ ├── maplibre-gl.js # MapLibre GL JS (vendored for zero-dependency setup)
│ └── maplibre-gl.css # MapLibre GL styles
└── screenshots/ # Demo screenshots for documentation
```
## 🔧 技术亮点
| 方面 | 详情 |
|--------|--------|
| **零依赖** | 无需 `npm install` — 整个堆栈运行在 Node.js 内置模块 + 内置的 MapLibre 上 |
| **Server-Sent Events** | 从服务器向所有连接的客户端实时流式更新 |
| **GeoJSON 管道** | 程序化生成的城市几何结构——建筑物、道路、管道、区域——皆在代码中 |
| **结构化 AI 输出** | Ollama 生成符合严格模式的 JSON 响应,以便可靠解析 |
| **模拟引擎** | 基于时间片的模拟,包含电池消耗、传感器健康恢复和任务进展 |
| **多视图架构** | 单个 HTML 页面通过 CSS 数据属性提供三种不同的体验 |
| **有状态持久化** | 所有城市状态保存至 `store.json`,并在服务器重启后保留 |
## 🌐 API 端点
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `GET` | `/` | 提供仪表板服务 |
| `GET` | `/api/overview` | 完整的城市状态快照 |
| `GET` | `/api/stream` | 用于实时更新的 SSE 流 |
| `POST` | `/api/incident` | 创建新事件 |
| `POST` | `/api/simulate` | 运行随机演示场景 |
| `POST` | `/api/dispatch/:id` | 调度资产至事件 |
| `POST` | `/api/resolve/:id` | 将事件标记为已解决 |
| `POST` | `/api/mode` | 切换自动治愈模式 |
| `GET` | `/api/ai/status` | 检查 Ollama AI 可用性 |
| `GET` | `/api/ai/incident/:id` | AI 对特定事件的分析 |
| `GET` | `/api/ai/brief` | AI 生成的城市简报 |
| `POST` | `/api/reset` | 重置为种子状态 |
## 🧪 演示场景类型
| 场景 | 类别 | 示例 |
|----------|----------|---------|
| 💧 **水管泄漏预测** | `water` | 管道应力模型预测公用电网附近的管壁快速疲劳 |
| 🛣️ **道路断裂进展** | `roads` | 道路视觉和振动节点在一条过境车道上发现活跃裂缝 |
| 🏭 **工业污染羽流** | `air` | 工业带的烟囱排放超过了周边空气基线 |
| 🌊 **雨水渠溢流风险** | `flood` | 排水口声纳报告河流边缘滞留池附近流量急剧飙升 |
## 🤖 自主机队
| 资产 | 类型 | 能力 |
|-------|------|-------------|
| **PipeBot 11** | 地面机器人 | 密封夹具、内部爬行、压力验证 |
| **Road Rover 07** | 地面机器人 | 表面扫描、沥青打印修复、交通锥部署 |
| **Aerial Drone 03** | 无人机 | 检查、测绘、补丁投递 |
| **AirSweep Unit 02** | 地面机器人 | 空气采样、中和、收容、压力分流 |
## 📄 许可证
本项目采用 MIT 许可证授权。
*一个零依赖的全栈原型,模拟了一个未来的城市街区,传感器在此检测问题,AI 进行解释,自主机器人进行修复——所有这些都可在实时的数字孪生中看到。*
**Built with 🧠 AI + 🗺️ Maps + 🤖 Autonomous Systems**
*CityGuardAI — 基础设施自愈之地。*
标签:3D可视化, AIOps, AI风险缓解, DLL 劫持, GNU通用公共许可证, HTTP/HTTPS抓包, LLM评估, MapLibre GL, MITM代理, Node.js, Ollama, 人工智能, 仪表盘, 城市基础设施管理, 大语言模型, 异常检测, 态势感知, 数字孪生, 数字孪生城市, 智慧城市, 智慧市政, 智能运维, 物联网, 用户模式Hook绕过, 自动驾驶, 自定义脚本, 自我修复, 运维自动化