AI生态系统监控工具

aEye Watcher是一个全栈AI生态系统监控工具,用于扫描和监控系统中的AI提供商、模型、代理、MCP服务器、ACP代理和向量数据库等组件。

  • by NathanielRand
  • Svelte
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 NathanielRand/aEyeWatcher

使用说明

◉ aEye Watcher v2

“每个模特都会留下痕迹。每个经纪人都会留下足迹。我们都会观察他们。”

a眼动仪 是一个全栈人工智能生态系统监视器——一个实时的指挥中心,可以扫描整个系统中的人工智能提供商、模型、代理、MCP服务器、ACP代理、矢量数据库等。采用复古侦探/颗粒状漫画书指挥中心美学建造。


建筑

aeye_watcher_core/     ← Go backend API + WebSocket scan engine
aeye_watcher_ui/       ← SvelteKit 5 + Tailwind frontend

两者完全脱钩。核心公开REST+WebSocket端点;任何前端都可以使用它。


aeye_watcher_core(Go)

特性

  • 操作系统探测 --Linux(发行版/版本)、macOS、Windows;主机名、arch、容器检测
  • GPU监控 --英伟达(NVIDIA smi)、AMD(ROCm)、苹果硅;实时VRAM使用情况
  • 深度模型扫描仪 --狩猎 .gguf, .safetensors, .onnx, .pt, .pth, .bin, .mlmodel, .tflite, .engine, .llamafile 在整个文件系统中。将已知提供程序目录之外的文件标记为 孤立的
  • 提供程序解析 --Ollama清单、HuggingFace中心缓存、LM Studio缓存
  • 组件检测器 --30+组件:Ollama、LM Studio、LocalAI、vLLM、骆驼服务器、KoboldCPP、Jan、Aider、Claude Code、AutoGPT、CrewAI、LangChain、LiteLLM、ChromaDB、Qdrant、Weaviate、Open WebUI、Whisper、Piper、Langfuse等
  • MCP服务器扫描程序 --解析Claude Desktop、Cursor、Windsurf、Continue、Zed配置;发现 mcpServers 阻碍;探头端口;走 ~ 对于任何 mcp*.json
  • ACP代理扫描仪 --探头 /.well-known/agent.json 在标准代理端口上
  • 代理生态系统卡 --配置10个代理生态系统(Claude Code、Aider、CrewAI、Ollama、LM Studio、OpenInterpreter、AutoGPT、LangChain、Open WebUI、Continue)以及预期的文件清单
  • 磁盘扫描器 --用使用统计数据映射所有实际卷;跨平台(Linux df,Windows wmic)
  • WebSocket扫描进度 --分阶段实时事件,包括完成百分比、检查点和发现的项目
  • 安全模式删除 --在不接触文件的情况下记录清理请求;通过以下方式选择加入 AEYE_UNSAFE_DELETE=1

API终点

方法 路径 描述
WS /ws/scan 实时扫描WebSocket--流 ScanEvent JSON
GET /api/gpu 当前GPU统计数据(可轮询)
GET /api/os 操作系统/系统信息
GET /api/scan/cached 上次扫描结果(JSON)
POST /api/delete 请求模型清理(安全模式)
GET /health 健康检查

WebSocket事件架构

{
  "type": "checkpoint | progress | found | complete | error",
  "phase": "system | gpu | disk | components | mcp | acp | models | agents | complete",
  "message": "Human-readable status string",
  "percent": 0-100,
  "detail": { ... }  // present on 'found' and 'complete' events
}

这 complete 事件的 detail 字段已满 ScanResult 对象。

设置和运行

cd aeye_watcher_core

# Install dependencies
go mod tidy

# Run (default port 8080)
go run main.go

# Custom port
go run main.go -port 9090

# Build binary
go build -o aeye-core main.go
./aeye-core

要求: 转到1.22+。可选: nvidia-smi 用于GPU监控。


aeye_watcher_ui(SvelteKit)

