跳到主要内容

组件参考

@agentskit/react@agentskit/ink 中全部无头组件。组件会发出 data-ak-* 属性(React)或使用 Ink 终端原语(Ink)——不包含任何视觉样式主张。

React 组件

@agentskit/react 导入:

import {
ChatContainer,
Message,
InputBar,
Markdown,
CodeBlock,
ToolCallView,
ThinkingIndicator,
} from '@agentskit/react'

ChatContainer

可滚动容器。挂载 MutationObserver,子节点变化时自动滚动到底部。

<ChatContainer className="my-chat">
{/* messages, indicators */}
</ChatContainer>
属性类型默认值说明
childrenReactNode必填。消息列表及其他内容。
classNamestring额外 CSS 类。

发出:data-ak-chat-container


Message

渲染 chat.messages 中的单条 Message

<Message
message={msg}
avatar={<img src={userAvatar} alt="User" />}
actions={<button onClick={() => copy(msg.content)}>Copy</button>}
/>
属性类型说明
messageMessageType必填。要渲染的消息。
avatarReactNode气泡旁可选头像。
actionsReactNode内容下方可选操作行。

发出:data-ak-messagedata-ak-roledata-ak-statusdata-ak-contentdata-ak-avatardata-ak-actions


InputBar

连接 ChatReturn 的文本区与发送按钮。Enter 发送,Shift+Enter 换行。

<InputBar
chat={chat}
placeholder="Ask anything..."
disabled={false}
/>
属性类型默认值说明
chatChatReturn必填。useChat 的返回值。
placeholderstring'Type a message...'文本区占位符。
disabledbooleanfalse禁用输入与按钮。

发出:data-ak-input-bardata-ak-inputdata-ak-send


Markdown

Markdown 内容的轻量包装。可在内部加入自有渲染器(例如 react-markdown),或整体替换该组件。

<Markdown content={msg.content} streaming={msg.status === 'streaming'} />
属性类型默认值说明
contentstring必填。要显示的 Markdown 字符串。
streamingbooleanfalse流式时为 data-ak-streaming="true"

发出:data-ak-markdowndata-ak-streaming


CodeBlock

渲染代码片段,可选复制按钮。

<CodeBlock code="npm install @agentskit/react" language="bash" copyable />
属性类型默认值说明
codestring必填。要显示的源码。
languagestring语言提示(如 'tsx''bash')。
copyablebooleanfalse显示复制到剪贴板的按钮。

发出:data-ak-code-blockdata-ak-languagedata-ak-copy


ToolCallView

单条工具调用的可展开视图。点击工具名可切换参数与结果的显示。

{msg.toolCalls?.map(tc => (
<ToolCallView key={tc.id} toolCall={tc} />
))}
属性类型说明
toolCallToolCall必填。来自 @agentskit/core 的工具调用对象。

发出:data-ak-tool-calldata-ak-tool-statusdata-ak-tool-toggledata-ak-tool-detailsdata-ak-tool-argsdata-ak-tool-result


ThinkingIndicator

三点动画与标签。visiblefalse 时不渲染。

<ThinkingIndicator visible={chat.status === 'streaming'} label="Thinking..." />
属性类型默认值说明
visibleboolean必填。显示或隐藏指示器。
labelstring'Thinking...'点旁可访问的标签。

发出:data-ak-thinkingdata-ak-thinking-dotsdata-ak-thinking-label


Ink 组件

@agentskit/ink 导入:

import {
ChatContainer,
Message,
InputBar,
ToolCallView,
ThinkingIndicator,
} from '@agentskit/ink'

ChatContainer(Ink)

用 Ink 的 <Box flexDirection="column" gap={1}> 包裹子节点。

<ChatContainer>
{chat.messages.map(msg => <Message key={msg.id} message={msg} />)}
</ChatContainer>
属性类型说明
childrenReactNode必填。

Message(Ink)

按角色使用终端色显示角色标签,下方为消息内容。

<Message message={msg} />
属性类型说明
messageMessageType必填。

角色颜色:assistant → 青色,user → 绿色,system → 黄色,tool → 洋红。


InputBar(Ink)

通过 Ink 的 useInput 捕获键盘。Enter 发送,Backspace/Delete 删除。流式输出时禁用。

<InputBar chat={chat} placeholder="Type and press Enter..." />
属性类型默认值说明
chatChatReturn必填。
placeholderstring'Type a message...'显示在输入行上方。
disabledbooleanfalse禁止输入。

ToolCallView(Ink)

圆角边框框住工具名、状态,以及可选的参数与结果。

<ToolCallView toolCall={tc} expanded />
属性类型默认值说明
toolCallToolCall必填。
expandedbooleanfalse内联显示参数与结果。

ThinkingIndicator(Ink)

单行黄色文本。visiblefalse 时不渲染。

<ThinkingIndicator visible={chat.status === 'streaming'} label="Thinking..." />
属性类型默认值说明
visibleboolean必填。
labelstring'Thinking...'显示的文本。

组件可用性

组件@agentskit/react@agentskit/ink
ChatContainer
Message
InputBar
ToolCallView
ThinkingIndicator
Markdown
CodeBlock

相关