RandomCoder-lab/OMC

GitHub: RandomCoder-lab/OMC

基于 φ-math 的自举编程语言运行时,内嵌完整 CPython 科学计算生态,核心亮点是 multidimensional anomaly detection 在结构性异常检测上显著优于 IsolationForest。

Stars: 1 | Forks: 0

# OMNIcode **一个调和数学平台:包含语言、包管理器、嵌入式 Python 生态以及机器学习库,在结构性异常检测上显著优于 scikit-learn。** OMNIcode (OMC) 是一个小型独立的运行时,在一个二进制文件中为你提供四项功能: 1. **真正在检测上胜过 IsolationForest 的调和异常检测器** — `harmonic_anomaly` 库在 top-K=10 时能 10/10 捕获撞库模式,而 scikit-learn 为 7/10 ([`examples/datascience/multidim_anomaly.omc`](examples/datascience/multidim_anomaly.omc))。是多维表格数据上 `IsolationForest()` 的直接替代品。 2. **触手可及的完整 Python 生态** — `py_import("numpy")`、`py_import("pandas")`、`py_import("sklearn")` 开箱即用。CPython 在链接阶段被嵌入。六个包装库 ([`np`, `pd`, `sk`, `requests`, `sqlite`, `torch`](examples/lib/)) 让常见操作更加地道。 3. **包管理器与中央注册表** — `omc --install harmonic_anomaly` 从注册表获取包,验证 sha256,并缓存在 `omc_modules/` 目录下。通过向 [`registry/index.json`](registry/index.json) 提交 PR 来发布新包。 4. **具备自愈编译器的自举语言** — 字节码编译器本身就是用 OMC 编写的,且编译器应用于自身时满足 `gen2 == gen3` ([`examples/self_hosting_v9b.omc`](examples/self_hosting_v9b.omc))。其静态分析基础是 φ-math(斐波那契吸引子、共振、HIM 分数),而非类型系统。标识符拼写错误、偏离吸引子的字面量、除以零以及解析器失误都会在自愈阶段被自动重写。 单个 Rust 二进制文件。两个执行引擎(树遍历 + 字节码 VM),在 43 个功能示例中产生字节级完全相同的输出。其架构设计使每一层都能强化下一层:调和原语驱动异常检测器,包管理器分发这些库,嵌入式 Python 让用户能够与其他所有内容进行组合。 ## 30 秒 hello world ``` git clone https://github.com/RandomCoder-lab/OMC.git cd OMC PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 cargo build --release ./target/release/omnimcode-standalone --init ./target/release/omnimcode-standalone main.omc ``` `--init` 会创建 `omc.toml` 和一个 hello-world 的 `main.omc`。编辑并运行,你就可以开始了。 ## 60 秒惊艳体验 — 超越 scikit-learn 的异常检测 `harmonic_anomaly` 库是 `sklearn.IsolationForest` 在多维表格数据上的直接替代品。它在结构性异常上取得了决定性的胜利——也就是撞库、账户接管和数据渗透产生的那种异常,在这些情况下,每个单独的值看起来都很正常,但它们的组合却极其罕见: ``` import "harmonic_anomaly" as ha; # after: omc --install harmonic_anomaly # Schema: 每行 = [latency_ms, status_code, endpoint_id, hour_of_day] h det = ha.new(["latency", "status", "endpoint", "hour"]); ha.set_strategy(det, 1, "discrete"); # status_code is categorical ha.set_strategy(det, 2, "discrete"); # endpoint_id is categorical ha.set_strategy(det, 3, "modulo"); # hour-of-day is small periodic ha.fit(det, training_rows); h alerts = ha.top_k(det, all_rows, 10); # top-10 most anomalous indices ``` 在 5000 个正常请求 + 50 条注入的撞库行数据上测量得出: | | OMC harmonic | sklearn IsolationForest | |---|:---:|:---:| | Top-10 警报(SRE 值班关注范围) | **10/10 捕获** | 7/10(混入了不相关的 500 错误峰值) | | Top-25 警报 | **25/25** | 17/25 | | Top-50 警报 | **50/50** | 40/50 | 查阅 [`examples/datascience/anomaly_tutorial.omc`](examples/datascience/anomaly_tutorial.omc) 获取详细演练,以及 [`examples/datascience/multidim_anomaly.omc`](examples/datascience/multidim_anomaly.omc) 获取完整对比。 ## 而且 — OMC 驱动着整个 Python ML 栈 ``` import "sk" as sk; # after: omc --install sk import "np" as np; # after: omc --install np # 在 iris dataset 上训练并为 random forest 评分 h iris = sk.load_iris(); h split = sk.train_test_split(arr_get(iris, 0), arr_get(iris, 1), 0.3); h model = sk.random_forest_classifier(100); sk.fit(model, arr_get(split, 0), arr_get(split, 2)); h preds = sk.predict(model, arr_get(split, 1)); println(concat_many("RF accuracy: ", sk.accuracy_score(arr_get(split, 3), preds))); ``` 要运行完整的真实世界演示,请执行 [`examples/datascience/titanic.omc`](examples/datascience/titanic.omc) — 通过 seaborn 处理 Kaggle 泰坦尼克号数据集(约 120 行 OMC 代码),在约 280ms 内加载 891 名乘客,并训练一个 100 棵树的森林。用户无需编写任何 Rust 扩展。 ## 包含哪些内容 ### 语言 - 基于 φ-math 基底,包含 `HInt`(共振、HIM、value_danger 作为原语) - 支持吸引子范围(`0..21 => ...`)、类型标签和交替的模式匹配 - 一等公民函数,可变闭包(Rc 共享环境) - 包含源码行号的堆栈跟踪 Try / catch - 两个解释器:树遍历(快速迭代)和字节码 VM(热路径约快 2 倍) - 自愈通道 (`OMC_HEAL=1`) — 拼写纠正、调和违规重写、动态除零挽救 ### 工具链 - `omnimcode-standalone main.omc` — 运行程序(不带参数则进入 REPL) - `--init` — 搭建新项目脚手架 (omc.toml + main.omc) - `--install [SPEC]` — 通过注册表名称或 URL 安装包到 `omc_modules/` - `--list` — 列出已安装的模块 - `--check FILE` — 仅执行自愈通道并输出诊断信息,不运行代码(对 CI 友好) - `--fmt FILE` — 将 AST 美化打印为规范的 OMC 源码 ### 嵌入式 CPython(默认开启) - `py_import("numpy")`,`py_call(handle, "method", [args])`,`py_get`,`py_eval`,`py_exec` - `py_call_kw` / `py_call_fn_kw` 用于支持 kwargs 的 Python API - `py_call_raw` 在链式操作时跳过自动转换 - `py_callback("omc_fn_name")` — 将 OMC 函数包装为 Python 可调用对象,用于 `df.apply` 等场景 - 自动 Value 与 PyObject 相互转换:标量、列表、元组、字典、numpy ndarrays - 设置 `OMC_NO_PYTHON=1` 以跳过 Python 初始化 ### 集成库(用 OMC 编写,全部位于 [`examples/lib/`](examples/lib/)) - `np.omc` — numpy 桥接(array, mean, dot, sort, percentile, argsort) - `pd.omc` — pandas 桥接(read_csv/json/parquet/excel, group_by, fillna, apply_omc) - `sklearn.omc` — RandomForest, KMeans, train_test_split, accuracy - `requests.omc` — HTTP 客户端(get, post, json, fetch_json) - `sqlite.omc` — 通过 Python 的 sqlite3 实现的嵌入式 SQL - `torch.omc` — PyTorch 张量,nn.Linear,优化器 - `harmonic_anomaly.omc` — 多维结构异常检测(直接替代 IsolationForest;在撞库模式检测中胜出) 每个库只有 30-110 行 OMC 代码。你可以派生它们或编写自己的库。所有包均在 [`registry/index.json`](registry/index.json) 注册并经过 sha256 验证。 ### 调和原语 - `harmonic_set` — 基于斐波那契吸引子等价性进行去重 - `harmonic_pq` — 按 HIM 分数排队的优先队列 - `harmonic_index` — 基于吸引子邻域的亚线性查找 - `harmonic_sort`、`harmonic_partition`、`harmonic_dedupe` — 批量操作 - `fold(n)` — 吸附到最近的斐波那契吸引子 - `phi.res(n)`、`phi.him(n)`、`phi.fold(n)` — 直接的 φ-math 访问 ## 值得一跑的演示 | 文件 | 说明 | |---|---| | [`examples/self_hosting_v9b.omc`](examples/self_hosting_v9b.omc) | 用 OMC 编写的编译器,在自举编译时产生字节级一致的字节码 | | [`examples/self_healing_h5.omc`](examples/self_healing_h5.omc) | 越界数组读取会转变为有限的吸引子落点值 | | [`examples/lisp.omc`](examples/lisp.omc) | 用 OMC 编写的微型 Scheme 解释器 — 闭包、递归、quote、let、lambda | | [`examples/json.omc`](examples/json.omc) | OMC 中的 JSON 解析器 + 序列化器,通过可变闭包游标进行递归下降 | | [`examples/recommend/recommend.omc`](examples/recommend/recommend.omc) | MovieLens 10k 推荐引擎 — 基于真实评分的 `harmonic_index` | | [`examples/datascience/titanic.omc`](examples/datascience/titanic.omc) | 通过 seaborn 处理 Kaggle 泰坦尼克号 → 调和特征工程 → sklearn 分类器 | | [`examples/datascience/movielens_harmonic.omc`](examples/datascience/movielens_harmonic.omc) | 通过 pandas 加载 movielens → harmonic_partition → 每个 bucket 的 numpy 统计 | | [`examples/datascience/harmonic_ml.omc`](examples/datascience/harmonic_ml.omc) | sklearn wine + 通过 `numpy.vectorize` 实现的 Python→OMC 回调 | | [`examples/datascience/anomaly_detection.omc`](examples/datascience/anomaly_detection.omc) | 幂律异常检测:在 K=5(警报预算限制下)harmonic 4/5 对比 IF 0/5 | | [`examples/datascience/multidim_anomaly.omc`](examples/datascience/multidim_anomaly.omc) | 撞库检测:在 K=10 时 harmonic 10/10 对比 IF 7/10 | | [`examples/datascience/anomaly_tutorial.omc`](examples/datascience/anomaly_tutorial.omc) | 教程 — 使用 `harmonic_anomaly` 直接替代 IsolationForest | | [`examples/datascience/nab_validation.omc`](examples/datascience/nab_validation.omc) | NAB 基准测试:两个检测器都在 7/19 窗口打成平手(原始基线水平) | | [`examples/datascience/nab_time_aware.omc`](examples/datascience/nab_time_aware.omc) | 时间感知的调和 — 诚实的负面结果;需要 CUSUM/季节性分析才能在 NAB 上击败 IF | ## 包管理器 ``` # 按 registry name 安装一个 package (经过 sha256 验证) omnimcode-standalone --install np # 安装 omc.toml 中的所有内容 omnimcode-standalone --install # 从任意 URL 安装 omnimcode-standalone --install https://example.com/raw/my_lib.omc ``` 清单格式: ``` [package] name = "my-omc-project" version = "0.1.0" [dependencies] np = "np" # registry name (verified) sklearn = "sklearn" # registry name custom = "https://example.com/raw/my_lib.omc" # explicit URL ``` 安装的模块存放在 `omc_modules/.omc` 路径下。`import "name";` 会优先解析本地副本。私有 fork 可通过设置 `OMC_REGISTRY=` 来覆盖注册表地址。 提交包:向 [`registry/index.json`](registry/index.json) 提交一个条目 PR。 ## 架构说明 OMC 拥有能产生字节级完全相同输出的两个语义引擎: - **树遍历解释器** — 用于你的日常调试,也是 `OMC_HEAL` 的运行环境 - **字节码 VM** — 通过设置 `OMC_VM=1` 启用;在热路径上约快 2 倍 两者共享: - 相同的 `Value` 枚举,包含 Rc 共享的 `Array` / `Dict`,实现 O(1) clone - 相同的内建调度接口,并对 arr_get / dict_get / str_concat 进行了 VM 热路径内联 - 相同的 `register_builtin` API,供嵌入者注册宿主函数 自愈是一个包含五个诊断类别的静态 AST 重写过程: - 偏离吸引子的数字字面量 → 吸附到最近的斐波那契值 - 标识符拼写错误 → 匹配已定义名称表中 Levenshtein 距离最近的项 - 字面量 `/0` → 重写为 `safe_divide(...)` - 用户函数参数数量不匹配 → 自动填充/截断参数 - 解析器级别的错误恢复(缺失大括号、圆括号、分号等) 在运行时加入 `OMC_HEAL=1` 会迭代应用该过程直到达到不动点,`OMC_HEAL_RETRY=1` 会在发生运行时错误后重试一次。两者均为可选启用项 — 生产代码不应在开启自愈功能的情况下部署。 完整的开发历史记录在 [CHANGELOG.md](CHANGELOG.md) 中。φ-math 基础层的文档详见 [PHI_PI_FIB_ALGORITHM.md](PHI_PI_FIB_ALGORITHM.md)。 ## 性能表现 | 工作负载 | 树遍历 | VM | 备注 | |---|---:|---:|---| | MovieLens 10k 聚合 | 29 ms | 33 ms | 在引入 Rc 共享集合之前为 16 秒(552 倍加速) | | MovieLens 100k 完整流水线 | 0.92 秒 | 1.0 秒 | 在 345ms 内构建 9724 项的 harmonic_index | | recursive_fib(22) | 54 ms | 26 ms | VM 快 2.08 倍 | | arr_map(double) 运行 1k 200 次 | 131 ms | 59 ms | VM 快 2.22 倍 | OMC 现已可用于真实规模的数据处理(10k → 100k 条记录是常规操作)。阻碍性能的架构瓶颈(即 `Value::Array` 的变更时克隆机制)已在 commit `d3c29b6` 中通过切换为 `Rc>` 语义被消除 — 集合现在像 Python 的可变类型一样按引用传递。 ## 调和检测真正胜出的场景(对比 scikit-learn) 与 scikit-learn 的 IsolationForest 的真实对比。不是华而不实的合成数据测试——而是在真实且可重现的工作负载上进行的测量。 | 工作负载 | OMC harmonic | IsolationForest | 应用场景 | |---|:---:|:---:|---| | **幂律数据,K=5**(警报预算限制模式) | **4/5** | 0/5 | 队列顶部的精确度:SRE 值班寻呼 | | **多维撞库数据,K=10** | **10/10** | 7/10 | 账户接管、数据渗透、结构性攻击 | | 多维数据 K=25 | **25/25** | 17/25 | 子空间异常检测 | | 多维数据 K=50 | **50/50** | 40/50 | 同上,但召回范围更广 | | NAB realKnownCause(一维时间序列) | 7/19 | 7/19 | 在原始基线级别打平(SOTA 需要 CUSUM/HMM) | | 幂律数据 K=30(广泛召回) | 5/30 | 15/30 | 当你需要调查所有可能情况时,IF 胜出 | 规律如下:调和方法在多维结构异常上取得了决定性的胜利(即撞库模式——各个维度的值看起来正常,但组合在一起却极其罕见)。在简单的时间序列基准测试上打平,因为两者都未利用时间结构。在一维广泛召回场景中落败,因为此时基于量级的检测才是正确工具。 [`examples/lib/harmonic_anomaly.omc`](examples/lib/harmonic_anomaly.omc) 中的 harmonic_anomaly 库封装了多维检测器,并提供了简洁的 `new` / `fit` / `top_k` API。安装它: ``` omnimcode-standalone --install harmonic_anomaly ``` 然后在 OMC 中: ``` import "harmonic_anomaly" as ha; h det = ha.new(["latency", "status", "endpoint", "hour"]); ha.set_strategy(det, 1, "discrete"); # status_code is categorical ha.fit(det, training_rows); h alerts = ha.top_k(det, all_rows, 10); ``` 查阅 [`examples/datascience/anomaly_tutorial.omc`](examples/datascience/anomaly_tutorial.omc) 获取直接替代 IsolationForest 的详细演练。 ## 状态与诚实的局限性 OMC 是围绕一个架构前提构建的研究产物。运行良好的部分: - 具有自愈功能的自举编译器 (V.9b + H.5) - 通过嵌入式 Python 实现的真实 ML 流水线 (np / pd / sklearn / requests / sqlite) - 双引擎对等性(43/43 个功能示例输出字节级一致) - 带有注册中心和 sha256 验证的包管理器 尚未达到生产级别的地方: - 单开发者的实验性代码库 - 没有形式化的类型系统(静态分析基于 φ-math,而非 Hindley-Milner) - 重度操作(超大集合、并行计算、异步)不是关注重点 - 某些 `OMC_HEAL` 重写对领域特定值显得过于激进(参见 [`examples/recommend/PAIN_POINTS.md`](examples/recommend/PAIN_POINTS.md) MED-3) 已知的开放问题列在 [PAIN_POINTS.md](examples/recommend/PAIN_POINTS.md) 中。大多数问题是在单次真实压力测试(10k MovieLens 推荐引擎)中暴露出来的——这正是一个研究项目应有的样子。 ## 快速参考 ``` omnimcode-standalone FILE # run a program omnimcode-standalone # REPL omnimcode-standalone --init # scaffold project omnimcode-standalone --install [SPEC] # package install omnimcode-standalone --list # list installed omnimcode-standalone --check FILE # lint via heal pass omnimcode-standalone --fmt FILE # pretty-print omnimcode-standalone --help # all flags + env vars OMC_VM=1 # use bytecode VM OMC_HEAL=1 # auto-heal AST iteratively OMC_HEAL_RETRY=1 # retry after runtime errors OMC_NO_PYTHON=1 # skip embedded Python OMC_REGISTRY= # alternative package registry OMC_STDLIB_PATH=<...> # extra import search paths ``` OMC 代表 OMNIcode。这项工作建立在自举语言研究的悠久传统之上——Lisp、Smalltalk、Forth——并增加了一个新维度:静态分析的基础是 φ-math,而不是 S 表达式或类型系统。整个工具链(词法分析、解析、生成、执行、分析、修复、嵌入)都存在于语言内部。 许可证:MIT。 **围绕 φ (1.618…) 构建。基底即是架构。**
标签:Apex, AST遍历, IsolationForest替代, Numpy, Python生态互操作, PyTorch, Rust开发, Scikit-learn, 云安全监控, 凭据扫描, 凭证填充检测, 凭证滥用检测, 包注册中心, 包管理器, 单文件二进制, 可视化界面, 多维异常检测, 字节码虚拟机, 嵌入式CPython, 异常检测, 数据科学, 斐波那契吸引子, 机器学习, 统一API, 网络安全, 自愈编译器, 自托管编程语言, 谐和计算, 谐波数学, 资源验证, 通知系统, 隐私保护, 静态分析