Skip to content

vmoranv/astrbot_plugin_command2llm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AstrBot Command2LLM 插件

这个插件允许大语言模型在聊天过程中自动判断并调用当前所有插件的命令作为工具,实现智能化的交互体验。

功能特点

  • 🤖 自动判断: 智能判断用户消息是否需要调用命令
  • 🛠️ 实时调用: 在聊天过程中实时调用插件命令,无需手动输入命令
  • 🔍 命令发现: 自动发现和识别所有已激活插件的命令
  • 🎯 独立判断模型: 支持单独指定“是否触发命令判断”所使用的 LLM
  • 📋 帮助系统: 提供命令帮助信息查询功能
  • ⚙️ 灵活控制: 支持启用/禁用AI自动调用功能
  • 🛡️ 冲突缓解: 默认以更低优先级监听消息,若其他插件已产出结果则不再抢占处理

工作原理

插件会拦截所有用户消息,通过以下方式工作:

  1. 消息拦截: 拦截所有非命令消息(不以/或#开头的消息)
  2. 智能判断: 使用关键词和LLM双重判断是否需要调用命令
  3. 命令发现: 自动扫描所有已激活插件的命令
  4. 工具执行: LLM根据用户需求选择合适的工具执行
  5. 结果返回: 将执行结果返回给用户

安装方法

  1. 将插件文件夹放置到 AstrBot 的插件目录
  2. 重启 AstrBot 或重新加载插件

使用方法

自动调用(主要功能)

直接发送消息,插件会自动判断是否需要调用命令:

帮我查看天气
请搜索一下今天的新闻
能否设置一个提醒

控制命令

/ai_enable      # 启用AI自动调用命令功能
/ai_disable     # 禁用AI自动调用命令功能
/ai_status      # 查看AI功能状态
/refresh_commands # 刷新命令缓存

智能判断机制

插件使用双重判断机制:

  1. 关键词匹配: 检测消息中是否包含调用关键词

    • 帮我、请、能否、可以、能不能、如何、怎么、怎样
    • 查看、搜索、找、获取、设置、配置、启动、停止
    • 天气、时间、日期、新闻、音乐、视频、图片
  2. LLM精确判断: 使用LLM进一步判断消息意图

技术实现

  • 使用 AstrBot v4.5.7+ 的 Tool 和 Agent API
  • 支持命令过滤器和命令组过滤器
  • 集成对话管理系统
  • 支持多轮对话和上下文记忆
  • 智能消息过滤和判断机制

配置选项

插件支持以下配置:

  • wake_word: 命令唤醒词,默认 /
  • judge_provider_id: 判断是否需要触发命令时使用的 LLM 提供商 ID;留空则沿用当前会话模型
  • show_builtin_cmds: 是否将内置插件命令也暴露给 LLM
  • custom_cmds: 补充无法从 handler 自动发现的命令,格式为 命令: 描述命令#描述
  • plugin_blacklist: 不参与命令发现与调用的插件名称列表

行为说明

  • 插件只负责“判断”和“发起调用”,真正执行命令时仍然使用当前会话中的聊天模型上下文。
  • 插件不会再因为某个会话里已经调用过一次命令,就阻断该会话后续所有消息。
  • 如果消息已经被其他插件提前产出结果,Command2LLM 会自动旁路,减少与菜单/监听器类插件的冲突。

注意事项

  • 需要配置好 LLM 提供商才能使用
  • 插件会自动跳过以/或#开头的命令消息,避免与现有命令冲突
  • 某些需要特定权限的命令可能无法通过AI调用
  • 建议在测试环境中先验证功能

兼容性

  • 设计目标为 AstrBot v4.5.7+
  • 已额外验证:在较老版本(如 4.5.6)缺少 Agent API 时,插件会保持加载但不会自动调用命令,并在状态信息中提示版本不支持
  • 支持所有标准的命令过滤器
  • 兼容多平台适配器
  • 支持群聊和私聊场景

开发者

许可证

本项目遵循 LICENSE 文件中的许可证。

About

用llm调用插件命令

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Generated from Soulter/helloworld