Pi SDK 学习笔记(二):事件流与 SSE
上一篇把最小会话跑起来了:ModelRuntime + createAgentSession 在进程内订阅 text_delta、finally 里 dispose()。这一篇把它搬到 HTTP 上——用一个稳定的公开事件协议把内部事件流喂给浏览器,并处理好 SSE 的建流、心跳、断连和错误帧。 这一篇是把「进程内的 AgentSession」变成「跨信任边界的服务」的第一步,核心是事件映射和安全边界。
上一篇把最小会话跑起来了:ModelRuntime + createAgentSession 在进程内订阅 text_delta、finally 里 dispose()。这一篇把它搬到 HTTP 上——用一个稳定的公开事件协议把内部事件流喂给浏览器,并处理好 SSE 的建流、心跳、断连和错误帧。 这一篇是把「进程内的 AgentSession」变成「跨信任边界的服务」的第一步,核心是事件映射和安全边界。
最近在认真看 Pi SDK,想把它真正嵌进自己的程序里。光读官方示例容易囫囵吞枣,所以我从最小的命令行调用开始自己写,打算一步步把它长成支持多会话、SSE、工具策略和持久化的 Web Agent。这篇记第一段做的事:最小会话与模型运行时。 目标看起来很轻——用 OpenAI Chat Completions 兼容服务跑通一个内存会话,订阅文本增量,dispose() 收尾。但真正动手会发现几个容易糊过去的概念得先摆到台面上:ModelRuntime、AgentSession、SessionManager 的边界;「模型已注册」和「模型已有有效认证」是两回事;以及为什么不该直接用无参数的 createAgentSession()。
上一篇装完 Pi CLI 和第一批 Extension,也完成了模型调用。不过那时的 Pi 仍然很接近它所说的 minimal harness:能工作,但 Plan Mode、Goal Mode、Subagent、MCP 和 Workspace History 都要我们自己定制。 这次继续看七个包: pi install npm:pi-slopchop pi install npm:@narumitw/pi-goal pi install npm:@narumitw/pi-plan-mode pi install npm:pi-subagents pi install npm:pi-btw pi install npm:pi-mcp-adapter pi install npm:pi-workspace-history 这里最需要先处理的是 pi-subagents。上一篇已经安装了 @router-for-me/pi-subagents-lite,两边做的都是 Subagent。我想先弄清楚它们会不会冲突,以及功能更完整的那一个到底多了什么。
最近准备认真看一下 Pi Coding Agent。它把自己定义成一个 minimal terminal coding harness:核心只提供一套能工作的终端 Coding Agent,sub-agent、plan mode 等能力没有全部内置,而是留给 Extension、Skill、Prompt Template、Theme 和 Pi Package。