


























@@ -0,0 +1,184 @@
1+---
2+summary: "Export redacted trajectory bundles for debugging an OpenClaw agent session"
3+read_when:
4+ - Debugging why an agent answered, failed, or called tools a certain way
5+ - Exporting a support bundle for an OpenClaw session
6+ - Investigating prompt context, tool calls, runtime errors, or usage metadata
7+ - Disabling or relocating trajectory capture
8+title: "Trajectory Bundles"
9+---
10+11+# Trajectory bundles
12+13+Trajectory capture is OpenClaw's per-session flight recorder. It records a
14+structured timeline for each agent run, then `/export-trajectory` packages the
15+current session into a redacted support bundle.
16+17+Use it when you need to answer questions like:
18+19+- What prompt, system prompt, and tools were sent to the model?
20+- Which transcript messages and tool calls led to this answer?
21+- Did the run time out, abort, compact, or hit a provider error?
22+- Which model, plugins, skills, and runtime settings were active?
23+- What usage and prompt-cache metadata did the provider return?
24+25+## Quick start
26+27+Send this in the active session:
28+29+```text
30+/export-trajectory
31+```
32+33+Alias:
34+35+```text
36+/trajectory
37+```
38+39+OpenClaw writes the bundle under the workspace:
40+41+```text
42+.openclaw/trajectory-exports/openclaw-trajectory-<session>-<timestamp>/
43+```
44+45+You can choose a relative output directory name:
46+47+```text
48+/export-trajectory bug-1234
49+```
50+51+The custom path is resolved inside `.openclaw/trajectory-exports/`. Absolute
52+paths and `~` paths are rejected.
53+54+## Access
55+56+Trajectory export is an owner command. The sender must pass the normal command
57+authorization checks and owner checks for the channel.
58+59+## What gets recorded
60+61+Trajectory capture is on by default for OpenClaw agent runs.
62+63+Runtime events include:
64+65+- `session.started`
66+- `trace.metadata`
67+- `context.compiled`
68+- `prompt.submitted`
69+- `model.completed`
70+- `trace.artifacts`
71+- `session.ended`
72+73+Transcript events are also reconstructed from the active session branch:
74+75+- user messages
76+- assistant messages
77+- tool calls
78+- tool results
79+- compactions
80+- model changes
81+- labels and custom session entries
82+83+Events are written as JSON Lines with this schema marker:
84+85+```json
86+{
87+"traceSchema": "openclaw-trajectory",
88+"schemaVersion": 1
89+}
90+```
91+92+## Bundle files
93+94+An exported bundle can contain:
95+96+| File | Contents |
97+| --------------------- | ---------------------------------------------------------------------------------------------- |
98+| `manifest.json` | Bundle schema, source files, event counts, and generated file list |
99+| `events.jsonl` | Ordered runtime and transcript timeline |
100+| `session-branch.json` | Redacted active transcript branch and session header |
101+| `metadata.json` | OpenClaw version, OS/runtime, model, config snapshot, plugins, skills, and prompt metadata |
102+| `artifacts.json` | Final status, errors, usage, prompt cache, compaction count, assistant text, and tool metadata |
103+| `prompts.json` | Submitted prompts and selected prompt-building details |
104+| `system-prompt.txt` | Latest compiled system prompt, when captured |
105+| `tools.json` | Tool definitions sent to the model, when captured |
106+107+`manifest.json` lists the files present in that bundle. Some files are omitted
108+when the session did not capture the corresponding runtime data.
109+110+## Capture location
111+112+By default, runtime trajectory events are written beside the session file:
113+114+```text
115+<session>.trajectory.jsonl
116+```
117+118+OpenClaw also writes a best-effort pointer file beside the session:
119+120+```text
121+<session>.trajectory-path.json
122+```
123+124+Set `OPENCLAW_TRAJECTORY_DIR` to store runtime trajectory sidecars in a
125+dedicated directory:
126+127+```bash
128+export OPENCLAW_TRAJECTORY_DIR=/var/lib/openclaw/trajectories
129+```
130+131+When this variable is set, OpenClaw writes one JSONL file per session id in that
132+directory.
133+134+## Disable capture
135+136+Set `OPENCLAW_TRAJECTORY=0` before starting OpenClaw:
137+138+```bash
139+export OPENCLAW_TRAJECTORY=0
140+```
141+142+This disables runtime trajectory capture. `/export-trajectory` can still export
143+the transcript branch, but runtime-only files such as compiled context,
144+provider artifacts, and prompt metadata may be missing.
145+146+## Privacy and limits
147+148+Trajectory bundles are designed for support and debugging, not public posting.
149+OpenClaw redacts sensitive values before writing export files:
150+151+- credentials and known secret-like payload fields
152+- image data
153+- local state paths
154+- workspace paths, replaced with `$WORKSPACE_DIR`
155+- home directory paths, where detected
156+157+The exporter also bounds input size:
158+159+- runtime sidecar files: 50 MiB
160+- session files: 50 MiB
161+- runtime events: 200,000
162+- total exported events: 250,000
163+- individual runtime event lines are truncated above 256 KiB
164+165+Review bundles before sharing them outside your team. Redaction is best-effort
166+and cannot know every application-specific secret.
167+168+## Troubleshooting
169+170+If the export has no runtime events:
171+172+- confirm OpenClaw was started without `OPENCLAW_TRAJECTORY=0`
173+- check whether `OPENCLAW_TRAJECTORY_DIR` points to a writable directory
174+- run another message in the session, then export again
175+- inspect `manifest.json` for `runtimeEventCount`
176+177+If the command rejects the output path:
178+179+- use a relative name like `bug-1234`
180+- do not pass `/tmp/...` or `~/...`
181+- keep the export inside `.openclaw/trajectory-exports/`
182+183+If the export fails with a size error, the session or sidecar exceeded the
184+export safety limits. Start a new session or export a smaller reproduction.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。