运行状态

每一轮的第一条回答顶部默认有一行状态,显示这一轮进行到哪里、用了多久,可以配置隐藏。

run-status.tsx
import { Chatkit, useChatRuntime } from '@volcengine/chatkit';
import { createMockAdapter } from '@volcengine/chatkit/adapters/mock';
import '@volcengine/chatkit/styles.css';

const adapter = createMockAdapter({});

// 状态行:「正在思考 → 已处理 · 耗时 → 已完成 · 耗时」。完成后收起执行过程,只留最终回答,点状态行展开回看。
// 这里把默认值写出来只为说明;耗时由运行时自己记,不需要传。
export default function RunStatus() {
  const runtime = useChatRuntime({ sessionId: 'run-status', adapter });
  if (!runtime) return null;
  return (
    <Chatkit
      runtime={runtime}
      settings={{
        runStatus: { visible: true, collapseOnComplete: true, longWaitThresholdMs: 15_000 },
        recommendations: ['帮我查一下 chatkit 怎么接入'],
      }}
    />
  );
}
完成后收起执行过程,只留最终回答;点状态行展开回看新窗口打开

各阶段显示什么

界面把思考和工具调用视为执行过程。收起时,每条助手消息中最后一个思考或工具片段之前的正文也被隐藏,之后的正文保留;业务数据卡片仍显示。这是按片段位置划分的显示规则,不会分析文字语义来判断哪一段是最终结论。

阶段状态行执行过程
发出、还没有产出正在思考(流光);等太久换成等待模型响应—
运行中已处理 · 耗时(每秒更新)展开
完成已完成 · 总耗时,可点击收起,只留最终回答;点击展开回看
停止 / 失败已中断 / 执行失败固定展开,保留现场
  • 只有正文的一轮没有可收起的内容,状态行只显示阶段和耗时,不能点。
  • 展开状态按轮次记,列表重绘、滚动后保持用户的选择。

用法

<Chatkit
  sessions={sessions}
  settings={{ runStatus: { collapseOnComplete: false, longWaitThresholdMs: 30000 } }}
/>

配置项

配置项类型默认说明
settings.runStatus.visiblebooleantrue是否显示状态行。关掉后执行过程也不再随它收起。
settings.runStatus.collapseOnCompletebooleantrue完成后是否收起这一轮的执行过程,只留最终回答。没有设置时,`reasoning.defaultExpanded` 打开则不收起。
settings.runStatus.longWaitThresholdMsnumber15000迟迟没有首个产出时,把「正在思考」换成「等待模型响应」的等待阈值(毫秒);设为 0 关闭这个提示。
  • collapseOnComplete: false:状态行照常显示阶段和耗时,执行过程始终可见,状态行不能点。
  • visible: false:不显示状态行,执行过程也不再随它收起;停下的回答在下方标「已停止」。

换成自己的显示

状态行使用内置类型 chatkit.run-status,可以通过 renderers.parts 替换显示:

<Chatkit
  sessions={sessions}
  renderers={{
    parts: {
      // 阶段与耗时从 run 里读
      'chatkit.run-status': ({ run }) => <MyRunStatus status={run?.status} startedAt={run?.createdAt} />,
    },
  }}
/>

登记成 null 表示不显示。自己的状态行不提供展开入口时,把 collapseOnComplete 关掉。

说明

  • 耗时不需要业务方传:起点是用户发出的时刻,终点是这一轮结束的时刻。
  • 等待首个产出的提示阈值默认 15 秒;longWaitThresholdMs: 0 关闭长等待提示,不会设置请求超时或自动重试。
  • 从历史恢复时,缺少运行记录通常显示「已完成」;消息本身标了失败或停止时仍显示对应状态。缺少可信的起止时间时不显示耗时,不能用页面加载时间补算。
  • 连接中断或恢复中可能显示连接提示与恢复按钮;停止请求后区分正在停止、未确认与最终中断。隐藏或替换状态行也会隐藏这些内置提示,业务界面需要自行承接。
  • 耗时与一轮的结论怎么算不能定制,见不能定制的部分。