本文为社区中文翻译(依据 MIT 协议),阅读英文原文 →。译文可能滞后于上游更新。

SDK

SDK 提供对 Pi 智能体能力的编程访问:把 Pi 嵌入其他应用、构建自定义界面或接入自动化工作流。

典型用例:

从最小示例到完全控制的可运行代码见 examples/sdk/

本文为结构化中文编译版;完整选项与类型签名见英文原文

快速上手

SDK 包含在主包中,无需单独安装:

npm install @earendil-works/pi-coding-agent
import { createAgentSession } from "@earendil-works/pi-coding-agent";

const { session } = await createAgentSession();
await session.prompt("总结一下这个目录");
for await (const event of session.events) {
  // 处理事件流
}

核心概念

createAgentSession()

创建单个 AgentSession 的主工厂函数。它内部使用 ResourceLoader 提供扩展、技能、提示词模板、主题和上下文文件;不提供时使用按标准发现规则工作的 DefaultResourceLoader

AgentSession

会话对象管理智能体生命周期、消息历史、模型状态、压缩与事件流。

注意:session.navigateTree() 在智能体回复中、手动/自动压缩中或其他树导航进行中时会直接拒绝(即使 summarize: false),不会排队,也不返回 { cancelled: true }。请先等待活动操作结束(如 await session.waitForIdle())再重试;拒绝不会改变活动分支。

createAgentSessionRuntime() 与 AgentSessionRuntime

需要替换活动会话并重建绑定 cwd 的运行时状态时,用运行时 API——这正是内置交互、print、RPC 模式使用的层。

createAgentSessionRuntime() 接收运行时工厂和初始 cwd/会话目标。工厂捕获进程级固定输入,为生效 cwd 重建绑定服务,解析会话选项并返回完整运行时结果。

AgentSessionRuntime 负责替换活动运行时的操作:

重要行为:

提示与消息排队

PromptOptions 控制提示词展开、流式期间的排队行为和提示词预检通知:

prompt() 会处理提示词模板、扩展命令和消息发送:

选项参考

createAgentSession() 的选项覆盖:

完整表格见英文原文。

ResourceLoader 与返回值

ResourceLoader 决定扩展、技能、模板、主题与上下文文件从哪来;自定义实现可以完全接管资源发现。createAgentSession() 返回 { session, runtime? } 形式的结果(视选项而定)。

运行模式

SDK 同时暴露 Pi 各内置模式使用的入口:

导出

@earendil-works/pi-coding-agent 同时导出消息类型、会话管理器、压缩工具(convertToLlmserializeConversation)等,详见英文原文的 Exports 列表。