Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified public/lite/menubar-menu-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/lite/menubar-menu.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/lite/overview-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/lite/overview.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/lite/remote-switcher-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/lite/remote-switcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 13 additions & 7 deletions src/content/docs-lite/en/features.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/content/docs-lite/en/keep-api-keys-from-relays.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ A relay receives every request in full, including keys that end up in the conver
3. For a key format the built-in rules do not cover, choose **New rule**, enter a **Name**, a pattern under **Match (regular expression)** and a **Placeholder name** such as `INTERNAL` (giving `<<TW_INTERNAL_1>>`), then choose **Create**.
4. Set the mode at the top of the tab to **Replace**.
5. Open **Tool calls**. Each built-in rule is marked **Cut off** or **Record only**, which **View rule** can change. Set the mode to **Cut off**.
6. The log's **Action** column then shows **Replaced** or **Cut off**, and a cut-off call also raises a system notification.
6. The log's **Action** column then shows **Replaced** or **Cut off**, and a cut-off call also raises a system notification. From ThinkWatch Lite 2026.10.12, an entry opens in place to show where the value was found and the placeholder it was replaced with, or the tool call that was cut off and the notice the client received.

## Notes

Expand Down
2 changes: 1 addition & 1 deletion src/content/docs-lite/en/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ ThinkWatch Lite is a local gateway for Claude Code, Codex and other AI clients,

| Page | Contents |
|---|---|
| Overview | Tokens, cost and requests over a period, trends by model, cache, latency, generation speed and security results |
| 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 |
| 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 |
Expand Down
20 changes: 13 additions & 7 deletions src/content/docs-lite/zh-CN/features.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/content/docs-lite/zh-CN/keep-api-keys-from-relays.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
3. 内置规则未覆盖的密钥格式,选择「新建规则」,填写「名称」、「匹配(正则表达式)」和「占位符名称」(例如 `INTERNAL`,替换为 `<<TW_INTERNAL_1>>`),然后选择「创建」。
4. 把标签顶部的档位切换到「替换」。
5. 打开「工具调用审查」标签。每条内置规则的处置为「切断」或「仅记录」,可以在「查看规则」中修改。把档位切换到「切断」。
6. 此后日志的「处置」一栏显示「已替换」或「已切断」;调用被切断时还会发送系统通知。
6. 此后日志的「处置」一栏显示「已替换」或「已切断」;调用被切断时还会发送系统通知。自 ThinkWatch Lite 2026.10.12 起,记录可以在原处展开,显示命中的位置与替换成的占位符,或被切断的工具调用及客户端收到的提示。

## 说明

Expand Down
2 changes: 1 addition & 1 deletion src/content/docs-lite/zh-CN/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ ThinkWatch Lite 是 Claude Code、Codex 等 AI 客户端的本地网关,支持

| 页面 | 内容 |
|---|---|
| 概览 | 一段时间内的 token、费用与请求数,按模型的趋势,缓存、延迟、生成速度与安全检查结果 |
| 概览 | 一段时间内的 token、费用、缓存命中、请求、首 token 时间与流量,需要处理的事,以及按模型、上游或密钥的明细 |
| 流量 | 逐条请求或按会话归组的请求,以及每个请求的详情 |
| 客户端 | 把客户端指向网关,以及还原 |
| 密钥 | 客户端连接网关所用的密钥,及其路由与限制 |
Expand Down
6 changes: 3 additions & 3 deletions src/content/docs/en/deployment-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ docker compose -f deploy/docker-compose.yml --env-file .env.production up -d
To pin a release instead of `latest`, set `IMAGE_TAG` to its version, or to the SHA of a commit on `main`:

```bash
IMAGE_TAG=3.3.0 docker compose -f deploy/docker-compose.yml --env-file .env.production up -d
IMAGE_TAG=3.3.1 docker compose -f deploy/docker-compose.yml --env-file .env.production up -d
```

This starts:
Expand Down Expand Up @@ -744,8 +744,8 @@ The server is stateless, so rolling updates work out of the box:
```bash
# Update the image tag
helm upgrade think-watch deploy/helm/think-watch \
--set image.server.tag=3.3.0 \
--set image.web.tag=3.3.0 \
--set image.server.tag=3.3.1 \
--set image.web.tag=3.3.1 \
--reuse-values
```

Expand Down
6 changes: 3 additions & 3 deletions src/content/docs/zh-CN/deployment-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ docker compose -f deploy/docker-compose.yml --env-file .env.production up -d
如需固定某个版本而非 `latest`,将 `IMAGE_TAG` 设为该版本号,或 `main` 分支上某次提交的 SHA:

