这个模块解决什么问题?
AI 长任务只显示一个进度条时,用户不知道完成了什么、正在做什么、卡在哪里,也无法在关键节点介入。
Agent Execution Timeline一个展示 AI Agent 长任务步骤、状态和人工介入点的时间线模块。
确认目标和输出格式
查找并整理相关资料
正在生成可检查的初稿
等待前一步完成
"use client";
export type TimelineStepStatus = "pending" | "current" | "waiting" | "completed" | "failed";
export type TimelineStep = {
detail?: string;
id: string;
label: string;
status: TimelineStepStatus;
};
export type AgentExecutionTimelineProps = {
onContinue?: () => void;
onStop?: () => void;
steps: TimelineStep[];
};
export function getCurrentTimelineStep(steps: TimelineStep[]) {
return steps.find(({ status }) => status === "current" || status === "waiting");
}
const timelineStatusLabels: Record<TimelineStepStatus, string> = {
completed: "已完成",
current: "执行中",
failed: "执行失败",
pending: "等待开始",
waiting: "等待你的输入",
};
export function AgentExecutionTimeline({ onContinue, onStop, steps }: AgentExecutionTimelineProps) {
const current = getCurrentTimelineStep(steps);
return (
<section aria-label="AI 执行时间线" className="execution-timeline-block">
<header><div><span>长任务</span><strong>执行时间线</strong></div><span>{current ? timelineStatusLabels[current.status] : "任务完成"}</span></header>
<ol>
{steps.map((step) => (
<li data-status={step.status} key={step.id}>
<span aria-hidden="true" />
<div><strong>{step.label}</strong><p>{step.detail}</p></div>
<small>{timelineStatusLabels[step.status]}</small>
</li>
))}
</ol>
{current?.status === "waiting" ? <button onClick={onContinue} type="button">继续执行</button> : null}
{current?.status === "current" ? <button onClick={onStop} type="button">停止任务</button> : null}
</section>
);
}
AI 长任务只显示一个进度条时,用户不知道完成了什么、正在做什么、卡在哪里,也无法在关键节点介入。
操作上方真实 Demo,确认状态和交互符合产品需要。
只有真实存在的源码、Prompt 和参数文件才会出现在代码面板。
保留许可证,并根据自己的设计系统调整参数和样式。