@yoooclaw/phone-notifications 1.12.3 → 1.12.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/apns/sender.d.ts.map +1 -1
- package/dist/auth/credentials.d.ts.map +1 -1
- package/dist/bin/ntf.cjs +2938 -833
- package/dist/bin/ntf.cjs.map +57 -47
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/doctor/check-credentials.d.ts.map +1 -1
- package/dist/cli/doctor/check-dangerous-flags.d.ts.map +1 -1
- package/dist/cli/doctor/check-local-gateway.d.ts +3 -0
- package/dist/cli/doctor/check-local-gateway.d.ts.map +1 -0
- package/dist/cli/doctor/check-node-version.d.ts.map +1 -1
- package/dist/cli/doctor/check-plugin-version.d.ts.map +1 -1
- package/dist/cli/doctor/check-state-dir-perms.d.ts.map +1 -1
- package/dist/cli/doctor/check-tool-policy.d.ts.map +1 -1
- package/dist/cli/doctor/check-trusted-proxy.d.ts.map +1 -1
- package/dist/cli/doctor/check-tunnel.d.ts.map +1 -1
- package/dist/cli/doctor/checkers.d.ts.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/env.d.ts.map +1 -1
- package/dist/cli/helpers.d.ts +7 -2
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/image-list.d.ts.map +1 -1
- package/dist/cli/image-path.d.ts.map +1 -1
- package/dist/cli/image-status.d.ts.map +1 -1
- package/dist/cli/image-storage-path.d.ts.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/light-send.d.ts.map +1 -1
- package/dist/cli/light-setup-tools.d.ts.map +1 -1
- package/dist/cli/log-search.d.ts.map +1 -1
- package/dist/cli/ntf-monitor.d.ts.map +1 -1
- package/dist/cli/ntf-query.d.ts.map +1 -1
- package/dist/cli/ntf-search.d.ts.map +1 -1
- package/dist/cli/ntf-stats.d.ts.map +1 -1
- package/dist/cli/ntf-storage-path.d.ts.map +1 -1
- package/dist/cli/ntf-summary-job.d.ts.map +1 -1
- package/dist/cli/ntf-summary.d.ts.map +1 -1
- package/dist/cli/ntf-sync.d.ts.map +1 -1
- package/dist/cli/rec-list.d.ts.map +1 -1
- package/dist/cli/rec-setup.d.ts.map +1 -1
- package/dist/cli/rec-status.d.ts.map +1 -1
- package/dist/cli/rec-storage-path.d.ts.map +1 -1
- package/dist/cli/tunnel-status.d.ts.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/env.d.ts +10 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/fs-atomic.d.ts +11 -0
- package/dist/fs-atomic.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +8 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/locale.d.ts +39 -0
- package/dist/i18n/locale.d.ts.map +1 -0
- package/dist/i18n/manifest-locale.d.ts +12 -0
- package/dist/i18n/manifest-locale.d.ts.map +1 -0
- package/dist/i18n/messages/en-US.d.ts +666 -0
- package/dist/i18n/messages/en-US.d.ts.map +1 -0
- package/dist/i18n/messages/index.d.ts +5 -0
- package/dist/i18n/messages/index.d.ts.map +1 -0
- package/dist/i18n/messages/zh-CN.d.ts +666 -0
- package/dist/i18n/messages/zh-CN.d.ts.map +1 -0
- package/dist/i18n/messages/zh-TW.d.ts +3 -0
- package/dist/i18n/messages/zh-TW.d.ts.map +1 -0
- package/dist/i18n/response-locale.d.ts +33 -0
- package/dist/i18n/response-locale.d.ts.map +1 -0
- package/dist/i18n/skills-path.d.ts +16 -0
- package/dist/i18n/skills-path.d.ts.map +1 -0
- package/dist/i18n/translate.d.ts +10 -0
- package/dist/i18n/translate.d.ts.map +1 -0
- package/dist/image/handler.d.ts.map +1 -1
- package/dist/image/store.d.ts.map +1 -1
- package/dist/index.cjs +7125 -3602
- package/dist/index.cjs.map +101 -82
- package/dist/index.d.ts.map +1 -1
- package/dist/light/protocol.d.ts.map +1 -1
- package/dist/light/repeat.d.ts.map +1 -1
- package/dist/light/sender.d.ts +14 -3
- package/dist/light/sender.d.ts.map +1 -1
- package/dist/light/validators.d.ts +1 -1
- package/dist/light/validators.d.ts.map +1 -1
- package/dist/light-rules/client.d.ts.map +1 -1
- package/dist/light-rules/inline-evaluator.d.ts.map +1 -1
- package/dist/light-rules/pi-invoker.d.ts.map +1 -1
- package/dist/light-rules/registry.d.ts.map +1 -1
- package/dist/light-rules/storage.d.ts.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/notification/app-name-map.d.ts +12 -0
- package/dist/notification/app-name-map.d.ts.map +1 -1
- package/dist/notification/storage.d.ts +4 -3
- package/dist/notification/storage.d.ts.map +1 -1
- package/dist/notification/summary.d.ts.map +1 -1
- package/dist/plugin/auto-update.d.ts +2 -0
- package/dist/plugin/auto-update.d.ts.map +1 -1
- package/dist/plugin/cli.d.ts.map +1 -1
- package/dist/plugin/images.d.ts.map +1 -1
- package/dist/plugin/lifecycle.d.ts +7 -14
- package/dist/plugin/lifecycle.d.ts.map +1 -1
- package/dist/plugin/light-control.d.ts.map +1 -1
- package/dist/plugin/light-rules-tools.d.ts.map +1 -1
- package/dist/plugin/locale.d.ts +30 -0
- package/dist/plugin/locale.d.ts.map +1 -0
- package/dist/plugin/notifications.d.ts +1 -0
- package/dist/plugin/notifications.d.ts.map +1 -1
- package/dist/plugin/ntf-bin.d.ts.map +1 -1
- package/dist/plugin/recordings.d.ts.map +1 -1
- package/dist/plugin/register-guard.d.ts +16 -0
- package/dist/plugin/register-guard.d.ts.map +1 -0
- package/dist/plugin/runtime.d.ts +64 -0
- package/dist/plugin/runtime.d.ts.map +1 -0
- package/dist/plugin/shared-storage.d.ts +31 -0
- package/dist/plugin/shared-storage.d.ts.map +1 -0
- package/dist/plugin/system.d.ts +17 -0
- package/dist/plugin/system.d.ts.map +1 -0
- package/dist/profile/auth/base-apikey.d.ts.map +1 -1
- package/dist/profile/auth/jvsclaw.d.ts.map +1 -1
- package/dist/recording/downloader.d.ts.map +1 -1
- package/dist/recording/result-writer.d.ts.map +1 -1
- package/dist/recording/state-machine.d.ts.map +1 -1
- package/dist/recording/storage.d.ts +2 -1
- package/dist/recording/storage.d.ts.map +1 -1
- package/dist/system/os-info.d.ts +34 -0
- package/dist/system/os-info.d.ts.map +1 -0
- package/dist/tunnel/connect-status-reporter.d.ts.map +1 -1
- package/dist/tunnel/frame-slimmer.d.ts +82 -1
- package/dist/tunnel/frame-slimmer.d.ts.map +1 -1
- package/dist/tunnel/gateway-target.d.ts +17 -0
- package/dist/tunnel/gateway-target.d.ts.map +1 -0
- package/dist/tunnel/http-proxy.d.ts.map +1 -1
- package/dist/tunnel/messages.d.ts +11 -0
- package/dist/tunnel/messages.d.ts.map +1 -0
- package/dist/tunnel/proxy.d.ts +20 -1
- package/dist/tunnel/proxy.d.ts.map +1 -1
- package/dist/tunnel/relay-client.d.ts +1 -0
- package/dist/tunnel/relay-client.d.ts.map +1 -1
- package/dist/tunnel/service.d.ts +2 -0
- package/dist/tunnel/service.d.ts.map +1 -1
- package/dist/tunnel/status.d.ts.map +1 -1
- package/dist/tunnel/types.d.ts +2 -0
- package/dist/tunnel/types.d.ts.map +1 -1
- package/dist/types.d.ts +26 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/update/executor.d.ts +3 -3
- package/dist/update/executor.d.ts.map +1 -1
- package/dist/update/index.d.ts +3 -2
- package/dist/update/index.d.ts.map +1 -1
- package/dist/update/restart.d.ts.map +1 -1
- package/dist/update/stale-runtime.d.ts +43 -0
- package/dist/update/stale-runtime.d.ts.map +1 -0
- package/openclaw.plugin.json +10 -0
- package/package.json +1 -1
- package/skills/notification-monitor/SKILL.md +115 -84
- package/skills/notification-monitor/references/README.md +15 -19
- package/skills/notification-query/SKILL.md +125 -97
- package/skills/notification-query/references/statistics.md +74 -78
- package/skills/notification-to-memory/SKILL.md +78 -47
- package/skills/notification-to-memory/references/write-memory-lancedb-plugin.md +34 -32
- package/skills/notification-to-memory/references/write-memory-openclaw-native.md +29 -27
- package/skills/recording-entity-extraction/SKILL.md +102 -65
- package/skills/recording-interview/SKILL.md +105 -69
- package/skills/recording-meeting-minutes/SKILL.md +88 -51
- package/skills/recording-mindmap/SKILL.md +125 -91
- package/skills/recording-query/SKILL.md +98 -64
- package/skills/recording-translation/SKILL.md +108 -71
- package/skills/yoooclaw-faq/SKILL.md +105 -73
|
@@ -0,0 +1,666 @@
|
|
|
1
|
+
export declare const zhCN: {
|
|
2
|
+
readonly "cli.ntf.description": "手机通知数据管理";
|
|
3
|
+
readonly "cli.ntf.version": "显示插件版本";
|
|
4
|
+
readonly "plugin.registration.call": "register() 调用: registrationMode={registrationMode} cliInvocation={cliInvocation}";
|
|
5
|
+
readonly "plugin.registration.cli_registered": "CLI 命令已注册: ntf, phone-notifications";
|
|
6
|
+
readonly "plugin.registration.cli_only": "检测到插件 CLI 命令执行上下文,仅注册 CLI,跳过后台服务以避免影响 Relay tunnel 常驻连接";
|
|
7
|
+
readonly "plugin.ntf_bin.target_missing": "ntf wrapper: 目标不存在 {path},跳过";
|
|
8
|
+
readonly "plugin.ntf_bin.visibility.immediate": "立即生效";
|
|
9
|
+
readonly "plugin.ntf_bin.visibility.needs_path": "需要加入 PATH";
|
|
10
|
+
readonly "plugin.ntf_bin.registered": "独立 ntf 已注册: {path} -> {target}({label},{visibility})";
|
|
11
|
+
readonly "plugin.ntf_bin.path_hint": "若 ntf 命令未立即生效,请把目录加入 PATH: export PATH=\"{dir}:$PATH\"";
|
|
12
|
+
readonly "plugin.ntf_bin.register_failed": "独立 ntf 注册失败: {failures}";
|
|
13
|
+
readonly "plugin.ntf_bin.no_install_dir": "无可用安装目录";
|
|
14
|
+
readonly "plugin.ntf_bin.candidate.node": "node 同目录";
|
|
15
|
+
readonly "plugin.ntf_bin.candidate.host": "宿主 CLI ({name}) 同目录";
|
|
16
|
+
readonly "plugin.ntf_bin.candidate.path": "PATH 目录";
|
|
17
|
+
readonly "plugin.ntf_bin.candidate.fallback": "stateDir/bin 兜底";
|
|
18
|
+
readonly "plugin.ntf_bin.mkdir_failed": "mkdir {dir} 失败: {error}";
|
|
19
|
+
readonly "plugin.ntf_bin.target_occupied": "已有 {path},跳过覆盖";
|
|
20
|
+
readonly "plugin.ntf_bin.write_failed": "写入 {path} 失败: {error}";
|
|
21
|
+
readonly "plugin.tunnel.auth_not_ready": "Relay tunnel: 认证未就绪({reason},credentials={path}),跳过隧道连接。请执行 ntf auth set-api-key <apiKey>";
|
|
22
|
+
readonly "plugin.tunnel.invalid_gateway_env": "忽略无效的 {key}={value}";
|
|
23
|
+
readonly "auth.jvsclaw.skip_missing_secret": "jvsclaw auth: apiKey 已存在且未找到 link_secret,跳过置换";
|
|
24
|
+
readonly "auth.jvsclaw.skip_unchanged_secret": "jvsclaw auth: apiKey 已存在且 link_secret 未变化,跳过置换";
|
|
25
|
+
readonly "auth.jvsclaw.exchange_succeeded": "jvsclaw auth: instance/ready 置换 apiKey 成功(attempt {attempt})";
|
|
26
|
+
readonly "auth.jvsclaw.exchange_fatal": "jvsclaw auth: 置换失败且不可恢复(code={code}): {message},停止轮询";
|
|
27
|
+
readonly "auth.jvsclaw.exchange_retry": "jvsclaw auth: 置换失败(attempt {attempt}): {message},{delayMs}ms 后重试";
|
|
28
|
+
readonly "auth.jvsclaw.retry_aborted": "jvsclaw auth: 置换重试被中止(插件停止)";
|
|
29
|
+
readonly "auth.jvsclaw.link_secret_missing": "未在 {path} 找到 link_secret(路径: plugins.entries.phone-notifications.config.link_secret)";
|
|
30
|
+
readonly "auth.jvsclaw.ready_url_missing": "instance/ready 接口地址为空(检查 host 配置)";
|
|
31
|
+
readonly "auth.jvsclaw.ready_response_error": "instance/ready 返回 code={code} msg={message}";
|
|
32
|
+
readonly "auth.jvsclaw.api_key_missing": "instance/ready 响应未包含 apiKey";
|
|
33
|
+
readonly "update.stale.log.detected": "插件更新未生效:磁盘已安装 {diskVersion},进程仍在运行 {runningVersion}。宿主的进程内重启不会重新加载插件代码,需要完整重启 openclaw 进程。";
|
|
34
|
+
readonly "update.stale.log.config_failed": "陈旧运行时检查读取配置失败: {error}";
|
|
35
|
+
readonly "update.stale.log.restart_triggered": "已触发完整 gateway 重启以加载插件 {diskVersion}: {command}";
|
|
36
|
+
readonly "update.stale.log.restart_failed": "自动完整重启失败({error}),请手动完整重启 openclaw 进程以加载 {diskVersion}";
|
|
37
|
+
readonly "update.stale.log.restart_scheduled": "将在 {seconds}s 后尝试完整重启 gateway(openclaw gateway restart)以加载 {diskVersion}";
|
|
38
|
+
readonly "storage.notifications.state_path": "通知将写入 stateDir 路径: {path}";
|
|
39
|
+
readonly "storage.notifications.fallback": "stateDir 不可用,通知已回退到 workspace 路径: {path}";
|
|
40
|
+
readonly "storage.notifications.corrupt_quarantined": "通知文件损坏,已隔离到 {path},当日通知从空文件重新累积";
|
|
41
|
+
readonly "storage.notifications.corrupt_failed": "通知文件损坏且隔离失败,后续写入可能覆盖原文件: {path}";
|
|
42
|
+
readonly "storage.recordings.state_path": "录音将写入 stateDir 路径: {path}";
|
|
43
|
+
readonly "storage.recordings.fallback": "stateDir 不可用,录音已回退到 workspace 路径: {path}";
|
|
44
|
+
readonly "storage.recordings.corrupt_quarantined": "录音索引文件损坏,已隔离到 {path} 并重建空索引";
|
|
45
|
+
readonly "storage.recordings.corrupt_failed": "录音索引文件损坏且隔离失败,已重建空索引: {path}";
|
|
46
|
+
readonly "storage.images.state_path": "图片将写入 stateDir 路径: {path}";
|
|
47
|
+
readonly "storage.images.fallback": "stateDir 不可用,图片已回退到 workspace 路径: {path}";
|
|
48
|
+
readonly "storage.images.corrupt_quarantined": "图片索引文件损坏,已隔离到 {path} 并重建空索引";
|
|
49
|
+
readonly "storage.images.corrupt_failed": "图片索引文件损坏且隔离失败,已重建空索引: {path}";
|
|
50
|
+
readonly "plugin.registration.wire_once": "register(): 本进程已完成后台装配(openclawDir={openclawDir}),已为当前 Agent collector 补注册工具,跳过重复后台 wiring";
|
|
51
|
+
readonly "plugin.registration.light_rules": "灯效规则方法已注册: gateway={gateway}; tools={tools}";
|
|
52
|
+
readonly "plugin.interfaces.notifications.tools": "Agent 通知工具已注册: notifications_summary";
|
|
53
|
+
readonly "plugin.interfaces.notifications.gateway": "Gateway 通知方法已注册: notifications.push / notifications.summary.start / notifications.summary.status / notifications.summary.result";
|
|
54
|
+
readonly "plugin.interfaces.notifications.http": "HTTP 通知端点已注册: POST /notifications";
|
|
55
|
+
readonly "plugin.interfaces.recordings.gateway": "Gateway 录音方法已注册: recordings.result.write / recordings.list / recordings.status / recordings.rename / recordings.delete";
|
|
56
|
+
readonly "plugin.interfaces.recordings.http": "HTTP 录音端点已注册: POST /recordings(已停用,返回 410)";
|
|
57
|
+
readonly "plugin.interfaces.images.gateway": "Gateway 图片方法已注册: images.sync";
|
|
58
|
+
readonly "plugin.interfaces.images.http": "HTTP 图片端点已注册: POST /images";
|
|
59
|
+
readonly "plugin.interfaces.system.gateway": "Gateway 系统方法已注册: system.os";
|
|
60
|
+
readonly "plugin.interfaces.system.http": "HTTP 系统端点已注册: GET /system/os";
|
|
61
|
+
readonly "plugin.interfaces.locale.gateway": "Gateway 语言方法已注册: plugin.locale.get / plugin.locale.set(事件: {event})";
|
|
62
|
+
readonly "plugin.interfaces.locale.http": "HTTP 语言端点已注册: GET|POST /plugin/locale";
|
|
63
|
+
readonly "plugin.interfaces.auto_update": "自动更新检查服务已注册";
|
|
64
|
+
readonly "plugin.lifecycle.storage.notifications_started": "通知存储服务已启动: {path}";
|
|
65
|
+
readonly "plugin.lifecycle.storage.recordings_started": "录音存储服务已启动: {path}";
|
|
66
|
+
readonly "plugin.lifecycle.storage.images_started": "图片存储服务已启动: {path}";
|
|
67
|
+
readonly "plugin.lifecycle.storage.stopped": "通知/录音/图片存储服务已停止";
|
|
68
|
+
readonly "plugin.lifecycle.tunnel.registered": "Relay tunnel 服务已注册";
|
|
69
|
+
readonly "cli.light.description": "灯效管理";
|
|
70
|
+
readonly "cli.light.send.description": "发送灯效指令到硬件设备";
|
|
71
|
+
readonly "cli.light.setup_tools.description": "自动放行一次性灯效与云端灯效规则工具(兼容 tools.allow / tools.alsoAllow)";
|
|
72
|
+
readonly "cli.rec.description": "录音管理";
|
|
73
|
+
readonly "cli.rec.list.description": "列出所有录音(可按状态过滤)";
|
|
74
|
+
readonly "cli.rec.status.description": "查看单条录音详情";
|
|
75
|
+
readonly "cli.rec.storage_path.description": "查询录音存储路径";
|
|
76
|
+
readonly "cli.rec.setup.description": "交互式配置 ASR 转写参数,保存到本地配置文件";
|
|
77
|
+
readonly "cli.image.description": "图片管理";
|
|
78
|
+
readonly "cli.image.list.description": "列出所有图片(可按状态/来源应用过滤)";
|
|
79
|
+
readonly "cli.image.status.description": "查看单张图片详情";
|
|
80
|
+
readonly "cli.image.path.description": "打印图片本地文件绝对路径";
|
|
81
|
+
readonly "cli.image.storage_path.description": "查询图片存储路径";
|
|
82
|
+
readonly "cli.auth.description": "用户认证管理";
|
|
83
|
+
readonly "cli.auth.set_api_key.description": "设置用户 API Key(持久化到本地配置)";
|
|
84
|
+
readonly "cli.auth.set_token.description": "(兼容)设置用户 API Key(旧命令名)";
|
|
85
|
+
readonly "cli.auth.status.description": "查看当前认证状态";
|
|
86
|
+
readonly "cli.auth.clear.description": "清除已保存的认证信息";
|
|
87
|
+
readonly "cli.env.description": "环境管理(切换 test / production)";
|
|
88
|
+
readonly "cli.env.show.description": "显示当前环境及对应的接口地址";
|
|
89
|
+
readonly "cli.env.set.description": "切换环境(test / production)";
|
|
90
|
+
readonly "cli.doctor.description": "自检环境配置,检测安全风险和常见问题";
|
|
91
|
+
readonly "cli.update.description": "检查并更新插件到最新版本,更新后自动重启";
|
|
92
|
+
readonly "cli.log.description": "查看/搜索插件日志";
|
|
93
|
+
readonly "cli.tunnel.status.description": "检查 Relay Tunnel 隧道连接状态(读取运行中服务的状态文件,不影响已有连接)";
|
|
94
|
+
readonly "tunnel.status.connected": "隧道已连接(自 {since})";
|
|
95
|
+
readonly "tunnel.status.connecting": "隧道正在连接(自 {since},第 {attempt} 次重连)";
|
|
96
|
+
readonly "tunnel.status.disconnected": "隧道已断开(自 {since}){reasonSuffix},等待重连(第 {attempt} 次)";
|
|
97
|
+
readonly "tunnel.status.disconnected.reason": ",原因: {reason}";
|
|
98
|
+
readonly "tunnel.status.stopped": "隧道服务已停止(自 {since})";
|
|
99
|
+
readonly "tunnel.status.unknown": "未知状态: {state}";
|
|
100
|
+
readonly "tunnel.issue.not_found": "未找到隧道状态文件,隧道服务可能尚未启动过。请确认 openclaw 主进程正在运行。";
|
|
101
|
+
readonly "tunnel.issue.invalid.parse": "隧道状态文件解析失败,文件内容损坏或格式不正确。请重启 openclaw 主进程。";
|
|
102
|
+
readonly "tunnel.issue.invalid.fields": "隧道状态文件缺少必要字段或字段类型不正确。请重启 openclaw 主进程。";
|
|
103
|
+
readonly "tunnel.issue.stale.connected_prefix": "隧道状态文件显示已连接(自 {since})";
|
|
104
|
+
readonly "tunnel.issue.stale.no_lock": ",但未找到本地运行锁,状态可能已过期。请重启 openclaw 主进程。";
|
|
105
|
+
readonly "tunnel.issue.stale.incomplete_lock": ",但本地运行锁内容不完整,无法确认当前连接是否仍然有效。请重启 openclaw 主进程。";
|
|
106
|
+
readonly "tunnel.issue.stale.dead_pid": ",但本地运行锁仍指向已退出的进程 pid={pid},状态可能已过期。请重启 openclaw 主进程。";
|
|
107
|
+
readonly "tunnel.issue.stale.lock_newer": ",但当前运行锁启动于 {lockStartedAt},晚于状态时间,说明状态未随新进程刷新。请重启 openclaw 主进程。";
|
|
108
|
+
readonly "cli.monitor.description": "通知监控任务管理";
|
|
109
|
+
readonly "cli.monitor.list.description": "列出所有监控任务";
|
|
110
|
+
readonly "cli.monitor.show.description": "查看监控任务详情";
|
|
111
|
+
readonly "cli.monitor.create.description": "创建监控任务";
|
|
112
|
+
readonly "cli.monitor.delete.description": "删除监控任务";
|
|
113
|
+
readonly "cli.monitor.enable.description": "启用监控任务";
|
|
114
|
+
readonly "cli.monitor.disable.description": "暂停监控任务";
|
|
115
|
+
readonly "cli.sync.description": "同步通知到记忆系统";
|
|
116
|
+
readonly "cli.sync.next.description": "返回范围内下一批待同步通知(≤100 条)及记忆写入提示词路径;全部处理完时返回 done=true";
|
|
117
|
+
readonly "cli.sync.pending.description": "扫描未处理的通知,默认只返回本地当天的待同步摘要";
|
|
118
|
+
readonly "cli.sync.fetch.description": "获取指定日期的未处理通知详情";
|
|
119
|
+
readonly "cli.sync.commit.description": "标记指定日期当前批次处理完成,更新 checkpoint";
|
|
120
|
+
readonly "cli.search.description": "查询通知(按时间/应用/发送人/关键词筛选)";
|
|
121
|
+
readonly "cli.stats.description": "通知统计分析(按日期/应用/发送人/时段聚合)";
|
|
122
|
+
readonly "cli.summary.description": "生成通知摘要输入(聚合统计 + 样例,供 Agent 快速总结)";
|
|
123
|
+
readonly "cli.summary_job.description": "分片通知总结任务管理";
|
|
124
|
+
readonly "cli.summary_job.create.description": "创建分片通知总结任务";
|
|
125
|
+
readonly "cli.summary_job.status.description": "查看分片通知总结任务状态";
|
|
126
|
+
readonly "cli.summary_job.next.description": "领取或重试下一个待总结分片";
|
|
127
|
+
readonly "cli.summary_job.commit.description": "提交分片摘要并标记分片完成";
|
|
128
|
+
readonly "cli.summary_job.run.description": "自动处理待总结分片并在完成后生成结果";
|
|
129
|
+
readonly "cli.summary_job.result.description": "合并已提交的分片摘要并返回结果";
|
|
130
|
+
readonly "cli.summary_job.cancel.description": "取消分片通知总结任务";
|
|
131
|
+
readonly "cli.storage_path.description": "查询通知存储路径";
|
|
132
|
+
readonly "cli.opt.from_time": "开始时间 ISO 8601,例如 2026-03-01T09:00:00+08:00";
|
|
133
|
+
readonly "cli.opt.to_time": "结束时间 ISO 8601,例如 2026-03-01T18:00:00+08:00";
|
|
134
|
+
readonly "cli.opt.from_time_short": "开始时间 ISO 8601";
|
|
135
|
+
readonly "cli.opt.to_time_short": "结束时间 ISO 8601";
|
|
136
|
+
readonly "cli.opt.app": "按应用名过滤";
|
|
137
|
+
readonly "cli.opt.sender": "按发送人过滤";
|
|
138
|
+
readonly "cli.opt.conversation_type": "按会话类型过滤(group/private)";
|
|
139
|
+
readonly "cli.opt.keyword": "在标题和内容中搜索关键词";
|
|
140
|
+
readonly "cli.opt.limit": "最大返回条数";
|
|
141
|
+
readonly "cli.opt.from_date": "开始日期 YYYY-MM-DD";
|
|
142
|
+
readonly "cli.opt.to_date": "结束日期 YYYY-MM-DD";
|
|
143
|
+
readonly "cli.opt.json": "以 JSON 格式输出结果(供脚本调用)";
|
|
144
|
+
readonly "cli.opt.yes": "跳过确认";
|
|
145
|
+
readonly "cli.opt.date_ymd": "目标日期 YYYY-MM-DD";
|
|
146
|
+
readonly "cli.search.opt.limit": "最大返回条数";
|
|
147
|
+
readonly "cli.summary.opt.limit": "纳入摘要的最大通知条数";
|
|
148
|
+
readonly "cli.summary.opt.sample": "返回最近样例条数";
|
|
149
|
+
readonly "cli.summary.opt.top": "返回聚合榜单条数";
|
|
150
|
+
readonly "cli.summary.opt.max_content": "单条样例标题/正文最大字数(超出截断)";
|
|
151
|
+
readonly "cli.summary_job.opt.limit": "纳入任务的最大通知条数";
|
|
152
|
+
readonly "cli.summary_job.opt.chunk_size": "每个分片的通知条数";
|
|
153
|
+
readonly "cli.summary_job.opt.max_content": "分片中单条通知标题/正文最大字数";
|
|
154
|
+
readonly "cli.summary_job.opt.chunk_id": "next 返回的分片 id";
|
|
155
|
+
readonly "cli.summary_job.opt.summary": "直接传入分片摘要文本";
|
|
156
|
+
readonly "cli.summary_job.opt.summary_file": "读取文件内容作为分片摘要";
|
|
157
|
+
readonly "cli.summary_job.opt.max_chunks": "本次最多自动处理的分片数";
|
|
158
|
+
readonly "cli.summary_job.opt.include_result": "完成时在输出中包含 markdown 结果";
|
|
159
|
+
readonly "cli.stats.opt.app": "只统计指定应用";
|
|
160
|
+
readonly "cli.stats.opt.dim": "统计维度:date/app/sender/hour/all";
|
|
161
|
+
readonly "cli.log.opt.keyword": "按关键词过滤日志";
|
|
162
|
+
readonly "cli.log.opt.limit": "最大返回条数";
|
|
163
|
+
readonly "cli.sync.scan.opt.all": "扫描 checkpoint 之后所有日期的未处理通知";
|
|
164
|
+
readonly "cli.sync.scan.opt.date": "只扫描指定日期 YYYY-MM-DD";
|
|
165
|
+
readonly "cli.sync.scan.opt.from_date": "只扫描该日期及之后的数据 YYYY-MM-DD";
|
|
166
|
+
readonly "cli.sync.scan.opt.to_date": "只扫描该日期及之前的数据 YYYY-MM-DD";
|
|
167
|
+
readonly "cli.sync.next.opt.all": "处理 checkpoint 之后所有日期的未处理通知";
|
|
168
|
+
readonly "cli.sync.next.opt.date": "只处理指定日期 YYYY-MM-DD";
|
|
169
|
+
readonly "cli.sync.next.opt.from_date": "只处理该日期及之后的数据 YYYY-MM-DD";
|
|
170
|
+
readonly "cli.sync.next.opt.to_date": "只处理该日期及之前的数据 YYYY-MM-DD";
|
|
171
|
+
readonly "cli.sync.fetch.opt.max_end_index": "本次同步快照允许读取的最大 endIndex";
|
|
172
|
+
readonly "cli.sync.commit.opt.end_index": "本批次 fetch 返回的 endIndex";
|
|
173
|
+
readonly "cli.monitor.create.opt.description": "任务描述";
|
|
174
|
+
readonly "cli.monitor.create.opt.match_rules": "匹配规则 JSON";
|
|
175
|
+
readonly "cli.monitor.create.opt.schedule": "cron 表达式";
|
|
176
|
+
readonly "cli.doctor.opt.fix": "自动修复可修复的问题(跳过确认提示)";
|
|
177
|
+
readonly "cli.update.opt.force": "强制重新安装当前最新版本,即使版本号相同";
|
|
178
|
+
readonly "cli.update.opt.beta": "安装最新 beta 版本";
|
|
179
|
+
readonly "cli.light.send.opt.segments": "灯效参数 JSON";
|
|
180
|
+
readonly "cli.light.send.opt.repeat": "无限循环播放(默认仅播放一轮)";
|
|
181
|
+
readonly "cli.light.send.opt.repeat_times": "整条组合重复次数:0=无限,1=一轮;当前 ANCS 路径不支持 >=2";
|
|
182
|
+
readonly "cli.image.list.opt.status": "按状态过滤(syncing|synced|sync_failed)";
|
|
183
|
+
readonly "cli.image.list.opt.app": "按来源应用过滤";
|
|
184
|
+
readonly "cli.rec.list.opt.status": "按传输状态过滤(如 synced, transcribed)";
|
|
185
|
+
readonly "errors.INVALID_TIME": "{option} 必须是 ISO 8601 时间,例如 {example}";
|
|
186
|
+
readonly "errors.INVALID_TIME_INVALID": "{option} 不是合法时间,例如 {example}";
|
|
187
|
+
readonly "errors.STORAGE_UNAVAILABLE": "无法确定录音存储目录:stateDir 和 workspaceDir 均未设置";
|
|
188
|
+
readonly "errors.STORAGE_UNAVAILABLE.notifications": "通知存储目录不可用";
|
|
189
|
+
readonly "errors.STORAGE_UNAVAILABLE.images": "图片存储目录不可用";
|
|
190
|
+
readonly "errors.STORAGE_UNAVAILABLE.recordings": "录音存储目录不可用";
|
|
191
|
+
readonly "errors.LOGS_UNAVAILABLE": "日志目录不可用";
|
|
192
|
+
readonly "errors.NOT_FOUND": "未找到: {target}";
|
|
193
|
+
readonly "errors.NOT_FOUND.monitor": "监控任务 '{name}' 不存在";
|
|
194
|
+
readonly "errors.NOT_FOUND.image": "图片不存在: {id}";
|
|
195
|
+
readonly "errors.NOT_FOUND.recording": "录音不存在: {id}";
|
|
196
|
+
readonly "errors.ALREADY_EXISTS": "监控任务 '{name}' 已存在";
|
|
197
|
+
readonly "errors.INVALID_TIME_RANGE": "--from 不能晚于 --to";
|
|
198
|
+
readonly "errors.INVALID_POSITIVE_INT": "{option} 必须是大于 0 的整数";
|
|
199
|
+
readonly "errors.INVALID_NON_NEGATIVE_INT": "{option} 必须是非负整数";
|
|
200
|
+
readonly "errors.INVALID_DATE": "{option} 必须是 YYYY-MM-DD 格式";
|
|
201
|
+
readonly "errors.INVALID_DATE_VALUE": "{option} 不是合法日期";
|
|
202
|
+
readonly "errors.INVALID_SCOPE": "参数范围冲突";
|
|
203
|
+
readonly "errors.INVALID_SCOPE.all_with_range": "--all 不能与日期范围参数同时使用";
|
|
204
|
+
readonly "errors.INVALID_SCOPE.date_with_range": "--date 不能与日期范围参数同时使用";
|
|
205
|
+
readonly "errors.INVALID_SCOPE.from_after_to": "--from-date 不能晚于 --to-date";
|
|
206
|
+
readonly "errors.NO_DATA": "日期 {date} 无通知数据";
|
|
207
|
+
readonly "errors.INVALID_LOCALE": "locale 必须是以下之一: {locales}";
|
|
208
|
+
readonly "errors.INVALID_CONVERSATION_TYPE": "--conversation-type 只能是 group 或 private";
|
|
209
|
+
readonly "errors.INVALID_END_INDEX": "--end-index 必须是非负整数";
|
|
210
|
+
readonly "errors.INVALID_END_INDEX.out_of_range": "--end-index 必须落在当前日期通知文件范围内";
|
|
211
|
+
readonly "errors.INVALID_END_INDEX.beyond_batch": "--end-index 超出单批 fetch 上限,不能跳过未处理通知";
|
|
212
|
+
readonly "errors.STALE_END_INDEX": "--end-index 早于当前 checkpoint,不能回退消费进度";
|
|
213
|
+
readonly "errors.INVALID_MAX_END_INDEX": "--max-end-index 必须是非负整数";
|
|
214
|
+
readonly "errors.CONFIG_NOT_FOUND": "未找到配置文件: {path}";
|
|
215
|
+
readonly "errors.CONFIG_INVALID": "读取/解析配置失败: {detail}";
|
|
216
|
+
readonly "errors.WRITE_FAILED": "写入配置失败: {detail}";
|
|
217
|
+
readonly "errors.HTTP_ERROR": "请求失败: {status} {detail}";
|
|
218
|
+
readonly "errors.IMAGE_NOT_READY": "图片 {id} 尚未下载完成(status={status}{errorSuffix})";
|
|
219
|
+
readonly "errors.INVALID_JOB_ID": "summary job id 不合法";
|
|
220
|
+
readonly "errors.READ_FAILED": "无法读取 JSON: {path}";
|
|
221
|
+
readonly "errors.JOB_NOT_FOUND": "summary job 不存在: {id}";
|
|
222
|
+
readonly "errors.INVALID_JOB": "summary job 元数据损坏: {id}";
|
|
223
|
+
readonly "errors.INVALID_CHUNK": "summary job 分片损坏: {chunkId}";
|
|
224
|
+
readonly "errors.INVALID_COMMIT.xor": "--summary 和 --summary-file 只能二选一";
|
|
225
|
+
readonly "errors.INVALID_COMMIT.required": "必须提供 --summary 或 --summary-file";
|
|
226
|
+
readonly "errors.INVALID_COMMIT.empty": "分片摘要不能为空";
|
|
227
|
+
readonly "errors.JOB_CANCELLED": "summary job 已取消: {id}";
|
|
228
|
+
readonly "errors.CHUNK_NOT_FOUND": "summary job 分片不存在: {chunkId}";
|
|
229
|
+
readonly "errors.INVALID_ENV": "无效的环境名称: {env},可选值: {available}";
|
|
230
|
+
readonly "errors.INVALID_MATCH_RULES": "match-rules 必须是合法的 JSON";
|
|
231
|
+
readonly "errors.TUNNEL_NOT_CONFIGURED": "RELAY_TUNNEL_URL 未配置,隧道功能未启用。请在构建时设置 RELAY_TUNNEL_URL 环境变量。";
|
|
232
|
+
readonly "errors.TUNNEL_TOKEN_MISSING": "API Key 未设置,隧道无法连接。请执行 ntf auth set-api-key <apiKey>";
|
|
233
|
+
readonly "errors.STATE_DIR_UNAVAILABLE": "无法确定状态目录,无法检查隧道状态。请在 openclaw 主环境中执行该命令。";
|
|
234
|
+
readonly "errors.STATUS_NOT_FOUND": "未找到隧道状态文件,隧道服务可能尚未启动过。请确认 openclaw 主进程正在运行。";
|
|
235
|
+
readonly "env.reload.gateway": "已自动触发 gateway 进程内重载";
|
|
236
|
+
readonly "env.reload.jvsclaw": "当前宿主为 JvsClaw,请在控制面重载或重启实例后使环境切换生效";
|
|
237
|
+
readonly "env.reload.qclaw": "当前宿主为 QClaw,请重启 QClaw 桌面应用后使环境切换生效";
|
|
238
|
+
readonly "env.reload.command": "已自动触发 {command}";
|
|
239
|
+
readonly "env.reload.manual": "已切换环境,但自动重载未完成,请手动运行: {command}";
|
|
240
|
+
readonly "env.switched.with_reload": "已切换到 {env} 环境,并已触发重载";
|
|
241
|
+
readonly "env.switched": "已切换到 {env} 环境";
|
|
242
|
+
readonly "progress.searching": "正在搜索通知...";
|
|
243
|
+
readonly "progress.summary": "正在生成通知摘要输入...";
|
|
244
|
+
readonly "progress.summary_job_create": "正在创建分片通知总结任务...";
|
|
245
|
+
readonly "doctor.checking": "🔍 正在检查环境...";
|
|
246
|
+
readonly "doctor.all_pass": "✅ 所有检查通过,未发现问题。";
|
|
247
|
+
readonly "doctor.fix_label": "修复: {fix}";
|
|
248
|
+
readonly "doctor.summary": "检测完成: {critical} critical · {warn} warn · {info} info";
|
|
249
|
+
readonly "doctor.manual_only": "以上问题均需手动修复,请参考上方提示。";
|
|
250
|
+
readonly "doctor.fixable_found": "发现 {count} 个可自动修复的问题:";
|
|
251
|
+
readonly "doctor.confirm_fix": "是否执行自动修复?[y/N]: ";
|
|
252
|
+
readonly "doctor.cancelled": "已取消。";
|
|
253
|
+
readonly "doctor.fix_failed": "{title} 修复失败: {message}";
|
|
254
|
+
readonly "doctor.manual_remaining": "还有 {count} 个问题需要手动处理,请参考上方提示。";
|
|
255
|
+
readonly "doctor.fix_done": "修复完成 ({fixed}/{total})。建议执行: openclaw gateway restart";
|
|
256
|
+
readonly "doctor.credentials.title": "API Key 未配置";
|
|
257
|
+
readonly "doctor.credentials.detail": "未在 credentials.json 中找到 apiKey,隧道和推送等功能无法正常工作。";
|
|
258
|
+
readonly "doctor.credentials.fix": "请执行: ntf auth set-api-key <your-api-key>";
|
|
259
|
+
readonly "doctor.dangerous_flags.title": "gateway.controlUi.dangerouslyDisableDeviceAuth 已启用";
|
|
260
|
+
readonly "doctor.dangerous_flags.detail": "这会关闭 Control UI 的设备身份验证,任何人都可以访问控制面板。";
|
|
261
|
+
readonly "doctor.dangerous_flags.fix": "设为 false";
|
|
262
|
+
readonly "doctor.node_version.title": "Node.js 版本过低 (v{version})";
|
|
263
|
+
readonly "doctor.node_version.detail": "要求 >= {minVersion},当前为 v{version}。";
|
|
264
|
+
readonly "doctor.node_version.fix": "请升级 Node.js 到 {minVersion} 或更高版本";
|
|
265
|
+
readonly "doctor.plugin_version.title": "插件版本可更新 (当前 {current} → 最新 {latest})";
|
|
266
|
+
readonly "doctor.plugin_version.detail": "有新版本可用,建议更新以获取最新功能和修复。";
|
|
267
|
+
readonly "doctor.plugin_version.fix": "请执行: ntf update";
|
|
268
|
+
readonly "doctor.state_dir_perms.title": "状态目录权限过于宽松 ({stateDir} mode={mode})";
|
|
269
|
+
readonly "doctor.state_dir_perms.detail": "其他用户可以读取该目录下的凭证和配置文件。";
|
|
270
|
+
readonly "doctor.tool_policy.title": "扩展插件 tool policy 宽松";
|
|
271
|
+
readonly "doctor.tool_policy.detail": "以下 agent 使用了 default 策略: {agents}。插件工具可能被未授权调用。";
|
|
272
|
+
readonly "doctor.tool_policy.fix": "建议为处理不可信输入的 agent 使用 minimal 或 coding profile,或配置明确的 tool allowlist。";
|
|
273
|
+
readonly "doctor.trusted_proxy.title": "gateway.auth.mode 为 trusted-proxy";
|
|
274
|
+
readonly "doctor.trusted_proxy.detail": "认证委托给了反向代理。请确保: (1) 代理终止 TLS 并认证用户; (2) gateway.trustedProxies 仅限代理 IP; (3) 防火墙阻止直接访问 Gateway 端口。";
|
|
275
|
+
readonly "doctor.trusted_proxy.fix": "此项需手动检查代理配置,无法自动修复";
|
|
276
|
+
readonly "doctor.trusted_proxy_allow_users.title": "trusted-proxy 模式下 allowUsers 为空";
|
|
277
|
+
readonly "doctor.trusted_proxy_allow_users.detail": "任何通过代理认证的用户都可以访问 Gateway。";
|
|
278
|
+
readonly "doctor.trusted_proxy_allow_users.fix": "请编辑 openclaw.json,在 gateway.auth.trustedProxy.allowUsers 中添加允许的用户邮箱,例如 [\"nick@example.com\"]";
|
|
279
|
+
readonly "doctor.tunnel.not_found.title": "隧道状态文件不存在";
|
|
280
|
+
readonly "doctor.tunnel.not_found.detail": "隧道服务可能尚未启动过,或状态文件已被删除。";
|
|
281
|
+
readonly "doctor.tunnel.not_found.fix": "请确认 openclaw 主进程正在运行";
|
|
282
|
+
readonly "doctor.tunnel.invalid.title": "隧道状态文件解析失败";
|
|
283
|
+
readonly "doctor.tunnel.invalid.detail": "文件内容损坏或格式不正确。";
|
|
284
|
+
readonly "doctor.tunnel.invalid.fix": "请重启 openclaw 主进程";
|
|
285
|
+
readonly "doctor.tunnel.stale.title": "隧道状态已过期";
|
|
286
|
+
readonly "doctor.tunnel.stale.detail": "隧道状态文件仍显示已连接,但运行时状态已失效。";
|
|
287
|
+
readonly "doctor.tunnel.stale.fix": "请重启 openclaw 主进程";
|
|
288
|
+
readonly "doctor.tunnel.disconnected.title": "隧道未连接 (state={state})";
|
|
289
|
+
readonly "doctor.tunnel.disconnected.detail": "隧道自 {since} 处于 {state} 状态{reasonSuffix},重连次数: {attempts}";
|
|
290
|
+
readonly "doctor.tunnel.disconnected.reason": ",原因: {reason}";
|
|
291
|
+
readonly "doctor.tunnel.disconnected.fix": "请检查网络连接或重启 openclaw 主进程";
|
|
292
|
+
readonly "doctor.local_gateway.invalid_url.title": "本地 Gateway 地址配置无效";
|
|
293
|
+
readonly "doctor.local_gateway.invalid_url.detail": "{warning},当前回退到 {baseUrl}";
|
|
294
|
+
readonly "doctor.local_gateway.invalid_url.fix": "请修正 PHONE_NOTIFICATIONS_GATEWAY_BASE_URL,或清理该环境变量后重启 openclaw/gateway";
|
|
295
|
+
readonly "doctor.local_gateway.tls.title": "Gateway TLS 可能阻断 Relay 本地代理";
|
|
296
|
+
readonly "doctor.local_gateway.tls.detail": "检测到 gateway.tls.enabled=true,但插件本地代理默认连接 {baseUrl}。如果 Gateway 只接受 HTTPS/WSS,本地 RPC 握手会失败。";
|
|
297
|
+
readonly "doctor.local_gateway.tls.fix": "设置 PHONE_NOTIFICATIONS_GATEWAY_BASE_URL=https://127.0.0.1:<port>,或关闭 gateway.tls.enabled 后重启 gateway";
|
|
298
|
+
readonly "doctor.local_gateway.unresolvable.title": "本地 Gateway 地址无法解析";
|
|
299
|
+
readonly "doctor.local_gateway.unresolvable.detail": "无法解析插件将使用的本地 Gateway 地址: {baseUrl}";
|
|
300
|
+
readonly "doctor.local_gateway.unresolvable.fix": "请设置 PHONE_NOTIFICATIONS_GATEWAY_BASE_URL=http://127.0.0.1:<port>";
|
|
301
|
+
readonly "doctor.local_gateway.unreachable.title": "本地 Gateway 不可达";
|
|
302
|
+
readonly "doctor.local_gateway.unreachable.detail": "插件将连接 {baseUrl},但 TCP 探测失败{errorSuffix}";
|
|
303
|
+
readonly "doctor.local_gateway.unreachable.fix": "请执行 openclaw gateway status,确认 gateway.port 与 PHONE_NOTIFICATIONS_GATEWAY_BASE_URL 是否一致";
|
|
304
|
+
readonly "monitor.delete.confirm": "确认删除监控任务 '{name}'?添加 --yes 跳过确认";
|
|
305
|
+
readonly "update.checking": "检查{beta}最新版本 ...";
|
|
306
|
+
readonly "update.checking_beta": " beta";
|
|
307
|
+
readonly "update.fetch_failed": "无法获取最新版本: {message}";
|
|
308
|
+
readonly "update.already_latest": "已是最新{beta}版本 v{version}";
|
|
309
|
+
readonly "update.force": "强制更新: v{current} → v{latest}";
|
|
310
|
+
readonly "update.found": "发现新版本: v{current} → v{latest},开始更新 ...";
|
|
311
|
+
readonly "update.downloading": "下载安装脚本 ...";
|
|
312
|
+
readonly "update.download_failed": "下载安装脚本失败: {message}";
|
|
313
|
+
readonly "update.write_failed": "写入临时文件失败: {message}";
|
|
314
|
+
readonly "update.spawn_failed": "安装脚本执行失败: {message}";
|
|
315
|
+
readonly "update.exit_code": "安装脚本退出码: {code}";
|
|
316
|
+
readonly "update.request_failed": "请求失败: {url} (HTTP {status})";
|
|
317
|
+
readonly "update.version_empty": "版本标记为空: {baseUrl}";
|
|
318
|
+
readonly "rec.setup.choice_prompt": "{prompt} [1-{max},默认 {default}]: ";
|
|
319
|
+
readonly "rec.setup.choice_invalid": " 请输入 1-{max} 之间的数字";
|
|
320
|
+
readonly "rec.setup.optional_suffix": " [可选,直接回车跳过]: ";
|
|
321
|
+
readonly "rec.setup.api_header": "─── 云端 ASR(model-proxy)配置 ───";
|
|
322
|
+
readonly "rec.setup.api_note": "说明:不再填写第三方 API Key,插件会复用当前账号的 API Key 调用 model-proxy 长录音接口。";
|
|
323
|
+
readonly "rec.setup.api.endpoint": "自定义 model-proxy submit-task 端点 URL";
|
|
324
|
+
readonly "rec.setup.api.language": "语言提示(如 zh / en)";
|
|
325
|
+
readonly "rec.setup.api.itn": "启用文本规范化 ITN?(y/N)";
|
|
326
|
+
readonly "rec.setup.local_header": "─── 本地 Whisper 转写配置 ───";
|
|
327
|
+
readonly "rec.setup.local.model_label": "模型大小:";
|
|
328
|
+
readonly "rec.setup.local.model_auto": "自动选择(根据可用内存推荐)";
|
|
329
|
+
readonly "rec.setup.local.choose_model": "选择模型";
|
|
330
|
+
readonly "rec.setup.local.language": "语言提示(如 zh / en,留空自动检测)";
|
|
331
|
+
readonly "rec.setup.local.backend_label": "推理后端:";
|
|
332
|
+
readonly "rec.setup.local.backend_auto": "自动选择(根据运行环境推荐)";
|
|
333
|
+
readonly "rec.setup.local.backend_coreml": "coreml(Apple Silicon 推荐)";
|
|
334
|
+
readonly "rec.setup.local.backend_cuda": "cuda(NVIDIA GPU)";
|
|
335
|
+
readonly "rec.setup.local.choose_backend": "选择后端";
|
|
336
|
+
readonly "rec.setup.local.source_label": "模型下载源:";
|
|
337
|
+
readonly "rec.setup.local.source_auto": "auto(自动探测,优先 HuggingFace,失败回退国内镜像)";
|
|
338
|
+
readonly "rec.setup.local.source_hf": "huggingface(海外直连)";
|
|
339
|
+
readonly "rec.setup.local.source_domestic": "domestic(国内镜像)";
|
|
340
|
+
readonly "rec.setup.local.choose_source": "选择下载源";
|
|
341
|
+
readonly "rec.setup.local.mirror": "自定义模型下载地址(覆盖下载源)";
|
|
342
|
+
readonly "rec.setup.existing": "当前已有配置:mode = {mode}";
|
|
343
|
+
readonly "rec.setup.existing_updated": ",更新于 {updatedAt}";
|
|
344
|
+
readonly "rec.setup.mode_label": "转写模式:";
|
|
345
|
+
readonly "rec.setup.choose_mode": "选择模式";
|
|
346
|
+
readonly "rec.setup.mode_api": "api(云端 model-proxy 长录音)";
|
|
347
|
+
readonly "rec.setup.mode_local": "local(本地 Whisper)";
|
|
348
|
+
readonly "rec.setup.saved": "✓ 配置已保存到 {path}";
|
|
349
|
+
readonly "prompt.light_rule.title": "灯效路由提示:";
|
|
350
|
+
readonly "prompt.light_rule.persistent": "- 当用户表达“收到/当/如果/有某类通知或消息时,亮灯/闪灯/变成某种灯效”时,这是云端持久灯效规则请求,必须调用 {create} 或 {update}。";
|
|
351
|
+
readonly "prompt.light_rule.immediate": "- 当用户要求现在/立即亮灯,或在当前一次性任务完成后亮灯时,必须调用 light_control;不要创建灯效规则。";
|
|
352
|
+
readonly "prompt.light_rule.display": "- 当用户要求\"把内容/文字/结果展示到硬件/屏幕/设备上\"时,同样调用 light_control:展示标题放 title、正文放 reason(二代带屏硬件会把通知标题和正文显示在屏幕上),用户未指定灯效时 segments 用低干扰默认值(单段 steady、低亮度、2–3 秒);不要创建灯效规则,也不要说\"无法在硬件上显示内容\"。";
|
|
353
|
+
readonly "prompt.light_rule.rule_text": "- 创建规则时把用户的自然语言诉求整理成 ruleText;由 Notification Intelligence Service 的独立 Agent 编译和保存规则。";
|
|
354
|
+
readonly "prompt.light_rule.crud": "- 灯效规则的创建、修改、删除和查询都走 lightrules_* 工具;不要手写或编辑 tasks/*/meta.json。";
|
|
355
|
+
readonly "prompt.light_rule.errors": "- 如果 lightrules_* 工具返回错误,必须如实说明本次查询/修改失败;不要使用聊天历史或旧 toolResult 里的规则列表冒充当前云端结果。";
|
|
356
|
+
readonly "prompt.light_rule.language": "- 语言:整段回复以及调用 lightrules_create/update 时的 `ruleText` 参数,都必须使用 replyLanguage(本轮起始用户原文的语言)。优先用用户原话改写成 ruleText。不要因为 App 界面语言或工具 schema 是另一种语言,就把英文诉求译成中文 ruleText(或反过来);禁止中英夹杂。";
|
|
357
|
+
readonly "prompt.reply.language": "- 回复语言:说明文字、表格、代码块/tool 调用样例中的自然语言字符串,都必须使用 replyLanguage(本轮起始用户原文的语言)。工具 schema 或 skill 里若出现另一语言示例,必须翻译后再写入回复;禁止中英夹杂(英文回复中不要出现中文例句或「跑马灯」之类混写)。";
|
|
358
|
+
readonly "locale.updated": "全局界面语言已更新: {locale}";
|
|
359
|
+
readonly "light.validation.must_array": "必须是数组";
|
|
360
|
+
readonly "light.validation.must_not_empty": "不能为空";
|
|
361
|
+
readonly "light.validation.max_segments": "最多 {max} 段";
|
|
362
|
+
readonly "light.validation.segments_json": "segments 必须是合法的 JSON";
|
|
363
|
+
readonly "light.validation.must_object": "必须是对象";
|
|
364
|
+
readonly "light.validation.unsupported_mode": "不支持的模式 '{mode}',可选:{modes}";
|
|
365
|
+
readonly "light.validation.duration": "必须是 ≥0 的数字(0 表示无限时长)";
|
|
366
|
+
readonly "light.validation.color_flow_anchor": "color_flow 至少需要一组非零颜色锚点(color 或 background)";
|
|
367
|
+
readonly "light.validation.byte": "必须是 0–255 的数字";
|
|
368
|
+
readonly "light.validation.brightness_zero": "brightness=0 仅 steady 模式允许;其它模式会在固件侧被过滤";
|
|
369
|
+
readonly "light.validation.must_rgb_brightness": "必须包含 r/g/b/brightness 数值";
|
|
370
|
+
readonly "light.validation.must_rgb": "必须包含 r/g/b 数值";
|
|
371
|
+
readonly "light.validation.rise_ms": "rise_ms 必须是 >0 的数字(不支持 0ms)";
|
|
372
|
+
readonly "light.validation.hold_ms": "hold_ms 必须是 ≥0 的数字";
|
|
373
|
+
readonly "light.validation.fall_ms": "fall_ms 必须是 >0 的数字(不支持 0ms)";
|
|
374
|
+
readonly "light.validation.off_ms": "off_ms 必须是 ≥0 的数字";
|
|
375
|
+
readonly "light.validation.direction": "direction 必须是 ltr 或 rtl";
|
|
376
|
+
readonly "light.validation.window": "window 仅支持 1/2/3";
|
|
377
|
+
readonly "light.validation.non_negative": "必须是 ≥0 的数字";
|
|
378
|
+
readonly "light.validation.color_flow_misuse": "color_flow 仅设置了单一极端纯色前景锚点(无有效底色锚点),实际效果是同色系亮暗环状流动,不是多色调色板流动。若用户期望的是\"单色波浪\",请改用 mode='wave';若期望多色流动,请同时设置 background 作为第二锚点。";
|
|
379
|
+
readonly "light.repeat.ancs_only": "当前 ANCS 路径仅支持 repeat_times=0(无限循环)或 1(播放一轮);N>=2 需非 ANCS 路径";
|
|
380
|
+
readonly "light.repeat.invalid": "repeat_times 必须是 >=0 的整数";
|
|
381
|
+
readonly "light.rule.already_exists": "灯效规则 '{name}' 已存在";
|
|
382
|
+
readonly "light.rule.not_found": "灯效规则 '{name}' 不存在";
|
|
383
|
+
readonly "light.rule.prompt.empty": "当前没有启用任何灯效规则。";
|
|
384
|
+
readonly "light.rule.prompt.intro": "你是一个判断\"通知 → 灯效规则\"是否命中的助手。";
|
|
385
|
+
readonly "light.rule.prompt.list_header": "下面是用户当前启用的全部灯效规则(按创建时间倒序):";
|
|
386
|
+
readonly "light.rule.prompt.task": "任务:根据用户接下来发给你的\"通知\"内容,判断哪些规则被命中。";
|
|
387
|
+
readonly "light.rule.prompt.hit0": "- 命中 0 条:不调用任何工具,直接结束。";
|
|
388
|
+
readonly "light.rule.prompt.hit_n": "- 命中 1 条或多条:对每一条命中的规则调用一次 trigger_light(rule_name)。";
|
|
389
|
+
readonly "light.rule.prompt.no_text": "- 不要回复任何自由文本;判定结果**只**通过 tool calling 表达。";
|
|
390
|
+
readonly "light.rule.prompt.conservative": "- 拿不准的时候倾向于\"不触发\",避免骚扰用户。";
|
|
391
|
+
readonly "light.rule.trigger.simple": "触发\"{rule}\"灯效";
|
|
392
|
+
readonly "light.rule.trigger.group": "{app}群聊\"{conversation}\"";
|
|
393
|
+
readonly "light.rule.trigger.group_app": "{app}群聊";
|
|
394
|
+
readonly "light.rule.trigger.sender_action": "{sender}发来消息";
|
|
395
|
+
readonly "light.rule.trigger.new_message": "收到新消息";
|
|
396
|
+
readonly "light.rule.trigger.detected": "检测到{where}中{action}{detail},触发\"{rule}\"灯效";
|
|
397
|
+
readonly "light.rule.tool.rule_text_desc": "用户原始自然语言规则,语言必须与 replyLanguage 一致(跟用户原文同语言,不要把英文诉求译成中文)。中文例:「收到包含 123 的消息时亮红灯」;English e.g. \"turn on red light when receiving a message containing 123\"";
|
|
398
|
+
readonly "light.setup.next_restart": "请执行: openclaw gateway restart";
|
|
399
|
+
readonly "monitor.readme.description": "## 描述";
|
|
400
|
+
readonly "monitor.readme.guide_title": "## 处理指南";
|
|
401
|
+
readonly "monitor.readme.guide_body": "当 fetch.py 输出匹配的通知时,请:\n1. 阅读匹配到的通知内容\n2. 根据任务描述判断是否需要通知用户\n3. 如需通知用户,使用 message 工具发送摘要";
|
|
402
|
+
readonly "monitor.cron.message": "手机通知已由独立服务实时捕获到 notifications/ 目录的 JSON 文件中。\n执行:python3 tasks/{name}/fetch.py --notifications-dir notifications\n- NO_CHANGE 或 NO_MATCH → 不回复,直接结束。\n- 有输出 → 读 tasks/{name}/README.md 了解如何处理数据并通知用户。";
|
|
403
|
+
readonly "summary_job.keyword.todo": "待办";
|
|
404
|
+
readonly "summary_job.keyword.need": "需要";
|
|
405
|
+
readonly "summary_job.keyword.trouble": "麻烦";
|
|
406
|
+
readonly "summary_job.keyword.confirm": "确认";
|
|
407
|
+
readonly "summary_job.keyword.reply": "回复";
|
|
408
|
+
readonly "summary_job.keyword.approve": "审批";
|
|
409
|
+
readonly "summary_job.keyword.meet": "开会";
|
|
410
|
+
readonly "summary_job.keyword.meeting": "会议";
|
|
411
|
+
readonly "summary_job.keyword.schedule": "安排";
|
|
412
|
+
readonly "summary_job.keyword.deadline": "截止";
|
|
413
|
+
readonly "summary_job.keyword.urgent": "紧急";
|
|
414
|
+
readonly "summary_job.keyword.abnormal": "异常";
|
|
415
|
+
readonly "summary_job.keyword.fail": "失败";
|
|
416
|
+
readonly "summary_job.keyword.risk": "风险";
|
|
417
|
+
readonly "summary_job.none": "无";
|
|
418
|
+
readonly "summary_job.chunk_title": "## 分片 {id}";
|
|
419
|
+
readonly "summary_job.count": "- 数量: {count}";
|
|
420
|
+
readonly "summary_job.time_range": "- 时间范围: {oldest} 至 {newest}";
|
|
421
|
+
readonly "summary_job.top_apps": "- 主要 App: {apps}";
|
|
422
|
+
readonly "summary_job.top_senders": "- 主要发送人/会话: {senders}";
|
|
423
|
+
readonly "summary_job.attention": "### 可能需要关注";
|
|
424
|
+
readonly "summary_job.no_attention": "- 无明显待办、风险或异常样例";
|
|
425
|
+
readonly "summary_job.recent": "### 最近样例";
|
|
426
|
+
readonly "summary_job.none_item": "- 无";
|
|
427
|
+
readonly "summary_job.result_title": "# 通知总结任务 {id}";
|
|
428
|
+
readonly "summary_job.result_total": "- 通知数: {total}";
|
|
429
|
+
readonly "summary_job.result_chunks": "- 分片数: {count}";
|
|
430
|
+
readonly "summary_job.result_chunk_summaries": "## 分片摘要";
|
|
431
|
+
readonly "summary_job.result_chunk_line": "### {id} · {count} 条 · {oldest} 至 {newest}";
|
|
432
|
+
readonly "summary_job.uncommitted": "(未提交摘要)";
|
|
433
|
+
readonly "recording.summary.title": "# 总结";
|
|
434
|
+
readonly "recording.summary.decisions": "结论";
|
|
435
|
+
readonly "recording.summary.todos": "待办";
|
|
436
|
+
readonly "recording.summary.risks": "风险";
|
|
437
|
+
readonly "recording.summary.open_questions": "未决问题";
|
|
438
|
+
readonly "recording.summary.meta_name": "> 录音名称:{name}";
|
|
439
|
+
readonly "recording.summary.meta_duration": "> 时长:{duration}";
|
|
440
|
+
readonly "recording.summary.meta_created": "> 创建时间:{created}";
|
|
441
|
+
readonly "recording.summary.meta_markers": "> 兴趣点数:{count}";
|
|
442
|
+
readonly "recording.marker_heading": "### 兴趣点";
|
|
443
|
+
readonly "recording.error.not_found": "录音不存在: {id}";
|
|
444
|
+
readonly "recording.error.storage_unavailable": "录音存储目录不可用: {path}";
|
|
445
|
+
readonly "recording.error.download_failed": "下载失败";
|
|
446
|
+
readonly "recording.error.empty_body": "响应体为空";
|
|
447
|
+
readonly "recording.error.timeout": "超时";
|
|
448
|
+
readonly "recording.error.interrupted": "转写任务已中断,请重新发起转写";
|
|
449
|
+
readonly "image.error.storage_unavailable": "图片存储目录不可用: {path}";
|
|
450
|
+
readonly "image.error.download_failed": "下载失败";
|
|
451
|
+
readonly "notification.error.storage_unavailable": "通知存储目录不可用: {path}";
|
|
452
|
+
readonly "auth.apikey_missing": "apiKey 未设置";
|
|
453
|
+
readonly "auth.apikey_missing_hint": "apiKey 未设置,请先执行 ntf auth set-api-key <apiKey>(或 {path})";
|
|
454
|
+
readonly "auth.credentials_missing": "API Key 未设置,请先写入 {path},或通过宿主 CLI 执行 ntf auth set-api-key <apiKey>";
|
|
455
|
+
readonly "errors.INVALID_ENV_VALUE": "无效的环境名称: {env},可选值: {available}";
|
|
456
|
+
readonly "errors.INVALID_LOCALE_VALUE": "无效的 locale: {locale},可选值: {locales}";
|
|
457
|
+
readonly "update.notify.failed_title": "插件更新失败";
|
|
458
|
+
readonly "update.notify.in_progress_title": "插件更新正在进行";
|
|
459
|
+
readonly "update.notify.restart_failed_after_update": "插件已更新,但 gateway 自动重启失败";
|
|
460
|
+
readonly "update.notify.restart_failed_prepared": "插件更新已准备,但 gateway 自动重启失败";
|
|
461
|
+
readonly "update.notify.restart_failed_default": "gateway 自动重启失败,请手动重启 openclaw/gateway。";
|
|
462
|
+
readonly "update.notify.pending": "插件更新包已准备完成,正在等待 gateway 重启后应用。";
|
|
463
|
+
readonly "update.notify.applying": "插件更新正在应用中,请稍候。";
|
|
464
|
+
readonly "update.notify.wait_restart": "等待 gateway 重启完成";
|
|
465
|
+
readonly "update.notify.manual_restart_if_stuck": "如果长时间无变化,请手动重启 openclaw/gateway";
|
|
466
|
+
readonly "update.action.manual_restart": "手动重启 openclaw/gateway";
|
|
467
|
+
readonly "update.action.retry_trigger": "重启后重新触发插件更新";
|
|
468
|
+
readonly "update.action.retry_update": "重新触发插件更新";
|
|
469
|
+
readonly "update.action.reinstall_default": "如果持续失败,请用安装脚本重新安装到默认 extensions 目录";
|
|
470
|
+
readonly "update.action.check_mount": "检查插件安装路径是否指向外置盘、网络盘、容器挂载或软链接目录";
|
|
471
|
+
readonly "update.action.close_gateway_retry": "关闭 openclaw/gateway 后重试";
|
|
472
|
+
readonly "update.action.check_busy": "检查插件目录权限或文件占用";
|
|
473
|
+
readonly "update.action.check_av": "确认杀毒软件、终端或编辑器没有占用插件目录";
|
|
474
|
+
readonly "update.action.retry_later": "稍后重试更新";
|
|
475
|
+
readonly "update.action.report": "如果持续失败,请复制错误信息反馈给维护者";
|
|
476
|
+
readonly "update.action.enable_restart": "如需自动重启,请启用 commands.restart";
|
|
477
|
+
readonly "update.action.wait_current": "等待当前更新完成";
|
|
478
|
+
readonly "update.action.wait_apply": "等待 gateway 自动重启并应用更新";
|
|
479
|
+
readonly "update.action.check_network": "检查网络连接";
|
|
480
|
+
readonly "update.action.check_tar": "确认系统 tar 命令可用";
|
|
481
|
+
readonly "update.action.wait_load": "等待 gateway 自动重启并加载新版本";
|
|
482
|
+
readonly "update.fail.timeout": "gateway 未在预期时间内退出,更新尚未应用。请手动重启 openclaw/gateway 后重试。";
|
|
483
|
+
readonly "update.fail.cross_device": "更新安装失败,插件安装目录和临时目录可能位于不同磁盘或挂载点。请重新触发更新;若仍失败,请用安装脚本重新安装到默认 extensions 目录。";
|
|
484
|
+
readonly "update.fail.busy": "更新安装失败,可能是插件目录正在被占用。请关闭 openclaw/gateway 后重试。";
|
|
485
|
+
readonly "update.fail.generic": "更新安装失败,已尝试回滚。请根据错误信息处理后重试。";
|
|
486
|
+
readonly "update.fail.restart_disabled": "gateway 自动重启被配置禁用,请手动重启 openclaw/gateway 后生效。";
|
|
487
|
+
readonly "update.fail.no_sigusr1": "当前宿主不支持自动重启,请手动重启 openclaw/gateway 后生效。";
|
|
488
|
+
readonly "update.fail.bg_start": "更新包已准备完成,但后台安装进程启动失败,更新尚未应用。请稍后重试。";
|
|
489
|
+
readonly "update.fail.windows": "Windows 不支持自动重启 gateway,请手动重启后更新生效。";
|
|
490
|
+
readonly "update.fail.windows_ready": "重启完成后插件会自动应用新版本";
|
|
491
|
+
readonly "update.fail.restart_unavailable": "gateway 自动重启不可用,更新尚未应用。";
|
|
492
|
+
readonly "update.fail.enable_restart_retry": "启用 gateway 自动重启后重试更新";
|
|
493
|
+
readonly "update.msg.not_pending": "更新 {id} 状态不是 pending,无法应用";
|
|
494
|
+
readonly "update.msg.missing_package": "更新 {id} 缺少 packageDir,无法应用";
|
|
495
|
+
readonly "update.msg.applied": "已应用更新到 {version}";
|
|
496
|
+
readonly "update.msg.apply_failed": "更新应用失败: {error}";
|
|
497
|
+
readonly "update.msg.invalid_version": "非法版本号: {version}";
|
|
498
|
+
readonly "update.msg.busy": "已有更新正在进行({version},{status}/{phase}),请稍后再试。";
|
|
499
|
+
readonly "update.msg.busy_suggestion": "等待当前更新完成,或重启 openclaw/gateway 后再试。";
|
|
500
|
+
readonly "update.msg.download_failed": "下载失败 (HTTP {status}): {url}";
|
|
501
|
+
readonly "update.msg.download_suggestion": "插件包下载失败,请检查网络或稍后重试。";
|
|
502
|
+
readonly "update.msg.extract_failed": "解压失败: {error}";
|
|
503
|
+
readonly "update.msg.extract_suggestion": "插件包解压失败,请确认系统 tar 可用后重试。";
|
|
504
|
+
readonly "update.msg.prepared": "已准备更新到 {version}";
|
|
505
|
+
readonly "update.msg.prepared_suggestion": "更新包已准备完成,gateway 重启后会自动应用。";
|
|
506
|
+
readonly "update.msg.exec_error": "更新执行异常: {error}";
|
|
507
|
+
readonly "update.msg.prepared_manual": "已准备更新到 {version},请手动重启 openclaw/gateway 后生效";
|
|
508
|
+
readonly "update.msg.prepared_no_restart": "已准备更新到 {version},但 gateway 自动重启不可用,更新尚未应用";
|
|
509
|
+
readonly "update.msg.bg_failed": "更新准备完成但后台安装进程启动失败:{error}";
|
|
510
|
+
readonly "update.msg.applied_restarting": "已应用更新到 {version},正在重启 gateway";
|
|
511
|
+
readonly "recording.error.invalid_transition": "非法状态转换: {from} → {to}";
|
|
512
|
+
readonly "light.api.not_configured": "灯效 API 未配置,请确认构建时已封装 OPENCLAW_HOST_* / LIGHT_APP_KEY / LIGHT_TEMPLATE_ID";
|
|
513
|
+
readonly "update.version.fallback": "目标版本";
|
|
514
|
+
readonly "update.plugin_name": "消息通知";
|
|
515
|
+
readonly "update.tool.version_desc": "目标版本号,如 1.11.0";
|
|
516
|
+
readonly "light.rule.match.intro": "你是\"手机通知 → 灯效规则\"命中匹配助手。";
|
|
517
|
+
readonly "light.rule.match.low_latency": "这是低延迟分类任务;不要输出推理过程、解释、Markdown 或 <think> 内容。";
|
|
518
|
+
readonly "light.rule.match.no_guess": "只根据规则 description 和通知字段判断,不要猜测。";
|
|
519
|
+
readonly "light.rule.match.conservative": "拿不准就不触发。";
|
|
520
|
+
readonly "light.rule.match.output_format": "输出必须是纯 JSON,格式固定为:";
|
|
521
|
+
readonly "light.rule.match.output_schema": "{\"matches\":[{\"i\":<通知下标>,\"rule\":\"<规则name>\"}]}";
|
|
522
|
+
readonly "light.rule.match.zero_or_exact": "0 命中输出 {\"matches\":[]}; rule 必须精确等于下方 name。";
|
|
523
|
+
readonly "light.rule.match.tips_header": "匹配要点:";
|
|
524
|
+
readonly "light.rule.match.tip_sender": "- 发件人/联系人规则:优先看 sender,其次 conversation_name、title、content 开头的 \"X:\"/\"X:\" 前缀;忽略空白、emoji 和中英文标点差异。";
|
|
525
|
+
readonly "light.rule.match.tip_app": "- App 通知规则:看 app/appDisplayName 是否符合 description。";
|
|
526
|
+
readonly "light.rule.match.tip_keyword": "- 关键词规则:看 title + content 是否包含或语义等价于 description 指定的关键词。";
|
|
527
|
+
readonly "light.rule.match.tip_semantic": "- 语义规则:综合 title + content 判断;不要把正文里随便提到的人名当发件人。";
|
|
528
|
+
readonly "light.rule.match.rules_header": "当前启用规则:";
|
|
529
|
+
readonly "light.rule.match.notifications_header": "以下 {count} 条新手机通知,按顺序编号:";
|
|
530
|
+
readonly "light.rule.match.ask_json": "请判断每条通知命中了哪些规则,按约定格式输出 JSON。";
|
|
531
|
+
readonly "light.rule.api.jwt_plugin_path": "{message}。请求已命中插件侧 API {path},插件侧鉴权应只使用 X-Api-Key-Id;当前 401 来自云端 JWT 鉴权层,说明该插件前缀没有被网关/服务端放行到 API Key 鉴权。请后端检查网关白名单和 Notification Intelligence Service 插件路由:{url}";
|
|
532
|
+
readonly "light.rule.api.jwt_app_path": "{message}。灯效规则应调用插件侧 API /api/plugin/notification-intelligence/light-rules,并通过 X-Api-Key-Id 鉴权;当前请求可能命中了 App 端 JWT 接口:{url}";
|
|
533
|
+
readonly "tool.light.description": "立即控制硬件灯效(一次性执行,不会创建或保存通知触发规则),支持 1–12 段顺序灯效,每段独立参数(5 种模式:波浪/呼吸/频闪/常亮/流光)。Tool 内部自动量化为嵌入式协议定义的离散档位,并按模式精简为变长 ANCS 控制序列,通过 HTTP 接口下发灯效指令。当用户说\"开灯\"、\"换个灯效\"、\"把灯调成红色\"、\"营造氛围\"、\"测试/预览灯效\"等与当前即时灯光控制相关的表达时调用。二代带屏硬件还会把本次下发通知的标题和正文显示在屏幕上:当用户说\"把 XXX 显示/展示到硬件/屏幕/设备上\"等内容展示类请求时,同样调用本工具——展示标题放 title、展示正文放 reason;用户未指定灯效时 segments 用低干扰默认值(单段 steady、低亮度、2–3 秒)。如果用户说\"收到某类通知/消息时亮灯/闪灯/变灯效\",那是持久灯效规则,改用 {createTool} 或 {updateTool}。";
|
|
534
|
+
readonly "tool.light.segments_desc": "灯效段序列,1–12 段,按顺序播放";
|
|
535
|
+
readonly "tool.light.mode_desc": "灯效模式:wave 波浪(单色跑马,前景色+可选底色)/ breath 呼吸 / strobe 频闪 / steady 常亮 / color_flow 流光(调色板沿圆周流动,1~2 个颜色锚点插值;**不是彩虹**,无法生成 7 色彩虹波浪)。易错对照:用户说\"红色/蓝色波浪\"等单一颜色波浪 → 必须用 wave,不要用 color_flow;用户说\"彩虹/七彩/rainbow\" → 固件不支持真正的 7 色彩虹,需告知限制并给出近似方案(双锚点 color_flow 或多段 wave 轮播),禁止静默用 color_flow 单锚点冒充彩虹。";
|
|
536
|
+
readonly "tool.light.duration_s_desc": "本段持续时长(秒),0 表示无限时长。推荐离散值:0.5/1/2/3/5/6/8/16/24/32/48,建议单段 ≤8s 省电";
|
|
537
|
+
readonly "tool.light.brightness_desc": "前景亮度 0–255,必填;brightness=0 仅 steady 模式有效(显式灭灯)";
|
|
538
|
+
readonly "tool.light.color_desc": "前景色 RGB,必填;color_flow 下作为第一颜色锚点,至少 color/background 其一非零";
|
|
539
|
+
readonly "tool.light.interval_ms_desc": "步进间隔(ms),wave/strobe/color_flow 有效,默认 200。量化档位:50/100/200/300/500/600/800/1600/2400/3200/4800";
|
|
540
|
+
readonly "tool.light.direction_desc": "波浪/流光方向,wave/color_flow 有效,默认 ltr";
|
|
541
|
+
readonly "tool.light.window_desc": "wave:窗口灯数,默认 2;color_flow:调色板平移步幅(速度)";
|
|
542
|
+
readonly "tool.light.breath_rise_ms_desc": "上升时间(ms),量化到 1040/1560/2080/2600/3100/4160";
|
|
543
|
+
readonly "tool.light.breath_hold_ms_desc": "保持最高亮度时间(ms),支持 0ms";
|
|
544
|
+
readonly "tool.light.breath_fall_ms_desc": "下降时间(ms),量化到 1040/1560/2080/2600/3100/4160";
|
|
545
|
+
readonly "tool.light.breath_off_ms_desc": "熄灭时间(ms),支持 0ms";
|
|
546
|
+
readonly "tool.light.breath_timing_desc": "呼吸四段时间,仅 breath 有效;rise/fall 量化档位:1040/1560/2080/2600/3100/4160,hold/off 额外支持 0ms";
|
|
547
|
+
readonly "tool.light.background_desc": "底色 RGB + 亮度,wave 有效为底色层;color_flow 有效为第二颜色锚点(与前景色插值生成多色调色板)";
|
|
548
|
+
readonly "tool.light.background_brightness_desc": "底色亮度,量化档位:0/32/64/96/128/192/255";
|
|
549
|
+
readonly "tool.light.reason_desc": "结合对话上下文,简要说明为什么要亮灯(例如:用户心情低落想要温暖氛围、庆祝生日、提醒喝水等)。这个字段帮助记录每次亮灯的意图和动机。二代带屏硬件会把它作为通知正文与 title 一起显示在屏幕上:当用户意图是\"展示内容\"时,reason 填要展示的正文内容;沿用手机推送通知的长度限制,超长会被截断。";
|
|
550
|
+
readonly "tool.light.title_desc": "对本次亮灯的简短标题/摘要(例如:温暖氛围、生日庆祝、喝水提醒)。二代带屏硬件会把它作为通知标题显示在屏幕上:当用户意图是\"展示内容\"时,title 填要展示的标题或主要内容;沿用手机推送通知的长度限制,超长会被截断,保持简短。不填时默认回退到 reason。";
|
|
551
|
+
readonly "tool.light.repeat_desc": "兼容旧参数。true = 无限循环,false/不填 = 一轮;若同时提供 repeat_times,则以后者为准";
|
|
552
|
+
readonly "tool.light.repeat_times_desc": "整条组合重复次数:0 = 无限循环,1 = 播放一轮。当前 ANCS 路径不支持 N>=2";
|
|
553
|
+
readonly "tool.lightrules.list_desc": "列出云端 Notification Intelligence Service 中当前账号的灯效规则(包含 enabled/disabled 状态)。当用户说“列出灯效规则”“有哪些灯效规则”“查看规则”等时调用。";
|
|
554
|
+
readonly "tool.lightrules.create_desc": "创建一条云端持久灯效规则。必须把用户原始自然语言诉求整理成 ruleText 传入,由 Notification Intelligence Service 的独立 Agent 编译 name/title/description/segments/repeat_times 并保存。ruleText 与回复中的示例语言必须与 replyLanguage 一致(用户用英文提问时不要粘贴中文例句)。当用户说收到某类通知/消息时亮灯/闪灯、新增灯效规则时调用。";
|
|
555
|
+
readonly "tool.lightrules.update_desc": "修改云端灯效规则。优先传 id;如果只知道展示名或 name,先调用 lightrules_list 获取规则列表。传 ruleText 表示让独立 Agent 重新编译规则语义;传 title/enabled/description/segments/repeat_times 表示普通字段局部更新。ruleText 不能和普通字段在同一次调用中混用。";
|
|
556
|
+
readonly "tool.lightrules.delete_desc": "删除一条云端灯效规则(云端当前实现为软删除)。优先传 id;如果不确定 id,先调用 lightrules_list。";
|
|
557
|
+
readonly "tool.lightrules.segments_desc": "灯效段序列,1-12 段,按顺序播放";
|
|
558
|
+
readonly "tool.lightrules.mode_desc": "灯效模式:wave 波浪 / breath 呼吸 / strobe 频闪 / steady 常亮 / color_flow 流光";
|
|
559
|
+
readonly "tool.lightrules.duration_s_desc": "持续时长(秒),0 表示无限";
|
|
560
|
+
readonly "tool.lightrules.param.id_desc": "云端规则 ID(优先使用)";
|
|
561
|
+
readonly "tool.lightrules.param.name_desc": "规则语义化 name,兼容旧调用";
|
|
562
|
+
readonly "tool.lightrules.param.rule_id_desc": "规则 ID,兼容字段";
|
|
563
|
+
readonly "tool.lightrules.param.rule_name_desc": "规则 name,兼容字段";
|
|
564
|
+
readonly "tool.lightrules.param.rule_text_desc": "新的自然语言规则;示例语言必须与 replyLanguage 一致;传入后由独立 Agent 重编译";
|
|
565
|
+
readonly "tool.lightrules.param.title_desc": "新的展示名/短标题(可选)";
|
|
566
|
+
readonly "tool.lightrules.param.description_desc": "新的触发条件描述(可选)";
|
|
567
|
+
readonly "tool.lightrules.param.enabled_desc": "true=启用,false=禁用";
|
|
568
|
+
readonly "tool.lightrules.param.segments_desc": "新的灯效段序列(可选,不填则保持不变)";
|
|
569
|
+
readonly "tool.lightrules.param.repeat_times_desc": "新的重复次数:0=无限循环,1=播放一轮";
|
|
570
|
+
readonly "tool.lightrules.param.repeat_desc": "历史兼容字段:true=无限循环,false=播放一轮";
|
|
571
|
+
readonly "tool.lightrules.error.rule_scope": "持久灯效规则必须包含通知、消息、来电等触发条件;一次性亮灯请调用 light_control";
|
|
572
|
+
readonly "tool.lightrules.error.rule_text_required": "ruleText 为必填项";
|
|
573
|
+
readonly "tool.lightrules.error.rule_text_empty": "ruleText 必须为非空字符串";
|
|
574
|
+
readonly "tool.lightrules.error.rule_text_mixed": "ruleText 不能与 title/enabled/description/segments/repeat_times/repeat 在同一次调用中混用";
|
|
575
|
+
readonly "tool.lightrules.error.title_empty": "title 必须为非空字符串";
|
|
576
|
+
readonly "tool.lightrules.error.description_type": "description 必须为字符串";
|
|
577
|
+
readonly "tool.lightrules.error.enabled_type": "enabled 必须为布尔值";
|
|
578
|
+
readonly "tool.lightrules.error.repeat_times_type": "repeat_times 必须为数字";
|
|
579
|
+
readonly "tool.lightrules.error.repeat_type": "repeat 必须为布尔值";
|
|
580
|
+
readonly "tool.lightrules.error.update_field_required": "至少需要提供一个更新字段";
|
|
581
|
+
readonly "tool.lightrules.error.id_required_update": "id 为必填项;如有需要先调用 lightrules_list";
|
|
582
|
+
readonly "tool.lightrules.error.id_required_delete": "id 为必填项";
|
|
583
|
+
readonly "tool.lightrules.error.unknown": "未知错误";
|
|
584
|
+
readonly "update.tool.description": "将 phone-notifications 插件更新到指定版本。仅在用户明确同意更新后调用。更新完成后会自动尝试重启 gateway;如宿主不支持,则需手动重启。";
|
|
585
|
+
readonly "update.notice.new_version_available": "[系统通知] phone-notifications 插件有新版本 {latest} 可用(当前版本 {current})。\n请用自然语言在合适时机告知用户,若用户同意更新,调用 plugin-update tool 并传入 version 参数。若用户拒绝,不再重复提醒。";
|
|
586
|
+
readonly "update.stale.base": "[系统通知] phone-notifications 插件已更新到 {diskVersion} 并安装完成,但当前进程仍在运行旧版本 {runningVersion}:宿主的进程内重启(SIGUSR1 / gateway.restart)不会重新加载插件代码。";
|
|
587
|
+
readonly "update.stale.restart_scheduled": "系统已自动触发一次完整重启,若几分钟后此提示仍出现,说明自动重启未生效,请告知用户需要完整重启 openclaw 进程(例如 systemctl restart openclaw,或结束进程后由服务管理器拉起)。";
|
|
588
|
+
readonly "update.stale.manual_required": "请告知用户需要完整重启 openclaw 进程才能生效{reason}:例如 systemctl restart openclaw,或结束 openclaw 进程后由服务管理器拉起;仅执行进程内的 gateway 重启无效。";
|
|
589
|
+
readonly "update.stale.reason_suffix": "({reason})";
|
|
590
|
+
readonly "update.stale.reason.restart_disabled": "commands.restart=false,自动重启被配置禁用";
|
|
591
|
+
readonly "update.stale.reason.already_attempted": "已为 {diskVersion} 自动触发过一次完整重启但未生效(宿主可能未由 service manager 托管)";
|
|
592
|
+
readonly "update.stale.reason.record_failed": "无法记录自动重启尝试({error}),为避免重启循环不再自动触发";
|
|
593
|
+
readonly "recording.error.audio_download_failed": "音频下载失败: {error}";
|
|
594
|
+
readonly "recording.error.audio_download_exception": "音频下载异常: {error}";
|
|
595
|
+
readonly "recording.http.disabled": "POST /recordings 已停用,请改用 gateway 方法 recordings.result.write";
|
|
596
|
+
readonly "image.error.sync_failed": "图片同步失败: {error}";
|
|
597
|
+
readonly "image.error.download_msg": "图片下载失败: {error}";
|
|
598
|
+
readonly "image.error.empty_body": "响应体为空";
|
|
599
|
+
readonly "image.error.size_limit": "图片超过上限 {maxBytes} 字节";
|
|
600
|
+
readonly "image.error.timeout": "下载超时";
|
|
601
|
+
readonly "apns.error.config_missing": "APNs 鉴权配置缺失:请设置 OPENCLAW_APNS_TEAM_ID、OPENCLAW_APNS_KEY_ID、OPENCLAW_APNS_PRIVATE_KEY_P8";
|
|
602
|
+
readonly "tunnel.slim.middle_omitted": "……[truncated, {omitted} chars omitted]……";
|
|
603
|
+
readonly "tunnel.slim.preview_truncated": "…[truncated {omitted} chars]";
|
|
604
|
+
readonly "ns.error.positive_int": "{field} 必须是大于 0 的整数";
|
|
605
|
+
readonly "ns.error.iso_time": "{field} 必须是合法 ISO 8601 时间";
|
|
606
|
+
readonly "ns.error.conversation_type": "conversationType 只能是 group 或 private";
|
|
607
|
+
readonly "ns.error.from_after_to": "from 不能晚于 to";
|
|
608
|
+
readonly "ns.none": "无";
|
|
609
|
+
readonly "ns.sep": ";";
|
|
610
|
+
readonly "ns.chunk.title": "### 分片 {id}";
|
|
611
|
+
readonly "ns.chunk.count": "- 数量: {count}";
|
|
612
|
+
readonly "ns.chunk.top_apps": "- 主要 App: {apps}";
|
|
613
|
+
readonly "ns.chunk.top_senders": "- 主要发送人/会话: {senders}";
|
|
614
|
+
readonly "ns.chunk.attention": "可能需要关注:";
|
|
615
|
+
readonly "ns.chunk.no_attention": "- 无明显待办、风险或异常样例";
|
|
616
|
+
readonly "ns.chunk.recent": "最近样例:";
|
|
617
|
+
readonly "ns.chunk.none_item": "- 无";
|
|
618
|
+
readonly "ns.md.title": "# 通知总结";
|
|
619
|
+
readonly "ns.md.total": "- 通知数: {total}";
|
|
620
|
+
readonly "ns.md.cap_overflow": "- 覆盖上限: 请求数量超过上限,已按最近 {limit} 条处理";
|
|
621
|
+
readonly "ns.md.cap_recent": "- 覆盖上限: 最近 {limit} 条";
|
|
622
|
+
readonly "ns.md.time_range": "- 时间范围: {oldest} 至 {newest}";
|
|
623
|
+
readonly "ns.md.scan": "- 扫描: {days} 天 / {items} 条,命中 {matched} 条,用时 {elapsedMs}ms";
|
|
624
|
+
readonly "ns.md.distribution": "## 总体分布";
|
|
625
|
+
readonly "ns.md.top_apps": "- 主要 App: {apps}";
|
|
626
|
+
readonly "ns.md.top_senders": "- 主要发送人/会话: {senders}";
|
|
627
|
+
readonly "ns.md.top_conversations": "- 主要会话: {conversations}";
|
|
628
|
+
readonly "ns.md.attention": "## 可能需要关注";
|
|
629
|
+
readonly "ns.md.no_attention": "- 未发现明显待办、风险、失败或紧急样例";
|
|
630
|
+
readonly "ns.md.chunk_summaries": "## 分片摘要";
|
|
631
|
+
readonly "ns.md.no_notifications": "无通知";
|
|
632
|
+
readonly "ns.display.title": "# 未读通知总结";
|
|
633
|
+
readonly "ns.display.empty": "没有找到符合条件的通知。";
|
|
634
|
+
readonly "ns.display.scan_range": "扫描范围:{days} 天 / {items} 条,用时 {elapsedMs}ms。";
|
|
635
|
+
readonly "ns.display.coverage_overflow": "请求数量超过上限,已按最近 {limit} 条处理";
|
|
636
|
+
readonly "ns.display.coverage_hit": "最近 {limit} 条内命中 {total} 条";
|
|
637
|
+
readonly "ns.display.summary_line": "共整理 {total} 条通知,覆盖 {coverage}。";
|
|
638
|
+
readonly "ns.display.time_range": "时间范围:{oldest} 至 {newest}。";
|
|
639
|
+
readonly "ns.display.sources": "## 主要来源";
|
|
640
|
+
readonly "ns.display.app": "- App:{apps}";
|
|
641
|
+
readonly "ns.display.sender": "- 发送人/会话:{senders}";
|
|
642
|
+
readonly "ns.display.conversation": "- 会话:{conversations}";
|
|
643
|
+
readonly "ns.display.attention": "## 需要关注";
|
|
644
|
+
readonly "ns.display.recent": "## 最近样例";
|
|
645
|
+
readonly "ns.progress.scanning": "正在扫描通知...";
|
|
646
|
+
readonly "ns.progress.snapshot": "已找到 {total} 条通知,拆成 {chunks} 个分片";
|
|
647
|
+
readonly "ns.progress.summarizing": "正在整理通知摘要:{done}/{total} 个分片";
|
|
648
|
+
readonly "ns.progress.merging": "正在合并摘要...";
|
|
649
|
+
readonly "ns.progress.complete": "通知摘要已完成,正在推送总结内容...";
|
|
650
|
+
readonly "tool.notifications.summary_desc": "总结手机通知/消息并在执行过程中广播 notification.summary.status 进度事件。当用户要求总结最近通知、未读通知、最近消息、约 N 条通知时优先调用。如果用户给出约 N 条/最近 N 条,必须把 N 原样传给 limit;未读通知没有独立过滤字段时按最近通知处理,不要自行放大数量。完成时会广播 notification.summary.result,携带可直接展示的完整总结 Markdown。返回的是压缩后的 Markdown 摘要输入,后续回复应基于它提炼总结,避免逐条罗列。";
|
|
651
|
+
readonly "tool.notifications.from_desc": "开始时间,ISO 8601,例如 2026-06-13T09:00:00+08:00";
|
|
652
|
+
readonly "tool.notifications.to_desc": "结束时间,ISO 8601";
|
|
653
|
+
readonly "tool.notifications.app_desc": "按应用名或显示名过滤";
|
|
654
|
+
readonly "tool.notifications.sender_desc": "按发送人/标题过滤";
|
|
655
|
+
readonly "tool.notifications.conversation_type_desc": "按会话类型过滤";
|
|
656
|
+
readonly "tool.notifications.keyword_desc": "在标题、正文、发送人、会话名中搜索关键词";
|
|
657
|
+
readonly "tool.notifications.limit_desc": "纳入摘要的最大通知条数;默认 700,上限 3000";
|
|
658
|
+
readonly "tool.notifications.chunk_size_desc": "每个分片的通知条数;默认 150";
|
|
659
|
+
readonly "ns.event.complete_message": "通知总结已完成";
|
|
660
|
+
readonly "ns.event.complete_title": "未读通知总结";
|
|
661
|
+
readonly "ns.event.failed": "通知总结失败:{message}";
|
|
662
|
+
readonly "ns.event.summary_failed": "通知摘要失败:{message}";
|
|
663
|
+
readonly "ns.event.started": "已开始通知摘要任务...";
|
|
664
|
+
readonly "ns.event.storage_not_ready": "通知存储服务尚未就绪";
|
|
665
|
+
};
|
|
666
|
+
//# sourceMappingURL=zh-CN.d.ts.map
|