mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
refactor(agent): rename list_all_commands to list_slash_commands and skill to command-dispatch
This commit is contained in:
@@ -51,7 +51,7 @@ from app.agent.tools.impl.browse_webpage import BrowseWebpageTool
|
|||||||
from app.agent.tools.impl.query_installed_plugins import QueryInstalledPluginsTool
|
from app.agent.tools.impl.query_installed_plugins import QueryInstalledPluginsTool
|
||||||
from app.agent.tools.impl.query_plugin_capabilities import QueryPluginCapabilitiesTool
|
from app.agent.tools.impl.query_plugin_capabilities import QueryPluginCapabilitiesTool
|
||||||
from app.agent.tools.impl.run_slash_command import RunSlashCommandTool
|
from app.agent.tools.impl.run_slash_command import RunSlashCommandTool
|
||||||
from app.agent.tools.impl.list_all_commands import ListAllCommandsTool
|
from app.agent.tools.impl.list_slash_commands import ListSlashCommandsTool
|
||||||
from app.core.plugin import PluginManager
|
from app.core.plugin import PluginManager
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from .base import MoviePilotTool
|
from .base import MoviePilotTool
|
||||||
@@ -127,7 +127,7 @@ class MoviePilotToolFactory:
|
|||||||
QueryInstalledPluginsTool,
|
QueryInstalledPluginsTool,
|
||||||
QueryPluginCapabilitiesTool,
|
QueryPluginCapabilitiesTool,
|
||||||
RunSlashCommandTool,
|
RunSlashCommandTool,
|
||||||
ListAllCommandsTool,
|
ListSlashCommandsTool,
|
||||||
]
|
]
|
||||||
# 创建内置工具
|
# 创建内置工具
|
||||||
for ToolClass in tool_definitions:
|
for ToolClass in tool_definitions:
|
||||||
|
|||||||
+8
-8
@@ -1,4 +1,4 @@
|
|||||||
"""查询所有可用命令工具(系统命令 + 插件命令)"""
|
"""查询所有可用斜杠命令工具(系统命令 + 插件命令)"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from typing import Optional, Type
|
from typing import Optional, Type
|
||||||
@@ -10,8 +10,8 @@ from app.command import Command
|
|||||||
from app.log import logger
|
from app.log import logger
|
||||||
|
|
||||||
|
|
||||||
class ListAllCommandsInput(BaseModel):
|
class ListSlashCommandsInput(BaseModel):
|
||||||
"""查询所有可用命令工具的输入参数模型"""
|
"""查询所有可用斜杠命令工具的输入参数模型"""
|
||||||
|
|
||||||
explanation: str = Field(
|
explanation: str = Field(
|
||||||
...,
|
...,
|
||||||
@@ -19,17 +19,17 @@ class ListAllCommandsInput(BaseModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ListAllCommandsTool(MoviePilotTool):
|
class ListSlashCommandsTool(MoviePilotTool):
|
||||||
name: str = "list_all_commands"
|
name: str = "list_slash_commands"
|
||||||
description: str = (
|
description: str = (
|
||||||
"List all available commands in the system, including system preset commands "
|
"List all available slash commands in the system, including system preset commands "
|
||||||
"(e.g. /cookiecloud, /sites, /subscribes, /downloading, /transfer, /restart, etc.) "
|
"(e.g. /cookiecloud, /sites, /subscribes, /downloading, /transfer, /restart, etc.) "
|
||||||
"and plugin-registered commands. "
|
"and plugin-registered commands. "
|
||||||
"Use this tool to discover what commands are available before executing them with run_slash_command. "
|
"Use this tool to discover what slash commands are available before executing them with run_slash_command. "
|
||||||
"This is especially useful when the user describes an action in natural language and you need to "
|
"This is especially useful when the user describes an action in natural language and you need to "
|
||||||
"find the matching command to fulfill their request."
|
"find the matching command to fulfill their request."
|
||||||
)
|
)
|
||||||
args_schema: Type[BaseModel] = ListAllCommandsInput
|
args_schema: Type[BaseModel] = ListSlashCommandsInput
|
||||||
require_admin: bool = True
|
require_admin: bool = True
|
||||||
|
|
||||||
def get_tool_message(self, **kwargs) -> Optional[str]:
|
def get_tool_message(self, **kwargs) -> Optional[str]:
|
||||||
@@ -24,7 +24,7 @@ class RunSlashCommandInput(BaseModel):
|
|||||||
description="The slash command to execute, e.g. '/cookiecloud'. "
|
description="The slash command to execute, e.g. '/cookiecloud'. "
|
||||||
"Must start with '/'. Can include arguments after the command, e.g. '/command arg1 arg2'. "
|
"Must start with '/'. Can include arguments after the command, e.g. '/command arg1 arg2'. "
|
||||||
"Use query_plugin_capabilities tool to discover available plugin commands, "
|
"Use query_plugin_capabilities tool to discover available plugin commands, "
|
||||||
"or list_all_commands tool to discover all available commands (including system commands).",
|
"or list_slash_commands tool to discover all available commands (including system commands).",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ class RunSlashCommandTool(MoviePilotTool):
|
|||||||
"1) System preset commands (e.g. /cookiecloud, /sites, /subscribes, /downloading, /transfer, /restart, etc.) "
|
"1) System preset commands (e.g. /cookiecloud, /sites, /subscribes, /downloading, /transfer, /restart, etc.) "
|
||||||
"2) Plugin commands registered by installed plugins. "
|
"2) Plugin commands registered by installed plugins. "
|
||||||
"Use the query_plugin_capabilities tool to discover plugin commands, "
|
"Use the query_plugin_capabilities tool to discover plugin commands, "
|
||||||
"or the list_all_commands tool to discover all available commands. "
|
"or the list_slash_commands tool to discover all available commands. "
|
||||||
"The command will be executed asynchronously. "
|
"The command will be executed asynchronously. "
|
||||||
"Note: This tool triggers the command execution but the actual processing happens in the background."
|
"Note: This tool triggers the command execution but the actual processing happens in the background."
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: command-execute
|
name: command-dispatch
|
||||||
description: >-
|
description: >-
|
||||||
Use this skill when the user's intent is to execute a system or plugin function. Applicable scenarios include:
|
Use this skill when the user's intent is to execute a system or plugin function. Applicable scenarios include:
|
||||||
1) The user sends a slash command starting with / (e.g. /cookiecloud, /sites, /subscribes, etc.);
|
1) The user sends a slash command starting with / (e.g. /cookiecloud, /sites, /subscribes, etc.);
|
||||||
@@ -7,12 +7,12 @@ description: >-
|
|||||||
(e.g. "sync sites", "show subscriptions", "refresh subscriptions", "check downloads", etc.).
|
(e.g. "sync sites", "show subscriptions", "refresh subscriptions", "check downloads", etc.).
|
||||||
This skill helps you identify the user's intent, find the matching command, extract necessary parameters,
|
This skill helps you identify the user's intent, find the matching command, extract necessary parameters,
|
||||||
and execute the corresponding command.
|
and execute the corresponding command.
|
||||||
allowed-tools: list_all_commands query_plugin_capabilities run_slash_command
|
allowed-tools: list_slash_commands query_plugin_capabilities run_slash_command
|
||||||
---
|
---
|
||||||
|
|
||||||
# Command Execute
|
# Command Dispatch
|
||||||
|
|
||||||
Use this skill to identify user intent and invoke the corresponding system or plugin command.
|
Use this skill to identify user intent and dispatch the corresponding system or plugin command.
|
||||||
|
|
||||||
## When to Use
|
## When to Use
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ Use this skill to identify user intent and invoke the corresponding system or pl
|
|||||||
|
|
||||||
## Tools
|
## Tools
|
||||||
|
|
||||||
- `list_all_commands` — List all available commands (system + plugin), returns command name, description, and category
|
- `list_slash_commands` — List all available slash commands (system + plugin), returns command name, description, and category
|
||||||
- `query_plugin_capabilities` — Query detailed plugin capabilities (commands, actions, scheduled services)
|
- `query_plugin_capabilities` — Query detailed plugin capabilities (commands, actions, scheduled services)
|
||||||
- `run_slash_command` — Execute a specified command (works for both system and plugin commands)
|
- `run_slash_command` — Execute a specified command (works for both system and plugin commands)
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Determine whether the user's message is requesting the execution of a command:
|
|||||||
|
|
||||||
### Step 2: Find Matching Command
|
### Step 2: Find Matching Command
|
||||||
|
|
||||||
Use `list_all_commands` to retrieve all available commands. Match the user's described intent against the `description` and `category` fields of each command.
|
Use `list_slash_commands` to retrieve all available commands. Match the user's described intent against the `description` and `category` fields of each command.
|
||||||
|
|
||||||
If the user's description involves a specific plugin's functionality, additionally use `query_plugin_capabilities` to query that plugin's detailed capabilities.
|
If the user's description involves a specific plugin's functionality, additionally use `query_plugin_capabilities` to query that plugin's detailed capabilities.
|
||||||
|
|
||||||
@@ -69,5 +69,5 @@ Command execution is asynchronous. After triggering, inform the user that the co
|
|||||||
|
|
||||||
- Command execution requires admin privileges; the tool will automatically check permissions
|
- Command execution requires admin privileges; the tool will automatically check permissions
|
||||||
- Both system and plugin commands are executed via the `run_slash_command` tool — no need to distinguish between them
|
- Both system and plugin commands are executed via the `run_slash_command` tool — no need to distinguish between them
|
||||||
- If you are unsure which command matches the user's intent, use `list_all_commands` first to look up before deciding
|
- If you are unsure which command matches the user's intent, use `list_slash_commands` first to look up before deciding
|
||||||
- Never guess non-existent commands; always select from the available command list
|
- Never guess non-existent commands; always select from the available command list
|
||||||
Reference in New Issue
Block a user