AI 安全与端侧推理

共 27 题
📑 题目列表 27 题
#
★★★

1. AI 流式渲染的 Markdown 分块与代码块语法高亮的边界

AI 流式渲染中 Markdown 分块与代码块语法高亮的边界在哪里?如何避免流式分块破坏代码块结构?

  • 分块粒度与 Markdown 结构的对齐
  • 代码块未闭合期间的高亮策略
  • 分块边界(行级切分、块级切分)的选择

流式分块的边界问题是"增量切在哪":若按任意字节切分,可能切断代码块或列表结构。工程上以"行级/块级"为切分边界——增量按完整行聚合,代码块以 围栏的成对状态判断是否已闭合:围栏未闭合时整块视为"进行中代码块",渲染为代码块容器但暂不高亮(或用无语法高亮的纯文本样式),闭合后才触发语法高亮;列表、表格等也需在块级完整时才渲染其结构。边界取舍:块级切分保真但延迟高(小增量也等待块闭合),行级切分即时但可能频繁重渲染;实践中"行级即时渲染 + 代码块特判"兼顾两者——普通文本按行渲染,遇到 则切换到代码块累积模式。高亮边界:进行中的块用 CSS 固定高度/占位避免布局跳动,闭合后异步高亮(Worker + 节流),并记住"已完成块"缓存避免重复高亮。

答出"行级即时 + 块级特判"的分块策略、围栏成对状态驱动的未闭合处理,以及"完成后高亮 + 缓存"的性能边界。

#
★★★

2. 键盘操作、焦点管理、aria-live、减少动态效果、prefers-reduced-motion

AI 流式输出场景中,键盘操作、焦点管理、aria-live、减少动态效果与 prefers-reduced-motion 如何落地?

  • 流式区域的键盘可达性(复制、停止、重试的快捷键)
  • 焦点管理(新消息不抢焦点、对话框焦点圈定)
  • aria-live 的断言粒度与 prefers-reduced-motion 的适配

无障碍落地分四块:键盘操作——消息列表可用方向键浏览、复制按钮/停止按钮/重试按钮都可达焦,新消息出现不强制抢焦点(避免打断输入),用 roving tabindex 管理消息内交互;焦点管理——AI 面板/对话框打开时焦点移入并用焦点圈定(inert 背景),关闭时归还触发元素;aria-live——流式区域用 aria-live="polite" 的断言区播报"正在生成/生成完成",但逐 token 播报会刷屏,工程上节流播报(如每 2s 或完成时),并 aria-busy 标记进行中;动态效果——打字机动画、自动滚动、光标闪烁对 motion 敏感用户不友好,用 prefers-reduced-motion: reduce 时关闭动画/平滑滚动、改为静态呈现,骨架屏保留但禁止闪烁。这些一起构成"信息可感知、操作可达、动态可关"的 AI 交互无障碍基线。

按键盘/焦点/live region/动效四块作答,突出"不抢焦点、节流播报、reduced-motion 降级"三个关键细节。

#
★★★

3. 模型输出 HTTPS 旁路校验(MCP/工具调用身份)的工程价值

模型输出 HTTPS 旁路校验(MCP/工具调用身份)的工程价值是什么?前端如何落地?

  • HTTPS 校验模型输出链接/URL 的信任边界
  • MCP 工具调用的身份与授权校验
  • 模型输出不可信原则在请求层的体现

模型输出的一切(URL、工具参数、外部指令)都不可信,HTTPS 旁路校验指:模型输出中的链接在跳转/资源加载前,不能仅凭"看起来是 https"就信任——要校验域名是否在白名单、是否被中间人/重定向劫持,落地为"URL 拦截器":解析 URL(只放行 http/https 协议)、校验 host(内部域名/已知安全域名列表)、检查重定向目标、点击时先经安全跳转页或后端校验;对 https 证书链完整性由浏览器保证,但"https 不等于可信"——域名仿冒(拼写近似)仍需识别。MCP/工具调用身份:模型通过 MCP 调用工具时,前端/网关要校验调用身份——工具注册表白名单(模型只能调用已注册工具)、参数 schema 校验、按会话绑定的权限令牌(工具调用凭据与用户会话隔离),高风险工具需用户确认,调用记录可审计。工程价值:把"模型输出不可信"落实为强制校验点,防止提示注入驱动的越权工具调用与恶意链接跳转。

答出"HTTPS ≠ 可信"的认知、链接校验与跳转拦截、MCP 工具身份白名单与权限隔离,体现模型输出信任边界的前端落实。

#
★★★

4. AI 输出中的 PII 过滤与提示注入(Prompt Injection)

AI 输出中的 PII 过滤与提示注入(Prompt Injection)如何防范?

  • PII 检测与脱敏(正则、NER、分类器)
  • 提示注入的攻击面(外部文档、网页内容、工具结果)
  • 注入防御(隔离、标记、输出过滤)

