组件/Chain of Thought

Chain of Thought

多步推理与工具调用的时间线,进行中的步骤自动跟随输出。

Verified自 0.3.9

Chain of Thought

基础用法

Chain of Thought

示例加载中...

交互契约

  • 展开态由组件自己持有,初值取 defaultOpen默认 true,与 TxReasoningDisclosure 相反)。同为非受控:之后改 defaultOpen 不生效。
  • 点击头部切换并派发 toggle,参数是切换之后的状态。
  • 头部图标只在 streaming 为真存在 status === 'active' 的步骤时换成思考球;只设 streaming 而没有活跃步骤不会有动效。
  • 头部计数直接取 steps.length,不区分状态。
  • 每步按 status 呈现三种形态:active(旋转指示)、doneerrorkind 区分 thinkingtool,用于图标与排版。
  • 任一步骤的 body 长度变化都会把活跃步骤的正文滚到底部——这是按正文长度串联监听的,所以流式追加文本时会持续跟随。
  • body 可选;未提供的步骤只显示标题,适合表达纯工具调用。
  • 头部是原生 <button>,带 aria-expandedaria-controls;步骤列表是 <ol>,序号来自渲染顺序。

API

Props

属性名类型默认值说明
stepsAiChainStep[]步骤列表;AiChainStep{ id, kind: 'thinking' | 'tool', title, body?, status: 'active' | 'done' | 'error' }。必填。
streamingbooleanfalse是否仍在输出;需与活跃步骤同时成立才会显示思考球。
defaultOpenbooleantrue初始是否展开。仅在挂载时读取一次。
labelstring'Chain of thought'头部文案。

Events

事件名参数说明
toggle(open: boolean)用户点击头部时派发,携带切换后的展开状态。

Slots

TxChainOfThought 不暴露插槽。步骤的呈现由 kindstatus 决定;需要自定义渲染时请自行组合 TxReasoningDisclosureTxToolCallCard

最佳实践

  • id 用稳定标识而非数组下标,否则步骤追加时会整列重建、丢掉滚动位置。
  • 同一时刻最多保留一个 active 步骤。多个活跃步骤在视觉上无法区分先后,自动滚动也只会跟随其中之一。
  • 步骤结束时把 statusactive 改成 doneerror,否则即使流式已停,旋转指示仍会留在界面上。
  • 工具步骤的 title 写成可读的调用签名(read_file(src/main.ts)),比只写工具名更有信息量。
  • 中文界面记得覆盖 label