在 AI Agent 的工程实践中,Model Context Protocol (MCP) 已成为连接大年夜模型与外部世界的标准桥梁。然而,跟着应用处景从“小我助手”向“企业级复杂营业”迈进,传统的 MCP 交互模式开端显露其 “静态化” 的瓶颈。

传统的 MCP 交互类似于一个“无法封闭的对象箱”,无论场景若何,所有对象一涌而上:

  • 高低文噪音(Context Noise): 即使是一个简单的问候,模型也会被注入成百上千行的对象 Schema 定义,白白浪费 Token,更干扰模型的推理专注度。
  • 权限真空(Security Risks): 模型对对象的可见性是“全量”的。难以根据当前登录用户的角色(如通俗用户 vs 治理员)动态隐蔽敏感操作(如:删除订单)。
  • 行动掉控(Instruction Gap): 对象只供给了“能做什么”,却无法告诉模型“在当前背景下该怎么做”。模型缺乏针对特定营业场景的即时指令束缚。

二、核心解决方法:感知、挂载与动态分发

Solon AI 经由过程引入 Skill(Solon AI Skills) 生命周期 来包裹 MCP 协定,实现以下机制解决上述痛点:

A. 智能准入 (isSupported):

只有当 Prompt 高低文(意图、租户信息、情况变量)知足前提时,技能才会被激活。

B. 指令注入 (getInstruction):

办事端根据 Prompt 属性,动态决定给模型展示哪些对象。支撑三种形态的路由方法:

  • 全量应用:不决义过滤逻辑时,显示所有营业对象。
  • 精准授权:仅展示当前用户权限范围内的对象。
  • 完全拒绝:即便技能激活,也可能因安然策略在此时封锁所有对象调用。

三、实战示例

1. 客户端:像本地技能一样调用

在技能挂载时,主动为模型注入针对当前高低文的“行动准则”(System Message)。

C. 三态路由 (getToolsName):

开辟者只需存眷营业属性的注入,无需操心对象的过滤逻辑,一切由 MCP Skill 代理与长途办事端商定与协商。

import org.noear.solon.ai.chat.ChatModel;import org.noear.solon.ai.chat.prompt.Prompt;import org.noear.solon.ai.mcp.McpChannel;import org.noear.solon.ai.mcp.client.McpClientProvider;import org.noear.solon.ai.mcp.client.McpSkillClient;//构建 mcp 客户端McpClientProvider mcpClient = McpClientProvider.builder()                .channel(McpChannel.STREAMABLE)                .url("http://localhost:8081//skill/order")                .build();// 构建带有营业属性的提示词Prompt prompt = Prompt.of("帮我撤消订单 A001")                .attrPut("tenant_id", "solon_001")                .attrPut("user_role", "ADMIN"); // 模仿治理员身份// 注入技能,模型将只看到“治理员”权限下的对象chatModel.prompt(prompt)         .options(o -> o.skillAdd(new McpSkillClient(mcpClient))) //将 mcp 客户端 包装为 Solon AI Skills         .call();

2. 办事端:实现具备“感知力”的技能

办事端不再是盲目响应,而是经由过程解析 Prompt 决定本身的表示。

import org.noear.solon.ai.annotation.ToolMapping;import org.noear.solon.ai.chat.prompt.Prompt;import org.noear.solon.ai.mcp.McpChannel;import org.noear.solon.ai.mcp.server.McpSkillServer;import org.noear.solon.ai.mcp.server.annotation.McpServerEndpoint;import java.util.ArrayList;import java.util.List;@McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, mcpEndpoint = "/skill/order")public class OrderSkillServer extends McpSkillServer {        @Override    public boolean isSupported(Prompt prompt) {        // 感知意图:只有涉及“订单”且租户合规时才激活        return prompt.getUserContent().contains("订单")                && prompt.attr("tenant_id") != null;    }    @Override    public String getInstruction(Prompt prompt) {        // 动态指令:注入租户特定的营业规矩        return "你如今是租户[" + prompt.attr("tenant_id") + "]的订单助手。";    }    @Override    public List getToolsName(Prompt prompt) {        // 权限隔离:根据用户角色动态下发对象名        List tools = new ArrayList<>();        tools.add("OrderQuery"); // 基本权限        if ("ADMIN".equals(prompt.attr("user_role"))) {            tools.add("OrderCancel"); // 仅治理员可见        }        return tools;    }    @ToolMapping(description = "查询订单")    public String OrderQuery(String id) { ... }    @ToolMapping(description = "撤消订单")    public String OrderCancel(String id) { ... }}

四、Skills 架构反思与局限性弥补

尽管将 MCP 进化为 Skills 带来了明显的工程优势,但开辟者仍需理清其技巧界线:

  • 非标准化的架构加强:

LLM 的底层标准仅包含 Prompt 和 Tool-Call。Skills 并非模型原生标准,也不属于 MCP 的公共协定规范,而是一种 架构设计模式(模式,是通用的)。它平日由 AI 开辟框架(如 Solon AI)在花费侧实现,用于解决复杂营业下的才能调剂问题。

  • 花费侧驱动的定制:

MCP 向 Skills 的进化本质上是“营业驱动”或“范畴驱动”的。在设计长途 MCP Skill 时,必须参考花费侧(即 Agent 履行引擎)的具体规范进行深度定制。

  • 实用处景的选择:

Tool:实用于原子化、无状况、全量公开的简单功能插件。

Solon AI 支撑将 MCP 封装为 Skill,实现了从“冷冰冰的 API 集合”到“具备感知才能的智能技能”的跨越。

一、静态 Tools 的三大年夜痛点

Skill:实用于须要高低文感知、多租户隔离、动态指令束缚的复杂营业逻辑块。

五、 好处总结

将 MCP 进化为 Skills 之后,您的 AI Agent 架构将获得:

  • 极致的高低文纯净度:

模型只看到此时此刻该看的对象(经由过程 getToolsName 实现按需加载,或权限控制)。

  • 天然的权限安然:

经由过程办事端感知的动态分发,实现真正的跨过程角色权限控制(RBAC for Tools)。

  • 低耦合的营业演进:

营业逻辑和规矩变革集中在办事端,客户端 “无需” 任何代码修改即可获得最新才能。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部