بنقرة واحدة
rust-core
当涉及 rsod/ 目录修改时使用。涵盖核心算法实现、数据结构、公共接口、错误处理、配置定义等。任何直接影响模型行为的 Rust 代码都必须遵守此规范。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
当涉及 rsod/ 目录修改时使用。涵盖核心算法实现、数据结构、公共接口、错误处理、配置定义等。任何直接影响模型行为的 Rust 代码都必须遵守此规范。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف 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