ARTICLE · 1118942
开源推广:我开发第一款 pi 插件
推一推我的开源项目,原因是这样:
最近在使用 PI 作为 AI 编程的智能体,在使用其中的 /tree 命令的时候发现 PI 的 session 并非只是简单的记录了聊天记录,而是把这次聊天时所发生的各种事件完整的记录了下来,例如:用户消息 、Assistant 回复、模型调用工具、工具返回结果等等。这些你可以使用内置的 /tree 命令,并且将过滤修改为 all ,就能看到。并且有意思的是,PI 在保留了过去路径的前提下,允许你从任意的节点开始一个新的分支,并且发展成新的路径(操作是直接在 /tree 列表中,回车选择一个节点即可),这个特性有点类似于 git 的分支了。
pi-lazy-panel 就是基于上述特性下所诞生的产物。既然 PI 的 session tree 类似于 git 那样,那么是否可以参考一些 git 的图形化工具来开发一款 pi session tree 管理工具呢?我想到的 git 管理工具是 lazygit,因为在我看来 lazygit 优势是:一是大部分的信息都在几个面板中都展示了,不需要麻烦的去切换界面,信息之间层级关系比较明确。二是键盘流,意味着你可以放弃鼠标操作,通过单个键盘或者组合键就能完成大部分操作,避免手敲命令,对于操作效率来讲提升还是非常大的。

为什么我觉得 PI 也需要类似于 lazygit 方式来管理会话呢?
第一个原因是 PI 的对于会话操作不够方便,每次需要对某个会话进行操作,都需要敲两次命令,例如我想 fork 某个之前对话,那么需要 /resume 选中某个对话,随后再使用 /fork 的命令。如果使用 pi-lazy-panel 那么只需要移动到对应的会话上,并按下键盘 o 就行。其次是对于列表的操作大部分使用 ctrl + 组合键的方案,这对于用习惯了 lazyvim、lazygit 的人来说有点不太习惯,毕竟按下 ctrl + o 还得动用我两个手才行。当然还有上下移动,我习惯了用 j/k 来上下的移动,所以我每次上下移动时都会误进入到搜索。
第二个原因是会话管理的意识,当我使用 chatgpt app 时,我会不自觉管理左侧的对话,比如:某些对话没有用我会选择删除,某些对话已经结束我会选择归档(左侧就是对话列表),但是在使用 CLI 的时候我没有这种意识(不止 PI), 大部分的情况下,一个会话结束,我会马上选择 /new 开始一个新对话。至于历史对话,我可能会在只会在需要的时候再选择 /resume 去恢复它,其余时候我几乎没有意识到历史会话也是一种资源,某些对话需要删除?某些对话需要归档?我认为在使用 CLI 时,我还是缺乏这种意识的。

结合上文,我认为 pi-lazy-panel 主要优势如下:
1. 可视化树状分支浏览,大部分信息都集中在三个面板中,直观高效
2. 键盘流,大部分操作一键搞定,彻底告别繁琐的二次命令,支持自定键位,提供和 lazygit 相似的操作,和其他工具不会很割裂
3. 主体跟随 PI(后续支持自定主题)
4. 国际化支持中英文切换
5. 支持部分鼠标操作
6. 上下文实时预览
目前已经是 v0.1.5 比较稳定,安装使用的方案:
npm i pi-lazy-panel具体操作方案可以查看相关文档:
https://github.com/JessieChan0730/pi-lazy-panel/blob/main/README.zh.md
有什么问题可以提 issue 来帮助我改进这个插件,当然如果觉得还不错,可以点个免费的 star 支持一下,这对我很重要,感谢您的观看!