PII 过滤:对模型输出(及输入)做敏感信息检测——手机号/身份证/邮箱/卡号用正则与校验位,姓名地址等用 NER/分类模型,检测到后脱敏(掩码、替换)或阻止展示/外发;按场景分级:日志与遥测必须脱敏(只保留哈希),用户可见输出按需放行(需用户授权);PII 管道要可配置并审计。提示注入:攻击者把恶意指令藏在外来内容(网页、上传文档、检索片段)中诱导模型执行越权操作,前端防御:外部内容与系统指令分离(用特殊分隔符与不可信标记标注)、对模型输出中的"指令尝试"做检测(如模型要求打开 URL/改设置时拦截)、工具调用白名单与参数校验(注入只能产生白名单内调用)、对不可信来源内容渲染为"外部内容"样式并默认不执行其中的指令。两者都遵循"模型输出与外部内容一律不可信,先过滤后使用"。

分别答出 PII 检测脱敏的分级处理与提示注入的"隔离、标记、输出侧检测"防御,统一到"不可信内容先过滤"原则。

#
★★★

5. 提示注入对前端的影响(外部文档不可信标识、来源标签)

提示注入对前端有什么影响?外部文档不可信标识与来源标签如何设计?

  • 提示注入在客户端的表现(误导渲染、触发工具)
  • 外部内容的可视化标记(来源标签、不可信标识)
  • 与 grounding/引用体系的结合

提示注入对前端的影响不止"模型答错":恶意指令可诱导模型输出误导性渲染(伪造表单、钓鱼文案)、触发危险工具调用、或把用户数据写入外部内容指定的位置。前端防线:把内容按来源分级——用户输入、系统指令、外部检索文档、模型输出各自标记来源(source tag),外部内容(网页、文档、邮件)一律视为不可信,渲染时加"外部内容"徽标与警示样式(边框、底色、图标),默认不执行其中的任何指令性内容;模型基于外部内容的回答要带引用(grounding),点击引用可查看原文并对比"模型转述 vs 原文",让用户自行判断;对"外部内容要求跳转/下载/执行"的提议统一拦截提示。与引用体系结合:来源标签(web/doc/tool/user)进入消息协议元数据,持久化与审计,形成"内容溯源链"。

答出提示注入的客户端风险面、来源分级与不可信标识、与引用溯源结合,体现前端对内容信任边界的产品化设计。

#
★★★

6. WebNN(W3C Web Machine Learning)的定位、算子抽象与浏览器支持现状,及其与 WebGPU compute 的分工

WebNN(W3C Web Machine Learning)的定位、算子抽象与浏览器支持现状如何?它与 WebGPU compute 如何分工?

  • WebNN 的声明式算子图抽象(MLGraphBuilder)
  • 浏览器/后端支持现状(Chrome、Edge、系统后端)
  • WebNN 自动优化 vs WebGPU 手工控制的取舍

WebNN 是 W3C 的机器学习 API:用 MLGraphBuilder 声明式构建算子图(Conv、MatMul、LayerNorm、Attention 等),提交给浏览器后端的 ML 实现(DirectML、CoreML、XNNPACK、OpenVINO 等)编译执行,浏览器负责算子选择、布局优化与图融合,开发者不写底层内核。现状:Chrome/Edge 部分平台可用(Windows 走 DirectML),支持度随平台与后端变化,手机端 Safari 有早期实现;算子覆盖有限,复杂模型可能缺算子需降级。与 WebGPU compute 分工:WebGPU 是通用 GPU 编程(手写 WGSL 内核),WebNN 是专用 ML 抽象——两者可协作:WebNN 跑算子覆盖内且后端优化好的部分(如卷积、注意力),WebGPU 实现 WebNN 缺失的自定义算子,或 WebNN 作为快速路径、WebGPU 作为兜底;WebLLM 等框架就是"WebGPU 为主 + 可切换后端"的实践。选型:追求开箱性能与跨设备用 WebNN,追求可控与最大兼容用 WebGPU,生产上常做后端探测与运行时切换。

答出 WebNN 声明式图与自动优化的定位、支持现状与算子覆盖限制,并给出"WebNN 快速路径 + WebGPU 兜底/定制算子"的分工结论。

#
★★★

7. WebLLM/mlc-llm 的架构(编译到 WebGPU 的模型 + WASM 运行时)与生产环境选型矩阵

WebLLM/mlc-llm 的架构(编译到 WebGPU 的模型 + WASM 运行时)如何理解?生产环境选型矩阵包含哪些维度?

  • 模型编译到 WebGPU shader + WASM 运行时的架构
  • 推理引擎与缓存(model shards、AppCache)
  • 生产选型维度(性能、兼容、体积、维护)

WebLLM/mlc-llm 的架构:把训练好的模型通过 TVM/MLC 编译管线"编译"为针对 WebGPU 的优化内核(WGSL shader 与算子库),运行在 WASM 推理运行时(如 tvmjs 运行时)中——模型权重与图结构以二进制形式分发(分片 .wasm/.bin),浏览器端用 WebGPU 执行,WASM 负责调度、采样与 KV Cache 管理。优势:推理在用户设备完成(隐私、零服务器推理成本),支持多种模型(Llama、Phi、Qwen 等)。生产选型矩阵维度:设备/浏览器兼容(WebGPU 支持度与驱动差异)、模型质量 vs 体积(量化精度与下载体积)、性能(TTFT、tokens/s、峰值内存)、下载与更新策略(分片、缓存、版本)、部署与维护(模型打包流水线、后端切换)、隐私与合规(数据不出设备但注意遥测);配合"可用性探测 → 加载 → 推理 → 降级云端"的运行时决策。矩阵输出:对每个目标场景(设备档位 × 任务)给出"可用/不可用/降级"结论。

先讲清"编译到 WebGPU 内核 + WASM 运行时"的架构本质,再给出含兼容、性能、体积、维护、隐私的选型矩阵与降级决策。

#
★★

8. 工具调用最小权限与用户确认(高风险操作必须人工审批)

工具调用如何实施最小权限原则?高风险操作的人工审批流程如何设计?

  • 最小权限(按会话/任务授权、白名单工具集)
  • 高风险操作的分类与审批流程(确认 UI、超时)
  • 权限审计与撤销

最小权限落地:工具按风险分级——只读查询(低风险,模型可自主调用)、写入操作(中风险,需展示参数摘要)、破坏性/敏感操作(删除、转账、发送消息、改配置,必须人工审批);模型可调用的工具集按会话/任务动态配置(默认最小集),按需临时授权。审批流程:模型请求高风险工具时,前端弹出确认面板——展示工具名、参数、影响说明与"可撤销性",用户点"允许/拒绝",允许才执行;审批有超时(如 30s 未响应默认拒绝)与"本次会话记住"选项;拒绝时模型收到拒绝结果并可调整方案。工程要点:审批记录入审计日志(谁、何时、什么操作);权限可随时撤销(会话终止/用户操作);审批 UI 不抢焦点但醒目;权限模型支持"阶梯授权"(临时提升),避免一刀切。核心原则:默认拒绝、按需最小、全程可溯。

答出"按风险分级的工具授权、审批确认流(参数展示、超时默认拒绝)、审计与撤销"的完整闭环,体现最小权限的产品化。

#
★★

9. 浏览器端不存放模型密钥(BFF 持有 Provider 密钥)

为什么浏览器端不能存放模型密钥?BFF 持有 Provider 密钥的架构如何落地?

  • 前端密钥泄漏风险(XSS、抓包、扩展)
  • BFF 层的密钥托管与代理转发
  • 配额、限流与审计在 BFF 的集中

浏览器端放 Provider 密钥的三大风险:XSS 可窃取、DevTools/网络抓包可见、用户可直接提取后滥用(盗刷成本)。因此密钥必须留在服务端:BFF(Backend for Frontend)持有密钥,前端只通过 BFF 代理调用模型 API——前端请求不带密钥,BFF 注入 Authorization 并转发流式响应(SSE 透传);BFF 还集中做配额与限流(按用户)、内容策略(PII 过滤、敏感词)、审计(调用日志)与成本归属,前端拿到的"身份"是会话令牌(短期、按用户绑定)。落地要点:BFF 出口只开放白名单模型端点、请求体校验(限制可传参数)、响应做安全处理(如过滤);密钥轮换与加密存储(服务端凭据管理);对自托管模型/端侧推理,密钥概念消失但"配置与凭据(如用户 token)"同样不落浏览器。安全上遵循"客户端一切皆可绕过,安全边界在服务端"。

答出前端持密钥的泄漏路径、BFF 代理注入与集中管控(配额、限流、审计)、以及"客户端不可信"的边界原则。

#
★★

10. 前端日志中的敏感信息如何识别与脱敏,脱敏规则与审计的平衡如何把握?

前端日志中的敏感信息如何识别与脱敏?脱敏规则与审计的平衡如何把握?

  • 敏感字段识别(key 模式、正则、结构扫描)
  • 脱敏方式(掩码、哈希、截断)与上下文
  • 可审计性与可调试性的平衡(保留元数据、可控还原)

敏感信息识别:按字段名模式(password、token、phone、card 等)+ 值模式(正则校验位)双通道扫描,在日志写入前统一经过脱敏管道;结构上支持嵌套对象递归扫描与数组逐项处理。脱敏方式分级:掩码(保留首尾:138****1234)、哈希(SHA-256 后截断,用于关联分析但不可还原原文)、删除(完全不打日志);脱敏规则按日志级别与环境配置——debug 本地可放宽、生产严格,且脱敏不可逆部分(密钥类)一律哈希/删除。平衡审计与可调试:保留"事件类型、时间、操作者、业务上下文"等元数据(不含敏感原文),用 requestId 关联日志与请求(需要时凭权限在服务端查原始记录);审计要求"谁在何时做了什么",不要求明文敏感值,故脱敏不破坏审计;引入"数据字典"让脱敏规则可配置可评审,避免脱敏过度导致无法排障——用"脱敏但保留类型与长度"折中。

答出双通道识别、分级脱敏、以及"脱敏保留元数据 + 凭据访问原始记录"的审计平衡,体现安全与可观测性的工程权衡。

#
★★

11. C2PA(Coalition for Content Provenance and Authenticity)

C2PA(Coalition for Content Provenance and Authenticity)是什么?在前端 AI 内容标识中有什么应用?

  • C2PA 内容凭证(content credentials)的机制
  • AI 生成内容的水印/元数据标准(W3C 集成)
  • 前端校验与展示(信任标记、来源链)

C2PA 是跨行业内容来源与真实性标准:为内容(图片、视频、文档)附加加密签名的"内容凭证"(Content Credentials),记录"谁、用什么工具、何时、如何编辑"的完整来源链(provenance chain),篡改即失效。前端应用:AI 生成内容时嵌入 C2PA 元数据(模型、生成参数、组织签名),展示端校验凭证并显示"AI 生成"信任标记(如 Adobe 的"CR"图标);浏览器/平台可自动检测并标识,帮助用户识别合成内容。工程落地:生成管线写入 C2PA manifest(用工具库如 c2pa-js 处理),展示侧用 c2pa 验证库校验签名与链完整性,校验结果驱动 UI 徽标与文案;注意边界:截屏/二次压缩可能剥离凭证(凭证是"附加"不是防篡改水印),需与内容水印(如 Stable Signature)互补;C2PA 校验本身是前端可做的"尽力而为"真实性提示,不能替代平台治理。

答出 C2PA 内容凭证的"加密来源链"机制、AI 内容标识的应用(写入与校验展示),并点明其"可剥离、需与水印互补"的边界。

#
★★

12. AI 输出在 iframe sandbox 内呈现以避免 DOM XSS 的工程价值

AI 输出在 iframe sandbox 内呈现以避免 DOM XSS 有什么工程价值?如何实现?

  • iframe sandbox 的隔离属性(无脚本、无同源)
  • 内容传输(srcdoc/Blob URL)与样式注入
  • 隔离渲染的交互限制与适用边界

iframe sandbox 提供了浏览器级隔离:sandbox 属性不授予 allow-scripts/allow-same-origin 时,内嵌内容无法执行脚本、无法访问父页面 DOM 与存储,即使 AI 输出含恶意 HTML 也无法形成 DOM XSS 逃逸。工程价值:为"不可信富文本"(模型输出的 HTML、外部抓取的文档)提供默认安全容器,替代"清洗不彻底"的风险。实现:用 srcdoc 或 Blob URL 加载内容,配合 、CSS 隔离(resetcss、作用域样式),对需要的交互(如复制)通过 postMessage 白名单通道与父页面通信,消息只传文本不传可执行对象;sandbox 同时设置 allow-popups 与否按需。边界:隔离后内容无法用父页面组件(高亮、链接拦截)需走代理通道;大量 iframe 有内存开销;只能作为纵深防御的一层,输入侧 sanitize 仍要做;若必须 allow-same-origin + allow-scripts(几乎等于无隔离)则不能用此方案。

答出 sandbox 的隔离语义、srcdoc/postMessage 的实现与白名单通信、以及"纵深防御、不能替代 sanitize"的边界。

#
★★

13. WebGPU/WebNN 在浏览器端 LLM 推理的工程价值

WebGPU/WebNN 在浏览器端 LLM 推理有什么工程价值?

  • 端侧推理的隐私与成本价值
  • WebGPU 并行计算与 WebNN 后端优化的作用
  • 能力边界(显存、性能、模型体积)

工程价值分四层:隐私——数据与推理都在用户设备,敏感内容不出设备,满足合规(医疗、金融)与信任需求;成本——省去服务端 GPU 推理费用,规模化边际成本趋零;可用性——离线可用、无网络依赖(结合 PWA 离线壳),弱网环境体验稳定;延迟——本地推理无网络往返,且可与云端任务分层(简单任务本地、复杂任务云端)。实现层面:WebGPU 提供 GPU 并行计算(矩阵乘、注意力内核),WebNN 提供系统级算子优化(DirectML/CoreML 后端),两者把"浏览器内跑百亿参数量化模型"变为现实(如 WebLLM、Transformers.js)。边界:显存与内存限制模型规模(需量化、KV Cache 管理)、tokens/s 低于旗舰云 GPU、模型下载体积大、浏览器/驱动兼容差异——工程上以"能力探测 + 分级降级(本地/云端)"作为落地策略,而不是全量替换。

从隐私、成本、可用性、延迟四个价值面作答,落到 WebGPU/WebNN 的技术作用与显存/性能边界,最后给出分级降级策略。

#
★★

14. 浏览器内置 Gemini Nano(window.ai)的客户端本地推理在隐私敏感场景的工程价值

浏览器内置 Gemini Nano(window.ai)的客户端本地推理在隐私敏感场景有什么工程价值?

  • 本地推理的隐私价值(数据不出设备)
  • 可用性门槛(下载模型、设备支持)与能力探测
  • 隐私敏感场景的合规与用户信任

Gemini Nano 由浏览器内置(Chromium),本地推理让"输入与输出都留在设备":隐私敏感场景(医疗记录总结、金融数据助手、企业文档问答)中,数据不出设备即从源头规避云端合规风险(GDPR/等保、数据出境审查),也降低用户信任门槛(可明确告知"本次处理在本地完成")。工程价值还包括:离线可用、零 API 费用、低延迟。落地要点:用 LanguageModel.availability() 探测能力(设备/权限/下载状态),不支持或未下载时降级为云端或禁用并明示;会话管理(多轮上下文、模型版本切换失效);隐私边界的诚实性——本地推理不代表"完全不出设备":输入仍可能进入遥测、崩溃日志、剪贴板或持久化缓存,工程上要控制这些旁路(关闭遥测、脱敏日志、剪贴板提示、加密缓存),并在 UI 上如实告知能力边界。合规上把"本地推理"作为架构事实记录进隐私说明与 DPA。

