Pi 到底是怎么运转的?
抛开复杂的表层概念,Pi 的本质其实是一个四方协调器:它把用户消息放进会话树,组装好上下文发给模型,执行模型请求的工具,再把结果记录下来,循环往复直到任务完成。点击下方四个核心部件,看看它们各自负责什么:
看懂 Turn(轮)与 Run(运行)的本质区别
选一个场景,点“下一步”逐步观察:模型每响应一次并执行完工具,就是 1 个 Turn;从提交消息到再也不需要请求模型为止,才构成 1 次完整的 Run。
一轮(Turn)是什么?
Pi 发一次模型请求 → 收到助手响应 → 执行这次响应里的工具并记下结果,这就完成了一个 Turn。一次运行(Run)是什么?
从用户提交消息起,只要工具结果或队列消息还需要继续问模型,就自动开启下一个 Turn,直到模型不再调用工具且队列清空,本次 Run 才结束。发给大模型的请求,究竟是怎么拼出来的?
模型没有“记忆”,每次请求都是 Pi 从活跃分支、系统指令、工具定义和按需加载的资源里现场拼出来的。勾选左侧积木,观察右侧请求体和上下文构成的变化。
为什么说 Pi 的会话是一棵“树”,而不是列表?
持久化会话文件是 .jsonl,每条记录都有 id 和 parentId。点击树上的任意节点切换“当前条目”,看看活跃分支和上下文重建如何立刻变化。
提示:带蓝框的是当前的活跃分支(Active Branch);带红晕的是当前条目(Current Entry);被压缩替代的老消息在树中依然保留(带删除线仅表示“不再发给模型”)。
五种外壳共用同一颗内核,启动顺序决定安全边界
先判断 Project Trust
在加载任何项目配置、扩展或文件前,Pi 先决定是否信任当前项目目录,防止恶意仓库自动执行代码。
Extensions / Skills / Themes
Extensions 作为 TypeScript 模块直接加载进 Pi 进程,注册工具、命令、快捷键与自定义 UI;可与 Skills、模板、主题一起通过 npm / git 分发。
进程级 OS 权限
之后才加载上下文文件。所有启用的工具与扩展共享 Pi 进程本身的操作系统权限,因此隔离(容器/沙盒)与信任检查非常关键。