chore(i18n): refresh zh-CN translations
This commit is contained in:
parent
a73d1bee3c
commit
aaa71d3780
@ -1,22 +1,22 @@
|
||||
---
|
||||
read_when:
|
||||
- 准备错误报告或支持请求
|
||||
- 排查 Gateway 网关崩溃、重启、内存压力或过大负载问题
|
||||
- 查看哪些诊断数据会被记录或脱敏
|
||||
- 调试 Gateway 网关崩溃、重启、内存压力或超大载荷
|
||||
- 查看记录或脱敏了哪些诊断数据
|
||||
summary: 为错误报告创建可共享的 Gateway 网关诊断包
|
||||
title: 诊断信息导出
|
||||
x-i18n:
|
||||
generated_at: "2026-05-03T18:28:53Z"
|
||||
generated_at: "2026-05-04T22:38:14Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: f6cf8e00fe8033e339b5c947ce3dd10fdee736048a358ad3a0c2ccb77e939f4b
|
||||
source_hash: 56539280bc7a7868063328626e63b2576feb5578e2651d3a2976ee9c34243382
|
||||
source_path: gateway/diagnostics.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw 可以为错误报告创建本地诊断 zip。它会汇总经过清理的 Gateway 网关状态、健康状态、日志、配置形态,以及最近的不含载荷的稳定性事件。
|
||||
OpenClaw 可以为 bug 报告创建本地诊断 zip。它会组合经过清理的 Gateway 网关 Status、健康状态、日志、配置形态,以及近期不含载荷的稳定性事件。
|
||||
|
||||
在你审查诊断包之前,请像对待密钥一样对待它们。它们设计为省略或遮蔽载荷和凭据,但仍会汇总本地 Gateway 网关日志和主机级运行时状态。
|
||||
在你审阅诊断包之前,请把它们当作密钥处理。它们的设计目标是省略或遮盖载荷和凭证,但仍会概述本地 Gateway 网关日志和主机级运行时状态。
|
||||
|
||||
## 快速开始
|
||||
|
||||
@ -24,7 +24,7 @@ OpenClaw 可以为错误报告创建本地诊断 zip。它会汇总经过清理
|
||||
openclaw gateway diagnostics export
|
||||
```
|
||||
|
||||
该命令会打印写入的 zip 路径。若要选择路径:
|
||||
该命令会打印写入的 zip 路径。要选择路径:
|
||||
|
||||
```bash
|
||||
openclaw gateway diagnostics export --output openclaw-diagnostics.zip
|
||||
@ -38,55 +38,57 @@ openclaw gateway diagnostics export --json
|
||||
|
||||
## 聊天命令
|
||||
|
||||
所有者可以在聊天中使用 `/diagnostics [note]` 请求本地 Gateway 网关导出。当错误发生在真实对话中,并且你需要一份可复制粘贴给支持人员的报告时,请使用此命令:
|
||||
所有者可以在聊天中使用 `/diagnostics [note]` 请求本地 Gateway 网关导出。当 bug 发生在真实对话中,并且你想为支持人员提供一份可复制粘贴的报告时,请使用它:
|
||||
|
||||
1. 在你发现问题的对话中发送 `/diagnostics`。如果有帮助,可以添加一条简短备注,例如 `/diagnostics bad tool choice`。
|
||||
2. OpenClaw 会发送诊断说明,并请求一次明确的 exec 批准。该批准会运行 `openclaw gateway diagnostics export --json`。不要通过 allow-all 规则批准诊断。
|
||||
3. 批准后,OpenClaw 会回复一份可粘贴的报告,其中包含本地包路径、清单摘要、隐私说明和相关会话 ID。
|
||||
1. 在你发现问题的对话中发送 `/diagnostics`。如果有帮助,可以添加简短说明,例如 `/diagnostics bad tool choice`。
|
||||
2. OpenClaw 会发送诊断前言,并请求一次明确的执行批准。该批准会运行 `openclaw gateway diagnostics export --json`。不要通过允许全部规则批准诊断。
|
||||
3. 批准后,OpenClaw 会回复一份可粘贴报告,其中包含本地包路径、清单摘要、隐私说明和相关会话 ID。
|
||||
|
||||
在群聊中,所有者仍可运行 `/diagnostics`,但 OpenClaw 不会把诊断详情发回共享聊天。它会通过私有批准路由向所有者发送说明、批准提示、Gateway 网关导出结果,以及 Codex 会话/线程细分信息。群聊只会收到一条简短通知,说明诊断流程已私下发送。如果 OpenClaw 找不到私有所有者路由,该命令会默认关闭并要求所有者从私信中运行。
|
||||
在群聊中,所有者仍然可以运行 `/diagnostics`,但 OpenClaw 不会把诊断详细信息发回共享聊天。它会通过私有批准路径向所有者发送前言、批准提示、Gateway 网关导出结果,以及 Codex 会话/线程明细。群聊只会收到一条简短通知,说明诊断流程已私下发送。如果 OpenClaw 找不到私有所有者路径,该命令会关闭失败,并要求所有者从私信中运行。
|
||||
|
||||
当活动 OpenClaw 会话正在使用原生 OpenAI Codex harness 时,同一次 exec 批准还会覆盖一次 OpenAI feedback 上传,用于 OpenClaw 已知的 Codex 运行时线程。该上传与本地 Gateway 网关 zip 分开,并且只出现在 Codex harness 会话中。批准前,提示会说明批准诊断也会发送 Codex feedback,但不会列出 Codex 会话或线程 ID。批准后,聊天回复会列出已发送到 OpenAI 服务器的渠道、OpenClaw 会话 ID、Codex 线程 ID,以及本地恢复命令。如果你拒绝或忽略该批准,OpenClaw 不会运行导出,不会发送 Codex feedback,也不会打印 Codex ID。
|
||||
当活动的 OpenClaw 会话使用原生 OpenAI Codex harness 时,同一次执行批准还会覆盖一次 OpenAI 反馈上传,上传对象是 OpenClaw 知道的 Codex 运行时线程。该上传独立于本地 Gateway 网关 zip,并且只会出现在 Codex harness 会话中。批准前,提示会说明批准诊断也会发送 Codex 反馈,但不会列出 Codex 会话或线程 ID。批准后,聊天回复会列出已发送到 OpenAI 服务器的渠道、OpenClaw 会话 ID、Codex 线程 ID 和本地恢复命令。如果你拒绝或忽略批准,OpenClaw 不会运行导出,不会发送 Codex 反馈,也不会打印 Codex ID。
|
||||
|
||||
这让常见的 Codex 调试循环变得很短:在 Telegram、Discord 或其他渠道中发现异常行为,运行 `/diagnostics`,批准一次,与支持人员分享报告,然后如果你想自己检查原生 Codex 线程,就在本地运行打印出的 `codex resume <thread-id>` 命令。有关该检查流程,请参阅 [Codex harness](/zh-CN/plugins/codex-harness#inspect-a-codex-thread-from-the-cli)。
|
||||
这让常见的 Codex 调试循环变短:在 Telegram、Discord 或其他渠道中发现异常行为,运行 `/diagnostics`,批准一次,与支持人员共享报告,然后如果你想亲自检查原生 Codex 线程,就在本地运行打印出的 `codex resume <thread-id>` 命令。有关该检查工作流,请参阅 [Codex harness](/zh-CN/plugins/codex-harness#inspect-a-codex-thread-from-the-cli)。
|
||||
|
||||
## 导出内容
|
||||
## 导出包含什么
|
||||
|
||||
zip 包含:
|
||||
|
||||
- `summary.md`:供支持人员阅读的人类可读概览。
|
||||
- `diagnostics.json`:配置、日志、状态、健康状态和稳定性数据的机器可读摘要。
|
||||
- `diagnostics.json`:配置、日志、Status、健康状态和稳定性数据的机器可读摘要。
|
||||
- `manifest.json`:导出元数据和文件列表。
|
||||
- 经过清理的配置形态和非密钥配置详情。
|
||||
- 经过清理的日志摘要和最近已遮蔽的日志行。
|
||||
- 尽力获取的 Gateway 网关状态和健康状态快照。
|
||||
- `stability/latest.json`:可用时最新的持久化稳定性包。
|
||||
- 经过清理的日志摘要和近期已遮盖的日志行。
|
||||
- 尽力获取的 Gateway 网关 Status 和健康状态快照。
|
||||
- `stability/latest.json`:可用时的最新持久化稳定性包。
|
||||
|
||||
即使 Gateway 网关不健康,该导出也很有用。如果 Gateway 网关无法响应状态或健康状态请求,仍会在可用时收集本地日志、配置形态和最新稳定性包。
|
||||
即使 Gateway 网关不健康,导出仍然有用。如果 Gateway 网关无法响应 Status 或健康状态请求,本地日志、配置形态和最新稳定性包在可用时仍会被收集。
|
||||
|
||||
## 隐私模型
|
||||
|
||||
诊断设计为可分享。导出会保留有助于调试的运维数据,例如:
|
||||
诊断的设计目标是可共享。导出会保留有助于调试的运维数据,例如:
|
||||
|
||||
- 子系统名称、插件 ID、提供商 ID、渠道 ID 和已配置模式
|
||||
- 状态码、耗时、字节数、队列状态和内存读数
|
||||
- 经过清理的日志元数据和已遮蔽的运维消息
|
||||
- 状态码、时长、字节数、队列状态和内存读数
|
||||
- 经过清理的日志元数据和已遮盖的运维消息
|
||||
- 配置形态和非密钥功能设置
|
||||
|
||||
导出会省略或遮蔽:
|
||||
导出会省略或遮盖:
|
||||
|
||||
- 聊天文本、提示、指令、webhook 正文和工具输出
|
||||
- 凭据、API key、token、cookie 和密钥值
|
||||
- 凭证、API key、令牌、Cookie 和密钥值
|
||||
- 原始请求或响应正文
|
||||
- 账号 ID、消息 ID、原始会话 ID、主机名和本地用户名
|
||||
|
||||
当日志消息看起来像用户、聊天、提示或工具载荷文本时,导出只会保留“消息已省略”以及字节数。
|
||||
当日志消息看起来像用户、聊天、提示或工具载荷文本时,导出只会保留消息已被省略这一事实和字节数。
|
||||
|
||||
## 稳定性记录器
|
||||
|
||||
当诊断启用时,Gateway 网关默认会记录一条有界且不含载荷的稳定性流。它用于记录运维事实,而不是内容。
|
||||
默认情况下,在诊断启用时,Gateway 网关会记录有界且不含载荷的稳定性流。它用于运维事实,而不是内容。
|
||||
|
||||
当 Gateway 网关持续运行但 Node.js 事件循环或 CPU 看起来已饱和时,同一个诊断 Heartbeat 会记录活跃性样本。这些 `diagnostic.liveness.warning` 事件包含事件循环延迟、事件循环利用率、CPU 核心比例,以及活动/等待/排队会话数。空闲样本会以 `info` 级别保留在遥测中。只有当工作正在等待或排队,或活动工作与持续事件循环延迟重叠时,活跃性样本才会成为 Gateway 网关警告。否则健康后台工作期间的瞬时最大延迟峰值会留在调试日志中。它们本身不会重启 Gateway 网关。
|
||||
当 Gateway 网关持续运行但 Node.js 事件循环或 CPU 看起来已饱和时,同一个诊断 Heartbeat 会记录存活性样本。这些 `diagnostic.liveness.warning` 事件包含事件循环延迟、事件循环利用率、CPU 核心比率、活动/等待/排队会话计数、已知时的当前启动/运行时阶段、近期阶段跨度,以及有界的活动/排队工作标签。空闲样本会以 `info` 级别保留在遥测中。只有当工作正在等待或排队,或者活动工作与持续的事件循环延迟重叠时,存活性样本才会成为 Gateway 网关警告。其他方面健康的后台工作期间出现的瞬时最大延迟尖峰会保留在调试日志中。它们本身不会重启 Gateway 网关。
|
||||
|
||||
启动阶段还会发出 `diagnostic.phase.completed` 事件,其中包含挂钟时间和 CPU 计时。当最后一次桥接进度看起来是终止性的,例如原始响应项或响应完成事件,但 Gateway 网关仍认为嵌入式运行处于活动状态时,停滞的嵌入式运行诊断会标记 `terminalProgressStale=true`。
|
||||
|
||||
检查实时记录器:
|
||||
|
||||
@ -96,13 +98,13 @@ openclaw gateway stability --type payload.large
|
||||
openclaw gateway stability --json
|
||||
```
|
||||
|
||||
在致命退出、关闭超时或重启启动失败后,检查最新的持久化稳定性包:
|
||||
在致命退出、关闭超时或重启启动失败后,检查最新持久化稳定性包:
|
||||
|
||||
```bash
|
||||
openclaw gateway stability --bundle latest
|
||||
```
|
||||
|
||||
从最新的持久化包创建诊断 zip:
|
||||
从最新持久化包创建诊断 zip:
|
||||
|
||||
```bash
|
||||
openclaw gateway stability --bundle latest --export
|
||||
@ -122,16 +124,16 @@ openclaw gateway diagnostics export \
|
||||
- `--output <path>`:写入到指定 zip 路径。
|
||||
- `--log-lines <count>`:要包含的最大清理后日志行数。
|
||||
- `--log-bytes <bytes>`:要检查的最大日志字节数。
|
||||
- `--url <url>`:用于状态和健康状态快照的 Gateway 网关 WebSocket URL。
|
||||
- `--token <token>`:用于状态和健康状态快照的 Gateway 网关 token。
|
||||
- `--password <password>`:用于状态和健康状态快照的 Gateway 网关密码。
|
||||
- `--timeout <ms>`:状态和健康状态快照超时。
|
||||
- `--url <url>`:用于 Status 和健康状态快照的 Gateway 网关 WebSocket URL。
|
||||
- `--token <token>`:用于 Status 和健康状态快照的 Gateway 网关令牌。
|
||||
- `--password <password>`:用于 Status 和健康状态快照的 Gateway 网关密码。
|
||||
- `--timeout <ms>`:Status 和健康状态快照超时。
|
||||
- `--no-stability-bundle`:跳过持久化稳定性包查找。
|
||||
- `--json`:打印机器可读的导出元数据。
|
||||
- `--json`:打印机器可读导出元数据。
|
||||
|
||||
## 禁用诊断
|
||||
|
||||
诊断默认启用。若要禁用稳定性记录器和诊断事件收集:
|
||||
诊断默认启用。要禁用稳定性记录器和诊断事件收集:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -141,7 +143,7 @@ openclaw gateway diagnostics export \
|
||||
}
|
||||
```
|
||||
|
||||
禁用诊断会减少错误报告细节。它不会影响正常的 Gateway 网关日志记录。
|
||||
禁用诊断会减少 bug 报告详情。它不会影响正常的 Gateway 网关日志记录。
|
||||
|
||||
## 相关
|
||||
|
||||
|
||||
@ -1,26 +1,26 @@
|
||||
---
|
||||
read_when:
|
||||
- 你需要检查原始模型输出是否存在推理泄露
|
||||
- 你想在迭代时以监视模式运行 Gateway 网关
|
||||
- 你想在迭代时以 watch 模式运行 Gateway 网关
|
||||
- 你需要一套可重复的调试工作流
|
||||
summary: 调试工具:监视模式、原始模型流,以及追踪推理泄漏
|
||||
summary: 调试工具:监视模式、原始模型流,以及跟踪推理泄漏
|
||||
title: 调试
|
||||
x-i18n:
|
||||
generated_at: "2026-05-03T16:15:55Z"
|
||||
generated_at: "2026-05-04T22:38:19Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 7230112013a8db8d6a3853b765f4302a61609051ac4ffaf35a6f09de328deafc
|
||||
source_hash: 75fc97e6e9b60f755b1e9054ce17fb11b2aacae898328613a2c5417c9d87eb88
|
||||
source_path: help/debugging.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
用于流式输出的调试辅助工具,尤其适用于提供商将 reasoning 混入普通文本的情况。
|
||||
用于调试流式输出的辅助工具,尤其适用于提供商将推理内容混入普通文本的情况。
|
||||
|
||||
## 运行时调试覆盖项
|
||||
|
||||
在聊天中使用 `/debug` 设置**仅限运行时**的配置覆盖项(保存在内存中,而不是磁盘)。
|
||||
在聊天中使用 `/debug` 设置**仅运行时**配置覆盖项(保存在内存中,不写入磁盘)。
|
||||
`/debug` 默认禁用;使用 `commands.debug: true` 启用。
|
||||
当你需要切换不常用设置而不编辑 `openclaw.json` 时,这很方便。
|
||||
当你需要切换隐蔽设置又不想编辑 `openclaw.json` 时,这很方便。
|
||||
|
||||
示例:
|
||||
|
||||
@ -33,9 +33,9 @@ x-i18n:
|
||||
|
||||
`/debug reset` 会清除所有覆盖项,并恢复为磁盘上的配置。
|
||||
|
||||
## 会话跟踪输出
|
||||
## 会话追踪输出
|
||||
|
||||
当你希望在一个会话中查看插件拥有的跟踪/调试行,而不启用完整详细模式时,请使用 `/trace`。
|
||||
当你想在单个会话中查看插件拥有的追踪/调试行,而不启用完整详细模式时,请使用 `/trace`。
|
||||
|
||||
示例:
|
||||
|
||||
@ -46,11 +46,12 @@ x-i18n:
|
||||
```
|
||||
|
||||
将 `/trace` 用于插件诊断,例如主动记忆调试摘要。
|
||||
继续使用 `/verbose` 查看常规详细 Status/工具输出,并继续使用 `/debug` 设置仅限运行时的配置覆盖项。
|
||||
继续使用 `/verbose` 查看常规详细 Status/工具输出,并继续使用
|
||||
`/debug` 设置仅运行时配置覆盖项。
|
||||
|
||||
## 插件生命周期跟踪
|
||||
## 插件生命周期追踪
|
||||
|
||||
当插件生命周期命令感觉很慢,并且你需要内置的阶段拆解来分析插件元数据、设备发现、注册表、运行时镜像、配置变更和刷新工作时,请使用 `OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1`。该跟踪为选择启用,并写入 stderr,因此 JSON 命令输出仍可解析。
|
||||
当插件生命周期命令感觉很慢,并且你需要内置的阶段拆解来查看插件元数据、设备发现、注册表、运行时镜像、配置变更和刷新工作时,请使用 `OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1`。该追踪需要显式启用并写入 stderr,因此 JSON 命令输出仍可解析。
|
||||
|
||||
示例:
|
||||
|
||||
@ -58,7 +59,7 @@ x-i18n:
|
||||
OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 openclaw plugins install tokenjuice --force
|
||||
```
|
||||
|
||||
输出示例:
|
||||
示例输出:
|
||||
|
||||
```text
|
||||
[plugins:lifecycle] phase="config read" ms=6.83 status=ok command="install"
|
||||
@ -66,12 +67,12 @@ OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 openclaw plugins install tokenjuice --force
|
||||
[plugins:lifecycle] phase="registry refresh" ms=51.56 status=ok command="install" reason="source-changed"
|
||||
```
|
||||
|
||||
在使用 CPU profiler 之前,先用它调查插件生命周期。
|
||||
如果命令从源码 checkout 运行,建议在 `pnpm build` 后用 `node dist/entry.js ...` 测量构建后的运行时;`pnpm openclaw ...` 也会测量源码 runner 的开销。
|
||||
在使用 CPU 分析器之前,先用它调查插件生命周期。
|
||||
如果命令从源码 checkout 运行,建议在 `pnpm build` 后使用 `node dist/entry.js ...` 测量构建后的运行时;`pnpm openclaw ...` 也会测量源码运行器开销。
|
||||
|
||||
## CLI 启动和命令性能分析
|
||||
|
||||
当命令感觉很慢时,使用仓库内的启动基准测试:
|
||||
当命令感觉很慢时,使用已提交的启动基准:
|
||||
|
||||
```bash
|
||||
pnpm test:startup:bench:smoke
|
||||
@ -79,14 +80,23 @@ pnpm tsx scripts/bench-cli-startup.ts --preset real --case status --runs 3
|
||||
pnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpu
|
||||
```
|
||||
|
||||
如需通过常规源码 runner 做一次性性能分析,请设置 `OPENCLAW_RUN_NODE_CPU_PROF_DIR`:
|
||||
如需通过常规源码运行器进行一次性性能分析,请设置
|
||||
`OPENCLAW_RUN_NODE_CPU_PROF_DIR`:
|
||||
|
||||
```bash
|
||||
OPENCLAW_RUN_NODE_CPU_PROF_DIR=.artifacts/cli-cpu pnpm openclaw status
|
||||
```
|
||||
|
||||
源码 runner 会添加 Node CPU profile 标志,并为命令写入 `.cpuprofile`。
|
||||
在向命令代码添加临时 instrumentation 之前,先使用这种方式。
|
||||
源码运行器会添加 Node CPU profile 标志,并为命令写入一个 `.cpuprofile`。在向命令代码添加临时插桩之前,请先使用此方法。
|
||||
|
||||
对于看起来像同步文件系统或模块加载器工作的启动卡顿,请通过源码运行器添加 Node 的 sync I/O trace 标志:
|
||||
|
||||
```bash
|
||||
OPENCLAW_TRACE_SYNC_IO=1 pnpm openclaw gateway --force
|
||||
```
|
||||
|
||||
`pnpm gateway:watch` 会默认为被监视的 Gateway 网关子进程启用此标志。
|
||||
设置 `OPENCLAW_TRACE_SYNC_IO=0` 可在 watch 模式下抑制 Node sync I/O trace 输出。
|
||||
|
||||
## Gateway 网关监视模式
|
||||
|
||||
@ -96,20 +106,22 @@ OPENCLAW_RUN_NODE_CPU_PROF_DIR=.artifacts/cli-cpu pnpm openclaw status
|
||||
pnpm gateway:watch
|
||||
```
|
||||
|
||||
默认情况下,这会启动或重启一个名为 `openclaw-gateway-watch-main` 的 tmux 会话(或特定于 profile/端口的变体,例如 `openclaw-gateway-watch-dev-19001`),并从交互式终端自动附加。
|
||||
非交互式 shell、CI 和智能体 exec 调用会保持分离,并改为打印附加说明。需要时可手动附加:
|
||||
默认情况下,这会启动或重启名为
|
||||
`openclaw-gateway-watch-main` 的 tmux 会话(或特定于配置集/端口的变体,例如
|
||||
`openclaw-gateway-watch-dev-19001`),并从交互式终端自动附加。
|
||||
非交互式 shell、CI 和智能体 exec 调用会保持分离状态,并改为打印附加说明。需要时手动附加:
|
||||
|
||||
```bash
|
||||
tmux attach -t openclaw-gateway-watch-main
|
||||
```
|
||||
|
||||
tmux 窗格运行原始监视器:
|
||||
tmux 窗格会运行原始监视器:
|
||||
|
||||
```bash
|
||||
node scripts/watch-node.mjs gateway --force
|
||||
```
|
||||
|
||||
当不想使用 tmux 时,使用前台模式:
|
||||
不需要 tmux 时使用前台模式:
|
||||
|
||||
```bash
|
||||
pnpm gateway:watch:raw
|
||||
@ -123,38 +135,44 @@ OPENCLAW_GATEWAY_WATCH_TMUX=0 pnpm gateway:watch
|
||||
OPENCLAW_GATEWAY_WATCH_ATTACH=0 pnpm gateway:watch
|
||||
```
|
||||
|
||||
调试启动/运行时热点时,对受监视的 Gateway 网关 CPU 时间进行性能分析:
|
||||
调试启动/运行时热点时,对被监视的 Gateway 网关 CPU 时间进行性能分析:
|
||||
|
||||
```bash
|
||||
pnpm gateway:watch --benchmark
|
||||
```
|
||||
|
||||
监视包装器会在调用 Gateway 网关前消费 `--benchmark`,并在每次 Gateway 网关子进程退出时,在 `.artifacts/gateway-watch-profiles/` 下写入一个 V8 `.cpuprofile`。停止或重启受监视的 Gateway 网关以刷新当前 profile,然后使用 Chrome DevTools 或 Speedscope 打开它:
|
||||
watch 包装器会在调用 Gateway 网关之前消费 `--benchmark`,并在
|
||||
`.artifacts/gateway-watch-profiles/` 下为每次 Gateway 网关子进程退出写入一个 V8 `.cpuprofile`。停止或重启被监视的 Gateway 网关以刷新当前 profile,然后用 Chrome DevTools 或 Speedscope 打开它:
|
||||
|
||||
```bash
|
||||
npx speedscope .artifacts/gateway-watch-profiles/*.cpuprofile
|
||||
```
|
||||
|
||||
当你想把 profile 放到其他位置时,使用 `--benchmark-dir <path>`。
|
||||
当你希望被基准测试的子进程跳过默认的 `--force` 端口清理,并在 Gateway 网关端口已被占用时快速失败,请使用 `--benchmark-no-force`。
|
||||
当你想让被基准测试的子进程跳过默认的 `--force` 端口清理,并在 Gateway 网关端口已被占用时快速失败,请使用 `--benchmark-no-force`。
|
||||
|
||||
tmux 包装器会将常见的非秘密运行时选择器带入窗格,例如 `OPENCLAW_PROFILE`、`OPENCLAW_CONFIG_PATH`、`OPENCLAW_STATE_DIR`、`OPENCLAW_GATEWAY_PORT` 和 `OPENCLAW_SKIP_CHANNELS`。请将提供商凭证放在你的常规 profile/配置中,或对一次性临时密钥使用原始前台模式。
|
||||
如果受监视的 Gateway 网关在启动期间退出,监视器会运行一次 `openclaw doctor --fix --non-interactive`,然后重启 Gateway 网关子进程。
|
||||
当你希望看到原始启动失败,而不是执行仅限开发的修复过程时,请使用 `OPENCLAW_GATEWAY_WATCH_AUTO_DOCTOR=0`。
|
||||
受管理的 tmux 窗格还默认使用彩色 Gateway 网关日志以提升可读性;启动 `pnpm gateway:watch` 时设置 `FORCE_COLOR=0` 可禁用 ANSI 输出。
|
||||
tmux 包装器会将常见的非敏感运行时选择器带入窗格,例如
|
||||
`OPENCLAW_PROFILE`、`OPENCLAW_CONFIG_PATH`、`OPENCLAW_STATE_DIR`、
|
||||
`OPENCLAW_GATEWAY_PORT` 和 `OPENCLAW_SKIP_CHANNELS`。将提供商凭证放入你的常规配置集/配置中,或对一次性临时 secret 使用原始前台模式。
|
||||
如果被监视的 Gateway 网关在启动期间退出,监视器会运行一次
|
||||
`openclaw doctor --fix --non-interactive`,并重启 Gateway 网关子进程。
|
||||
当你想保留原始启动失败而不运行仅开发用的修复流程时,使用 `OPENCLAW_GATEWAY_WATCH_AUTO_DOCTOR=0`。
|
||||
托管的 tmux 窗格也会默认使用彩色 Gateway 网关日志以提高可读性;
|
||||
启动 `pnpm gateway:watch` 时设置 `FORCE_COLOR=0` 可禁用 ANSI 输出。
|
||||
|
||||
监视器会在 `src/` 下的构建相关文件、插件源码文件、插件 `package.json` 和 `openclaw.plugin.json` 元数据、`tsconfig.json`、`package.json` 以及 `tsdown.config.ts` 发生变化时重启。插件元数据变更会重启 Gateway 网关,但不会强制执行 `tsdown` 重建;源码和配置变更仍会先重建 `dist`。
|
||||
监视器会在 `src/` 下的构建相关文件、插件源文件、插件 `package.json` 和 `openclaw.plugin.json` 元数据、`tsconfig.json`、
|
||||
`package.json` 以及 `tsdown.config.ts` 发生变化时重启。插件元数据变化会重启 Gateway 网关,而不会强制进行 `tsdown` 重建;源码和配置变化仍会先重建 `dist`。
|
||||
|
||||
在 `gateway:watch` 后添加任何 Gateway 网关 CLI 标志,它们都会在每次重启时透传。重新运行同一个监视命令会重新生成命名的 tmux 窗格,而原始监视器仍会保持其单监视器锁,因此重复的监视器父进程会被替换,而不是堆积起来。
|
||||
在 `gateway:watch` 后添加任何 Gateway 网关 CLI 标志,它们会在每次重启时透传。重新运行同一个 watch 命令会重新生成同名 tmux 窗格,并且原始监视器仍会保留其单监视器锁,因此重复的监视器父进程会被替换,而不是堆积。
|
||||
|
||||
## 开发 profile + 开发 Gateway 网关(--dev)
|
||||
## 开发配置集 + 开发 Gateway 网关(--dev)
|
||||
|
||||
使用开发 profile 隔离状态,并启动一个安全、可丢弃的调试设置。这里有**两个** `--dev` 标志:
|
||||
使用开发配置集隔离状态,并启动一个安全、可丢弃的设置用于调试。有**两个** `--dev` 标志:
|
||||
|
||||
- **全局 `--dev`(profile):** 将状态隔离在 `~/.openclaw-dev` 下,并将 Gateway 网关端口默认为 `19001`(派生端口随之偏移)。
|
||||
- **全局 `--dev`(配置集):** 将状态隔离在 `~/.openclaw-dev` 下,并将 Gateway 网关端口默认设为 `19001`(派生端口会随之偏移)。
|
||||
- **`gateway --dev`:告诉 Gateway 网关在缺失时自动创建默认配置 + 工作区**(并跳过 BOOTSTRAP.md)。
|
||||
|
||||
推荐流程(开发 profile + 开发 bootstrap):
|
||||
推荐流程(开发配置集 + 开发引导):
|
||||
|
||||
```bash
|
||||
pnpm gateway:dev
|
||||
@ -163,22 +181,22 @@ OPENCLAW_PROFILE=dev openclaw tui
|
||||
|
||||
如果你还没有全局安装,请通过 `pnpm openclaw ...` 运行 CLI。
|
||||
|
||||
它会执行以下操作:
|
||||
这会执行:
|
||||
|
||||
1. **Profile 隔离**(全局 `--dev`)
|
||||
1. **配置集隔离**(全局 `--dev`)
|
||||
- `OPENCLAW_PROFILE=dev`
|
||||
- `OPENCLAW_STATE_DIR=~/.openclaw-dev`
|
||||
- `OPENCLAW_CONFIG_PATH=~/.openclaw-dev/openclaw.json`
|
||||
- `OPENCLAW_GATEWAY_PORT=19001`(浏览器/canvas 相应偏移)
|
||||
- `OPENCLAW_GATEWAY_PORT=19001`(浏览器/canvas 会相应偏移)
|
||||
|
||||
2. **开发 bootstrap**(`gateway --dev`)
|
||||
2. **开发引导**(`gateway --dev`)
|
||||
- 如果缺失,写入最小配置(`gateway.mode=local`,绑定 loopback)。
|
||||
- 将 `agent.workspace` 设置为开发工作区。
|
||||
- 设置 `agent.skipBootstrap=true`(无 BOOTSTRAP.md)。
|
||||
- 如果缺失,则植入工作区文件:
|
||||
- 如果缺失,初始化工作区文件:
|
||||
`AGENTS.md`、`SOUL.md`、`TOOLS.md`、`IDENTITY.md`、`USER.md`、`HEARTBEAT.md`。
|
||||
- 默认身份:**C3‑PO**(礼仪机器人)。
|
||||
- 在开发模式中跳过渠道提供商(`OPENCLAW_SKIP_CHANNELS=1`)。
|
||||
- 在开发模式下跳过渠道提供商(`OPENCLAW_SKIP_CHANNELS=1`)。
|
||||
|
||||
重置流程(全新开始):
|
||||
|
||||
@ -187,7 +205,7 @@ pnpm gateway:dev:reset
|
||||
```
|
||||
|
||||
<Note>
|
||||
`--dev` 是一个**全局** profile 标志,会被某些 runner 吃掉。如果你需要明确写出它,请使用环境变量形式:
|
||||
`--dev` 是一个**全局**配置集标志,并会被某些运行器消费掉。如果你需要显式写出它,请使用环境变量形式:
|
||||
|
||||
```bash
|
||||
OPENCLAW_PROFILE=dev openclaw gateway --dev --reset
|
||||
@ -195,10 +213,11 @@ OPENCLAW_PROFILE=dev openclaw gateway --dev --reset
|
||||
|
||||
</Note>
|
||||
|
||||
`--reset` 会清除配置、凭证、会话和开发工作区(使用 `trash`,不是 `rm`),然后重新创建默认开发设置。
|
||||
`--reset` 会擦除配置、凭证、会话和开发工作区(使用
|
||||
`trash`,不是 `rm`),然后重新创建默认开发设置。
|
||||
|
||||
<Tip>
|
||||
如果非开发 Gateway 网关已在运行(launchd 或 systemd),请先停止它:
|
||||
如果非开发 Gateway 网关已经在运行(launchd 或 systemd),请先停止它:
|
||||
|
||||
```bash
|
||||
openclaw gateway stop
|
||||
@ -208,8 +227,8 @@ openclaw gateway stop
|
||||
|
||||
## 原始流日志(OpenClaw)
|
||||
|
||||
OpenClaw 可以在任何过滤/格式化之前记录**原始 assistant 流**。
|
||||
这是查看 reasoning 是以纯文本 delta 到达(还是以单独 thinking block 到达)的最佳方式。
|
||||
OpenClaw 可以在任何过滤/格式化之前记录**原始助手流**。
|
||||
这是查看推理内容是否以纯文本增量到达(或作为单独 thinking block 到达)的最佳方式。
|
||||
|
||||
通过 CLI 启用:
|
||||
|
||||
@ -236,7 +255,8 @@ OPENCLAW_RAW_STREAM_PATH=~/.openclaw/logs/raw-stream.jsonl
|
||||
|
||||
## 原始 chunk 日志(pi-mono)
|
||||
|
||||
要在 **raw OpenAI 兼容 chunk** 被解析成 block 之前捕获它们,pi-mono 提供了一个单独的 logger:
|
||||
若要在原始 OpenAI 兼容 chunk 被解析为 block 之前捕获它们,
|
||||
pi-mono 暴露了单独的日志记录器:
|
||||
|
||||
```bash
|
||||
PI_RAW_STREAM=1
|
||||
@ -259,7 +279,7 @@ PI_RAW_STREAM_PATH=~/.pi-mono/logs/raw-openai-completions.jsonl
|
||||
|
||||
- 原始流日志可能包含完整 prompt、工具输出和用户数据。
|
||||
- 将日志保留在本地,并在调试后删除。
|
||||
- 如果你分享日志,请先清理密钥和 PII。
|
||||
- 如果你共享日志,请先清理 secret 和 PII。
|
||||
|
||||
## 相关
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user