From 48470359b793c5bd4f73623bce77e8ea2e25ae9c Mon Sep 17 00:00:00 2001 From: yenharvey Date: Thu, 15 Oct 2026 18:07:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(macos):=20=E4=BA=91=E8=81=94=E6=83=B3?= =?UTF-8?q?=E3=80=81=E9=87=8A=E4=B9=89=E5=85=9C=E5=BA=95=E4=B8=8E=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E8=BF=9E=E6=8E=A5=E8=AE=B0=E7=94=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 以前只有 Windows 记,mac 的统计页看不到 Token;Linux 的输入法还没接云服务,支持表里仍是待实现。 --- apps/macos/src/host/cloud/mod.rs | 3 ++- apps/macos/src/host/config/mod.rs | 6 ++++-- apps/settings/src/support/mod.rs | 3 ++- docs/plan/todo.md | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/macos/src/host/cloud/mod.rs b/apps/macos/src/host/cloud/mod.rs index c9e692db..146777f9 100644 --- a/apps/macos/src/host/cloud/mod.rs +++ b/apps/macos/src/host/cloud/mod.rs @@ -13,7 +13,8 @@ impl Host { /// 「测试连接」:用当前配置发一条最小请求,结果回到偏好设置窗口底部的状态行。 pub(super) fn start_cloud_test(&mut self) { let config = self.settings.config().predict.clone(); - match ConnectionTest::start(&config) { + let usage = paths::user_data_dir().map(|dir| dir.join(API_USAGE_FILE)); + match ConnectionTest::start_with_usage(&config, usage) { Ok(test) => { self.cloud_test = Some(test); self.cloud_test_monitor.start(); diff --git a/apps/macos/src/host/config/mod.rs b/apps/macos/src/host/config/mod.rs index a4bcbd6a..67714b9e 100644 --- a/apps/macos/src/host/config/mod.rs +++ b/apps/macos/src/host/config/mod.rs @@ -70,8 +70,10 @@ impl Host { } if force || config.predict != self.applied_predict { if config.predict.enabled { + // 请求与 Token 记进统计页的云服务用量 + let usage = paths::user_data_dir().map(|dir| dir.join(API_USAGE_FILE)); // 没密钥等失败只记日志、退回不联想:输入优先于一切附加功能 - match CloudPredictor::new(&config.predict) { + match CloudPredictor::new_with_usage(&config.predict, usage.clone()) { Ok(predictor) => self.engine.set_predictor(Box::new(predictor)), Err(error) => { tracing::warn!(%error, "云联想未启用"); @@ -79,7 +81,7 @@ impl Host { } } // 释义兜底随云联想一起开:释义表里没有的词上屏后问云端写进个人释义表 - match CloudGlossFiller::new(&config.predict) { + match CloudGlossFiller::new_with_usage(&config.predict, usage) { Ok(filler) => self.engine.set_gloss_filler(Box::new(filler)), Err(error) => { tracing::warn!(%error, "释义兜底未启用"); diff --git a/apps/settings/src/support/mod.rs b/apps/settings/src/support/mod.rs index 91e8e37d..674b887d 100644 --- a/apps/settings/src/support/mod.rs +++ b/apps/settings/src/support/mod.rs @@ -85,7 +85,8 @@ impl Feature { Self::TogglePunctuation => [Todo, Yes, Todo], // 系统的文本替换只有 macOS 有 Self::SystemTextReplacements => [Yes, No, No], - Self::ApiUsage => [Todo, Yes, Todo], + // Linux 的输入法还没接云服务 + Self::ApiUsage => [Yes, Yes, Todo], } } diff --git a/docs/plan/todo.md b/docs/plan/todo.md index 6c654d00..e5c318ab 100644 --- a/docs/plan/todo.md +++ b/docs/plan/todo.md @@ -136,7 +136,7 @@ - [ ] 额外翻页键:macOS、Linux - [ ] 高亮移动键:macOS、Linux - [ ] Ctrl + . 切换全半角标点:macOS、Linux - - [ ] 云服务用量统计:macOS、Linux + - [ ] 云服务用量统计:Linux ## 四、其他输入方案