特性

  • Svelte 5符文模式 — $state, $derived, $effect 贯穿
  • 5主题 --黑曜石(紫色)、粘土(橙色)、森林(绿色)、板岩(蓝色)、琥珀色(黄色)——所有颜色均为柔和/深色,带有颗粒状覆盖层
  • 复古侦探美学 --特殊精英+快递Prime+Rajdhani字体,纹理SVG叠加,动画发光点,漫画风格的图像
  • 实时websocket扫描 带有动画进度条、阶段指示器、滚动实时提要
  • 指挥中心仪表板 --统计卡、实时提供商芯片、磁盘概述、活动馈送
  • 供应商视图 --按类型分组(提供者、网关、矢量数据库、GUI、TTS、可观察性)
  • 代理生态系统卡 --点击查看带有预期文件清单的完整字符卡
  • MCP/ACP视图 --所有发现的MCP配置和活性ACP药物
  • 模型缓存 --可搜索/可过滤的模型列表,带有孤儿标签、格式徽章、大小、清理
  • 存储视图 --带有使用条的完整磁盘卡
  • 活动日志 --带时间戳的实时事件提要

设置和运行

cd aeye_watcher_ui

# Install deps
npm install

# Dev server (proxies /api and /ws to localhost:8080)
npm run dev

# Build for production
npm run build
npm run preview

要求: 节点18+。Go核心必须在端口8080上运行(或更新 CORE_URL 在 src/lib/stores/app.svelte.ts).


扫描阶段

阶段 发生了什么
system 操作系统检测、主机名、arch
gpu nvidia smi/rocm smi/sysctl探针
disk df / wmic 卷枚举
components 30+CLI+对提供商、代理、网关等进行端口检查。
mcp MCP服务器配置文件漫游+端口探测
acp /.well-known/agent.json 代理端口探测
models Ollama清单→ 高频缓存→ 深度文件系统漫游
agents 代理生态系统分析和文件清单
complete 满 ScanResult 在WebSocket上发出

孤立模型检测

模型文件已被标记 孤立的 如果它存在于所有已知的提供者目录之外:

  • ~/.ollama/models
  • ~/.cache/huggingface/hub
  • ~/.cache/lm-studio/models
  • ~/.local/share/lm-studio/models
  • ~/Library/Application Support/LM Studio (macOS)
  • koboldcpp, llama.cpp, text-generation-webui/models, oobabooga

孤立文件在“模型”视图中标记为要清理。


主题系统

主题通过以下方式应用 data-theme 上 <html> CSS变量:

主题 口音 氛围
obsidian #c084fc 紫色——默认深色操作
clay #fb923c 暖橙色——尘土飞扬的侦探
forest #4ade80 绿色-现场操作
slate #7dd3fc 钢蓝——冷智能
amber #fbbf24 金-黑灯

选择持续到 localStorage.


实现真正的删除

默认情况下,删除API位于 安全模式 --它记录请求,但不涉及文件。要启用:

AEYE_UNSAFE_DELETE=1 go run main.go

然后取消注释 os.Remove 挡住 internal/server/server.go.


扩展扫描仪

添加新组件 → 附加到 componentDefs 在 internal/scanner/components.go

添加新的模型扩展 → 附加到 modelExtensions 在 internal/scanner/models.go

添加新的代理生态系统 → 附加到 getAgentDefs() 在 internal/scanner/agents.go

添加新的MCP配置路径 → 附加到 getMCPConfigPaths() 在 internal/scanner/mcp_acp.go


项目结构

aeye_watcher_core/
├── main.go
├── go.mod
├── go.sum
└── internal/
    ├── models/
    │   └── types.go          # All shared data types
    ├── os_detect/
    │   └── detect.go         # OS/arch/GPU detection
    ├── disk/
    │   └── disk.go           # Cross-platform disk scanner
    ├── scanner/
    │   ├── components.go     # Provider/agent/gateway detection
    │   ├── models.go         # Model file hunting (Ollama, HF, deep scan)
    │   ├── mcp_acp.go        # MCP server + ACP agent discovery
    │   ├── agents.go         # Agent ecosystem card builder
    │   └── gpu.go            # GPU stats (NVIDIA/AMD/Apple)
    └── server/
        └── server.go         # HTTP + WebSocket server

aeye_watcher_ui/
├── package.json
├── svelte.config.js
├── vite.config.ts
├── tailwind.config.js
├── tsconfig.json
└── src/
    ├── app.html
    ├── app.css
    ├── lib/
    │   ├── types.ts              # TypeScript mirrors of Go types
    │   └── stores/
    │       └── app.svelte.ts     # All reactive state + API calls
    └── routes/
        ├── +layout.svelte
        └── +page.svelte          # Full command center UI