成本
这页写给管理员:怎么在「成本」页回答「谁花了多少、花在哪个会话、哪台设备」,以及这些数字的口径和盲区。
同一页下半部分的「预算(超限开关)」写在预算。员工自己在本机看花费(/cost、本地账本)写在配额与成本控制。
数字来源只有一个:员工端上报的用量账本。不是模型厂商的账单,也不经过企业后端代理模型流量。
联动:数据从哪来、什么时候到
成本页是只读的,没有「配了之后员工那边会怎样」。反过来,这里写员工那边发生了什么、管理台什么时候能看到。
| 员工端发生了什么 | 管理台什么时候看到 | 上报失败时 | 员工看到什么 |
|---|---|---|---|
| 每一轮对话结束 | 本会话累计用量立即推一次,几秒内可见 | 5xx / 网络错误:落盘到本机,之后重放;401:不落盘,等重新登录 | 无 |
| 会话结束 | 再推一次最终值 | 同上 | 无 |
员工开了 no-telemetry / essential-traffic | 看不到,这台设备不再上报 | —— | 无 |
| 员工没登录或凭据失效 | 看不到 | 之前落盘的记录,登录后补发 | 状态栏提示重新登录 |
- 一个会话一行:按(设备,会话)去重,同一会话每次上报覆盖上一次,不累加。所以会话进行中看到的数字会变大,最终停在会话结束时的值。
- 鉴权:
POST /api/v1/usage/ledger,设备凭据。账本里的「人」由服务端从设备凭据取,客户端改不了,是强归因。 - 单条上限 16 KiB,超过 413。
出处:packages/core/src/telemetry/usage-ledger-remote.ts、usage-ledger-entry.ts;agent-backend: backend/app/modules/cost/。
在管理台里操作
页面在左侧菜单「成本」。
顶部四张卡片
| 卡片 | 含义 |
|---|---|
| 本周期成本(2026-10) | 「按设备看用量」所选周期内 cost_usd 合计,含辅助调用 |
| 本周期会话数 | 去重后的会话数。为 0 通常说明账本通道没接上,不是没人用 |
| 其中辅助调用 | 已经包含在上面的成本里,不要两处相加 |
| 超限的层 | used ≥ limit 的生效预算有几层,其中几层是硬拦 |
页面顶部的蓝色说明框写的是本页最容易误读的几条口径,下文「字段说明」逐条展开。
按人看用量
右上角选 月 / 周 / 日。每个登录过的人一行:
| 列 | 含义 |
|---|---|
| 人 | 飞书姓名和 union_id。注册码设备合并为一行「未登录设备」,说明「注册码设备,没有绑人」 |
| 设备数 / 会话数 | 这个周期内有上报的 |
| cost_usd | 可以点列头排序 |
| side_cost_usd | 其中辅助调用 |
| prompt_total | 主循环输入 token |
| 最近上报 | —— |
| 操作 | 「会话明细」:这个人本周期的全部会话 |
从「用户」页点「用量」跳过来时只显示那一个人,点「取消人员筛选」恢复。
按人归属看的是上报那一刻设备绑的是谁。 设备换过人之后,旧会话仍算在原来的人头上。
按设备看用量
周期选择、「组织」筛选、「只看超预算」开关。每台设备一行:设备 ID(点击跳到设备页)、org / team、会话数、各项用量、最后上报,「下钻」列的「会话」打开这台设备的会话明细。
「只看超预算」按「是否有任意一层覆盖它的预算超限」筛,不按设备 > 团队 > 组织取一层。某台设备真正命中哪份预算,用预算区的「预览命中」或设备页的「生效配置」。
从设备页点「成本」跳过来时已按设备过滤,点「取消设备筛选」恢复。
会话明细
每个会话一行:session_id、会话时间、到达时间、model / provider(以及请求发往的 endpoint_host)、各项用量、app_version。
要看这个会话具体做了什么,拿 session_id 去「轨迹」页搜。
字段说明
| 字段 | 含义 | 容易误读的地方 |
|---|---|---|
| cost_usd | 会话累计成本(美元),含辅助调用 | 是客户端按价格表估算的,不是厂商账单 |
| side_cost_usd | 其中标题生成、子代理、分类器等辅助调用的部分 | 已含在 cost_usd 里;为 — 表示旧版客户端没上报这一项 |
| prompt_total | 主循环的输入 token 总数 | 不含辅助调用,所以 cost_usd ÷ prompt_total 不是单价 |
| cache_hit | 命中缓存的输入 token,括号里是命中率 | 分母是 prompt_total,不是请求数 |
| output | 输出 token | —— |
| 会话时间 | 最后一次上报时客户端记录的时间 | 周期按它划分,见下 |
| 到达 | 服务端收到最后一次上报的时间 | —— |
| endpoint_host | 请求实际发往的主机 | 走第三方中转或自建网关时,单价可能和官方不同。不要拿这类行去对官方账单 |
周期按 UTC 划分,一个会话算在它最后一次上报的那一天(或周、月)。跨 UTC 零点的会话整个计入后一天。
成本怎么估:客户端按各模型的定价表(区分输入、输出、缓存读、缓存写)乘 token 数。走网关、换模型、定价表过期,都会让估算和账单有偏差。
轨迹页的「成本」是另一份数
「轨迹」页上显示的成本来自轨迹上传,按轨迹聚合、没有设备归属,口径和本页不同。两边对不上时以本页为准。
能力边界(如实说)
1. 看不到的花费。 下列情况的花费不进账本:员工开了 no-telemetry 或 essential-traffic;没配 backend.url;没登录;员工用同一把 Key 在 sid-code 之外调用。成本页的合计只是下限。
2. 估算不是账单。 月底对账以厂商账单为准,本页用来回答「谁、哪个会话、相对多少」。
3. 只有三个固定周期。 当前日、当前 ISO 周、当前月,不能选历史周期或自定义时间范围,也没有导出。要做历史分析,直接查数据库的账本表。
4. 注册码设备不按人区分。 所有注册码设备合并在「未登录设备」一行,不能按人下钻,只能在「按设备看用量」里逐台看。
常见问题
会话数是 0,但明明有人在用
按顺序排查:员工是否配了 backend.url 并登录;sid-code auth status --verify 里「账本」通道是否 ✓、「待重放」是否在增长;员工是否开了 no-telemetry。
某个人的花费明显偏低
最常见的是这个人开了 no-telemetry,或者有一部分工作是在另一台没登录的设备上做的。看「按设备看用量」里他名下各台设备的「最后上报」。
会话进行中数字一直在变
正常。每轮结束都会覆盖上报一次本会话的累计值,会话结束时定格。
和厂商账单差得很多
先看会话明细里的 endpoint_host:走中转的会话单价可能不同。再看有没有员工绕开了 sid-code 或关了遥测。估算本身也会因为定价表滞后有偏差。