con un clic
rust-core
当涉及 rsod/ 目录修改时使用。涵盖核心算法实现、数据结构、公共接口、错误处理、配置定义等。任何直接影响模型行为的 Rust 代码都必须遵守此规范。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
当涉及 rsod/ 目录修改时使用。涵盖核心算法实现、数据结构、公共接口、错误处理、配置定义等。任何直接影响模型行为的 Rust 代码都必须遵守此规范。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
将机器学习流程和算法逻辑严格限制在 Rust crates 内实现。当新增或修改异常检测、预测、特征提取、模型训练、推理行为,或补充算法评估指标(F1、Recall、MAE、RMSE、MASE)时使用。
强制使用 Apache Arrow C Data Interface 与安全的 Go-Rust FFI 边界。当修改 pkg/rsod、rsod-ffi、Arrow Schema、时间戳单位或跨语言数据交换时使用。
Grafana datasource 插件仓库级规则。当修改 plugin.json、前端查询编辑器、datasource 行为、健康检查、日志、配置处理或兼容性相关代码时使用。
约束新增 Rust 算法的 crate 与模块布局。当新增 rsod 算法 crate 或重构现有 Rust 算法代码时使用。
| name | rust-core |
| description | 当涉及 rsod/ 目录修改时使用。涵盖核心算法实现、数据结构、公共接口、错误处理、配置定义等。任何直接影响模型行为的 Rust 代码都必须遵守此规范。 |
anofox-forecast: https://github.com/sipemu/anofox-forecastPerpetual ML: https://perpetual-ml.com/linfa: https://github.com/rust-ml/linfaaugurs: https://github.com/grafana/augurs本文件定义 rsod/ 目录下 Rust 核心代码的通用架构与风格约束,但以下场景不得只依赖本文件,必须同时读取对应的其他 SKILL.md:
lib.rs、调整算法模块布局时,必须同时读取 .claude/skills/rust-algorithm-crate-layout/SKILL.md。extern "C" 接口签名时,必须同时读取 .claude/skills/arrow-safe-ffi/SKILL.md。优先级原则:
rust-core 作为顶层基线;凡是命中 Rust 专项 skill,必须先遵守 rust-core。rust-core 负责 Rust 代码的通用组织、工程约束、风格基线与跨架构构建要求。rust-algorithm-crate-layout 只负责新增算法时的 crate 与模块布局约束。arrow-safe-ffi 只负责 Go-Rust 跨语言边界与 Arrow C Data Interface 的安全约束。rust-ml-boundary 只负责算法职责边界,防止算法流程泄漏到 Go 或 FFI 层。如果多个文件同时适用,必须联合遵守,不能以 rust-core 为由覆盖更具体的边界规则。
AI 必须严格遵守此目录结构,禁止将所有代码堆积在 lib.rs 中。
当前仓库不是单 crate 目录布局,而是 Rust workspace + 多 crate 分层。编写或修改 Rust 代码时,必须优先遵守现有 rsod/crates/ 结构,而不是臆造一个新的目录体系。
rsod-core/ (核心抽象层):
rsod-outlier/、rsod-forecaster/、rsod-baseline/、rsod-classifier/ (算法实现层):
rsod-ffi 或 Go 层泄漏实现细节。rsod-ffi/ (边界层):
#[no_mangle]、extern "C"、Arrow FFI 转换、JSON options 解码与跨语言边界适配。rsod-storage/、rsod-utils/ (基础设施层):
src/lib.rs 必须清晰声明模块、导出稳定公共接口,并保持为薄入口文件。src/lib.rs 可以做的事情:mod 声明、pub use 重导出、少量公开入口函数拼装。src/lib.rs 不可以做的事情:塞入完整训练流程、推理流程、特征工程、错误处理细节、Arrow/FFI 传输细节。lib.rs 开始同时承担配置、模型、训练、推理、序列化、FFI 适配等职责时,必须立即拆分模块。在单个算法 crate 内,优先按职责拆分,而不是把所有代码直接写进一个文件:
config.rs:算法配置与默认值error.rs:crate 内部错误类型input.rs:输入数据适配与校验model.rs 或 pipeline.rs:核心算法对象或主流程train.rs:训练逻辑predict.rs 或 score.rs:推理、评分、异常判定逻辑tests.rs 或 tests/:面向行为的测试如果 crate 很小,可以减少文件数量,但不能牺牲职责边界。
src/lib.rsrsod-ffirsod-core 中混入具体算法实现unwrap():在生产代码中严禁使用 unwrap(),必须处理 Option 和 Result。clone() 大数据,使用引用 &。amd64 与 arm64,并与当前仓库的 x86_64-unknown-linux-musl、aarch64-unknown-linux-musl 目标兼容。cargo build 作为发布构建路径:本仓库的 Rust 产物面向跨架构静态构建,发布与交叉编译必须使用 cargo-zigbuild,不能绕过既有构建链。Magefile.go。在 cargo build 前必须执行 cargo fmt --check。cargo clippy -- -D warnings。linux/amd64 与 linux/arm64,对应 Rust 目标分别为 x86_64-unknown-linux-musl 和 aarch64-unknown-linux-musl。cargo zigbuild,与仓库现有 Makefile 和 Magefile 保持一致。涉及发布、交叉编译或构建脚本调整时,应优先参考 Makefile 中的 build-rs-amd64、build-rs-arm64 以及 Magefile.go 中的 RsAMD64、RsARM64。cargo fmt --checkcargo clippy -- -D warningscargo testcargo zigbuild --release --target x86_64-unknown-linux-muslcargo zigbuild --release --target aarch64-unknown-linux-muslResult,而不是用 panic!、unwrap()、expect() 或隐式失败来表达正常错误路径。Result。rsod-core 中的错误类型与 Result 别名。error.rs,但应保持可组合、可传播,并在公共边界上转换为稳定错误类型。String 作为长期公共错误模型到处传播;只有在非常薄的兼容层或临时基础设施接口中,才允许短期存在。Box<dyn Error> 只能作为过渡性边界类型使用,不能成为整个 crate 的默认错误设计。unwrap()。expect(),除非是进程启动期、测试专用路径之外的绝对不变量,并且错误消息具有明确诊断价值。panic!() 作为输入校验、算法状态控制或普通错误处理手段。unwrap() / expect(),但应保持错误意图清晰。unwrap(),必须确保其用途是演示 API,而不是暗示生产代码应采用该模式。? 的地方优先使用 ?,不要手工层层匹配后再丢失上下文。rsod-core 中已有错误类型和 Result 别名时,新代码应优先复用,而不是重新发明并行的基础错误模型。error.rs 或等价错误模块,而不是等到错误处理扩散后再回补。panic!。ResultString 或 Box<dyn Error> 扩散为默认公共接口unwrap() / expect() / panic!()x86_64-unknown-linux-musl 与 aarch64-unknown-linux-musl 兼容性明确的库。rsod/Cargo.toml 的 [workspace.dependencies] 时,优先在那里统一声明版本,而不是让多个 crate 私自漂移。-sys、原生编译脚本、C/C++/汇编代码、系统库绑定、静态链接需求的依赖,都必须额外审查其在 cargo zigbuild 下对 amd64 与 arm64 的可用性。rusqlite 的 bundled 特性这类更可控的依赖方式。default-features = false 的可裁剪模式时,应优先评估最小功能集,而不是直接引入全量能力。rsod-ffi 中新增依赖必须严格服务于 FFI 转换、Arrow 交换或必要的边界支撑,不能把算法依赖错误地堆到 FFI 层。rsod-core 中新增依赖必须极其克制,避免让核心抽象层背负沉重实现依赖。x86_64-unknown-linux-musl 与 aarch64-unknown-linux-muslcargo zigbuild 下稳定构建build.rs、动态链接假设或额外系统库要求[workspace.dependencies] 统一管理rsod-core 或错误地上浮到 rsod-fficargo testcargo zigbuild --release --target x86_64-unknown-linux-muslcargo zigbuild --release --target aarch64-unknown-linux-musl