Files
pi-model-selector/README.md
2026-06-23 17:24:50 +08:00

139 lines
3.5 KiB
Markdown

# pi-model-selector
Interactive model selector for [pi](https://pi.dev/) with a provider-focused terminal UI.
`pi-model-selector` replaces noisy full-provider model lists with a compact selector that only shows models available in your current pi environment. It is useful when you have many built-in providers installed but only want to switch among models with configured auth/API keys/OAuth credentials.
## Features
- Provider-focused navigation with `Tab` / `Shift+Tab`
- Model navigation with `↑` / `↓`
- Confirm selection with `Enter`
- Cancel with `Esc`
- Shows only available models from `ctx.modelRegistry.getAvailable()`
- Displays provider count, model range, selected index, model price, and context window
- Highlights the currently selected row
- Marks current active model with `*`
- Marks reasoning-capable models with `R`
- Displays prices as `$input/$output · context`
- Avoids overriding pi's built-in `/model` command
## UI preview
```text
+--------------------------------------------------------------+
|Model Selector 3 providers|
| < Anthropic 2/3 OpenAI Google > |
|Models 1-10/18 selected 3/18|
+--------------------------------------------------------------+
| MODEL PRICE / CONTEXT |
|> R gpt-5.2-codex $1.25/$10 · 400K |
| * R gpt-5.2 $1.25/$10 · 400K |
| gpt-4.1-mini $0.4/$1.6 · 1M |
+--------------------------------------------------------------+
| Tab/Shift+Tab provider • Up/Down navigate • Enter select|
+--------------------------------------------------------------+
```
## Install
### Install as a pi package from GitHub
```bash
pi install git:github.com/sakuradairong/pi-model-selector
```
For a pinned install, use a release tag:
```bash
pi install git:github.com/sakuradairong/pi-model-selector@v0.1.0
```
Then restart pi, or run:
```text
/reload
```
### Try without installing
```bash
pi -e git:github.com/sakuradairong/pi-model-selector
```
### Manual install
Copy the extension file into your global pi extensions directory:
```bash
mkdir -p ~/.pi/agent/extensions
curl -fsSL https://raw.githubusercontent.com/sakuradairong/pi-model-selector/main/src/index.ts \
-o ~/.pi/agent/extensions/pi-model-selector.ts
```
Then restart pi or run `/reload`.
## Usage
Open the selector with any of these commands:
```text
/ms
/wow-model
/select-model
/model-selector
```
Keyboard controls inside the selector:
| Key | Action |
| --- | --- |
| `Tab` | Next provider |
| `Shift+Tab` | Previous provider |
| `↑` / `↓` | Move through models |
| `Enter` | Select model |
| `Esc` | Cancel |
A shortcut is also registered:
```text
Ctrl+Shift+M
```
## Important note about `/model`
This extension intentionally **does not override** pi's built-in `/model` command.
Pi treats `/model` as a built-in interactive command, so extension shadowing is unreliable. Use `/ms` or `/wow-model` for this selector.
## Requirements
- pi latest version
- Interactive TUI mode
- At least one model with configured auth/API key/OAuth credentials
The selector only opens in interactive TUI mode. In RPC, JSON, or print mode it will not attempt to render terminal UI.
## Development
This package follows pi's package manifest format:
```json
{
"keywords": ["pi-package"],
"pi": {
"extensions": ["./src/index.ts"]
}
}
```
Local test:
```bash
pi -e ./src/index.ts
```
## License
MIT