继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Solon AI Remote Skills(Mcp Skill):开启分布式技能的“感知”时代

Qyouu
关注TA
已关注
手记 495
粉丝 88
获赞 414

引言:AI Agent 面临的“最后一公里”挑战

在 AI Agent 的工程实践中,我们正经历一场从“本地集成”向“云端插件化”的深刻变革。过去一年间,行业见证了 Model Context Protocol (MCP) 的兴起,它成功解决了大模型与外部工具跨进程连接的“协议标准化”难题。然而,随着企业级应用场景的不断深入,开发者们逐渐意识到:仅仅实现连接是远远不够的。

今天,Solon AI 3.9.0 正式推出 Remote Skills(远程技能) 这一创新概念。该特性并非对 MCP 的简单封装,而是将原本静态、被动触发的 MCP 工具集,升级为具备业务感知能力、生命周期管理和动态路由功能的分布式智能单元。

一、 从 MCP Tools 到 Remote Skills 的跨越

传统的 MCP 交互模式本质上是一种“静态广播”机制。服务端一旦启动,就会将所有工具(Tools)完整暴露给大模型。这种模式在单机实验环境中表现良好,但在复杂的多租户、高安全性要求的企业级业务场景中,会引发三个关键的工程痛点:

1. 上下文噪音(Context Noise)与 Token 膨胀:

大模型的上下文窗口既昂贵又有限。如果一个系统拥有 500 个工具,即便是简单的对话或基础查询,传统 MCP 也会将全部 500 个工具的 JSON Schema 塞入系统提示词中。这不仅造成了大量 Token 资源的浪费,更严重的是,过量的干扰信息会导致模型“注意力分散”,从而降低推理的准确性。

2. 权限真空(Security Risks)与越权调用:

在 MCP 的原生架构中,模型对工具的可见性是“全量开放”的。模型无法根据当前用户角色动态隐藏敏感操作。例如,当实习生查询订单信息时,模型可能在推理过程中尝试调用 OrderCancel(取消订单)工具。虽然执行层可以进行拦截,但这种“可见即可试”的模式本身就构成了重大的安全隐患。

3. 行为失控(Instruction Gap):

工具(Tools)仅描述了“能做什么”,却无法告知模型在特定业务背景下“该怎么做”。例如,同一个“查询利率”工具,在深圳分行和上海分行的业务逻辑中可能存在着截然不同的前置约束条件,而静态的 MCP 协议无法传递这种动态的“行为准则”。

Remote Skills 的核心思想在于:将远程工具封装在 Skill 生命周期管理框架内,使其具备感知当前提示词上下文的能力,从而实现从“静态描述”到“动态契约”的质的飞跃。

二、 核心机制:感知、挂载与动态路由

Solon AI 通过在 McpSkillClient(客户端代理)与 McpSkillServer(服务端实现)之间建立一套上下文协商机制,赋予远程技能“思考”能力。这一机制主要体现在以下三个层面:

1. 智能准入(isSupported):从“全量加载”到“按需激活”

Remote Skill 不再盲目启动。在对话开始前,服务端会解析当前 Prompt 的属性(例如租户 ID、用户画像、当前意图等),通过执行 isSupported 逻辑来判断该技能是否应参与本次对话。

  • 工程价值:只有当对话内容涉及“财务报表”且用户拥有“审计员”权限时,财务技能才会被加载到内存图中。这从物理层面排除了无关工具的干扰。

2. 动态指令注入(getInstruction):赋予工具“业务灵魂”

技能不再仅仅是 API。在挂载时,服务端会通过 getInstruction 方法,根据上下文动态下发指令约束。这种机制允许开发者在无需修改模型提示词的前提下,实时调整 Agent 的行为逻辑。

  • 示例:当检测到请求来自移动端时,服务端可注入指令:“回复请保持简洁,尽量使用 Markdown 表格,内容不要超过 200 字。”

3. 三态能力路由(getToolsName):精细化权限隔离

