一个学生打开奖学金申请页面,还没开始写自己的学业情况,先得翻译界面。“申请人法定全称命名”“当前注册分类”“同期教育资助声明”——问题本身很普通,措辞把它们变成了一道阅读理解题。
![]()
这个学生是虚构的,项目里的奖学金门户也是虚构的。开发者把这条边界划得很清楚:不冒充任何机构,不代交别人的申请,也不暗示一个没经过检验的工具能搞定所有公共服务。他要测的是一整条无障碍填表路径,而不是替谁把表交上去。
AccessPath 是一个本地优先的无障碍填表向导,内置三张虚构表单:学生奖学金申请、社区工作坊报名、家庭支持咨询。它直接读取真实的 HTML 源码,由本地 Qwen 模型给出更通俗的标签和解释,原始说明始终并排保留。用户逐项核对准备清单,一次只回答一个问题,全部复核后,再自己决定要不要提交。
结尾是一个真会动的动作。确认之后,受控的 Playwright 浏览器会填写单独部署的虚构门户、提交表单,并读回真实的本地回执。用户还能查看操作记录,事后删掉保存的答案。
要减掉的重复负担是“解码”:记住哪个短语对应哪个熟悉的问题,反复回去找说明,判断某个字段到底适不适用于自己。这个应用做的事,是在需要的那一刻把信息递到手边,同时把决定权留在填表人手里。
演示视频长 1 分 58 秒,展示的是当前午夜蓝界面,配有旁白和同步字幕。一段真实的 Playwright 录制走完了整个奖学金流程,用的是合成演示学生和 student@example.org:打开原始门户、触发原生校验、请求新的本地 Qwen 推理、把解释和证据对照、走完准备项和问题、复核答案、确认提交、读取回执、检查活动记录、删除草稿。全程合成信息,不向任何真实机构发送内容。
三道锁是怎么上的
起点是证据。每张受支持的门户都是一个真实 HTML 文件,由独立的本地应用提供。解析器从中提取字段 ID、标签、描述性说明、必填标记、下拉选项、长度限制、格式模式、数值边界、字段分组、条件必填、准备项和歧义备注,还会对源码做哈希。这份解析出来的结构,同时控制校验规则和浏览器选择器。
Qwen 拿到的是源码元数据,不是申请人的答案。它返回一份结构化的通俗标签和简短解释,字段 ID 必须与源码完全一致。一道守卫会拒绝字段说明、选项和 HTML 属性里都不存在的数字;额外的过滤器会拦下关于资格、截止日期、付款、上传以及可选字段必填措辞的无依据说法。
这些守卫的职责很窄:抓特定类型的错误,不证明每一句改写都忠实。所以界面保留原始说明,并明确标注 AI 措辞只是建议。清单项和校验规则直接从源码提取,不由模型生成。
开发中出过一次失败,把这条界线照得很清楚。Qwen 给邮箱字段的解释加了一条“120 字符上限”,第一版守卫把它拒了,因为说明文字里没提这个数字。可那个输入框确实带着 maxlength=“120”。模型是对的,校验器不完整。开发者把解析出的 HTML 约束补进守卫,这次修正靠的是观察到的证据,而不是假定模型每句话都对。
向导按 DOM 顺序推进,只显示当前有效的问题。奖学金申请人说自己还有其他资助,资助方的问题才会出现;改答“否”,保存时那段失效的细节会被移除。工作坊的无障碍备注可以留空,家庭人数必须是源码边界内的整数。
提交前,API 先校验答案和准备清单,再生成一个十分钟有效的确认凭证,摘要存在本地。改动任何一个答案都会让它失效。一个原子事务会在浏览器自动化启动前消费掉它,防止重放触发重复动作。复核页上的同意框仍要用户亲手勾选,提交按钮初始是禁用的。
浏览器拿到的是固定选择器和已复核的答案,不是模型生成的浏览计划。它从干净的上下文启动,没有账号 Cookie,并拦截配置的本地门户源之外的所有网络请求。模型没有任何可以自行提交的工具。
SQLite 把草稿存在设备上,浏览器只存一个高熵草稿标识和阅读偏好。审计描述记录动作,但不重复姓名、邮箱和答案。删除会移除草稿及其活动记录,并启用 SQLite 安全删除。数据库没有加密,删除也不构成对操作系统备份或另行生成的视频文件的承诺——这些限制写在界面和 README 里。
测出来的数字
测试同时覆盖逻辑和真实路径。11 个后端测试检查提取、条件、校验、同意门、过期、重放、源码变更、浏览器失败、审计隐私、来源拒绝和删除。5 个浏览器测试覆盖响应式工作区、带真实本地推理的奖学金流程、纯键盘完成社区表单并保存续填、经由真实浏览器边界的家庭支持提交,以及纯文本代理故障后不丢草稿的恢复。
八种视图与配置组合的 axe 扫描,在所选 WCAG 标签下报告零违规。重设计后的界面用横向导航、高对比蓝色控件、可见进度和随大字号重排的布局。这些是开发者自测的证据,不是 WCAG 认证。开发者没有招募残障参与者,也没做过可用性研究,因此不对这类测试作任何声称。
三张表单的新鲜推理耗时分别是 3.33 秒、2.00 秒、1.99 秒,跑在一块共享的 RTX 4090 上。18 个预期字段全部按顺序提取,每条生成的解释都通过了已实现的守卫。这些是模型已在本地就绪时的固定样本测量,不是冷启动基准,也不代表任意网站。原始生成文本、哈希、摘要、耗时和计数都保存在评估 JSON 里。
开放权重让语言这一步能跑在应用所在的同一台设备上。模型只看到虚构的表单说明,没有云端 AI 兜底,也没有付费 API 依赖。这也让行为可被检查:有人能定位确切的模型摘要、重跑评估、把生成的解释和来源并排查看、在支持的本地 Qwen 配置内换模型、改进守卫。解析器、确认边界、浏览器适配器和测试都是普通应用代码,可以和模型输出分开审阅。
最有价值的那条界线是:模型被允许解释,而确定性的代码继续对要求和动作负责。这个分工让一个小型开放模型变得有用,又不必假装它是申请人处境的权威。它也给了贡献者具体的改进位置——更清晰的证据、更强的校验、更好的键盘测试、更诚实的错误恢复。
还有活要干。原型只支持这三张虚构表单;提交过程中服务器崩溃,可能留下需要人工核对的草稿;没有多用户认证,数据库也没加密;语音交互和获准的真实站点适配器仍是后续工作。这些都是把当前范围说清楚、保持可测的理由。
这里没有“填表速度提升百分之多少”的说法,因为没做过这样的研究。演示能证明的更具体:八个源码字段变成一次一个的有效问题;条件细节只在相关时出现;原始说明始终可达;保存的进度能扛过刷新;一次复核过的动作只在确认后抵达真实的虚构门户。之后用户能看到发生了什么,并把保存的答案删掉。
省下的是反复查找、解码、把表单说明一直记在脑子里的那份力气。下一步的评估应该找同意的参与者来测完成度、错误、理解和投入。在那之前,这个项目可以诚实地展示工作流,而不编造人的结果。
一张让人困惑的表,能把简单问题变成一场考试。AccessPath 想拿走一点这场考试:一句更清楚的话,一个管得住的步骤,以及足够让你自己做决定的空间。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.