str-format
STR(Structured Tree Resource,结构化树资源) 格式的参考实现:读写库 + 校验器 + str 命令行工具。
用一个目录树存储结构化资源,让人类与 AI 代理在同一份资产上安全地读写、协作与版本控制。
- 格式:
.str目录 bundle(形态对标 macOS.app)—— 纯目录 + 纯文本,零平台依赖 - 本 crate:
str二进制(20+ 子命令、35 个校验错误码)+ 可复用的纯 Rust 库 - 规范正文(唯一真源)、JSON Schema、示例 bundle、Agent 技能包:见 frowhy/str.str
安装
装出的可执行文件名为 str(无运行时依赖)。也可不安装,直接从仓库源码构建:
&&
快速上手
作为库使用:
use ;
let bundle = new?; // 路径不存在 → Err(Error::NotFound)
let report = validate?; // 遍历整棵树并按规范逐项校验
assert_eq!;
三份内嵌 Schema 与仓库根真源的关系
src/lib.rs 通过 include_str!("../schema/…") 内嵌三份档位 JSON Schema
(root / node / branch),供 bundle 未自带 ._schema/ 时兜底。
- 唯一真源在仓库根
._schema/(属格式规范资产,与examples/同级); - crate 内
schema/是它的派生副本 —— 因为 crates.io 只打包 crate 目录内的文件, 且include_str!无法引用包外路径(否则cargo package的验证构建必然失败); - 副本由
bash scripts/sync-schema.sh生成,并由tests/schema_sync.rs守卫二者 逐字节一致:一旦漂移,cargo test直接失败,不会静默分叉。
版本
本 crate 的版本(当前 0.3.0)是独立于格式规范版本的一条轴:规范定义磁盘上的数据契约,
crate 定义代码 / 命令契约,两者可各自演进。当前实现对应规范 v1.9.0(str 主版本 = 1);
三条轴与发行 tag 的对应关系登记在仓库根 VERSIONS.toml。逐版变更见 CHANGELOG.md。
许可
MIT,见 LICENSE。