@qingchencloud/openclaw-zh 2026.1.29-zh.202601301427 → 2026.1.30-zh.1

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 CHANGED
@@ -43,36 +43,112 @@
43
43
 
44
44
  ---
45
45
 
46
+ ## 📸 汉化效果预览
47
+
48
+ <p align="center">
49
+ <img src="docs/image/5.png" alt="概览仪表板" width="100%">
50
+ <br>
51
+ <em>📊 概览仪表板 - 网关状态、实例监控、快捷操作一目了然</em>
52
+ </p>
53
+
54
+ <details>
55
+ <summary><b>🖼️ 查看更多截图</b></summary>
56
+
57
+ <p align="center">
58
+ <img src="docs/image/1.png" alt="对话界面" width="100%">
59
+ <br>
60
+ <em>💬 对话界面 - 与 AI 助手实时交互</em>
61
+ </p>
62
+
63
+ <p align="center">
64
+ <img src="docs/image/4.png" alt="渠道管理" width="100%">
65
+ <br>
66
+ <em>📱 渠道管理 - WhatsApp、Telegram、Discord 等全平台支持</em>
67
+ </p>
68
+
69
+ <p align="center">
70
+ <img src="docs/image/2.png" alt="配置中心" width="100%">
71
+ <br>
72
+ <em>⚙️ 配置中心 - 30+ 配置项完整汉化</em>
73
+ </p>
74
+
75
+ <p align="center">
76
+ <img src="docs/image/3.png" alt="节点配置" width="100%">
77
+ <br>
78
+ <em>🖥️ 节点配置 - 执行审批、安全策略管理</em>
79
+ </p>
80
+
81
+ <p align="center">
82
+ <img src="docs/image/6.png" alt="技能插件" width="100%">
83
+ <br>
84
+ <em>🔌 技能插件 - 1Password、Apple Notes 等丰富扩展</em>
85
+ </p>
86
+
87
+ </details>
88
+
89
+ ---
90
+
46
91
  ## ⚡ 一键安装汉化版
47
92
 
48
93
  ### Windows (PowerShell)
49
94
 
50
95
  ```powershell
51
- powershell -c "irm https://cdn.jsdelivr.net/gh/1186258278/OpenClawChineseTranslation@main/install.ps1 | iex"
96
+ # 下载并执行安装脚本
97
+ Invoke-WebRequest -Uri "https://cdn.jsdelivr.net/gh/1186258278/OpenClawChineseTranslation@main/install.ps1" -OutFile "install.ps1"; .\install.ps1
52
98
  ```
53
99
 
54
100
  ### Linux / macOS
55
101
 
56
102
  ```bash
57
- curl -fsSL https://cdn.jsdelivr.net/gh/1186258278/OpenClawChineseTranslation@main/install.sh | bash
103
+ # 下载并执行安装脚本
104
+ curl -fsSL -o install.sh https://cdn.jsdelivr.net/gh/1186258278/OpenClawChineseTranslation@main/install.sh && bash install.sh
58
105
  ```
59
106
 
