mohManuale

Manuale/Il lavoro di tutti i giorni

moh chiede prima di agire

Capitolo 05 · 3 min di lettura

È la caratteristica che definisce moh. Ogni passo che potrebbe cambiare qualcosa — scrivere un file, eseguire un comando, cliccare in una pagina web — passa da un cancello, e le chiavi le hai tu.

La richiesta di permesso

Quando nessuna regola ha ancora deciso un'azione, moh si ferma e chiede:

permission
TastoEffetto
y sìConsente questa singola azione.
a sempreLa consente, insieme alle azioni dello stesso tipo, per il resto della conversazione. La richiesta mostra la regola esatta che verrà creata.
e modificaCambia l'azione prima che parta — un comando più sicuro, un file diverso.
n noRifiuta. moh viene avvisato e cerca un'altra strada o ti chiede.
escChiude la richiesta; vale come no.

Regole permanenti

Rispondere ogni volta alla stessa domanda stanca. Una regola decide in anticipo, con un linguaggio a schemi semplice e uguale ovunque:

SchemaCopre
bashTutti i comandi di terminale.
bash:git statusSolo i comandi che iniziano con git status.
write:src/**Creare o sovrascrivere file ovunque sotto src/.
edit:docs/**Modificare i file sotto docs/.

Una regola consente oppure nega. Puoi crearne una al volo con a, passarla a una singola esecuzione (--allow "bash:git status", --deny "write:secrets/**"), oppure scriverla nel file moh.json del progetto, così vale per chiunque ci lavori. Quando ne valgono diverse, vince la più specifica.

# moh.json — moh può controllare git liberamente, ma non tocca mai secrets/
{
  "permissions": {
    "overrides": {
      "bashAllow": [["git", "status"], ["git", "diff"]],
      "bashDeny":  [["git", "push"]],
      "pathDeny":  ["secrets/**"]
    }
  }
}

I tre livelli di cautela

Premi shift+tab per passare dall'uno all'altro. Il livello attivo è sempre indicato in basso nello schermo, e la scelta vale solo per questa conversazione — una nuova riparte dalle tue impostazioni.

LivelloCosa faUsalo per
◌ NormalChiede per ogni azione che nessuna regola consente. Resta dentro la cartella del progetto.Imparare, lavoro vero, tutto ciò a cui tieni.
◐ Auto-acceptSmette di chiedere per le azioni di routine di moh. Chiede ancora per tutto ciò che è fuori dal progetto e per le domande sollevate dalle estensioni.Lavori lunghi che stai seguendo.
⚠ YOLONessuna domanda, e nessun recinto attorno alla cartella del progetto.Solo esperimenti usa e getta.

Regola pratica

Resta su Normal mentre impari. Le richieste non sono un ostacolo — sono il prodotto. Leggere cosa sta per fare moh è il modo in cui impari cosa fa.

I limiti che nulla può superare

  • Le scritture fuori dalla cartella del progetto vengono chieste ogni singola volta. Non possono mai diventare una regola, nemmeno per sbaglio.
  • Le estensioni possono solo rendere moh più prudente. Un'estensione può rifiutare un'azione o sollevare una domanda; non può mai concedere qualcosa che non hai permesso. Le sue domande offrono solo sì/no.
  • I comandi che scrivi tu con ! passano dallo stesso cancello (vedi eseguire comandi tuoi).
  • Quando nessuno può rispondere — negli script e nella CI — un'azione che richiederebbe una domanda viene rifiutata invece di restare in attesa per sempre (vedi automazione).

Pagine web e browser

Leggere una pagina web è consentito, ma moh rifiuta gli indirizzi della tua rete privata (il router, i servizi locali) a meno che tu non lo permetta, così una pagina non può spingerlo a curiosare nella tua rete di casa. Nel browser guardare è libero; cliccare, scrivere, caricare e scaricare chiedono prima, e "sempre per questo sito" resta limitato a quel sito e a questa conversazione.

Scritto per moh 0.61. Dentro moh, ctrl+h apre il manuale incluso, aggiornato alla tua versione.