答出本地推理的隐私价值与合规意义、能力探测与降级、以及"不出设备的边界诚实管理"(遥测/日志/剪贴板旁路),体现负责任的落地。

#
★★

15. 内置模型(Gemini Nano)的会话管理与多轮上下文维护,以及模型版本切换后的会话失效处理

内置模型(Gemini Nano)的会话管理与多轮上下文维护如何实现?模型版本切换后的会话失效如何处理?

  • Prompt API 会话创建(create)与多轮上下文维护
  • 会话持久化(IDB)与恢复
  • 模型版本切换后的会话失效与迁移

会话管理:用 LanguageModel.create()(或相关 API)创建会话,多轮对话把历史消息(含系统提示与工具结果)作为上下文传入,上下文维护要点——控制上下文长度(本地 token 计数、超过后裁剪/摘要)、会话句柄与会话状态的持久化(IndexedDB 存消息历史与会话参数,刷新后可恢复);同一会话的并发访问(多标签页)需互斥。版本切换失效:模型升级(如 Gemini Nano 小版本更新)后,旧会话的 KV 状态与兼容性可能失效,处理:给会话记录"模型版本"字段,探测到当前版本与会话版本不一致时使旧会话失效——提示用户"模型已更新,已为你开启新会话",必要时迁移关键上下文(系统指令与最近消息在新会话重放,工具调用记录只保留结果摘要);失效是"安全失效":宁可重新初始化,也不让旧会话以不兼容状态继续产生错误输出。工程上把版本号纳入会话校验与 UI 提示,形成"探测 → 比对 → 失效/迁移"闭环。

答出 create 会话与上下文维护、IDB 持久化恢复、以及版本号驱动的"安全失效 + 上下文迁移"闭环。

#
★★

16. 端侧模型下载进度、磁盘配额管理与 PWA 缓存的协同(区分应用缓存与模型缓存)

端侧模型下载进度、磁盘配额管理与 PWA 缓存如何协同?应用缓存与模型缓存如何区分?

  • 模型下载事件与进度展示、状态持久化
  • 配额监控(estimate/persist)与清理策略
  • 应用缓存(CacheStorage)与模型缓存的职责分离

协同要点是"分层管理、状态一致":应用缓存(CacheStorage)存 PWA 离线壳(JS/CSS/图标),体积小、预缓存、SW 更新策略独立;模型缓存(如 Gemini Nano 由浏览器托管、WebLLM 走 CacheStorage 的独立缓存名)体积大(数百 MB 到 GB),下载经专用 API 的事件汇报进度(downloadprogress 等),进度与状态(未下载/下载中/百分比/已就绪/失败)持久化到 IndexedDB,刷新/重开页面恢复 UI。磁盘配额:用 navigator.storage.estimate() 监控总配额与已用,下载前检查剩余空间(预估模型体积 + 余量),不足则提示清理或取消;对关键应用数据申请 navigator.storage.persist()(持久化存储,防浏览器自动回收),模型缓存被回收后能重新探测并触发重下。协同规则:应用缓存瘦身(预算约束)为模型留空间;模型下载与 SW 更新错峰(避免同时大 IO);存储状态变化(回收、扩容)广播到各标签页更新 UI。

答出"两层缓存职责分离、下载进度持久化、配额预检与 persist、回收后重下"的协同机制,体现存储资源治理。

#
★★

17. 端侧推理能力不足时回退云端模型的降级策略设计与失败关闭(fail closed)原则

端侧推理能力不足时如何设计回退云端的降级策略?失败关闭(fail closed)原则如何落地?

  • 降级触发条件(能力探测、质量、失败)
  • 降级链路(端侧 → 云端 → 提示用户)与数据边界
  • fail closed 原则(不确定即不处理/不静默外传)

降级策略设计:触发条件分三类——能力不足(探测 unavailable、显存/性能不达标)、质量不足(本地回答不合格)、失败(本地推理报错);降级阶梯:端侧 → 云端小模型 → 云端大模型,每级有健康检查与超时;降级要透明(UI 提示"已切换云端处理")且可配置(组织策略允许哪些场景降级)。数据边界:降级到云端意味着数据离开设备——隐私敏感数据在降级前要确认用户同意或直接拒绝降级(fall closed):不确定安全就不发。fail closed 落地:默认策略是"无法保证安全则拒绝处理"——如 PII/账户数据在无法确认脱敏时不外传、工具调用参数校验失败不执行、降级路由判断不了时宁可报错也不静默切换;对应 UI 呈现明确失败原因而非静默降级。工程上把降级决策做成可审计的策略引擎(输入数据分类 × 场景 × 目标端),任何未知组合走 fail closed 分支。

答出三级降级链路与透明提示、降级时数据离开设备的边界、以及 fail closed(不确定即拒绝)的默认策略,体现安全优先的架构观。

#
★★

18. 端侧推理的隐私合规边界,输入仍可能进入遥测、崩溃日志、剪贴板或持久化缓存的泄漏防护

端侧推理的隐私合规边界有哪些?输入仍可能进入遥测、崩溃日志、剪贴板或持久化缓存,如何防护?

  • "不出设备"的认知修正(旁路泄漏面)
  • 遥测与崩溃日志的脱敏/关闭
  • 剪贴板、扩展与持久化缓存的泄漏控制

