扩展
扩展是 TypeScript 模块,可以在运行时增强 Pi 的能力。扩展可以添加自定义工具、注入系统提示、注册 Provider、控制会话行为等。
概述
扩展是导出默认函数的 TypeScript 文件,该函数接收 ExtensionContext 参数并注册事件监听器和功能。
Warning
扩展以完整的系统权限运行。只安装你信任的扩展,因为它们可以执行任意代码、访问文件系统和网络。
放置位置
扩展支持热重载:修改文件后 Pi 会自动重新加载扩展,无需重启。
基础结构
扩展必须使用 default export 导出一个函数:
事件系统
Pi 提供丰富的事件系统,扩展可以监听各种生命周期事件:
会话事件
消息事件
工具事件
所有事件类别
自定义工具
扩展可以通过 registerTool 注册新的工具,供模型在对话中调用:
工具输入校验
工具参数使用 TypeBox 定义 JSON Schema,确保类型安全和运行时验证。
工具返回格式
工具 execute 函数必须返回包含 content 数组的对象:
UI 集成
扩展可以通过 ctx.ui 与终端界面交互:
状态管理
扩展可以使用持久化状态在会话之间保存数据:
消息注入
扩展可以在发送给模型的消息中注入额外上下文:
会话控制
扩展可以控制会话的各个方面:
Provider 注册
扩展可以编程式注册自定义 Provider:
详情请参阅自定义 Provider 文档。
错误处理
扩展应妥善处理错误以避免中断 Pi 的运行:
未捕获的扩展错误会被 Pi 拦截并记录,但不会崩溃整个应用。
模式兼容性
扩展应考虑 Pi 的不同运行模式: