AI-Powered chat platform with support for ONEBOT v11, MCP-based tool execution, and multiple LLM adapters
Single tool 'meta_tool' lacks proper tool registration and schema documentation. The tool definition exists in lib/plugins/ai-plugin/tools/meta_tool.js but cannot be directly verified from the provided code snippet. The input schema provided is present but the tool itself appears to be a wrapper/dispatcher rather than a well-defined atomic tool. The schema includes action, tool_name, tools array, and schema object parameters, but lacks clear output documentation. Tool serves as a meta-layer to discover and call other tools dynamically, which violates the single-responsibility principle (pattern:tool). Description is lengthy (246 chars) and in Chinese, making it harder for English-language LLMs to parse intent. No evidence of proper error handling with recovery guidance, no confirmation patterns for destructive operations, and no documented output structure.
动态元工具(Meta Tool),用于系统所有工具的统一发现、参数结构探查与桥接调用。 【核心执行规范 / CRITICAL RULE】: 1. 发现能力:调用 action="list" 概览系统当前所有已加载的工具分组与功能简介。 2. 探查结构(必须):在首次或调用不确定的新工具之前,【务必先调用 action="query"】(传入 tools: ["tool_name"])查询其参数 Schema、必填字段与类型!严禁凭空盲猜参数名直接发起调用,以避免因参数错误导致的无效调用。 3. 精确执行:根据 query 返回的标准 Schema 准备参数后,使用 action="call"(传入 tool_name 和精确的 schema)进行调用。
Tool violates single-responsibility principle: meta_tool is a dispatcher that lists, queries, and calls other tools. This should be split into separate discovery/query/execution patterns or consolidated into a proper tool gateway.
No documented output schema. Tool description mentions list/query/call actions but does not specify what each action returns. LLMs cannot reason about downstream tool chains without knowing the response structure.
Tool description is in Chinese and exceeds recommended length (246 chars vs 50-200 target). Lengthy, non-English descriptions reduce clarity for LLM selection and waste tokens.
Parameter 'schema' lacks clear validation rules. Description says it must match the Schema from query but provides no format, size limits, or validation examples. LLMs cannot self-correct invalid payloads.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 38 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 21 | - | v1 |
No error handling documented. Tool description mentions rules but provides no recovery guidance (e.g., what to do if tool_name not found, if query fails, if call execution errors).
Meta-tool pattern creates indirection: agents must call list → query → call to use any tool. This is inefficient and defeats the purpose of tool discovery. Consider exposing underlying tools directly with proper naming.
Parameter 'tools' (array of strings) lacks clear constraints. Is it comma-separated or JSON array? What is the max length? Can it be empty? Constraints are missing from description.