隐私合规边界要求修正"本地推理 = 绝对不出设备"的认知:输入仍可能流向——遥测(使用统计含输入摘要)、崩溃日志(报错栈与上下文快照)、剪贴板(复制操作写入剪贴板数据)、浏览器扩展(扩展可读 DOM/存储)、持久化缓存(明文存 IndexedDB/磁盘)。防护:遥测默认关闭或输入字段脱敏(只上报元数据与哈希);崩溃日志上传前剥离输入内容(配置 crash 上报的过滤器);剪贴板按"用户显式操作才写入"并提示(navigator.clipboard 需用户手势),敏感数据复制可加"复制内容将留在本机剪贴板"提示;持久化缓存加密(Web Crypto AES-GCM 密钥存 IndexedDB 的非导出容器,或使用系统凭据)并设过期与清理;扩展权限:提示用户敏感会话在无读取权限的环境使用(无法强制,只能提示);合规上把"可能的旁路"写进隐私说明,按"最小化收集 + 加密存储 + 可删除"落地。

答出五类旁路泄漏面与对应防护(遥测脱敏、日志剥离、剪贴板显式化、缓存加密与过期),体现"诚实边界 + 最小化"的合规实践。

#
★★

19. AI 输出 HTML 的 sanitize 管线,DOMPurify 的标签/属性白名单配置、链接协议过滤与 markdown 渲染库的 XSS 面如何收敛?

AI 输出 HTML 的 sanitize 管线如何搭建?DOMPurify 白名单、链接协议过滤与 Markdown 渲染库的 XSS 面如何收敛?

  • DOMPurify 白名单配置(标签、属性、URI)
  • 链接协议过滤与相对路径策略
  • Markdown 渲染链(remark → rehype → DOMPurify)的接入点

sanitize 管线分层:第一层在解析链——react-markdown 默认把内联 HTML 按配置处理(不启用 rehype-raw 就不解析 HTML,杜绝 HTML 注入);需要富文本(AI 表格、图片)时启用 rehype-raw 后必须接 DOMPurify 清洗。第二层 DOMPurify 配置:标签白名单按需求收敛(保留 p/table/ul/img/code 等,去掉 script/style/iframe/form 等),属性白名单(src、href、alt、width 等,禁用 on* 事件属性与 style 中的危险表达式),URI 过滤(href/src 只放行 http/https/mailto,配合 ALLOWED_URI_REGEXP 拦截 javascript:/data:text/html 等);图片 src 加域名校验与 referrerpolicy 控制。第三层渲染层:链接组件统一拦截(白名单域名、新窗口、rel 安全属性),iframe/embed 一律不渲染或走 sandbox 容器。收敛原则:默认最小集(只放行业务需要的标签)、sanitize 在"进入 DOM 前"最后一刻执行、不可信内容与可信内容不同管道;DOMPurify 与 Markdown 渲染的顺序是"先转 AST 再 sanitize 再渲染"或"sanitize 最终 HTML",前者更可控。

答出"Markdown 默认不解析 HTML、DOMPurify 标签/属性/URI 三层白名单、链接组件拦截"的收敛策略与执行顺序,体现纵深防线。

#
★★

20. Prompt API(LanguageModel)的能力探测(availability 三态,available/available-after-download/unavailable)与 create 会话管理

Prompt API(LanguageModel)的 availability 三态探测与 create 会话管理如何实现?

  • availability 三态语义与探测时机
  • create 会话的参数(system prompt、温度)与会话生命周期
  • 三态分流 UI 与下载流程管理

availability() 返回三态:available(可直接用)、available-after-download(需先下载模型)、unavailable(设备/浏览器不支持)。探测时机:应用启动、进入 AI 功能、下载完成后与关键操作前(结果可能变化)。分流:unavailable——隐藏/禁用 AI 入口并说明(设备不支持);available-after-download——展示下载 UI(体积、进度、配额检查、失败重试),下载完成重新探测;available——直接可用。create 会话:LanguageModel.create({ systemPrompt, temperature, topK, maxTokens, signal }) 创建带上下文的会话实例,多轮对话在同一会话内累积上下文;会话可持久化(存消息与参数)与恢复;结束时释放(避免占用资源);多个会话用信号量控制并发。工程上把三态 + 下载 + 会话封装为"模型能力状态机"(unknown/downloading/ready/unavailable),统一驱动 UI 与降级。

答出三态语义与时机、三态分流与下载管理、create 会话的参数与生命周期,落到状态机统一驱动,体现端侧 AI 接入的完整流程。

#
★★

21. Token 用量估算与上下文窗口可视化在前端的应用

Token 用量估算与上下文窗口可视化在前端有哪些应用?

  • 实时 token 计数(输入框、会话累计)
  • 上下文窗口可视化(进度条、占用分布)
  • 用量驱动行为(提示清理、压缩、成本预估)

