Konfiguracja
Ustawienia opencode w pliku JSON.
Możesz zagrać z opencode za pomocą pliku konfiguracyjnego JSON.
Format
opencode obsługa formaty JSON i JSONC (JSON z komentarzami).
{ "$schema": "https://opencode.ai/config.json", // Theme configuration "theme": "opencode", "model": "anthropic/claude-sonnet-4-5", "autoupdate": true,}Lokalizacje
Możesz umieścić swoją instalację w kilku różnych lokalizacjach i jednym pliku inne porządki pierwszeństwa.
Pliki konfiguracyjne są łączone ze sobą, a nie zastępowane. Ustawienia z lokalizacji konfiguracyjnych są konfigurowalne. Ewentualne konfiguracje zaistnieją tylko w przypadku sprzecznych kluczy. Niekonfliktowe ustawienia ze wszystkich zasobów zachowanych.
Na zestawie, przygotowana globalna ustawi theme: "opencode" i autoupdate: true, zestaw zestawu model: "anthropic/claude-sonnet-4-5", ostateczna zestaw będzie zawierał wszystkie trzy ustawienia.
Kolejność pierwszeństwa
Źródła konfiguracji są ładowane w kolejności (później źródła występują wcześniej):
- Zdalna konfiguracja (od
.well-known/opencode) – ustawienia stosowane w organizacji - Konfiguracja globalna (
~/.config/opencode/opencode.json) – przestrzeganie użytkownika - Konfiguracja niestandardowa (
OPENCODE_CONFIGenv var) — zastosowanie zastąpienie - Konfiguracja projektu (
opencode.jsonw projekcie) - ustawienia dla projektu specjalnego .opencodekatalogi - agent, poleca, półki- Konfiguracja wbudowana (
OPENCODE_CONFIG_CONTENTenv var) — zastąpienie środowiska wykonawczego
to, że konfiguracje projektu mogą być dostępne na poziomie globalnym konfiguracji, a konfiguracje globalne mogą być zdalne, zdalne konfiguracja organizacji.
Zdalny
Organizacje mogą być podłączone do łączy końcowych .well-known/opencode. Jest pobierane automatycznie po uwierzytelnieniu u dostawcy, który obsługuje.
Zdalna jest ładowana jako pierwsza i podstawowa. Wszystkie inne źródła konfiguracji (globalne, projektowe) mogą zostać udostępnione menu.
Na przykład, jeśli Twoja organizacja udostępnia serwery MCP, które są siecią internetową:
{ "mcp": { "jira": { "type": "remote", "url": "https://jira.example.com/mcp", "enabled": false } }}Możesz udostępnić serwery w szczegółach:
{ "mcp": { "jira": { "type": "remote", "url": "https://jira.example.com/mcp", "enabled": true } }}Światowy
Umieść swoją globalną konfigurację opencode w ~/.config/opencode/opencode.json. przestrzeganie funkcji globalnej, aby uzyskać dostęp do całego użytkownika, takie jak motywy, dostawca lub skróty klawiszowe.
Konfiguracja globalna zaawansowana, zdalne ustawienie konfiguracji.
Projekt
Dodaj opencode.json w katalogu głównym projektu. Konfiguracja projektu ma priorytet wśród plików konfiguracyjnych — zaawansowane konfiguracje globalne i zdalne.
Kiedy opencode się uruchomi, szuka pliku konfiguracyjnego w katalogu Git.
Można również sprawdzić w Git i tego samego schematu, co globalny.
Niestandardowa ścieżka
Niestandardowe rozwiązanie konfiguracyjne, różne opcje OPENCODE_CONFIG.
export OPENCODE_CONFIG=/path/to/my/custom-config.jsonopencode run "Hello world"Konfiguracja niestandardowa jest ładowana z konfiguracją globalną i konfiguracją projektu w kolejności pierwszych.
Katalog niestandardowy
niestandardowy katalog konfiguracyjny za pomocą OPENCODE_CONFIG_DIR
zmienna środowiskowa. Katalog ten będzie przeszukiwany pod kątem agentów, ukryty,
tryby i wtyczki, tak jak standardowy katalog .opencode i powinienem
podążaj tą samą strukturą.
export OPENCODE_CONFIG_DIR=/path/to/my/config-directoryopencode run "Hello world"Katalog niestandardowy jest ładowany po katalogach global config i .opencode, więc może być połączony z ich urządzeniami.
Schemat
Plik konfiguracyjny ma schemat końcowy w opencode.ai/config.json.
Twój edytor powinien mieć możliwość sprawdzania poprawności i autouzupełniania na podstawie schematu.
TUI
Możliwość podłączenia urządzenia dla TUI za pomocą opcji tui.
{ "$schema": "https://opencode.ai/config.json", "tui": { "scroll_speed": 3, "scroll_acceleration": { "enabled": true }, "diff_style": "auto" }}Dostępna opcja:
scroll_acceleration.enabled- Włącz przyspieszenie przewijania w rysiku macOS. Ma pierwszeństwo przedscroll_speed.scroll_speed- Niestandardowy mnożnik szybkości przewijania (domyślnie:3, minimalnie:1). Ignorowane, jeśliscroll_acceleration.enableddotrue.diff_style– Sterowanie renderowaniem różnicowym."auto"dostępny jest do szerokości terminala,"stacked"zawsze pojawia się pojedyncza kolumna.
Dowiedz się więcej o korzystaniu z TUI tutaj.
Serwer
Możliwość ustawienia serwera dla źródeł opencode serve i opencode web za pomocą opcji server.
{ "$schema": "https://opencode.ai/config.json", "server": { "port": 4096, "hostname": "0.0.0.0", "mdns": true, "mdnsDomain": "myproject.local", "cors": ["http://localhost:5173"] }}Dostępna opcja:
port- Port do nasłuchiwania.hostname— nazwa hosta, która jest przeznaczona dla Ciebie. Gdymdnsjest połączony i nie jest ułożony inną nazwą hosta, jest połączony z0.0.0.0.mdns- Włącz wykrywanie usług mDNS. Dzięki temu zewnętrznemu urządzeniu w sieci może być przesyłany Twój serwer opencode.mdnsDomain- Niestandardowa nazwa domeny dla usług mDNS. Wartość domyślna doopencode.local. Przydatne do uruchomienia wielu zastosowań w tej samej sieci.cors- Dodatkowe źródło CORS podczas korzystania z serwera HTTP z punktu końcowego. Wartość musi być dostępna dla źródeł (schemat + host + port opcjonalny), np.https://app.example.com.
Narzędzia
Dostępne narzędzia, z których można korzystać LLM, dostęp do opcji tools.
{ "$schema": "https://opencode.ai/config.json", "tools": { "write": false, "bash": false }}Dowiedz się więcej o narzędziach tutaj.
Modele
Możesz mieć dostawców i modele, które chcesz mieć w konfiguracji opencode, za pomocą opcji provider, model i small_model.
{ "$schema": "https://opencode.ai/config.json", "provider": {}, "model": "anthropic/claude-sonnet-4-5", "small_model": "anthropic/claude-haiku-4-5"}Opcja small_model konfiguruje oddzielny model do lekkich zadań, takich jak generowanie tytułów. Domyślnie opencode wyparte przez dostępny model, jeśli jest dostępny u dostawcy, w razie potrzeby powróć do innego modelu.
Opcje dostawcy mogą być zainstalowane timeout i setCacheKey:
{ "$schema": "https://opencode.ai/config.json", "provider": { "anthropic": { "options": { "timeout": 600000, "setCacheKey": true } } }}timeout- Limit czasu trwania w milisekundach (domyślnie: 300000). Ustaw nafalse, aby wyłączyć.setCacheKey— wkrótce, że klucz pamięci podręcznej jest zawsze gotowy dla dostawcy.
Możesz także mieć model lokalny. Dowiedz się więcej.
Opcje specyficzne dla dostawców
inne udostępnienie dodatkowych możliwości wyposażenia poza urządzeniami timeout i apiKey.
Amazon Bedrock
Amazon Bedrock umożliwia podłączenie wyłącznika dla AWS:
{ "$schema": "https://opencode.ai/config.json", "provider": { "amazon-bedrock": { "options": { "region": "us-east-1", "profile": "my-aws-profile", "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com" } } }}region— region AWS dla Bedrock (domyślnie jest doAWS_REGIONenv var lubus-east-1)profile- profil nazwany AWS z~/.aws/credentials(domyślnieAWS_PROFILEenv var)endpoint— niestandardowy adres URL punktu końcowego dla punktów końcowych VPC. Jest to alias dla opcji ogólnejbaseURLprzy użyciu terminologii specjalnej dla AWS. Jeśli oba, pierwszeństwo maendpoint.
Dowiedz się więcej o budowie Amazon Bedrock.
Motywy
Urządzenie zachęcające do korzystania z urządzeń opencode, za pomocą sieci theme.
{ "$schema": "https://opencode.ai/config.json", "theme": ""}Agenci
Możliwość dostępności agentów do gniazd za pomocą opcji agent.
{ "$schema": "https://opencode.ai/config.json", "agent": { "code-reviewer": { "description": "Reviews code for best practices and potential issues", "model": "anthropic/claude-sonnet-4-5", "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.", "tools": { // Disable file modification tools for review-only agent "write": false, "edit": false, }, }, },}Możesz także uniknąć agentów przy użyciu plików przecen w ~/.config/opencode/agents/ lub .opencode/agents/. Dowiedz się więcej tutaj.
Domyślny agent
Domyślnego agenta można ustawić za pomocą opcji default_agent. Wykrywacz, który jest używany, jeśli nie został ujawniony.
{ "$schema": "https://opencode.ai/config.json", "default_agent": "plan"}Agent domyślny musi być agentem (nie subagentem). Może być agentem aplikacji, taki jak "build" lub "plan", albo ukryty przez Ciebie agent niestandardowy. Jeśli agent nie istnieje lub jest podagentem, opencode powróć do "build" z ostrzeżeniem.
Dotyczy urządzeń wszystkich interfejsów: TUI, CLI (opencode run), aplikacji komputerowej i akcji GitHub.
Udostępnianie
Możesz udostępnić udostępnij za pomocą opcji share.
{ "$schema": "https://opencode.ai/config.json", "share": "manual"}Działaj:
"manual"– Zezwalaj na ręczne korzystanie z pomocy narzędzi (domyślnie)"auto"- Automatycznie udostępniaj nowe rozmowy"disabled"- Całkowicie udostępnienie
Domyślnie jest rozwiązaniem na tryb manualny, w którym należy jawnie udostępniać rozmowy za pomocą polecenia /share.
Polecenia
Możesz korzystać z usług polecanych dla powtarzalnych zadań za pomocą opcji command.
{ "$schema": "https://opencode.ai/config.json", "command": { "test": { "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.", "description": "Run tests with coverage", "agent": "build", "model": "anthropic/claude-haiku-4-5", }, "component": { "template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.", "description": "Create a new component", }, },}Można także definiować polecenia przy użyciu plików Markdown w ~/.config/opencode/commands/ lub .opencode/commands/. Dowiedz się więcej tutaj.
Keybinds
Możliwość zmiany skrótu klawiszowego za pomocą opcji keybinds.
{ "$schema": "https://opencode.ai/config.json", "keybinds": {}}Automatyczna aktualizacja
opencode automatycznie pobierze każde nowe uruchomienie. Można skorzystać z opcji autoupdate.
{ "$schema": "https://opencode.ai/config.json", "autoupdate": false}Jeśli nie chcesz aktualizacji, ale chcesz podłączyć nową wersję, ustaw autoupdate na "notify".
Działa tylko wtedy, gdy nie jest uruchamiana przy użyciu menedżera pakietów, jak Homebrew.
Formattery
Można podać kod formacyjny za pomocą opcji formatter.
{ "$schema": "https://opencode.ai/config.json", "formatter": { "prettier": { "disabled": true }, "custom-prettier": { "command": ["npx", "prettier", "--write", "$FILE"], "environment": { "NODE_ENV": "development" }, "extensions": [".js", ".ts", ".jsx", ".tsx"] } }}Dowiedz się więcej o formaterach tutaj.
Uprawnienia
Domyślnie opencode zezwala na wszystkie działania bez konieczności posiadania zgody. Można zmienić opcję permission.
Na przykład, aby można było wykryć, że narzędzie edit i bash wymaga zgody użytkownika:
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "ask", "bash": "ask" }}Dowiedz się więcej o prawach tutaj.
Zagęszczanie
Możesz kontrolować zachowanie zagęszczania kontekstu za pomocą opcji compaction.
{ "$schema": "https://opencode.ai/config.json", "compaction": { "auto": true, "prune": true }}auto- Automatycznie kompaktuj, gdy kontekst jest pełny (domyślnie:true).prune- Usuń stare dane narzędzia, aby zapisać tokeny (domyślnie:true).
Obserwator
Rejestracja wzorca plików za pomocą watcher.
{ "$schema": "https://opencode.ai/config.json", "watcher": { "ignore": ["node_modules/**", "dist/**", ".git/**"] }}Wzorce są zgodne ze składnią glob. Dostęp tej opcji, aby móc zaszumione katalogi z plikami do przeglądania.
Serwery MCP
Dostęp do serwerów MCP, których chcesz używać, za pośrednictwem sieci mcp.
{ "$schema": "https://opencode.ai/config.json", "mcp": {}}Wtyczki
Wtyczki rozszerzają opencode o podstawowe narzędzia, hooki i integracje.
Pliki plików wtyczek w .opencode/plugins/ lub ~/.config/opencode/plugins/. Można także włączyć wtyczkę z npm poprzez opcję plugin.
{ "$schema": "https://opencode.ai/config.json", "plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]}Instructions
Instrukcja dla modelu, w której można zastosować opcję instructions.
{ "$schema": "https://opencode.ai/config.json", "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]}Pobierana do schematów i wzorców globalnych do plików graficznych. Dowiedz się więcej o zasadach tutaj.
Wyłączeni dostawcy
Zasilacz ładowany automatycznie za pomocą zasilacza disabled_providers. Jest to możliwe, gdy istnieje możliwość podłączenia ładowania niektórych dostawców, nawet jeśli dane uwierzytelniające są dostępne.
{ "$schema": "https://opencode.ai/config.json", "disabled_providers": ["openai", "gemini"]}Opcja disabled_providers analiza tablica identyfikatorów dostawców. Gdy dostawca jest wyłączony:
- Nie istnieje możliwość wystąpienia zagrożenia, które jest możliwe do zastosowania.
- Nie nastąpi uruchomienie, nawet jeśli klucz API zostanie uruchomiony za pomocą polecenia
/connect. - Model dostawcy nie pojawia się na liście wyboru modeli.
Włączeni dostawcy
Można znaleźć dostawców za pomoc enabled_providers. Po ustawieniu włączeni tylko dostawcy, a wszyscy będą obecni.
{ "$schema": "https://opencode.ai/config.json", "enabled_providers": ["anthropic", "openai"]}Jest to urządzenie, gdy urządzenie opencode jest używane tylko z urządzeniami, zamiast odłączać ich jedno po drugim.
Jeśli obowiązująsz w enabled_providers, jak i disabled_providers, disabled_providers pierwszeństwo ze względu na kompatybilność wsteczną.
Eksperymentalny
Klucz experimental zawiera opcje, które są początkiem rozwoju.
{ "$schema": "https://opencode.ai/config.json", "experimental": {}}Zmienne
Możliwość wykorzystania danych zmiennych w plikach konfiguracyjnych, aby odwoływać się do zmiennych zewnętrznych i zawartości plików.
Env vars
zastosowanie {env:VARIABLE_NAME}, aby zakończyć zmiennego przebiegu:
{ "$schema": "https://opencode.ai/config.json", "model": "{env:OPENCODE_MODEL}", "provider": { "anthropic": { "models": {}, "options": { "apiKey": "{env:ANTHROPIC_API_KEY}" } } }}Jeżeli zmienna kontrolna nie jest skonfigurowana, należy zastosować do niej pusty ciąg znaków.
Pliki
źródło {file:path/to/file}, aby znaleźć zawartość pliku:
{ "$schema": "https://opencode.ai/config.json", "instructions": ["./custom-instructions.md"], "provider": { "openai": { "options": { "apiKey": "{file:~/.secrets/openai-key}" } } }}Ścieżki plików mogą być:
- Względem katalogu konfiguracyjnego
- Lub nadrzędne kierowane się od
/lub~
Sądzimy, że:
- Przechowywanie wrażliwych danych, takich jak klucze API, w oddzielnych plikach.
- Do udostępnienia dużych plików bez zaśmiecania konstrukcji.
- Udostępnianie fragmentów konfiguracji w wielu plikach konfiguracyjnych.