diff --git a/public/lite/menubar-menu-en.webp b/public/lite/menubar-menu-en.webp index 2844e37..ffc92b9 100644 Binary files a/public/lite/menubar-menu-en.webp and b/public/lite/menubar-menu-en.webp differ diff --git a/public/lite/menubar-menu.webp b/public/lite/menubar-menu.webp index b53655e..e832385 100644 Binary files a/public/lite/menubar-menu.webp and b/public/lite/menubar-menu.webp differ diff --git a/public/lite/menubar.png b/public/lite/menubar.png index 093f4eb..8f79970 100644 Binary files a/public/lite/menubar.png and b/public/lite/menubar.png differ diff --git a/public/lite/overview-en.webp b/public/lite/overview-en.webp index 5fb7ae0..e301091 100644 Binary files a/public/lite/overview-en.webp and b/public/lite/overview-en.webp differ diff --git a/public/lite/overview.webp b/public/lite/overview.webp index 695f634..c2215d7 100644 Binary files a/public/lite/overview.webp and b/public/lite/overview.webp differ diff --git a/src/content/docs-lite/en/features.md b/src/content/docs-lite/en/features.md index 68bf11b..645970f 100644 --- a/src/content/docs-lite/en/features.md +++ b/src/content/docs-lite/en/features.md @@ -6,9 +6,9 @@ The main window has ten pages: Overview, Traffic, Clients, Keys, Upstreams, Rout ## Usage and cost -The Overview page covers the last 24 hours, 7 days, 30 days or a custom range on one screen of six cards: **Tokens**, **Cost**, **Cache hits**, **Requests**, **First token** and **Traffic**. Each card gives its figure and the change against the previous period of the same length. All but Cache hits carry a small chart of the period; hovering any chart shows the same point in time on every chart, and the value appears on the card under the pointer. **Cache hits** shows the hit rate, the net savings the cache brought, and how input was split between cache reads, uncached input and cache writes. **First token** charts the median and the 95th percentile of the time to first token, and stretches without requests are bridged with a faint dashed line. **Traffic** is what requests sent to their upstreams and received from them (see [Traffic and sessions](#traffic-and-sessions)), with upload and download charted separately. +The Overview page covers the last 24 hours, 7 days, 30 days, a custom range or a single day. Six metrics sit at the top: **Tokens**, **Cost**, **Requests**, **Cache hits**, **First token** and **Traffic**, each with its figure and the change against the previous period of the same length; the change is left out when the previous period has no records. The selected metric is drawn below as one large chart with axes: tokens, cost, requests and traffic as shaded areas, with failed requests and downloads as a thin second line; cache hits as the hit rate; first token as the median and the 95th percentile, with stretches without requests bridged by a faint dashed line. A period still in progress is dashed, and periods before request records begin are marked **Not recorded** instead of being drawn as zero. Hovering a period shows its values and the models that used the most. With **Cache hits** selected, the net savings the cache brought and the split of input between cache reads, uncached input and cache writes are listed as well; **Traffic** is what requests sent to their upstreams and received from them (see [Traffic and sessions](#traffic-and-sessions)). -A strip above the cards lists what needs attention: failed requests, tool calls that were cut off, upstreams that cannot be used (circuit open, credentials rejected or sign-in required), and unpriced requests, each with a link to the page that deals with it. It is hidden when there is nothing to list. Each line can be ignored and returns when that matter has news; the notice that request recording could not start and the banners for a lost connection or rejected configuration can be ignored as well, and **Show again** in Settings › General brings every ignored warning back. The table below the cards lists the requests, tokens, cost, cache hits, first token and generation speed by model, upstream or key (generation speed by model and by upstream only), and a row opens the matching requests in Traffic. In **Live**, the Tokens, Cost and Requests cards follow the last ten minutes, while the other cards, the strip and the table cover the last 24 hours. +Below the chart, **Distribution** shows the selected metric by model, upstream or key, and **Quotas and balances** lists the subscription windows and balances the upstreams report; it is hidden when no upstream reports any. **Past year** is a heatmap with one cell per day for tokens, cost or requests, with the total, daily average, busiest day and streak; clicking a day switches the overview to that day, and the heatmap stays in place. **Breakdown** at the bottom lists the requests, tokens, cost, cache hits, first token and generation speed by model, upstream or key (generation speed by model and by upstream only), and a row opens the matching requests in Traffic; Distribution and Breakdown follow the same choice of model, upstream or key. Failed requests, tool calls that were cut off, upstreams that cannot be used and models without a price go to the notices (see [Menu bar, system tray and notifications](#menu-bar-system-tray-and-notifications)) rather than the overview. The notice that request recording could not start and the banners for a lost connection or rejected configuration can be ignored, and **Show again** in Settings › General brings every ignored warning back. In **Live**, Tokens, Cost and Requests follow the last ten minutes, while the other metrics, Distribution and Breakdown cover the last 24 hours. Until a range has been chosen, the overview covers the last 24 hours. The cost figure states how much of it is estimated, for instance for a response that was cut off before it finished. Requests whose model has no price, and requests whose upstream reported no usage, are counted separately and never added in as zero. Prices come from price sheets: the default one follows LiteLLM's public prices and is refreshed once a day, and a custom one applies a multiplier and its own prices for particular models, as needed for a relay whose prices differ from the official ones. A subscription account such as a ChatGPT sign-in is priced from the price sheet like any other upstream, and an upstream such as a local model can be set to free. Each request's cost is fixed when the request finishes, and the request records the price sheet and the date of the prices it was costed with. @@ -125,4 +125,4 @@ On Windows the icon sits in the notification area. Hovering over it shows the ga On Linux the icon sits in the system tray. Clicking it opens the same menu, with the Today block and the quota bars written out as text as on Windows; its first item, Open ThinkWatch Lite, brings up the main window. -System notifications, native on macOS and Windows and sent through the desktop's notification service on Linux, report when the gateway stops forwarding or keeps restarting, the connection to a remote core drops, a subscription quota runs out, a sign-in expires or an upstream rejects its credential, a proxy cannot be reached, the configuration file fails validation, a tool call is cut off, a security rule records a match (see [Security](#security)), a key nears or reaches a daily, weekly or monthly usage limit, or suspicious content appears in a client's configuration. A new version found by the automatic check is listed among the notices, in grey, and announced the same way (see [Updates](/docs/lite/install#updates)). An unreachable upstream, which a fallback usually covers, is only listed in the app. Notices as a whole can be set to system notifications, in-app only, or off. Marking a notice as read stops the bell from counting it; the notice stays in the list until the problem behind it clears or the list is cleared. +System notifications, native on macOS and Windows and sent through the desktop's notification service on Linux, report when the gateway stops forwarding or keeps restarting, the connection to a remote core drops, a subscription quota runs out, a sign-in expires or an upstream rejects its credential, a proxy cannot be reached, the configuration file fails validation, a tool call is cut off, a security rule records a match (see [Security](#security)), a key nears or reaches a daily, weekly or monthly usage limit, or suspicious content appears in a client's configuration. A new version found by the automatic check is listed among the notices, in grey, and announced the same way (see [Updates](/docs/lite/install#updates)). Some are only listed in the app: an unreachable upstream, which a fallback usually covers; failed requests, gathered into one notice that lists the failed requests in Traffic when opened; and models without a price, one notice per model and upstream that opens Upstreams to set a price and clears once no request in the last 7 days is left unpriced. Notices as a whole can be set to system notifications, in-app only, or off. Marking a notice as read stops the bell from counting it; the notice stays in the list until the problem behind it clears or the list is cleared. diff --git a/src/content/docs-lite/en/overview.md b/src/content/docs-lite/en/overview.md index 6beed84..d461ec1 100644 --- a/src/content/docs-lite/en/overview.md +++ b/src/content/docs-lite/en/overview.md @@ -20,7 +20,7 @@ ThinkWatch Lite is a local gateway for Claude Code, Codex and other AI clients, | Page | Contents | |---|---| -| Overview | Tokens, cost, cache hits, requests, time to first token and traffic over a period, what needs attention, and a breakdown by model, upstream or key | +| Overview | Tokens, cost, cache hits, requests, time to first token and traffic over a period, where they went and a breakdown by model, upstream or key, subscription quotas and balances, and the past year day by day | | Traffic | Every request, or requests grouped into sessions, with the details of each | | Clients | Pointing clients at the gateway, and restoring them | | Keys | The gateway keys clients connect with, each with its route and limits | diff --git a/src/content/docs-lite/zh-CN/features.md b/src/content/docs-lite/zh-CN/features.md index 3e3a4ac..ed80dd4 100644 --- a/src/content/docs-lite/zh-CN/features.md +++ b/src/content/docs-lite/zh-CN/features.md @@ -6,9 +6,9 @@ ## 用量与费用 -概览页按最近 24 小时、7 天、30 天或自定义区间统计,在一屏之内分为六张卡片:「Token」「费用」「缓存命中」「请求」「首 token」与「流量」。每张卡片给出数值,以及与上一个同等长度的区间相比的变化。除「缓存命中」外,每张卡片都带有一张该区间的小图;指向任意一张小图时,所有小图都标出同一时刻,数值显示在指针所在的卡片上。「缓存命中」显示命中率、缓存带来的净节省,以及输入在缓存读取、新输入与缓存写入之间的构成。「首 token」按时间显示首 token 时间的中位数与 P95,没有请求的时段以淡色虚线连接。「流量」是请求发往上游与从上游收到的数据量(见[流量与会话](#流量与会话)),上传与下载各绘一条线。 +概览页按最近 24 小时、7 天、30 天、自定义区间或某一天统计。顶部是六个指标:「Token」「费用」「请求」「缓存命中」「首 token」与「流量」,每个给出数值,以及与上一个同等长度的区间相比的变化;上一个区间没有记录时不显示变化。选中的指标在下方画成一张带坐标轴的大图:token、费用、请求与流量为面积曲线,失败的请求和下载量各以一条细线标出;缓存命中为命中率曲线;首 token 为中位数与 P95 两条曲线,没有请求的时段以淡色虚线连接。尚未结束的时段以虚线表示,请求记录开始之前的时段标为「未记录」,不按零绘制。指向图上任意时段,显示该时段的数值与用量最多的几个模型。选中「缓存命中」时另列出缓存带来的净节省,以及输入在缓存读取、新输入与缓存写入之间的构成;「流量」是请求发往上游与从上游收到的数据量(见[流量与会话](#流量与会话))。 -卡片上方的提示条逐项列出需要处理的事:失败的请求、被切断的工具调用、无法使用的上游(熔断中、凭据被拒或需要重新登录),以及无法计价的请求,每一项都附有前往处理的页面;没有需要处理的事时不显示。每一项都可以忽略,忽略后有新情况时再次出现;请求记录无法启动的提示,以及连接断开、配置未通过校验的横幅同样可以忽略,「设置 › 通用」可以让忽略过的提醒全部重新显示。卡片下方的明细表按模型、上游或密钥列出请求、token、费用、缓存命中、首 token 与生成速度(生成速度只按模型和上游统计),点击一行即在流量页打开对应的请求。选择「实时」时,「Token」「费用」「请求」三张卡片显示最近十分钟,其余卡片、提示条与明细表按最近 24 小时统计。 +大图下方,「去向」按模型、上游或密钥列出所选指标的分布;「额度与余额」列出上游报告的订阅额度窗口与余额,没有上游报告时不显示。「最近一年」以每天一格的热力图显示 token、费用或请求,并给出累计、日均、最多的一天与连续使用的天数;点击某一天,概览即切换到那一天,热力图保持在原位。页面底部的「明细」按模型、上游或密钥列出请求、token、费用、缓存命中、首 token 与生成速度(生成速度只按模型和上游统计),点击一行即在流量页打开对应的请求;「去向」与「明细」的分类方式联动。失败的请求、被切断的工具调用、无法使用的上游与未定价的模型列入提醒(见[菜单栏、系统托盘与通知](#菜单栏系统托盘与通知)),不在概览上列出。请求记录无法启动的提示,以及连接断开、配置未通过校验的横幅可以忽略,「设置 › 通用」可以让忽略过的提醒全部重新显示。选择「实时」时,「Token」「费用」「请求」三个指标显示最近十分钟,其余指标、去向与明细按最近 24 小时统计。未选择过时间范围时,概览按最近 24 小时统计。 费用会注明其中估算的部分,例如响应结束前被中断的请求。模型未定价的请求和上游未报告用量的请求单独计数,从不按零计入。价格来自价目表:默认价目表采用 LiteLLM 的公开价格,每天更新一次;自定义价目表在其基础上设置倍率,并可单独为个别模型定价,适用于价格与官方不同的中转服务。ChatGPT 这类订阅账号同样按价目表计价,本地模型等上游可设为不计费。每个请求的费用在请求结束时确定,并注明计价所用的价目表及其数据日期。 @@ -125,4 +125,4 @@ Windows 上图标位于通知区域:悬停显示网关状态与今日 token、 Linux 上图标位于系统托盘:点击打开同一份菜单,「今日」一栏与额度条同样改为文字;第一项「打开主界面」用于打开主窗口。 -以下情况会发送系统通知(macOS 与 Windows 使用原生通知,Linux 通过桌面环境的通知服务):网关停止转发或反复重启、与远程 core 的连接断开、订阅额度用完、账号登录失效或上游拒绝当前凭据、代理不通、配置文件未通过校验、工具调用被切断、安全规则记录了一处命中(见[安全](#安全))、密钥的每日、每周或每月用量接近或达到上限、客户端配置中出现可疑内容。自动检查到新版本时,也会以灰色列入提醒,并同样以系统通知告知(见[更新](/zh-CN/docs/lite/install#更新))。上游无法连接时通常由回退上游承接,因此只记录在应用内。提醒可以整体设为系统通知、仅在应用内显示或关闭。标为已读的提醒不再计入铃铛上的数字,但在问题解决或清空列表之前仍留在列表中。 +以下情况会发送系统通知(macOS 与 Windows 使用原生通知,Linux 通过桌面环境的通知服务):网关停止转发或反复重启、与远程 core 的连接断开、订阅额度用完、账号登录失效或上游拒绝当前凭据、代理不通、配置文件未通过校验、工具调用被切断、安全规则记录了一处命中(见[安全](#安全))、密钥的每日、每周或每月用量接近或达到上限、客户端配置中出现可疑内容。自动检查到新版本时,也会以灰色列入提醒,并同样以系统通知告知(见[更新](/zh-CN/docs/lite/install#更新))。以下几类只记录在应用内:上游无法连接(通常由回退上游承接);请求失败,同一时段内的失败合并为一条,点开即在流量页列出失败的请求;模型未定价,每个上游的每个模型一条,点开前往上游页设定价格,最近 7 天内不再有无法计价的请求时自动收起。提醒可以整体设为系统通知、仅在应用内显示或关闭。标为已读的提醒不再计入铃铛上的数字,但在问题解决或清空列表之前仍留在列表中。 diff --git a/src/content/docs-lite/zh-CN/overview.md b/src/content/docs-lite/zh-CN/overview.md index 6211c65..3a989b9 100644 --- a/src/content/docs-lite/zh-CN/overview.md +++ b/src/content/docs-lite/zh-CN/overview.md @@ -20,7 +20,7 @@ ThinkWatch Lite 是 Claude Code、Codex 等 AI 客户端的本地网关,支持 | 页面 | 内容 | |---|---| -| 概览 | 一段时间内的 token、费用、缓存命中、请求、首 token 时间与流量,需要处理的事,以及按模型、上游或密钥的明细 | +| 概览 | 一段时间内的 token、费用、缓存命中、请求、首 token 时间与流量,按模型、上游或密钥的去向与明细,订阅额度与余额,以及最近一年每天的用量 | | 流量 | 逐条请求或按会话归组的请求,以及每个请求的详情 | | 客户端 | 把客户端指向网关,以及还原 | | 密钥 | 客户端连接网关所用的密钥,及其路由与限制 | diff --git a/src/i18n/pages/home.ts b/src/i18n/pages/home.ts index b7d1fc1..99748ca 100644 --- a/src/i18n/pages/home.ts +++ b/src/i18n/pages/home.ts @@ -91,7 +91,7 @@ export const homeCopy = { ], pills: ["Available", "macOS (Apple silicon)", "Windows (x64, ARM64)", "Linux (x86_64, aarch64)"], shotAlt: - "The Overview page for the last 7 days: notices that 11 requests failed, a suspicious tool call was cut off and 13 requests are unpriced; cards for 87.5M tokens, a cost of at least about $71.89, 92% cache hits, 1,400 requests, a 1.26 s median first token and 310 MB of traffic, each with the change against the prior 7 days and a chart or breakdown; and the statistics by model below", + "The Overview page for the last 7 days: 87.5M tokens, a cost of at least about $71.89, 1,400 requests, 92% cache hits, a 1.26 s median first token and 310 MB of traffic, each with the change against the prior 7 days, over a chart of tokens every 6 hours; below, where the tokens went by model and the quotas and balances the upstreams report", cta: "Explore ThinkWatch Lite", }, core: { @@ -219,7 +219,7 @@ export const homeCopy = { ], pills: ["已发布", "macOS(Apple silicon)", "Windows(x64、ARM64)", "Linux(x86_64、aarch64)"], shotAlt: - "概览页(最近 7 天):提示 11 次请求失败、切断了 1 个可疑工具调用、13 条请求无法计价;token 87.5M、费用不低于约 $71.89、缓存命中 92%、请求 1,400 次、首 token 中位数 1.26 秒、流量 310 MB 六张卡片,各带与上一个 7 天的对比和趋势图或构成;下方是按模型的统计", + "概览页(最近 7 天):token 87.5M、费用不低于约 $71.89、请求 1,400 次、缓存命中 92%、首 token 中位数 1.26 秒、流量 310 MB 六个指标,各带与上一个 7 天的对比,下面是每 6 小时一格的 token 曲线;再往下是按模型的去向,以及上游报告的额度与余额", cta: "了解 ThinkWatch Lite", }, core: { diff --git a/src/i18n/pages/lite.ts b/src/i18n/pages/lite.ts index be04a99..f21c8c3 100644 --- a/src/i18n/pages/lite.ts +++ b/src/i18n/pages/lite.ts @@ -12,9 +12,9 @@ // alt text changes with it. const overviewAlt = { - en: "The Overview page for the last 7 days: notices that 11 requests failed, a suspicious tool call was cut off and 13 requests are unpriced; cards for 87.5M tokens, a cost of at least about $71.89, 92% cache hits, 1,400 requests, a 1.26 s median first token and 310 MB of traffic, each with the change against the prior 7 days and a chart or breakdown; and the statistics by model below", + en: "The Overview page for the last 7 days: 87.5M tokens, a cost of at least about $71.89, 1,400 requests, 92% cache hits, a 1.26 s median first token and 310 MB of traffic, each with the change against the prior 7 days, over a chart of tokens every 6 hours; below, where the tokens went by model and the quotas and balances the upstreams report", "zh-CN": - "概览页(最近 7 天):提示 11 次请求失败、切断了 1 个可疑工具调用、13 条请求无法计价;token 87.5M、费用不低于约 $71.89、缓存命中 92%、请求 1,400 次、首 token 中位数 1.26 秒、流量 310 MB 六张卡片,各带与上一个 7 天的对比和趋势图或构成;下方是按模型的统计", + "概览页(最近 7 天):token 87.5M、费用不低于约 $71.89、请求 1,400 次、缓存命中 92%、首 token 中位数 1.26 秒、流量 310 MB 六个指标,各带与上一个 7 天的对比,下面是每 6 小时一格的 token 曲线;再往下是按模型的去向,以及上游报告的额度与余额", } as const; export const liteCopy = {