Skip to content

引言 ​

欢迎来到 Nekro Agent 插件开发的世界!本指南将引导您从零开始学习如何为 Nekro Agent 创建强大且富有创意的插件。

什么是 Nekro Agent 插件? ​

Nekro Agent 插件是一种扩展 Nekro Agent核心功能的方式。通过插件,开发者可以为 Agent 添加新的工具、信息源、交互逻辑,甚至与其他服务和系统集成。插件使得 Nekro Agent 能够适应更广泛的应用场景,满足更个性化的需求。

每个插件都是一个独立的 Python 模块,通过 Nekro Agent 提供的 API 与核心系统进行交互。

插件能做什么? ​

Nekro Agent 插件几乎可以实现任何您希望 Agent 完成的任务,例如:

  • 增强 AI 能力:
    • 提供专业领域的知识库查询。
    • 执行复杂的数学计算或数据分析。
    • 集成第三方 API(如天气查询、新闻聚合、翻译服务等)。
  • 执行具体动作:
    • 发送消息、邮件或通知。
    • 管理定时任务和提醒。
    • 控制智能家居设备。
  • 与外部系统交互:
    • 创建强大的 Web API 接入点,支持完整的 RESTful 设计。
    • 与其他应用程序或服务进行数据同步。
    • 处理文件传输和多媒体内容交互。
  • 个性化用户体验:
    • 根据用户偏好提供定制化内容。
    • 实现独特的人机交互方式。
    • 利用向量数据库提供智能语义搜索功能。

插件的类型多种多样,从简单的工具调用到复杂的业务逻辑处理,您可以充分发挥想象力。

插件系统架构概览 ​

Nekro Agent 插件系统基于模块化和事件驱动的架构设计:

  1. 插件注册:每个插件通过 NekroPlugin 类进行定义和注册,声明其元信息和功能。
  2. 沙盒执行与 RPC:AI 生成的指令(通常是 Python 代码片段)会在一个隔离的沙盒环境中执行。当这些指令需要调用插件提供的功能时,会通过 RPC (远程过程调用) 机制调用在主服务进程中运行的插件方法。插件方法的执行结果会返回给沙盒,供 AI 后续处理。
  3. API 交互:插件通过 Nekro Agent 提供的丰富 API 与核心服务(如消息发送、数据存储、上下文管理等)进行交互。
  4. 事件驱动:插件可以监听并响应系统中的各种事件,如消息接收、会话重置等。
  5. 配置与存储:插件可以定义自己的配置项,方便用户管理,并拥有独立的存储空间来持久化数据。
  6. 高级功能:
    • 动态路由:基于 FastAPI 创建强大的 Web API 端点,支持完整的 RESTful 功能。
    • 文件系统:通过 AgentCtx.fs 实现插件与 AI 沙盒之间的高效文件传递。
    • 向量数据库:集成 Qdrant 向量数据库,为插件提供语义搜索和智能检索能力。
    • 上下文管理:通过 AgentCtx 统一访问聊天信息、消息服务、配置和适配器功能。
    • 异步任务:执行长时间运行的后台任务,支持进度追踪、取消和终态回调,不阻塞主对话。

这种设计确保了插件运行的灵活性和安全性,同时为开发者提供了强大的扩展能力。

阅读本指南的前提条件 ​

为了更好地理解和学习本指南,建议您具备以下基础:

  • Python 编程基础:熟悉 Python 语法、异步编程 (async/await) 和面向对象编程。
  • 了解 API 概念:理解什么是 API 以及如何使用它们。
  • Nekro Agent 基本使用:对 Nekro Agent 的基本功能和操作有一定了解。

如果您已准备就绪,让我们开始插件开发的探索之旅吧!