Skip to content

Uprawnienia

slopcode używa permission, aby uniknąć, czy dana akcja została wykonana automatycznie, zachowana monit lub została zablokowana.

Od v1.1.1 starsza stworzona logiczna tools jest przestarzała i została stworzona scalona z permission. Stara wersja tools jest nadal obsługiwana w celu zapewnienia zgodności wstecznej.


Działania

Każda reguła uprawnień skutkuje jedną z:

  • "allow" — uruchamiany bez zgody
  • "ask" — monit o zatwierdzenie
  • "deny" — zablokuj akcję

Konfiguracja

Możesz zainstalować uprawnienia globalnie (za pomocą *) i znajdującego się w nim narzędzia.

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}

Możesz także zainstalować wszystkie uprawnienia na raz:

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"permission": "allow"
}

Szczegółowe reguły (składnia obiektu)

Można skorzystać z różnych działań, które zależą od danych użytkowych.

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"npm *": "allow",
"rm *": "deny",
"grep *": "allow"
},
"edit": {
"*": "deny",
"packages/web/src/content/docs/*.mdx": "allow"
}
}
}

Reguły są zalecane na podstawie odpowiedniego wzorca, przy czym ostatnia wynikaca reguła wygrywa. Powszechnym wzorcem jest umieszczenie na pierwszym miejscu odpowiedniego catch-all "*", a po bardziej szczegółowe zasady.

Symbole wieloznaczne

Wzorce uprawnień z prostych dopasowywania symboli wieloznacznych:

  • * dopasowuje zero lub więcej dowolnego znaku
  • ? odpowiada dokładnie jednemu znakowi
  • Wszystkie pozostałe znaki pasują dosłownie

Rozszerzenie katalogu domowego

Możesz używać ~ lub $HOME na początku wzorca, aby zastosować się do swojego katalogu domowego. Jest to szczególnie szczególne w przypadku reguły external_directory.

  • ~/projects/* -> /Users/username/projects/*
  • $HOME/projects/* -> /Users/username/projects/*
  • ~ -> /Users/username

Katalogi zewnętrzne

Użycie external_directory, aby zezwolić na wywołanie narzędzia, które obsługuje obsługę poza katalogiem roboczym, z uruchomieniem slopcode. Dotyczy każdego narzędzia, które jako dane wejściowe zostało przyjęte (na przykład read, edit, list, glob, grep i wiele założycieli bash).

Rozszerzenie domu (jak ~/...) wpływa tylko na sposób za zwyczajowy wzorca. Nie powoduje to, że strategie zewnętrzne stają się stosowane przez external_directory.

Na przykład umożliwia dostęp do wszystkiego pod ~/projects/personal/:

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
}
}
}

Każdy dopuszczony tutaj katalog jest dziedziczy tych samych ustawień, co dostęp do obszaru roboczego. Ponieważ read ma wartość domyślną allow, odczyty są również dostępne dla wpisów poniżej external_directory, chyba że zagłębione. Dodaj dodatkowe rozwiązanie, kiedy narzędzie powinno być rozwiązaniem w tych ścieżkach, np. blokowanie edycji przy zachowaniu odczytów:

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}

Skoncentruj listę na zaufanych ścieżkach i dodaj dodatkowe zezwolenie lub odmowę, jeśli jest potrzebne w innych narzędziach (na przykład bash).


Dostępne uprawnienia

Uprawnienia slopcode są określane na podstawie nazwy narzędzia i kilku zabezpieczeń:

  • read — odczyt pliku (odpowiada ścieżce pliku)
  • edit — wszystkie modyfikacje plików (obejmuje edit, write, patch, multiedit)
  • glob — maglowanie plików (pasuje do wzorców globowania)
  • grep — wyszukiwanie treści (pasuje do wzorca regularnego)
  • list — wyświetlanie listy plików w katalogu (pasuje do katalogu)
  • bash — uruchamianie poleceń shell (pasuje do poleceń przeanalizowanych, takich jak git status --porcelain)
  • task — uruchamianie podagentów (odpowiada typowi podagenta)
  • skill — ładowanie umiejętności (pasuje do nazwy umiejętności)
  • lsp — uruchamianie zapytań LSP (obecnie nieszczegółowych)
  • todoread, todowrite — czytanie/aktualizacja list rzeczy do wykonania
  • webfetch — pobieranie adresu URL (pasuje do adresu URL)
  • websearch, codesearch — wyszukiwanie sieci/kodu (pasuje do zapytań)
  • external_directory — wywoływacz, gdy narzędzie jest dostępne poza katalogiem roboczym projektu
  • doom_loop — wyzwalane, gdy samo wywołanie narzędzia zostanie powtórzone 3 razy z tymi samymi danymi podstawowymi

Domyślne

Jeżeli nic nie jest określone, slopcode zostanie uruchomione od dopuszczalnych rozwiązań diagnostycznych:

  • Dostępne uprawnienia ma wartość domyślną "allow".
  • doom_loop i external_directory zamek ma wartość "ask".
  • read do "allow", ale pliki .env są odrzucane:
slopcode.json
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}

Co robi „Zapytaj”.

Gdy slopcode poprosi o zatwierdzenie, interfejs użytkownika oferujący trzy wyniki:

  • once — zatwierdź tylko tę prośbę
  • always — zastosowanie, które następuje po zastosowaniu sugerowanych wzorców (przez następczą bieżącą sesję slopcode)
  • reject — odrzucić

Zestaw wzorców, które always zatwierdziłby, jest udostępniony przez narzędzie (na przykładzie zatwierdzenia bash zazwyczaj umieszczają na częstotliwości bezpiecznej prefiksy polecenia, takie jak git status*).


Agenci

Można uzyskać dostęp do poszczególnych agentów. Uprawnienia agenta są skalowane z konfiguracją globalną, a następnie agenta ma pierwszeństwo. Dowiedz się więcej o prawach agenta.

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "deny",
"git push *": "deny",
"grep *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "ask",
"git push *": "deny",
"grep *": "allow"
}
}
}
}
}

Możesz także mieć pozwolenie na agenta w Markdown:

~/.config/slopcode/agents/review.md
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Only analyze code and suggest changes.