UI 控件

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);