Konfigurasi, kustomisasi, pengaturan platform, dan referensi API untuk Pi.

JSON Mode Aliran Acara

pi --mode json "Your prompt"

Menghasilkan semua acara sesi sebagai baris JSON ke stdout. Berguna untuk mengintegrasikan pi ke alat lain atau UI khusus.

Jenis Acara

Acara kawat menggunakan JsonAgentSessionEvent. Itu cocok AgentSessionEvent kecuali pembaruan pesan streaming menghilangkan snapshot kumulatif:

type WithoutPartial<T> = T extends { partial: unknown } ? Omit<T, "partial"> : T;

type JsonAgentSessionEvent =
  | Exclude<AgentSessionEvent, { type: "message_update" }>
  | {
      type: "message_update";
      assistantMessageEvent: WithoutPartial<AssistantMessageEvent>;
    };

queue_update memancarkan kemudi penuh yang tertunda dan antrean tindak lanjut setiap kali berubah. compaction_start dan compaction_end mencakup pemadatan manual dan otomatis.

Acara dasar lainnya berasal AgentEvent:

type AgentEvent =
  // Agent lifecycle
  | { type: "agent_start" }
  | { type: "agent_end"; messages: AgentMessage[] }
  // Turn lifecycle
  | { type: "turn_start" }
  | { type: "turn_end"; message: AgentMessage; toolResults: ToolResultMessage[] }
  // Message lifecycle
  | { type: "message_start"; message: AgentMessage }
  | { type: "message_update"; message: AgentMessage; assistantMessageEvent: AssistantMessageEvent }
  | { type: "message_end"; message: AgentMessage }
  // Tool execution
  | { type: "tool_execution_start"; toolCallId: string; toolName: string; args: any }
  | { type: "tool_execution_update"; toolCallId: string; toolName: string; args: any; partialResult: any }
  | { type: "tool_execution_end"; toolCallId: string; toolName: string; result: any; isError: boolean };

Jenis Pesan

Pesan dasar dari packages/ai/src/types.ts:

  • UserMessage (baris 134)
  • AssistantMessage (baris 140)
  • ToolResultMessage (baris 152)

Pesan tambahan dari packages/coding-agent/src/core/messages.ts:

  • BashExecutionMessage (baris 29)
  • CustomMessage (baris 46)
  • BranchSummaryMessage (baris 55)
  • CompactionSummaryMessage (baris 62)

Format Keluaran

Setiap baris adalah objek JSON. Baris pertama adalah header sesi:

{"type":"session","version":3,"id":"uuid","timestamp":"...","cwd":"/path"}

Diikuti oleh peristiwa-peristiwa yang terjadi:

{"type":"agent_start"}
{"type":"turn_start"}
{"type":"message_start","message":{"role":"assistant","content":[],...}}
{"type":"message_update","assistantMessageEvent":{"type":"text_delta","contentIndex":0,"delta":"Hello"}}
{"type":"message_end","message":{...}}
{"type":"turn_end","message":{...},"toolResults":[]}
{"type":"agent_end","messages":[...]}

message_update catatan hanya untuk delta. Mereka menghilangkan bidang kumulatif message dan assistantMessageEvent.partial untuk menjaga ukuran aliran tetap linier. Gunakan contentIndex dan delta untuk menyusun teks langsung, pemikiran, atau argumen panggilan alat jika diperlukan. message_end berisi pesan otoritatif terakhir.

Contoh

pi --mode json "List files" 2>/dev/null | jq -c 'select(.type == "message_end")'