关于 hegel
hegel 是用于多种编程语言的属性测试 Skill,指导编码 Agent 根据代码证据编写测试,并进行失败分析和独立审查。
主要功能
- 01生成随机输入并缩减失败用例
- 02支持多种语言的测试库
- 03基于证据设计属性
- 04覆盖检查与对抗性审查指南
适用场景
- 01查找最小反例
- 02测试公共 API 和边界情况
- 03完成前检查测试覆盖
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hegeldev/ hegel-skill --skill hegel安装后在 Claude Code 中输入/hegel确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
techniques/adversarial-review.mddirections.mdgenerators.mdrunning.mdscale.mdsurfaces.mdtriage.md详细介绍
Hegel:基于属性的测试
Hegel 会为你的代码生成随机输入,并将失败用例缩减为最小反例。Rust(hegeltest)、Go、C++、TypeScript、Java 和 OCaml 都有相应的库,且都集成了标准测试运行器。
按以下顺序了解 API:本仓库中已有的 hegel 测试、该库的文档,以及环境中可用的 hegel 库源码(vendored 或 registry 副本)。确认你使用的每项内容的确切名称和签名。不要猜测语法。
每项属性都必须有依据——文档中的契约、名称和签名、代码自身断言的不变量、已有测试。未记录但通常合理的预期(如往返转换、两种等价写法得到一致结果、缩放输入后答案不变)也算依据:明确指出该预期;当此类测试失败时,应根据这种行为是否站得住脚来判断,而不是看是否有明确承诺。每个测试只写一项属性,并写在项目现有的测试文件中。
技巧
本技能的 techniques/ 目录中有简短、具体的指南。到达相应阶段、遇到困难或结果出乎意料时,加载相应指南:
techniques/surfaces.md— 选择测试内容:完整的公共 API、同级入口、每种实例化techniques/directions.md— 接受与拒绝方向的属性;能锁定具体值而不只是有效性的 oracletechniques/generators.md— 生成器:完整取值域、恶意输入、目标子集techniques/scale.md— 用于探测递归和复杂度错误的规模测试techniques/running.md— 用例数量和运行配置techniques/triage.md— 调查失败并如实报告techniques/adversarial-review.md— 完成前,由子代理审查你可能遗漏的属性
完成前
以下三个步骤缺一不可;跳过任何一步都意味着任务尚未完成。
-
覆盖面。 对照库的公共 API 索引,重新检查你的覆盖面清单(
techniques/surfaces.md):每个公共模块,以及你测试过的每个表面对应的同级入口和实例化,都必须有测试或明确说明理由。然后根据上面的技巧菜单检查每个已测试的表面——未采用的技巧都要说明理由。 -
由子代理进行对抗性审查——必须执行,不可跳过。 启动一个独立的子代理(Task 工具,或你运行环境中的等效工具),找出你遗漏的属性。提供实现和它必须满足的契约(文档注释、README、签名),但不要提供你的测试——审查者看到你的测试就会继承你的盲点,而使用一个全新 Agent 的意义正在于此。要求它假定代码有错,直到有证据证明并非如此;并返回契约所隐含的属性(往返转换、不变量、等价路径之间的一致性、命名值的文档定义)以及最可能导致问题的输入类别(空值、退化情况、边界值、最大值、格式错误)。将它返回的内容写成 hegel 测试,运行这些测试,并修复它们发现的问题。只有在审查已完成且你已采取行动后,任务才算完成。完整说明见
techniques/adversarial-review.md。 -
检查清单。 根据
hegel-review检查清单审查你编写的内容。