Global Threat Map
在交互式地图上汇总全球安全事件、冲突与军事部署情报。
README 区分公开 Mapbox 令牌、服务端 Valyu/OpenAI 密钥,并说明外部 API、OAuth PKCE、本地存储、计费及来源引用,因此数据流、外部影响和归因有一定透明度。扣分原因是自托管模式向所有用户开放由部署者付费的功能,未说明速率限制、权限最小化、危险或高成本操作的二次确认、令牌存储防护、依赖审计、数据保留或撤销/回滚机制。
技术栈、路由、依赖和运行流程大体相互对应,外部服务前置条件也有列出。扣分原因是 README 要求 Node.js 18+,而 package.json 要求 >=22.13.0;README 使用 npm,清单却指定 pnpm;README 的 MIT 与清单的 ISC 也冲突。没有提供错误状态、超时、重试、降级或用户可操作失败消息的证据。
目标用户、地图浏览、事件筛选、国家冲突、实体研究、警报、自托管与 OAuth 场景描述充分。能力边界和触发入口基本清楚,包括认证门控与“地域警报即将推出”。扣分原因是没有明确研究查询的允许范围、使用限制或误触发控制,而且 Node/npm 与清单要求不一致,削弱环境适配性。
README 的功能、结构、安装、使用、API 路由和认证章节组织清楚,并提供多种交互示例。扣分原因是安装工具和 Node 版本不一致,部分宣称功能仅有说明而无 FAQ 或完整限制;许可证在 README 与 package.json 中冲突,没有变更日志、发布策略、维护者身份或明确支持渠道,版本信息只有 1.0.0。
交互地图、过滤事件流、带来源的研究结果以及 CSV、PowerPoint、PDF 导出形成了可直接使用的工作产品,相比普通新闻列表具有整合价值。扣分原因是约 50 页报告、数百来源、实时性和全面性主要是未经佐证的宣称;生成需 5–10 分钟,并会消耗部署者的 Valyu/API 额度,但没有成本估算、配额控制或质量权衡。
README 表示冲突资料和研究结果包含引用及来源 URL,并明确说明数据来自 Valyu 搜索、回答和深度研究,具备基础追踪路径。扣分原因是未展示实际输出、引用模式或交叉核验流程,也未说明如何区分检索事实、模型综合、位置提取推断和威胁等级判断。
- README 声称 MIT,但 package.json 声明 ISC;在分发或部署前必须核实实际许可证。
- 自托管模式把由部署者 Valyu 密钥付费的功能开放给所有用户;应在公开部署前增加认证、速率限制、配额和高成本研究确认。
- README 的 Node.js 18+ 与 package.json 的 >=22.13.0 冲突,npm 安装指令也与 [email protected] 不一致。
- OAuth 用户信息和访问令牌相关状态使用 localStorage;源材料未说明 XSS 防护、令牌过期、撤销或清理策略。
- 地缘政治与威胁信息可能由模型综合或推断;在用于安全、政策或运营决策前,应逐条核查原始来源、日期和推断链。
这个 Agent 能做什么,适合哪些场景?
Global Threat Map 是一个基于 Next.js 16 的全球态势感知 Web 应用,通过深色 Mapbox 地图和实时事件流呈现冲突、抗议、灾害及外交动态。用户可以按威胁等级和类别筛选事件,点击国家查看当前与历史冲突,也可以浏览美国及北约军事基地。系统通过 valyu-js 调用 Valyu Search、Answer 和 Deep Research,生成带来源的冲突分析、实体档案、CSV 数据、PowerPoint 简报和 PDF 报告。应用提供事件、实体、深度研究、国家冲突和军事基地等 API 路由,并以 Zustand 管理地图状态。它可在无需登录的 self-hosted 模式下运行,也支持带 PKCE 的 Valyu OAuth 模式,但两种模式都依赖外部地图和情报服务。
应用的 /api/events 路由通过 Valyu 获取全球事件,并由 lib/event-classifier.ts 分类、由 lib/geocoding.ts 提取位置,再交给 components/map/threat-map.tsx 和事件流界面显示。地图支持聚类、热力图、缩放、自动向东平移以及按威胁等级着色的标记;点击国家会打开 country-conflicts-modal.tsx,通过 /api/countries/conflicts 获取当前和历史冲突。/api/military-bases 提供美国及北约基地位置并缓存一小时。实体研究会调用 /api/entities 并把已知地点显示为紫色标记;/api/deepresearch 创建异步任务,客户端通过 /api/deepresearch/[taskId] 轮询状态和结果。深度研究可产出约 50 页的情报报告、结构化 CSV、8 页 PowerPoint 简报及 PDF;关键词、威胁等级和地区规则用于配置告警,其中地区告警标注为即将推出。
- OSINT 分析师需要在一张地图上跟踪全球冲突、抗议、自然灾害和外交事件,并按类别或威胁等级缩小范围。
- 安全研究人员准备专题简报时,需要针对国家、民兵、私人军事公司、贩毒集团或政治人物生成带来源的深度档案和可导出材料。
- 地缘政治研究者希望点击国家,分别查阅正在发生的安全威胁与历史战争、参战方和结果。
- 新闻编辑部或风险团队需要通过关键词和威胁等级告警关注突发事件,并从事件流快速定位地图位置。
- 军事态势研究者需要同时查看美国军事基地、北约设施及其所在国家,辅助理解全球部署情况。
这个 Agent 有哪些优点和局限?
- 将实时事件流、国家冲突、实体位置和美军/北约基地统一到支持聚类与热力图的 Mapbox 界面中。
- Valyu Deep Research 不只返回页面文本,还可生成详细报告、结构化 CSV、8 页 PowerPoint 和 PDF,适合后续分析与汇报。
- 同时提供无需登录的 self-hosted 模式与基于 OAuth 2.0 PKCE 的 Valyu 模式,可选择统一使用自有密钥或让用户登录。
- 公开了覆盖事件、实体、深度研究、报告、国家冲突和军事基地的具体 API 路由,便于理解前后端边界。
- 核心情报获取与综合依赖 Valyu Search、Answer 和 Deep Research,迁移到其他情报提供商需要重新实现集成。
- 地图必须使用 Mapbox 令牌;位置提取的增强功能还需要额外的 OpenAI API 密钥,因此部署涉及多个外部服务。
- 深度研究报告需要 5 至 10 分钟生成,采用异步创建和轮询模式,不适合要求即时结果的工作流。
- 地区告警仍标注为即将推出,当前告警能力并未完全覆盖所描述的地理规则。
- 来源信息存在许可状态不一致:仓库元数据标为 unknown,而 README 声称 MIT,采用前应核验实际许可证文件。
如何安装或部署这个 Agent?
准备 Node.js 18+、Mapbox 账号与令牌,以及 Valyu API 密钥。克隆仓库后在项目根目录运行 npm install。创建 .env.local,至少写入 NEXT_PUBLIC_MAPBOX_TOKEN=your_mapbox_token_here、VALYU_API_KEY=your_valyu_api_key_here 和 NEXT_PUBLIC_APP_MODE=self-hosted。如需提高位置提取准确度,可再设置 OPENAI_API_KEY=your_openai_api_key_here。运行 npm run dev,然后访问 http://localhost:3000。README 还提供 Railway 一键部署入口,但没有列出其完整配置步骤。
如何使用这个 Agent?
启动后,在地图上缩放或平移,点击事件标记查看详情,点击国家打开当前与历史冲突标签页,点击军事基地查看名称、类型和所在国。事件流支持按 Critical、High、Medium、Low、Info 等威胁等级及 Conflict、Protest、Disaster、Diplomatic 等类别过滤,也可按关键词搜索并跳转到事件地点。左下角播放/暂停按钮控制地图自动平移。需要实体档案时输入国家、组织或人物,深度研究任务通常需要 5 至 10 分钟,可轮询任务状态并下载报告、CSV、PowerPoint 或 PDF。若选择 Valyu OAuth 模式,需配置 README 中列出的授权地址、客户端凭据、应用地址和回调 URI。
常见问题
自托管模式是否需要用户登录?
NEXT_PUBLIC_APP_MODE=self-hosted 是默认模式,不显示登录面板,所有用户均可使用功能,但 Valyu API 用量计入部署者自己的账户。哪些凭据是必需的?
Valyu 模式下未登录用户能使用哪些功能?
深度研究失败或尚未完成时如何处理?
/api/deepresearch 创建异步任务,再用 /api/deepresearch/[taskId] 查询状态和结果。README 说明通常耗时 5 至 10 分钟,但没有给出重试、超时或错误恢复策略。军事基地数据是否每次都实时重新获取?
/api/military-bases 的数据采用一小时缓存;地图初始化时会自动加载这些基地。