拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Magika Rust 库在新模型发布时如何用 sync.sh 同步 model 相关文件

Magika Rust 库在新模型发布时如何用 sync.sh 同步 model 相关文件【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika当 Magika 发布新的检测模型时Rust 库crates.io 上的magika库和magika-cli命令行工具里与模型绑定的源文件需要同步更新否则库的标签、阈值和新模型不匹配。Magika 仓库为此提供了一个维护流程在rust/gen目录下用gencrate 重新生成源文件并在rust目录执行./sync.sh完成一次完整的同步。本文基于 rust/gen/README.md 和 rust/sync.sh 的原文给出这条维护路径的操作步骤和验证方式。哪些文件与新模型绑定rust/gen/README.md 列出了 Rust 库中依赖模型的三个文件文件与模型的关系rust/lib/src/model.onnx模型本体是一个符号链接它指向rust/gen/model/model.onnx而rust/gen/model又是指向assets/models下某个模型目录的符号链接。发布 crate 时该链接会被解引用dereference为实体文件。rust/lib/src/model.rs描述模型输出的标签与配置由模型配置rust/gen/model/config.min.json生成。rust/lib/src/content.rs可能的文件类型列表由内容类型知识库 assets/content_types_kb.min.json 生成。gencrate 的职责是重新生成后两个文件以及rust/gen下的辅助清单 rust/gen/content_types。生成出来的文件带有 DO NOT EDIT 注释头说明它们由 rust/gen/src/main.rs 产生不应手工编辑。准备把模型符号链接指向新模型gencrate 的入口逻辑rust/gen/src/main.rs读取三个输入../../assets/content_types_kb.min.json即仓库根目录下的内容类型知识库当前目录下的model符号链接用它的目标名作为模型名写入生成文件的MODEL_NAME常量model/config.min.json即所选模型目录中的模型配置。因此切模型的关键动作只有一步修改rust/gen/model这个符号链接让它指向assets/models下的新模型目录。当前仓库中它指向../../assets/models/standard_v2_1可用readlink rust/gen/model确认assets/models下各模型目录如standard_v2_0、standard_v3_0内都包含model.onnx和config.min.json。将链接改为指向新模型目录后gencrate 就会基于新模型的config.min.json重新生成model.rs和content.rs。前置条件有 Rust 工具链cargogencrate 是 edition 2021见 rust/gen/Cargo.toml本地是 git 检出因为sync.sh --check依赖git diff。执行在 rust 目录运行 sync.sh在rust目录下执行cd rust ./sync.sh脚本内部做两件事见 rust/sync.shSync generated filescd gen cargo run运行gencrate重新生成rust/lib/src/content.rs、rust/lib/src/model.rs和rust/gen/content_types。Sync CLI outputcd cli cargo build --release然后用新构建出的magika二进制对tests_data/basic下的示例文件跑一组命令rust/code.rs、rust/code.rs python/code.py配合--colors、--output-score、--json、--jsonl、--mime-type等参数把所有输出重定向写入cli/output。这一步保证 CLI 目录里存档的输出与新模型的实际输出一致。需要明确的副作用该脚本会写入本仓库工作区覆盖rust/lib/src/content.rs、rust/lib/src/model.rs、rust/gen/content_types、rust/cli/output并在rust/cli/target/release下构建产物。这是设计内的维护脚本产物应以提交形式进入版本控制脚本本身不删除任何文件set -e保证任一步失败即中止。验证用 --check 模式确认生成文件已同步gencrate 对应的测试就是检查生成文件是否与输入一致。执行cd rust ./sync.sh --check--check模式不重新生成文件只做一次git diff --exit-code比对输出两种结果之一通过打印Generated files are synced失败打印Generated files are not in sync如果检测到 CI 环境变量$CI非空还会提示Execute ./sync.sh from the rust directory。也就是说同步是否完成以./sync.sh --check返回成功为判据。仓库根目录的 CI 脚本 rust/test.sh 在跑完gen、lib、cli三个 crate 各自的测试后最后一条就是./sync.sh --check与上面是同一验证逻辑。如果--check报Generated files are not in sync说明生成文件与当前模型输入不一致按脚本提示执行一次./sync.sh重新生成即可。限制与后续步骤rust/gen crate 的定位是维护用途publish false不参与对外发布它不替代编译期生成README 中解释了为什么选择在发布前生成好文件而不是用 build script避免发布多余配置、避免编译方信任 build script、减少编译复杂度。符号链接链条rust/lib/src/model.onnx - rust/gen/model/model.onnx - assets/models/模型/model.onnx在发布时才会解引用发布准备由rust/publish.sh完成它会生成一个需要先合并的提交见 rust/README.md。sync.sh只覆盖换模型这一条维护路径日常代码改动仍走 rust/lib/test.shcargo check、cargo test、cargo fmt --check、cargo clippy --denywarnings等验证。完成一次换模型同步后./sync.sh --check输出Generated files are synced且git diff干净即表示model.rs、content.rs、content_types与cli/output都已与rust/gen/model指向的模型一致可以按 rust/README.md 的流程继续走测试和发布。【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门