60
- > 💡 使用 jsDelivr CDN 加速,解决国内网络问题
107
+ > 💡 使用 jsDelivr CDN 加速 | 🔒 [查看脚本源码](https://github.com/1186258278/OpenClawChineseTranslation/blob/main/install.sh)
61
108
 
62
109
  ---
63
110
 
64
111
  ## 📦 其他安装方式
65
112
 
113
+ ### 版本选择
114
+
115
+ 我们提供两个版本源,根据需求选择:
116
+
117
+ | 版本 | npm 标签 | 更新频率 | 适用场景 |
118
+ |------|----------|----------|----------|
119
+ | **稳定版** | `@latest` | 手动发布 | 生产环境,经过测试,推荐使用 |
120
+ | **最新版** | `@nightly` | 每小时自动 | 测试新功能,追踪上游最新代码 |
121
+
66
122
  ### 方式 1: npm 安装
67
123
 
68
124
  ```bash
125
+ # 稳定版(推荐)
69
126
  npm install -g @qingchencloud/openclaw-zh@latest
127
+
128
+ # 最新版(每小时更新,追踪上游)
129
+ npm install -g @qingchencloud/openclaw-zh@nightly
70
130
  ```
71
131
 
72
132
  ### 方式 2: 手动下载
73
133
 
74
134
  访问 [Releases 页面](https://github.com/1186258278/OpenClawChineseTranslation/releases) 下载最新版本。
75
135
 
136
+ ### 方式 3: Docker 部署
137
+
138
+ ```bash
139
+ # 拉取并运行 (推荐)
140
+ docker run -d \
141
+ --name openclaw \
142
+ -p 18789:18789 \
143
+ -v openclaw-data:/home/node/.openclaw \
144
+ ghcr.io/qingchencloud/openclaw-zh:latest
145
+
146
+ # 访问 Dashboard
147
+ # http://localhost:18789
148
+ ```
149
+
150
+ > 📖 详细 Docker 配置请参考下方 [Docker 部署指南](#-docker-部署指南)
151
+
76
152
  ---
77
153
 
78
154
  ## 🚀 快速开始
@@ -107,15 +183,76 @@ openclaw --help # 查看帮助
107
183
 
108
184
  ## ✨ 汉化内容
109
185
 
110
- 我们汉化了 OpenClaw 的核心交互界面:
186
+ 我们提供了**深度汉化**,覆盖 **CLI 命令行** + **Dashboard 网页控制台** 两大核心界面。
187
+
188
+ ### 📊 汉化统计
189
+
190
+ | 指标 | 数量 |
191
+ |------|------|
192
+ | 📁 翻译文件 | **35+** 个 |
193
+ | 📝 翻译规则 | **970+** 条 |
194
+ | 🎯 覆盖模块 | **45+** 个 |
195
+
196
+ ### 🖥️ CLI 命令行 (14 个模块)
111
197
 
112
- | 模块 | 说明 | 状态 |
198
+ | 分类 | 模块 | 说明 |
199
+ |------|------|------|
200
+ | **CLI** | 启动横幅 | 标题、版本信息、有趣的标语口号 |
201
+ | **CLI** | 帮助信息 | 命令说明、参数提示、汉化官网链接 |
202
+ | **向导** | 初始化引导 | 完整的 onboard 流程 |
203
+ | **向导** | 安全警告 | 权限警告、风险确认对话框 |
204
+ | **向导** | 完成提示 | 汉化版官网引导 |
205
+ | **TUI** | 等待动画 | 有趣的中文等待短语(如"神游八方中") |
206
+ | **TUI** | 斜杠命令 | /help, /status 等命令说明 |
207
+ | **命令** | status | 状态概览、安全审计、通道、会话 |
208
+ | **命令** | update | 更新进度、结果显示 |
209
+ | **命令** | skills | 技能列表、详情、安装选项 |
210
+ | **命令** | channels | 聊天通道、认证提供商列表 |
211
+ | **命令** | doctor | 诊断命令、安全审计警告 |
212
+ | **命令** | uninstall | 卸载提示、清理选项 |
213
+ | **命令** | 认证配置 | API 密钥、模型选择提示 |
214
+
215
+ ### 🌐 Dashboard 网页控制台 (31 个模块)
216
+
217
+ | 分类 | 模块 | 说明 |
113
218
  |------|------|------|
114
- | CLI 横幅 | 启动画面、标语 | |
115
- | 初始化向导 | 完整的 onboard 流程 | |
116
- | 安全提示 | 权限警告、确认对话框 | |
117
- | 认证配置 | API 密钥、模型选择提示 | |
118
- | 帮助信息 | 命令帮助、错误提示 | |
219
+ | **主布局** | 顶栏/侧栏 | 品牌标识、健康状态、导航菜单 |
220
+ | **主布局** | 资源链接 | **汉化官网**、GitHub 仓库链接 |
221
+ | **导航** | 顶部标签页 | 对话、概览、渠道、实例、会话等 |
222
+ | **对话** | 聊天界面 | 消息输入、发送按钮、工具卡片 |
223
+ | **概览** | 系统状态 | 运行时间、活跃会话、模型列表 |
224
+ | **会话** | 会话管理 | 会话列表、详情、存档操作 |
225
+ | **渠道** | 消息渠道 | WhatsApp、Telegram、Discord 等全部渠道卡片 |
226
+ | **技能** | 技能管理 | 已安装、可用技能、详情页 |
227
+ | **节点** | 节点管理 | 本地/远程节点、浏览器配置、审批策略 |
228
+ | **配置** | 配置页面 | **31 个配置分区**完整翻译 |
229
+ | **配置** | 表单元素 | 所有字段标签、帮助文本、占位符 |
230
+ | **配置** | 动态标签 | 300+ 动态生成的标签翻译映射 |
231
+ | **定时任务** | 调度器 | 任务列表、运行状态、操作按钮 |
232
+ | **日志** | 日志查看 | 筛选、搜索、导出功能 |
233
+ | **调试** | 调试工具 | 快照、手动 RPC、事件日志 |
234
+ | **实例** | 实例管理 | 已连接实例、存在信标 |
235
+
236
+ ### 📋 配置页面完整翻译 (31 个分区)
237
+
238
+ | 分区 | 中文名 | 分区 | 中文名 |
239
+ |------|--------|------|--------|
240
+ | env | 环境 | update | 更新 |
241
+ | agents | 代理 | auth | 身份验证 |
242
+ | channels | 渠道 | messages | 消息 |
243
+ | commands | 命令 | hooks | 钩子 |
244
+ | skills | 技能 | tools | 工具 |
245
+ | gateway | 网关 | wizard | 设置向导 |
246
+ | meta | 元数据 | diagnostics | 诊断 |
247
+ | logging | 日志 | browser | 浏览器 |
248
+ | ui | 界面 | models | 模型 |
249
+ | nodeHost | 节点主机 | bindings | 绑定 |
250
+ | broadcast | 广播 | audio | 音频 |
251
+ | media | 媒体 | approvals | 审批 |
252
+ | session | 会话 | cron | 定时任务 |
253
+ | web | 网页 | discovery | 发现 |
254
+ | canvasHost | 画布主机 | talk | 语音 |
255
+ | plugins | 插件 | | |
119
256
 
120
257
  **注意**:与 AI 的对话内容取决于你使用的模型,不在汉化范围内。
121
258
 
@@ -131,6 +268,178 @@ openclaw --help # 查看帮助
131
268
 
132
269
  ---
133
270
 
271
+ ## 🐳 Docker 部署指南
272
+
273
+ ### 快速启动
274
+
275
+ ```bash
276
+ # 基础运行
277
+ docker run -d \
278
+ --name openclaw \
279
+ -p 18789:18789 \
280
+ ghcr.io/qingchencloud/openclaw-zh:latest
281
+
282
+ # 带数据持久化
283
+ docker run -d \
284
+ --name openclaw \
285
+ -p 18789:18789 \
286
+ -v openclaw-data:/home/node/.openclaw \
287
+ ghcr.io/qingchencloud/openclaw-zh:latest
288
+ ```
289
+
290
+ ### 使用 Docker Compose
291
+
292
+ 创建 `docker-compose.yml`:
293
+
294
+ ```yaml
295
+ version: '3.8'
296
+ services:
297
+ openclaw:
298
+ image: ghcr.io/qingchencloud/openclaw-zh:latest
299
+ container_name: openclaw
300
+ ports:
301
+ - "18789:18789"
302
+ volumes:
303
+ - openclaw-data:/home/node/.openclaw
304
+ environment:
305
+ - OPENCLAW_GATEWAY_TOKEN=your-secure-token # 可选:设置访问令牌
306
+ restart: unless-stopped
307
+
308
+ volumes:
309
+ openclaw-data:
310
+ ```
311
+
312
+ 启动:
313
+
314
+ ```bash
315
+ docker-compose up -d
316
+ ```
317
+
318
+ ### 自行构建 Docker 镜像
319
+
320
+ 如果需要自定义或使用最新代码:
321
+
322
+ ```bash
323
+ # 1. 克隆汉化项目
324
+ git clone https://github.com/1186258278/OpenClawChineseTranslation.git
325
+ cd OpenClawChineseTranslation
326
+
327
+ # 2. 克隆上游源码
328
+ git clone https://github.com/openclaw/openclaw.git openclaw
329
+
330
+ # 3. 应用汉化
331
+ npm run cli -- apply
332
+
333
+ # 4. 构建 Docker 镜像
334
+ cd openclaw
335
+ docker build -t openclaw-zh:local .
336
+
337
+ # 5. 运行
338
+ docker run -d --name openclaw -p 18789:18789 openclaw-zh:local
339
+ ```
340
+
341
+ ### 常用 Docker 命令
342
+
343
+ ```bash
344
+ # 查看日志
345
+ docker logs -f openclaw
346
+
347
+ # 停止容器
348
+ docker stop openclaw
349
+
350
+ # 重启容器
351
+ docker restart openclaw
352
+
353
+ # 进入容器
354
+ docker exec -it openclaw sh
355
+
356
+ # 删除容器
357
+ docker stop openclaw && docker rm openclaw
358
+ ```
359
+
360
+ ### 访问 Dashboard
361
+
362
+ 启动后访问:`http://localhost:18789`
363
+
364
+ 如果设置了令牌,使用:`http://localhost:18789/?token=your-secure-token`
365
+
366
+ ---
367
+
368
+ ## 🔧 手动汉化安装
369
+
370
+ 适用于想要自定义翻译、测试最新代码或参与贡献的用户。
371
+
372
+ ### 完整流程
373
+
374
+ ```bash
375
+ # 1. 克隆汉化项目
376
+ git clone https://github.com/1186258278/OpenClawChineseTranslation.git
377
+ cd OpenClawChineseTranslation
378
+
379
+ # 2. 克隆上游 OpenClaw 源码
380
+ git clone https://github.com/openclaw/openclaw.git openclaw
381
+
382
+ # 3. 查看汉化状态
383
+ npm run cli -- status
384
+
385
+ # 4. 应用汉化补丁
386
+ npm run cli -- apply
387
+
388
+ # 5. 验证汉化结果
389
+ npm run cli -- verify
390
+
391
+ # 6. 构建 OpenClaw
392
+ cd openclaw
393
+ pnpm install
394
+ pnpm run build
395
+
396
+ # 7. 全局安装
397
+ npm install -g .
398
+
399
+ # 8. 验证安装
400
+ openclaw --version
401
+ openclaw --help
402
+ ```
403
+
404
+ ### 汉化 CLI 完整命令
405
+
406
+ | 命令 | 说明 |
407
+ |------|------|
408
+ | `npm run cli -- status` | 查看当前汉化状态 |
409
+ | `npm run cli -- apply` | 应用汉化补丁 |
410
+ | `npm run cli -- apply --dry-run` | 预览汉化(不实际修改) |
411
+ | `npm run cli -- apply --verbose` | 详细输出汉化过程 |
412
+ | `npm run cli -- verify` | 验证汉化结果 |
413
+ | `npm run cli -- restore` | 恢复原版(使用 git checkout) |
414
+
415
+ ### 自定义翻译
416
+
417
+ 1. **找到目标文件**:确定需要翻译的源文件位置
418
+
419
+ 2. **创建翻译规则**:在 `translations/` 对应目录创建 JSON 文件
420
+ ```json
421
+ {
422
+ "file": "src/path/to/file.ts",
423
+ "description": "文件说明",
424
+ "replacements": {
425
+ "\"English Text\"": "\"中文翻译\""
426
+ }
427
+ }
428
+ ```
429
+
430
+ 3. **注册翻译文件**:在 `translations/config.json` 中添加
431
+
432
+ 4. **测试**:
433
+ ```bash
434
+ npm run cli -- apply --dry-run --verbose
435
+ npm run cli -- apply
436
+ npm run cli -- verify
437
+ ```
438
+
439
+ 5. **提交 PR**:欢迎贡献你的翻译!
440
+
441
+ ---
442
+
134
443
  ## 🛠️ 开发者 / 贡献者指南
135
444
 
136
445
  如果你想参与翻译或本地开发:
@@ -158,12 +467,34 @@ OpenClawChineseTranslation/
158
467
  ├── cli/ # 汉化 CLI 工具
159
468
  │ ├── index.mjs # 入口
160
469
  │ ├── commands/ # 命令实现
161
- │ └── utils/ # 工具函数
470
+ │ └── utils/ # 工具函数(i18n 引擎)
162
471
  ├── translations/ # 翻译配置(JSON 格式)
163
- │ ├── config.json # 主配置
472
+ │ ├── config.json # 主配置(加载所有翻译文件)
164
473
  │ ├── cli/ # CLI 界面翻译
474
+ │ │ ├── banner.json # 启动横幅
475
+ │ │ ├── tagline.json # 有趣标语
476
+ │ │ └── help.json # 帮助信息
165
477
  │ ├── wizard/ # 向导翻译
166
- └── commands/ # 命令翻译
478
+ │ ├── onboarding.json # 初始化向导
479
+ │ │ ├── security.json # 安全警告
480
+ │ │ └── finalize.json # 完成提示
481
+ │ ├── tui/ # TUI 界面翻译
482
+ │ │ ├── waiting.json # 等待动画
483
+ │ │ └── commands.json # 斜杠命令
484
+ │ ├── commands/ # 命令翻译
485
+ │ │ ├── status.json # status 命令
486
+ │ │ ├── update.json # update 命令
487
+ │ │ ├── skills.json # skills 命令
488
+ │ │ └── ... # 更多命令
489
+ │ └── dashboard/ # Dashboard UI 翻译 (20+ 文件)
490
+ │ ├── navigation.json # 导航菜单
491
+ │ ├── app-render.json # 主布局
492
+ │ ├── chat.json # 聊天界面
493
+ │ ├── config.json # 配置页面
494
+ │ ├── schema.json # 配置 schema
495
+ │ ├── config-form-*.json # 表单元素
496
+ │ ├── channels-*.json # 各渠道翻译
497
+ │ └── ... # 更多模块
167
498
  ├── docs/ # 文档
168
499
  ├── .github/workflows/ # 自动化工作流
169
500
  ├── install.sh # Linux/macOS 安装脚本
@@ -173,9 +504,10 @@ OpenClawChineseTranslation/
173
504
  ### 添加新翻译
174
505
 
175
506
  1. 在 `translations/` 目录下创建或编辑 JSON 文件
176
- 2. 运行 `npm run cli -- apply --dry-run` 预览
177
- 3. 运行 `npm run cli -- verify` 验证
178
- 4. 提交 PR
507
+ 2. `translations/config.json` 中注册新文件
508
+ 3. 运行 `npm run cli -- apply --dry-run` 预览
509
+ 4. 运行 `npm run cli -- verify` 验证
510
+ 5. 提交 PR
179
511
 
180
512
  详见 [贡献指南](docs/CONTRIBUTING.md) 和 [翻译规范](docs/TRANSLATION_GUIDE.md)
181
513
 
@@ -214,6 +546,10 @@ npm uninstall -g @qingchencloud/openclaw-zh
214
546
  npm install -g openclaw
215
547
  ```
216
548
 
549
+ ### Q: Dashboard 如何访问?
550
+
551
+ 启动 OpenClaw 后,访问 `http://localhost:18789` 即可打开网页控制台(全中文界面)。
552
+
217
553
  ---
218
554
 
219
555
  ## 🔗 相关链接
@@ -225,6 +561,7 @@ npm install -g openclaw
225
561
  | 🔥 [openclaw.qt.cool](https://openclaw.qt.cool/) | **汉化版官网**(推荐) |
226
562
  | 📦 [GitHub Pages](https://1186258278.github.io/OpenClawChineseTranslation/) | 备用下载页 |
227
563
  | 📚 [npm 包](https://www.npmjs.com/package/@qingchencloud/openclaw-zh) | npm 安装源 |
564
+ | 💻 [GitHub 仓库](https://github.com/1186258278/OpenClawChineseTranslation) | 源代码 |
228
565
 
229
566
  ### 上游项目
230
567
 
@@ -70,7 +70,11 @@ function buildProfileHealth(params) {
70
70
  label,
71
71
  };
72
72
  }
73
- const { status, remainingMs } = resolveOAuthStatus(credential.expires, now, warnAfterMs);
73
+ const hasRefreshToken = typeof credential.refresh === "string" && credential.refresh.length > 0;
74
+ const { status: rawStatus, remainingMs } = resolveOAuthStatus(credential.expires, now, warnAfterMs);
75
+ // OAuth credentials with a valid refresh token auto-renew on first API call,
76
+ // so don't warn about access token expiration.
77
+ const status = hasRefreshToken && (rawStatus === "expired" || rawStatus === "expiring") ? "ok" : rawStatus;
74
78
  return {
75
79
  profileId,
76
80
  provider: credential.provider,
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.1.29-zh.202601301427",
3
- "commit": "da71eaebd2f613f8afaddccdff12cb28c1d7e0f4",
4
- "builtAt": "2026-01-30T14:27:34.593Z"
2
+ "version": "2026.1.30-zh.1",
3
+ "commit": "6522de6ce045e0166d3136880b26004a04e44f91",
4
+ "builtAt": "2026-01-30T18:27:27.253Z"
5
5
  }
@@ -1 +1 @@
1
- 021fb0f1a7c28de208c935b89cf8097c15ac0a6a70facf0452d8166c76ae5f3f
1
+ 6bca341722b482e79a5e38480c148b710a49dc6632213f89ca397a239fc3d770
@@ -66,6 +66,6 @@ export function configureProgramHelp(program, ctx) {
66
66
  if (command !== program)
67
67
  return "";
68
68
  const docs = formatDocsLink("/cli", "docs.openclaw.ai/cli");
69
- return `\n${theme.heading("Examples:")}\n${fmtExamples}\n\n${theme.muted("Docs:")} ${docs}\n`;
69
+ return `\n${theme.heading("示例:")}\n${fmtExamples}\n\n${theme.muted("文档:")} ${docs}\n${theme.muted("汉化版:")} ${theme.info("https://openclaw.qt.cool/")}\n`;
70
70
  });
71
71
  }
@@ -96,7 +96,7 @@ export function formatSkillsList(report, opts) {
96
96
  columns.push({ key: "Missing", header: "Missing", minWidth: 18, flex: true });
97
97
  }
98
98
  const lines = [];
99
- lines.push(`${theme.heading("Skills")} ${theme.muted(`(${eligible.length}/${skills.length} ready)`)}`);
99
+ lines.push(`${theme.heading("技能")} ${theme.muted(`(${eligible.length}/${skills.length} ready)`)}`);
100
100
  lines.push(renderTable({
101
101
  width: tableWidth,
102
102
  columns,
@@ -132,7 +132,7 @@ export function formatSkillInfo(report, skillName, opts) {
132
132
  lines.push(skill.description);
133
133
  lines.push("");
134
134
  // Details
135
- lines.push(theme.heading("Details:"));
135
+ lines.push(theme.heading("详情:"));
136
136
  lines.push(`${theme.muted(" Source:")} ${skill.source}`);
137
137
  lines.push(`${theme.muted(" Path:")} ${shortenHomePath(skill.filePath)}`);
138
138
  if (skill.homepage) {
@@ -149,7 +149,7 @@ export function formatSkillInfo(report, skillName, opts) {
149
149
  skill.requirements.os.length > 0;
150
150
  if (hasRequirements) {
151
151
  lines.push("");
152
- lines.push(theme.heading("Requirements:"));
152
+ lines.push(theme.heading("依赖条件:"));
153
153
  if (skill.requirements.bins.length > 0) {
154
154
  const binsStatus = skill.requirements.bins.map((bin) => {
155
155
  const missing = skill.missing.bins.includes(bin);
@@ -190,7 +190,7 @@ export function formatSkillInfo(report, skillName, opts) {
190
190
  // Install options
191
191
  if (skill.install.length > 0 && !skill.eligible) {
192
192
  lines.push("");
193
- lines.push(theme.heading("Install options:"));
193
+ lines.push(theme.heading("安装选项:"));
194
194
  for (const inst of skill.install) {
195
195
  lines.push(` ${theme.warn("→")} ${inst.label}`);
196
196
  }
@@ -225,7 +225,7 @@ export function formatSkillsCheck(report, opts) {
225
225
  }, null, 2);
226
226
  }
227
227
  const lines = [];
228
- lines.push(theme.heading("Skills Status Check"));
228
+ lines.push(theme.heading("技能状态检查"));
229
229
  lines.push("");
230
230
  lines.push(`${theme.muted("Total:")} ${report.skills.length}`);
231
231
  lines.push(`${theme.success("✓")} ${theme.muted("Eligible:")} ${eligible.length}`);
@@ -320,7 +320,7 @@ export async function updateStatusCommand(opts) {
320
320
  Value: updateAvailability.available ? theme.warn(`available · ${updateLine}`) : updateLine,
321
321
  },
322
322
  ];
323
- defaultRuntime.log(theme.heading("OpenClaw update status"));
323
+ defaultRuntime.log(theme.heading("OpenClaw 更新状态"));
324
324
  defaultRuntime.log("");
325
325
  defaultRuntime.log(renderTable({
326
326
  width: tableWidth,
@@ -405,7 +405,7 @@ function printResult(result, opts) {
405
405
  }
406
406
  const statusColor = result.status === "ok" ? theme.success : result.status === "skipped" ? theme.warn : theme.error;
407
407
  defaultRuntime.log("");
408
- defaultRuntime.log(`${theme.heading("Update Result:")} ${statusColor(result.status.toUpperCase())}`);
408
+ defaultRuntime.log(`${theme.heading("更新结果:")} ${statusColor(result.status.toUpperCase())}`);
409
409
  if (result.root) {
410
410
  defaultRuntime.log(` Root: ${theme.muted(result.root)}`);
411
411
  }
@@ -422,7 +422,7 @@ function printResult(result, opts) {
422
422
  }
423
423
  if (!opts.hideSteps && result.steps.length > 0) {
424
424
  defaultRuntime.log("");
425
- defaultRuntime.log(theme.heading("Steps:"));
425
+ defaultRuntime.log(theme.heading("步骤:"));
426
426
  for (const step of result.steps) {
427
427
  const status = formatStepStatus(step.exitCode);
428
428
  const duration = theme.muted(`(${formatDuration(step.durationMs)})`);
@@ -543,7 +543,7 @@ export async function updateCommand(opts) {
543
543
  }
544
544
  const showProgress = !opts.json && process.stdout.isTTY;
545
545
  if (!opts.json) {
546
- defaultRuntime.log(theme.heading("Updating OpenClaw..."));
546
+ defaultRuntime.log(theme.heading("正在更新 OpenClaw..."));
547
547
  defaultRuntime.log("");
548
548
  }
549
549
  const { progress, stop } = createUpdateProgress(showProgress);
@@ -685,7 +685,7 @@ export async function updateCommand(opts) {
685
685
  };
686
686
  if (!opts.json) {
687
687
  defaultRuntime.log("");
688
- defaultRuntime.log(theme.heading("Updating plugins..."));
688
+ defaultRuntime.log(theme.heading("正在更新插件..."));
689
689
  }
690
690
  const syncResult = await syncPluginsForUpdateChannel({
691
691
  config: activeConfig,
@@ -750,7 +750,7 @@ export async function updateCommand(opts) {
750
750
  if (shouldRestart) {
751
751
  if (!opts.json) {
752
752
  defaultRuntime.log("");
753
- defaultRuntime.log(theme.heading("Restarting service..."));
753
+ defaultRuntime.log(theme.heading("正在重启服务..."));
754
754
  }
755
755
  try {
756
756
  const { runDaemonRestart } = await import("./daemon-cli.js");
@@ -937,23 +937,23 @@ export function registerUpdateCli(program) {
937
937
  .map(([cmd, desc]) => ` ${theme.command(cmd)} ${theme.muted(`# ${desc}`)}`)
938
938
  .join("\n");
939
939
  return `
940
- ${theme.heading("What this does:")}
940
+ ${theme.heading("此命令功能:")}
941
941
  - Git checkouts: fetches, rebases, installs deps, builds, and runs doctor
942
942
  - npm installs: updates via detected package manager
943
943
 
944
- ${theme.heading("Switch channels:")}
944
+ ${theme.heading("切换更新通道:")}
945
945
  - Use --channel stable|beta|dev to persist the update channel in config
946
946
  - Run openclaw update status to see the active channel and source
947
947
  - Use --tag <dist-tag|version> for a one-off npm update without persisting
948
948
 
949
- ${theme.heading("Non-interactive:")}
949
+ ${theme.heading("非交互模式:")}
950
950
  - Use --yes to accept downgrade prompts
951
951
  - Combine with --channel/--tag/--restart/--json/--timeout as needed
952
952
 
953
- ${theme.heading("Examples:")}
953
+ ${theme.heading("示例:")}
954
954
  ${fmtExamples}
955
955
 
956
- ${theme.heading("Notes:")}
956
+ ${theme.heading("注意事项:")}
957
957
  - Switch channels with --channel stable|beta|dev
958
958
  - For global installs: auto-updates via detected package manager when possible (see docs/install/updating.md)
959
959
  - Downgrades require confirmation (can break configuration)
@@ -996,11 +996,11 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.openclaw.ai/cli/up
996
996
  .description("Show update channel and version status")
997
997
  .option("--json", "Output result as JSON", false)
998
998
  .option("--timeout <seconds>", "Timeout for update checks in seconds (default: 3)")
999
- .addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatHelpExamples([
999
+ .addHelpText("after", () => `\n${theme.heading("示例:")}\n${formatHelpExamples([
1000
1000
  ["openclaw update status", "Show channel + version status."],
1001
1001
  ["openclaw update status --json", "JSON output."],
1002
1002
  ["openclaw update status --timeout 10", "Custom timeout."],
1003
- ])}\n\n${theme.heading("Notes:")}\n${theme.muted("- Shows current update channel (stable/beta/dev) and source")}\n${theme.muted("- Includes git tag/branch/SHA for source checkouts")}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.openclaw.ai/cli/update")}`)
1003
+ ])}\n\n${theme.heading("注意事项:")}\n${theme.muted("- Shows current update channel (stable/beta/dev) and source")}\n${theme.muted("- Includes git tag/branch/SHA for source checkouts")}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.openclaw.ai/cli/update")}`)
1004
1004
  .action(async (opts) => {
1005
1005
  try {
1006
1006
  await updateStatusCommand({
@@ -100,7 +100,7 @@ export async function channelsListCommand(opts, runtime = defaultRuntime) {
100
100
  return;
101
101
  }
102
102
  const lines = [];
103
- lines.push(theme.heading("Chat channels:"));
103
+ lines.push(theme.heading("聊天通道:"));
104
104
  for (const plugin of plugins) {
105
105
  const accounts = plugin.config.listAccountIds(cfg);
106
106
  if (!accounts || accounts.length === 0)
@@ -118,7 +118,7 @@ export async function channelsListCommand(opts, runtime = defaultRuntime) {
118
118
  }
119
119
  }
120
120
  lines.push("");
121
- lines.push(theme.heading("Auth providers (OAuth + API keys):"));
121
+ lines.push(theme.heading("认证提供商(OAuth + API 密钥):"));
122
122
  if (authProfiles.length === 0) {
123
123
  lines.push(theme.muted("- none"));
124
124
  }