手记

分布式AI:从单体智能到云端大脑的必然演进

在人工智能从“对话式模型”向“原生智能体(Agentic AI)”演进的过程中,我们正处在一个类似于互联网从单机软件向分布式架构转型的关键转折点。这一转型的核心在于 AI Skills 的兴起及其分布式发展的必然趋势。

一、什么是 AI Skills:从工具级到框架级的演进

AI Skills(AI 技能)的概念最早在 Claude Code 等前沿智能体实践中得到强化。最初,Skills 被视为“工具级”的增强,例如简单的文件读写或终端操作,便于用户快速实现各类功能。

然而,在以 Solon AI 为代表的现代应用开发框架中,AI Skills 已演化为一种更高层次的封装,用于智能体应用开发。

  • 工具级(Tool-level):解决的是“执行”问题,是具体的功能函数。
  • 框架级(Framework-level):解决的是“决策”问题。它是工具(Tools)、指令(Instruction)与元数据(Metadata)的集合体,不仅包含执行逻辑,还具备准入检查、指令增强及工具染色等能力。

二、AI Skills 应具备的核心特性

为了解决传统工具模式下存在的上下文噪音、权限缺失和行为失控等问题,一个成熟的 AI Skill 必须具备以下特征:

  1. 智能准入(isSupported):只有在满足特定意图、租户或环境条件(可称为提示词上下文)时,技能才会被激活,从而避免无效工具对模型上下文的干扰和 Token 的浪费。
  2. 指令注入(getInstruction):根据当前上下文为模型提供“行为准则”,解决模型“应如何操作”的问题。
  3. 工具路由(getTools):根据当前上下文动态分发工具。
  4. 高度自治:技能内部闭环处理特定领域的逻辑,对外输出标准化的结果。

三、MCP:AI 时代的万维网协议

随着技能需求的爆发,MCP(Model Context Protocol,模型上下文协议)应运而生。它是连接 AI 模型与外部数据/工具的标准协议。

MCP 之于 AI,正如 HTTP 之于万维网。

在互联网时代,HTTP 协议使得任何浏览器都能访问任何服务器上的资源;在 AI 时代,MCP 协议让任何智能体都能无缝调用分布在不同物理位置、由不同厂商提供的技能。这种标准化彻底打破了“智能体”与“外部世界”之间的硬编码束缚。

四、工具的分布式演进:MCP 工具的诞生

工具的形态正在发生根本性转变:从本地单体结构演变为 MCP 工具(分布式工具)。这类工具具备物理位置透明性,不再仅仅是内存中的一个函数,而是演变为一个个独立的分布式能力节点。这种“能力节点化”标志着 AI 迈向微服务架构的关键第一步。

  • 传统工具: 采用代码级耦合,运行在智能体进程内部,难以实现跨语言、跨环境的复用。
  • MCP 工具(分布式工具): 通过 MCP 协议对外提供服务,具备物理位置透明性。它不再是内存中的一个简单函数,而是演变为一个个独立的分布式能力节点。

五、架构映射:从分布式 MCP 工具到 MCP 技能

工具的分布式化为 AI 技能的分布式化提供了清晰的演进路径。当我们将一组具备特定业务逻辑、指令指导和工具集的技能,通过 MCP 协议进行发布时,它们便演进为 MCP 技能

我们可以将 AI 智能体的分布式架构蓝图与传统软件架构进行清晰映射:

  • MCP 协议相当于 RPC(远程过程调用): 它定义了模型与能力节点之间的通信规范,是智能体生态的底层通信管道。
  • MCP 技能相当于微服务: 每个技能都是一个独立的、具备完整业务语义的业务单元。

六、如何实现 MCP 技能:客户端与服务器的协同工作?

实现 MCP 技能的核心在于,将技能的生命周期语义准确地映射到 MCP 协议的各个端点上。

1. McpSkillClient(远程技能的本地代理)

McpSkillClient 作为本地代理,其核心职责是与远程服务建立连接,并将网络调用封装为标准的 Skill 接口。

  • 元数据感知:通过预定义的路径同步获取远程服务的元数据信息。
  • 动态调用映射:在运行时,将本地的 isSupportedgetInstruction 方法调用转换为对远程 MCP Tool 的调用。
  • 工具筛选:自动过滤掉标记为 hide 的系统管理类工具,仅向大语言模型呈现当前可用的业务工具。

应用示例:

