# Format Jejak Sesi

Jejak agen dari Claude Code, Codex, Pi, Hermes Agent, dan Factory Droid didukung secara bawaan (lihat [Jejak Agen](./agent-traces)). Jika Anda membangun harness Anda sendiri, Anda dapat membuat sesi-sesinya dirender di viewer yang sama dengan menuliskannya dalam **Session Trace Simple Format (STS-Format)** yang dijelaskan di bawah.

**Session Trace Simple Format (STS-Format)** adalah file [JSONL](https://jsonlines.org) (satu objek JSON per baris) yang dideteksi dan dirender oleh Hugging Face Hub di trace viewer-nya. Format ini menangkap satu sesi agen/chat sebagai baris header yang diikuti oleh baris pesan.

## 1. Header sesi (baris pertama)

```json
{ "type": "session", "harness": "my-agent", "id": "b1a2c3", "name": "Implementing a new API" }
```

| field     | wajib | catatan                                             |
| --------- | -------- | ------------------------------------------------- |
| `type`    | ya      | harus `"session"`                               |
| `harness` | ya      | **id dari harness** yang menghasilkan trace |
| `id`      | ya      | id sesi unik                                 |
| `name`    | tidak       | judul yang dapat dibaca manusia                              |
| …         | tidak       | metadata tambahan apa pun diizinkan dan diabaikan         |

`harness` adalah field utama: ini adalah **id dari harness**, dan memberi tahu Hub renderer, ikon, dan label mana yang harus digunakan untuk sesi. Id yang saat ini dikenali: `llama.app`. Sangat mudah untuk menambahkan pengidentifikasi harness baru di sini.

> Membangun harness Anda sendiri? Hubungi kami dan kami akan menambahkan ikon dan label untuknya agar sesi Anda dirender dengan branding Anda.

## 2. Pesan (setiap baris berikutnya)

Setiap baris adalah satu pesan dalam amplop:

```json
{ "type": "message", "message": { "role": "assistant", "content": "…" } }
```

Objek `message`:

| field              | wajib | catatan                                                                                                  |
| ------------------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `role`             | ya      | `"user"` · `"assistant"` · `"system"` · `"tool"`                                                       |
| `content`          | ya      | teks (dapat kosong)                                                                                    |
| `reasoningContent` | tidak       | penalaran model, ditampilkan sebagai blok berpikir terpisah                                                    |
| `toolCalls`        | tidak       | panggilan alat asisten: `[{ "id", "function": { "name", "arguments" } }]` (`arguments` adalah string JSON) |
| `toolCallId`       | tidak       | pada pesan `role: "tool"`, mengaitkan hasilnya dengan `toolCalls[].id` yang dijawab                       |
| `timestamp`        | tidak       | milidetik epoch                                                                                     |
| `model`            | tidak       | nama model                                                                                             |

Hasil tool adalah pesan dengan `role: "tool"` yang membawa `toolCallId`; viewer menempelkan setiap hasil di samping panggilan yang memproduksinya.

### Contoh

```jsonl
{"type":"session","harness":"my-agent","id":"abc123","name":"what time is it"}
{"type":"message","message":{"role":"user","content":"what time is it?"}}
{"type":"message","message":{"role":"assistant","content":"","toolCalls":[{"id":"t1","function":{"name":"get_time","arguments":"{}"}}]}}
{"type":"message","message":{"role":"tool","toolCallId":"t1","content":"2026-07-01T15:00:00Z"}}
{"type":"message","message":{"role":"assistant","content":"it is 15:00 UTC"}}
```

Unggah `.jsonl` yang dihasilkan ke [Dataset](https://huggingface.co/datasets) atau [Storage Bucket](./storage-buckets) untuk membukanya di trace viewer.

## Alternatif: Format sesi Pi

Jika Anda lebih memilih untuk tidak mengadopsi format di atas, Anda dapat mengeluarkan **format sesi Pi** ([session-format.md](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/session-format.md)), yang sudah didukung oleh Hub. Dalam hal itu, tambahkan juga field `harness: "..."` ke baris header sesi Pi, agar Hub dapat mengaitkan trace tersebut dengan harness Anda.

