@kassing/pi-menu

Interactive menus & input for pi — proactive multi-question tabs, option search filter, single/multi select, typed input (text/secret/number/date/path), minimal emoji-free UI

Packages

Package details

extension

Install @kassing/pi-menu from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@kassing/pi-menu
Package
@kassing/pi-menu
Version
0.2.4
Published
Aug 4, 2026
Downloads
270/mo · 270/wk
Author
kassing
License
MIT
Types
extension
Size
47.6 KB
Dependencies
0 dependencies · 4 peers
Pi manifest JSON
{
  "extensions": [
    "./extensions"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-menu

交互式菜单插件 —— 让 AI 主动向你提问,而不是瞎猜。

当任务存在歧义、需要你做决定、或信息不完整时,AI 会弹出交互式菜单让你选择、输入或跳过。

安装

pi install npm:@kassing/pi-menu

或临时试用(不写入配置):

pi -e npm:@kassing/pi-menu

安装后执行 /reload(或重启 pi)即可生效,无需任何配置。

提供的能力

AI 注册了两个工具,会自动主动调用

工具 功能
pi_menu 交互式菜单:单选 / 多选 / 自定义输入 / 跳过 / 多问题 Tab 切换
pi_menu_input 自由文本输入(支持 secret: true 密文掩码,用于密码、API Key)

每轮对话都会向系统提示词注入「用户交互协议」,要求模型在遇到选择、偏好、歧义、需求不明确时先问你,而不是自行猜测。只有当你明确说"直接做 / 你决定 / 不用问"时才会跳过询问。

交互体验

  • 打字过滤:选项多时直接打字即过滤(不区分大小写,匹配标签和描述),Backspace 修改、Esc 清除
  • ↑↓ / 数字键 1-9 快速选择
  • Space 多选勾选,Enter 确认,Esc 取消
  • Tab / ← → 多问题 Tab 切换,提交页统一确认
  • 选中「输入自己的答案…」后直接打字即开始输入(无需先按 Enter)
  • 非必需问题自动提供「跳过」选项
  • 多问题支持每个问题独立设置:多选 / 自定义 / 是否必需 / 选择上限

界面风格

界面不使用任何 emoji,只采用纯文本符号( 光标、[x] / [ ] 多选框、 已完成),全部为普通文本字符,随终端字体正常显示、大小一致——避免 emoji 在部分终端(如 Windows Terminal)以彩色字形渲染导致显示大小不一、影响选择观感的问题。

模型调用示例

// 单问题菜单
pi_menu({
  question: "用哪种方式实现?",
  options: [
    { value: "cli", label: "CLI 工具", description: "独立命令行程序" },
    { value: "api", label: "REST API" },
    { value: "both", label: "两者都要" }
  ]
})

// 多问题 Tab(一次问多项)
pi_menu({
  questions: [
    { id: "lang", label: "语言", question: "用哪种语言?", options: [...] },
    { id: "scope", label: "范围", question: "改动范围?", options: [...], multiSelect: true },
    { id: "note", label: "备注", question: "还有其他要求吗?", required: false }
  ]
})

// 自由文本 / 密文输入
pi_menu_input({ prompt: "你的名字?", placeholder: "例如:张三" })
pi_menu_input({ prompt: "API Key?", secret: true })

// 更多输入类型(带校验,输错会提示重输)
pi_menu_input({ prompt: "年龄?", type: "number" })
pi_menu_input({ prompt: "截止日期?", type: "date" })       // YYYY-MM-DD
pi_menu_input({ prompt: "输出目录?", type: "path" })

环境兼容

模式 行为
TUI 交互模式 完整交互界面(菜单、Tab、密文、直接输入)
RPC 模式 回退为 select / input 对话框
print / json 模式 返回错误提示,模型自行决策

开发

# 本地安装测试
pi install ./pi-menu

# 构建发布(scoped 包需要 --access=public)
npm pack            # 检查产物
npm publish --access=public

License

MIT