| --- |
| sidebar_position: 10 |
| title: "Trajectories & Training Format" |
| description: "How Hermes saves trajectories, normalizes tool calls, and produces training-friendly outputs" |
| --- |
| |
| # Trajectories & Training Format |
|
|
| Hermes can save conversation trajectories for training, evaluation, and batch data generation workflows. |
|
|
| Primary files: |
|
|
| - `agent/trajectory.py` |
| - `run_agent.py` |
| - `batch_runner.py` |
| - `trajectory_compressor.py` |
|
|
| ## What trajectories are for |
|
|
| Trajectory outputs are used for: |
|
|
| - SFT data generation |
| - debugging agent behavior |
| - benchmark/evaluation artifact capture |
| - post-processing and compression pipelines |
|
|
| ## Normalization strategy |
|
|
| Hermes converts live conversation structure into a training-friendly format. |
|
|
| Important behaviors include: |
|
|
| - representing reasoning in explicit markup |
| - converting tool calls into structured XML-like regions for dataset compatibility |
| - grouping tool outputs appropriately |
| - separating successful and failed trajectories |
|
|
| ## Persistence boundaries |
|
|
| Trajectory files do **not** blindly mirror all runtime prompt state. |
|
|
| Some prompt-time-only layers are intentionally excluded from persisted trajectory content so datasets are cleaner and less environment-specific. |
|
|
| ## Batch runner |
|
|
| `batch_runner.py` emits richer metadata than single-session trajectory saving, including: |
|
|
| - model/provider metadata |
| - toolset info |
| - partial/failure markers |
| - tool statistics |
|
|
| ## Related docs |
|
|
| - [Environments, Benchmarks & Data Generation](./environments.md) |
| - [Agent Loop Internals](./agent-loop.md) |
|
|