omp packages

pi-edit-last0.1.1

Restore the last user message to the Pi editor using session tree navigation.

tong233 Published 9 days ago MIT ~474 downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

pi-edit-last

把当前 Pi 会话分支中最近一条用户消息放回输入框,方便修改后重新发送。

English · 开发与发布流程

安装

需要 Pi 和 Node.js 22.19 或更高版本。当前已针对 @earendil-works/pi-coding-agent 1.1.0 测试。

pi install npm:pi-edit-last

在已打开的 Pi 会话中执行 /reload,或者重启 Pi。也可以从 GitHub 安装:

pi install git:github.com/tong233/pi-edit-last

如果之前安装过 ~/.pi/agent/extensions/edit-last.ts,请先把旧文件移到 extensions 目录之外并保留备份,避免命令和快捷键重复注册。

使用

执行 /last 或按 Ctrl+Shift+E。恢复文本后继续编辑,准备好后按 Enter 发送;扩展不会自动发送恢复的消息。

扩展使用 Pi 公开的会话树导航 API,效果类似在 /tree 中选择最近的用户消息:当前分支回退到该消息的父节点,原消息及其后续历史仍保留,可通过 /tree 找回。

  • 只查找当前分支,保留多行文本和原有空格。
  • 只在交互式 TUI 模式运行。
  • Agent 正在生成或存在排队消息时拒绝操作;请先按 Esc 停止生成,并处理排队消息。
  • 输入框已有草稿时拒绝操作;导航期间输入的新草稿也会保留。
  • 最近消息包含图片时拒绝操作,避免丢失附件;请使用 /tree。
  • 导航取消、失败或会话切换时,不覆盖输入框。
  • 没有用户消息或消息没有可恢复文本时,会显示提示。

回退会话不会撤销文件修改、命令或其他副作用。 如需撤销这些操作,请另外使用 Git 等工具。快捷键可能与终端设置或其他扩展冲突。

当最近的用户消息恰好是当前叶节点时,扩展会添加一个不进入模型上下文的 edit-last-anchor 内部标记,以避免 Pi 对当前叶节点的导航成为空操作。

更新和卸载

pi update npm:pi-edit-last
pi remove npm:pi-edit-last

开发和分发

npm ci
npm run check
npm test
pi -e ./extensions/edit-last.ts

测试包含保护逻辑,以及真实 Pi 资源加载、会话导航和快捷键分派,不调用模型。Pi 直接加载 TypeScript 源码,不需要构建或打包宿主运行时。

本项目同时是 npm 包和 Pi package:pi.extensions 声明扩展入口,pi-package 关键词用于 Pi 包目录发现。目录索引由 Pi 管理,可能需要等待更新。

首次发布和后续自动发布流程见 CONTRIBUTING.md。

许可证

MIT