a11y-toolkit 定位为“AI 编程智能体的无障碍层”,围绕 WCAG 2.2 标准构建了一套完整的工具链,包含 26 个 MCP 工具、6 个提示词和一项技能,覆盖审计、修复、文档、监控、交接的完整循环,并新增了“盲测”可用性测试能力。其核心理念是“机器发现,人类签署”——自动化扫描不能替代人工确认,但可以为智能体提供可执行的证据。
主要能力方面,工具分为静态审计与渲染审计两类。静态审计(a11y_audit_url)可对 URL 或 HTML 字符串进行快速 WCAG 2.2 审计,提供 20 多项自动化信号和 0-100 加权评分,检测项包括图片缺少 alt、控件无可访问名称、表单字段无标签、用户数据字段缺少 autocomplete、非交互元素绑定点击事件、未知 ARIA 角色、重复的无名地标、定时 meta refresh、缺少跳过机制、lang/title 缺失、标题结构、阻止缩放、字幕、自动播放音频、通用或重复链接文本、target=_blank 无警告、正 tabindex、可聚焦元素上的 aria-hidden、表格无 th、重复 id、重复 accesskey 等。每条发现都附带具体修复建议。渲染审计(a11y_audit_dom)通过本地 Playwright/Chromium 进行深度审计,可测量真实计算文本对比度(含 alpha 合成)、对图片/渐变上的文字进行像素采样测量、最小目标尺寸 24×24(WCAG 2.2 新增 2.5.8)、可见焦点指示器启发式检测,以及静态检查的渲染版本。
专项工具覆盖多个自动化难点:表单错误测试(a11y_form_errors)会填入无效数据并真实提交,判断错误是否被文本标识并与字段关联;键盘陷阱检测(a11y_keyboard)通过真实 Tab 行走最多 60 个停靠点,检测循环并测试 Escape 是否能释放;无限滚动审计(a11y_infinite_scroll)检测焦点元素是否在滚动批次中存活、新内容是否被播报、信息流是否有终点;320px 重排检查(a11y_reflow_320)检测水平滚动和溢出元素;悬停/聚焦内容(a11y_hover_focus)测试工具提示是否可通过 Escape 关闭;屏幕阅读器转录(a11y_screen_reader_transcript)线性遍历无障碍树,返回盲人用户听到的播报文本。
盲测功能是独特能力:智能体仅凭无障碍树感知,通过可访问名称和键盘操作尝试真实任务(注册、结账、密码重置等),并生成确定性评分判定(通过/部分/失败/受阻),摩擦项映射到 WCAG 标准并流入证据包。此外还提供确定性安全自动修复(a11y_autofix),仅应用答案唯一的修复(如解除视口缩放阻止、添加精确 autocomplete 令牌、填充缺失的 html lang 和空 title),需要判断的修复(alt 文本、对比度、可访问名称)不会被触碰,而是返回未应用项及修复建议。
对比度工具包括精确颜色对对比度(a11y_contrast_pair,支持 #hex、rgb()、hsl()、CSS 颜色名,含 alpha 合成,失败时建议最近通过色)、图片上文字对比度(a11y_contrast_image,像素级采样真实背景,返回最差/中位/p95 比值、通过 AA 的面积百分比、3×3 网格敌对区域检测)以及元素真实对比度(a11y_contrast_element,在 Chromium 中加载页面,将元素文字透明化后截图,仅采样真实背景像素)。
使用方式上,工具以 MCP 形式提供给 AI 编程智能体,核心零依赖,渲染类工具需要本地 Playwright(pip install playwright && playwright install chromium)。所有工具除特别说明外接受 lang 参数(en | es),输出为 JSON。部分工具支持 auth_state 参数以审计登录后的页面,本地文件不会上传。
适用场景包括:AI 智能体在编写网页时进行无障碍审计与修复、开发团队在测试/预发布环境验证表单错误处理、对含模态框或嵌入应用的页面进行键盘陷阱检测、对分页信息流进行可访问性审计、对固定宽度模板进行 320px 重排检查、以及通过盲测评估真实任务的无障碍可用性。
限制方面:自动化仅覆盖约三分之一的 WCAG 标准,工具定位为“过滤器而非裁决”;表单错误测试会真实提交无效数据,不应针对会触发真实邮件、订单或线索的生产表单运行;键盘陷阱检测仅针对 2.1.2,焦点可见性属于 a11y_audit_dom;320px 重排检查仅针对 1.4.10;悬停/聚焦工具仅针对工具提示;盲测判定是任务可用性证据,绝非合规性证明。Nu Html Checker 的 html 模式会将文档 POST 到 W3C 服务,敏感内容应使用自托管实例。部分工具需要本地 Playwright 环境。