fix(tools): fix OpenClaw connection test and multimodal format compatibility

- Use safe .get() for server URL to avoid KeyError
- Support both api_key and token in connection test auth
- Add OpenAI/Volcano image format (image_url) support
- Add aiohttp import in _test_openclaw_connection
This commit is contained in:
miao
2026-04-07 13:58:38 +08:00
parent e298b38de9
commit 562ca6c1f1
3 changed files with 14 additions and 5 deletions

View File

@@ -642,7 +642,6 @@ class AgentRunService:
logger.info(f"处理了 {len(processed_files)} 个文件provider={provider}")
#================= 为 OpenClaw 工具注入运行时上下文==========
for t in tools:
logger.info(f"检查工具: {type(t).__name__}, has_tool_instance={hasattr(t, 'tool_instance')}, is_openclaw={getattr(getattr(t, 'tool_instance', None), '_is_openclaw', 'N/A')}")
if hasattr(t, 'tool_instance') and hasattr(t.tool_instance, '_is_openclaw'):
if t.tool_instance._is_openclaw:
t.tool_instance._user_id = user_id or "anonymous"

View File

@@ -358,11 +358,15 @@ class ToolService:
self, custom_config: CustomToolConfig, schema: dict
) -> Dict[str, Any]:
"""测试 OpenClaw 连接"""
import aiohttp
try:
info = schema.get("info", {})
servers = schema.get("servers", [])
base_url = servers[0]["url"] if servers else ""
token = (custom_config.auth_config or {}).get("token", "")
base_url = servers[0].get("url", "") if servers else ""
if not base_url:
return {"success": False, "message": "OpenClaw 未配置 server URL"}
auth = custom_config.auth_config or {}
token = auth.get("api_key") or auth.get("token") or ""
agent_id = info.get("x-openclaw-agent-id", "main")
model = info.get("x-openclaw-default-model", "openclaw")