服务器与标准输入输出钩子集成

使用 hooks 连接 ToolUniverse 服务器和 stdio 接口的完整教程

概述

ToolUniverse 提供智能输出处理钩子,能够自动处理大型工具输出,具体包括:

  • SummarizationHook:基于人工智能的长文本输出摘要功能

  • FileSaveHook:基于文件的归档及元数据管理

  • 自定义 Hook:用户定义的处理逻辑

这些钩子可在 server 模式和 stdio 模式下使用,且默认行为各不相同。

服务器模式(HTTP/SSE)

服务器模式提供支持可配置钩子的 HTTP 和 SSE 传输。

基本用法

启动启用钩子的服务器:

# Enable hooks with default SummarizationHook
tooluniverse-smcp-server --hooks-enabled --port 8000

# Use specific hook type
tooluniverse-smcp-server --hook-type SummarizationHook --port 8000
tooluniverse-smcp-server --hook-type FileSaveHook --port 8000

# Use custom hook configuration
tooluniverse-smcp-server --hook-config-file hook_config.json --port 8000

可用参数

  • --hooks-enabled:启用输出处理钩子(默认值:False)

  • --hook-type:选择钩子类型(SummarizationHook,FileSaveHook)

  • --hook-config-file:自定义钩子配置 JSON 文件的路径

示例配置

SummarizationHook 配置:

{
  "hooks": [
    {
      "name": "summarization_hook",
      "type": "SummarizationHook",
      "enabled": true,
      "conditions": {
        "output_length": {
          "operator": ">",
          "threshold": 5000
        }
      },
      "hook_config": {
        "chunk_size": 30000,
        "focus_areas": "key_findings_and_results",
        "max_summary_length": 3000
      }
    }
  ]
}

FileSaveHook 配置:

{
  "hooks": [
    {
      "name": "file_save_hook",
      "type": "FileSaveHook",
      "enabled": true,
      "conditions": {
        "output_length": {
          "operator": ">",
          "threshold": 1000
        }
      },
      "hook_config": {
        "temp_dir": "/tmp/tooluniverse_outputs",
        "file_prefix": "tool_output",
        "include_metadata": true,
        "auto_cleanup": true,
        "cleanup_age_hours": 24
      }
    }
  ]
}

标准输入输出模式(桌面人工智能)

stdio 模式专为桌面 AI 应用程序(如 Claude Desktop)设计,默认启用钩子功能。

默认行为

Stdio 模式默认启用 SummarizationHook:

# Default: hooks enabled with SummarizationHook
tooluniverse-smcp-stdio

# Equivalent to:
tooluniverse-smcp-stdio --hook-type SummarizationHook

挂钩控制

禁用或修改钩子行为:

# Disable hooks completely
tooluniverse-smcp-stdio --no-hooks

# Use FileSaveHook instead
tooluniverse-smcp-stdio --hook-type FileSaveHook

# Use custom configuration
tooluniverse-smcp-stdio --hook-config-file hook_config.json

可用参数

  • --no-hooks:禁用输出处理钩子(默认:启用)

  • --hook-type:选择钩子类型(SummarizationHook,FileSaveHook)

  • --hook-config-file:自定义钩子配置 JSON 文件的路径

Python API 集成

使用 SMCP 类以编程方式使用钩子:

基本用法

from tooluniverse import SMCP

# Enable hooks with default SummarizationHook
server = SMCP(
    name="My Server",
    hooks_enabled=True
)

# Use specific hook type
server = SMCP(
    name="My Server",
    hooks_enabled=True,
    hook_type="SummarizationHook"
)

# Use FileSaveHook
server = SMCP(
    name="My Server",
    hooks_enabled=True,
    hook_type="FileSaveHook"
)

高级配置

使用自定义钩子配置:

import json

# Load custom configuration
with open('hook_config.json', 'r') as f:
    hook_config = json.load(f)

server = SMCP(
    name="My Server",
    hooks_enabled=True,
    hook_config=hook_config
)

# Or define inline
hook_config = {
    "hooks": [
        {
            "name": "custom_hook",
            "type": "SummarizationHook",
            "enabled": True,
            "conditions": {
                "output_length": {
                    "operator": ">",
                    "threshold": 3000
                }
            },
            "hook_config": {
                "chunk_size": 2000,
                "focus_areas": "key_findings_and_results",
                "max_summary_length": 2000
            }
        }
    ]
}

server = SMCP(
    name="My Server",
    hooks_enabled=True,
    hook_config=hook_config
)

配置优先级

当使用多种配置方法时,将遵循以下优先级:

  1. **hook_config**(最高优先级)

  2. 钩子类型

  3. **hooks_enabled**(最低优先级)

请提供需要翻译的具体英文文本,我将为您提供准确、流畅的中文翻译。

# hook_config takes precedence over hook_type
server = SMCP(
    name="My Server",
    hooks_enabled=True,
    hook_type="SummarizationHook",  # Ignored
    hook_config=custom_config       # Used
)

最佳实践

服务器模式

  • 在生产服务器上使用 --hooks-enabled

  • 根据使用场景选择适当的钩子类型

  • 针对复杂需求使用自定义配置

  • 监控钩子性能并调整阈值

标准输入输出模式

  • 利用默认钩子行为优化桌面端人工智能

  • 仅在钩子引发问题时使用 --no-hooks

  • 请考虑使用 FileSaveHook 满足数据归档需求

  • 在部署之前测试挂钩配置

性能注意事项

  • SummarizationHook:增加处理时间,但减小输出大小

  • FileSaveHook:处理开销极小,适合归档使用

  • 阈值:设置适当的输出长度阈值

  • 块大小:平衡处理效率与上下文保留

故障排除

常见问题

钩子未触发:

  • 检查输出长度阈值

  • 验证钩子配置语法

  • 确保已启用钩子

性能问题:

  • 调整块大小

  • 提高阈值

  • 使用特定工具的配置

配置错误:

  • 验证 JSON 语法

  • 检查参数名称

  • 验证钩子类型

调试模式

启用详细日志记录以进行故障排除:

# Server mode
tooluniverse-smcp-server --hooks-enabled --verbose --port 8000

# Stdio mode
tooluniverse-smcp-stdio --hook-type SummarizationHook --verbose

参见