Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1101,6 +1101,74 @@
</div>
</div>
</el-tab-pane>
@* AI 对话标签页 *@
<el-tab-pane label="AI 对话" name="fourth">
<div class="tabPane-container" style="height: calc(100vh - 160px); display: flex; flex-direction: column;">
@* AI 对话头部工具栏 *@
<div style="padding: 10px 16px; border-bottom: 1px solid #ebeef5; display: flex; align-items: center; gap: 12px;">
<span style="font-size: 14px; color: #606266;">AI 模型:</span>
<el-select v-model="aiChatModelId" placeholder="使用默认模型" size="small" style="width: 200px;" clearable>
<el-option v-for="m in aiChatModelList" :key="m.id" :label="m.alias" :value="m.id"></el-option>
</el-select>
<el-button size="small" type="info" plain @@click="clearAiChat">清空对话</el-button>
<span style="font-size: 12px; color: #909399; margin-left: auto;">💡 通过自然语言描述你的任务,AI 将自动匹配或创建智能体组来执行</span>
</div>
@* 消息列表区域 *@
<div ref="aiChatMessages" class="aiChatMessagesList" style="flex: 1; overflow-y: auto; padding: 16px;">
<div v-if="aiChatMessages.length === 0" style="text-align: center; color: #909399; margin-top: 100px;">
<i class="el-icon-chat-line-round" style="font-size: 48px;"></i>
<p style="margin-top: 12px; font-size: 14px;">和 AI 对话来启动 Agents 任务</p>
<p style="font-size: 12px;">例如:帮我分析一段代码,或者写一篇文章</p>
</div>
<template v-else>
<div v-for="(msg, idx) in aiChatMessages" :key="idx"
:class="['aiChatMessage', msg.role === 'user' ? 'aiChatMessage-user' : 'aiChatMessage-ai']">
<div class="aiChatMessage-avatar">
<img v-if="msg.role === 'user'" src="/images/AgentsManager/avatar/avatar1.png" class="upperHalfbox_avatar" style="width:32px;height:32px;" />
<div v-else class="df-wn flex-ac flex-jc" style="width:32px;height:32px;background:#409eff;border-radius:50%;color:#fff;font-size:14px;">AI</div>
</div>
<div class="aiChatMessage-bubble">
<task-html-renderer :content="msg.contentHtml || msg.content" />
@* 操作按钮区:建议创建组 *@
<div v-if="msg.role === 'assistant' && msg.responseType === 1 && msg.suggestedGroup && !msg.confirmed" class="aiChatAction" style="margin-top: 10px; display: flex; gap: 8px;">
<el-button type="primary" size="mini" :loading="aiChatConfirming" @@click="confirmCreateAndRunGroup(msg, idx)">✅ 确认创建并运行</el-button>
<el-button size="mini" @@click="cancelSuggestion(idx)">❌ 取消</el-button>
</div>
@* 操作按钮区:建议运行已有组 *@
<div v-if="msg.role === 'assistant' && msg.responseType === 2 && !msg.confirmed" class="aiChatAction" style="margin-top: 10px; display: flex; gap: 8px;">
<el-button type="primary" size="mini" :loading="aiChatConfirming" @@click="confirmRunExistingGroup(msg, idx)">▶️ 确认运行</el-button>
<el-button size="mini" @@click="cancelSuggestion(idx)">❌ 取消</el-button>
</div>
</div>
</div>
<div v-if="aiChatLoading" class="aiChatMessage aiChatMessage-ai">
<div class="aiChatMessage-avatar">
<div class="df-wn flex-ac flex-jc" style="width:32px;height:32px;background:#409eff;border-radius:50%;color:#fff;font-size:14px;">AI</div>
</div>
<div class="aiChatMessage-bubble aiChatMessage-loading">
<span></span><span></span><span></span>
</div>
</div>
</template>
</div>
@* 输入区域 *@
<div style="padding: 12px 16px; border-top: 1px solid #ebeef5; display: flex; gap: 10px; align-items: flex-end;">
<el-input
type="textarea"
v-model="aiChatInput"
:rows="3"
placeholder="描述你想完成的任务,AI 将自动为你匹配或创建 Agents 组..."
resize="none"
@@keydown.native.ctrl.enter="sendAiChatMessage"
style="flex: 1;">
</el-input>
<div>
<el-button type="primary" :loading="aiChatLoading" :disabled="!aiChatInput.trim()" @@click="sendAiChatMessage" style="height: 72px; width: 80px;">发送</el-button>
<div style="text-align: center; font-size: 11px; color: #c0c4cc; margin-top: 4px;">Ctrl+Enter</div>
</div>
</div>
</div>
</el-tab-pane>
</el-tabs>

@* 抽屉 新增|编辑 智能体 540px *@
Expand Down
Loading
Loading