Appearance
/export-trajectory 命令会导出当前会话的脱敏轨迹包,方便在本地或支持场景中排查智能体回答、失败原因、工具调用链。在会话中输入 /export-trajectory(或别名 /trajectory)即可生成包,保存在工作区下的 .openclaw/trajectory-exports/。也可使用 openclaw sessions export-trajectory --session-key ... 命令行直接导出。轨迹包包含运行时事件、提示词、工具调用、元数据等,但受隐私脱敏和大小限制(运行时侧边文件最大 10 MiB)。如需关闭实时轨迹记录,启动前设置 OPENCLAW_TRAJECTORY=0。
OpenClaw 轨迹导出 /export-trajectory 使用与调试
轨迹捕获是 OpenClaw 针对每个智能体会话的飞行记录器。它会记录每次智能体运行的时序时间线,然后通过 /export-trajectory 将当前会话打包成一个脱敏的支持包。
当你需要回答以下问题时使用它:
- 发送给模型的提示词、系统提示和工具是什么?
- 哪些对话消息和工具调用导致了当前回答?
- 运行是否超时、中止、压缩或遇到 provider 错误?
- 当时激活了哪个模型、插件、技能和运行时设置?
- provider 返回的用量和提示缓存元数据是什么?
如果你要针对实时的 Gateway 问题提交广泛的支持报告,请从 /diagnostics 开始。Diagnostics 会收集脱敏的 Gateway 包,对于 OpenAI Codex harness 会话,经批准后还可以向 OpenAI 服务器发送 Codex 反馈。当你特别需要某个会话的详细提示词、工具和对话时间线时,使用 /export-trajectory。
快速开始
在活跃会话中输入:
text
/export-trajectory别名:
text
/trajectoryOpenClaw 将包写入工作区下的路径:
text
.openclaw/trajectory-exports/openclaw-trajectory-<session>-<timestamp>/可以指定一个相对输出目录名:
text
/export-trajectory bug-1234自定义路径在 .openclaw/trajectory-exports/ 内解析。绝对路径和 ~ 路径会被拒绝。
轨迹包可能包含提示词、模型消息、工具定义、工具结果、运行时事件和本地路径。因此每次执行该斜杠命令时都需要经过 exec 审批。请仅在打算创建包时批准一次,不要使用允许所有(allow-all)。在群聊中,OpenClaw 会将审批提示和导出结果私密地发送给所有者,而不是将轨迹详情发回共享房间。
用于本地检查或支持流程时,也可以直接运行已审批的命令路径:
bash
openclaw sessions export-trajectory --session-key "agent:main:telegram:direct:123" --workspace .访问权限
轨迹导出是所有者命令。发送者必须通过正常的命令授权检查和针对该渠道的所有者检查。
记录内容
轨迹捕获默认对 OpenClaw 智能体运行开启。
运行时事件包括:
session.startedtrace.metadatacontext.compiledprompt.submittedmodel.fallback_step,包含源模型、下一个模型、失败原因/详情、链位置,以及备用链是否前进、成功或耗尽model.completedtrace.artifactssession.ended
同时也从当前会话分支重构对话事件:
- 用户消息
- 助手消息
- 工具调用
- 工具结果
- 压缩
- 模型变更
- 标签和自定义会话条目
事件以 JSON Lines 格式写入,带有如下模式标记:
json
{
"traceSchema": "openclaw-trajectory",
"schemaVersion": 1
}包文件
导出的包可能包含以下文件:
| 文件 | 内容 |
|---|---|
manifest.json | 包模式、源文件、事件计数和生成文件列表 |
events.jsonl | 有序的运行时和对话时间线 |
session-branch.json | 脱敏的当前会话分支和会话头部 |
metadata.json | OpenClaw 版本、OS/运行时、模型、配置快照、插件、技能和提示词元数据 |
artifacts.json | 最终状态、错误、用量、提示缓存、压缩次数、助手文本和工具元数据 |
prompts.json | 提交的提示词和选定的提示构建详情 |
system-prompt.txt | 最新的编译系统提示词(如果捕获到) |
tools.json | 发送给模型的工具定义(如果捕获到) |
manifest.json 列出了该包中存在的文件。某些文件在会话未捕获对应运行时数据时会被省略。
存储位置
默认情况下,运行时轨迹事件写在会话文件旁边:
text
<session>.trajectory.jsonlOpenClaw 还会在会话文件旁边写入一个尽力而为的指针文件:
text
<session>.trajectory-path.json设置 OPENCLAW_TRAJECTORY_DIR 以将运行时轨迹侧边文件存储到专用目录:
bash
export OPENCLAW_TRAJECTORY_DIR=/var/lib/openclaw/trajectories设置此变量后,OpenClaw 会在该目录中为每个会话 ID 写入一个 JSONL 文件。
会话维护会在其所属会话条目因磁盘预算被修剪、封顶或驱逐时移除轨迹侧边文件。位于会话目录之外的文件仅在指针目标仍证明其属于该会话时才会被移除。
关闭捕获
启动 OpenClaw 前设置 OPENCLAW_TRAJECTORY=0:
bash
export OPENCLAW_TRAJECTORY=0这会禁用运行时轨迹捕获。/export-trajectory 仍可导出对话分支,但运行时文件(如编译上下文、provider 产物和提示词元数据)可能会缺失。
调整刷新超时
OpenClaw 在智能体清理期间刷新运行时轨迹侧边文件。默认清理超时为 10,000 ms。在慢速磁盘或大型存储上,启动 OpenClaw 前设置 OPENCLAW_TRAJECTORY_FLUSH_TIMEOUT_MS:
bash
export OPENCLAW_TRAJECTORY_FLUSH_TIMEOUT_MS=30000这控制当 OpenClaw 记录 pi-trajectory-flush 超时并继续执行的时间点。它不会改变轨迹大小上限。要调整所有未设置显式超时的智能体清理步骤,请设置 OPENCLAW_AGENT_CLEANUP_TIMEOUT_MS。
隐私与限制
轨迹包专为支持和调试设计,不应公开发布。OpenClaw 在写入导出文件前会对敏感值进行脱敏处理:
- 凭据和已知的保密字段内容
- 图像数据
- 本地状态路径
- 工作区路径,替换为
$WORKSPACE_DIR - 检测到的主目录路径
导出器还会限制输入大小:
- 运行时侧边文件:实时捕获在达到 10 MiB 时停止,并在剩余空间时记录截断事件;导出可接受已有的运行时侧边文件最大为 50 MiB
- 会话文件:50 MiB
- 运行时事件:200,000 条
- 总导出事件:250,000 条
- 单个运行时事件行在超过 256 KiB 后会被截断
在团队外分享包前请检查内容。脱敏是尽力而为,无法识别每个应用特有的秘密。
故障排除
如果导出没有运行时事件:
- 确认 OpenClaw 启动时未设置
OPENCLAW_TRAJECTORY=0 - 检查
OPENCLAW_TRAJECTORY_DIR是否指向可写目录 - 在会话中再发送一条消息,然后重新导出
- 检查
manifest.json中的runtimeEventCount
如果命令拒绝输出路径:
- 使用相对名称,例如
bug-1234 - 不要使用
/tmp/...或~/... - 确保导出位于
.openclaw/trajectory-exports/内
如果导出因大小错误失败,说明会话或侧边文件超过了导出安全限制。请新建一个会话或导出一个更小的复现。
相关
常见问题
为什么 /export-trajectory 导出的包中没有运行时事件?
最常见原因是 OpenClaw 启动时设置了 OPENCLAW_TRAJECTORY=0(关闭了轨迹捕获)。请检查启动环境变量,确保未设置该变量或设置为非零值。另外确认 OPENCLAW_TRAJECTORY_DIR 指向的是可写目录,并且在导出前会话中至少有一条新的消息触发了轨迹记录。
导出提示路径被拒绝,只能使用相对路径吗?
是的。/export-trajectory 只接受以当前工作区内的相对路径(例如 bug-1234)作为输出目录名。绝对路径(如 /tmp/...)和 ~ 开头的路径会被拒绝。导出目录始终位于 .openclaw/trajectory-exports/ 下,相对名会在该目录内创建子目录。
导出的轨迹文件过大导致失败怎么办?
导出时对文件大小有限制:运行时侧边文件最大 10 MiB(实时录制时)或 50 MiB(导出时),会话文件最大 50 MiB,运行时事件最大 200,000 条,总事件最大 250,000 条。如果会话或侧边文件超出这些限制,导出会失败。此时可以新建一个更小的会话进行复现,或使用 openclaw sessions export-trajectory 命令行并指定更小的 --max-events(未在文档中,但可通过类似方式控制)。