MujicaUI

Agent · #261

ToolCallCard 浅色主题渲染快照
浅色 · 渲染快照
ToolCallCard 深色主题渲染快照
深色 · 渲染快照

261 ToolCallCard 工具调用卡片

用途

显示一次工具调用:工具名、状态、耗时,参数与结果可折叠,JSON 自动格式化并高亮。

最小示例

call := agent.ToolCall{ID: "1", Name: "read_file", Args: "{\"path\":\"ledger.md\"}",
	Result: "{\"lines\":40}", State: agent.AgentDone, Duration: 420 * time.Millisecond}
view := func(c *ui.Context) {
	core.Use(c, core.Settings{})
	agent.ToolCallCard(c, call, agent.ToolCallCardOptions{OpenArgs: true})
}
ui.Render(view, 400, 300, 1)

签名:func ToolCallCard(c *ui.Context, call ToolCall, opts ToolCallCardOptions) ChoiceResult。call.Name 为空时 panic。

参数

字段类型默认值含义
OpenArgsboolfalse参数区初始展开。
OpenResultboolfalse结果区初始展开。
Stillboolfalse停止执行中动画;系统减少动画时也自动静止。

状态

  • ToolCall 字段:ID、Name、Args(JSON 或纯文本)、Result、Error(非空时替代结果并以错误色显示)、State、Duration。
  • AgentState:AgentPending、AgentPlanning、AgentRunning、AgentWaiting、AgentDone、AgentFailed、AgentSkipped,越界 panic。状态同时由图标形状和文字表达,不只靠颜色。
  • 仅完成或失败时显示耗时;合法 JSON 以两格缩进格式化,非 JSON 原样显示。
  • 结果超过 200 行时虚拟化,只构建可见行。

事件

  • Changed():用户展开或折叠参数、结果。

键盘操作

  • Tab 到“参数”“结果”折叠按钮,Enter / Space 展开或折叠。

限制

  • 展开状态保存在卡片元素上;在列表中请用稳定 Key 包裹每张卡片。
  • 高亮只区分关键字、字符串、数字和标点,不做 JSON 结构校验提示。