Token 用量应用分三面:实时计数——输入框随输入实时估算 token(用目标模型 tokenizer,防抖计算),展示当前输入用量;会话级累计——统计本轮/本日总消耗(输入+输出),结合单价展示成本,接近预算提示。上下文窗口可视化——用进度条/环形图展示当前上下文占用(系统提示、历史、工具定义、新输入各占比例,点击查看明细),剩余空间直观可见;达到阈值(如 85%)变色预警,提示清理历史或自动裁剪(Prompt Trimming)。用量驱动行为:超限前自动压缩旧消息、推荐开新会话、切换小模型(成本敏感时);输出侧显示"本次生成 X token"。工程要点:估算用与请求一致的编码器(不同模型差异大);计数异步化(WASM tokenizer 不阻塞输入);可视化数据驱动真实状态(服务端返回实际用量为准,本地估算为展示);隐私上 token 文本不进遥测,只上报数字。

答出"实时计数、窗口可视化(占用分布)、用量驱动行为"三层应用与实现细节(编码器一致、异步、以服务端为准)。

#

22. AI 输出内容审计与 Red Team 在生产环境的工程价值

AI 输出内容审计与 Red Team 在生产环境有什么工程价值?

  • 输出审计(抽检、评分、分级上报)
  • Red Team 的对抗测试方法(注入、偏见、越狱)
  • 审计结果驱动的迭代闭环

输出审计的工程价值:质量与安全可见性——对线上输出抽检(按比例/按场景),用规则 + 模型评分 + 人工标注三级流水线评估(有害内容、幻觉、格式合规、指令遵循),结果分级上报(正常/风险/严重),严重项实时告警并拦截(内容策略后置过滤);审计数据驱动迭代——统计各场景失败率、定位薄弱环节(如某类文档解析导致注入)。Red Team 价值:主动对抗测试——构造提示注入、越狱、偏见、PII 泄漏、工具滥用等攻击样本,在生产前与上线后周期执行,验证防线(提示工程、过滤、工具白名单)有效性;测试结果形成漏洞库与回归用例,进入 CI 持续验证(每次模型/提示更新跑回归)。两者闭环:Red Team 发现问题 → 修复(提示/过滤/降级)→ 回归;审计发现线上漂移 → 回灌测试集。工程上把"审计 + Red Team"做成持续安全流程而非一次性动作。

答出抽检审计的三级流水线与分级上报、Red Team 的对抗方法与 CI 回归、以及"发现问题-修复-回归"的闭环,体现 AI 安全运营体系。

#

23. 医疗数据在端侧推理并不等于绝对不出设备,输入还可能进入遥测、崩溃日志、剪贴板、浏览器扩展或持久化缓存。

为什么"医疗数据在端侧推理"并不等于"绝对不出设备"?输入可能进入哪些旁路,前端如何防护?

  • 医疗场景的合规要求(数据最小化、可审计)
  • 五类旁路(遥测、崩溃日志、剪贴板、扩展、持久化缓存)
  • 医疗数据的专项防护(加密、脱敏、删除)

端侧推理消除的是"数据经网络发送给模型提供商",但医疗数据仍可能通过旁路离开预期边界:遥测(用量统计含输入片段)、崩溃日志(报错上下文含输入)、剪贴板(用户复制内容可能被其他应用读取)、浏览器扩展(有权限的扩展可读取 DOM 与存储)、持久化缓存(明文存储可被本地程序/其他页面读取)。防护专项化:默认关闭遥测或对输入只哈希计数;崩溃上报过滤器剥离所有输入内容;剪贴板写入仅在用户显式操作时发生并提示,敏感数据可选"阅后即焚"(不写剪贴板);本地存储用 Web Crypto 加密(密钥不落明文)、设过期与"一键清除";提示用户敏感会话在禁用可疑扩展的专用浏览器配置下使用(尽力提示,无法强制)。合规上:把端侧推理的能力边界与旁路写进隐私说明与风险评估,按"最小化、加密、可删除、可审计"落地,而不是宣传"绝对不出设备"。

答出"端侧 ≠ 绝对不出设备"的认知、五类旁路及医疗场景的专项防护,落脚于诚实的合规声明与最小化原则。

#

24. 金融场景在 Gemini Nano 能力不足时准备回退云端模型,怎样在发送前做 PII/账户数据分类、最小化与用户同意,并保证策略失败时是 fail closed 而不是静默外传

金融场景在 Gemini Nano 能力不足时准备回退云端模型,怎样在发送前做 PII/账户数据分类、最小化与用户同意,并保证策略失败时是 fail closed 而不是静默外传?

  • 发送前的数据分类(PII/账户/非敏感)与最小化
  • 降级到云端前的用户同意流程
  • fail closed(策略不确定即拒绝,不静默外传)

金融场景的降级必须"先分类、后同意、再发送":数据分类——在输入进入管道时用规则 + NER 对内容分类(账户号、身份证、交易金额等 PII 标注),据此决策"能否外传";最小化——能本地处理的部分剥离敏感字段(只传脱敏/必要字段,如传产品名不传账号),能合成的用合成数据;用户同意——降级到云端前展示"将发送到云端处理"的明确说明(数据种类、目的、时间范围),用户显式确认才发送,默认拒绝;同意记录入库审计。fail closed:策略引擎对"无法分类的内容"或"分类结果不可信"或"同意缺失"一律走拒绝分支——返回"该内容无法安全处理,请在本地模式重试或联系管理员",而不是静默发送(静默外传是最不可接受的行为);工程上降级决策用白名单化策略(明确允许的才放行),未知组合默认拒绝,并记录被拦截样本供人工评估。

