import { useMemo } from "react"; import { useConsole } from "../../context"; import { Bar } from "../../components/ui"; import { ChatList } from "../../components/chat/Chat"; import { traceEntryToChatMessage, type ChatMessage } from "../../components/chat/mapTrace"; export default function TracePanel() { const ctx = useConsole(); const messages = useMemo(() => { const t = ctx.currentTask; const head: ChatMessage[] = t && t.prompt ? [{ id: "task-prompt", role: "user", text: t.prompt }] : []; const pool = ctx.traceKind ? ctx.traceEntries.filter((e) => e.kind === ctx.traceKind) : ctx.traceEntries; const body = pool.map((e, i) => traceEntryToChatMessage(e, i)); const tail: ChatMessage[] = ctx.traceDone ? [{ id: "trace-done", role: "status", text: "链路已结束(" + ctx.traceDone + ")" }] : []; return [...head, ...body, ...tail]; }, [ctx.currentTask, ctx.traceEntries, ctx.traceKind, ctx.traceDone]); return ( <>
实时链路
{ctx.traceMsg} {ctx.traceNote ?
{ctx.traceNote}
: null}
对话时间线:首条是本任务 prompt(用户);助手回复来自 message 条目,命令/文件/工具/调用是工具评论框,计划/思考/子代理开始结束是时间线上的状态文字。流式进行中时新条目实时追加;你在底部时自动跟随,往上翻时暂停跟随,点“回到最新”恢复。
); }