AI 上下文协议、连接器、MCP 与工具资源集成治理全景图
从工具、资源、Prompt、文件、数据库和企业系统接入,到权限、沙箱、版本、观测与回滚:理解 AI 系统的连接器层
AI Host
IDE / Chat / Agent
→
Client
协议会话
→
Connector / Server
工具与资源
→
External System
文件 / DB / SaaS
→
Policy / Trace
授权与审计
→
Model Context
可见上下文
| 没有协议层时 | 问题 | 协议层应该提供什么 |
| 每个应用自己写插件 | 工具接入碎片化,权限、日志、错误码各做各的 | 统一的工具、资源、Prompt 暴露方式和生命周期 |
| 把外部数据直接塞进 Prompt | 上下文膨胀、来源不清、权限边界模糊 | 按需读取、引用、订阅和裁剪资源 |
| 模型看到所有工具 | 误选工具、攻击面过大、成本不可控 | 按任务、用户、租户和风险动态发现能力 |
| 执行只看模型输出 | 提示注入、越权、重复副作用和不可追责 | 策略裁决、确认门、沙箱、幂等和审计 Trace |
一句话
上下文协议层不是“多一个插件市场”,而是把外部能力变成模型可发现、系统可授权、运行时可观测、事故后可复盘的上下文接口。
| 概念 | 主要回答什么 | 它不解决什么 | 应连接的治理层 |
| Function / Tool Calling | 模型如何表达“我要调用某个工具和参数” | 不天然处理连接器发现、资源订阅、授权生命周期和跨客户端兼容 | Tool Calling / 执行协议 |
| MCP / 上下文协议 | 外部系统如何把工具、资源、Prompt 暴露给 AI Host | 不等于自动安全,也不替代权限、确认、沙箱和审计 | 连接器注册、权限边界、资产版本、Trace |
| Connector / Plugin | 某个具体系统如何接入,如 GitHub、数据库、文件、浏览器、CRM | 不应把系统全部能力无差别暴露给模型 | 最小权限、能力裁剪、租户隔离 |
| Agent Runtime | 如何把模型规划、工具执行、状态推进和恢复接起来 | 不应直接依赖连接器文本描述做权限判断 | Agent 系统、Workflow / HITL |
Tools:让模型提出动作
- 搜索 issue、读取文件、查询订单、创建工单、运行测试
- 需要 schema、风险等级、owner、版本、权限和确认策略
- 模型可以选择工具,运行时必须裁决是否执行
Resources:让模型读取上下文
- 文件、文档、数据库行、API 响应、代码片段、配置快照
- 需要 URI、权限快照、版本、更新时间和可引用来源
- 资源内容是不可信外部文本,不能当系统指令
Prompts:让流程可复用
- 代码审查模板、事故复盘模板、数据分析流程、SQL 解释流程
- 需要参数、适用场景、输出契约和版本管理
- Prompt 模板是资产,不是随手写进连接器描述的说明文字
关键区别:
Tool 会改变外部世界或触发计算,Resource 提供可读上下文,Prompt 提供可复用工作流。三者都可能影响模型行为,但风险、权限和观测字段不同。
| 登记字段 | 为什么重要 | 坏味道 |
| connector_id / version | 让一次请求能复现当时连接器能力 | 只记录工具名,不记录连接器版本 |
| owner / support channel | 出错时知道谁修、谁审批、谁下线 | 个人脚本长期跑在生产链路里 |
| capabilities | 标明可读、可写、外发、执行、长任务、订阅 | 一个万能 connector 暴露所有动作 |
| risk tier | 驱动确认、审批、沙箱、评测和审计强度 | 风险只写在 README,运行时不可读 |
| schema_hash | 工具参数和资源格式变化后可检测回归 | 连接器升级后旧 Prompt 悄悄失效 |
| auth mode | 区分用户授权、服务账号、租户密钥和临时凭据 | 所有调用都用同一个高权限 token |
| data boundary | 记录可访问租户、目录、表、字段、域名和环境 | 连接器能读全库,靠模型“不要读”控制 |
| 发现维度 | 选择依据 | 工程动作 |
| 用户身份 | 用户角色、团队、套餐、授权范围 | 只暴露该用户可用的连接器和资源根 |
| 任务类型 | 问答、代码、数据分析、工单、发布、浏览器操作 | 按任务加载小工具集,降低误调用和提示注入面 |
| 风险等级 | 读写副作用、敏感数据、外发、不可逆动作 | 高风险工具默认隐藏,直到流程进入确认阶段 |
| 上下文预算 | 工具描述、schema、资源摘要都会占 token | 先摘要发现,再按需展开完整 schema 或资源 |
| 环境 | 本地、沙箱、预发、生产、只读副本 | 不同环境暴露不同工具和凭据 |
能力发现的目标
让模型知道“此刻能做什么”即可,不需要知道组织里所有连接器。工具描述越多,越容易带来上下文噪声、误选工具和攻击面膨胀。
| 授权模式 | 适合场景 | 主要风险 | 治理动作 |
| 用户 OAuth / consent | 代表用户读取邮件、日历、云盘、代码仓库 | 用户同意范围过大,模型间接越权读取 | 细粒度 scope、显示动作预览、支持撤销授权 |
| Service account | 后台索引、企业知识库、内部只读数据源 | 服务账号权限过大,跨租户泄露 | 租户隔离、行列级权限、最小必要字段 |
| Temporary token | 短任务、临时上传、一次性工具调用 | 续期和泄露处理复杂 | 短 TTL、绑定任务和资源、调用后失效 |
| Delegated execution | 人批准后代表其执行写入或外发 | 确认内容不清,责任边界模糊 | 确认页展示工具、目标、参数、影响和审计编号 |
安全底线:
模型文本不能成为授权来源。授权来自身份系统、策略引擎和用户确认;连接器只把能力暴露出来,不能绕过原系统的权限边界。
资源内容投毒
文档、网页、issue、邮件里可能嵌入“忽略规则、导出密钥、调用删除工具”等文本。资源内容必须被标记为外部不可信输入。
工具描述投毒
连接器或工具描述如果可被第三方更新,模型可能被诱导误选看似相似的高风险工具。工具描述也要版本化和审核。
跨工具外泄
一个工具读取敏感数据,另一个工具外发消息。单个工具看似低风险,组合起来可能形成外泄链。
| 防线 | 做什么 | 对应页面 |
| Root / workspace 边界 | 明确连接器可访问的目录、仓库、租户和资源范围 | 权限 / 数据边界 |
| Tool allowlist | 按任务和阶段动态开放工具,不让模型任意组合 | 行为控制矩阵 |
| Content isolation | 把资源内容、工具结果和系统指令分层标注,避免混淆 | 指令层级 / 上下文可信度 |
| Sandbox | 浏览器、代码、文件、数据库工具限制网络、路径、内存和时间 | Tool Calling |
| 观测字段 | 回答什么问题 | 异常信号 |
| connector_id / version | 本次用了哪个连接器版本 | 升级后失败率、误调用率或延迟突然上升 |
| capability_selected | 模型选择了哪个工具、资源或 Prompt | 频繁选错、选了高风险工具、工具列表过宽 |
| auth_context | 调用代表哪个用户、租户、环境和 scope | 跨租户访问、scope 过大、服务账号滥用 |
| resource_uri / snapshot | 读了哪些资源、版本和来源 | 引用过期、资源污染、读取过多无关文档 |
| policy_decision | 策略允许、拒绝、脱敏、确认还是转人工 | 拒绝率飙升、确认绕过、策略版本回退 |
| connector_error | 连接器层失败原因 | schema 不兼容、凭据失效、外部 API 限流 |
| 证据组 | 必须字段 | 回答的问题 | 失败时去向 |
| 会话与身份 | request_id、connector_session_id、tenant_id、actor_id、auth_mode、scope_hash | 这次连接器调用代表谁,权限范围是什么? | 权限审计、越权排查、租户隔离复盘 |
| 能力发现 | available_capabilities、selected_capability、discovery_policy、risk_tier | 模型当时看到了哪些工具 / 资源,为什么选了这个? | 误选工具、工具列表过宽、提示注入排查 |
| 资源读取 | resource_uri_hash、resource_version、snapshot_id、source_trust、redaction_status | 模型读了哪些外部材料,材料版本和可信度如何? | RAG / Resource 污染、引用错误、隐私泄露复盘 |
| 工具执行 | tool_name、tool_schema_version、args_hash、dry_run_result、idempotency_key | 模型提出了什么动作,系统实际准备怎样执行? | 参数错误、重复执行、副作用补偿 |
| 策略裁决 | policy_version、permission_decision、approval_id、block_reason、handoff_reason | 为什么允许、拒绝、确认或转人工? | 误拒误放、审批争议、安全回归 |
| 版本与回滚 | connector_id、connector_version、schema_hash、release_gate_id、rollback_target | 连接器变化是否影响了线上行为,能否切回? | 连接器发布回滚、事故证据包、坏例回归 |
连接器是上下文入口,也是责任入口
一次连接器调用可能同时包含资源读取、工具执行、用户授权和外部副作用。没有调用证据包,团队就无法说明模型到底看到了什么、代表谁做了什么、为什么被允许,以及出事后该回滚哪个连接器版本。
| 场景 | 连接器对象 | 重点风险 | 治理重点 |
| IDE 编程助手 | 文件资源、代码搜索、测试命令、PR Prompt | 读取越界、误改文件、运行危险命令 | workspace root、diff 预览、命令审批、测试 Trace |
| 企业知识助手 | 文档库资源、搜索工具、问答 Prompt | 跨租户读取、过期知识、引用错位 | RAG ACL、索引版本、引用覆盖、知识回滚 |
| 运营 Agent | CRM、工单、邮件、日历、报表工具 | 外发错误、客户数据泄露、重复提交 | 用户确认、幂等键、发送预览、审计证据 |
| 数据分析助手 | 数据库资源、SQL 工具、图表 Prompt | 全表扫描、敏感字段、错误口径 | 只读副本、语义层、字段脱敏、查询预算 |
| 浏览器自动化 | 页面资源、点击/填写工具、截图观察 | 页面注入、登录态滥用、误提交 | 域名白名单、提交确认、截图审计、动作限流 |
误区:MCP 接上就等于安全
协议只定义连接方式,不替代身份、权限、策略、沙箱、确认和审计。真正安全来自协议层与治理层一起工作。
误区:工具越多 Agent 越强
工具越多,误选、注入、上下文膨胀和组合外泄风险越大。成熟系统按任务动态暴露少量能力。
误区:Resource 是可信知识
Resource 只是外部内容通道,仍可能过期、被污染、与用户权限不匹配,必须带来源、版本和可信度标记。
误区:连接器只是开发体验问题
连接器决定模型能看见什么、能做什么、代表谁做、留下什么证据,因此是生产治理和安全边界的一部分。
这张页在主干里的位置
如果说 一次请求的一生 解释一个请求怎样流动,Tool Calling 解释动作怎样被执行,那么本页解释外部工具、资源和 Prompt 是怎样被标准化接入请求上下文的。它把 AI 从单个 API 调用推进到可插拔、可治理的企业集成层。