import { ApartmentOutlined, AppstoreOutlined, BgColorsOutlined, CodeOutlined, DatabaseOutlined, DownOutlined, FileTextOutlined, LoginOutlined, PaperClipOutlined, RobotOutlined, RocketOutlined, SendOutlined, ThunderboltOutlined, } from "@ant-design/icons"; import { useRef, useState } from "react"; import WorkspacePageShell from "../../components/WorkspacePageShell"; import type { WebGenerationPreviewTask } from "../../types"; interface AgentPageProps { tasks: WebGenerationPreviewTask[]; isAuthenticated: boolean; onCreateTask: (input: { title: string; type: WebGenerationPreviewTask["type"]; prompt: string; }) => Promise; onRequireLogin: (input: { title: string; type: WebGenerationPreviewTask["type"]; prompt: string; }) => void; onOpenLogin: () => void; } const agentModes = [ { id: "task", label: "任务拆解", icon: , placeholder: "拆解「新品发布会全流程」", }, { id: "workflow", label: "流程编排", icon: , placeholder: "规划「内容生产自动化链路」", }, { id: "data", label: "数据分析", icon: , placeholder: "分析「本周转化异常原因」", }, { id: "code", label: "代码执行", icon: , placeholder: "生成「落地页 A/B 测试脚本」", }, { id: "content", label: "内容生成", icon: , placeholder: "创作「品牌短片分镜脚本」", }, { id: "agent", label: "智能体编排", icon: , placeholder: "启动「多 Agent 调研与交付」", }, ]; const quickStarts = ["「新品发布」全链路运营", "「销售日报」自动分析", "「竞品监控」每周报告"]; function getTaskSourceLabel(task: WebGenerationPreviewTask): string | null { if (task.source === "server") return "正式"; if (task.source === "preview") return "预览"; if (task.source === "mock-fallback") return "示例"; return null; } function AgentPage({ tasks, isAuthenticated, onCreateTask, onRequireLogin, onOpenLogin, }: AgentPageProps) { const composerRef = useRef(null); const [activeMode, setActiveMode] = useState(agentModes[1].id); const [prompt, setPrompt] = useState("让 Omni Agent 帮我规划「新品发布会全流程」"); const [isRunning, setIsRunning] = useState(false); const [notice, setNotice] = useState("选择一个 Agent 模式,输入目标后即可开始。"); const selectedMode = agentModes.find((item) => item.id === activeMode) ?? agentModes[0]; const recentTasks = tasks.slice(0, 3); const focusComposer = () => { composerRef.current?.focus(); }; const handleQuickStart = (value: string) => { setPrompt(`让 Omni Agent 帮我规划${value}`); setNotice("已载入快速启动模板,可继续补充目标、资料或约束。"); window.requestAnimationFrame(focusComposer); }; const handleRun = async () => { const trimmedPrompt = prompt.trim(); if (!trimmedPrompt || isRunning) { setNotice(trimmedPrompt ? "当前 Agent 正在创建任务。" : "先输入一个目标,Agent 会自动拆解任务。"); return; } const taskInput = { title: `${selectedMode.label} Agent`, type: "agent" as const, prompt: trimmedPrompt, }; if (!isAuthenticated) { onRequireLogin(taskInput); setNotice("登录后即可运行 Agent,并保存执行记录。"); return; } setIsRunning(true); setNotice("正在拆解目标、选择工具并创建执行队列..."); try { await onCreateTask(taskInput); setNotice("Agent 任务已加入队列,执行记录会同步到最近运行。"); } catch (error) { setNotice(error instanceof Error ? error.message : "Agent 任务创建失败,请稍后重试。"); } finally { setIsRunning(false); } }; return (

想法一闪 任务即成

{agentModes.map((mode) => ( ))}