zmaril/Straitjacket

GitHub: zmaril/Straitjacket

Straitjacket 是一个用 Rust 编写的快速确定性扫描器,通过可配置规则自动检测并标记 LLM 生成代码与文本中的典型质量问题。

Stars: 1 | Forks: 0

# straitjacket

Engraving of a patient restrained in a strait-waistcoat
Insane patient in a strait-waistcoat. Wellcome Collection (L0011301), CC BY 4.0, via Wikimedia Commons.

Documentation Powderworks Straitjacket on the GitHub Marketplace Join the Discord Follow @ZackMaril on X

Straitjacket 是一个快速、确定性的扫描器,专门用于标记 LLM 常常生成的那种古怪代码和文本。它会使用一套规则来扫描你的文件——默认规则既严格又可配置——并标记出它发现的任何问题。它是一个单一且无运行时依赖的静态 Rust 二进制文件,因此无论你使用何种语言或技术栈,它都能轻松集成到几乎任何环境或仓库的 CI 中。 ## 文档 完整的文档——包括安装、用法、每条规则、CI 配置以及这些检查背后的原理——都在 **[straitjacket.dev](https://straitjacket.dev)**。 ``` # 快速开始 (Linux x86_64, macOS arm64/x86_64): curl -fsSL https://raw.githubusercontent.com/zmaril/straitjacket/main/install.sh | sh straitjacket ``` ## 背景与理念 Straitjacket 最初是 [powdermonkey](https://github.com/zmaril/powdermonkey) (PR #41) 仓库中针对特定库的 `lint-*` Bun 脚本。它的诞生是因为我实在受够了 Claude 总是擅自更改界面设计,以及它生成的那些类型的代码和文本。在过去的几年里,我在不同的项目中编写过这些 linter 的各种版本,并且随着我不断生成更多的代码和文本,我总能发现新的“代码异味”。最终,我决定把它们全部打包成一个工具,这样我就不用在各处零散地重复编写它们了——而且其他人也可以使用它,并告诉我 LLM 还喜欢做哪些令人讨厌的事情。 在 Straitjacket 的初期开发阶段,我有了一个深刻的认识:最让我反感的那些 LLM 修改应用设计的方式,完全可以完美对应到常见的 UI 设置上。Claude 会随机插入元素并更改它们的颜色——这本来是主题切换器的职责。Claude 认定它需要十种字体家族以及上百种字号和粗细——这是字体选择器的管辖范围。页面上的每个元素都在以各自的方式抖动;好家伙,这不就是动效控制开关吗。所以,在某种程度上,如果没有明确的指导——没有一个强制执行的设计系统——Claude 为什么不能放飞自我呢?我们又没说它不行。 因此,在将上述设计 token 限制在指定文件中的同时,我也建议为用户提供一种控制这些设置的方法。在我看来,这两者是相辅相成的。同样,在审查代码时,我发现 Claude 很容易将数千行代码偷偷塞进同一个文件中。我审查了所有的代码行,它们看起来没问题,但这些庞然大物会在不知不觉中向我袭来。对它们进行重构总能让代码库变得更好,而且我发现,当文件达到大约 1500 行时,它们的逻辑结构就会开始崩塌,足以引起我的注意。 至于那些垃圾文本,它们本身就是一种异味。这一点无可避免,我也不喜欢。Straitjacket 会尽最大努力扫描其中最常见的特征。使用 *delve* 这个词并没有错,但如果你经常使用它并伴随其他特征,那就很可疑了。我不想在这方面搞得太复杂。 Straitjacket 已经成为我的一种实践,将尽可能多的个人品味编码到确定性的检查器中,以便我能在 LLM 的输出上运行它们,希望能省去我亲自感叹“真恶心!”的麻烦。 ## 许可证 代码采用 [MIT](LICENSE) 许可协议。重要变更记录在 [更新日志](CHANGELOG.md) 中。 横幅图片(`assets/strait-waistcoat.jpg`)——*穿着约束衣的精神病患者*,来自 [Wellcome Collection](https://wellcomecollection.org/works/ckwscya3) (L0011301)——采用 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) 许给协议,并且**不**受 MIT 许可协议的约束;请在使用时遵循其自身的许可条款。
标签:LLM检测, Rust, SOC Prime, 云安全监控, 可视化界面, 开发工具, 网络流量审计, 通知系统, 静态分析