asish-singh/agent-readiness-auditor

GitHub: asish-singh/agent-readiness-auditor

一款命令行工具,用于扫描网站并评估其对 AI agent 的机器可读性及防御间接 prompt 注入攻击的能力。

Stars: 0 | Forks: 0

# Agent Readiness Auditor [![npm version](https://img.shields.io/npm/v/agent-readiness-auditor.svg)](https://www.npmjs.com/package/agent-readiness-auditor) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/asish-singh/agent-readiness-auditor/actions/workflows/ci.yml) 一个命令行工具,用于扫描网站并评估其与自动化 AI agent 的协作能力,以及防御 AI agent 攻击的能力。 ## 解决的问题 AI 助理越来越多地代替用户访问网站:阅读页面、遵循页面上的指令并执行操作。这给网站所有者带来了两个实际问题: 1. **安全性。** 网页上可能包含对人类访客隐藏,但仍会被 AI agent 读取的文本。这些隐藏的文本可能携带旨在劫持 agent 的指令。这被称为间接 prompt 注入(indirect prompt injection)。 2. **机器可读性。** 网站通常是为人类视觉设计的。如果网站同时发布关于其内容和规则的机器可读信号,AI agent 的表现会更好。 标准的 SEO 工具衡量的是网站对搜索引擎的友好程度。而本工具衡量的是完全不同的东西:网站对 AI agent 的友好程度,以及它对 AI agent 的阅读是否安全。 ## 检查内容 该工具会获取指定的 URL 并运行五项检查,最终给出一个 0 到 100 的分数以及从 A 到 F 的字母等级。安全性被特意赋予最高权重,因为一个会劫持 agent 但易于阅读的网站,比一个仅仅难以阅读的网站更糟糕。 | 检查项 | 分值 | 检查内容 | |---|---|---| | 隐藏的 prompt 注入文本 | 40 | 对人类隐藏的文本(例如 `display:none` 或 `opacity:0`),其中包含诸如“忽略之前的指令”等劫持 agent 的短语。 | | `llms.txt` 文件 | 15 | 发布的为 agent 提供站点精简结构的文件。参见 [llmstxt.org](https://llmstxt.org)。 | | `robots.txt` 对 AI 爬虫的立场 | 15 | 针对 AI 爬虫(如 GPTBot 和 ClaudeBot)的明确允许或禁止规则。 | | 结构化数据 (JSON-LD) | 15 | 让 agent 直接理解页面内容的机器可读数据。 | | 问责链接 | 15 | 可访问的联系方式、隐私政策、服务条款或关于本站的链接。 | ## 输出示例 ``` $ npx agent-readiness-auditor example.com Agent readiness audit for https://example.com ✅ No hidden prompt-injection payloads (40/40) ⚠️ llms.txt present (0/15) ⚠️ robots.txt addresses AI crawlers (0/15) ⚠️ Machine-readable structured data (0/15) ⚠️ Accountability surface present (0/15) Score: 40/100 (40%) Grade D ``` 每一行显示了检查结果、分数,以及(当检查未完全通过时)建议的修复方法。 ## 快速开始 如果您安装了 [Node.js](https://nodejs.org) 18 或更高版本,您可以直接运行该工具,无需进行任何安装: ``` npx agent-readiness-auditor example.com npx agent-readiness-auditor example.com --json ``` 使用纯域名(`example.com`)或完整的 URL(`https://example.com`)。`--json` 标志会输出可供脚本使用的机器可读格式内容。 ## 从源码运行 如果您想修改代码或在本地副本中运行它: ``` git clone https://github.com/asish-singh/agent-readiness-auditor.git cd agent-readiness-auditor npm install npm run audit -- example.com # human-readable report npm run audit -- example.com --json # JSON output ``` 命令中的 `--` 用于将 URL 传递给工具本身,而不是传给 npm。 要从本地副本安装全局命令 `agent-audit`: ``` npm run build # compile TypeScript into dist/ npm link # register the global command ``` 然后您就可以在任何文件夹下运行 `agent-audit example.com` 了。如果之后想要移除它,请运行 `npm unlink -g agent-readiness-auditor`。 ## 从 GitHub Packages 安装 该包还作为带作用域的镜像 `@asish-singh/agent-readiness-auditor` 发布到了 GitHub Packages 上。对于大多数用户来说,直接使用上述的 npm 安装方式更为简单。只有在您的组织将其作为标准时才使用 GitHub Packages,因为即使对于公开包,它也需要身份验证。 要从中安装,请创建一个具有 `read:packages` 权限的 GitHub 个人访问令牌,然后将该作用域指向 GitHub registry: ``` echo "@asish-singh:registry=https://npm.pkg.github.com" >> .npmrc echo "//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN" >> .npmrc npm install @asish-singh/agent-readiness-auditor ``` ## 退出代码 该工具会设置其退出代码,以便在自动化 pipeline 中使用: - `0`:审计运行完成,未发现严重的安全故障。 - `2`:发现了严重的安全故障(例如,隐藏的 prompt 注入文本)。可使用此代码来中断构建(fail a build)。 - `1`:工具无法完成审计(例如,网站无法访问)。 ## 代码组织结构 每个检查项都独立存放在 `src/checks/` 目录下的文件中,并返回一个结构化的结果。所有检查都在 `src/audit.ts` 的一个列表中注册,总分由该列表计算得出,因此添加新的检查不需要修改评分逻辑。架构决策记录在 [`docs/adr/`](docs/adr/) 中,计划的工作列在 [`ROADMAP.md`](ROADMAP.md) 中。 ## 背景 该工具源于 [Agentic Web Governance Pack](https://github.com/asish-singh/agentic-web-governance-pack),这是一套关于网站应如何对待 AI agent 的指导方针。本项目将其中几项指导方针转化为可运行和衡量的检查规则。 ## 许可证 MIT。请参见 [LICENSE](LICENSE)。
标签:AI代理, GNU通用公共许可证, LLMOps, MITM代理, Node.js, Web审计, 动态分析, 提示词注入检测, 暗色界面, 自动化攻击