◉ 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,Windowswmic) - 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 上 `` 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