```bash
IMAGE_TAG=3.3.0 docker compose -f deploy/docker-compose.yml --env-file .env.production up -d
IMAGE_TAG=3.3.1 docker compose -f deploy/docker-compose.yml --env-file .env.production up -d
```

这将启动:
Expand Down Expand Up @@ -744,8 +744,8 @@ ThinkWatch 在 Web 控制台中内置了**配置指南**页面,位于 `/gatewa
```bash
# Update the image tag
helm upgrade think-watch deploy/helm/think-watch \
--set image.server.tag=3.3.0 \
--set image.web.tag=3.3.0 \
--set image.server.tag=3.3.1 \
--set image.web.tag=3.3.1 \
--reuse-values
```

Expand Down
2 changes: 1 addition & 1 deletion src/data/core-docs/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"repository": "ThinkWatchProject/ThinkWatch-Core",
"ref": "v0.67.1",
"ref": "v0.68.0",
"files": {
"docs/config.md": "31d4ff32e28e94d2e53816147c51ef2818a9558265c147612ddfc39b0942beb8",
"docs/config.zh-CN.md": "d7ab9cde90fb6eb910b7b4261a8ccdc9bff1e70b97262860fecc1713dd285117",
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/pages/home.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: 83.1M tokens, $68.11 in cost including $0.441 estimated and 13 unpriced requests, and 1,339 requests of which 11 failed, each compared with the prior 7 days; a token trend stacked by model with the periods that had failures marked; and the models ranked by tokens",
"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",
cta: "Explore ThinkWatch Lite",
},
core: {
Expand Down Expand Up @@ -219,7 +219,7 @@ export const homeCopy = {
],
pills: ["已发布", "macOS(Apple silicon)", "Windows(x64、ARM64)", "Linux(x86_64、aarch64)"],
shotAlt:
"概览页(最近 7 天):token 83.1M、费用 $68.11(含估算 $0.441,13 条无法计价)、请求 1,339 次(失败 11 次),均与上一个 7 天对比;按模型分层的 token 趋势,并标出存在失败的时段;以及按 token 排序的模型列表",
"概览页(最近 7 天):提示 11 次请求失败、切断了 1 个可疑工具调用、13 条请求无法计价;token 87.5M、费用不低于约 $71.89、缓存命中 92%、请求 1,400 次、首 token 中位数 1.26 秒、流量 310 MB 六张卡片,各带与上一个 7 天的对比和趋势图或构成;下方是按模型的统计",
cta: "了解 ThinkWatch Lite",
},
core: {
Expand Down
16 changes: 8 additions & 8 deletions src/i18n/pages/lite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
// alt text changes with it.

const overviewAlt = {
en: "The Overview page for the last 7 days: 83.1M tokens, $68.11 in cost including $0.441 estimated and 13 unpriced requests, and 1,339 requests of which 11 failed, each compared with the prior 7 days; a token trend stacked by model with the periods that had failures marked; and the models ranked by tokens",
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",
"zh-CN":
"概览页(最近 7 天):token 83.1M、费用 $68.11(含估算 $0.441,13 条无法计价)、请求 1,339 次(失败 11 次),均与上一个 7 天对比;按模型分层的 token 趋势,并标出存在失败的时段;以及按 token 排序的模型列表",
"概览页(最近 7 天):提示 11 次请求失败、切断了 1 个可疑工具调用、13 条请求无法计价;token 87.5M、费用不低于约 $71.89、缓存命中 92%、请求 1,400 次、首 token 中位数 1.26 秒、流量 310 MB 六张卡片,各带与上一个 7 天的对比和趋势图或构成;下方是按模型的统计",
} as const;

export const liteCopy = {
Expand Down Expand Up @@ -136,7 +136,7 @@ export const liteCopy = {
{
id: "traffic",
title: "Every request, traceable",
body: "A request shows the rule it matched, each upstream it tried, any conversion between API formats and how its cost was calculated. A finished request can be replayed against another upstream and the two answers compared side by side, and the whole history can be searched, including the text of requests and answers.",
body: "A request shows the rule it matched, each upstream it tried, any conversion between API formats and how its cost was calculated, and its content can be read live while the answer streams. A finished request can be replayed against another upstream and the two answers compared side by side, and the whole history can be searched, including the text of requests and answers.",
alt: "The Traffic page: each request with its key, model, upstream, time to first token, total time, tokens and cost, with marks for converted formats, redacted keys and a blocked request, and one request answered locally by the gateway",
},
{
Expand All @@ -154,7 +154,7 @@ export const liteCopy = {
{
id: "overview",
title: "Costs stated as they are",
body: "Tokens, cost, cache savings, time to first token and generation speed, by model and by upstream. Estimated amounts are marked, and requests without a price are counted separately instead of as zero; prices follow LiteLLM's public list, refreshed daily, or a custom price sheet.",
body: "Tokens, cost, cache hits, requests, time to first token and traffic on one screen, each against the previous period and broken down by model, upstream or key. Estimated amounts are marked, and requests without a price are counted separately instead of as zero; prices follow LiteLLM's public list, refreshed daily, or a custom price sheet.",
alt: overviewAlt.en,
},
{
Expand Down Expand Up @@ -209,7 +209,7 @@ export const liteCopy = {
"A system notification reports a gateway that stopped forwarding, a lost remote connection, a quota that ran out, a credential that stopped working, an unreachable proxy, configuration that did not take effect, a dangerous tool call that was cut off, and suspicious content in client configuration.",
chipAlt: "The menu bar item: the ThinkWatch mark with today's 13.3M tokens above today's cost, $9.34",
menuAlt:
"The menu bar menu: the gateway's address, output speed and state; the ChatGPT account's 5-hour and weekly quotas with their reset times; today's requests, tokens and cost; the request in progress; and items to open the app, copy the gateway address or the default key, switch connection, open settings and check for updates",
"The menu bar menu: an item to open ThinkWatch Lite; today's 13.3M tokens, 204 requests of which 4 failed and $9.34, with the gateway's state and output speed; the ChatGPT account's 5-hour and weekly quotas with their reset times; the request in progress; and items to copy the gateway address or the default key, open settings, switch connection, check for updates and quit",
},
built: {
eyebrow: "Architecture",
Expand Down Expand Up @@ -379,7 +379,7 @@ export const liteCopy = {
{
id: "traffic",
title: "每个请求都可追溯",
body: "请求详情给出命中的规则、尝试过的每个上游、API 格式转换,以及费用的计算依据。已结束的请求可以重放到另一个上游,并排对比两次回答;全部请求记录都可以搜索,包括请求与回答的内容。",
body: "请求详情给出命中的规则、尝试过的每个上游、API 格式转换,以及费用的计算依据,回答生成期间即可实时查看请求与回答的内容。已结束的请求可以重放到另一个上游,并排对比两次回答;全部请求记录都可以搜索,包括请求与回答的内容。",
alt: "流量页:逐条列出请求的密钥、模型、上游、首 token 时间、总耗时、token 与费用,标出格式转换、密钥脱敏与被拦截的请求,其中一条由网关在本地应答",
},
{
Expand All @@ -397,7 +397,7 @@ export const liteCopy = {
{
id: "overview",
title: "费用如实计算",
body: "按模型与上游统计 token、费用、缓存节省、首 token 时间与生成速度。估算的金额单独标注,无法计价的请求单独计数,不按零计入;价格每日按 LiteLLM 公开价更新,也可以使用自定义价目表。",
body: "token、费用、缓存命中、请求、首 token 时间与流量集中在一屏,均与上一个区间对比,并可按模型、上游或密钥查看明细。估算的金额单独标注,无法计价的请求单独计数,不按零计入;价格每日按 LiteLLM 公开价更新,也可以使用自定义价目表。",
alt: overviewAlt["zh-CN"],
},
{
Expand Down Expand Up @@ -451,7 +451,7 @@ export const liteCopy = {
"网关停止转发、远程连接断开、额度用完、凭据失效、代理无法连接、配置未能生效、危险工具调用被切断,以及客户端配置中出现可疑内容时,应用发送系统通知。",
chipAlt: "菜单栏:ThinkWatch 标识,右侧上行为今日 token 13.3M,下行为今日费用 $9.34",
menuAlt:
"菜单栏菜单:网关地址、输出速率与状态;ChatGPT 账号的 5 小时与每周额度及重置时间;今日请求数、token 与费用;进行中的请求;以及打开主界面、复制网关地址、复制默认密钥、切换连接、设置与检查更新等菜单项",
"菜单栏菜单:打开主界面;今日 token 13.3M、请求 204 次(失败 4 次)、费用 $9.34,以及网关状态与输出速率;ChatGPT 账号的 5 小时与每周额度及重置时间;进行中的请求;以及复制网关地址、复制默认密钥、设置、切换连接、检查更新与退出等菜单项",
},
built: {
eyebrow: "架构",
Expand Down
Loading