这是 Remote Skills 最具突破性的功能。服务端可以根据请求者的身份,动态决定下发哪些工具名称,实现“工具级别的 RBAC”:

  • 全量授权:向超级管理员开放所有调试和管理工具。
  • 精准过滤:对普通业务员,隐藏如 DeleteBatchUpdate 等高风险工具。
  • 完全拦截:当检测到异常请求(例如 IP 属地异常)时,即使技能已激活,也可立即关闭所有工具访问权限。

三、 实战:构建具备“自省”能力的远程技能

1. 客户端:极简化的集成体验

在 Solon AI 框架中,McpSkillClient 将复杂的远程通信与协议转换过程完全封装,对开发者透明。开发人员仅需专注于业务属性(Attrs)的注入即可完成集成。

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;

// 1. 构建 mcp 客户端
McpClientProvider mcpClient = McpClientProvider.builder()
                .channel(McpChannel.STREAMABLE)
                .url("http://localhost:8081//skill/order")
                .build();

// 2. 构建包含深度业务属性的提示词
Prompt prompt = Prompt.of("帮我处理 A001 订单")
                .attrPut("tenant_id", "solon_cloud")
                .attrPut("user_role", "ADMIN")
                .attrPut("client_ip", "10.0.0.1");

// 3. 注入远程技能代理,框架自动完成上下文透传
chatModel.prompt(prompt)
         .options(o -> o.skillAdd(new McpSkillClient(mcpClient))) 
         .call();

2. 服务端:声明式安全能力导出

通过继承 McpSkillServer 类,您可以便捷地构建具备动态防御机制的远程服务。请注意以下代码如何通过编程逻辑精确控制工具的可访问性。

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, mcpEndpoint = "/skill/order")
public class OrderRemoteSkillServer extends McpSkillServer {

    @Override
    public boolean isSupported(Prompt prompt) {
        // 逻辑准入控制:若请求缺少租户标识,则直接拒绝加载该技能
        return prompt.attr("tenant_id") != null;
    }

    @Override
    public List<String> getToolsName(Prompt prompt) {
        // 动态路由机制:实现物理层面的工具隔离
        List<String> 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) { ... }
}

四、 架构反思:为何这是企业级智能体的必然演进方向?

将 MCP 升级为 Remote Skills 架构后,AI 系统的整体架构质量实现了跨越式提升:

  • 极致的上下文纯净性(Purity): 借助动态过滤机制,模型仅能访问当前用户在当前权限下可用的工具。这种“最小信息原则”大幅提升了决策准确性,同时显著降低了 Token 消耗——对于高并发企业系统而言,这直接转化为可观的运营成本优化。
  • 硬核安全体系(Hardened Security): 传统方案依赖提示词工程来防范越权调用,而 Remote Skills 将权限控制从“模型约束”升级为“服务端物理隔离”。即便模型试图攻击未授权接口,由于工具定义从未下发至客户端,攻击向量被彻底消除。
  • 能力的热更新与治理(Governance): 在分布式架构中,业务规则、工具列表及行为策略全部集中于远程服务端。当业务需求变更(例如新增退款风控逻辑)时,只需更新 McpSkillServer 的代码,所有在线客户端智能体即可实时同步能力迭代,无需重新部署。

Solon AI Remote Skills 不仅是一套协议实现,更是对“分布式智能体能力管理”的体系化重构。它推动 AI 插件从“静态广播”模式进化至“按需调度、智能感知”的新范式。

五、 未来展望:迈向“技能即服务”时代

Solon AI Remote Skills 本质上是对 “如何像治理微服务一样管理 AI 能力” 的底层思考。未来的 AI 架构中,大模型将不再是功能庞杂的“万能黑箱”,而成为精炼的“决策中枢”,通过 Remote Skills 协议动态连接全球分布的专项能力单元。

通过实现 AI 插件从“静态配置”到“动态感知”的转型,Solon AI 为开发者提供了更稳定、可管控、具备商业落地价值的智能体开发框架。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP