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。
参数
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
OpenArgs | bool | false | 参数区初始展开。 |
OpenResult | bool | false | 结果区初始展开。 |
Still | bool | false | 停止执行中动画;系统减少动画时也自动静止。 |
状态
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 结构校验提示。

