Vai al contenuto principale
oh-my-pi (comando omp, noto anche come pi-mono — lo stesso progetto) è un agente di coding da terminale minimale ed estensibile.
Protocollo: compatibile con OpenAI
  • Base URL: https://api.orcarouter.ai/v1 (include il suffisso /v1)

Installazione

bun install -g @oh-my-pi/pi-coding-agent
Richiede bun >= 1.3.14. Il comando installato è omp.

Configurazione

Per prima cosa esporta la tua chiave API come variabile d’ambiente:
export ORCA_KEY="sk-orca-..."
File di configurazione: ~/.omp/agent/models.yml.
providers:
  orcarouter:
    baseUrl: https://api.orcarouter.ai/v1
    api: openai-completions
    apiKey: ORCA_KEY
    authHeader: true
    models:
      - id: orcarouter/auto
        name: OrcaRouter Auto
        reasoning: false
        input: [text]
        contextWindow: 200000
        maxTokens: 8192
        compat:
          supportsDeveloperRole: false
          maxTokensField: max_tokens
Sostituisci orcarouter/auto con un modello specifico se preferisci, ad es. anthropic/claude-opus-4.8 o google/gemini-2.5-flash. Gli ID dei modelli usano sempre il formato vendor/model.

Esecuzione

omp -p --model "orcarouter/orcarouter/auto" "Reply with exactly: OK"
Output atteso: OK.

Note

  • Richiede bun >= 1.3.14.
  • Il base_url deve includere /v1.
  • Il campo apiKey accetta il nome di una variabile d’ambiente, non la chiave stessa; con authHeader: true viene inviata come Authorization: Bearer <value>.
  • I riferimenti ai modelli usano il formato provider/model — qui orcarouter/orcarouter/auto (provider orcarouter + ID del modello orcarouter/auto).
  • Usa -p per esecuzioni non interattive.
  • oh-my-pi e pi-mono sono lo stesso progetto; il comando è omp in entrambi.

Abilitare thinking / reasoning

La voce del modello di default sopra ha reasoning: false. Per abilitare il reasoning e consentire la selezione dell’effort, dichiara un blocco thinking più una compat.reasoningEffortMap sul modello:
models:
  - id: anthropic/claude-sonnet-4.6
    name: Claude Sonnet 4.6
    reasoning: true
    thinking:
      minLevel: low
      maxLevel: xhigh
      mode: effort
    input: [text]
    contextWindow: 200000
    maxTokens: 8192
    compat:
      supportsDeveloperRole: false
      supportsReasoningEffort: true
      maxTokensField: max_tokens
      thinkingFormat: openai
      reasoningEffortMap: { low: low, medium: medium, high: high, xhigh: high }
Poi scegli un livello di effort a runtime con un suffisso model:level (entro minLevel..maxLevel):
omp -p --model "orcarouter/anthropic/claude-sonnet-4.6:high" "What is 17*23?"
Verificato: il suffisso :high seleziona il livello di effort e funziona con OrcaRouter.