mcpField
H
hegel

hegel

github.com/hegeldev测试与质量8563 次安装2 周前更新
代码仓库

关于 hegel

hegel 是用于多种编程语言的属性测试 Skill,指导编码 Agent 根据代码证据编写测试,并进行失败分析和独立审查。

主要功能

  1. 01生成随机输入并缩减失败用例
  2. 02支持多种语言的测试库
  3. 03基于证据设计属性
  4. 04覆盖检查与对抗性审查指南

适用场景

  1. 01查找最小反例
  2. 02测试公共 API 和边界情况
  3. 03完成前检查测试覆盖

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hegeldev/hegel-skill --skill hegel

安装后在 Claude Code 中输入/hegel确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

techniques/
adversarial-review.md
directions.md
generators.md
running.md
scale.md
surfaces.md
triage.md

详细介绍

Hegel:基于属性的测试

Hegel 会为你的代码生成随机输入,并将失败用例缩减为最小反例。Rust(hegeltest)、Go、C++、TypeScript、Java 和 OCaml 都有相应的库,且都集成了标准测试运行器。

按以下顺序了解 API:本仓库中已有的 hegel 测试、该库的文档,以及环境中可用的 hegel 库源码(vendored 或 registry 副本)。确认你使用的每项内容的确切名称和签名。不要猜测语法。

每项属性都必须有依据——文档中的契约、名称和签名、代码自身断言的不变量、已有测试。未记录但通常合理的预期(如往返转换、两种等价写法得到一致结果、缩放输入后答案不变)也算依据:明确指出该预期;当此类测试失败时,应根据这种行为是否站得住脚来判断,而不是看是否有明确承诺。每个测试只写一项属性,并写在项目现有的测试文件中。

技巧

本技能的 techniques/ 目录中有简短、具体的指南。到达相应阶段、遇到困难或结果出乎意料时,加载相应指南:

  • techniques/surfaces.md — 选择测试内容:完整的公共 API、同级入口、每种实例化
  • techniques/directions.md — 接受与拒绝方向的属性;能锁定具体值而不只是有效性的 oracle
  • techniques/generators.md — 生成器:完整取值域、恶意输入、目标子集
  • techniques/scale.md — 用于探测递归和复杂度错误的规模测试
  • techniques/running.md — 用例数量和运行配置
  • techniques/triage.md — 调查失败并如实报告
  • techniques/adversarial-review.md — 完成前,由子代理审查你可能遗漏的属性

完成前

以下三个步骤缺一不可;跳过任何一步都意味着任务尚未完成。

  1. 覆盖面。 对照库的公共 API 索引,重新检查你的覆盖面清单(techniques/surfaces.md):每个公共模块,以及你测试过的每个表面对应的同级入口和实例化,都必须有测试或明确说明理由。然后根据上面的技巧菜单检查每个已测试的表面——未采用的技巧都要说明理由。

  2. 由子代理进行对抗性审查——必须执行,不可跳过。 启动一个独立的子代理(Task 工具,或你运行环境中的等效工具),找出你遗漏的属性。提供实现和它必须满足的契约(文档注释、README、签名),但不要提供你的测试——审查者看到你的测试就会继承你的盲点,而使用一个全新 Agent 的意义正在于此。要求它假定代码有错,直到有证据证明并非如此;并返回契约所隐含的属性(往返转换、不变量、等价路径之间的一致性、命名值的文档定义)以及最可能导致问题的输入类别(空值、退化情况、边界值、最大值、格式错误)。将它返回的内容写成 hegel 测试,运行这些测试,并修复它们发现的问题。只有在审查已完成且你已采取行动后,任务才算完成。完整说明见 techniques/adversarial-review.md。

  3. 检查清单。 根据 hegel-review 检查清单审查你编写的内容。

评论

支持 Markdown