人工智能搜索引擎本地部署后端MCP 服务【免费下载链接】xerjXERJ is the new way for AI to search data. Its autoindex capability activates agents to know your data without the token waste of grep and sed. One command indexes code, docs, logs and PDFs for search, RAG, security audits and agent memory, using 40x fewer tokens than grep. Elasticsearch compatible, so existing clients just work.项目地址https://gitcode.com/GitHub_Trending/xe/xerj点击查看免费下载本文以仓库中 user-feedback/kibana/categories/11-ml-and-anomaly/README.md 这份「ML 与异常检测」用户反馈分类报告为骨架展开它记录了 54 条来自 Reddit、GitHub、Hacker News、Stack Overflow 等公开来源的真实 Kibana/Elasticsearch ML 使用反馈是 XERJ 决定该建什么、不该建什么的输入之一。全文结合 XERJ 开源仓库中_ml异常检测的完整实现detector、datafeed、评分算法、权限边界与两个可运行 recipe说明这套反馈如何落成一套免费、透明、可离线自托管的统计异常检测 API并给出可直接照做的实战步骤。这份文档Kibana 用户反馈语料库中的「ML 与异常检测」分类仓库的user-feedback/kibana/目录是一个结构化、可复现的 Kibana 用户反馈语料库从五个公开主源GitHub Issues、Stack Overflow、Hacker News、Reddit、Elastic 官方 Discourse 论坛抓取真实反馈再用确定性关键词分类器归入 17 个产品相关分类。user-feedback/kibana/README.md 明确写道这套语料是the input we use to decide what XERJ.ai should and shouldnt build——即决定 XERJ 功能去留的输入而不是一篇泛泛的产品介绍。截至 2026-04-14语料总量为15,282 条情绪分布为 negative 5,80138.0%/ neutral 7,76050.8%/ positive 1,72111.3%完整统计见 user-feedback/kibana/INDEX.md。其中11-ml-and-anomaly分类共54 条负向 18 条、中性 27 条、正向 9 条来源分布为github23、hackernews16、reddit11其余为 Stack Overflow / Discourse 的次要归属。该分类的官方定义见 user-feedback/kibana/TAXONOMY.md11-ml-and-anomaly · UX— ML features — anomaly detection, data frame analytics, paywall complaints, accuracy problems, job setup. Keywords:anomaly detection、machine learning、ml job、data frame、transform、paywall.也就是说这个分类收集的是用户在 ML 功能上感受到的具体摩擦异常检测的配置与准确率、Data Frame Analytics、以及把功能锁在付费墙paywall / platinum license后面引发的抱怨。分类器在 user-feedback/kibana/pipeline/classify.mjs 中的对应规则是关键词权重anomaly detection4ml job4kibana ml4data frame3transform job3platinum license3machine learning2paywall2ml软匹配0.5outlier/regression model1 / 2本分类的条目指针文件是 user-feedback/kibana/categories/11-ml-and-anomaly/pointers.jsonl每条只存id / source / score / posted_at / tags / title的投影完整正文需按id回查user-feedback/kibana/sources/src/enriched.jsonl分类器每次重跑都会从raw.jsonl重建指针不会漂移见 user-feedback/kibana/SCHEMA.md。本分类的 Top tags 汇总如下即原文档中的表格TagCountml32anomaly20license3discover2saved-objects2apm1canvas1time-picker1mlanomaly两个标签合计覆盖了本分类绝大多数条目而license的出现印证了付费墙是 ML 功能被诟病的重要主题。Top 20 榜单用户在 ML/异常检测上到底在关心什么原文档的核心内容是按 score 排序的 Top 20 条目score 即原平台的点赞/热度。这里完整保留 20 条标题取自指针文件中的完整标题原始 URL 一律不列出正文回查指针与 enriched 文件即可#SourceScoreTitle1reddit139Open-Source-SaaS | Curated list to get started building quickly2reddit20How to get started in Data Engineering ?3reddit12I deal with a few hundred million time-series data points but dont need streaming - should I still use Kafka?4github9[BUG] Index Pattern Filtering when searching in Dashboards5reddit9Article: A digestible introduction to anomaly detection using Elasticsearch and Kibana without diving too deep into data science6github8Best practices for rule executions7github7[Dashboard] Redesign Add Panel Experience8reddit7An Audit How To: Using Logstash with Active Directory/Windows Server9reddit5Have you bought platinum license of elastic/kibana or other enterprise license just because of SSO?10reddit5Would love to pick your brain for a sec11github4[Meta] Saved Object Tagging12hacker4Datastream.io – Real-Time Anomaly Detection Using Python, Elasticsearch and Kibana13github3EuiInMemoryTable - request ability to set pageIndex and pageSize externally14reddit3Article: A digestible introduction to anomaly detection using Elasticsearch and Kibana without diving too deep into data science15stacko2How random cut forest deals with periodicity / seasonality?16github1Implement new navigation hierarchy for stateful cloud and serverless Kibana17github1[EuiSuperDatePicker] Refresh controls not hidden ifdisableAutoRefreshSelectorset to true18reddit1Kibana Categorization Anomaly Detection19reddit1Kibana as a source data stream. how do you guys manage the ingestion?20stacko1Kibana graph for anomaly detection把 20 条归拢成几类信号就能看出用户在 ML 与异常检测上真实痛点的全貌入门与文档#2、#5、#12、#14、#18、#20异常检测的科普文章与开源实现Datastream.io、Kibana Categorization Anomaly Detection、Kibana graph for anomaly detection热度最高说明异常检测怎么做本身是高频诉求——用户要的是一个能讲得清原理的方案而不是黑盒。付费墙 / License#9有人在问你会不会只为了 SSO 就买 platinum 许可证license标签在本分类出现 3 次。这是把 ML 能力锁在订阅后面的直接反噬信号。Job 配置与准确性#3、#15、#6从几亿条时间序列要不要上 Kafka到 Random Cut Forest 如何处理周期/季节性到规则执行的最佳实践——用户在为模型选择和参数配置发愁想要可控、可解释的检测。周边 UI 与集成#4、#7、#11、#13、#16、#17、#19Saved Object Tagging、Dashboard 面板体验、导航层级、EuiInMemoryTable/EuiSuperDatePicker 这些其实都是 ML 应用落地时的工程摩擦。负向条目的原文引文被汇总在 user-feedback/kibana/themes/top-pains.md 的11-ml-and-anomaly · 18 negative items一节真实引语、逐字保留是阅读原始抱怨最快的入口user-feedback/kibana/themes/design-inputs.md 则把 Top 50 可行动痛点映射到 XERJ 各模块的回应。核心结论是用户要的是免费、透明、能自己掌控参数的异常检测而不是藏在付费墙后的黑盒模型。XERJ 的回应_ml异常检测的设计取向对照上述反馈XERJ 在开源仓库里落地了一套完整的_ml异常检测 API。它的实现注释engine/crates/xerj-api/src/es_compat.rs第一段就点明了设计取向A detector buckets a time-series source index over its time field, reduces each bucket to one number (count/mean/min/max/sum), builds a moving meanstddev baseline over theprior normalbuckets, and flags buckets whose value deviates more thananomaly_thresholdstddevs. The whole thing is deterministic — no RNG, no opaque model — and the scoring is a plain z-score normalised to 0..100.对应到用户反馈里的每一条抱怨黑盒模型 → 透明统计算法就是移动均值 标准差的 z-score完全确定、无随机数、无不可解释的模型正好回应 #15Random Cut Forest 周期性问题这类想知道原理的诉求。付费墙 → 免费内置_ml是二进制内置的普通 REST 端点recipe 直接对默认启动的 XERJ 调用即可不需要任何 license 配置recipes/README.md 明确说明全部 recipe 零依赖、零 API key、可完全离线运行。Job 配置繁琐 → 一个 JSON 搞定detector 只是一个可持久化的 JSON 配置对象。Detector 的持久化结构定义在 engine/crates/xerj-api/src/state.rsMlDetector字段与默认值如下字段含义默认值 / 取值detector_id检测器 ID路径段必填全局唯一source_index要分析的索引或索引模式必填time_field分桶时钟字段默认timestampfunction每桶规约函数count默认/mean/min/max/sumfield函数作用的字段count时可省略其余必填bucket_span桶跨度ES interval 语法默认1h如5m、1danomaly_threshold偏离几个标准差算异常默认3.0create_time_ms创建时间epoch 毫秒服务端生成description可选描述可选配置持久化在data_dir/_ml/detectors.jsondatafeed 持久化在data_dir/_ml/datafeeds.json重启后仍可加载加载失败会记 ERROR 日志但拒绝启动反而是更糟的选择见 state.rs 的设计说明。实战一一次性打分detector _score先看检测一次的完整闭环对应 recipe recipes/log_anomaly.py它把仓库自带的真实 OpenSSH 登录日志engine/demo-data/ssh_one.ndjson65.5 万条真实生产事件灌进索引然后用_ml找出失败认证数量飙升的小时——即日志里真实存在的暴力破解。启动与运行xerj --insecure --data-dir ./data # 启动 XERJ python3 recipes/log_anomaly.pyrecipe 的流程分两步。第一步建索引并批量灌数据。只保留三类认证结果事件failed_password/invalid_user/auth_failuremapping 里有timestampdate与event、src_ip、userkeyword每 5000 条一批走/_bulk{ mappings: {properties: { timestamp: {type: date}, event: {type: keyword}, src_ip: {type: keyword}, user: {type: keyword} }} }第二步创建 detector 并打分。这里的关键是function: count——不需要field每个小时桶的值就是失败认证的事件数bucket_span: 1h把时间轴切成小时桶anomaly_threshold: 3.0表示偏离移动基线 3 个标准差才报警# PUT /_ml/anomaly_detectors/ssh-bruteforce { source_index: ssh-auth, time_field: timestamp, function: count, bucket_span: 1h, anomaly_threshold: 3.0, description: failed ssh auth volume vs moving baseline } # POST /_ml/anomaly_detectors/ssh-bruteforce/_score_score响应返回records逐桶记录与anomalies按anomaly_score降序的异常子集每个记录形如{ timestamp: 1751760000000, timestamp_iso: 2026-07-06T00:00:00.000Z, actual: 482.0, expected: 51.2, std_dev: 12.7, z_score: 33.9, anomaly_score: 92.5, is_anomaly: true }recipe 随后把is_anomaly的记录按分数排序打印并用一条普通的 ES terms 聚合归因最坏小时里排名前三的攻击者 IP——异常检测和常规聚合无缝混用{ size: 0, query: {range: {timestamp: {gte: 1751760000000, lt: 1751763600000}}}, aggs: {attackers: {terms: {field: src_ip, size: 3}}} }_score请求体还支持两个可选覆盖项源码见 es_compat.rs{query: {…}}限制参与评分的文档范围{anomaly_threshold: N}临时覆盖本次打分阈值——不改 detector 配置即可做更敏感/更不敏感的敏感性分析。实战二连续检测datafeed一次性打分只能回答过去的数据里有没有异常要回答现在的数据有没有异常就需要 datafeed——它把同一个打分器挂到定时器上每frequency秒重跑一次只把新增的异常桶追加进任务的 results store供你轮询。对应 recipe recipes/anomaly_datafeed.py。先造一个带两个突刺的 CPU 序列每分钟一条基线约 20%第 12 分钟突刺到 96建索引并灌入{ mappings: {properties: { timestamp: {type: date}, cpu: {type: double} }} }创建 detector这里用function: meanfield: cpu桶跨度为 1 分钟和 datafeed每 2 秒重打分一次# PUT /_ml/anomaly_detectors/cpu-spike { source_index: cpu_datafeed, time_field: timestamp, function: mean, field: cpu, bucket_span: 1m, anomaly_threshold: 3.0 } # PUT /_ml/datafeeds/cpu-spike-feed { job_id: cpu-spike, frequency: 2s }然后POST /_ml/datafeeds/cpu-spike-feed/_start启动瞬间会同步跑一次打分立即可读到第一条异常记录随后进入后台定时模式。关键验证步骤是——在第 20 分钟向活跃索引注入第二个突刺88然后完全不碰 datafeed只轮询结果# GET /_ml/anomaly_detectors/cpu-spike/results/records后台打分器会在下一个 2 秒 tick 自己发现它追加一条新记录actual: 88.0无需第二次_start。最后POST /_ml/datafeeds/cpu-spike-feed/_stop干净收尾recipe 用 4 条断言验证第一个突刺在、连续发现的第二个突刺在、记录数 ≥ 2、datafeed 状态回到stopped。datafeed 的配置参数源码 es_compat.rs字段含义默认值job_id引用的 detector ID必填必须已存在indices读取的索引字符串或数组默认取 detector 的source_indexquery限定评分的查询默认match_allfrequency重打分周期默认60s最小1sES 时间语法如2s后台机制的实现细节同样值得注意es_compat.rs共享打分核心datafeed 与_score共用同一个score_detector_records两条路径逐桶一致永远不会漂移freshtrue绕过查询缓存XERJ 查询缓存以(body_hash, dataset_version)为键未落盘的写入不会 bump 版本号datafeed 每 tick 用相同 body 重查活跃索引因此强制fresh读取避免吃到陈旧结果high-water cursor 去重每轮只追加timestamp since_ms的异常桶游标推进到已打分的最新桶天然幂等记录上限每个 job 最多保留 10,000 条异常记录ML_MAX_RECORDS_PER_JOB超限后最旧的先被逐出异常不污染基线被打成异常的桶不会折叠进基线防止一次突刺毒化后续桶的期望值。评分算法的源码细节移动均值 z-score 是怎么算的打分核心在 es_compat.rs 的score_detector_records整条链路是分桶对source_index跑date_histogramfixed_interval bucket_span、min_doc_count: 0需要field时再挂一个 metric 子聚合value_count/avg/min/max/sum映射见ml_metric_agg规约每个桶变成一个数——count用doc_count其余用子聚合value空桶直接跳过预热前MIN_BASELINE 4个桶不评分只作为基线种子记录携带note: insufficient_baselineanomaly_score: 0、is_anomaly: false打分用当前正常桶集合算总体均值与标准差ml_mean_stdddof0z (actual - mean) / std当 std 塌缩到 0 时用符号 ×1e6 兜底并截断展示归一化anomaly_score 100 * (1 - exp(-ln2 · |z| / threshold))截断到 0..100——跨过阈值时映射到约 50 分偏差越大单调逼近 100完全确定阈值判定is_anomaly |z| anomaly_threshold异常桶不回填基线。整条链路复用引擎自身的date_histogram与 metric 聚合因此异常检测本质上是对普通查询与聚合能力的组合——这解释了为什么 recipe 能随手在异常桶上再叠一个terms聚合做攻击者归因。权限边界datafeed 不是绕过 per-index 边界的后门连续打分器的后台任务是一个tokio::spawn出的独立任务这曾经是一个真实的安全漏洞仓库里有完整的攻防回归测试 engine/crates/xerj-api/tests/ml_datafeed_cannot_read_a_brain.rs。问题issue #79per-index 边界在于引擎侧可见性规则是tokio任务局部变量_start的同步打分跑在请求任务上、受规则约束但tokio::spawn出的后台 tick 却丢了规则——攻击者用一把无任何role_descriptors的 key 启动 datafeed同步阶段被拒返回空结果几秒后的后台 tick 却无守卫地读到了他人命名空间.xerj-memory-bob-edges里的字段值并写进了 results store。修复是双重防线测试分别验证了每一半配置时拒绝ML job 或 datafeed 命名了创建者无权读取的索引PUT直接返回403 Forbidden而不是 200 收下运行时兜底即使配置由超级用户提前种好配置时无可拒绝_start时会把发起请求者的可见性规则捕获并重新安装到后台任务上spawn_datafeed_task在 spawn 之前读取index_guard::current()再scoped_opt包住整个循环打分器只能看到启动者本应看到的索引越权时Engine::get_index回答 not founddatafeed_score_pass按无新记录处理不会报错也不会泄露。同文件还有两个对照组超级用户启动的 datafeed 后台 tick 后依旧正常打分None规则 不限制有作用域 key 对自己持有的索引配置 ML 依然被放行但_score/_start这类不指名索引的动词仍按既有集群规则失败关闭。对使用者的启示_ml的所有端点都遵守与普通读写相同的授权模型datafeed 的异步不构成越权的捷径。语料库的诚实边界与再生成这份反馈语料本身也声明了诚实的限制user-feedback/kibana/README.md情绪标注是朴素词典分类器会混淆反讽与这是个 bug之类的技术性表述——绝对计数要谨慎跨分类的相对排名才可靠99-noise桶只能过滤掉部分 CI 失败类 issue约 146 条并不穷尽部分分类如 maps因语言太泛而代表性不足分类器是关键词规则而非 LLM换用 XERJ 自己的 embed proxy 只需十分钟只采集英文语料只使用公开、可署名来源的数据。整个语料可以零依赖地再生成Node 22 ESM仅内置fetchcd user-feedback/kibana GH_TOKEN$GH_TOKEN node pipeline/collect.mjs # 从 5 个 API 拉取写入 sources/src/raw.jsonl node pipeline/classify.mjs # 确定性、幂等地重写 enriched.jsonl 指针文件 node pipeline/stats.mjs # 重写 INDEX.md 各分类 README.md node pipeline/themes.mjs # 重写 themes/*.mdtop-pains / top-asks 等 node pipeline/design-inputs.mjs # 重写 design-inputs.md 前端引用 JS 模块JSONL 文件按id追加并去重重跑只抓增量GitHub 源按仓库分桶落盘中断也不会丢已完成部分。结语一份 54 条的反馈如何长成一个_ml功能从 user-feedback/kibana/categories/11-ml-and-anomaly/README.md 的 54 条真实反馈出发XERJ 给出的答案是一条清晰的因果链用户抱怨黑盒、抱怨付费墙、抱怨 job 配置难 → 于是有了完全确定、免费内置、一个 JSON 即可配置的 detector用户抱怨检测一次不够 → 于是有了基于共享打分核心、带权限边界的连续 datafeed甚至数据feed 的后台任务都因为一次真实越权漏洞而补上了配置时 运行时双重防线并留下了端到端的攻防测试。想亲手验证整条链路启动二进制后直接跑python3 recipes/log_anomaly.py与python3 recipes/anomaly_datafeed.py即可——这正是这份反馈文档从用户痛点到可运行代码的完整落地。赞分享人工智能搜索引擎本地部署后端MCP 服务【免费下载链接】xerjXERJ is the new way for AI to search data. Its autoindex capability activates agents to know your data without the token waste of grep and sed. One command indexes code, docs, logs and PDFs for search, RAG, security audits and agent memory, using 40x fewer tokens than grep. Elasticsearch compatible, so existing clients just work.项目地址https://gitcode.com/GitHub_Trending/xe/xerj点击查看免费下载相关推荐用 XERJ 检测指标序列中的尖峰异常_ml 异常检测配方与源码级解读用 XERJ 检测指标序列中的尖峰异常_ml 异常检测配方与源码级解读 XERJ 内置了一个按需on demand的异常检测器接口采用 Elastics人工智能搜索引擎本地部署后端MCP 服务XERJ 连续异常检测实战用 _ml/datafeeds 让指标监控自动跑起来XERJ 连续异常检测实战用 _ml/datafeeds 让指标监控自动跑起来 本篇指南讲解 XERJ 的 _ml/datafeeds 连续异常检测能力在已人工智能搜索引擎本地部署后端MCP 服务Android异常检测终极指南系统异常与用户行为异常识别Android异常检测终极指南系统异常与用户行为异常识别 Android开发过程中异常检测是确保应用稳定性的关键环节。无论是系统层面的崩溃还是用户行为引发的文档教程移动开发上一篇终极CodePilot代码搜索服务完整指南从安装到精通使用技巧 下一篇MiroFish群体智能引擎如何构建你的数字平行宇宙创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考