在 EU AI Act 框架下,为 MCP、视觉驱动和 TypeScript Agent 运行时构建合规护栏,需要从编译期到运行期的全栈架构设计。
软件架构范式已经发生了根本性的、不可逆转的转变。我们已从确定性执行转向了自主智能体编排。通过将模型上下文协议(Model Context Protocol,MCP)、视觉驱动的计算机操控框架与基于 TypeScript 的智能体运行时相结合,开发者正在构建不仅仅是生成文本的系统。它们能浏览网页、操作 DOM 元素、查询向量数据库,并执行动态的文件系统或网络工具。
然而,赋予 LLM 直接的操作系统和浏览器控制权,就跨越了一个关键的操作阈值。这些系统不再是孤立的文本生成引擎,而是成为了运行在现实环境中的主动操作智能体。
在欧盟人工智能法案(EU AI Act)的监管框架下,这种操作能力使自主智能体完全处于严格法律规定的靶心。如果你在构建用于就业、关键基础设施、执法或金融工作流程的高风险 AI 系统,合规不再是事后考虑,而是基础的、编译时和运行时层面的架构约束。
工业机器人与 AI 企业治理
要理解为什么欧盟人工智能法案对基于 TypeScript 的智能体架构要求如此深刻的结构性干预,我们可以看两个熟悉的类比:现代装配线上的工业机器人与公司治理中的授权机制。
类比一:工业机械臂 vs. MCP 计算机操控智能体
想象一座早期的汽车制造工厂,那里的机械臂遵循僵化的预编译字节码指令。如果传送带上出现了一个错位的底盘,机器人会盲目执行代码,导致灾难性的碰撞。
现在,设想将工厂车间升级为现代的、视觉驱动的 AI 动力机械操作臂。它拥有连续输入的视觉流、一个内部世界模型,以及通过类似模型上下文协议的接口暴露的一系列工具。它接收一个高级目标:"以最优结构完整性组装底盘 #4092。"
其操作循环与我们的 TypeScript 智能体运行时惊人地相似:
感知:通过计算机操控或屏幕抓取捕获装配线的高分辨率帧。
推理:将这个视觉状态传递给视觉-语言模型。
规划:输出一个 JSON schema,指示运行时调用特定的工具定义。
行动:执行物理工具。
在欧盟工业安全指令下,你不能在没有安全装置的情况下将认知机械臂投放到工厂车间。在软件工程中,我们的 MCP 和计算机操控智能体就是那些机械臂。没有结构性的护栏,一个幻觉或提示注入就能导致智能体删除生产数据库表,或通过外部 API 调用窃取个人身份信息(PII)。欧盟人工智能法案扮演着数字 OSHA(职业安全与健康管理局)的角色,要求持续监控、实时脱敏和绝对的人类否决权。
类比二:初级主管与董事会
或者,考虑公司治理模式中的授权机制。
假设你雇用了一位才华横溢、高效生产的初级主管(我们的 LLM 驱动的 TypeScript 智能体)。你给这位主管一张公司信用卡、企业 SaaS 工具的管理访问权限,以及自主谈判合同的权力。主管使用自然语言处理来阅读收到的电子邮件、浏览内部文档并起草法律协议。
然而,主管容易产生幻觉——偶尔的创意发作,可能导致误解公司政策、同意不利的赔偿条款,或意外泄露机密员工数据。
为降低这一风险,公司建立了一个严格的官僚框架:
行动前审批(人在回路):对于任何超过 10,000 美元的交易,主管的系统必须暂停,生成一份摘要,并将其路由到必须点击明确"批准"按钮的人类经理。
信息屏障(脱敏):当主管查看包含 PII(社会安全号码、医疗记录)的文档时,合规代理拦截原始文本/像素,在主管的上下文窗口看到之前就脱敏敏感字段。
不可变审计日志:发送的每封电子邮件、审阅的每份合同和点击的每个按钮都被记录在一次写入、多次读取的账本中,以供监管审计。
欧盟人工智能法案只是将这种公司治理结构编入软件系统的制定法。
解析监管要求
当我们构建使用模型上下文协议和计算机操控功能来导航操作系统并执行业务工作流程的智能体时,我们几乎不可避免地触及高风险人工智能系统(法案附件 III)。该法规对这些部署施加了几个不可动摇的支柱:
高风险 AI 系统必须被设计为使自然人能够监督其运作。指定的人类监督者必须能够:
完全理解系统的输出和操作能力(对抗自动化偏见)。
保持意识到自动依赖或覆盖系统的倾向。
实时干预:通过"停止按钮"停止系统、忽略其输出或将其置于待机模式。
覆盖:在特定工具调用改变外部状态之前,防止执行由 MCP 服务器生成的特定工具调用。
在我们的 TypeScript 应用程序中,工具执行不能是一个盲目的自主循环。我们必须引入干预门——异步挂起点,执行在此暂停,状态快照被保存,并等待人类验证。
训练和操作数据——包括在推理期间输入模型的输入数据,如浏览器自动化期间捕获的屏幕截图——必须满足严格的质量和隐私标准。当智能体通过计算机操控原语抓取企业应用程序或 SaaS 仪表板时,它们通常会摄入 PII、受保护健康信息(PHI)和企业机密。
将原始 PII 暴露给第三方 LLM 推理提供商违反了隐私要求。因此,架构需要实时视觉和文本脱敏层。在浏览器自动化工具捕获的屏幕截图到达 LLM 的视觉编码器之前,必须有一个确定性的计算机视觉或 DOM 解析层来脱敏敏感边界框。
高风险 AI 系统必须在技术上允许在其生命周期内自动记录事件。标准控制台日志(console.log)或可变文件追加完全不够。我们必须构建加密可验证的、仅追加的审计跟踪,捕获状态转换、原始输入(脱敏后)、结构化 JSON 输出、工具名称、参数、执行结果和人类签名。
TypeScript 运行时中的合规机制
要将这些理论要求转化为稳健的系统设计,我们必须检查每个合规支柱如何在 TypeScript 智能体运行时的表面下运作。
工具执行与 MCP 边界的认识论
模型上下文协议标准化了 LLM 客户端如何向外部服务器暴露工具、资源和提示。在标准设置中,LLM 通过 JSON-RPC 与 MCP 服务器通信。当 LLM 决定需要执行某个操作时——比如查询数据库或在无头浏览器中点击按钮——它会发出一个工具调用负载。
在没有合规护栏的情况下,这种架构假设了一个危险的信任级别。如果攻击者将恶意提示注入正在被抓取的网页(间接提示注入),LLM 可能会被操纵去调用一个删除文件的 MCP 工具。
为了消除这一风险,合规工程将中间件拦截器直接插入 MCP 客户端-服务器传输层。LLM 请求的每个工具调用都会被拦截,并经过多阶段评估管道:
Schema 强制执行:参数根据严格的 Zod schema 检查,匹配预期的 JSON Schema 输出。如果 LLM 传递了意外或格式错误的参数,执行立即阻止。
策略评估:规则引擎根据预定义的合规策略评估工具名称和参数。
干预路由:如果策略将操作标记为高风险,执行暂停。运行时将待处理的工具调用序列化为不可变数据库队列,通过 WebSocket 向管理仪表板发出实时事件,并等待人类授权。
视觉和文本脱敏:保护上下文窗口
计算机视觉智能体重度依赖视觉感知,持续截取屏幕截图并将像素转换为视觉语言模型的 Token。但截图中包含了屏幕上渲染的所有内容:工具栏、后台标签页、邮件通知和用户输入框。
构建合规的脱敏层需要在 TypeScript 中采用双管齐下的方法:
DOM 级脱敏(浏览器自动化):当通过 Playwright 或 Puppeteer 控制浏览器时,我们在截图前将内容脚本净化器直接注入 DOM。与敏感选择器(input[type="password"]、data-sensitive="true")匹配的元素通过 CSS 样式动态混淆(应用 filter: blur(10px); 或将内部文本替换为 [REDACTED])。
视觉级边界框混淆:对于桌面应用程序,运行时捕获原始截图,通过轻量级本地 OCR 和正则表达式解析器传递,识别敏感文本坐标,在序列化图像缓冲区之前在内存中这些坐标上绘制纯黑色矩形。
生产就绪的 TypeScript 实现
让我们审视一个 TypeScript 中基于欧盟 AI 法案的基础合规模式。该实现通过 Vercel AI SDK 和 Zod 的 LLM JSON Schema 输出验证来强制执行结构化风险分类和强制性人类参与批准参数。
import { z } from 'zod';
import { generateObject } from 'ai';
import { openai } from '@ai-sdk/openai';
/**
* @file eu-ai-act-guardrail.ts
* @description 演示 TypeScript 中基于欧盟 AI 法案的基础合规模式:
* 通过 LLM JSON Schema 输出验证强制执行结构化风险分类和强制性人类参与(HITL)
* 批准参数,适用于高风险 AI 工具。
*/
// 1. 定义表示欧盟 AI 法案高风险系统决策负载的 Zod schema。
// 此结构直接映射到第 14 条(人类监督)和第 15 条(准确性、鲁棒性和网络安全)
// 下的合规元数据要求。
const RiskEvaluationSchema = z.object({
actionSummary: z.string().describe("对自主工具执行或浏览器操作的简明总结。"),
riskCategory: z.enum(['MINIMAL', 'HIGH_RISK', 'PROHIBITED']).describe(
"基于预期用途和领域的欧盟 AI 法案风险分类层级。"
),
requiresHumanApproval: z.boolean().describe(
"强制性标志。如果 riskCategory 为 HIGH_RISK 或 PROHIBITED,则必须为 true,强制执行第 14 条 HITL。"
),
justification: z.string().describe("对指定风险层级的法律或操作理由。"),
});
// 从 Zod schema 推断 TypeScript 类型,以便在下游进行类型安全处理。
type RiskEvaluation = z.infer<typeof RiskEvaluationSchema>;
/**
* 根据欧盟 AI 法案标准评估传入的自主智能体操作请求。
* 使用严格的 JSON Schema 输出通过 Vercel AI SDK 的 `generateObject`。
*
* @param agentActionDescription - 工具或浏览器操作的原始文本描述。
* @returns 保证符合 schema 的严格类型化 RiskEvaluation 对象。
*/
async function evaluateAgentActionCompliance(agentActionDescription: string): Promise<RiskEvaluation> {
console.log(`[Compliance Engine] Analyzing action against EU AI Act parameters...`);
// 2. 通过结构化输出强制调用底层 LLM。
// 这可以防止格式错误的 JSON 响应,并确保模型用正确的数据类型填充每个必填字段。
const response = await generateObject({
model: openai('gpt-4o'),
schema: RiskEvaluationSchema,
system: `
您是一家嵌入企业 SaaS 平台内的自动化监管合规守护者。
您的唯一职责是根据欧盟 AI 法案监管框架评估自主 Model Context Protocol (MCP)
智能体操作和浏览器使用自动化任务。
准确分类操作:
- PROHIBITED:操纵、社交评分、生物特征敏感特征分类。
- HIGH_RISK:关键基础设施、就业、教育评估、执法,
或金融/法律工作流程的自动化执行。
- MINIMAL:例行数据检索、文本格式设置或低影响内部管理任务。
关键规则:如果 riskCategory 为 HIGH_RISK 或 PROHIBITED,您必须将 requiresHumanApproval 设置为 true。
`,
prompt: `评估以下智能体操作: "${agentActionDescription}"`,
});
// 3. 返回完全类型化且已验证的对象。
return response.object;
}
/**
* 模拟 SaaS 工作流程调度自主浏览器操作。
*/
async function runSaaSWorkflowSimulation() {
const sampleUserAction = "通过浏览器自动化在核心计费数据库中执行客户信用额度批量自动化更新。";
try {
const evaluation = await evaluateAgentActionCompliance(sampleUserAction);
console.log("\n--- EU AI ACT COMPLIANCE EVALUATION RESULT ---");
console.log(JSON.stringify(evaluation, null, 2));
// 4. 基于合规输出实现条件门控
if (evaluation.requiresHumanApproval) {
console.warn("\n[GATEKEEPER] 🛑 ACTION HALTED: High-risk or prohibited AI operation detected.");
console.warn("[GATEKEEPER] Routing execution payload to designated hu
逐行代码解析
导入依赖(import { z } from 'zod'; ...):我们从 Zod(行业标准 TypeScript schema 验证库)导入 z,同时从 Vercel AI SDK 导入 generateObject 以强制执行结构化生成。
定义合规 Schema(RiskEvaluationSchema):我们将法定要求直接映射到 TypeScript 安全的 Zod 对象。requiresHumanApproval 布尔值明确强制执行第 14 条监督要求。
强制执行严格 LLM 输出(generateObject):通过 Vercel AI SDK 将 Zod schema 传递给 OpenAI,我们确保随机语言模型返回确定性可解析的数据结构。
实现门控逻辑:条件检查审查合规评估负载,在必要时停止执行并将高风险负载路由到人工审核队列。
架构综合:合规管道
为了可视化兼容的、视觉驱动的、启用 MCP 的 TypeScript 智能体的完整生命周期,让我们追踪一个端到端执行流程:
用户输入与意图解析:聊天界面接收用户提示,构建会话历史供 LLM 使用。
视觉观察与脱敏:智能体调用浏览器自动化工具。在浏览器快照返回 LLM 之前,DOM 脱敏和视觉脱敏层会剥离所有 PII。
结构化推理:LLM 处理脱敏后的视觉状态,并通过 JSON Schema Output 输出结构化工具调用请求。
策略与 HITL 门控:MCP 客户端运行时拦截工具调用。Zod 验证器验证负载,策略引擎标记高风险操作。
人工审批工作流程:运行时停止执行,创建不可变审计日志条目,并向人工监督者的仪表板呈现审批卡片。
执行与可追溯性:人工批准后,运行时将工具负载分发到 MCP 服务器,记录执行结果,将交易密码学哈希追加到审计账本,并将更新后的状态返回聊天界面。
使用 Model Context Protocol、计算机使用框架和 TypeScript 运行时构建自主 AI 智能体,为现代软件工程开辟了非凡的能力。但权力意味着责任,欧盟 AI 法案等监管框架确保我们的应用对社会保持问责。
通过将合规作为一等工程原语——嵌入 Zod schema 验证、实时视觉脱敏、健壮中间件拦截器和强制性人类参与干预门控——我们可以在爆炸性的自主代理与不可妥协的法律标准之间架起桥梁。软件架构的未来属于那些构建的系统既安全、透明、合规,又智能的开发者。
这里演示的概念和代码直接来自《Model Context Protocol (MCP) & Computer Use》一书制定的全面的路线图。在 TypeScript 中标准化工具集成、视觉驱动的浏览器自动化和智能体治理,你可以在这里找到它。还可以查看其他许多电子书。
进一步行动,你可以考虑屏蔽此人并/或报告滥用行为