答出"分类-最小化-同意"三步前置流程与 fail closed 的默认拒绝语义,强调"宁可拒绝也不静默外传"的金融级安全原则。

#

25. 端侧 LLM 性能基线测量(冷启动、预热后 TTFT、tokens/s、峰值内存、耗电、页面 FPS)与禁用/降级阈值设定

端侧 LLM 性能基线测量(冷启动、预热后 TTFT、tokens/s、峰值内存、耗电、页面 FPS)与禁用/降级阈值如何设定?

  • 六项指标的测量方法与工具
  • 分层设备基准与统计口径(P50/P95)
  • 阈值设定与线上校准

测量方法:冷启动——从触发加载到首次可响应(含模型载入、WASM 初始化)计时;预热后 TTFT——连续第二次调用的首 token 时间(排除加载);tokens/s——流式生成速率(总 token/耗时,取稳态段);峰值内存——performance.memory(JS 堆)与 WebGPU/系统内存采样;耗电——真机功耗仪或 Battery API 采样;页面 FPS——生成期间 rAF 计数丢帧率。流程:建立高/中/低端设备矩阵,每档代表机型跑统一脚本(相同模型、相同提示、多次取 P50/P95,排除后台与首屏干扰)。阈值设定:把体验目标映射为指标——TTFT P95 < 2s、tokens/s > 25、FPS 丢帧率 < 5%、峰值内存低于设备可用内存 60%,任一不达标判定该档禁用端侧或降级(缩短上下文、低档模型、关闭多模态);阈值可配置(feature flag),灰度验证后发布;上线后按设备/浏览器收集真实指标,定期校准阈值,形成"基准 → 阈值 → 监控 → 校准"闭环。

答出六项指标的测量方法、分层矩阵与 P50/P95 统计、体验目标映射阈值与线上校准,体现数据驱动的端侧质量工程。

#

26. Transformers.js 与 ONNX Runtime Web 在浏览器端推理的协作关系与算子覆盖边界

Transformers.js 与 ONNX Runtime Web 在浏览器端推理的协作关系是什么?算子覆盖边界如何理解?

  • Transformers.js 的高层 API 与 ORT 底层执行
  • ORT Web 的后端(WASM/WebGPU)与算子支持
  • 算子缺失的表现与降级(WASM 兜底、后端切换)

协作关系:Transformers.js 是面向开发者的高层库(提供 pipeline/模型 API、tokenizer、任务封装),底层调用 ONNX Runtime Web(onnxruntime-web)执行模型——模型需先转换为 ONNX 格式(含算子集版本),ORT 负责图优化与内核执行。ORT Web 的后端:WASM(CPU、兼容性最广)、WebGPU(GPU 加速、覆盖主流浏览器)、WebNN(特定浏览器后端),运行时可按设备/任务选择;推理前有"execution provider"探测与降级。算子覆盖边界:模型转换时的算子若超出 ORT 当前支持的算子集(或某后端不支持,如 WebGPU 缺某自定义算子),会报"算子不支持"错误——工程应对:转换时检查算子(onnx 工具与 opset 选择)、用 WASM 兜底(慢但可用)、算子融合/替代(把不支持的层用 JS 实现拼装,或拆分为多次调用)、换模型(选 ONNX 生态已覆盖的模型)。Transformers.js 的浏览器支持声明(如仅 WebGPU 推理时需检测)也是边界的一部分。

答出"高层库 + ORT 执行"的分层协作、三后端与算子覆盖差异、以及算子缺失的降级路径(WASM 兜底、拆分、换模型)。

#

27. AI 工具调用的参数校验,对模型生成的工具参数做 schema 校验与白名单约束,防止工具调用注入任意参数或越权操作?

AI 工具调用的参数校验如何做?如何用 schema 校验与白名单约束防止工具调用注入任意参数或越权操作?

  • 参数 schema 校验(zod/JSON Schema)与类型/枚举约束
  • 白名单约束(工具集、参数值域、越权检查)
  • 校验失败与越权请求的处理(拒绝、审批、审计)

参数校验分三层:schema 层——模型生成的参数按工具定义的 JSON Schema 校验(类型、必填、枚举、范围),用 zod/ajv 在"执行前"强制校验,格式非法直接拒绝并回传错误让模型修正(不把非法参数交给工具);语义层——白名单约束:参数值域白名单(如 status 只允许已定义枚举、文件路径必须在允许目录内、金额不超过限额)、调用者上下文校验(用户是否有权对该资源操作——越权检查)、数量与频率限制(防批量滥用);防御层——注入防护:参数中的自由文本做长度与内容限制(防注入到 shell/query)、ID 类参数校验存在性与归属、输出型参数(URL/文件名)过白名单。失败处理:校验失败默认拒绝执行(fail closed),返回结构化错误给模型重试或提示用户修正;高风险参数变更(如金额被模型改大)触发人工审批;所有被拦截的越权尝试记录审计日志并监控。原则:模型参数与用户输入同等不可信,先校验后执行。

答出"schema 校验、语义白名单与越权检查、注入防护"三层与"拒绝-修正-审批-审计"的失败处理,体现工具安全的核心控制点。