/** * 渲染单条消息 * - user 消息:简单文本 * - assistant 消息:渲染 steps 流(thinking / code / tool_use / result / error) */ export default function MessageItem({ message }) { if (message.role === "user") { return (
{message.content}
); } // assistant return (
{message.steps.map((step, i) => ( ))} {!message.done && message.steps.length === 0 && ( Agent is thinking… )}
); } function StepBlock({ step }) { switch (step.type) { case "thinking": return (
💭 Reasoning
{step.content}
); case "code": return (
{step.lang}
{step.content}
); case "tool_use": return (
🔧 {step.tool} {step.content?.slice(0, 80)}…
); case "observation": return (
📊 Observation
{step.content}
); case "result": return (
✅ Result
{step.content}
); case "error": return (
❌ Error
{step.content}
); default: return null; } }