大模型应用
需要自建多源 OSINT 监控与实时告警面板时,用…
在自托管环境中部署 Crucix,每 15 分钟抓取 27 个开源情报源,生成 WebGL 仪表盘、LLM 分析及 Telegram/Discord 实时告警。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要自建多源 OSINT 监控与实时告警特定
解决思路
- 安装:git clone https://github.com/calesthio/Crucix.git;cd crucix;npm install;cp .env.example .env 并编辑 .env;npm run dev;仪表盘在 http://localhost:3117。
- Docker 安装:cp .env.example .env;docker compose up -d;sweep 数据通过 volume mount 持久化到 ./runs/。
- 环境要求:Node.js 22+,使用原生 fetch、top-level await、ESM modules。
- 若 npm run dev 静默退出:运行 node --trace-warnings server.mjs 绕过 npm script runner,尤其适合 Windows PowerShell;运行 node diag.mjs 诊断 Node 版本、模块导入、端口可用性。
- 配置核心免费 API:设置 FRED_API_KEY=(fred.stlouisfed.org)、FIRMS_MAP_KEY=(firms.modaps.eosdis.nasa.gov)、EIA_API_KEY=(eia.gov/opendata/register.php)。
- 配置可选数据源:ACLED_EMAIL= 和 ACLED_PASSWORD=(acleddata.com/register)、AISSTREAM_API_KEY=(aisstream.io,免费)、ADSB_API_KEY=(RapidAPI,约 $10/月)。
- 配置 LLM Provider:LLM_PROVIDER=anthropic | openai | gemini | codex;LLM_API_KEY=;codex 不需要 LLM_API_KEY,使用 ~/.codex/auth.json。
- 配置 Telegram Bot:TELEGRAM_BOT_TOKEN=(来自 @BotFather)、TELEGRAM_CHAT_ID=(来自 @userinfobot)、TELEGRAM_CHANNELS=(可选,超出 17 个内置频道的额外频道 ID)、TELEGRAM_POLL_INTERVAL=(命令轮询间隔,默认 5000ms)。
- 配置 Discord Bot:DISCORD_BOT_TOKEN=(Discord Developer Portal → Bot → Token)、DISCORD_CHANNEL_ID=(右键频道 → Copy Channel ID)、DISCORD_GUILD_ID=(可选,用于即时注册 slash command)、DISCORD_WEBHOOK_URL=(可选,仅告警模式,无需 discord.js)。
- 配置可选交易:ALPACA_API_KEY= 和 ALPACA_SECRET_KEY=。
- 关键命令 npm run dev:启动 dashboard 并自动 reload。
- 关键命令 node server.mjs:直接启动,绕过 npm script runner。
- 关键命令 node diag.mjs:诊断安装问题。
- 关键命令 docker compose up -d:用 Docker 后台运行。
- 关键命令 npx @openai/codex login:通过 ChatGPT 订阅认证 Codex LLM。
- Telegram 命令 /status:查看 system health、last sweep time、source/LLM status。
- Telegram 命令 /sweep:立即触发手动 intelligence sweep。
- Telegram 命令 /brief:紧凑文本摘要,包含 direction、key metrics、top OSINT。
- Telegram 命令 /portfolio:查看 portfolio status,需要 Alpaca keys。
- Telegram 命令 /alerts:查看 recent alert history 和 tier labels。
- Telegram 命令 /mute 或 /mute 2h:静默 alerts 1 小时或自定义时长。
- Telegram 命令 /unmute:恢复 alerts。
- Telegram 命令 /help:列出所有命令。
- Discord 完整机器人模式安装 discord.js:运行 npm install discord.js,启用 slash commands 和 rich embeds;否则 Crucix 自动回退到 webhook-only。
- Discord slash commands 可用:/status、/sweep、/brief、/portfolio。
- Discord alert embeds 颜色编码:🔴 red = FLASH,🟡 yellow = PRIORITY,🔵 blue = ROUTINE。
- Discord webhook-only 模式:不安装 discord.js 时,在 .env 设置 DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN,无 slash commands。
- 配置 Anthropic Claude:LLM_PROVIDER=anthropic,LLM_API_KEY=$ANTHROPIC_API_KEY。
- 配置 OpenAI:LLM_PROVIDER=openai,LLM_API_KEY=$OPENAI_API_KEY。
- 配置 Google Gemini:LLM_PROVIDER=gemini,LLM_API_KEY=$GEMINI_API_KEY。
- 配置 OpenAI Codex:运行 npx @openai/codex login 认证一次,设置 LLM_PROVIDER=codex,不需要 LLM_API_KEY。
- LLM 失败非致命:Crucix 自动回退到 rule-based alert evaluation,不会让 sweep cycle 崩溃。
- 每个 15 分钟 sweep cycle 第 1 步 Parallel fetch:同时查询全部 27 个源,约 30–60 秒。
- 第 2 步 Synthesis:将原始数据归一化为 dashboard 格式。
- 第 3 步 Delta computation:计算相对上一次运行的变化、升级或降级。
- 第 4 步 LLM analysis:生成 5–8 个 trade ideas,或使用 rule-based fallback。
- 第 5 步 Alert evaluation:按 FLASH / PRIORITY / ROUTINE 分层,并进行 semantic dedup。
- 第 6 步 Push:通过 SSE 更新所有已连接浏览器,并在配置后推送 Telegram/Discord。
- 第 7 步 Persistence:将 sweep 写入 ./runs/ 目录。
- 仪表盘 3D WebGL globe:使用 Globe.gl,带 atmosphere、star field、rotation 和 flat map toggle。
- 仪表盘 9 种 marker 类型:fires、aircraft、radiation、maritime chokepoints、SDR receivers、OSINT events、health alerts、geolocated news、conflict events。
- 仪表盘动画 3D flight arcs:在 air traffic hotspots 之间显示。
- 仪表盘区域过滤:World、Americas、Europe、Middle East、Asia Pacific、Africa。
- 仪表盘实时市场:indexes、crypto、energy、commodities,使用 Yahoo Finance,无需 key。
- 仪表盘风险 gauge:VIX、high-yield spread、supply chain pressure index。
- 仪表盘 OSINT feed:17 个内置 Telegram intelligence channels。
- 仪表盘 Sweep Delta panel:实时显示本周期变化 diff。
- 仪表盘 nuclear watch:Safecast + EPA RadNet radiation readings。
- 仪表盘 space watch:CelesTrak satellite tracking — ISS、Starlink、military constellations。
- 最小化设置(无 API keys):直接 npm run dev;无 key 的源仍会填充 Yahoo Finance markets、CelesTrak satellites、GDELT news、RSS feeds、OpenSky flight tracking(public tier)、Safecast radiation。
- 最大免费覆盖:注册三个免费 key(总计约 3 分钟):FRED_API_KEY、FIRMS_MAP_KEY、EIA_API_KEY。
- 仅 Telegram 告警(无 LLM):设置 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID,故意省略 LLM_PROVIDER,rule-based alerts 仍会触发。
- 完整栈(LLM + 两个 bot):设置 FRED_API_KEY、FIRMS_MAP_KEY、EIA_API_KEY、LLM_PROVIDER=anthropic、LLM_API_KEY、TELEGRAM_BOT_TOKEN、TELEGRAM_CHAT_ID、DISCORD_BOT_TOKEN、DISCORD_CHANNEL_ID、DISCORD_GUILD_ID。
- 添加额外 Telegram OSINT 频道:在 TELEGRAM_CHANNELS 中以逗号分隔频道 ID,超出 17 个内置频道,例如 -1001234567890,-1009876543210。
- 仪表盘启动后为空:正常,第一次 sweep 需要 30–60 秒查询全部 27 个源,等待完成。
- npm run dev 静默退出(尤其 Windows PowerShell):运行 node --trace-warnings server.mjs 或 node diag.mjs。
- 端口已被占用:默认端口 3117;macOS/Linux 运行 lsof -i :3117,Windows 运行 netstat -ano | findstr :3117。
- Telegram bot 收不到命令:验证 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID 都已设置;确认 chat ID 是个人聊天而非群组(用 @userinfobot);默认轮询 5000ms,可设 TELEGRAM_POLL_INTERVAL=2000 加快响应。
- Discord slash commands 不出现:设置 DISCORD_GUILD_ID 以即时注册(否则全局最多 1 小时);确保 bot 邀请 URL 包含 bot 和 applications.commands scopes;在 Developer Portal 启用 Message Content Intent。
- LLM 错误导致 sweep 崩溃:不会崩溃;LLM 失败会被捕获,sweep 继续用 rule-based fallback;检查日志中的 provider 错误(无效 key、rate limit 等)。
- ACLED 冲突数据缺失:ACLED 使用 OAuth2 email/password,必须同时设置 ACLED_EMAIL 和 ACLED_PASSWORD。
- Sweep 数据持久化:所有运行保存到 ./runs/;Docker 中该目录是 volume-mounted,容器重启后数据仍保留。
适用边界 · 注意事项
- 不想自托管或无法运行 Node.js 22+/Docker 的环境。
- 希望零配置开箱即用、且不愿申请任何 API key/LLM/Telegram/Discord 的场景。
- 需要现成托管型商业 OSINT 服务,或环境禁止访问外部开源情报源。