_// 1. 构建 MCP 客户端提供者(负责协议通信与 Schema 缓存)_
McpClientProvider mcpClient = McpClientProvider.builder()
                .channel(McpChannel.STREAMABLE)
                .url("http://localhost:8081/skill/order")
                .build();

_// 2. 将 MCP 客户端封装为 Skill 代理_
McpSkillClient skillClient = new McpSkillClient(mcpClient);

_// 3. 构建包含业务上下文的提示信息_
Prompt prompt = Prompt.of("请查询订单 A001 的详细信息。")
                .attrPut("tenant_id", "1")       _// 注入租户上下文_
                .attrPut("user_role", "admin");  _// 注入用户角色权限_

_// 4. 调用大模型,技能将依据 Prompt 自动执行:远程服务接入、指令获取、工具过滤等流程_
chatModel.prompt(prompt)
          .options(o -> o.skillAdd(skillClient))
          .call();

2. McpSkillServer(具备感知能力的技能服务端)

通过继承 McpSkillServer,开发者可将本地业务逻辑封装为远程可调用技能。

  • 生命周期暴露:借助 @ToolMapping@ResourceMapping 注解,可将 isSupportedgetInstruction 等核心生命周期方法对外提供。
  • 智能感知:服务端能够解析传入的 Prompt 上下文,动态识别用户意图。例如,依据用户角色权限筛选 getToolsName 返回的可用工具列表。
  • 安全控制:通过为管理类接口添加 hide:1 标记,有效防止系统级指令被模型误用或泄露。

应用示例:

@McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, mcpEndpoint = "/skill/order")
public class OrderManagerSkillServer extends McpSkillServer {

    @Override
    public String description() {
        return "提供订单查询与取消的专业技能";
    }

    // 智能准入:根据 Prompt 内容与属性决定是否响应
    @Override
    public boolean isSupported(Prompt prompt) {
        // 语义检查:意图是否相关
        boolean isOrderTask = prompt.getUserContent().contains("订单");
        // 安全检查:必须包含必要的上下文信息
        boolean hasRequiredContext = prompt.attr("tenant_id") != null;

        return isOrderTask && hasRequiredContext;
    }

    // 动态指令:根据上下文为大模型注入实时"行为准则"
    @Override
    public String getInstruction(Prompt prompt) {
        String tenantName = prompt.attrOrDefault("tenant_name", "未知租户");
        return "你现在是[" + tenantName + "]的订单主管。请只处理该租户下的订单数据,禁止跨租户查询。";
    }

    // 挂载钩子:技能被激活时触发,可用于注入初始化消息或记录日志
    @Override
    public void onAttach(Prompt prompt) {
        // 可以在此处通过 prompt.addMessage() 注入 Few-shot 或背景知识
        System.out.println("订单技能已挂载,当前租户:" + prompt.attr("tenant_id"));
    }

    /**
     * 动态能力发现:根据用户权限决定暴露哪些工具
     * @return null 表示暴露所有业务工具;Empty 表示禁用所有工具;List 表示精准暴露。
     */
    @Override
    public List<String> getToolsName(Prompt prompt) {
        List<String> tools = new ArrayList<>();

        // 基础权限:所有合规用户可见
        tools.add("OrderQueryTool");

        // 细粒度权限控制:仅管理员角色可使用订单取消功能
        if ("ADMIN".equals(prompt.attr("user_role"))) {
            tools.add("OrderCancelTool");
        }

        return tools;
    }

    @ToolMapping(description = "根据订单号查询详情")
    public String OrderQueryTool(String orderId) {
        return "订单 " + orderId + " 状态:已发货";
    }

    @ToolMapping(description = "取消指定订单")
    public String OrderCancelTool(String orderId) {
        return "订单 " + orderId + " 已成功取消";
    }
}

### 七、技术发展趋势分析

AI技能模块采用分布式架构已成为必然趋势:

* **解耦与复用性**:复杂功能(如法律审计、代码重构)可作为独立服务存在,无需在每个项目中重复开发
* **安全边界控制**:敏感数据处理模块可部署在专用内网环境,通过受控协议与外部智能体通信
* **异构系统集成**:不同编程语言和计算环境的能力可通过统一接口连接,构建智能微服务网络

分布式技能架构模式的出现,标志着AI应用开发从"个人工具集"阶段正式迈入"智能微服务网络"新时代。
0人推荐
随时随地看视频
慕课网APP