Evidence Graph:为AI代理的规范提供类型检查
Evidence Graph 是一个轻量级工具,确保AI代理解释器(如Claude Code和Codex)在实现时明确引用所有需求。它通过编译时检查,强制每个配置的需求在代码、测试或文档中得到明确确认,防止代理省略重要细节。
Evidence Graph 是一个专为AI编码时代设计的工具,它通过将规范转化为编译错误来确保AI代理(如Claude Code和Codex)的诚实性。当代理独立工作时,它们可能会跳过某些需求但仍报告“完成”。Evidence Graph 强制每个配置的需求从声称满足它的代码、测试或文档中获得明确的确认。
每次确认都需要指定确切的目标并说明原因。编译器不会判断原因是否真实——它迫使代理做出具体的断言。一个捏造的理由不能再隐藏在看似合理的差异中;它必须与它所矛盾的声明和证据并列。
代理仍然可以撒谎,但不能通过省略来撒谎。每个配置的义务都必须被解释,否则构建失败。每个选中的导出都必须被测试明确引用。决策和代码保持明确的连接。“完成”必须带有目标和理由。没有引用可以比其目标存活得更久。
安装和使用非常简单。首先安装必要的包:npm install -D typescript ttsc @ttsc/lint @samchon/lint-plugin-evidence。然后在lint.config.ts文件中配置插件,定义声明图。例如,一个声明可以指定React组件必须引用Markdown文档中的每个H2和H3章节。
该插件支持复杂的声明组合。你可以创建多层次的引用链:特性文档基于需求文档,组件实现特性规则,测试验证特性和组件。所有违反行为都会在每次ttsc构建、--noEmit检查和ttsx运行时出现,与类型错误在同一流中报告,无需单独的CI作业。
Evidence Graph 还支持TypeScript符号、Markdown标题和Swagger API操作。符号选择器允许你精确控制哪些声明和引用被跟踪。文件模式使用项目相对glob。对于TypeScript引用,可以通过文件、入口文件或包来定义种群。Swagger引用支持本地和远程文档,但每个文档必须是单一文件。
总之,Evidence Graph 为AI代理的规范实现提供了前所未有的透明度。它不阻止撒谎,但确保任何不诚实都必须以明确、可追踪的断言形式出现,从而显著提升代码质量和可维护性。