rdzehtsiar/corpusforge

GitHub: rdzehtsiar/corpusforge

一个离线确定性的对抗性文本语料库编译器,用于对 tokenizer、解析器和 Unicode 处理管线进行压力测试并生成可复现的回归测试夹具。

Stars: 0 | Forks: 0

# CorpusForge [![测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/55d3943ee6162238.svg)](https://github.com/rdzehtsiar/corpusforge/actions/workflows/tests.yml) [![codecov](https://codecov.io/gh/rdzehtsiar/corpusforge/graph/badge.svg)](https://codecov.io/gh/rdzehtsiar/corpusforge) [![质量门状态](https://sonarcloud.io/api/project_badges/measure?project=rdzehtsiar_corpusforge&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=rdzehtsiar_corpusforge) CorpusForge 是一个计划中的离线、确定性语料库编译器,专门用于处理恶意文本。它面向需要可复现输入的工程师,这些输入可对 tokenizer、解析器、渲染器、压缩行为、Unicode 处理和文本预处理 pipeline 施加压力。 该项目不是 AI 写作工具、本地语言模型或通用的 lorem ipsum 生成器。其目标是工程可靠性:生成可以复现、最小化并转化为回归测试夹具的对抗性文本和字节语料库。 ## 愿景 CorpusForge 旨在使本地开发和 CI 中的恶意文本测试变得切实可行。 产品方向是: - 基于显式种子和元数据进行确定性生成 - 感知 Unicode 的 tokenizer 和解析器压力测试 - 可复现的失败样本和字节范围 - 失败用例的缩减/最小化 - 可审查和验证的透明配置文件格式 - 优先离线操作,无遥测或云依赖 - 明确记录哪些功能受支持、部分支持、不稳定或故意不支持 ## 当前状态 CorpusForge 处于早期实现阶段。 本仓库现在包含一个 Rust workspace、共享错误类型、确定性种子和流原语、里程碑 3 `.cff` v0 配置文件支持、里程碑 6 内置 tokenizer Unicode 工作流、范围较窄的里程碑 7 缩减/重放 MVP,以及范围较窄的里程碑 8 夹具/模板化语法生成。`corpusforge` 二进制文件可以打印顶层和特定命令的帮助信息,并且存在用于确定性夹具配置的 `.cff` v0 配置构建、读取、检查和验证工作流。 `corpusforge-unicode` crate 包含用于确定性、基于夹具的 Unicode 对抗性生成的里程碑 4 库 API。CLI 还通过 `corpusforge gen --unicode ...` 和 `corpusforge ci tokenizer` 公开了这些基于夹具的 tokenizer 模式:`grapheme`、`bidi`、`zero-width`、`emoji`、`normalization`、`mixed` 和 `invalid-utf8`。 Unicode 输出边界被有意分开。有效文本生成返回 UTF-8 文本并拒绝 `invalid-utf8`。原始字节生成返回字节,并且是 `invalid-utf8` 用例唯一受支持的路径。当前实现使用确定性流从内置夹具中采样;它并不是一个广泛的 Unicode 或 tokenizer 兼容性保证。 N-gram 训练和基于配置文件的生成已作为字节级 bigram MVP 实现。`corpusforge ci tokenizer` 可以针对内置的 tokenizer Unicode 样本运行外部 stdin harness,并写入稳定的 JSON 报告。 里程碑 7 添加了字节级缩减和基于配置文件按字节范围的重放。`corpusforge shrink` 读取最初失败的字节输入,直接调用谓词可执行文件(不使用 shell),将候选字节写入谓词的 stdin,并保留可复现的失败签名。谓词退出代码 `0` 表示候选通过;非零退出表示失败。仅当原始输入持续超时时才保留超时,并且会拒绝不稳定的谓词。默认值为 `--timeout-ms 1000` 和 `--max-runs 10000`。 `corpusforge replay` 读取带有嵌入 n-gram 模型的 `.cff` 配置文件,接受 `--seed` 或 `--seed-file`,并重放半开区间 `--range ..` 的字节范围。如果没有 `--out`,replay 会将二进制字节直接写入 stdout。`--json` 需要 `--out`,因为否则 stdout 会承载重放的字节。Shrink 和 replay 可以写入不带时间戳的稳定元数据 JSON。 配置文件格式支持仅限于不稳定的 `.cff` v0 行为,不提供跨版本兼容性保证。缩减器是字节级的,不感知 Unicode 或结构。Replay 当前使用直接的配置文件、种子和范围标志,而不是使用保存的元数据文件。在实现并由测试覆盖之前,更广泛的确定性输出保证、兼容性声明和生成行为应被视为计划中的。 里程碑 8 通过 `corpusforge gen --grammar markdown|json --grammar-mode valid|near-valid|malformed` 添加了用于 Markdown 和 JSON 的内置语法生成。语法输出仅为 UTF-8 文本,并由确定性夹具/模板构建。它不是一个完整的 Markdown 或 JSON 一致性测试套件,也尚未由 `.cff` 配置文件支持。语法生成可以选择使用 `--unicode ` 将有效文本的 Unicode 夹具模式组合到叶内容中;`invalid-utf8` 不能与语法生成组合,因为语法输出是有效的 UTF-8。有关当前面向 harness 的工作流,请参阅[语法工作流演示](./docs/grammar-workflow.md)。 目前请勿将 CorpusForge 用于生产工作流。 ## 目标用户 CorpusForge 面向需要回答以下实际问题的工程师: - tokenizer 是否能正确处理恶意的 Unicode 和字节序列 - 解析器或渲染器为何在罕见的文本边缘情况上崩溃 - 如何从种子和配置文件复现文本处理失败 - 如何将失败的输入最小化为稳定的回归测试夹具 - 摄取、embedding、RAG 或预处理 pipeline 在处理对抗性文本时的表现 - 如何在没有网络访问的情况下在 CI 中运行确定性文本压力测试 ## 计划范围 初始开发侧重于: - 可设置种子的语料库配置文件 - 确定性的文本和字节生成 - Unicode 对抗模式 - 内置的 Markdown 和 JSON 语法夹具 - 配置文件检查和验证 - 可复现的重放 - 缩减/最小化工作流 - 对 CI 友好的报告 后续工作可能会将语法生成连接到 `.cff` 配置文件,扩大覆盖范围,或者在这些行为被实现和测试后添加特定于语法的 CI 报告。 ## 非目标 CorpusForge 不打算成为: - 通用的 AI 文本生成器 - transformer 运行时 - 托管服务 - 基于遥测的产品 - 需要云账户的工具 - 替代特定格式的一致性测试套件 - 在没有证据的情况下保证解析器或 tokenizer 正确性的工具 ## 原则 - 默认离线 - 默认无遥测 - 在实际可行的前提下实现确定性输出 - 可复现的配置文件、生成的语料库、重放范围和最小化用例 - 由测试支持的兼容性和可靠性声明 - 明确声明不支持和部分支持的行为 - 稳定、可检查的报告格式 - 跨平台开发和 CI 友好性 ## 开发 开发当前使用 Rust CLI 优先的 workspace,采用确定性测试,并以单个静态二进制文件作为分发目标。 本地检查: ``` cargo fmt --check cargo clippy --workspace --all-targets -- -D warnings cargo test --workspace cargo run -p corpusforge-cli -- --help ``` 这些检查应保持离线和确定性。 项目文档: - [架构](./docs/architecture.md) - [确定性](./docs/determinism.md) - [Tokenizer 工作流演示](./docs/tokenizer-workflow.md) - [语法工作流演示](./docs/grammar-workflow.md) - [路线图](./docs/roadmap.md) - [Agent 工作流](./docs/agent-workflow.md) - [贡献](./CONTRIBUTING.md) ## 许可证 根据 Apache License, Version 2.0 授权。 请参阅 [LICENSE](./LICENSE.txt)。
标签:ASM汇编, Rust, Unicode, 代码覆盖率, 压力测试, 可视化界面, 对抗性文本, 数据管道, 文本处理, 测试工具, 测试用例生成, 离线工具, 编译器, 网络流量审计, 解析器, 词法分析, 软件工程, 通知系统