ZH

 


同一个引擎,五种用法

agentLoop 是无状态引擎,AgentSession 是门面——在它们之上,pi 暴露出五种运行模式,对应五种使用场景。从「人盯着终端聊」到「程序之间对接」,覆盖全谱。

             人在看                    程序在看
 ┌────────────┬────────────┬────────────┬───────┬───────┐
 │ interactive │   print   │    JSON    │  RPC  │  SDK  │
 │  交互式 TUI │ 单次输出   │ 结构化流   │ 长连接 │ 库调用 │
 └────────────┴────────────┴────────────┴───────┴───────┘

五种模式

  • interactive:默认的 TUI 对话,人坐在终端前,实时看思考与工具调用。
  • printpi -p "问题",跑完打印结果就退出——适合脚本、CI、一次性任务。
  • JSON:把 AgentEvent 流以 JSON 逐行输出,给别的程序解析。
  • RPC:长连接、双向通信,宿主程序能边发指令边收事件。
  • SDK:直接以库的形式 import,在你自己的 Node 程序里嵌入一个 agent。
同一引擎,不同出口(AgentSession 真实 API)
// 订阅事件,再提交消息:subscribe 返回一个取消订阅函数
const unsubscribe = session.subscribe((ev) => {
  // print 模式:实时打印文字
  if (ev.type === "text_delta") process.stdout.write(ev.delta)
  // JSON 模式:把每个事件原样吐成一行 JSON
  // console.log(JSON.stringify(ev))
})
await session.submitMessage(prompt)
unsubscribe()

五种模式共享同一套核心——区别只在「事件流怎么进、怎么出」。这正是前面「引擎 / 门面」分层的回报:一次实现,五处复用。