Solon AI Remote Skills:开启分布式技能的“感知”时代
引言: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 全部塞进 System Prompt。这不仅白白浪费了大量 Token 成本,更严重的是,过多的干扰信息会导致模型产生“注意力分散”,降低推理的准确性。
2. 权限真空(Security Risks)与越权调用:
在 MCP 的原生架构中,模型对工具的可见性是“全量”的。模型无法自发地根据当前用户的角色动态隐藏敏感操作。例如,一个实习生询问订单信息,模型可能会在推理过程中尝试调用 OrderCancel(取消订单)工具。虽然执行层可以拦截,但这种“可见即可试”的模式本身就是巨大的安全隐患。
3. 行为失控(Instruction Gap):
工具(Tools)描述了“能做什么”,却无法告知模型在特定背景下“该怎么做”。例如,同一个“查询利率”工具,在深圳分行和上海分行的业务逻辑中可能有着截然不同的前置约束,静态的 MCP 协议无法传递这种动态的“行为准则”。
Remote Skills 的核心思想是: 将远程工具包装在 Skill 生命周期之中,使其具备感知当前 Prompt 上下文的能力,从而实现从“静态描述”到“动态契约”的跃迁。
二、 核心机制:感知、挂载与动态路由
Solon AI 通过在 McpSkillClient(客户端代理)与 McpSkillServer(服务端实现)之间建立一套上下文协商机制,赋予了远程技能“思考”的能力。这主要体现在以下三个层面:
1. 智能准入 (isSupported): 从“全量加载”到“按需激活”
Remote Skill 不再是盲目激活。在会话开始前,服务端会解析当前的 Prompt 属性(如租户 ID、用户画像、当前意图属性)。通过执行 isSupported 逻辑,服务端可以决定当前技能是否参与此次对话。
- 工程价值:只有当对话涉及“财务报表”且用户具备“审计员”权限时,财务技能才会被挂载到内存图中。这从物理层面消除了非相关工具的干扰。
2. 动态指令注入 (getInstruction): 赋予工具“业务灵魂”
技能不再仅仅是 API。挂载时,服务端会通过 getInstruction 根据上下文动态下发指令约束。这种机制允许开发者在不修改模型提示词的情况下,实时调整 Agent 的行为逻辑。
- 示例:当感知到请求来自移动端,服务端注入:“回复请保持简洁,尽量使用 Markdown 表格,不要输出超过 200 字。”
3. 三态能力路由 (getToolsName): 精细化权限隔离
这是 Remote Skills 最具突破性的功能。服务端可以根据请求者的身份,动态决定下发哪些工具名称,实现“工具级的 RBAC”:
- 全量授权:针对超级管理员暴露所有调试和管理工具。
- 精准过滤:针对普通业务员,隐藏
Delete或BatchUpdate类的高危工具。 - 完全拦截:当检测到异常请求(如 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) { ... }
}
四、 架构反思:为什么这是企业级 Agent 的必然选择?
将 MCP 进化为 Remote Skills 之后,AI 系统的架构质量获得了质的飞跃:
- 极致的上下文纯净度(Purity): 通过动态过滤,模型只看到“此时此刻、此人此权”下该看到的工具。这种“最小化信息原则”极大提升了推理成功率,并显著降低了 Token 损耗,对于大规模并发系统而言,这直接关系到运营成本。
- 硬核安全模型(Hardened Security): 在过去,我们试图通过“提示词(Prompt Injection)”来防御非法调用。但在 Remote Skills 架构下,权限控制从“约束模型”提升到了“服务端物理过滤”。即便大模型尝试攻击未授权工具,由于工具定义根本未曾下发,攻击将无从谈起。
- 能力的热更新与治理(Governance): 在分布式环境下,业务逻辑、工具列表和行为准则全部收敛于远程服务端。这意味着,当业务调整(如增加一个退款限制逻辑)时,开发者只需更新 McpSkillServer 的代码,成百上千个正在运行的客户端 Agent 即可瞬间获得能力升级,无需重新发布。
Solon AI Remote Skills 不仅仅是一套协议的实现,它更是一种关于“如何管理分布式智能体能力”的深度思考。它让 AI 插件从此告别了“静态广播”的时代,步入了“按需分配、智能感知”的新阶段。
五、 展望未来:迈向“技能即服务”
Solon AI Remote Skills 不仅仅是一套协议的实现,它更是一种关于 “如何像管理微服务一样管理 AI 能力” 的深度思考。在未来的 AI 架构中,大模型将不再是一个臃肿的“万能盒子”,而是一个精简的“推理枢纽”,通过 Remote Skills 协议,按需连接全球各地的分布式专家单元。
通过让 AI 插件告别“静态广播”,步入“按需分配、智能感知”的新阶段,Solon AI 正在为开发者提供更稳健、更可控、更具商业价值的 Agent 开发框架。

浙公网安备 33010602011771号