
Cycepta 推出本地优先的新兴威胁检测器,从安全新闻流中提前发现威胁
来源标题:Show HN: Local-first emerging-threat detector for the cybersecurity news stream
研究原型 Cycepta 发布,可从 60 多个安全 RSS 源及 NVD/KEV 数据中聚类概念并与历史对比,在交互地图上标出新兴威胁。它还能生成一份 LLM 撰写的 Markdown 报告,并显示相对 CISA KEV 的提前量。项目处于活跃开发阶段,官方提醒其并非生产级安全产品,使用前需自行验证结果。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
为网络安全新闻流打造的新兴威胁检测器
抓取安全新闻和 CVE 信息源,将其向量化,在 UMAP 空间中聚类概念,并在交互式地图上呈现新兴威胁——附一份由 LLM 生成的 Markdown 报告,以及相对于 CISA KEV 的领先时间。项目状态:活跃开发中。Cycepta 是研究原型,不是生产级安全产品。请预期存在 bug、功能不完整和粗糙之处;API、配置和行为可能随时变更,恕不另行通知。在依据任何发现和生成的报告采取行动之前,请先自行验证。Cycepta 是一个本地优先的新兴威胁检测系统。每个周期,它摄入 60 多个精选 RSS 安全源(外加 NVD/KEV 数据),将文档转化为概念聚类,并将新周期与保留的历史进行对比,以回答一个问题:刚刚爆发了什么,而且是在它进入 CISA KEV 之前?
你只需要:运行一条命令,并让它指向公开信息源
Cycepta 将返回:一张交互式概念图、一条实时事件流,以及一份覆盖所有概念的 Markdown 安全报告
实时 RSS 流上的仪表盘:概念图,其中新出现的概念以红色高亮显示。
✨ 功能
检测引擎(NCD)
一键摄入 60 多个安全源——政府公告、厂商研究、独立报道、AppSec/DFIR 博客和学术源,外加 NVD/CVE 数据,支持按来源设置上限、私有主机(SSRF)防护、重定向保护和 HTML 实体清理。每个信息源在整体抓取预算内拥有各自的超时;文档按轮询方式以公平配额选取,因此单个巨型信息源无法挤占其他来源。/api/v1/sources 报告每个信息源的最后状态和文档数量。
新兴概念检测——在 UMAP 空间上做 blob_log 密度聚类,并结合原始 768 维嵌入空间中的分块 k-NN 新颖度以及自适应熟悉度下限。
爆发层级(N1.2)——对残余新颖度池做第二轮聚类,以呈现那些跳过常规增长/复现门槛、凭空出现的概念,另加一道流入门槛以忽略泛泛而谈的内容。
跨周期概念追踪——概念通过跨周期图与历史匹配,使用内容寻址的确定性概念 ID(同一数据流的两次重放会产生完全相同的实体)。
领先时间测量——每个概念都会相对于 CISA KEV 评估其出现得有多早;benchmark/score.py 可复现 dev(0.6955)/ test(0.6403)的回归数值。
仪表盘
交互式概念图——在 UMAP 投影上支持热力图/散点/差异视图模式,带缩放控件和用于定位的缩略图。
点击查看概念详情——成员文档、原始来源链接、强度历史以及每个概念的新兴标记。
实时事件流——通过 SignalR 推送周期事件、新文档和概念,并带有「新条目」徽标。
一键分析——「抓取并分析」以内存安全的批次运行 摄入 → 嵌入 → 聚类 → 周期对比;每批完成后,概念就会出现在热力图和实时流中,无需等待整轮运行结束。
「生成摘要」为整个概念集构建一份 Markdown 安全报告。
浅色/深色/跟随系统主题(默认跟随系统,随操作系统设置变化)、新手引导、可固定的详情面板。按 A 或 D 隐藏/显示左侧或右侧面板。
LLM 层
端侧条目摘要——默认通过 HF Transformers 在本地运行 ibm-granite/granite-4.0-1b(mlx 仍需 Apple 环境主动启用,none 则禁用生成)。模型以内存安全的批次缩短报告条目;IOC、严重性和 MITRE 提取保持确定性。
UI 中的推理轨迹——若模型输出 think 块,该内容会单独返回,仪表盘在可折叠的「模型推理」面板中展示;Granite 直接作答,该面板保持隐藏。
摘要配置——4K 提示窗口、1024 token 输出上限、默认温度 0.3(0 = 贪心)以及轻度重复惩罚。报告层将条目批次限制为 8,以便在 8 GB 机器上提示词保持在 1K token 左右。加速器上用 bfloat16,CPU 上用 float32,OOM 时以一半 token 预算重试,并可通过 NCD_LLM_QUANT=int4 主动启用 4 位权重。
自带 API——OpenAI 兼容提供商(OpenAI、Groq、OpenRouter、vLLM)和 Anthropic 的 Messages API 可在 ncdbody/llm_providers.yaml 中注册;仪表盘在生成摘要前会显示可用后端的选项。Anthropic 使用 format: anthropic;其余均默认为 OpenAI /chat/completions 形式。
HTTP API
REST 端点:POST /api/v1/analyze/fetch-and-analyze、POST /api/v1/analyze/summarize、GET /api/v1/analyze/llm-providers、GET /api/v1/concepts[/{id}][/history]、GET /api/v1/concepts/periods、GET/POST /api/v1/sources、POST /api/v1/ingest(可选 X-API-Key)、/health。
通过 SignalR 为事件流和地图更新提供实时推送。
运维
设计上确定性——一次性拟合的 UMAP(seed 42)、固定的评估矩阵、稳定的概念 ID;可复现的重放。
带 WAL 的 SQLite 存储——增量概念、文档、周期和事件;可跨重启存活,并为仪表盘历史提供数据。
加固部署——仅绑定回环地址、非特权容器用户、两个进程的健康检查、API 与引擎之间的批处理和背压、.env 驱动的配置、Docker Compose。
已测试——.NET、Python 和 JS 测试套件,外加 CI 流水线和发布门禁清单(TESTING.md)。
🔄 工作流
摄入:RSS + NVD 抓取,带 SSRF 防护、按来源上限和 HTML 实体清理
嵌入:sentence-transformer 嵌入,带本地模型缓存
聚类:UMAP 投影(一次性拟合、确定性)+ blob_log 聚类 + 爆发/新颖度层级
对比:跨周期图与历史匹配,使用内容寻址的概念 ID
报告:一份 Markdown 安全报告(本地 Granite 4.0 1B 或 OpenAI 兼容 API),通过 SignalR 实时推送到仪表盘
🚀 快速开始
方式 1:Docker 部署(推荐)
一条命令
docker compose up --build -d
仪表盘:http://localhost:5001/(首次启动约 3-15 分钟——模型下载)
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。