283 CostBreakdown 费用分解
用途
按模型、工具或步骤汇总调用次数、token 与费用,表格可排序,底部显示合计。
最小示例
var state feedback.CostBreakdownState
items := []feedback.CostItem{
{Model: "opus", Tool: "search", InputTokens: 1000, OutputTokens: 200, Cost: 0.30},
{Model: "haiku", Tool: "search", InputTokens: 4000, OutputTokens: 500, Cost: 0.05},
}
view := func(c *ui.Context) {
core.Use(c, core.Settings{})
feedback.CostBreakdown(c, &state, items, feedback.CostBreakdownOptions{GroupBy: feedback.CostByModel}).Element.Height(260)
}
ui.Render(view, 400, 300, 1)签名:func CostBreakdown(c *ui.Context, s *CostBreakdownState, items []CostItem, opts CostBreakdownOptions) DataTableView
参数
CostItem
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
| Model, Tool, Step | string | "" | 分组依据;为空归入“(未命名)”。 |
| InputTokens, OutputTokens | int | 0 | token 数;为负 panic。 |
| Cost | float64 | 0 | 费用;为负或非有限值 panic。 |
CostBreakdownOptions
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
| GroupBy | CostGroup | CostByModel | CostByModel、CostByTool、CostByStep。 |
| Currency | string | "$" | 金额前缀。 |
| Decimals | int | 0(即 2) | 金额小数位;为负 panic。 |
| Version | int | 0 | 原地修改数据时递增;新切片或长度变化自动刷新。 |
CostBreakdownState.Table 保存排序与选择。汇总只在 items 或分组方式变化时计算。给返回的 Element 一个高度。
状态
- 费用列含占比条与百分比,数字为等宽数字。
- 合计行为衬线“合计”、token 总数与加粗金额,朗读完整合计。
事件
- 同 DataTable:
Changed()、SortChanged()。
键盘操作
- 同 DataTable:↑/↓ 选择行,列标题可用键盘排序。
限制
- 金额以浮点汇总并按小数位显示,不做货币舍入规则。

