UI Widgets

UI 控件

AgentKit 提供 Qt Widgets 控件,便于把 Agent 能力嵌入桌面应用。

核心控件

类名 说明
AgentChatPanel 聊天面板,包含历史消息、输入框、发送、停止、清空按钮。
ModelConfigWidget 模型配置面板。
ToolCallTraceView 工具调用 Trace 表格。
ApprovalDialog 工具审批弹窗。

AgentChatPanel 方法和信号

接口 说明 参数 返回值
appendUserMessage(const QString& text) 添加用户消息。 text: 消息内容。
appendSystemMessage(const QString& text) 添加系统消息。 text: 消息内容。
beginAssistantMessage() 开始助手消息块。
appendDelta(const QString& text) 追加流式片段。 text: 文本片段。
finishAssistantMessage() 结束助手消息块。
setRunning(bool running) 设置运行状态,控制按钮状态。 running: 是否运行中。
sendRequested(const QString& text) 用户点击发送。 text: 输入内容。 signal
stopRequested() 用户点击停止。 signal
clearRequested() 用户点击清空。 signal

ModelConfigWidget 方法

方法 说明 参数 返回值
config() const 获取模型配置。 ModelConfig
setConfig(const ModelConfig& config) 设置模型配置。 config: 模型配置。
provider() const 获取当前 provider,返回 mockopenaideepseek QString
useOpenAI() const 判断当前是否使用 OpenAI-compatible provider。 bool
useDeepSeek() const 判断当前是否使用 DeepSeek provider。 bool
configChanged() 配置变化通知。 signal

ToolCallTraceView 方法

方法 说明 参数 返回值
addTrace(const ToolCallTrace& trace) 添加一条工具调用记录。 trace: Trace 对象。
clearTraces() 清空记录。

ApprovalDialog 方法

方法 说明 参数 返回值
ApprovalDialog(const ApprovalRequest& request, QWidget* parent) 构造审批弹窗。 request: 审批对象。parent: 父控件。 对象实例
ask(const ApprovalRequest& request, QWidget* parent) 显示审批弹窗并返回结果。 request: 审批对象。parent: 父控件。 bool

示例:嵌入聊天面板和 Trace 表格

auto* chat = new AgentChatPanel(this);
auto* traceView = new ToolCallTraceView(this);
auto* executor = new AgentExecutor(this);

executor->setModel(model);
executor->setToolRegistry(registry);

connect(chat, &AgentChatPanel::sendRequested, this, [chat, executor](const QString& text) {
    chat->appendUserMessage(text);
    chat->beginAssistantMessage();
    chat->setRunning(true);
    executor->run(text);
});

connect(chat, &AgentChatPanel::stopRequested, executor, &AgentExecutor::cancel);

connect(executor, &AgentExecutor::assistantDelta, chat, &AgentChatPanel::appendDelta);
connect(executor, &AgentExecutor::assistantFinished, this, [chat](const QString&) {
    chat->finishAssistantMessage();
    chat->setRunning(false);
});
connect(executor, &AgentExecutor::traceAdded, traceView, &ToolCallTraceView::addTrace);