// app/chat-direct/page.tsx - 直接访问版本(跳过认证) 'use client'; import React, { useState, useRef, useEffect } from 'react'; import { mcpService } from '../../services/mcp-real'; export default function DirectChatPage() { const [messages, setMessages] = useState([]); const [input, setInput] = useState(''); const [isLoading, setIsLoading] = useState(false); const [tools, setTools] = useState([]); const messagesEndRef = useRef(null); useEffect(() => { loadTools(); }, []); useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); }, [messages]); const loadTools = async () => { try { const availableTools = await mcpService.getTools(); setTools(availableTools); console.log('Available tools:', availableTools); } catch (error) { console.error('Failed to load tools:', error); } }; const handleSend = async () => { if (!input.trim() || isLoading) return; const userMessage = { id: Date.now().toString(), role: 'user', content: input, timestamp: new Date(), }; setMessages(prev => [...prev, userMessage]); setInput(''); setIsLoading(true); try { const assistantMessage = { id: (Date.now() + 1).toString(), role: 'assistant', content: '', timestamp: new Date(), isStreaming: true, }; setMessages(prev => [...prev, assistantMessage]); // 尝试流式响应 let fullContent = ''; try { for await (const chunk of mcpService.streamMessage(userMessage.content)) { fullContent += chunk; setMessages(prev => prev.map(msg => msg.id === assistantMessage.id ? { ...msg, content: fullContent } : msg ) ); } } catch (streamError) { console.log('Stream failed, trying non-stream:', streamError); // 如果流式失败,尝试普通请求 const response = await mcpService.sendMessage(userMessage.content); fullContent = response; } // 更新最终消息 setMessages(prev => prev.map(msg => msg.id === assistantMessage.id ? { ...msg, content: fullContent || '没有收到回复', isStreaming: false } : msg ) ); } catch (error) { console.error('Send message error:', error); setMessages(prev => [ ...prev, { id: Date.now().toString(), role: 'system', content: `错误: ${error.message}`, timestamp: new Date(), }, ]); } finally { setIsLoading(false); } }; return (
{/* 左侧工具栏 */}

MCP 工具

{tools.map(tool => (
{ setInput(`使用工具: ${tool.name}`); }} >
{tool.name}
{tool.description}
))}
Max 用户
完全访问权限
{/* 主聊天区域 */}

AI Chat (Direct Access)

MCP 服务直连 - 无需认证

{messages.length === 0 && (

开始对话吧!试试这些:

)} {messages.map(msg => (
{msg.content}
{msg.timestamp.toLocaleTimeString()}
))}
setInput(e.target.value)} onKeyPress={e => e.key === 'Enter' && !e.shiftKey && handleSend()} disabled={isLoading} placeholder="输入消息... (回车发送)" className="flex-1 px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" />
提示:直接输入问题,或点击左侧工具名称快速使用
); }