Pi için yapılandırma, özelleştirme, platform kurulumu ve API referansları.

JSON Etkinlik Akışı Modu

pi --mode json "Your prompt"

Tüm oturum olaylarını JSON satırlardan stdout'ye çıkarır. Pi'yi diğer araçlara veya özel kullanıcı arayüzlerine entegre etmek için kullanışlıdır.

Etkinlik Türleri

Wire olayları JsonAgentSessionEvent kullanır. Eşleşiyor AgentSessionEvent akış mesajı güncellemelerinin kümülatif anlık görüntüleri hariç tutması dışında:

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 değiştiklerinde bekleyen yönlendirme ve takip kuyruklarının tamamını yayınlar. compaction_start ve compaction_end hem manuel hem de otomatik sıkıştırmayı kapsar.

Diğer temel olaylar 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 };

Mesaj Türleri

packages/ai/src/types.ts'den gelen temel mesajlar:

  • UserMessage (satır 134)
  • AssistantMessage (satır 140)
  • ToolResultMessage (satır 152)

packages/coding-agent/src/core/messages.ts'den gelen genişletilmiş mesajlar:

  • BashExecutionMessage (satır 29)
  • CustomMessage (satır 46)
  • BranchSummaryMessage (satır 55)
  • CompactionSummaryMessage (satır 62)

Çıkış Formatı

Her satır bir JSON nesnesidir. İlk satır oturum başlığıdır:

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

Olaylar meydana geldikçe takip edilir:

{"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 kayıtlar yalnızca deltadır. Hem kümülatif message alanını hem de assistantMessageEvent.partial akış boyutunu doğrusal tutmak için. contentIndex ve delta tuşlarını kullanın Gerekirse canlı metni, düşünmeyi veya araç çağrısı argümanlarını bir araya getirmek. message_end içerir son yetkili mesaj.

Örnek

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