wip(docs): i18n (#12681)
This commit is contained in:
67
packages/web/src/content/docs/da/1-0.mdx
Normal file
67
packages/web/src/content/docs/da/1-0.mdx
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
title: Migrerer til 1.0
|
||||
description: Hvad er nyt i OpenCode 1.0.
|
||||
---
|
||||
|
||||
OpenCode 1.0 er en komplet omskrivning af TUI.
|
||||
|
||||
Vi flyttede fra den go+bubbletea-baserede TUI, som havde problemer med ydeevne og kapacitet, til en intern ramme (OpenTUI) skrevet i zig+solidjs.
|
||||
|
||||
Den nye TUI fungerer som den gamle, da den opretter forbindelse til den samme opencode-server.
|
||||
|
||||
---
|
||||
|
||||
##Opgradering
|
||||
|
||||
Du bør ikke automatisk opgraderes til 1.0, hvis du er i øjeblikket bruger en tidligere
|
||||
version. Nogle ældre versioner af OpenCode henter dog altid den nyeste.
|
||||
|
||||
Kør for at opgradere manuelt
|
||||
|
||||
```bash
|
||||
$ opencode upgrade 1.0.0
|
||||
```
|
||||
|
||||
Kør for at nedgradere tilbage til 0.x
|
||||
|
||||
```bash
|
||||
$ opencode upgrade 0.15.31
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## UX ændringer
|
||||
|
||||
Sessionshistorikken er mere komprimeret og viser kun alle detaljer om redigerings- og bash-værktøjet.
|
||||
|
||||
Vi tilføjede en kommandolinje, som næsten alt flyder igennem. Tryk på ctrl+p for at få det frem i enhver sammenhæng og se alt, hvad du kan gøre.
|
||||
|
||||
Tilføjet en sessionssidebjælke (kan skiftes) med nyttige oplysninger.
|
||||
|
||||
Vi fjernede nogle funktioner, som vi ikke var sikre på, at nogen rent faktisk brugte. Hvis der mangler noget vigtigt, bedes du åbne et problem, så tilføjer vi det hurtigt igen.
|
||||
|
||||
---
|
||||
|
||||
## Brydende ændringer
|
||||
|
||||
### Nøglebindinger omdøbt
|
||||
|
||||
- messages_revert -> messages_undo
|
||||
- switch_agent -> agent_cyklus
|
||||
- switch_agent_reverse -> agent_cyklus_reverse
|
||||
- switch_mode -> agent_cyklus
|
||||
- switch_mode_reverse -> agent_cyklus_reverse
|
||||
|
||||
### Nøglebindinger fjernet
|
||||
|
||||
- messages_layout_toggle
|
||||
- beskeder_næste
|
||||
- beskeder_forrige
|
||||
- file_diff_toggle
|
||||
- fil_søgning
|
||||
- fil_luk
|
||||
- fil_liste
|
||||
- app_hjælp
|
||||
- projekt_init
|
||||
- tool_details
|
||||
- tænkeblokke
|
||||
156
packages/web/src/content/docs/da/acp.mdx
Normal file
156
packages/web/src/content/docs/da/acp.mdx
Normal file
@@ -0,0 +1,156 @@
|
||||
---
|
||||
title: ACP support
|
||||
description: Brug OpenCode i enhver ACP-kompatibel editor.
|
||||
---
|
||||
|
||||
OpenCode understøtter [Agent Client Protocol](https://agentclientprotocol.com) eller (ACP), så du kan bruge det direkte i kompatible editorer og IDE'er.
|
||||
|
||||
:::tip
|
||||
For en liste over redaktører og værktøjer, der understøtter ACP, tjek [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now).
|
||||
:::
|
||||
|
||||
ACP er en åben protokol, der standardiserer kommunikation mellem kodeeditorer og AI-kodningsagenter.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
For at bruge OpenCode via ACP, konfigurer din editor til at køre kommandoen `opencode acp`.
|
||||
|
||||
Kommandoen starter OpenCode som en ACP-kompatibel underproces, der kommunikerer med din editor over JSON-RPC via stdio.
|
||||
|
||||
Nedenfor er eksempler på populære redaktører, der understøtter ACP.
|
||||
|
||||
---
|
||||
|
||||
### Zed
|
||||
|
||||
Føj til din [Zed](https://zed.dev)-konfiguration (`~/.config/zed/settings.json`):
|
||||
|
||||
```json title="~/.config/zed/settings.json"
|
||||
{
|
||||
"agent_servers": {
|
||||
"OpenCode": {
|
||||
"command": "opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
For at åbne den skal du bruge handlingen `agent: new thread` i **Kommandopaletten**.
|
||||
|
||||
Du kan også binde en tastaturgenvej ved at redigere din `keymap.json`:
|
||||
|
||||
```json title="keymap.json"
|
||||
[
|
||||
{
|
||||
"bindings": {
|
||||
"cmd-alt-o": [
|
||||
"agent::NewExternalAgentThread",
|
||||
{
|
||||
"agent": {
|
||||
"custom": {
|
||||
"name": "OpenCode",
|
||||
"command": {
|
||||
"command": "opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### JetBrains IDE'er
|
||||
|
||||
Tilføj til din [JetBrains IDE](https://www.jetbrains.com/) acp.json i henhold til [documentation](https://www.jetbrains.com/help/ai-assistant/acp.html):
|
||||
|
||||
```json title="acp.json"
|
||||
{
|
||||
"agent_servers": {
|
||||
"OpenCode": {
|
||||
"command": "/absolute/path/bin/opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
For at åbne den skal du bruge den nye 'OpenCode'-agent i AI Chat-agentvælgeren.
|
||||
|
||||
---
|
||||
|
||||
### Avante.nvim
|
||||
|
||||
Føj til din [Avante.nvim](https://github.com/yetone/avante.nvim)-konfiguration:
|
||||
|
||||
```lua
|
||||
{
|
||||
acp_providers = {
|
||||
["opencode"] = {
|
||||
command = "opencode",
|
||||
args = { "acp" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hvis du har brug for at videregive miljøvariabler:
|
||||
|
||||
```lua {6-8}
|
||||
{
|
||||
acp_providers = {
|
||||
["opencode"] = {
|
||||
command = "opencode",
|
||||
args = { "acp" },
|
||||
env = {
|
||||
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### CodeCompanion.nvim
|
||||
|
||||
For at bruge OpenCode som en ACP-agent i [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim), skal du tilføje følgende til din Neovim-konfiguration:
|
||||
|
||||
```lua
|
||||
require("codecompanion").setup({
|
||||
interactions = {
|
||||
chat = {
|
||||
adapter = {
|
||||
name = "opencode",
|
||||
model = "claude-sonnet-4",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Denne konfiguration sætter CodeCompanion til at bruge OpenCode som ACP-agent til chat.
|
||||
|
||||
Hvis du har brug for at sende miljøvariabler (som `OPENCODE_API_KEY`), henvises til [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) i CodeCompanion.nvim-dokumentationen for alle detaljer.
|
||||
|
||||
## Support
|
||||
|
||||
OpenCode fungerer på samme måde via ACP som i terminalen. Alle funktioner understøtter:
|
||||
|
||||
:::note
|
||||
Nogle indbyggede skråstreg-kommandoer som `/undo` og `/redo` er i øjeblikket ikke understøttet.
|
||||
:::
|
||||
|
||||
- Indbyggede værktøjer (filoperationer, terminalkommandoer osv.)
|
||||
- Brugerdefinerede værktøjer og skråstreg-kommandoer
|
||||
- MCP-servere konfigureret i din OpenCode-konfiguration
|
||||
- Projektspecifikke regler fra `AGENTS.md`
|
||||
- Brugerdefinerede formatere og linters
|
||||
- Agenter og tilladelsessystem
|
||||
747
packages/web/src/content/docs/da/agents.mdx
Normal file
747
packages/web/src/content/docs/da/agents.mdx
Normal file
@@ -0,0 +1,747 @@
|
||||
---
|
||||
title: Agent
|
||||
description: Konfigurer og brug specialiserede agenter.
|
||||
---
|
||||
|
||||
Agenter er specialiserede AI-assistenter, der kan konfigureres til specifikke opgaver og arbejdsgange. De giver dig mulighed for at oprette en central værktøj med brugerdefinerede prompter, modeller og værktøjsadgang.
|
||||
|
||||
:::tip
|
||||
Brug planagenten til at analysere kode og gennemgå forslag uden at foretage nogen kodeændringer.
|
||||
:::
|
||||
|
||||
Du kan skifte mellem agenter under en session eller kalde dem med `@`-omtalen.
|
||||
|
||||
---
|
||||
|
||||
## Skriver
|
||||
|
||||
Der er to typer agenter i OpenCode; primære midler og subagenter.
|
||||
|
||||
---
|
||||
|
||||
### Primære agent
|
||||
|
||||
Primære agenter er de vigtigste assistenter, du interagerer direkte med. Du kan bladre gennem dem ved at bruge **Tab**-tasten eller din konfigurerede `switch_agent`-tastebinding. Disse agenter håndterer din hovedsamtale. Værktøjsadgang konfigureres via tilladelser - for eksempel har Build alle aktiveret, mens Plan er begrænset.
|
||||
|
||||
:::tip
|
||||
Du kan bruge **Tab**-tasten til at skifte mellem primære agenter under en session.
|
||||
:::
|
||||
|
||||
OpenCode leveres med indbyggede primære agenter, **Build** og **Plan**. Godt
|
||||
se på disse nedenfor.
|
||||
|
||||
---
|
||||
|
||||
### Subagent
|
||||
|
||||
Subagenter er specialiserede assistenter, som primære agenter kan påbegynde sig til specifikke opgaver. Du kan også kalde dem manuelt ved at **@ nævne** dem i dine beskeder.
|
||||
|
||||
OpenCode leveres med til indbyggede underagenter, **Generelt** og **Udforsk**. Vi vil se på dette nedenfor.
|
||||
|
||||
---
|
||||
|
||||
## Indbygget
|
||||
|
||||
OpenCode leveres med to indbyggede primære agenter og to indbyggede subagenter.
|
||||
|
||||
---
|
||||
|
||||
### Brug bygge
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
Byg er den **standard** primære agent med alle aktiveret. Dette er standardagenten til udviklingsarbejde, hvor du har brug for fuld adgang til filhandlinger og systemkommandoer.
|
||||
|
||||
---
|
||||
|
||||
### Brug plan
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
En begrænset agent designet til planlægning og analyse. Vi bruger et tilladelsessystem til at give dig mere kontrol og forhindre utilsigtede ændringer.
|
||||
Som standard er alle følgende indstillet til `ask`:
|
||||
|
||||
- `file edits`: Alle skrivninger, patches og redigeringer
|
||||
- `bash`: Alle bash-kommandoer
|
||||
|
||||
Denne agent er nyttig, når du vil have LLM til at analysere kode, foreslå ændringer eller oprette planer uden at foretage egentlige ændringer af din kodebase.
|
||||
|
||||
---
|
||||
|
||||
### Brug generelt
|
||||
|
||||
_Tilstand_: `subagent`
|
||||
|
||||
En agent til generelt formål at undersøge komplekse spørgsmål og udføre opgaver i flere trin. Har fuld værktøjsadgang (undtagen todo), så den kan foretage filændringer, når det er nødvendigt. Brug dette til at køre flere arbejdsenheder parallelt.
|
||||
|
||||
---
|
||||
|
||||
### Brug udforsk
|
||||
|
||||
_Tilstand_: `subagent`
|
||||
|
||||
En hurtig, skrivebeskyttet agent til at udforske kodebaser. Kan ikke ændre filer. Brug dette, når du hurtigt skal finde filer efter mønstre, søge kode efter nøgleord eller besvare spørgsmål om kodebasen.
|
||||
|
||||
---
|
||||
|
||||
### Brug komprimering
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
Skjult systemagent, der komprimerer lang kontekst til et mindre resumé. Det kører automatisk, når det er nødvendigt og ikke kan vælges i brugergrænsefladen.
|
||||
|
||||
---
|
||||
|
||||
### Brug titel
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
Skjult systemagent, der genererer korte sessionstitler. Den kører automatisk og kan ikke vælges i brugergrænsefladen.
|
||||
|
||||
---
|
||||
|
||||
### Brug CV
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
Skjult systemagent, der opretter sessionsoversigter. Den kører automatisk og kan ikke vælges i brugergrænsefladen.
|
||||
|
||||
---
|
||||
|
||||
## Brug
|
||||
|
||||
1. For primære agenter skal du bruge tasten **Tab** til at bladre gennem dem under en session. Du kan også bruge din konfigurerede `switch_agent` nøglebinding.
|
||||
|
||||
2. Subagenter kan påberåbes:
|
||||
- **Automatisk** af primære agenter til specialiserede opgaver baseret på deres beskrivelser.
|
||||
- Manuelt ved at **@ nævne** en underagent i din besked. F.eks.
|
||||
|
||||
```txt frame="none"
|
||||
@general help me search for this function
|
||||
```
|
||||
|
||||
3. **Navigation mellem sessioner**: Når underagenter opretter deres egne underordnede sessioner, kan du navigere mellem den overordnede session og alle underordnede sessioner ved hjælp af:
|
||||
- **\<Leder>+Højre** (eller din konfigurerede `session_child_cycle`-smagsbinding) for at cykle fremad gennem forælder → barn1 → barn2 →... → forælder
|
||||
- **\<Leder>+Venstre** (eller din konfigurerede `session_child_cycle_reverse`-smagsbinding) for at cykle baglæns gennem forælder ← barn1 ← barn2 ←... ← forælder
|
||||
|
||||
Dette giver dig mulighed for problemfrit at skifte mellem hovedsamtalen og specialiseret subagent arbejde.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse de indbyggede agenter eller oprette dine egne gennem konfiguration. Agenter kan konfigureres på følgende måder:
|
||||
|
||||
---
|
||||
|
||||
### JSON
|
||||
|
||||
Konfigurationsagent i din `opencode.json`-konfigurationsfil:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"mode": "primary",
|
||||
"model": "anthropic/claude-sonnet-4-20250514",
|
||||
"prompt": "{file:./prompts/build.txt}",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": true
|
||||
}
|
||||
},
|
||||
"plan": {
|
||||
"mode": "primary",
|
||||
"model": "anthropic/claude-haiku-4-20250514",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false
|
||||
}
|
||||
},
|
||||
"code-reviewer": {
|
||||
"description": "Reviews code for best practices and potential issues",
|
||||
"mode": "subagent",
|
||||
"model": "anthropic/claude-sonnet-4-20250514",
|
||||
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Markdown
|
||||
|
||||
Du kan også definere agenter ved hjælp af markdown-filer. Placer dem i:
|
||||
|
||||
- Globalt: `~/.config/opencode/agents/`
|
||||
- Pr. projekt: `.opencode/agents/`
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
description: Reviews code for quality and best practices
|
||||
mode: subagent
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
temperature: 0.1
|
||||
tools:
|
||||
write: false
|
||||
edit: false
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are in code review mode. Focus on:
|
||||
|
||||
- Code quality and best practices
|
||||
- Potential bugs and edge cases
|
||||
- Performance implications
|
||||
- Security considerations
|
||||
|
||||
Provide constructive feedback without making direct changes.
|
||||
```
|
||||
|
||||
Markdown-filnavnet bliver agentnavnet. For eksempel opretter `review.md` og `review`-agent.
|
||||
|
||||
---
|
||||
|
||||
## Indstillinger
|
||||
|
||||
Lad os se nærmere på disse konfigurationsmuligheder.
|
||||
|
||||
---
|
||||
|
||||
### Beskrivelse
|
||||
|
||||
Brug indstillingen `description` til at give en kort beskrivelse af, hvad agenten gør, og hvornår den skal bruges.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"description": "Reviews code for best practices and potential issues"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette er en **påkrævet** konfigurationsindstilling.
|
||||
|
||||
---
|
||||
|
||||
### Temperatur
|
||||
|
||||
Styr tilfældigheden og kreativiteten af LLMs svar med `temperature`-konfigurationen.
|
||||
|
||||
Lavere værdier gør svar mere fokuserede og deterministiske, mens højere værdier øger kreativitet og variabilitet.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"temperature": 0.1
|
||||
},
|
||||
"creative": {
|
||||
"temperature": 0.8
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Temperaturværdier typisk fra 0,0 til 1,0:
|
||||
|
||||
- **0.0-0.2**: Meget fokuseret og deterministisk svar, ideel til kodeanalyse og planlægning
|
||||
- **0,3-0,5**: Afbalancerede svar med en vis kreativitet, god til generelle udviklingsopgaver
|
||||
- **0.6-1.0**: Mere kreative og varierede svar, nyttige til brainstorming og udforskning
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"analyze": {
|
||||
"temperature": 0.1,
|
||||
"prompt": "{file:./prompts/analysis.txt}"
|
||||
},
|
||||
"build": {
|
||||
"temperature": 0.3
|
||||
},
|
||||
"brainstorm": {
|
||||
"temperature": 0.7,
|
||||
"prompt": "{file:./prompts/creative.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hvis ingen temperatur er angivet, bruger OpenCode modelspecifikke standardindstillinger; typisk 0 for de fleste modeller, 0,55 for Qwen-modeller.
|
||||
|
||||
---
|
||||
|
||||
### Maks. skridt
|
||||
|
||||
Kontrollerer det maksimale antal agent-gentagelser, som en agent kan udføre, før han bliver tvunget til kun at svare med tekst. Dette giver brugere, der ønsker at kontrollere, mulighed for at sætte en grænse for agenthandlinger.
|
||||
|
||||
Hvis dette ikke er indstillet, vil agenten fortsætte med at iterere, indtil modellen vælger at stoppe, eller brugeren afbryder sessionen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"quick-thinker": {
|
||||
"description": "Fast reasoning with limited iterations",
|
||||
"prompt": "You are a quick thinker. Solve problems with minimal steps.",
|
||||
"steps": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Når grænsen er nået, modtager agenten en speciel systemprompt, der instruerer den om at svare med en opsummering af sit arbejde og anbefalede resterende opgaver.
|
||||
|
||||
:::forsigtighed
|
||||
Det gamle `maxSteps` følte er forældet. Brug `steps` i stedet.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Deaktiver
|
||||
|
||||
Indstil til `true` for at deaktivere agenten.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"disable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Spørg
|
||||
|
||||
Angiv en brugerdefineret systempromptfil for denne agent med `prompt`-konfigurationen. Promptfilen skal indeholde instruktioner, der er specifikke for agentens formål.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"prompt": "{file:./prompts/code-review.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Denne sti er i forhold til, hvor konfigurationsfilen er placeret. Så dette virker både for den globale OpenCode-konfiguration og den projektspecifikke konfiguration.
|
||||
|
||||
---
|
||||
|
||||
### Model
|
||||
|
||||
Brug `model`-konfigurationen til at tilsidesætte modeller for denne agent. Nyttigt til brug af forskellige modeller optimeret til forskellige opgaver. For eksempel en hurtigere model til planlægning, en dygtig model til implementering.
|
||||
|
||||
:::tip
|
||||
Hvis du ikke angiver en model, bruger primære agenter [model globally configured](/docs/config#models), mens subagenter vil bruge modeller for den primære agent, der påkaldte subagenten.
|
||||
:::
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Model-id'et i din OpenCode-konfiguration brugerformatet `provider/model-id`. For eksempel, hvis du bruger [OpenCode Zen](/docs/zen), vil du bruge `opencode/gpt-5.1-codex` til GPT 5.1 Codex.
|
||||
|
||||
---
|
||||
|
||||
### Værktøjer
|
||||
|
||||
Kontroller, hvilke værktøjer der er tilgængelige i denne agent med `tools`-konfigurationen. Du kan aktivere eller deaktivere specifikke redskaber ved at indstille dem til `true` eller `false`.
|
||||
|
||||
```json title="opencode.json" {3-6,9-12}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"bash": true
|
||||
},
|
||||
"agent": {
|
||||
"plan": {
|
||||
"tools": {
|
||||
"write": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
Den agentspecifikke konfiguration tilsidesætter den globale konfiguration.
|
||||
:::
|
||||
|
||||
Du kan også bruge jokertegn til at styre flere værktøjer på én gang. For eksempel, for at deaktivere alle værktøjer fra en MCP-server:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"readonly": {
|
||||
"tools": {
|
||||
"mymcp_*": false,
|
||||
"write": false,
|
||||
"edit": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about tools](/docs/tools).
|
||||
|
||||
---
|
||||
|
||||
### Tilladelser
|
||||
|
||||
Du kan konfigurere tilladelser til at administrere, hvilke handlinger og agenter kan udføre. I øjeblikket kan tilladelserne til værktøjerne `edit`, `bash` og `webfetch` konfigureres til:
|
||||
|
||||
- `"ask"` — Bed om godkendelse, før du kører værktøjet
|
||||
- `"allow"` — Tillad alle operationer uden godkendelse
|
||||
- `"deny"` — Deaktiver værktøjet
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Du kan tilsidesætte disse tilladelser pr. agent.
|
||||
|
||||
```json title="opencode.json" {3-5,8-10}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny"
|
||||
},
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"edit": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Du kan også angive tilladelser i Markdown-agenter.
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
description: Code review without edits
|
||||
mode: subagent
|
||||
permission:
|
||||
edit: deny
|
||||
bash:
|
||||
"*": ask
|
||||
"git diff": allow
|
||||
"git log*": allow
|
||||
"grep *": allow
|
||||
webfetch: deny
|
||||
---
|
||||
|
||||
Only analyze code and suggest changes.
|
||||
```
|
||||
|
||||
Du kan indstille tilladelser til specifikke bash-kommandoer.
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"git push": "ask",
|
||||
"grep *": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette kan tage et globmønster.
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"git *": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Og du kan også bruge jokertegnet `*` til at administrere tilladelser for alle kommandoer.
|
||||
Da den sidste matchningsregel har forrang, skal du sætte jokertegnet `*` først og specifikke regler efter.
|
||||
|
||||
```json title="opencode.json" {8}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git status *": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about permissions](/docs/permissions).
|
||||
|
||||
---
|
||||
|
||||
### Tilstand
|
||||
|
||||
Styr agentens tilstand med `mode`-konfigurationen. Indstillingen `mode` bruges til at bestemme, hvordan agenten kan bruges.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"mode": "subagent"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Indstillingen `mode` kan indstilles til `primary`, `subagent` eller `all`. Hvis der ikke er angivet nogen `mode`, er den som standard `all`.
|
||||
|
||||
---
|
||||
|
||||
### Skjult
|
||||
|
||||
Skjul en underagent fra `@` autofuldførelsesmenuen med `hidden: true`. Nyttigt for interne underagenter, der kun bør startes programmatisk af andre agenter via opgaveværktøjet.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"internal-helper": {
|
||||
"mode": "subagent",
|
||||
"hidden": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette påvirker kun brugerens synlighed i autofuldførelsesmenuen. Skjulte agenter kan stadig påkaldes af modellen via opgaveværktøjet, hvis tilladelser tillader det.
|
||||
|
||||
:::note
|
||||
Gælder kun for `mode: subagent`-agent.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Opgavetilladelser
|
||||
|
||||
Kontroller, hvilke subagenter en agent kan påkalde via opgaveværktøjet med `permission.task`. Bruger glob-mønstre til fleksibel matchning.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"orchestrator": {
|
||||
"mode": "primary",
|
||||
"permission": {
|
||||
"task": {
|
||||
"*": "deny",
|
||||
"orchestrator-*": "allow",
|
||||
"code-reviewer": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Når den er indstillet til `deny`, fjernes subagenten helt fra opgaveværktøjsbeskrivelsen, så modeller vil ikke forsøge at starte den.
|
||||
|
||||
:::tip
|
||||
Reglerne vurderer i rækkefølge, og den **sidste matchende regel vinder**. I eksemplet ovenfor matcher `orchestrator-planner` både `*` (afvis) og `orchestrator-*` (tillad), men da `orchestrator-*` kommer efter `*`, er resultatet `allow`.
|
||||
:::
|
||||
|
||||
:::tip
|
||||
Brugere kan altid påkalde enhver underagent direkte via `@` autofuldførelsesmenuen, nægt agentens opgavetilladelser ville det.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Farve
|
||||
|
||||
Tilpas agentens visuelle udseende i brugergrænsefladen med muligheden `color`. Dette påvirker, hvordan agenter vises i grænsefladen.
|
||||
|
||||
Brug en gyldig hex-farve (f.eks. `#FF5733`) eller temafarve: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"creative": {
|
||||
"color": "#ff6b6b"
|
||||
},
|
||||
"code-reviewer": {
|
||||
"color": "accent"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Top P
|
||||
|
||||
Styr responsdiversiteten med `top_p`-muligheden. Alternativ til temperatur for at kontrollere tilfældighed.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"brainstorm": {
|
||||
"top_p": 0.9
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Værdier spænder fra 0,0 til 1,0. Lavere værdier er mere fokuserede, højere værdier mere forskelligartede.
|
||||
|
||||
---
|
||||
|
||||
### Yderligere
|
||||
|
||||
Alle andre muligheder, du angiver i din agentkonfiguration, vil blive **overført direkte** til udbyderen som modelvalg. Dette giver dig mulighed for at bruge udbyderspecifikke funktioner og parametre.
|
||||
|
||||
For eksempel, med OpenAIs ræsoneringsmodeller kan du styre ræsonnementindsatsen:
|
||||
|
||||
```json title="opencode.json" {6,7}
|
||||
{
|
||||
"agent": {
|
||||
"deep-thinker": {
|
||||
"description": "Agent that uses high reasoning effort for complex problems",
|
||||
"model": "openai/gpt-5",
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Disse yderligere muligheder er model- og udbyderspecifikke. Tjek din udbyders dokumentation for tilgængelige parametre.
|
||||
|
||||
:::tip
|
||||
Kør `opencode models` for at se en liste over de tilgængelige modeller.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Opret agent
|
||||
|
||||
Du kan oprette nye agenter ved hjælp af følgende kommando:
|
||||
|
||||
```bash
|
||||
opencode agent create
|
||||
```
|
||||
|
||||
Denne interaktive kommando vil:
|
||||
|
||||
1. Spørg, hvor agenten skal gemmes; globalt eller projektspecifikt.
|
||||
2. Beskrivelse af, hvad agenten skal gøre.
|
||||
3. Generer en passende systemprompt og identifikator.
|
||||
4. Lad dig vælge, hvilke værktøjer agenter har adgang til.
|
||||
5. Til sidst skal du oprette en markdown-fil med agentkonfigurationen.
|
||||
|
||||
---
|
||||
|
||||
## Use cases
|
||||
|
||||
Her er nogle almindelige use cases for forskellige agenter.
|
||||
|
||||
- **Byggeagent**: Fuldt udviklingsarbejde med alle aktiveret
|
||||
- **Planagent**: Analyse og planlægning uden ændringer
|
||||
- **Anmeldelsesagent**: Kodegennemgang med skrivebeskyttet adgang plus dokumentationsværktøjer
|
||||
- **Debug agent**: Fokuseret på undersøgelse med bash og læseværktøjer aktiveret
|
||||
- **Docs-agent**: Dokumentationsskrivning med filhandlinger, men ingen systemkommandoer
|
||||
|
||||
---
|
||||
|
||||
## Eksempler
|
||||
|
||||
Her er nogle eksempler på agenter, du kan finde nyttige.
|
||||
|
||||
:::tip
|
||||
Har du en agent, du gerne vil dele? [Submit a PR](https://github.com/anomalyco/opencode).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Dokumentationsagent
|
||||
|
||||
```markdown title="~/.config/opencode/agents/docs-writer.md"
|
||||
---
|
||||
description: Writes and maintains project documentation
|
||||
mode: subagent
|
||||
tools:
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are a technical writer. Create clear, comprehensive documentation.
|
||||
|
||||
Focus on:
|
||||
|
||||
- Clear explanations
|
||||
- Proper structure
|
||||
- Code examples
|
||||
- User-friendly language
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Sikkerhedsrevisor
|
||||
|
||||
```markdown title="~/.config/opencode/agents/security-auditor.md"
|
||||
---
|
||||
description: Performs security audits and identifies vulnerabilities
|
||||
mode: subagent
|
||||
tools:
|
||||
write: false
|
||||
edit: false
|
||||
---
|
||||
|
||||
You are a security expert. Focus on identifying potential security issues.
|
||||
|
||||
Look for:
|
||||
|
||||
- Input validation vulnerabilities
|
||||
- Authentication and authorization flaws
|
||||
- Data exposure risks
|
||||
- Dependency vulnerabilities
|
||||
- Configuration security issues
|
||||
```
|
||||
601
packages/web/src/content/docs/da/cli.mdx
Normal file
601
packages/web/src/content/docs/da/cli.mdx
Normal file
@@ -0,0 +1,601 @@
|
||||
---
|
||||
title: CLI
|
||||
description: OpenCode CLI muligheder og kommandoer.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
OpenCode CLI starter som standard [TUI](/docs/tui), når den kører uden nogen argumenter.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Men den accepterer også kommandoer som dokumenteret på denne side. Dette giver dig mulighed for at interagere med OpenCode programmatisk.
|
||||
|
||||
```bash
|
||||
opencode run "Explain how closures work in JavaScript"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### tui
|
||||
|
||||
Start OpenCode terminalbrugergrænsefladen.
|
||||
|
||||
```bash
|
||||
opencode [project]
|
||||
```
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ------------ | ---- | --------------------------------------- |
|
||||
| `--continue` | `-c` | Fortsæt sidste session |
|
||||
| `--session` | `-s` | Sessions-id for at fortsætte |
|
||||
| `--prompt` | | Spørg om at bruge |
|
||||
| `--model` | `-m` | Model til brug i form af provider/model |
|
||||
| `--agent` | | Agent hos bruge |
|
||||
| `--port` | | Port at lytte på |
|
||||
| `--hostname` | | Værtsnavn at lytte på |
|
||||
|
||||
---
|
||||
|
||||
## Kommandoer
|
||||
|
||||
OpenCode CLI har også følgende kommandoer.
|
||||
|
||||
---
|
||||
|
||||
### agent
|
||||
|
||||
Administratoragent for OpenCode.
|
||||
|
||||
```bash
|
||||
opencode agent [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### vedhæft
|
||||
|
||||
Tilslut en terminal til en allerede kørende OpenCode backend-server startet via `serve` eller `web` kommandoer.
|
||||
|
||||
```bash
|
||||
opencode attach [url]
|
||||
```
|
||||
|
||||
Dette gør det muligt at bruge TUI med en ekstern OpenCode backend. For eksempel:
|
||||
|
||||
```bash
|
||||
# Start the backend server for web/mobile access
|
||||
opencode web --port 4096 --hostname 0.0.0.0
|
||||
|
||||
# In another terminal, attach the TUI to the running backend
|
||||
opencode attach http://10.20.30.40:4096
|
||||
```
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ----------- | ---- | -------------------------------- |
|
||||
| `--dir` | | Arbejdsmappe til at starte TUI i |
|
||||
| `--session` | `-s` | Sessions-id for at fortsætte |
|
||||
|
||||
---
|
||||
|
||||
#### oprette
|
||||
|
||||
Opret en ny agent med tilpasset konfiguration.
|
||||
|
||||
```bash
|
||||
opencode agent create
|
||||
```
|
||||
|
||||
Denne kommando vil guide dig gennem oprettelse af en ny agent med en brugerdefineret systemprompt og værktøjskonfiguration.
|
||||
|
||||
---
|
||||
|
||||
#### liste
|
||||
|
||||
Liste over alle tilgængelige agenter.
|
||||
|
||||
```bash
|
||||
opencode agent list
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### auth
|
||||
|
||||
Kommando til at administrere legitimationsoplysninger og login for udbydere.
|
||||
|
||||
```bash
|
||||
opencode auth [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### login
|
||||
|
||||
OpenCode drives af udbyderlisten på [Models.dev](https://models.dev), så du kan bruge `opencode auth login` til at konfigurere API nøgler for enhver udbyder, du vil bruge. Dette er gemt i `~/.local/share/opencode/auth.json`.
|
||||
|
||||
```bash
|
||||
opencode auth login
|
||||
```
|
||||
|
||||
Når OpenCode starter op, indlæser den udbyderne fra legitimationsfilen. Og hvis der er nogen nøgler defineret i dine miljøer eller en `.env` fil i dit projekt.
|
||||
|
||||
---
|
||||
|
||||
#### liste
|
||||
|
||||
Viser alle de godkendte udbydere som gemt i legitimationsfilen.
|
||||
|
||||
```bash
|
||||
opencode auth list
|
||||
```
|
||||
|
||||
Eller den korte version.
|
||||
|
||||
```bash
|
||||
opencode auth ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### log ud
|
||||
|
||||
Logger dig ud af en udbyder ved at rydde den fra legitimationsfilen.
|
||||
|
||||
```bash
|
||||
opencode auth logout
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### github
|
||||
|
||||
Administrator GitHub-agenten til lagerautomatisering.
|
||||
|
||||
```bash
|
||||
opencode github [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### installationsprogram
|
||||
|
||||
Installatør GitHub-agenten i dit lager.
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
```
|
||||
|
||||
Dette opsætter det nødvendige GitHub Actions workflow og guider dig gennem konfigurationsprocessen. [Learn more](/docs/github).
|
||||
|
||||
---
|
||||
|
||||
#### løb
|
||||
|
||||
Kør GitHub-agenten. Dette bruges typisk i GitHub Actions.
|
||||
|
||||
```bash
|
||||
opencode github run
|
||||
```
|
||||
|
||||
##### Flag
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| --------- | ---------------------------------------------- |
|
||||
| `--event` | GitHub mock begivenhed for at køre agenten for |
|
||||
| `--token` | GitHub personlig adgangstoken |
|
||||
|
||||
---
|
||||
|
||||
### mcp
|
||||
|
||||
Administrator Model Context Protocol-servere.
|
||||
|
||||
```bash
|
||||
opencode mcp [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### tilføje
|
||||
|
||||
Tilføj en MCP-server til din konfiguration.
|
||||
|
||||
```bash
|
||||
opencode mcp add
|
||||
```
|
||||
|
||||
Denne kommando vil guide dig gennem tilføjelse af enten en lokal eller ekstern MCP-server.
|
||||
|
||||
---
|
||||
|
||||
#### liste
|
||||
|
||||
Liste over alle konfigurerede MCP-servere og deres forbindelsesstatus.
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
```
|
||||
|
||||
Eller brug den korte version.
|
||||
|
||||
```bash
|
||||
opencode mcp ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### auth
|
||||
|
||||
Godkendt med en OAuth-aktiveret MCP-server.
|
||||
|
||||
```bash
|
||||
opencode mcp auth [name]
|
||||
```
|
||||
|
||||
Hvis du ikke angiver et servernavn, bliver du bedt om at vælge blandt tilgængelige OAuth-kompatible servere.
|
||||
|
||||
Du kan også angive OAuth-kompatible servere og deres godkendelsesstatus.
|
||||
|
||||
```bash
|
||||
opencode mcp auth list
|
||||
```
|
||||
|
||||
Eller brug den korte version.
|
||||
|
||||
```bash
|
||||
opencode mcp auth ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### log ud
|
||||
|
||||
Fjern OAuth-legitimationsoplysninger for en MCP-server.
|
||||
|
||||
```bash
|
||||
opencode mcp logout [name]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### fejlretning
|
||||
|
||||
Fejlfinding af OAuth-forbindelsesproblemer for en MCP-server.
|
||||
|
||||
```bash
|
||||
opencode mcp debug <name>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### modeller
|
||||
|
||||
Liste over alle tilgængelige modeller fra konfigurerede udbydere.
|
||||
|
||||
```bash
|
||||
opencode models [provider]
|
||||
```
|
||||
|
||||
Denne kommando viser alle tilgængelige modeller på tværs af dine konfigurerede udbydere i formatet `provider/model`.
|
||||
|
||||
Dette er nyttigt til at finde ud af det nøjagtige modelnavn, der skal bruges i [your config](/docs/config/).
|
||||
|
||||
Du kan eventuelt videregive et udbyder-id for at filtrere modeller efter den udbyder.
|
||||
|
||||
```bash
|
||||
opencode models anthropic
|
||||
```
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ----------- | ----------------------------------------------------------------------- |
|
||||
| `--refresh` | Opdater modelcachen fra models.dev |
|
||||
| `--verbose` | Brug mere detaljeret modeloutput (inkluderer metadata som omkostninger) |
|
||||
|
||||
Brug flaget `--refresh` til at opdatere den cachelagrede modelliste. Dette er nyttigt, når nye modeller er blevet tilføjet til en udbyder, og du vil se dem i OpenCode.
|
||||
|
||||
```bash
|
||||
opencode models --refresh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### løb
|
||||
|
||||
Kør opencode i ikke-interaktiv tilstand ved at sende en prompt direkte.
|
||||
|
||||
```bash
|
||||
opencode run [message..]
|
||||
```
|
||||
|
||||
Dette er nyttigt til scripting, automatisering, eller når du vil have et hurtigt svar uden at starte hele TUI. F.eks.
|
||||
|
||||
```bash "opencode run"
|
||||
opencode run Explain the use of context in Go
|
||||
```
|
||||
|
||||
Du kan også vedhæfte til en kørende `opencode serve`-instans for at undgå MCP serverens kolde opstartstider ved hver kørsel:
|
||||
|
||||
```bash
|
||||
# Start a headless server in one terminal
|
||||
opencode serve
|
||||
|
||||
# In another terminal, run commands that attach to it
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ------------ | ---- | ----------------------------------------------------------------------------------- |
|
||||
| `--command` | | Kommandoen til at køre, brug besked til args |
|
||||
| `--continue` | `-c` | Fortsæt sidste session |
|
||||
| `--session` | `-s` | Sessions-id for at fortsætte |
|
||||
| `--share` | | Del sessionen |
|
||||
| `--model` | `-m` | Model til brug i form af provider/model |
|
||||
| `--agent` | | Agent til brug |
|
||||
| `--file` | `-f` | Fil(er), der skal vedhæftes til meddelelsen |
|
||||
| `--format` | | Format: standard (formateret) eller json (rå JSON hændelser) |
|
||||
| `--title` | | Titel for sessionen (bruger trunkeret prompt, hvis der ikke er angivet nogen værdi) |
|
||||
| `--attach` | | Tilslut til en kørende opencode-server (f.eks. http://localhost:4096) |
|
||||
| `--port` | | Port til den lokale server (standard til vilkårlig port) |
|
||||
|
||||
---
|
||||
|
||||
### server
|
||||
|
||||
Start en hovedløs OpenCode-server til API-adgang. Tjek [server docs](/docs/server) for den fulde HTTP-grænseflade.
|
||||
|
||||
```bash
|
||||
opencode serve
|
||||
```
|
||||
|
||||
Dette starter en HTTP-server, der giver API-adgang til opencode-funktionalitet uden TUI-grænsefladen. Indstil `OPENCODE_SERVER_PASSWORD` for at aktivere HTTP grundlæggende godkendelse (brugernavn er standard til `opencode`).
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ------------ | ------------------------------------------------ |
|
||||
| `--port` | Port at lytte på |
|
||||
| `--hostname` | Værtsnavn at lytte på |
|
||||
| `--mdns` | Aktiver mDNS-opdagelse |
|
||||
| `--cors` | Yderligere browseroprindelse til at tillade CORS |
|
||||
|
||||
---
|
||||
|
||||
### session
|
||||
|
||||
Administrator OpenCode sessionsholder.
|
||||
|
||||
```bash
|
||||
opencode session [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### liste
|
||||
|
||||
Liste over alle OpenCode sessioner.
|
||||
|
||||
```bash
|
||||
opencode session list
|
||||
```
|
||||
|
||||
##### Flag
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ------------- | ---- | -------------------------------------- |
|
||||
| `--max-count` | `-n` | Begræns til N seneste sessioner |
|
||||
| `--format` | | Outputformat: tabel eller json (tabel) |
|
||||
|
||||
---
|
||||
|
||||
### statistik
|
||||
|
||||
Vis tokenbrug og omkostningsstatistikker for dine OpenCode-sessioner.
|
||||
|
||||
```bash
|
||||
opencode stats
|
||||
```
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ----------- | --------------------------------------------------------------------------- |
|
||||
| `--days` | Vis statistik for de sidste N dage (hele tiden) |
|
||||
| `--tools` | Antal værktøjer, der skal vises (alle) |
|
||||
| `--models` | Vis modelbrugsopdeling (skjult som standard). Send et tal for at vise top N |
|
||||
| `--project` | Filtre efter projekt (alle projekter, tom streng: nuværende projekt) |
|
||||
|
||||
---
|
||||
|
||||
### eksport
|
||||
|
||||
Eksporter sessionsdata som JSON.
|
||||
|
||||
```bash
|
||||
opencode export [sessionID]
|
||||
```
|
||||
|
||||
Hvis du ikke angiver et sessions-id, bliver du bedt om at vælge mellem tilgængelige sessioner.
|
||||
|
||||
---
|
||||
|
||||
### import
|
||||
|
||||
Importer sessionsdata fra en JSON fil eller OpenCode del URL.
|
||||
|
||||
```bash
|
||||
opencode import <file>
|
||||
```
|
||||
|
||||
Du kan importere fra en lokal fil eller en OpenCode share URL.
|
||||
|
||||
```bash
|
||||
opencode import session.json
|
||||
opencode import https://opncd.ai/s/abc123
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### web
|
||||
|
||||
Start en hovedløs OpenCode-server med en webgrænseflade.
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
```
|
||||
|
||||
Dette starter en HTTP-server og åbner en webbrowser for at få adgang til OpenCode via en webgrænseflade. Indstil `OPENCODE_SERVER_PASSWORD` for at aktivere HTTP grundlæggende godkendelse (brugernavn er standard til `opencode`).
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ------------ | ------------------------------------------------ |
|
||||
| `--port` | Port at lytte på |
|
||||
| `--hostname` | Værtsnavn at lytte på |
|
||||
| `--mdns` | Aktiver mDNS-opdagelse |
|
||||
| `--cors` | Yderligere browseroprindelse til at tillade CORS |
|
||||
|
||||
---
|
||||
|
||||
### acp
|
||||
|
||||
Start en ACP-server (Agent Client Protocol).
|
||||
|
||||
```bash
|
||||
opencode acp
|
||||
```
|
||||
|
||||
Denne kommando starter en ACP-server, der kommunikerer via stdin/stdout ved hjælp af nd-JSON.
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ------------ | --------------------- |
|
||||
| `--cwd` | Arbejdsmappe |
|
||||
| `--port` | Port at lytte på |
|
||||
| `--hostname` | Værtsnavn at lytte på |
|
||||
|
||||
---
|
||||
|
||||
### afinstaller
|
||||
|
||||
Afinstaller OpenCode og fjern alle relaterede filer.
|
||||
|
||||
```bash
|
||||
opencode uninstall
|
||||
```
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| --------------- | ---- | ------------------------------------------------ |
|
||||
| `--keep-config` | `-c` | Se konfigurationsfiler |
|
||||
| `--keep-data` | `-d` | Gem sessionsdata og snapshots |
|
||||
| `--dry-run` | | Vis, hvad der ville blive fjernet uden at fjerne |
|
||||
| `--force` | `-f` | Spring bekræftelsesspørgsmål over |
|
||||
|
||||
---
|
||||
|
||||
###opgradering
|
||||
|
||||
Opdaterer opencode til den seneste version eller en specifik version.
|
||||
|
||||
```bash
|
||||
opencode upgrade [target]
|
||||
```
|
||||
|
||||
For at opgradere til den nyeste version.
|
||||
|
||||
```bash
|
||||
opencode upgrade
|
||||
```
|
||||
|
||||
For at opgradere til en bestemt version.
|
||||
|
||||
```bash
|
||||
opencode upgrade v0.1.48
|
||||
```
|
||||
|
||||
#### Flag
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ---------- | ---- | -------------------------------------------------------------------- |
|
||||
| `--method` | `-m` | Installationsmetoden, der blev brugt; krølle, npm, pnpm, bolle, bryg |
|
||||
|
||||
---
|
||||
|
||||
## Globalt flag
|
||||
|
||||
opencode CLI tager følgende globale flag.
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| -------------- | ---- | --------------------------------------- |
|
||||
| `--help` | `-h` | Vis hjælp |
|
||||
| `--version` | `-v` | Udskriftsversionsnummer |
|
||||
| `--print-logs` | | Udskriv logfiler til stderr |
|
||||
| `--log-level` | | Logniveau (DEBUG, INFO, ADVARSEL, FEJL) |
|
||||
|
||||
---
|
||||
|
||||
## Miljøvariabler
|
||||
|
||||
OpenCode kan konfigureres ved hjælp af miljøvariabler.
|
||||
|
||||
| Variabel | Skriv | Beskrivelse |
|
||||
| ------------------------------------- | ------ | --------------------------------------------------------------------- |
|
||||
| `OPENCODE_AUTO_SHARE` | boolsk | Del automatisk session |
|
||||
| `OPENCODE_GIT_BASH_PATH` | styrke | Sti til Git Bash eksekverbar på Windows |
|
||||
| `OPENCODE_CONFIG` | styrke | Sti til konfigurationsfil |
|
||||
| `OPENCODE_CONFIG_DIR` | styrke | Sti til konfigurationsmappe |
|
||||
| `OPENCODE_CONFIG_CONTENT` | styrke | Indbygget json-konfigurationsindhold |
|
||||
| `OPENCODE_DISABLE_AUTOUPDATE` | boolsk | Deaktiver automatisk opdateringskontrol |
|
||||
| `OPENCODE_DISABLE_PRUNE` | boolsk | Deaktiver beskæring af gamle data |
|
||||
| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolsk | Deaktiver automatisk opdatering af terminaltitel |
|
||||
| `OPENCODE_PERMISSION` | styrke | Indbygget json-tilladelseskonfiguration |
|
||||
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolsk | Deaktiver standard plugins |
|
||||
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolsk | Deaktiver automatisk LSP-serverdownloads |
|
||||
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolsk | Aktive eksperimentelle modeller |
|
||||
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolsk | Deaktiver automatisk kontekstkomprimering |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolsk | Deaktiver læsning fra `.claude` (prompt + færdigheder) |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolsk | Deaktiver læsning `~/.claude/CLAUDE.md` |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolsk | Deaktiver indlæsning af `.claude/skills` |
|
||||
| `OPENCODE_DISABLE_MODELS_FETCH` | boolsk | Deaktivering af modeller fra eksterne kilder |
|
||||
| `OPENCODE_FAKE_VCS` | styrke | Falsk VCS-udbyder til testformål |
|
||||
| `OPENCODE_DISABLE_FILETIME_CHECK` | boolsk | Deaktiver filtidskontrol for optimering |
|
||||
| `OPENCODE_CLIENT` | styrke | Klient-id (standard til `cli`) |
|
||||
| `OPENCODE_ENABLE_EXA` | boolsk | Aktiver Exa-websøgeværktøjer |
|
||||
| `OPENCODE_SERVER_PASSWORD` | styrke | Aktiver grundlæggende godkendelse for `serve`/`web` |
|
||||
| `OPENCODE_SERVER_USERNAME` | styrke | Tilsidesæt grundlæggende godkendelsesbrugernavn (standard `opencode`) |
|
||||
| `OPENCODE_MODELS_URL` | styrke | Brugerdefineret URL til hentning af modelkonfiguration |
|
||||
|
||||
---
|
||||
|
||||
### Eksperimentel
|
||||
|
||||
Disse miljøvariabler muliggør eksperimentelle funktioner, der kan ændres eller fjernes.
|
||||
|
||||
| Variabel | Skriv | Beskrivelse |
|
||||
| ----------------------------------------------- | ------ | ------------------------------------------ |
|
||||
| `OPENCODE_EXPERIMENTAL` | boolsk | Aktiver alle eksperimentelle funktioner |
|
||||
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolsk | Aktiver ikonopdagelse |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolsk | Deaktiver kopi ved valg i TUI |
|
||||
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | nummer | Standard timeout for bash-kommandoer i ms |
|
||||
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | nummer | Maks. output-tokens for LLM-svar |
|
||||
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolsk | Aktiver filovervågning for hele dir |
|
||||
| `OPENCODE_EXPERIMENTAL_OXFMT` | boolsk | Aktiver oxfmt formatter |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolsk | Aktive eksperimenter LSP værktøj |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolsk | Deaktiver filovervågning |
|
||||
| `OPENCODE_EXPERIMENTAL_EXA` | boolsk | Aktive eksperimenter Exa-funktioner |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolsk | Aktive forsøg LSP typekontrol |
|
||||
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolsk | Aktive eksperimentelle markdown-funktioner |
|
||||
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolsk | Aktiver plantilstand |
|
||||
323
packages/web/src/content/docs/da/commands.mdx
Normal file
323
packages/web/src/content/docs/da/commands.mdx
Normal file
@@ -0,0 +1,323 @@
|
||||
---
|
||||
title: Kommandoer
|
||||
description: Opret brugerdefinerede kommandoer til gentagne opgaver.
|
||||
---
|
||||
|
||||
Brugerdefinerede kommandoer giver mulighed for at angive en prompt, du vil køre, når denne kommando udføres i TUI.
|
||||
|
||||
```bash frame="none"
|
||||
/my-command
|
||||
```
|
||||
|
||||
Brugerdefinerede kommandoer er ud over de indbyggede kommandoer som `/init`, `/undo`, `/redo`, `/share`, `/help`. [Learn more](/docs/tui#commands).
|
||||
|
||||
---
|
||||
|
||||
## Opret kommandofiler
|
||||
|
||||
Opret markdown-filer i mappen `commands/` for at definere brugerdefinerede kommandoer.
|
||||
|
||||
Opret `.opencode/commands/test.md`:
|
||||
|
||||
```md title=".opencode/commands/test.md"
|
||||
---
|
||||
description: Run tests with coverage
|
||||
agent: build
|
||||
model: anthropic/claude-3-5-sonnet-20241022
|
||||
---
|
||||
|
||||
Run the full test suite with coverage report and show any failures.
|
||||
Focus on the failing tests and suggest fixes.
|
||||
```
|
||||
|
||||
Frontmatter definerer kommandoegenskaber. Indholdet bliver skabelonen.
|
||||
|
||||
Brug kommandoen ved at skrive `/` efterfulgt af kommandonavnet.
|
||||
|
||||
```bash frame="none"
|
||||
"/test"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilføje brugerdefinerede kommandoer gennem OpenCode-konfigurationen eller ved at oprette markdown-filer i `commands/`-mappen.
|
||||
|
||||
---
|
||||
|
||||
### JSON
|
||||
|
||||
Brug indstillingerne `command` i din OpenCode [config](/docs/config):
|
||||
|
||||
```json title="opencode.jsonc" {4-12}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"command": {
|
||||
// This becomes the name of the command
|
||||
"test": {
|
||||
// This is the prompt that will be sent to the LLM
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
|
||||
// This is shown as the description in the TUI
|
||||
"description": "Run tests with coverage",
|
||||
"agent": "build",
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Nu kan du køre denne kommando i TUI:
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Markdown
|
||||
|
||||
Du kan også definere kommandoer ved hjælp af markdown-filer. Placer dem i:
|
||||
|
||||
- Globalt: `~/.config/opencode/commands/`
|
||||
- Pr. projekt: `.opencode/commands/`
|
||||
|
||||
```markdown title="~/.config/opencode/commands/test.md"
|
||||
---
|
||||
description: Run tests with coverage
|
||||
agent: build
|
||||
model: anthropic/claude-3-5-sonnet-20241022
|
||||
---
|
||||
|
||||
Run the full test suite with coverage report and show any failures.
|
||||
Focus on the failing tests and suggest fixes.
|
||||
```
|
||||
|
||||
Markdown-filnavnet bliver kommandonavnet. For eksempel lader `test.md`
|
||||
du løber:
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Spørg config
|
||||
|
||||
Spørgsmålene til de brugerdefinerede kommandoer understøtter flere specielle pladsholdere og syntaks.
|
||||
|
||||
---
|
||||
|
||||
### Argumenter
|
||||
|
||||
Send argumenter til kommandoer ved hjælp af pladsholderen `$ARGUMENTS`.
|
||||
|
||||
```md title=".opencode/commands/component.md"
|
||||
---
|
||||
description: Create a new component
|
||||
---
|
||||
|
||||
Create a new React component named $ARGUMENTS with TypeScript support.
|
||||
Include proper typing and basic structure.
|
||||
```
|
||||
|
||||
Kør kommandoen med argumenter:
|
||||
|
||||
```bash frame="none"
|
||||
/component Button
|
||||
```
|
||||
|
||||
Og `$ARGUMENTS` vil blive erstattet med `Button`.
|
||||
|
||||
Du kan også få adgang til individuelle argumenter ved hjælp af positionelle parametre:
|
||||
|
||||
- `$1` - Første argument
|
||||
- `$2` - Andet argument
|
||||
- `$3` - Tredje argument
|
||||
- Og så videre...
|
||||
|
||||
For eksempel:
|
||||
|
||||
```md title=".opencode/commands/create-file.md"
|
||||
---
|
||||
description: Create a new file with content
|
||||
---
|
||||
|
||||
Create a file named $1 in the directory $2
|
||||
with the following content: $3
|
||||
```
|
||||
|
||||
Kør kommandoen:
|
||||
|
||||
```bash frame="none"
|
||||
/create-file config.json src "{ \"key\": \"value\" }"
|
||||
```
|
||||
|
||||
Dette erstatter:
|
||||
|
||||
- `$1` med `config.json`
|
||||
- `$2` med `src`
|
||||
- `$3` med `{ "key": "value" }`
|
||||
|
||||
---
|
||||
|
||||
### Shell-output
|
||||
|
||||
Brug _!`command`_ til at injicere [bash command](/docs/tui#bash-commands) output i din prompt.
|
||||
|
||||
For eksempel, for at oprette en brugerdefineret kommando, der analyserer testdækning:
|
||||
|
||||
```md title=".opencode/commands/analyze-coverage.md"
|
||||
---
|
||||
description: Analyze test coverage
|
||||
---
|
||||
|
||||
Here are the current test results:
|
||||
!`npm test`
|
||||
|
||||
Based on these results, suggest improvements to increase coverage.
|
||||
```
|
||||
|
||||
Eller for at gennemgå de seneste ændringer:
|
||||
|
||||
```md title=".opencode/commands/review-changes.md"
|
||||
---
|
||||
description: Review recent changes
|
||||
---
|
||||
|
||||
Recent git commits:
|
||||
!`git log --oneline -10`
|
||||
|
||||
Review these changes and suggest any improvements.
|
||||
```
|
||||
|
||||
Kommandoer kører i dit projekts rodmappe, og deres output bliver en del af prompten.
|
||||
|
||||
---
|
||||
|
||||
### Filreferencer
|
||||
|
||||
Inkluder filer i din kommando ved hjælp af `@` efterfulgt af filnavnet.
|
||||
|
||||
```md title=".opencode/commands/review-component.md"
|
||||
---
|
||||
description: Review component
|
||||
---
|
||||
|
||||
Review the component in @src/components/Button.tsx.
|
||||
Check for performance issues and suggest improvements.
|
||||
```
|
||||
|
||||
Filindholdet bliver automatisk integreret i prompten.
|
||||
|
||||
---
|
||||
|
||||
## Indstillinger
|
||||
|
||||
Lad os se nærmere på konfigurationsmulighederne.
|
||||
|
||||
---
|
||||
|
||||
### Skabelon
|
||||
|
||||
Indstillingen `template` definerer den prompt, der sendes til LLM, når kommandoen udføres.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"test": {
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette er en **påkrævet** konfigurationsindstilling.
|
||||
|
||||
---
|
||||
|
||||
### Beskrivelse
|
||||
|
||||
Brug indstillingen `description` til at give en kort beskrivelse af, hvad kommandoen gør.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"test": {
|
||||
"description": "Run tests with coverage"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette vises som beskrivelsen i TUI, når du indtaster kommandoen.
|
||||
|
||||
---
|
||||
|
||||
### Agent
|
||||
|
||||
Brug `agent`-konfigurationen til valgfrit at angive, hvilken [agent](/docs/agents) der skal udføre denne kommando.
|
||||
Hvis dette er en [subagent](/docs/agents/#subagents), vil kommandoen som standard udløse en subagent påkaldelse.
|
||||
For at deaktivere denne adfærd skal du indstille `subtask` til `false`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"review": {
|
||||
"agent": "plan"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette er en **valgfri** konfigurationsindstilling. Hvis det ikke er angivet, er standarden din nuværende agent.
|
||||
|
||||
---
|
||||
|
||||
### Underopgave
|
||||
|
||||
Brug `subtask` boolean til at tvinge kommandoen til at udløse en [subagent](/docs/agents/#subagents) påkaldelse.
|
||||
Dette er nyttigt, hvis du ønsker, at kommandoen ikke skal forurene din primære kontekst og vil **tvinge** agenten til at fungere som en underagent,
|
||||
øjeblikkelig `mode` er sat til `primary` på [agent](/docs/agents) konfigurationen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"analyze": {
|
||||
"subtask": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette er en **valgfri** konfigurationsindstilling.
|
||||
|
||||
---
|
||||
|
||||
### Model
|
||||
|
||||
Brug `model`-konfigurationen til at tilsidesætte standardmodellen for denne kommando.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"analyze": {
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette er en **valgfri** konfigurationsindstilling.
|
||||
|
||||
---
|
||||
|
||||
## Indbygget
|
||||
|
||||
opencode indeholder flere indbyggede kommandoer som `/init`, `/undo`, `/redo`, `/share`, `/help`; [learn more](/docs/tui#commands).
|
||||
|
||||
:::note
|
||||
Brugerdefinerede kommandoer kan tilsidesætte indbyggede kommandoer.
|
||||
:::
|
||||
|
||||
Hvis du definerer en brugerdefineret kommando med samme navn, vil den tilsidesætte den indbyggede kommando.
|
||||
685
packages/web/src/content/docs/da/config.mdx
Normal file
685
packages/web/src/content/docs/da/config.mdx
Normal file
@@ -0,0 +1,685 @@
|
||||
---
|
||||
title: Konfig
|
||||
description: Ved at bruge OpenCode JSON konfig.
|
||||
---
|
||||
|
||||
Du kan konfigurere OpenCode ved hjælp af en JSON-konfigurationsfil.
|
||||
|
||||
---
|
||||
|
||||
## Format
|
||||
|
||||
OpenCode understøtter både **JSON** og **JSONC** (JSON med kommentarer) formater.
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
// Theme configuration
|
||||
"theme": "opencode",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"autoupdate": true,
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Steder
|
||||
|
||||
Du kan placere din konfiguration et par forskellige steder, og de har en
|
||||
forskellig rækkefølge.
|
||||
|
||||
:::note
|
||||
Konfigurationsfiler **flettes sammen**, erstattes ikke.
|
||||
:::
|
||||
|
||||
Konfigurationsfiler flettes sammen, erstattes ikke. Indstillinger fra følgende konfigurationssteder kombineret. Senere konfigurationer tilsidesætter kun tidligere konfigurationer for modstridende nøgler. Ikke-modstridende indstillinger fra alle konfigurationer bevares.
|
||||
|
||||
For eksempel, hvis dine globale konfigurationssæt `theme: "opencode"` og `autoupdate: true`, og dine projektkonfigurationssæt `model: "anthropic/claude-sonnet-4-5"`, vil den endelige konfiguration integrere alle tre indstillinger.
|
||||
|
||||
---
|
||||
|
||||
### Prioritetsrækkefølge
|
||||
|
||||
Konfigurationskilder indlæses i denne rækkefølge (senere kilder tilsidesætter tidligere):
|
||||
|
||||
1. **Fjernkonfiguration** (fra `.well-known/opencode`) - organisatoriske standardindstillinger
|
||||
2. **Global config** (`~/.config/opencode/opencode.json`) - brugerpræferencer
|
||||
3. **Tilpasset konfiguration** (`OPENCODE_CONFIG` env var) - tilpassede tilsidesættelser
|
||||
4. **Project config** (`opencode.json` i projekt) - projektspecifikke indstillinger
|
||||
5. **`.opencode` mapper** - agent, kommandoer, plugins
|
||||
6. **Inline config** (`OPENCODE_CONFIG_CONTENT` env var) - runtime tilsidesættelser
|
||||
|
||||
Dette betyder, at projektkonfigurationer kan tilsidesætte globale standardindstillinger, og globale konfigurationer kan tilsidesætte eksterne organisatoriske standarder.
|
||||
|
||||
:::note
|
||||
`.opencode` og `~/.config/opencode` bibliotekerne bruger **flertalsnavne** for undermapper: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` og `themes/`. Enkelte navne (f.eks. `agent/`) understøtter også bagudkompatibilitet.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Fjernbetjening
|
||||
|
||||
Organisationer kan levere standardkonfiguration via `.well-known/opencode`-slutpunktet. Dette hentes automatisk, når du godkender med en udbyder, der understøtter det.
|
||||
|
||||
Remote config indlæses først og fungerer som basislaget. Alle andre konfigurationskilder (global, projekt) kan tilsidesætte disse standardindstillinger.
|
||||
|
||||
Hvis din organisation f.eks. leverer MCP-servere, der er deaktiveret som standard:
|
||||
|
||||
```json title="Remote config from .well-known/opencode"
|
||||
{
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Du kan aktivere specifikke servere i din lokale konfiguration:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Global
|
||||
|
||||
Placer din globale OpenCode-konfiguration i `~/.config/opencode/opencode.json`. Brug global konfiguration til brugerdækkende præferencer som temaer, udbydere eller nøglebindinger.
|
||||
|
||||
Global config tilsidesætter eksterne organisatoriske standarder.
|
||||
|
||||
---
|
||||
|
||||
### Pr. projekt
|
||||
|
||||
Tilføj `opencode.json` i dit projektrod. Project config har den højeste forrang blandt standard config-filer - den tilsidesætter både globale og eksterne config.
|
||||
|
||||
:::tip
|
||||
Placer projektspecifik konfiguration i roden af dit projekt.
|
||||
:::
|
||||
|
||||
Når OpenCode starter op, søger den efter en konfigurationsfil i det aktuelle kort eller går op til den nærmeste Git-mappe.
|
||||
|
||||
Dette er også sikkert at blive tjekket ind i Git og bruger det samme skema som det globale.
|
||||
|
||||
---
|
||||
|
||||
### Brugerdefineret sti
|
||||
|
||||
Angiv en brugerdefineret konfigurationsfilsti ved hjælp af miljøvariablen `OPENCODE_CONFIG`.
|
||||
|
||||
```bash
|
||||
export OPENCODE_CONFIG=/path/to/my/custom-config.json
|
||||
opencode run "Hello world"
|
||||
```
|
||||
|
||||
Brugerdefineret konfigurationsindlæses mellem globale konfigurationer og projektkonfigurationer i prioriteret rækkefølge.
|
||||
|
||||
---
|
||||
|
||||
### Brugerdefineret bibliotek
|
||||
|
||||
Angiv en brugerdefineret konfigurationsmappe ved hjælp af `OPENCODE_CONFIG_DIR`
|
||||
miljøvariabel. Dette kort vil blive søgt efter agenter, kommandoer,
|
||||
modes og plugins ligesom standard `.opencode` biblioteket, og bør
|
||||
følge samme struktur.
|
||||
|
||||
```bash
|
||||
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
|
||||
opencode run "Hello world"
|
||||
```
|
||||
|
||||
Den brugerdefinerede map indlæses efter den globale konfig og `.opencode` mapper, så den **kan tilsidesætte** deres indstillinger.
|
||||
|
||||
---
|
||||
|
||||
## Skema
|
||||
|
||||
Konfigurationsfilen har et skema, der defineres i [**`opencode.ai/config.json`**](https://opencode.ai/config.json).
|
||||
|
||||
Din editor skal være i stand til at validere og autofuldføre baseret på skemaet.
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
Du kan konfigurere TUI-specifikke indstillinger gennem indstillingen `tui`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
},
|
||||
"diff_style": "auto"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Tilgængelige muligheder:
|
||||
|
||||
- `scroll_acceleration.enabled` - Aktiver macOS-stil rulleacceleration. **Har forrang frem for `scroll_speed`.**
|
||||
- `scroll_speed` - Brugerdefineret rullehastighedsmultiplikator (standard: `3`, minimum: `1`). Ignoreres, hvis `scroll_acceleration.enabled` er `true`.
|
||||
- `diff_style` - Kontroller diff-gengivelse. `"auto"` tilpasser sig terminalbredden, `"stacked"` viser altid en enkelt kolonne.
|
||||
|
||||
[Learn more about using the TUI here](/docs/tui).
|
||||
|
||||
---
|
||||
|
||||
### Server
|
||||
|
||||
Du kan konfigurere serverindstillinger for kommandoerne `opencode serve` og `opencode web` gennem indstillingen `server`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"server": {
|
||||
"port": 4096,
|
||||
"hostname": "0.0.0.0",
|
||||
"mdns": true,
|
||||
"mdnsDomain": "myproject.local",
|
||||
"cors": ["http://localhost:5173"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Tilgængelige muligheder:
|
||||
|
||||
- `port` - Port til at lytte på.
|
||||
- `hostname` - Værtsnavn at lytte på. Når `mdns` er aktiveret, og der ikke er angivet noget værtsnavn, er standarden `0.0.0.0`.
|
||||
- `mdns` - Aktiver mDNS-tjenesteopdagelse. Dette gør det muligt for andre enheder på netværket at opdage din OpenCode-server.
|
||||
- `mdnsDomain` - Brugerdefineret domænenavn til mDNS-tjeneste. Som standard er `opencode.local`. Nyttigt til at køre flere forekomster på det samme netværk.
|
||||
- `cors` - Yderligere oprindelser for at tillade CORS ved brug af HTTP-serveren fra en browserbaseret klient. Værdier skal være fulde oprindelser (skema + vært + valgfri port), f.eks. `https://app.example.com`.
|
||||
|
||||
[Learn more about the server here](/docs/server).
|
||||
|
||||
---
|
||||
|
||||
### Værktøjer
|
||||
|
||||
Du kan administrere de værktøjer, en LLM kan bruge, gennem indstillingen `tools`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about tools here](/docs/tools).
|
||||
|
||||
---
|
||||
|
||||
### Modeller
|
||||
|
||||
Du kan konfigurere de udbydere og modeller, du vil bruge i din OpenCode-konfiguration, gennem mulighederne `provider`, `model` og `small_model`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {},
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"small_model": "anthropic/claude-haiku-4-5"
|
||||
}
|
||||
```
|
||||
|
||||
Indstillingen `small_model` konfigurerer en separat model til lette opgaver som titelgenerering. Som standard forsøger OpenCode at bruge en billigere model, hvis en er tilgængelig fra din udbyder, ellers falder den tilbage til din hovedmodel.
|
||||
|
||||
Udbydermuligheder kan omfatte `timeout` og `setCacheKey`:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"options": {
|
||||
"timeout": 600000,
|
||||
"setCacheKey": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `timeout` - Anmodningstimeout i millisekunder (standard: 300000). Indstil til `false` for at deaktivere.
|
||||
- `setCacheKey` - Sørg for, at en cache-nøgle altid er indstillet til den udpegede udbyder.
|
||||
|
||||
Du kan også konfigurere [local models](/docs/models#local). [Learn more](/docs/models).
|
||||
|
||||
---
|
||||
|
||||
#### Udbyder-specifikke muligheder
|
||||
|
||||
Nogle udbydere understøtter yderligere konfigurationsmuligheder ud over de generiske `timeout` og `apiKey` indstillinger.
|
||||
|
||||
##### Amazonas grundfjeld
|
||||
|
||||
Amazon Bedrock understøtter AWS-specifik konfiguration:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$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` - AWS region for grundfjeld (standard til `AWS_REGION` env var eller `us-east-1`)
|
||||
- `profile` - AWS navngivet profil fra `~/.aws/credentials` (standard til `AWS_PROFILE` env var)
|
||||
- `endpoint` - Brugerdefineret slutpunkt URL for VPC-endepunkter. Dette er et alias for den generiske `baseURL`-indstilling, der bruger AWS-specifik terminologi. Hvis begge er angivet, har `endpoint` forrang.
|
||||
|
||||
:::note
|
||||
Bærer-tokens (`AWS_BEARER_TOKEN_BEDROCK` eller `/connect`) har forrang over profilbaseret godkendelse. Se [authentication precedence](/docs/providers#authentication-precedence) for detaljer.
|
||||
:::
|
||||
|
||||
[Learn more about Amazon Bedrock configuration](/docs/providers#amazon-bedrock).
|
||||
|
||||
---
|
||||
|
||||
### Temaer
|
||||
|
||||
Du kan konfigurere det tema, du vil bruge i din OpenCode-konfiguration, gennem indstillingen `theme`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": ""
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more here](/docs/themes).
|
||||
|
||||
---
|
||||
|
||||
### Agent
|
||||
|
||||
Du kan konfigurere opgaver specialiserede agenter til specifikke indstillinger gennem indstillingen `agent`.
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$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,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Du kan også definere agenter ved at bruge markdown-filer i `~/.config/opencode/agents/` eller `.opencode/agents/`. [Learn more here](/docs/agents).
|
||||
|
||||
---
|
||||
|
||||
### Standardagent
|
||||
|
||||
Du kan indstille standardagenten ved at bruge indstillingen `default_agent`. Dette bestemmer, hvilken agent der bruges, når ingen er eksplicit angivet.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"default_agent": "plan"
|
||||
}
|
||||
```
|
||||
|
||||
Standardagenten skal være en primær agent (ikke en subagent). Dette kan være en indbygget agent som `"build"` eller `"plan"`, eller en [custom agent](/docs/agents), du har defineret. Hvis den angivne agent ikke eksisterer eller er en underagent, vil OpenCode falde tilbage til `"build"` med en advarsel.
|
||||
|
||||
Denne indstilling gælder på tværs af alle grænseflader: TUI, CLI (`opencode run`), desktop-app og GitHub Action.
|
||||
|
||||
---
|
||||
|
||||
### Deling
|
||||
|
||||
Du kan konfigurere funktionen [share](/docs/share) gennem indstillingen `share`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"share": "manual"
|
||||
}
|
||||
```
|
||||
|
||||
Dette kræver:
|
||||
|
||||
- `"manual"` - Tillad manuel deling via kommandoer (standard)
|
||||
- `"auto"` - Del automatisk nye samtaler
|
||||
- `"disabled"` - Deaktiver deling helt
|
||||
|
||||
Som standard er deling indstillet til manuel tilstand, hvor du eksplicit skal dele samtaler ved hjælp af kommandoen `/share`.
|
||||
|
||||
---
|
||||
|
||||
### Kommandoer
|
||||
|
||||
Du kan konfigurere brugerdefinerede kommandoer til gentagne opgaver gennem indstillingen `command`.
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$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",
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Du kan også definere kommandoer ved hjælp af markdown-filer i `~/.config/opencode/commands/` eller `.opencode/commands/`. [Learn more here](/docs/commands).
|
||||
|
||||
---
|
||||
|
||||
### Nøglebindinger
|
||||
|
||||
Du kan tilpasse dine nøglebindinger gennem indstillingen `keybinds`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more here](/docs/keybinds).
|
||||
|
||||
---
|
||||
|
||||
### Autoopdatering
|
||||
|
||||
OpenCode vil automatisk downloade alle nye opdateringer, når den starter op. Du kan deaktivere dette med indstillingen `autoupdate`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"autoupdate": false
|
||||
}
|
||||
```
|
||||
|
||||
Hvis du ikke ønsker opdatering, men ønsker at blive underrettet, når en ny version er tilgængelig, skal du indstille `autoupdate` til `"notify"`.
|
||||
Bemærk, at dette kun virker, hvis det ikke blev installeret ved hjælp af en pakkehåndtering såsom Homebrew.
|
||||
|
||||
---
|
||||
|
||||
### Formatere
|
||||
|
||||
Du kan konfigurere kodeformatere gennem indstillingen `formatter`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about formatters here](/docs/formatters).
|
||||
|
||||
---
|
||||
|
||||
### Tilladelser
|
||||
|
||||
Som standard opencode **tillader alle operationer** uden at kræve eksplicit godkendelse. Du kan ændre dette ved at bruge indstillingen `permission`.
|
||||
|
||||
For at sikre, at værktøjerne `edit` og `bash` for eksempel kræver brugergodkendelse:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "ask",
|
||||
"bash": "ask"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about permissions here](/docs/permissions).
|
||||
|
||||
---
|
||||
|
||||
### Komprimering
|
||||
|
||||
Du kan styre kontekstkomprimeringsadfærd gennem indstillingen `compaction`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"compaction": {
|
||||
"auto": true,
|
||||
"prune": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `auto` - Komprimer automatisk sessionen, når konteksten er fuld (standard: `true`).
|
||||
- `prune` - Fjern gamle værktøjsudgange for at gemme tokens (standard: `true`).
|
||||
|
||||
---
|
||||
|
||||
### Watcher
|
||||
|
||||
Du kan konfigurere ignoreringsmønstre for filovervåger gennem indstillingen `watcher`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"watcher": {
|
||||
"ignore": ["node_modules/**", "dist/**", ".git/**"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Mønstre følger glob-syntaks. Brug dette til at udelukke støjende mapper fra filvisning.
|
||||
|
||||
---
|
||||
|
||||
### MCP servere
|
||||
|
||||
Du kan konfigurere MCP-servere, som du vil bruge, gennem indstillingen `mcp`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more here](/docs/mcp-servers).
|
||||
|
||||
---
|
||||
|
||||
### Plugins
|
||||
|
||||
[Plugins](/docs/plugins) udvide OpenCode med brugerdefinerede værktøjer, kroge og integrationer.
|
||||
|
||||
Placer plugin-filer i `.opencode/plugins/` eller `~/.config/opencode/plugins/`. Du kan også indlæse plugins fra npm gennem indstillingen `plugin`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more here](/docs/plugins).
|
||||
|
||||
---
|
||||
|
||||
### Instruktioner
|
||||
|
||||
Du kan konfigurere brugervejledningen til den model, du kan gennem indstillingen `instructions`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
|
||||
}
|
||||
```
|
||||
|
||||
Dette kræver en række stier og globmønstre til instruktionsfiler. [Læs mere
|
||||
om regler her](/docs/rules).
|
||||
|
||||
---
|
||||
|
||||
### Deaktiverede udbydere
|
||||
|
||||
Du kan deaktivere udbydere, der indlæses automatisk gennem `disabled_providers`-indstillingen. Dette er nyttigt, når du vil forhindre visse udbydere i at blive indlæst, deres legitimationsoplysninger er tilgængelige.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"disabled_providers": ["openai", "gemini"]
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
`disabled_providers` har prioritet over `enabled_providers`.
|
||||
:::
|
||||
|
||||
Indstillingen `disabled_providers` accepterer en række udbyder-id'er. Når en udbyder er deaktiveret:
|
||||
|
||||
- Det vil ikke blive indlæst, omgivelserne miljøvariabler er indstillet.
|
||||
- Den vil ikke blive indlæst, gennem API nøgler er konfigureret kommandoen `/connect`.
|
||||
- Udbyderens modeller vises ikke på modelvalgslisten.
|
||||
|
||||
---
|
||||
|
||||
### Aktiverede udbydere
|
||||
|
||||
Du kan angive en tilladelsesliste over udbydere gennem muligheden `enabled_providers`. Når den er indstillet, vil kun de angivne udbydere blive aktiveret, og alle andre vil blive ignoreret.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"enabled_providers": ["anthropic", "openai"]
|
||||
}
|
||||
```
|
||||
|
||||
Dette er nyttigt, når du vil begrænse OpenCode til kun at bruge specifikke udbydere i stedet for at deaktivere dem én efter én.
|
||||
|
||||
:::note
|
||||
`disabled_providers` har prioritet over `enabled_providers`.
|
||||
:::
|
||||
|
||||
Hvis en udbyder optræder i både `enabled_providers` og `disabled_providers`, har `disabled_providers` prioritet for bagudkompatibilitet.
|
||||
|
||||
---
|
||||
|
||||
### Eksperimentel
|
||||
|
||||
Nøglen `experimental` indeholder muligheder, der er under aktiv udvikling.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"experimental": {}
|
||||
}
|
||||
```
|
||||
|
||||
:::forsigtighed
|
||||
Eksperimentelle muligheder er ikke stabile. De kan ændres eller fjernes uden varsel.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Variabel
|
||||
|
||||
Du kan bruge variabelsubstitution i dine konfigurationsfiler til at referere til miljøvariabler og filindhold.
|
||||
|
||||
---
|
||||
|
||||
### Env vars
|
||||
|
||||
Brug `{env:VARIABLE_NAME}` til at erstatte miljøvariabler:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "{env:OPENCODE_MODEL}",
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"models": {},
|
||||
"options": {
|
||||
"apiKey": "{env:ANTHROPIC_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hvis miljøvariablen ikke er indstillet, vil den blive erstattet med en tom streng.
|
||||
|
||||
---
|
||||
|
||||
### Filer
|
||||
|
||||
Brug `{file:path/to/file}` til at erstatte indholdet af en fil:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["./custom-instructions.md"],
|
||||
"provider": {
|
||||
"openai": {
|
||||
"options": {
|
||||
"apiKey": "{file:~/.secrets/openai-key}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Filstier kan være:
|
||||
|
||||
- I forhold til konfigurationsfilbiblioteket
|
||||
- Eller absolutte stier, der starter med `/` eller `~`
|
||||
|
||||
Disse er nyttige til:
|
||||
|
||||
- Opbevaring af følsomme data som API nøgler i separate filer.
|
||||
- Inklusiv store instruktionsfiler uden at rode i din konfiguration.
|
||||
- Deling af fælles konfigurationsuddrag på tværs af flere konfigurationsfiler.
|
||||
170
packages/web/src/content/docs/da/custom-tools.mdx
Normal file
170
packages/web/src/content/docs/da/custom-tools.mdx
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: Brugerdefinerede værktøjer
|
||||
description: Opret værktøjer, som LLM kan kalde opencode ind.
|
||||
---
|
||||
|
||||
Brugerdefinerede værktøjer er funktioner, du opretter, som LLM kan kalde under samtaler. De arbejder sammen med opencodes [built-in tools](/docs/tools) som `read`, `write` og `bash`.
|
||||
|
||||
---
|
||||
|
||||
## Oprettelse af et værktøj
|
||||
|
||||
Værktøjer er defineret som **TypeScript**- eller **JavaScript**-filer. Værktøjsdefinitionen kan dog kalde scripts skrevet på **alle sprog** - TypeScript eller JavaScript bruges kun til selve værktøjsdefinitionen.
|
||||
|
||||
---
|
||||
|
||||
### Placering
|
||||
|
||||
De kan definere:
|
||||
|
||||
- Lokalt ved at placere dem i biblioteket `.opencode/tools/` i dit projekt.
|
||||
- Eller globalt ved at placere dem i `~/.config/opencode/tools/`.
|
||||
|
||||
---
|
||||
|
||||
### Struktur
|
||||
|
||||
Den nemmeste måde at oprette værktøjer på er at bruge `tool()`-hjælperen, som giver typesikkerhed og validering.
|
||||
|
||||
```ts title=".opencode/tools/database.ts" {1}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Query the project database",
|
||||
args: {
|
||||
query: tool.schema.string().describe("SQL query to execute"),
|
||||
},
|
||||
async execute(args) {
|
||||
// Your database logic here
|
||||
return `Executed query: ${args.query}`
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
**filnavnet** bliver **værktøjsnavnet**. Ovenstående opretter et `database` værktøj.
|
||||
|
||||
---
|
||||
|
||||
#### Flere værktøjer pr. fil
|
||||
|
||||
Du kan også eksportere flere værktøjer fra en enkelt fil. Hver eksport bliver **et separat værktøj** med navnet **`<filename>_<exportname>`**:
|
||||
|
||||
```ts title=".opencode/tools/math.ts"
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export const add = tool({
|
||||
description: "Add two numbers",
|
||||
args: {
|
||||
a: tool.schema.number().describe("First number"),
|
||||
b: tool.schema.number().describe("Second number"),
|
||||
},
|
||||
async execute(args) {
|
||||
return args.a + args.b
|
||||
},
|
||||
})
|
||||
|
||||
export const multiply = tool({
|
||||
description: "Multiply two numbers",
|
||||
args: {
|
||||
a: tool.schema.number().describe("First number"),
|
||||
b: tool.schema.number().describe("Second number"),
|
||||
},
|
||||
async execute(args) {
|
||||
return args.a * args.b
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Dette skaber værktøjer: `math_add` og `math_multiply`.
|
||||
|
||||
---
|
||||
|
||||
### Argumenter
|
||||
|
||||
Du kan bruge `tool.schema`, som kun er [Zod](https://zod.dev), til at definere argumenttyper.
|
||||
|
||||
```ts "tool.schema"
|
||||
args: {
|
||||
query: tool.schema.string().describe("SQL query to execute")
|
||||
}
|
||||
```
|
||||
|
||||
Du kan også importere [Zod](https://zod.dev) direkte og returnere et almindeligt objekt:
|
||||
|
||||
```ts {6}
|
||||
import { z } from "zod"
|
||||
|
||||
export default {
|
||||
description: "Tool description",
|
||||
args: {
|
||||
param: z.string().describe("Parameter description"),
|
||||
},
|
||||
async execute(args, context) {
|
||||
// Tool implementation
|
||||
return "result"
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Kontekst
|
||||
|
||||
Værktøjer modtager kontekst om den aktuelle session:
|
||||
|
||||
```ts title=".opencode/tools/project.ts" {8}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Get project information",
|
||||
args: {},
|
||||
async execute(args, context) {
|
||||
// Access context information
|
||||
const { agent, sessionID, messageID, directory, worktree } = context
|
||||
return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Brug `context.directory` til sessionens arbejdsmappe.
|
||||
Brug `context.worktree` til git-arbejdstræets rod.
|
||||
|
||||
---
|
||||
|
||||
## Eksempler
|
||||
|
||||
### Skriv et værktøj i Python
|
||||
|
||||
Du kan skrive dine værktøjer på et hvilket som helst sprog, du ønsker. Her er et eksempel, der tilføjer til tal ved hjælp af Python.
|
||||
|
||||
Først skal du oprette værktøjet som et Python-script:
|
||||
|
||||
```python title=".opencode/tools/add.py"
|
||||
import sys
|
||||
|
||||
a = int(sys.argv[1])
|
||||
b = int(sys.argv[2])
|
||||
print(a + b)
|
||||
```
|
||||
|
||||
Opret derefter værktøjsdefinitionen, der kalder den:
|
||||
|
||||
```ts title=".opencode/tools/python-add.ts" {10}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
import path from "path"
|
||||
|
||||
export default tool({
|
||||
description: "Add two numbers using Python",
|
||||
args: {
|
||||
a: tool.schema.number().describe("First number"),
|
||||
b: tool.schema.number().describe("Second number"),
|
||||
},
|
||||
async execute(args, context) {
|
||||
const script = path.join(context.worktree, ".opencode/tools/add.py")
|
||||
const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
|
||||
return result.trim()
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Her bruger vi [`Bun.$`](https://bun.com/docs/runtime/shell)-værktøjet til at køre Python-scriptet.
|
||||
76
packages/web/src/content/docs/da/ecosystem.mdx
Normal file
76
packages/web/src/content/docs/da/ecosystem.mdx
Normal file
@@ -0,0 +1,76 @@
|
||||
---
|
||||
title: Økosystem
|
||||
description: Projekter og integrationer bygget med OpenCode.
|
||||
---
|
||||
|
||||
En samling af samfundsprojekter bygget på OpenCode.
|
||||
|
||||
:::note
|
||||
Vil du tilføje dit OpenCode-relaterede projekt til denne liste? Send en PR.
|
||||
:::
|
||||
|
||||
Du kan også tjekke \_\_TK_0 og [opencode.cafe](https://opencode.cafe), et fællesskab, der samler økosystemet og fællesskabet.
|
||||
|
||||
---
|
||||
|
||||
## Plugins
|
||||
|
||||
| Navn | Beskrivelse |
|
||||
| --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
||||
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | Kør automatisk OpenCode-sessioner i isolerede Daytona-sandkasser med git-synkronisering og live forhåndsvisninger |
|
||||
| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | Injicer automatisk Helicone-sessionsoverskrifter til anmodningsgruppering |
|
||||
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | Autoinjicer TypeScript/Svelte-typer i fillæsninger med opslagsværktøjer |
|
||||
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Brug dit ChatGPT Plus/Pro abonnement i stedet for API kreditter |
|
||||
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Brug din eksisterende Gemini-plan i stedet for API fakturering |
|
||||
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Brug Antigravitys gratis modeller i stedet for API fakturering |
|
||||
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | Multi-branch devcontainer isolation med lavvandede kloner og automatisk tildelte porte |
|
||||
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth Plugin, med understøttelse af Google søgning og mere robust API håndtering |
|
||||
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimer tokenbrug ved at beskære forældede værktøjsoutput |
|
||||
| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | Tilføj native websearch-understøttelse for understøttede udbydere med Google jordet stil |
|
||||
| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | Gør det muligt for AI-agenter at køre baggrundsprocesser i en PTY, send interaktive input til dem. |
|
||||
| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | Instruktioner til ikke-interaktive shell-kommandoer - forhindrer hænger fra TTY-afhængige operationer |
|
||||
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Spor OpenCode brug med Wakatime |
|
||||
| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | Ryd op afmærkningstabeller produceret af LLMs |
|
||||
| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 10x hurtigere koderedigering med Morph Fast Apply API og dovne redigeringsmarkører |
|
||||
| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | Baggrundsagenter, præbyggede LSP/AST/MCP værktøjer, kuraterede agenter, Claude Kodekompatibel |
|
||||
| [opencode-notificator](https://github.com/panta82/opencode-notificator) | Skrivebordsmeddelelser og lydadvarsler for OpenCode-sessioner |
|
||||
| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | Skrivebordsmeddelelser og lydadvarsler for tilladelser, fuldførelse og fejlhændelser |
|
||||
| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | AI-drevet automatisk Zellij-sessionsnavngivning baseret på OpenCode-kontekst |
|
||||
| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | Tillad OpenCode-agenter til dovne load-prompter på efterspørgsel med færdighedsopdagelse og -injektion |
|
||||
| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | Vedvarende hukommelse på tværs af sessioner ved hjælp af Supermemory |
|
||||
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | Interaktiv plangennemgang med visuel annotering og private/offline deling |
|
||||
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | Udvid opencode /commands til et kraftfuldt orkestreringssystem med granulær flowkontrol |
|
||||
| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | Planlæg tilbagevendende job ved hjælp af launchd (Mac) eller systemd (Linux) med cron-syntaks |
|
||||
| [micode](https://github.com/vtemian/micode) | Struktureret brainstorm → Plan → Implementer workflow med session kontinuitet |
|
||||
| [octto](https://github.com/vtemian/octto) | Interaktiv browser-UI til AI-brainstorming med formularer med flere spørgsmål |
|
||||
| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | Claude Baggrundsagenter i kodestil med asynkron-delegering og kontekstvedholdenhed |
|
||||
| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | Native OS-meddelelser for OpenCode – ved, hvornår opgaver er fuldført |
|
||||
| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | Bundled multi-agent orkestreringssele – 16 komponenter, én installation |
|
||||
| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | Nulfriktions git-arbejdstræer for OpenCode |
|
||||
|
||||
---
|
||||
|
||||
## Projekter
|
||||
|
||||
| Navn | Beskrivelse |
|
||||
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------- |
|
||||
| [kimaki](https://github.com/remorses/kimaki) | Discord-bot til at styre OpenCode-sessioner, bygget på SDK |
|
||||
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Neovim-plugin til redaktør-bevidste prompter, bygget på API |
|
||||
| [portal](https://github.com/hosenur/portal) | Mobile-first web UI til OpenCode over Tailscale/VPN |
|
||||
| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | Skabelon til at bygge OpenCode plugins |
|
||||
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Neovim-frontend til opencode - en terminalbaseret AI-kodningsagent |
|
||||
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Vercel AI SDK udbyder til brug af OpenCode via @opencode-ai/sdk |
|
||||
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | Web / Desktop App og VS Code udvidelse til OpenCode |
|
||||
| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | Obsidian plugin, der integrerer OpenCode i Obsidians brugergrænseflade |
|
||||
| [OpenWork](https://github.com/different-ai/openwork) | Et open source-alternativ til Claude Cowork, drevet af OpenCode |
|
||||
| [ocx](https://github.com/kdcokenny/ocx) | OpenCode udvidelsesmanager med bærbare, isolerede profiler. |
|
||||
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | Desktop-, web-, mobil- og fjernklientapp til OpenCode |
|
||||
|
||||
---
|
||||
|
||||
## Agent
|
||||
|
||||
| Navn | Beskrivelse |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------------------- |
|
||||
| [Agentic](https://github.com/Cluster444/agentic) | Modulære AI-agenter og -kommandoer til struktureret udvikling |
|
||||
| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | Konfigurationer, prompter, agenter og plugins til forbedrede arbejdsgange |
|
||||
170
packages/web/src/content/docs/da/enterprise.mdx
Normal file
170
packages/web/src/content/docs/da/enterprise.mdx
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: Enterprise
|
||||
description: Brug af OpenCode sikkert i din organisation.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
OpenCode Enterprise er for organisationer, der ønsker at sikre, at deres kode og data aldrig forlader deres infrastruktur. Det kan gøre dette ved at bruge en centraliseret konfiguration, der integreres med din SSO og interne AI-gateway.
|
||||
|
||||
:::note
|
||||
OpenCode gemmer ingen af din kode eller kontekstdata.
|
||||
:::
|
||||
|
||||
Sådan kommer du i gang med OpenCode Enterprise:
|
||||
|
||||
1. Lav en prøvetur internt med dit team.
|
||||
2. **<a href={email}>Kontakt os</a>** for at diskutere priser og implementeringsmuligheder.
|
||||
|
||||
---
|
||||
|
||||
## Prøve
|
||||
|
||||
OpenCode er open source og gemmer ingen af din kode eller kontekstdata, så dine udviklere kan simpelthen [get started](/docs/) og udføre en prøveversion.
|
||||
|
||||
---
|
||||
|
||||
### Datahåndtering
|
||||
|
||||
**OpenCode gemmer ikke din kode eller kontekstdata.** Al behandling sker lokalt eller gennem direkte API-opkald til din AI-udbyder.
|
||||
|
||||
Det betyder, at så længe du bruger en udbyder, du stoler på, eller en intern
|
||||
AI-gateway, du kan bruge OpenCode sikkert.
|
||||
|
||||
Den eneste advarsel her er den valgfrie `/share`-funktion.
|
||||
|
||||
---
|
||||
|
||||
#### Deling af samtaler
|
||||
|
||||
Hvis en bruger aktiverer funktionen `/share`, sender samtalen og de data, der er knyttet til den, til den tjeneste, vi bruger til at hoste disse delesider på opencode.ai.
|
||||
|
||||
Dataene serveres i øjeblikket gennem vores CDN's edge-netværk og cachelagres på kanten nær dine brugere.
|
||||
|
||||
Vi anbefaler, at du deaktiverer dette for din prøveperiode.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"share": "disabled"
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about sharing](/docs/share).
|
||||
|
||||
---
|
||||
|
||||
### Kodeejerskab
|
||||
|
||||
**Du ejer al kode produceret af OpenCode.** Der er ingen licensbegrænsninger eller ejerskabskrav.
|
||||
|
||||
---
|
||||
|
||||
## Priser
|
||||
|
||||
Vi bruger en per-sæde-model til OpenCode Enterprise. Hvis du har din egen LLM-gateway, kræver vi ikke betaling for brugte tokens. For yderligere oplysninger om priser og implementeringsmuligheder, **<a href={email}>kontakt os</a>**.
|
||||
|
||||
---
|
||||
|
||||
## Implementering
|
||||
|
||||
Når du har afsluttet din prøveperiode, og du er klar til at bruge OpenCode kl
|
||||
din organisation, kan du **<a href={email}>kontakte os</a>** for at diskutere
|
||||
prissætning og implementeringsmuligheder.
|
||||
|
||||
---
|
||||
|
||||
### Central Config
|
||||
|
||||
Vi kan konfigurere OpenCode til at bruge en enkelt central konfiguration for hele din organisation.
|
||||
|
||||
Denne centraliserede konfiguration kan integreres med din SSO-udbyder og sikrer, at alle brugere kan få adgang til din interne AI-gateway.
|
||||
|
||||
---
|
||||
|
||||
### SSO-integration
|
||||
|
||||
Gennem den centrale konfiguration kan OpenCode integreres med din organisationer SSO-udbyder til godkendelse.
|
||||
|
||||
Denne giver OpenCode mulighed for at få legitimationsoplysninger til din interne AI-gateway gennem dette eksisterende identitetsadministrationssystem.
|
||||
|
||||
---
|
||||
|
||||
### Intern AI-gateway
|
||||
|
||||
Med den centrale konfiguration kan OpenCode også konfigureres til kun at bruge din interne AI-gateway.
|
||||
|
||||
Du kan også deaktivere alle andre AI-udbydere og sikre, at alle anmodninger går gennem din organisations godkendte infrastruktur.
|
||||
|
||||
---
|
||||
|
||||
### Self-hosting
|
||||
|
||||
Selvom vi anbefaler at deaktivere delesiderne for at sikre, at dine data aldrig forsvinder
|
||||
din organisation, kan vi også hjælpe dig med at selv hoste dem på din infrastruktur.
|
||||
|
||||
Dette er i øjeblikket på vores køreplan. Hvis du er interesseret, **<a href={email}>giv os besked</a>**.
|
||||
|
||||
---
|
||||
|
||||
## FAQ
|
||||
|
||||
<details>
|
||||
<summary>Hvad er OpenCode Enterprise?</summary>
|
||||
|
||||
OpenCode Enterprise er for organisationer, der ønsker at sikre, at deres kode og data aldrig forlader deres infrastruktur. Det kan gøre dette ved at bruge en centraliseret konfiguration, der integreres med din SSO og interne AI-gateway.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Hvordan kommer jeg i gang med OpenCode Enterprise?</summary>
|
||||
|
||||
Du skal blot starte med en intern prøveperiode med dit team. OpenCode gemmer som standard ikke din kode eller kontekstdata, hvilket gør det nemt at komme i gang.
|
||||
|
||||
Så **<a href={email}>kontakt os</a>** for at diskutere priser og implementeringsmuligheder.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Hvordan fungerer virksomhedspriser?</summary>
|
||||
|
||||
Vi tilbyder virksomhedspriser pr. sæde. Hvis du har din egen LLM-gateway, kræver vi ikke betaling for brugte tokens. For yderligere detaljer, **<a href={email}>kontakt os</a>** for et tilpasset tilbud baseret på din organisations behov.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Er mine data sikret med OpenCode Enterprise?</summary>
|
||||
|
||||
Ja. OpenCode gemmer ikke din kode eller kontekstdata. Al behandling sker lokalt eller gennem direkte API-opkald til din AI-udbyder. Med central konfiguration og SSO-integration forbliver dine data sikre i din organisationers infrastruktur.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Kan vi bruge vores eget private NPM-register?</summary>
|
||||
|
||||
OpenCode understøtter private npm registre gennem Buns oprindelige `.npmrc` filunderstøttelse. Hvis din organisation bruger et privat register, såsom JFrog Artifactory, Nexus eller lignende, skal du sikre dig, at udviklerne er godkendt, før de kører OpenCode.
|
||||
|
||||
Sådan konfigurerer du godkendelse med dit private register:
|
||||
|
||||
```bash
|
||||
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
|
||||
```
|
||||
|
||||
Dette opretter `~/.npmrc` med godkendelsesdetaljer. OpenCode vil automatisk
|
||||
samle dette op.
|
||||
|
||||
:::forsigtighed
|
||||
Du skal være logget ind i det private register, før du kører OpenCode.
|
||||
:::
|
||||
|
||||
Alternativt kan du manuelt konfigurere en `.npmrc` fil:
|
||||
|
||||
```bash title="~/.npmrc"
|
||||
registry=https://your-company.jfrog.io/api/npm/npm-virtual/
|
||||
//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
|
||||
```
|
||||
|
||||
Udviklere skal være logget ind på det private register, før de kører OpenCode for at sikre, at pakker kan installeres fra din virksomhedsregistrering.
|
||||
|
||||
</details>
|
||||
130
packages/web/src/content/docs/da/formatters.mdx
Normal file
130
packages/web/src/content/docs/da/formatters.mdx
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: Formatere
|
||||
description: OpenCode bruger sprogspecifikke formatere.
|
||||
---
|
||||
|
||||
OpenCode formaterer automatisk filer, efter de er skrevet eller redigeret ved hjælp af sprogspecifikke formatere. Dette sikrer, at den kode, der genereres, følger kodestilene for dit projekt.
|
||||
|
||||
---
|
||||
|
||||
## Indbygget
|
||||
|
||||
OpenCode leveres med flere indbyggede formatere til populære sprog og rammer. Nedenfor er en liste over de formatere, understøttede filtypenavne og kommandoer eller konfigurationsmuligheder, der har brug for.
|
||||
|
||||
| Formater | Udvidelser | Krav |
|
||||
| --------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
||||
| gofmt | .go | `gofmt` kommando tilgængelig |
|
||||
| blande | .ex,.exs,.eex,.heex,.leex,.neex,.sface | `mix` kommando tilgængelig |
|
||||
| smukkere | .js,.jsx,.ts,.tsx,.html,.css,.md,.json,.yaml og [more](https://prettier.io/docs/en/index.html) | `prettier` afhængighed i `package.json` |
|
||||
| biome | .js,.jsx,.ts,.tsx,.html,.css,.md,.json,.yaml og [more](https://biomejs.dev/) | `biome.json(c)` konfigurationsfil |
|
||||
| zig | .zig,.zon | `zig` kommando tilgængelig |
|
||||
| klang-format | .c,.cpp,.h,.hpp,.ino og [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` konfigurationsfil |
|
||||
| ktlint | .kt,.kts | `ktlint` kommando tilgængelig |
|
||||
| ruff | .py,.pyi | `ruff` kommando tilgængelig med konfiguration |
|
||||
| rustfmt | .rs | `rustfmt` kommando tilgængelig |
|
||||
| cargofmt | .rs | `cargo fmt` kommando tilgængelig |
|
||||
| uv | .py,.pyi | `uv` kommando tilgængelig |
|
||||
| rubocop | .rb,.rake,.gemspec,.ru | `rubocop` kommando tilgængelig |
|
||||
| standardrb | .rb,.rake,.gemspec,.ru | `standardrb` kommando tilgængelig |
|
||||
| htmlbeautifier | .erb,.html.erb | `htmlbeautifier` kommando tilgængelig |
|
||||
| luft | .R | `air` kommando tilgængelig |
|
||||
| dart | .dart | `dart` kommando tilgængelig |
|
||||
| ocamlformat | .ml,.mli | `ocamlformat` kommando tilgængelig og `.ocamlformat` config fil |
|
||||
| terraform | .tf,.tfvars | `terraform` kommando tilgængelig |
|
||||
| glimt | .glimt | `gleam` kommando tilgængelig |
|
||||
| nixfmt | .nix | `nixfmt` kommando tilgængelig |
|
||||
| shfmt | .sh,.bash | `shfmt` kommando tilgængelig |
|
||||
| pint | .php | `laravel/pint` afhængighed i `composer.json` |
|
||||
| oxfmt (Eksperimentel) | .js,.jsx,.ts,.tsx | `oxfmt` afhængighed i `package.json` og en [experimental env variable flag](/docs/cli/#experimental) |
|
||||
| ormolu | .hs | `ormolu` kommando tilgængelig |
|
||||
|
||||
Så hvis dit projekt har `prettier` i din `package.json`, vil OpenCode automatisk bruge det.
|
||||
|
||||
---
|
||||
|
||||
## Sådan fungerer det
|
||||
|
||||
Når OpenCode skriver eller redigerer en fil, vil det:
|
||||
|
||||
1. Kontrollerer filtypenavnet mod alle aktiverede formatere.
|
||||
2. Kører den relevante formateringskommando på filen.
|
||||
3. Anvender formateringsændringerne automatisk.
|
||||
|
||||
Denne proces sker i baggrunden, hvilket sikrer, at dine kodestile vedligeholdes uden nogen manuelle trin.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse formatere gennem afsnittet `formatter` i din OpenCode-konfiguration.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {}
|
||||
}
|
||||
```
|
||||
|
||||
Hver formateringskonfiguration understøtter følgende:
|
||||
|
||||
| Ejendom | Skriv | Beskrivelse |
|
||||
| ------------- | -------- | -------------------------------------------------------------------- |
|
||||
| `disabled` | boolsk | Indstil dette til `true` for at deaktivere formateringsværktøjet |
|
||||
| `command` | styrke[] | Kommandoen til at køre for formatering |
|
||||
| `environment` | objekt | Miljøvariabler, der skal indstilles, når formateringsværktøjet køres |
|
||||
| `extensions` | styrke[] | Filtypenavne, som denne formaterer skal håndtere |
|
||||
|
||||
Lad os se på nogle eksempler.
|
||||
|
||||
---
|
||||
|
||||
### Deaktivering af formatere
|
||||
|
||||
For at deaktivere **alle** formatere globalt, skal du indstille `formatter` til `false`:
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": false
|
||||
}
|
||||
```
|
||||
|
||||
For at deaktivere en **specifik** formatter, skal du indstille `disabled` til `true`:
|
||||
|
||||
```json title="opencode.json" {5}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"disabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Brugerdefinerede formatere
|
||||
|
||||
Du kan tilsidesætte de indbyggede formattere eller tilføje nye ved at angive kommandoen, miljøvariabler og filtypenavne:
|
||||
|
||||
```json title="opencode.json" {4-14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"command": ["npx", "prettier", "--write", "$FILE"],
|
||||
"environment": {
|
||||
"NODE_ENV": "development"
|
||||
},
|
||||
"extensions": [".js", ".ts", ".jsx", ".tsx"]
|
||||
},
|
||||
"custom-markdown-formatter": {
|
||||
"command": ["deno", "fmt", "$FILE"],
|
||||
"extensions": [".md"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**`$FILE` pladsholderen** i kommandoen vil blive erstattet med stien til filen, der formateres.
|
||||
321
packages/web/src/content/docs/da/github.mdx
Normal file
321
packages/web/src/content/docs/da/github.mdx
Normal file
@@ -0,0 +1,321 @@
|
||||
---
|
||||
title: GitHub
|
||||
description: Brug OpenCode i GitHub-problemer og pull-anmodninger.
|
||||
---
|
||||
|
||||
OpenCode integreres med din GitHub arbejdsgang. Nævn `/opencode` eller `/oc` i din kommentar, og OpenCode vil udføre opgaver i din GitHub Actions-løber.
|
||||
|
||||
---
|
||||
|
||||
## Funktioner
|
||||
|
||||
- **Triageproblemer**: Bed OpenCode om at undersøge et problem og forklare dig det.
|
||||
- **Ret og implementer**: Bed OpenCode om at løse et problem eller implementere en funktion. Og det vil fungere i en ny afdeling og indsende en PR med alle ændringerne.
|
||||
- **Sikker**: OpenCode løber inde i din GitHubs løbere.
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Kør følgende kommando i et projekt, der er i en GitHub repo:
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
```
|
||||
|
||||
Dette vil lede dig gennem installation af GitHub-appen, oprettelse af arbejdsgangen og opsætning af hemmeligheder.
|
||||
|
||||
---
|
||||
|
||||
### Manuel opsætning
|
||||
|
||||
Eller du kan indstille det manuelt.
|
||||
|
||||
1. **Installationsprogrammet GitHub-appen**
|
||||
|
||||
Gå over til [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). Sørg for, at det er installeret på mållageret.
|
||||
|
||||
2. **Tilføj arbejdsgangen**
|
||||
|
||||
Tilføj følgende workflow-fil til `.github/workflows/opencode.yml` i din repo. Sørg for at indstille de relevante `model` og nødvendige API nøgler i `env`.
|
||||
|
||||
```yml title=".github/workflows/opencode.yml" {24,26}
|
||||
name: opencode
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request_review_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
opencode:
|
||||
if: |
|
||||
contains(github.event.comment.body, '/oc') ||
|
||||
contains(github.event.comment.body, '/opencode')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 1
|
||||
persist-credentials: false
|
||||
|
||||
- name: Run OpenCode
|
||||
uses: anomalyco/opencode/github@latest
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
# share: true
|
||||
# github_token: xxxx
|
||||
```
|
||||
|
||||
3. **Opbevar API nøglerne i hemmeligheder**
|
||||
|
||||
I din organisation eller dit projekt **indstillinger** skal du udvide **Hemmeligheder og variabler** til venstre og vælge **Handlinger**. Og tilføj de nødvendige API nøgler.
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
|
||||
- `model`: Den model, der skal bruges med OpenCode. Antager formatet `provider/model`. Dette er **påkrævet**.
|
||||
- `agent`: Agenten, der skal bruges. Skal være en primær agent. Falder tilbage til `default_agent` fra config eller `"build"`, hvis den ikke findes.
|
||||
- `share`: Om OpenCode-sessionen skal dele. Standard er **sand** for offentlige arkiver.
|
||||
- `prompt`: Valgfri brugerdefineret prompt for at tilsidesætte standardadfærden. Brug dette til at tilpasse, hvordan OpenCode behandler anmodninger.
|
||||
- `token`: Valgfrit GitHub adgangstoken til at udføre operationer såsom oprettelse af kommentarer, begå ændringer og åbning af pull-anmodninger. Som standard bruger OpenCode installationsadgangstokenet fra OpenCode GitHub-appen, så commits, kommentarer og pull-anmodninger ser ud til at komme fra appen.
|
||||
|
||||
Alternativt kan du bruge GitHub Action runners [built-in `GITHUB_TOKEN`](OpenCode) uden at installere OpenCode GitHub appen. Bare sørg for at give de nødvendige tilladelser i dit workflow:
|
||||
|
||||
```yaml
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
```
|
||||
|
||||
Du kan også bruge en [personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT), hvis det foretrækkes.
|
||||
|
||||
---
|
||||
|
||||
## Understøttede begivenheder
|
||||
|
||||
OpenCode kan udløses af følgende GitHub hændelser:
|
||||
|
||||
| Begivenhedstype | Udløst af | Detaljer |
|
||||
| ----------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
||||
| `issue_comment` | Kommentarer og problemer eller PR | Nævn `/opencode` eller `/oc` i din kommentar. OpenCode læser kontekst og kan oprette filialer, åbne PR'er eller svare. |
|
||||
| `pull_request_review_comment` | Kommenter specifikke kodelinjer i en PR | Nævn `/opencode` eller `/oc`, mens du gennemgår koden. OpenCode modtager filsti, linjenumre og diff-kontekst. |
|
||||
| `issues` | Udgave åbnet eller redigeret | Udløs automatisk OpenCode, når problemer oprettes eller ændres. Kræver `prompt` input. |
|
||||
| `pull_request` | PR åbnet eller opdateret | Udløs automatisk OpenCode, når PR'er åbnes, synkroniseres eller genåbnes. Nyttigt til automatiserede anmeldelser. |
|
||||
| `schedule` | Cron-baseret tidsplan | Kør OpenCode efter en tidsplan. Kræver `prompt` input. Output går til logfiler og PR'er (intet problem ved kommentere). |
|
||||
| `workflow_dispatch` | Manuel trigger fra GitHub UI | Udløs OpenCode efter behov via fanen Handlinger. Kræver `prompt` input. Output går til logfiler og PR'er. |
|
||||
|
||||
### Skema Eksempel
|
||||
|
||||
Kør OpenCode efter en tidsplan for at udføre automatiske opgaver:
|
||||
|
||||
```yaml title=".github/workflows/opencode-scheduled.yml"
|
||||
name: Scheduled OpenCode Task
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 9 * * 1" # Every Monday at 9am UTC
|
||||
|
||||
jobs:
|
||||
opencode:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Run OpenCode
|
||||
uses: anomalyco/opencode/github@latest
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
prompt: |
|
||||
Review the codebase for any TODO comments and create a summary.
|
||||
If you find issues worth addressing, open an issue to track them.
|
||||
```
|
||||
|
||||
For planlagte begivenheder er `prompt` input **påkrævet**, da der ikke er nogen kommentarer at udtrække instruktioner fra. Planlagte arbejdsgange kører uden en brugerkontekst til kontrol af tilladelser, så arbejdsgangen skal give `contents: write` og `pull-requests: write`, hvis du forventer, at OpenCode skal oprette filialer eller PR'er.
|
||||
|
||||
---
|
||||
|
||||
### Pull Request Eksempel
|
||||
|
||||
Gennemgå automatisk PR'er, når de åbnes eller opdateres:
|
||||
|
||||
```yaml title=".github/workflows/opencode-review.yml"
|
||||
name: opencode-review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, ready_for_review]
|
||||
|
||||
jobs:
|
||||
review:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
pull-requests: read
|
||||
issues: read
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: anomalyco/opencode/github@latest
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
use_github_token: true
|
||||
prompt: |
|
||||
Review this pull request:
|
||||
- Check for code quality issues
|
||||
- Look for potential bugs
|
||||
- Suggest improvements
|
||||
```
|
||||
|
||||
For `pull_request` hændelser, hvis der ikke er angivet nogen `prompt`, vil OpenCode som standard gennemgå pull-anmodningen.
|
||||
|
||||
---
|
||||
|
||||
### Issues Triage Eksempel
|
||||
|
||||
Triage automatisk nye problemer. Dette eksempel filtrerer til konti ældre end 30 dage for at reducere spam:
|
||||
|
||||
```yaml title=".github/workflows/opencode-triage.yml"
|
||||
name: Issue Triage
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
steps:
|
||||
- name: Check account age
|
||||
id: check
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const user = await github.rest.users.getByUsername({
|
||||
username: context.payload.issue.user.login
|
||||
});
|
||||
const created = new Date(user.data.created_at);
|
||||
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
|
||||
return days >= 30;
|
||||
result-encoding: string
|
||||
|
||||
- uses: actions/checkout@v6
|
||||
if: steps.check.outputs.result == 'true'
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: anomalyco/opencode/github@latest
|
||||
if: steps.check.outputs.result == 'true'
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
prompt: |
|
||||
Review this issue. If there's a clear fix or relevant docs:
|
||||
- Provide documentation links
|
||||
- Add error handling guidance for code examples
|
||||
Otherwise, do not comment.
|
||||
```
|
||||
|
||||
For `issues` begivenheder er `prompt` input **påkrævet**, da der ikke er nogen kommentarer at udtrække instruktioner fra.
|
||||
|
||||
---
|
||||
|
||||
## Brugerdefinerede prompter
|
||||
|
||||
Tilsidesæt standardprompten for at tilpasse OpenCodes adfærd til din arbejdsgang.
|
||||
|
||||
```yaml title=".github/workflows/opencode.yml"
|
||||
- uses: anomalyco/opencode/github@latest
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-5
|
||||
prompt: |
|
||||
Review this pull request:
|
||||
- Check for code quality issues
|
||||
- Look for potential bugs
|
||||
- Suggest improvements
|
||||
```
|
||||
|
||||
Dette er nyttigt til at håndhæve specifikke gennemgangskriterier, kodningsstandarder eller fokusområder, der er relevante for dit projekt.
|
||||
|
||||
---
|
||||
|
||||
## Eksempler
|
||||
|
||||
Her er nogle eksempler på, hvordan du kan bruge OpenCode i GitHub.
|
||||
|
||||
- **Forklar et problem**
|
||||
|
||||
Tilføj denne kommentar i et GitHub-nummer.
|
||||
|
||||
```
|
||||
/opencode explain this issue
|
||||
```
|
||||
|
||||
OpenCode vil læse hele tråden, inklusive alle kommentarer, og svare med en klar forklaring.
|
||||
|
||||
- **Løs et problem**
|
||||
|
||||
I et GitHub-problem skal du sige:
|
||||
|
||||
```
|
||||
/opencode fix this
|
||||
```
|
||||
|
||||
Og OpenCode vil oprette en ny filial, implementere ændringer og åbne en PR med ændringer.
|
||||
|
||||
- **Gennemgå PR'er og foretag ændringer**
|
||||
|
||||
Efterlad følgende kommentar på en GitHub PR.
|
||||
|
||||
```
|
||||
Delete the attachment from S3 when the note is removed /oc
|
||||
```
|
||||
|
||||
OpenCode vil implementere den ønskede ændring og forpligtelse til den samme PR.
|
||||
|
||||
- **Gennemgå specifikke kodelinjer**
|
||||
|
||||
Efterlad en kommentar direkte på kodelinjer i PR's faneblad "Filer". OpenCode detekterer automatisk filer, linjenumrene og diff-konteksten for at give præcise svar.
|
||||
|
||||
```
|
||||
[Comment on specific lines in Files tab]
|
||||
/oc add error handling here
|
||||
```
|
||||
|
||||
Når du kommenterer på specifikke linjer, modtager OpenCode:
|
||||
- Den nøjagtige fil bliver gennemgået
|
||||
- De specifikke kodelinjer
|
||||
- Den omgivende forskellig kontekst
|
||||
- Linjenummeroplysninger
|
||||
|
||||
Dette giver mulighed for mere målrettede anmodninger uden at skulle angive filstier eller linjenumre manuelt.
|
||||
195
packages/web/src/content/docs/da/gitlab.mdx
Normal file
195
packages/web/src/content/docs/da/gitlab.mdx
Normal file
@@ -0,0 +1,195 @@
|
||||
---
|
||||
title: GitLab
|
||||
description: Brug OpenCode i GitLab-problemer og fletteanmodninger.
|
||||
---
|
||||
|
||||
OpenCode integreres med din GitLab-arbejdsgang gennem din GitLab CI/CD-pipeline eller med GitLab Duo.
|
||||
|
||||
I begge tilfælde vil OpenCode køre på dine GitLab-løbere.
|
||||
|
||||
---
|
||||
|
||||
## GitLab CI
|
||||
|
||||
OpenCode fungerer i en almindelig GitLab-pipeline. Du kan bygge det ind i en pipeline som en [CI component](https://docs.gitlab.com/ee/ci/components/)
|
||||
|
||||
Her bruger vi en community-skabt CI/CD-komponent til OpenCode — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
|
||||
|
||||
---
|
||||
|
||||
### Funktioner
|
||||
|
||||
- **Brug tilpasset konfiguration pr. job**: Konfigurer OpenCode med en brugerdefineret konfigurationsmappe, for eksempel `./config/#custom-directory` for at aktivere eller deaktivere funktionalitet pr. OpenCode påkald.
|
||||
- **Minimal opsætning**: CI-komponenten sætter OpenCode op i baggrunden, du behøver kun at oprette OpenCode-konfigurationen og den indledende prompt.
|
||||
- **Fleksibel**: CI-komponenten understøtter flere input til at tilpasse dens adfærd
|
||||
|
||||
---
|
||||
|
||||
### Opsætning
|
||||
|
||||
1. Gem din OpenCode-godkendelse JSON som en filtype CI-miljøvariabel under **Indstillinger** > **CI/CD** > **Variabler**. Sørg for at markere dem som "Maskede og skjulte".
|
||||
2. Tilføj følgende til din `.gitlab-ci.yml` fil.
|
||||
|
||||
```yaml title=".gitlab-ci.yml"
|
||||
include:
|
||||
- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
|
||||
inputs:
|
||||
config_dir: ${CI_PROJECT_DIR}/opencode-config
|
||||
auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
|
||||
command: optional-custom-command
|
||||
message: "Your prompt here"
|
||||
```
|
||||
|
||||
For flere input og use cases [check out the docs](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) for denne komponent.
|
||||
|
||||
---
|
||||
|
||||
## GitLab Duo
|
||||
|
||||
OpenCode integreres med din GitLab-arbejdsgang.
|
||||
Nævn `@opencode` i en kommentar, og OpenCode vil udføre opgaver i din GitLab CI-pipeline.
|
||||
|
||||
---
|
||||
|
||||
### Funktioner
|
||||
|
||||
- **Triageproblemer**: Bed OpenCode om at undersøge et problem og forklare dig det.
|
||||
- **Ret og implementer**: Bed OpenCode om at løse et problem eller implementere en funktion.
|
||||
Det vil oprette en ny filial og rejse en fletteanmodning med ændringer.
|
||||
- **Sikker**: OpenCode kører på dine GitLab-løbere.
|
||||
|
||||
---
|
||||
|
||||
### Opsætning
|
||||
|
||||
OpenCode kører i din GitLab CI/CD pipeline, her er hvad du skal bruge for at konfigurere det:
|
||||
|
||||
:::tip
|
||||
Tjek [**GitLab docs**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) for opdaterede instruktioner.
|
||||
:::
|
||||
|
||||
1. Konfigurer dit GitLab-miljø
|
||||
2. Konfigurer CI/CD
|
||||
3. Få en API nøgle til en AI-modeludbyder
|
||||
4. Opret en servicekonto
|
||||
5. Konfigurer CI/CD variabler
|
||||
6. Opret en flow-konfigurationsfil, her er et eksempel:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Flowkonfiguration</summary>
|
||||
|
||||
```yaml
|
||||
image: node:22-slim
|
||||
commands:
|
||||
- echo "Installing opencode"
|
||||
- npm install --global opencode-ai
|
||||
- echo "Installing glab"
|
||||
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
|
||||
- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
|
||||
- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
|
||||
- apt-get install --yes glab
|
||||
- echo "Configuring glab"
|
||||
- echo $GITLAB_HOST
|
||||
- echo "Creating OpenCode auth configuration"
|
||||
- mkdir --parents ~/.local/share/opencode
|
||||
- |
|
||||
cat > ~/.local/share/opencode/auth.json << EOF
|
||||
{
|
||||
"anthropic": {
|
||||
"type": "api",
|
||||
"key": "$ANTHROPIC_API_KEY"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
- echo "Configuring git"
|
||||
- git config --global user.email "opencode@gitlab.com"
|
||||
- git config --global user.name "OpenCode"
|
||||
- echo "Testing glab"
|
||||
- glab issue list
|
||||
- echo "Running OpenCode"
|
||||
- |
|
||||
opencode run "
|
||||
You are an AI assistant helping with GitLab operations.
|
||||
|
||||
Context: $AI_FLOW_CONTEXT
|
||||
Task: $AI_FLOW_INPUT
|
||||
Event: $AI_FLOW_EVENT
|
||||
|
||||
Please execute the requested task using the available GitLab tools.
|
||||
Be thorough in your analysis and provide clear explanations.
|
||||
|
||||
<important>
|
||||
Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
|
||||
|
||||
If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
|
||||
You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
|
||||
</important>
|
||||
"
|
||||
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
|
||||
- echo "Checking for git changes and pushing if any exist"
|
||||
- |
|
||||
if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
|
||||
echo "Git changes detected, adding and pushing..."
|
||||
git add .
|
||||
if git diff --cached --quiet; then
|
||||
echo "No staged changes to commit"
|
||||
else
|
||||
echo "Committing changes to branch: $CI_WORKLOAD_REF"
|
||||
git commit --message "Codex changes"
|
||||
echo "Pushing changes up to $CI_WORKLOAD_REF"
|
||||
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
|
||||
echo "Changes successfully pushed"
|
||||
fi
|
||||
else
|
||||
echo "No git changes detected, skipping push"
|
||||
fi
|
||||
variables:
|
||||
- ANTHROPIC_API_KEY
|
||||
- GITLAB_TOKEN_OPENCODE
|
||||
- GITLAB_HOST
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
Du kan henvise til [GitLab CLI agents docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) for detaljerede instruktioner.
|
||||
|
||||
---
|
||||
|
||||
### Eksempler
|
||||
|
||||
Her er nogle eksempler på, hvordan du kan bruge OpenCode i GitLab.
|
||||
|
||||
:::tip
|
||||
Du kan konfigurere til at bruge en anden udløsersætning end `@opencode`.
|
||||
:::
|
||||
|
||||
- **Forklar et problem**
|
||||
|
||||
Tilføj denne kommentar i et GitLab-problem.
|
||||
|
||||
```
|
||||
@opencode explain this issue
|
||||
```
|
||||
|
||||
OpenCode vil læse spørgsmålet og svare med en klar forklaring.
|
||||
|
||||
- **Løs et problem**
|
||||
|
||||
I et GitLab-nummer skal du sige:
|
||||
|
||||
```
|
||||
@opencode fix this
|
||||
```
|
||||
|
||||
OpenCode vil oprette en ny filial, implementere ændringer og åbne en fletteanmodning med ændringer.
|
||||
|
||||
- **Gennemgå anmodninger om fletning**
|
||||
|
||||
Efterlad følgende kommentar til en GitLab-fletningsanmodning.
|
||||
|
||||
```
|
||||
@opencode review this merge request
|
||||
```
|
||||
|
||||
OpenCode vil gennemgå anmodningen om fletning og give feedback.
|
||||
48
packages/web/src/content/docs/da/ide.mdx
Normal file
48
packages/web/src/content/docs/da/ide.mdx
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: IDE
|
||||
description: OpenCode-udvidelsen til VS Code, Cursor og andre IDE'er
|
||||
---
|
||||
|
||||
OpenCode integreres med VS Code, Cursor eller enhver IDE, der understøtter en terminal. Bare kør `opencode` i terminalen for at komme i gang.
|
||||
|
||||
---
|
||||
|
||||
## Brug
|
||||
|
||||
- **Hurtig start**: Brug `Cmd+Esc` (Mac) eller `Ctrl+Esc` (Windows/Linux) til at åbne OpenCode i en delt terminalvisning, eller fokuser en eksisterende terminalsession, hvis en allerede kører.
|
||||
- **Ny session**: Brug `Cmd+Shift+Esc` (Mac) eller `Ctrl+Shift+Esc` (Windows/Linux) til at starte en ny OpenCode terminalsession, mulighed en allerede er åben. Du kan også klikke på knappen OpenCode i brugergrænsefladen.
|
||||
- **Kontekstbevidsthed**: Del automatisk dit nuværende valg eller din fane med OpenCode.
|
||||
- **Filreferencegenveje**: Brug `Cmd+Option+K` (Mac) eller `Alt+Ctrl+K` (Linux/Windows) til at indsætte filreferencer. For eksempel `@File#L37-42`.
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Sådan installeres OpenCode på VS Code og populære gafler som Cursor, Windsurf, VSCodium:
|
||||
|
||||
1. Åbn VS Code
|
||||
2. Åbn den integrerede terminal
|
||||
3. Kør `opencode` - udvidelsen installeres automatisk
|
||||
|
||||
Hvis du på den anden side vil bruge din egen IDE, når du kører `/editor` eller `/export` fra TUI, skal du indstille `export EDITOR="code --wait"`. [Learn more](/docs/tui/#editor-setup).
|
||||
|
||||
---
|
||||
|
||||
### Manuel installation
|
||||
|
||||
Søg efter **OpenCode** i Extension Marketplace, og klik på **Installer**.
|
||||
|
||||
---
|
||||
|
||||
### Fejlfinding
|
||||
|
||||
Hvis udvidelsen ikke kan installeres automatisk:
|
||||
|
||||
- Sørg for, at du kører `opencode` i den integrerede terminal.
|
||||
- Bekræft, at CLI for din IDE er installeret:
|
||||
- For VS Code: `code` kommando
|
||||
- For Cursor: `cursor` kommando
|
||||
- For Windsurf: `windsurf` kommando
|
||||
- For VSCodium: `codium` kommando
|
||||
- Hvis ikke, så kør `Cmd+Shift+P` (Mac) eller `Ctrl+Shift+P` (Windows/Linux) og søg efter "Shell Command: Install 'code' command in PATH" (eller tilsvarende for din IDE)
|
||||
- Sørg for, at VS Code har tilladelse til at installere udvidelser
|
||||
359
packages/web/src/content/docs/da/index.mdx
Normal file
359
packages/web/src/content/docs/da/index.mdx
Normal file
@@ -0,0 +1,359 @@
|
||||
---
|
||||
title: Intro
|
||||
description: Kom godt i gang med OpenCode.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
|
||||
[**OpenCode**](/) er en open source AI-kodningsagent. Den er tilgængelig som en terminalbaseret grænseflade, desktop-app eller IDE-udvidelse.
|
||||
|
||||

|
||||
|
||||
Lad os komme i gang.
|
||||
|
||||
---
|
||||
|
||||
#### Forudsætninger
|
||||
|
||||
For at bruge OpenCode i din terminal skal du bruge:
|
||||
|
||||
1. En moderne terminalemulator som:
|
||||
- [WezTerm](https://wezterm.org), på tværs af platforme
|
||||
- [Alacritty](https://alacritty.org), på tværs af platforme
|
||||
- [Ghostty](https://ghostty.org), Linux og macOS
|
||||
- [Kitty](https://sw.kovidgoyal.net/kitty/), Linux og macOS
|
||||
|
||||
2. API nøgler til de LLM udbydere, du vil bruge.
|
||||
|
||||
---
|
||||
|
||||
## Installationsprogram
|
||||
|
||||
Den nemmeste måde at installere OpenCode på er gennem installationsscriptet.
|
||||
|
||||
```bash
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
```
|
||||
|
||||
Du kan også installere det med følgende kommandoer:
|
||||
|
||||
- **Bruger Node.js**
|
||||
|
||||
<Tabs>
|
||||
|
||||
<TabItem label="npm">
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Bun">
|
||||
```bash
|
||||
bun install -g opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="pnpm">
|
||||
```bash
|
||||
pnpm install -g opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Yarn">
|
||||
```bash
|
||||
yarn global add opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
</Tabs>
|
||||
|
||||
- **Brug af Homebrew på macOS og Linux**
|
||||
|
||||
```bash
|
||||
brew install anomalyco/tap/opencode
|
||||
```
|
||||
|
||||
> Vi anbefaler at bruge OpenCode-hanen for at få de mest opdaterede udgivelser. Den officielle `brew install opencode`-formel vedligeholdes af Homebrew-teamet og opdateret sjældnere.
|
||||
|
||||
- **Brug af Paru på Arch Linux**
|
||||
|
||||
```bash
|
||||
paru -S opencode-bin
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
:::tip[Anbefalet: Brug WSL]
|
||||
For at få den bedste oplevelse på Windows anbefaler vi at bruge [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). Det giver bedre ydeevne og fuld kompatibilitet med OpenCodes funktioner.
|
||||
:::
|
||||
|
||||
- **Brug af chokolade**
|
||||
|
||||
```bash
|
||||
choco install opencode
|
||||
```
|
||||
|
||||
- **Brug af Scoop**
|
||||
|
||||
```bash
|
||||
scoop install opencode
|
||||
```
|
||||
|
||||
- **Bruger NPM**
|
||||
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
```
|
||||
|
||||
- **Brug af Mise**
|
||||
|
||||
```bash
|
||||
mise use -g github:anomalyco/opencode
|
||||
```
|
||||
|
||||
- **Brug af Docker**
|
||||
|
||||
```bash
|
||||
docker run -it --rm ghcr.io/anomalyco/opencode
|
||||
```
|
||||
|
||||
Support til installation af OpenCode på Windows ved hjælp af Bun er i gang.
|
||||
|
||||
Du kan også få fat i binæren fra [Releases](https://github.com/anomalyco/opencode/releases).
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
Med OpenCode kan du bruge enhver LLM udbyder ved at konfigurere deres API nøgler.
|
||||
|
||||
Hvis du er ny til at bruge LLM-udbydere, anbefaler vi at bruge [OpenCode Zen](/docs/zen).
|
||||
Det er en udvalgt liste over modeller, der er blevet testet og verificeret af OpenCode
|
||||
holde.
|
||||
|
||||
1. Kør kommandoen `/connect` i TUI, vælg opencode, og gå til [opencode.ai/auth](https://opencode.ai/auth).
|
||||
|
||||
```txt
|
||||
/connect
|
||||
```
|
||||
|
||||
2. Log ind, tilføj dine faktureringsoplysninger, og kopier din API-nøgle.
|
||||
|
||||
3. Indsæt din API nøgle.
|
||||
|
||||
```txt
|
||||
┌ API key
|
||||
│
|
||||
│
|
||||
└ enter
|
||||
```
|
||||
|
||||
Alternativt kan du vælge en af de andre udbydere. [Læs mere](/docs/providers#directory).
|
||||
|
||||
---
|
||||
|
||||
## Initialiser
|
||||
|
||||
Nu hvor du har konfigureret en udbyder, kan du navigere til et projekt, der
|
||||
du vil arbejde på.
|
||||
|
||||
```bash
|
||||
cd /path/to/project
|
||||
```
|
||||
|
||||
Og kør OpenCode.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Derefter initialiseres OpenCode for projektet ved at køre følgende kommando.
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
Dette får OpenCode til at analysere dit projekt og oprette en `AGENTS.md` fil i
|
||||
projektets stang.
|
||||
|
||||
:::tip
|
||||
Du bør overgive dit projekter `AGENTS.md` fil til Git.
|
||||
:::
|
||||
|
||||
Dette hjælper OpenCode med at forstå projektstrukturen og kodningsmønstrene
|
||||
brugt.
|
||||
|
||||
---
|
||||
|
||||
## Brug
|
||||
|
||||
Du er nu klar til at bruge OpenCode til at arbejde på dit projekt. Spørg det gerne
|
||||
noget!
|
||||
|
||||
Hvis du er ny til at bruge en AI-kodningsagent, er her nogle eksempler, der evt
|
||||
hjælp.
|
||||
|
||||
---
|
||||
|
||||
### Stil spørgsmål
|
||||
|
||||
Du kan bede OpenCode om at forklare kodebasen for dig.
|
||||
|
||||
:::tip
|
||||
Brug `@`-tasten til at søge efter filer i projektet.
|
||||
:::
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
How is authentication handled in @packages/functions/src/api/index.ts
|
||||
```
|
||||
|
||||
Dette er nyttigt, hvis der er en del af kodebasen, som du ikke har arbejdet på.
|
||||
|
||||
---
|
||||
|
||||
### Tilføj funktioner
|
||||
|
||||
Du kan bede OpenCode om at tilføje nye funktioner til dit projekt. Selvom vi først anbefaler, at du beder den om at lave en plan.
|
||||
|
||||
1. **Opret en plan**
|
||||
|
||||
OpenCode har en _Plan mode_, der deaktiverer dens evne til at foretage ændringer og
|
||||
foreslå i stedet _hvordan_ det vil implementere funktionen.
|
||||
|
||||
Skift til det ved hjælp af **Tab**-tasten. Du vil se en indikator for dette i nederste højre hjørne.
|
||||
|
||||
```bash frame="none" title="Switch to Plan mode"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
Lad os nu beskrive, hvad vi vil have den til at gøre.
|
||||
|
||||
```txt frame="none"
|
||||
When a user deletes a note, we'd like to flag it as deleted in the database.
|
||||
Then create a screen that shows all the recently deleted notes.
|
||||
From this screen, the user can undelete a note or permanently delete it.
|
||||
```
|
||||
|
||||
Du vil give OpenCode nok detaljer til at forstå, hvad du ønsker. Det hjælper
|
||||
at tale med det, som om du taler med en juniorudvikler på dit team.
|
||||
|
||||
Drikkepenge
|
||||
Giv OpenCode masser af kontekst og eksempler for at hjælpe den med at forstå, hvad du
|
||||
mangel.
|
||||
:::
|
||||
|
||||
2. **Gentag om planen**
|
||||
|
||||
Når det giver dig en plan, kan du give den feedback eller tilføje flere detaljer.
|
||||
|
||||
```txt frame="none"
|
||||
We'd like to design this new screen using a design I've used before.
|
||||
[Image #1] Take a look at this image and use it as a reference.
|
||||
```
|
||||
|
||||
Drikkepenge
|
||||
Træk og slip billeder i terminalen for at tilføje dem til prompten.
|
||||
:::
|
||||
|
||||
OpenCode kan scanne alle billeder, du giver dem og tilføje dem til prompten. Det kan du
|
||||
gør dette ved at trække og slippe et billede ind i terminalen.
|
||||
|
||||
3. **Byg funktionen**
|
||||
|
||||
Når du føler dig godt tilpas med planen, skal du skifte tilbage til _Byggetilstand_ ved
|
||||
trykke på **Tab**-tasten igen.
|
||||
|
||||
```bash frame="none"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
Og beder den om at foretage ændringerne.
|
||||
|
||||
```bash frame="none"
|
||||
Sounds good! Go ahead and make the changes.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Foretag ændringer
|
||||
|
||||
For mere ligetil ændringer kan du bede OpenCode om at bygge den direkte
|
||||
uden at skulle gennemgå planen først.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
|
||||
We need to add authentication to the /settings route. Take a look at how this is
|
||||
handled in the /notes route in @packages/functions/src/notes.ts and implement
|
||||
the same logic in @packages/functions/src/settings.ts
|
||||
```
|
||||
|
||||
Du vil sikre dig, at du giver en god mængde detaljer, så OpenCode gør det rigtige
|
||||
ændringer.
|
||||
|
||||
---
|
||||
|
||||
### Fortryd ændringer
|
||||
|
||||
Lad os sige, at du beder OpenCode om at foretage nogle ændringer.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Men du indser, at det ikke er, hvad du ønskede. Du **kan fortryde** ændringerne
|
||||
ved hjælp af kommandoen `/undo`.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
OpenCode vil nu vende tilbage til ændringerne, du har foretaget, og vise din oprindelige besked
|
||||
igen.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Herfra kan du justere prompten og bede OpenCode om at prøve igen.
|
||||
|
||||
:::tip
|
||||
Du kan køre `/undo` flere gange for at fortryde flere ændringer.
|
||||
:::
|
||||
|
||||
Eller du **kan gentage** ændringerne ved hjælp af kommandoen `/redo`.
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Del
|
||||
|
||||
De samtaler, du har med OpenCode, kan [deles med din
|
||||
team](/docs/share).
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
Dette vil oprette et link til den aktuelle samtale og kopiere det til denne udklipsholder.
|
||||
|
||||
:::note
|
||||
Samtaler dele ikke som standard.
|
||||
:::
|
||||
|
||||
Her er en [eksempelsamtale](https://opencode.ai/s/4XP1fce5) med OpenCode.
|
||||
|
||||
---
|
||||
|
||||
## Tilpas
|
||||
|
||||
Og det er det! Du er nu en professionel i at bruge OpenCode.
|
||||
|
||||
For at gøre det til dit eget, anbefaler vi [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands) eller at lege med [OpenCode config](/docs/config).
|
||||
192
packages/web/src/content/docs/da/keybinds.mdx
Normal file
192
packages/web/src/content/docs/da/keybinds.mdx
Normal file
@@ -0,0 +1,192 @@
|
||||
---
|
||||
title: Nøglebind
|
||||
description: Tilpas dine nøglebindinger.
|
||||
---
|
||||
|
||||
OpenCode har en liste over nøglebindinger, som du kan tilpasse gennem OpenCode-konfigurationen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {
|
||||
"leader": "ctrl+x",
|
||||
"app_exit": "ctrl+c,ctrl+d,<leader>q",
|
||||
"editor_open": "<leader>e",
|
||||
"theme_list": "<leader>t",
|
||||
"sidebar_toggle": "<leader>b",
|
||||
"scrollbar_toggle": "none",
|
||||
"username_toggle": "none",
|
||||
"status_view": "<leader>s",
|
||||
"tool_details": "none",
|
||||
"session_export": "<leader>x",
|
||||
"session_new": "<leader>n",
|
||||
"session_list": "<leader>l",
|
||||
"session_timeline": "<leader>g",
|
||||
"session_fork": "none",
|
||||
"session_rename": "none",
|
||||
"session_share": "none",
|
||||
"session_unshare": "none",
|
||||
"session_interrupt": "escape",
|
||||
"session_compact": "<leader>c",
|
||||
"session_child_cycle": "<leader>right",
|
||||
"session_child_cycle_reverse": "<leader>left",
|
||||
"session_parent": "<leader>up",
|
||||
"messages_page_up": "pageup,ctrl+alt+b",
|
||||
"messages_page_down": "pagedown,ctrl+alt+f",
|
||||
"messages_line_up": "ctrl+alt+y",
|
||||
"messages_line_down": "ctrl+alt+e",
|
||||
"messages_half_page_up": "ctrl+alt+u",
|
||||
"messages_half_page_down": "ctrl+alt+d",
|
||||
"messages_first": "ctrl+g,home",
|
||||
"messages_last": "ctrl+alt+g,end",
|
||||
"messages_next": "none",
|
||||
"messages_previous": "none",
|
||||
"messages_copy": "<leader>y",
|
||||
"messages_undo": "<leader>u",
|
||||
"messages_redo": "<leader>r",
|
||||
"messages_last_user": "none",
|
||||
"messages_toggle_conceal": "<leader>h",
|
||||
"model_list": "<leader>m",
|
||||
"model_cycle_recent": "f2",
|
||||
"model_cycle_recent_reverse": "shift+f2",
|
||||
"model_cycle_favorite": "none",
|
||||
"model_cycle_favorite_reverse": "none",
|
||||
"variant_cycle": "ctrl+t",
|
||||
"command_list": "ctrl+p",
|
||||
"agent_list": "<leader>a",
|
||||
"agent_cycle": "tab",
|
||||
"agent_cycle_reverse": "shift+tab",
|
||||
"input_clear": "ctrl+c",
|
||||
"input_paste": "ctrl+v",
|
||||
"input_submit": "return",
|
||||
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
|
||||
"input_move_left": "left,ctrl+b",
|
||||
"input_move_right": "right,ctrl+f",
|
||||
"input_move_up": "up",
|
||||
"input_move_down": "down",
|
||||
"input_select_left": "shift+left",
|
||||
"input_select_right": "shift+right",
|
||||
"input_select_up": "shift+up",
|
||||
"input_select_down": "shift+down",
|
||||
"input_line_home": "ctrl+a",
|
||||
"input_line_end": "ctrl+e",
|
||||
"input_select_line_home": "ctrl+shift+a",
|
||||
"input_select_line_end": "ctrl+shift+e",
|
||||
"input_visual_line_home": "alt+a",
|
||||
"input_visual_line_end": "alt+e",
|
||||
"input_select_visual_line_home": "alt+shift+a",
|
||||
"input_select_visual_line_end": "alt+shift+e",
|
||||
"input_buffer_home": "home",
|
||||
"input_buffer_end": "end",
|
||||
"input_select_buffer_home": "shift+home",
|
||||
"input_select_buffer_end": "shift+end",
|
||||
"input_delete_line": "ctrl+shift+d",
|
||||
"input_delete_to_line_end": "ctrl+k",
|
||||
"input_delete_to_line_start": "ctrl+u",
|
||||
"input_backspace": "backspace,shift+backspace",
|
||||
"input_delete": "ctrl+d,delete,shift+delete",
|
||||
"input_undo": "ctrl+-,super+z",
|
||||
"input_redo": "ctrl+.,super+shift+z",
|
||||
"input_word_forward": "alt+f,alt+right,ctrl+right",
|
||||
"input_word_backward": "alt+b,alt+left,ctrl+left",
|
||||
"input_select_word_forward": "alt+shift+f,alt+shift+right",
|
||||
"input_select_word_backward": "alt+shift+b,alt+shift+left",
|
||||
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
|
||||
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
|
||||
"history_previous": "up",
|
||||
"history_next": "down",
|
||||
"terminal_suspend": "ctrl+z",
|
||||
"terminal_title_toggle": "none",
|
||||
"tips_toggle": "<leader>h",
|
||||
"display_thinking": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ledernøgle
|
||||
|
||||
OpenCode bruger en `leader` nøgle til de fleste smagsbindinger. Dette undgår konflikter i din terminal.
|
||||
|
||||
Som standard er `ctrl+x` ledertasten, og de fleste handlinger kræver, at du først trykker på ledertasten og derefter genvejen. For eksempel, for at starte en ny session, skal du først trykke på `ctrl+x` og derefter trykke på `n`.
|
||||
|
||||
Du behøver ikke bruge en ledernøgle til dine nøglebindinger, men vi anbefaler at du gør det.
|
||||
|
||||
---
|
||||
|
||||
## Deaktiver smagsbinding
|
||||
|
||||
Du kan deaktivere en nøglebinding ved at tilføje nøglen til din konfiguration med værdien "ingen".
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {
|
||||
"session_compact": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Genveje til skrivebordsprompt
|
||||
|
||||
OpenCode desktop app prompt input understøtter almindelige Readline/Emacs-style genveje til redigering af tekst. Disse er indbyggede og i øjeblikket ikke konfigurerede via `opencode.json`.
|
||||
|
||||
| Genvej | Håndtering |
|
||||
| -------- | ------------------------------------------- |
|
||||
| `ctrl+a` | Flyt til starten af den aktuelle linje |
|
||||
| `ctrl+e` | Flyt til slutningen af den aktuelle linje |
|
||||
| `ctrl+b` | Flyt markøren et tegn tilbage |
|
||||
| `ctrl+f` | Flyt markøren et tegn frem |
|
||||
| `alt+b` | Flyt markøren et ord tilbage |
|
||||
| `alt+f` | Flyt markøren et ord frem |
|
||||
| `ctrl+d` | Slet tegn under markøren |
|
||||
| `ctrl+k` | Dræb til slutningen af linjen |
|
||||
| `ctrl+u` | Dræb til starten af linjen |
|
||||
| `ctrl+w` | Dræb forrige ord |
|
||||
| `alt+d` | Dræb næste ord |
|
||||
| `ctrl+t` | Transponer tegn |
|
||||
| `ctrl+g` | Annuller popovers / afbryd kørsel af svar |
|
||||
|
||||
---
|
||||
|
||||
## Shift+Enter
|
||||
|
||||
Nogle terminaler sender ikke modifikationsnøgler med Enter som standard. Du skal muligvis konfigurere din terminal til at sende `Shift+Enter` som en escape-sekvens.
|
||||
|
||||
### Windows Terminal
|
||||
|
||||
Åbn din `settings.json` på:
|
||||
|
||||
```
|
||||
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
|
||||
```
|
||||
|
||||
Føj dette til `actions`-arrayet på rodniveau:
|
||||
|
||||
```json
|
||||
"actions": [
|
||||
{
|
||||
"command": {
|
||||
"action": "sendInput",
|
||||
"input": "\u001b[13;2u"
|
||||
},
|
||||
"id": "User.sendInput.ShiftEnterCustom"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Føj dette til `keybindings`-arrayet på rodniveau:
|
||||
|
||||
```json
|
||||
"keybindings": [
|
||||
{
|
||||
"keys": "shift+enter",
|
||||
"id": "User.sendInput.ShiftEnterCustom"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Gem fil og genstart Windows Terminal eller åbn en ny fane.
|
||||
188
packages/web/src/content/docs/da/lsp.mdx
Normal file
188
packages/web/src/content/docs/da/lsp.mdx
Normal file
@@ -0,0 +1,188 @@
|
||||
---
|
||||
title: LSP Servere
|
||||
description: OpenCode integreres med dine LSP-servere.
|
||||
---
|
||||
|
||||
OpenCode integreres med din sprogserverprotokol (LSP) for at hjælpe LLM med at interagere med din kodebase. Den bruger diagnostik til at give feedback til LLM.
|
||||
|
||||
---
|
||||
|
||||
## Indbygget
|
||||
|
||||
OpenCode leveres med flere indbyggede LSP-servere til populære sprog:
|
||||
|
||||
| LSP Server | Udvidelser | Krav |
|
||||
| ------------------- | --------------------------------------------------------- | --------------------------------------------------------------- |
|
||||
| astro | .astro | Autoinstallationer til Astro-projekter |
|
||||
| bash | .sh,.bash,.zsh,.ksh | Autoinstallerer bash-language-server |
|
||||
| clangd | .c,.cpp,.cc,.cxx,.c++,.h,.hpp,.hh,.hxx,.h++ | Autoinstallationer for C/C++ projekter |
|
||||
| csharp | .cs | `.NET SDK` installere |
|
||||
| clojure-lsp | .clj,.cljs,.cljc,.edn | `clojure-lsp` kommando tilgængelig |
|
||||
| dart | .dart | `dart` kommando tilgængelig |
|
||||
| deno | .ts,.tsx,.js,.jsx,.mjs | `deno` kommando tilgængelig (auto-detects deno.json/deno.jsonc) |
|
||||
| eliksir-ls | .ex,.exs | `elixir` kommando tilgængelig |
|
||||
| eslint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue | `eslint` afhængighed i projekt |
|
||||
| fskarp | .fs,.fsi,.fsx,.fsscript | `.NET SDK` installere |
|
||||
| glimt | .glimt | `gleam` kommando tilgængelig |
|
||||
| gopls | .go | `go` kommando tilgængelig |
|
||||
| hls | .hs,.lhs | `haskell-language-server-wrapper` kommando tilgængelig |
|
||||
| jdtls | .java | `Java SDK (version 21+)` installere |
|
||||
| kotlin-ls | .kt,.kts | Autoinstallationer til Kotlin-projekter |
|
||||
| lua-ls | .lua | Autoinstallationer til Lua-projekter |
|
||||
| nixd | .nix | `nixd` kommando tilgængelig |
|
||||
| ocaml-lsp | .ml,.mli | `ocamllsp` kommando tilgængelig |
|
||||
| oxlint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue,.astro,.svelte | `oxlint` afhængighed i projekt |
|
||||
| php intelephense | .php | Automatiske installationer til PHP-projekter |
|
||||
| prisma | .prisma | `prisma` kommando tilgængelig |
|
||||
| ophavsret | .py,.pyi | `pyright` afhængig installeret |
|
||||
| rubin-lsp (rubocop) | .rb,.rake,.gemspec,.ru | `ruby` og `gem` kommandoer tilgængelige |
|
||||
| rust | .rs | `rust-analyzer` kommando tilgængelig |
|
||||
| sourcekit-lsp | .swift,.objc,.objcpp | `swift` installere (`xcode` på macOS) |
|
||||
| svelte | .svelte | Autoinstallationer til Svelte-projekter |
|
||||
| terraform | .tf,.tfvars | Automatiske installationer fra GitHub-udgivelser |
|
||||
| lillemand | .typ,.typc | Automatiske installationer fra GitHub-udgivelser |
|
||||
| maskinskrift | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts | `typescript` afhængighed i projekt |
|
||||
| vue | .vue | Autoinstallationer til Vue-projekter |
|
||||
| yaml-ls | .yaml,.yml | Autoinstallerer Red Hat yaml-language-server |
|
||||
| zls | .zig,.zon | `zig` kommando tilgængelig |
|
||||
|
||||
LSP-servere aktiveres automatisk, når en af ovnstående filtypenavne opdages, og kravene er opfyldt.
|
||||
|
||||
:::note
|
||||
Du kan deaktivere automatisk LSP-serverdownloads ved at indstille miljøvariablen `OPENCODE_DISABLE_LSP_DOWNLOAD` til `true`.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Sådan fungerer det
|
||||
|
||||
Når opencode åbner en fil, vil den:
|
||||
|
||||
1. Kontrollerer filtypenavnet mod alle aktiverede LSP-servere.
|
||||
2. Starter den relevante LSP-server, hvis den ikke allerede kører.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse LSP-servere gennem sektionen `lsp` i din opencode-konfiguration.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {}
|
||||
}
|
||||
```
|
||||
|
||||
Hver LSP- server understøtter følgende:
|
||||
|
||||
| Ejendom | Skriv | Beskrivelse |
|
||||
| ---------------- | -------- | --------------------------------------------------------- |
|
||||
| `disabled` | boolsk | Indstil dette til `true` for at deaktivere LSP-serveren |
|
||||
| `command` | styrke[] | Kommandoen til at starte LSP-serveren |
|
||||
| `extensions` | styrke[] | Filtypenavne, som denne LSP-server skal håndtere |
|
||||
| `env` | objekt | Miljøvariabler, der skal indstilles, når serveren starter |
|
||||
| `initialization` | objekt | Initialiseringsmuligheder for at sende til LSP-serveren |
|
||||
|
||||
Lad os se på nogle eksempler.
|
||||
|
||||
---
|
||||
|
||||
### Miljøvariabler
|
||||
|
||||
Brug egenskaben `env` til at indstille miljøvariabler, når du starter LSP-serveren:
|
||||
|
||||
```json title="opencode.json" {5-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"rust": {
|
||||
"env": {
|
||||
"RUST_LOG": "debug"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Initialiseringsmuligheder
|
||||
|
||||
Brug egenskaben `initialization` til at videregive initialiseringsindstillinger til LSP-serveren. Disse er serverspecifikke indstillinger sendt under LSP `initialize` anmodningen:
|
||||
|
||||
```json title="opencode.json" {5-9}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"typescript": {
|
||||
"initialization": {
|
||||
"preferences": {
|
||||
"importModuleSpecifierPreference": "relative"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
Initialiseringsmuligheder forskellige afhængige af LSP-serveren. Se din LSP-servers dokumentation for tilgængelige muligheder.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Deaktivering af LSP-servere
|
||||
|
||||
For at deaktivere **alle** LSP-servere globalt, skal du indstille `lsp` til `false`:
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": false
|
||||
}
|
||||
```
|
||||
|
||||
For at deaktivere en **specifik** LSP-server skal du indstille `disabled` til `true`:
|
||||
|
||||
```json title="opencode.json" {5}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"typescript": {
|
||||
"disabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Brugerdefinerede LSP-servere
|
||||
|
||||
Du kan tilføje brugerdefinerede LSP-servere ved at angive kommandoen og filtypenavne:
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"custom-lsp": {
|
||||
"command": ["custom-lsp-server", "--stdio"],
|
||||
"extensions": [".custom"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Yderligere oplysninger
|
||||
|
||||
### PHP Intelephense
|
||||
|
||||
PHP Intelephense tilbyder premium funktioner gennem en licensnøgle. Du kan angive en licensnøgle ved at placere (kun) nøglen i en tekstfil på:
|
||||
|
||||
- På macOS/Linux: `$HOME/intelephense/licence.txt`
|
||||
- På Windows: `%USERPROFILE%/intelephense/licence.txt`
|
||||
|
||||
Filen bør kun indeholde licensnøglen uden yderligere indhold.
|
||||
511
packages/web/src/content/docs/da/mcp-servers.mdx
Normal file
511
packages/web/src/content/docs/da/mcp-servers.mdx
Normal file
@@ -0,0 +1,511 @@
|
||||
---
|
||||
title: MCP servere
|
||||
description: Tilføj lokale og eksterne MCP værktøjer.
|
||||
---
|
||||
|
||||
Du kan tilføje eksterne værktøjer til OpenCode ved hjælp af _Model Context Protocol_ eller MCP. OpenCode understøtter både lokale og eksterne servere.
|
||||
|
||||
Når de er tilføjet, er MCP automatisk tilgængelig for LLM sammen med indbyggede værktøjer.
|
||||
|
||||
---
|
||||
|
||||
#### Forse
|
||||
|
||||
Når du bruger en MCP-server, føjes den til konteksten. Dette kan hurtigt stige, hvis du har mange værktøjer. Så vi anbefaler at være forsigtig med hvilke MCP-servere du bruger.
|
||||
|
||||
:::tip
|
||||
MCP-servere tilføjer til din kontekst, så du vil være forsigtig med, hvilke du aktiverer.
|
||||
:::
|
||||
|
||||
Visse MCP-servere, som GitHub MCP-servere, har en tendens til at tilføje mange tokens og kan nemt overskride kontekstgrænsen.
|
||||
|
||||
---
|
||||
|
||||
## Aktiver
|
||||
|
||||
Du kan definere MCP-servere i din [OpenCode Config](https://opencode.ai/docs/config/) under `mcp`. Tilføj hver MCP med et unikt navn. Du kan henvise til denne MCP ved navn, når du spørger LLM.
|
||||
|
||||
```jsonc title="opencode.jsonc" {6}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"name-of-mcp-server": {
|
||||
// ...
|
||||
"enabled": true,
|
||||
},
|
||||
"name-of-other-mcp-server": {
|
||||
// ...
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Du kan også deaktivere en server ved at indstille `enabled` til `false`. Dette er nyttigt, hvis du midlertidigt vil deaktivere en server uden at fjerne den fra din konfiguration.
|
||||
|
||||
---
|
||||
|
||||
### Tilsidesættelse af fjernindstillinger
|
||||
|
||||
Organisationer kan levere standard MCP-servere via deres `.well-known/opencode`-slutpunkt. Disse servere kan være deaktiveret som standard, hvilket giver brugerne mulighed for at tilmelde sig dem, de har brug for.
|
||||
|
||||
For at aktivere en specifik server fra din organisationers fjernkonfiguration skal du tilføje den til din lokale konfiguration med `enabled: true`:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dine lokale konfigurationsværdier tilsidesætter fjernstandarderne. Se [config precedence](/docs/config#precedence-order) for flere detaljer.
|
||||
|
||||
---
|
||||
|
||||
## Lokal
|
||||
|
||||
Tilføj lokale MCP-servere ved hjælp af `type` til `"local"` i MCP-objektet.
|
||||
|
||||
```jsonc title="opencode.jsonc" {15}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-local-mcp-server": {
|
||||
"type": "local",
|
||||
// Or ["bun", "x", "my-mcp-command"]
|
||||
"command": ["npx", "-y", "my-mcp-command"],
|
||||
"enabled": true,
|
||||
"environment": {
|
||||
"MY_ENV_VAR": "my_env_var_value",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Kommandoen er, hvordan den lokale MCP-server starter. Du kan også sende en liste over miljøvariabler ind.
|
||||
|
||||
For eksempel, her er, hvordan du kan tilføje test [`@modelcontextprotocol/server-everything`](MCP) MCP serveren.
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"mcp_everything": {
|
||||
"type": "local",
|
||||
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Og for at bruge det kan jeg tilføje `use the mcp_everything tool` til mine prompter.
|
||||
|
||||
```txt "mcp_everything"
|
||||
use the mcp_everything tool to add the number 3 and 4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Indstillinger
|
||||
|
||||
Her er alle muligheder for at konfigurere en lokal MCP-server.
|
||||
|
||||
| Mulighed | Skriv | Påkrævet | Beskrivelse |
|
||||
| ------------- | ------- | -------- | ------------------------------------------------------------------------------------ |
|
||||
| `type` | String | Y | Type MCP serverforbindelse, skal være `"local"`. |
|
||||
| `command` | Array | Y | Kommando og argumenter til at køre MCP-serveren. |
|
||||
| `environment` | Objekt | | Miljøvariabler, der skal indstilles, når serveren kører. |
|
||||
| `enabled` | Boolean | | Aktiver eller deaktiver MCP-serveren ved opstart. |
|
||||
| `timeout` | Nummer | | Timeout i ms for at hente værktøjer fra MCP-serveren. Standard er 5000 (5 sekunder). |
|
||||
|
||||
---
|
||||
|
||||
## Fjernbetjening
|
||||
|
||||
Tilføj ekstern MCP-server ved at indstille `type` til `"remote"`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-remote-mcp": {
|
||||
"type": "remote",
|
||||
"url": "https://my-mcp-server.com",
|
||||
"enabled": true,
|
||||
"headers": {
|
||||
"Authorization": "Bearer MY_API_KEY"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`url` er URL for den eksterne MCP server, og med indstillingen `headers` kan du sende en liste over overskrifter ind.
|
||||
|
||||
---
|
||||
|
||||
#### Indstillinger
|
||||
|
||||
| Mulighed | Skriv | Påkrævet | Beskrivelse |
|
||||
| --------- | ------- | -------- | ------------------------------------------------------------------------------------ |
|
||||
| `type` | String | Y | Type MCP serverforbindelse, skal være `"remote"`. |
|
||||
| `url` | String | Y | URL af den eksterne MCP-server. |
|
||||
| `enabled` | Boolean | | Aktiver eller deaktiver MCP-serveren ved opstart. |
|
||||
| `headers` | Objekt | | Overskrifter til at sende med anmodningen. |
|
||||
| `oauth` | Objekt | | OAuth-godkendelseskonfiguration. Se afsnittet [OAuth](#oauth) nedenfor. |
|
||||
| `timeout` | Nummer | | Timeout i ms for at hente værktøjer fra MCP-serveren. Standard er 5000 (5 sekunder). |
|
||||
|
||||
---
|
||||
|
||||
## OAuth
|
||||
|
||||
OpenCode håndterer automatisk OAuth-godkendelse for eksterne MCP-servere. Når en server kræver godkendelse, vil OpenCode:
|
||||
|
||||
1. Registrer 401-svaret, og start OAuth-flowet
|
||||
2. Brug **Dynamic Client Registration (RFC 7591)**, hvis det understøtter af serveren
|
||||
3. Opbevar tokens sikkert til fremtidige anmodninger
|
||||
|
||||
---
|
||||
|
||||
### Automatisk
|
||||
|
||||
For de fleste OAuth-aktiverede MCP-servere kræver ingen speciel konfiguration. Bare konfigureret fjernserver:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-oauth-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hvis serveren kræver godkendelse, vil OpenCode bede dig om at godkende, når du prøver at bruge den første gang. Hvis ikke, kan du [manually trigger the flow](#authenticating) med `opencode mcp auth <server-name>`.
|
||||
|
||||
---
|
||||
|
||||
### Forudregistreret
|
||||
|
||||
Hvis du har klientlegitimationsoplysninger fra MCP-serverudbyderen, kan du konfigurere dem:
|
||||
|
||||
```json title="opencode.json" {7-11}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-oauth-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp",
|
||||
"oauth": {
|
||||
"clientId": "{env:MY_MCP_CLIENT_ID}",
|
||||
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
|
||||
"scope": "tools:read tools:execute"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Godkender
|
||||
|
||||
Du kan manuelt udløse godkendelse eller administrere legitimationsoplysninger.
|
||||
|
||||
Godkendt med en specifik MCP-server:
|
||||
|
||||
```bash
|
||||
opencode mcp auth my-oauth-server
|
||||
```
|
||||
|
||||
Liste over alle MCP-servere og deres godkendelsesstatus:
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
```
|
||||
|
||||
Fjern gemte legitimationsoplysninger:
|
||||
|
||||
```bash
|
||||
opencode mcp logout my-oauth-server
|
||||
```
|
||||
|
||||
Kommandoen `mcp auth` åbner din browser for godkendelse. Når du har godkendt, vil OpenCode opbevare tokens sikkert i `~/.local/share/opencode/mcp-auth.json`.
|
||||
|
||||
---
|
||||
|
||||
#### Deaktiverer OAuth
|
||||
|
||||
Hvis du vil deaktivere automatisk OAuth for en server (f.eks. for servere, der bruger API nøgler i stedet), skal du indstille `oauth` til `false`:
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-api-key-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp",
|
||||
"oauth": false,
|
||||
"headers": {
|
||||
"Authorization": "Bearer {env:MY_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### OAuth-indstillinger
|
||||
|
||||
| Mulighed | Skriv | Beskrivelse |
|
||||
| -------------- | --------------- | ----------------------------------------------------------------------------------------- |
|
||||
| `oauth` | Objekt \| falsk | OAuth-konfigurationsobjekt eller `false` for at deaktivere OAuth-auto-detektion. |
|
||||
| `clientId` | String | OAuth-klient-id. Hvis det ikke er angivet, vil dynamisk klientregistrering blive forsøgt. |
|
||||
| `clientSecret` | String | OAuth-klienthemmelighed, hvis det kræves af autorisationsserveren. |
|
||||
| `scope` | String | OAuth-omfang at anmode om under godkendelse. |
|
||||
|
||||
#### Fejlretning
|
||||
|
||||
Hvis en ekstern MCP-server ikke kan godkendes, kan du diagnosticere problemer med:
|
||||
|
||||
```bash
|
||||
# View auth status for all OAuth-capable servers
|
||||
opencode mcp auth list
|
||||
|
||||
# Debug connection and OAuth flow for a specific server
|
||||
opencode mcp debug my-oauth-server
|
||||
```
|
||||
|
||||
Kommandoen `mcp debug` viser den aktuelle godkendelsesstatus, tester HTTP-forbindelse og forsøger OAuth-opdagelsesflowet.
|
||||
|
||||
---
|
||||
|
||||
## Administrator
|
||||
|
||||
Dine MCPs er tilgængelige som værktøjer i **TK\_** sammen med indbyggede værktøjer. Så du kan administrere dem gennem OpenCode-konfigurationen som ethvert andet værktøj.
|
||||
|
||||
---
|
||||
|
||||
### Global
|
||||
|
||||
Det betyder, at du kan aktivere eller deaktivere dem globalt.
|
||||
|
||||
```json title="opencode.json" {14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-mcp-foo": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-foo"]
|
||||
},
|
||||
"my-mcp-bar": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-bar"]
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"my-mcp-foo": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vi kan også bruge et globmønster til at deaktivere alle matchende MCPs.
|
||||
|
||||
```json title="opencode.json" {14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-mcp-foo": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-foo"]
|
||||
},
|
||||
"my-mcp-bar": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-bar"]
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"my-mcp*": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Her bruger vi globmønsteret `my-mcp*` til at deaktivere alle MCPs.
|
||||
|
||||
---
|
||||
|
||||
### Pr. agent
|
||||
|
||||
Hvis du har et stort antal MCP-servere, vil du måske kun aktivere dem pr. agent og deaktivere dem globalt. Sådan gør du:
|
||||
|
||||
1. Deaktiver det som et værktøj globalt.
|
||||
2. Aktiver MCP-serveren som et værktøj i din [agent config](/docs/agents#tools).
|
||||
|
||||
```json title="opencode.json" {11, 14-18}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-mcp": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command"],
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"my-mcp*": false
|
||||
},
|
||||
"agent": {
|
||||
"my-agent": {
|
||||
"tools": {
|
||||
"my-mcp*": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Glob-mønstre
|
||||
|
||||
Glob-mønsteret bruger simple regex-globing-mønstre:
|
||||
|
||||
- `*` matcher nul eller flere af ethvert tegn (f.eks. `"my-mcp*"` matcher `my-mcp_search`, `my-mcp_list` osv.)
|
||||
- `?` matcher nøjagtigt ét tegn
|
||||
- Alle andre karakterer matcher bogstaveligt talt
|
||||
|
||||
:::note
|
||||
MCP serverværktøjer er registreret med servernavn som præfiks, så for at deaktivere alle værktøjer til en server skal du blot bruge:
|
||||
|
||||
```
|
||||
"mymcpservername_*": false
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Eksempler
|
||||
|
||||
Nedenfor er eksempler på nogle almindelige MCP-servere. Du kan indsende en PR, hvis du vil dokumentere andre servere.
|
||||
|
||||
---
|
||||
|
||||
### Vagtvagt
|
||||
|
||||
Tilføj [Sentry MCP server](https://mcp.sentry.dev) for at interagere med dine Sentry-projekter og -problemer.
|
||||
|
||||
```json title="opencode.json" {4-8}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"sentry": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.sentry.dev/mcp",
|
||||
"oauth": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Efter tilføjelse af konfigurationen skal du godkende med Sentry:
|
||||
|
||||
```bash
|
||||
opencode mcp auth sentry
|
||||
```
|
||||
|
||||
Dette åbner et browservindue for at fuldføre OAuth-flowet og forbinde OpenCode til din Sentry-konto.
|
||||
|
||||
Når du er godkendt, kan du bruge Sentry-værktøjer i dine prompter til at forespørge om problemer, projekter og fejldata.
|
||||
|
||||
```txt "use sentry"
|
||||
Show me the latest unresolved issues in my project. use sentry
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Kontekst7
|
||||
|
||||
Tilføj [Context7 MCP server](https://github.com/upstash/context7) for at søge i dokumenter.
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"context7": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.context7.com/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hvis du har tilmeldt dig en gratis konto, kan du bruge din API nøgle og få højere satsgrænser.
|
||||
|
||||
```json title="opencode.json" {7-9}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"context7": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.context7.com/mcp",
|
||||
"headers": {
|
||||
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Her antager vi, at du har sat miljøvariablen `CONTEXT7_API_KEY`.
|
||||
|
||||
Føj `use context7` til dine prompter for at bruge Context7 MCP server.
|
||||
|
||||
```txt "use context7"
|
||||
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
|
||||
```
|
||||
|
||||
Alternativt kan du tilføje noget som dette til din [AGENTS.md](/docs/rules/).
|
||||
|
||||
```md title="AGENTS.md"
|
||||
When you need to search docs, use `context7` tools.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Grep af Vercel
|
||||
|
||||
Tilføj serveren [Grep by Vercel](https://grep.app) MCP for at søge gennem kodestykker på GitHub.
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"gh_grep": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.grep.app"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Da vi navngav vores MCP-server `gh_grep`, kan du tilføje `use the gh_grep tool` til dine prompter for at få agenten til at bruge den.
|
||||
|
||||
```txt "use the gh_grep tool"
|
||||
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
|
||||
```
|
||||
|
||||
Alternativt kan du tilføje noget som dette til din [AGENTS.md](/docs/rules/).
|
||||
|
||||
```md title="AGENTS.md"
|
||||
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
|
||||
```
|
||||
223
packages/web/src/content/docs/da/models.mdx
Normal file
223
packages/web/src/content/docs/da/models.mdx
Normal file
@@ -0,0 +1,223 @@
|
||||
---
|
||||
title: Modeller
|
||||
description: Konfiguration af en LLM udbyder og model.
|
||||
---
|
||||
|
||||
OpenCode bruger [AI SDK](https://ai-sdk.dev/) og [Models.dev](https://models.dev) til at understøtte **75+ LLM udbydere** og det understøtter at køre lokale modeller.
|
||||
|
||||
---
|
||||
|
||||
## Udbydere
|
||||
|
||||
De fleste populære udbydere er forudindlæst som standard. Hvis du har tilføjet legitimationsoplysningerne for en udbyder gennem kommandoen `/connect`, vil de være tilgængelige, når du starter OpenCode.
|
||||
|
||||
Få mere at vide om [providers](/docs/providers).
|
||||
|
||||
---
|
||||
|
||||
## Vælg en model
|
||||
|
||||
Når du har konfigureret din udbyder, kan du vælge den ønskede model ved at indtaste:
|
||||
|
||||
```bash frame="none"
|
||||
/models
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Anbefalede modeller
|
||||
|
||||
Der er mange modeller derude, og der kommer nye modeller hver uge.
|
||||
|
||||
:::tip
|
||||
Overvej at bruge en af de modeller, vi anbefaler.
|
||||
:::
|
||||
|
||||
Der er dog kun få af dem, der er gode til både at generere kode og værktøjsopkald.
|
||||
|
||||
Her er flere modeller, der fungerer godt med OpenCode, uden bestemt rækkefølge. (Dette er ikke en udtømmende liste og er heller ikke nødvendigvis opdateret):
|
||||
|
||||
- GPT 5.2
|
||||
- GPT 5.1 Codex
|
||||
- Claude Opus 4,5
|
||||
- Claude Sonnet 4,5
|
||||
- Minimax M2.1
|
||||
- Gemini 3 Pro
|
||||
|
||||
---
|
||||
|
||||
## Indstil en standard
|
||||
|
||||
For at indstille en af disse som standardmodellen kan du indstille `model`-nøglen i din
|
||||
OpenCode konfig.
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "lmstudio/google/gemma-3n-e4b"
|
||||
}
|
||||
```
|
||||
|
||||
Her er det fulde ID `provider_id/model_id`. For eksempel, hvis du bruger [OpenCode Zen](/docs/zen), vil du bruge `opencode/gpt-5.1-codex` til GPT 5.1 Codex.
|
||||
|
||||
Hvis du har konfigureret en [custom provider](/docs/providers#custom), er `provider_id` nøglen fra `provider` delen af din konfiguration, og `model_id` er nøglen fra `provider.models`.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer modeller
|
||||
|
||||
Du kan konfigurere en models muligheder globalt gennem konfigurationen.
|
||||
|
||||
```jsonc title="opencode.jsonc" {7-12,19-24}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"openai": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"options": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
"include": ["reasoning.encrypted_content"],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"anthropic": {
|
||||
"models": {
|
||||
"claude-sonnet-4-5-20250929": {
|
||||
"options": {
|
||||
"thinking": {
|
||||
"type": "enabled",
|
||||
"budgetTokens": 16000,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Her konfigurerer vi globale indstillinger for to indbyggede modeller: `gpt-5` når de tilgås via `openai` udbyderen og `claude-sonnet-4-20250514` når de tilgås via `anthropic` udbyderen.
|
||||
Den indbyggede udbyder og modelnavne kan findes på [Models.dev](https://models.dev).
|
||||
|
||||
Du kan også konfigurere disse indstillinger for alle agenter, du bruger. Agentkonfigurationen tilsidesætter alle globale muligheder her. [Learn more](/docs/agents/#additional).
|
||||
|
||||
Du kan også definere brugerdefinerede varianter, der udvider de indbyggede. Varianter giver dig mulighed for at konfigurere forskellige indstillinger for den samme model uden at oprette duplikerede poster:
|
||||
|
||||
```jsonc title="opencode.jsonc" {6-21}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"opencode": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"variants": {
|
||||
"high": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
},
|
||||
"low": {
|
||||
"reasoningEffort": "low",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Varianter
|
||||
|
||||
Mange modeller understøtter flere varianter med forskellige konfigurationer. OpenCode leveres med indbyggede standardvarianter til populære udbydere.
|
||||
|
||||
### Indbyggede varianter
|
||||
|
||||
OpenCode leveres med standardvarianter for mange udbydere:
|
||||
|
||||
**Anthropic**:
|
||||
|
||||
- `high` - Højt tænkende budget (standard)
|
||||
- `max` - Maksimalt tænkebudget
|
||||
|
||||
**OpenAI**:
|
||||
|
||||
Varierer efter model, men nogenlunde:
|
||||
|
||||
- `none` - Ingen begrundelse
|
||||
- `minimal` - Minimal ræsonnement indsats
|
||||
- `low` - Lav ræsonnement indsats
|
||||
- `medium` - Middel ræsonnement indsats
|
||||
- `high` - Høj ræsonnement indsats
|
||||
- `xhigh` - Ekstra høj ræsonnement indsats
|
||||
|
||||
**Google**:
|
||||
|
||||
- `low` - Lavere effort/token budget
|
||||
- `high` - Højere effort/token budget
|
||||
|
||||
:::tip
|
||||
Denne liste er ikke udtømmende. Mange andre udbydere har også indbyggede standardindstillinger.
|
||||
:::
|
||||
|
||||
### Brugerdefinerede varianter
|
||||
|
||||
Du kan tilsidesætte eksisterende varianter eller tilføje dine egne:
|
||||
|
||||
```jsonc title="opencode.jsonc" {7-18}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"openai": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"variants": {
|
||||
"thinking": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
},
|
||||
"fast": {
|
||||
"disabled": true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Cyklusvarianter
|
||||
|
||||
Brug tastebindingen `variant_cycle` til hurtigt at skifte mellem varianter. [Learn more](/docs/keybinds).
|
||||
|
||||
---
|
||||
|
||||
## Indlæser modeller
|
||||
|
||||
Når OpenCode starter op, søger den efter modeller i følgende prioriterede rækkefølge:
|
||||
|
||||
1. Kommandolinjeflaget `--model` eller `-m`. Formatet er det samme som i konfigurationsfilen: `provider_id/model_id`.
|
||||
|
||||
2. Modellisten i OpenCode-konfigurationen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "anthropic/claude-sonnet-4-20250514"
|
||||
}
|
||||
```
|
||||
|
||||
Formatet her er `provider/model`.
|
||||
|
||||
3. Den sidst brugte model.
|
||||
|
||||
4. Den første model med en intern prioritet.
|
||||
331
packages/web/src/content/docs/da/modes.mdx
Normal file
331
packages/web/src/content/docs/da/modes.mdx
Normal file
@@ -0,0 +1,331 @@
|
||||
---
|
||||
title: Tilstande
|
||||
description: Forskellige tilstande til forskellige anvendelsestilfælde.
|
||||
---
|
||||
|
||||
:::forsigtighed
|
||||
Tilstande er nu konfigureret gennem indstillingen `agent` i opencode-konfigurationen. De
|
||||
`mode` mulighed er nu forældet. [Learn more](/docs/agents).
|
||||
:::
|
||||
|
||||
Tilstande i opencode giver dig mulighed for at tilpasse adfærd, værktøjer og prompter til forskellige brugstilfælde.
|
||||
|
||||
Den kommer med to indbyggede tilstande: **build** og **plan**. Du kan tilpasse
|
||||
disse eller konfigurer dine egne gennem opencode-konfigurationen.
|
||||
|
||||
Du kan skifte mellem tilstande under en session eller konfigurere dem i din konfigurationsfil.
|
||||
|
||||
---
|
||||
|
||||
## Indbygget
|
||||
|
||||
opencode leveres med to indbyggede tilstande.
|
||||
|
||||
---
|
||||
|
||||
### Byg
|
||||
|
||||
Byg er **standard**-tilstanden med alle værktøjer aktiveret. Dette er standardtilstanden for udviklingsarbejde, hvor du har brug for fuld adgang til filhandlinger og systemkommandoer.
|
||||
|
||||
---
|
||||
|
||||
### Plan
|
||||
|
||||
En begrænset tilstand designet til planlægning og analyse. I plantilstand er følgende værktøjer deaktiveret som standard:
|
||||
|
||||
- `write` - Kan ikke oprette nye filer
|
||||
- `edit` - Kan ikke ændre eksisterende filer, undtagen filer placeret på `.opencode/plans/*.md` for at detaljere selve planen
|
||||
- `patch` - Kan ikke anvende patches
|
||||
- `bash` - Kan ikke udføre shell-kommandoer
|
||||
|
||||
Denne tilstand er nyttig, når du vil have AI til at analysere kode, foreslå ændringer eller oprette planer uden at foretage egentlige ændringer af din kodebase.
|
||||
|
||||
---
|
||||
|
||||
## Skifter
|
||||
|
||||
Du kan skifte mellem tilstande under en session ved at bruge _Tab_-tasten. Eller din konfigurerede `switch_mode` nøglebinding.
|
||||
|
||||
Se også: [Formatters](/docs/formatters) for information om konfiguration af kodeformatering.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse de indbyggede tilstande eller oprette dine egne gennem konfiguration. Tilstande kan konfigureres på to måder:
|
||||
|
||||
### JSON Konfiguration
|
||||
|
||||
Konfigurer tilstande i din `opencode.json`-konfigurationsfil:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mode": {
|
||||
"build": {
|
||||
"model": "anthropic/claude-sonnet-4-20250514",
|
||||
"prompt": "{file:./prompts/build.txt}",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": true
|
||||
}
|
||||
},
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Markdown-konfiguration
|
||||
|
||||
Du kan også definere tilstande ved hjælp af markdown-filer. Placer dem i:
|
||||
|
||||
- Globalt: `~/.config/opencode/modes/`
|
||||
- Projekt: `.opencode/modes/`
|
||||
|
||||
```markdown title="~/.config/opencode/modes/review.md"
|
||||
---
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
temperature: 0.1
|
||||
tools:
|
||||
write: false
|
||||
edit: false
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are in code review mode. Focus on:
|
||||
|
||||
- Code quality and best practices
|
||||
- Potential bugs and edge cases
|
||||
- Performance implications
|
||||
- Security considerations
|
||||
|
||||
Provide constructive feedback without making direct changes.
|
||||
```
|
||||
|
||||
Markdown-filnavnet bliver tilstandsnavnet (f.eks. opretter `review.md` en `review`-tilstand).
|
||||
|
||||
Lad os se nærmere på disse konfigurationsmuligheder.
|
||||
|
||||
---
|
||||
|
||||
### Model
|
||||
|
||||
Brug `model`-konfigurationen til at tilsidesætte standardmodellen for denne tilstand. Nyttigt til brug af forskellige modeller optimeret til forskellige opgaver. For eksempel en hurtigere model til planlægning, en mere dygtig model til implementering.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Temperatur
|
||||
|
||||
Styr tilfældigheden og kreativiteten af AI's svar med `temperature`-konfigurationen. Lavere værdier gør svar mere fokuserede og deterministiske, mens højere værdier øger kreativitet og variabilitet.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"plan": {
|
||||
"temperature": 0.1
|
||||
},
|
||||
"creative": {
|
||||
"temperature": 0.8
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Temperaturværdier varierer typisk fra 0,0 til 1,0:
|
||||
|
||||
- **0.0-0.2**: Meget fokuserede og deterministiske svar, ideel til kodeanalyse og planlægning
|
||||
- **0,3-0,5**: Afbalancerede svar med en vis kreativitet, god til generelle udviklingsopgaver
|
||||
- **0.6-1.0**: Mere kreative og varierede svar, nyttige til brainstorming og udforskning
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"analyze": {
|
||||
"temperature": 0.1,
|
||||
"prompt": "{file:./prompts/analysis.txt}"
|
||||
},
|
||||
"build": {
|
||||
"temperature": 0.3
|
||||
},
|
||||
"brainstorm": {
|
||||
"temperature": 0.7,
|
||||
"prompt": "{file:./prompts/creative.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hvis der ikke er angivet nogen temperatur, bruger opencode modelspecifikke standarder (typisk 0 for de fleste modeller, 0,55 for Qwen-modeller).
|
||||
|
||||
---
|
||||
|
||||
### Spørg
|
||||
|
||||
Angiv en brugerdefineret systempromptfil for denne tilstand med `prompt`-konfigurationen. Promptfilen skal indeholde instruktioner, der er specifikke for tilstandens formål.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"review": {
|
||||
"prompt": "{file:./prompts/code-review.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Denne sti er i forhold til, hvor konfigurationsfilen er placeret. Så dette virker for
|
||||
både den globale opencode-konfiguration og den projektspecifikke konfiguration.
|
||||
|
||||
---
|
||||
|
||||
### Værktøjer
|
||||
|
||||
Kontroller, hvilke værktøjer der er tilgængelige i denne tilstand med `tools`-konfigurationen. Du kan aktivere eller deaktivere specifikke værktøjer ved at indstille dem til `true` eller `false`.
|
||||
|
||||
```json
|
||||
{
|
||||
"mode": {
|
||||
"readonly": {
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false,
|
||||
"read": true,
|
||||
"grep": true,
|
||||
"glob": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hvis der ikke er angivet nogen værktøjer, er alle værktøjer aktiveret som standard.
|
||||
|
||||
---
|
||||
|
||||
#### Tilgængelige værktøjer
|
||||
|
||||
Her er alle de værktøjer, der kan styres gennem tilstandskonfigurationen.
|
||||
|
||||
| Værktøj | Beskrivelse |
|
||||
| ----------- | -------------------------- |
|
||||
| `bash` | Udfør shell-kommandoer |
|
||||
| `edit` | Rediger eksisterende filer |
|
||||
| `write` | Opret nye filer |
|
||||
| `read` | Læs filindhold |
|
||||
| `grep` | Søg filindhold |
|
||||
| `glob` | Find filer efter mønster |
|
||||
| `list` | Liste biblioteksindhold |
|
||||
| `patch` | Anvend patches til filer |
|
||||
| `todowrite` | Administrer todo-lister |
|
||||
| `todoread` | Læs todo-lister |
|
||||
| `webfetch` | Hent webindhold |
|
||||
|
||||
---
|
||||
|
||||
## Brugerdefinerede tilstande
|
||||
|
||||
Du kan oprette dine egne brugerdefinerede tilstande ved at tilføje dem til konfigurationen. Her er eksempler, der bruger begge tilgange:
|
||||
|
||||
### Bruger JSON konfiguration
|
||||
|
||||
```json title="opencode.json" {4-14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mode": {
|
||||
"docs": {
|
||||
"prompt": "{file:./prompts/documentation.txt}",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": false,
|
||||
"read": true,
|
||||
"grep": true,
|
||||
"glob": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Brug af markdown-filer
|
||||
|
||||
Opret tilstandsfiler i `.opencode/modes/` for projektspecifikke tilstande eller `~/.config/opencode/modes/` for globale tilstande:
|
||||
|
||||
```markdown title=".opencode/modes/debug.md"
|
||||
---
|
||||
temperature: 0.1
|
||||
tools:
|
||||
bash: true
|
||||
read: true
|
||||
grep: true
|
||||
write: false
|
||||
edit: false
|
||||
---
|
||||
|
||||
You are in debug mode. Your primary goal is to help investigate and diagnose issues.
|
||||
|
||||
Focus on:
|
||||
|
||||
- Understanding the problem through careful analysis
|
||||
- Using bash commands to inspect system state
|
||||
- Reading relevant files and logs
|
||||
- Searching for patterns and anomalies
|
||||
- Providing clear explanations of findings
|
||||
|
||||
Do not make any changes to files. Only investigate and report.
|
||||
```
|
||||
|
||||
```markdown title="~/.config/opencode/modes/refactor.md"
|
||||
---
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
temperature: 0.2
|
||||
tools:
|
||||
edit: true
|
||||
read: true
|
||||
grep: true
|
||||
glob: true
|
||||
---
|
||||
|
||||
You are in refactoring mode. Focus on improving code quality without changing functionality.
|
||||
|
||||
Priorities:
|
||||
|
||||
- Improve code readability and maintainability
|
||||
- Apply consistent naming conventions
|
||||
- Reduce code duplication
|
||||
- Optimize performance where appropriate
|
||||
- Ensure all tests continue to pass
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Use cases
|
||||
|
||||
Her er nogle almindelige brugstilfælde for forskellige tilstande.
|
||||
|
||||
- **Build mode**: Fuldt udviklingsarbejde med alle værktøjer aktiveret
|
||||
- **Plantilstand**: Analyse og planlægning uden at foretage ændringer
|
||||
- **Anmeldelsestilstand**: Kodegennemgang med skrivebeskyttet adgang plus dokumentationsværktøjer
|
||||
- **Fejlretningstilstand**: Fokuseret på undersøgelse med bash og læseværktøjer aktiveret
|
||||
- **Docs-tilstand**: Dokumentationsskrivning med filhandlinger, men ingen systemkommandoer
|
||||
|
||||
Du kan også finde ud af, at forskellige modeller er gode til forskellige brugssituationer.
|
||||
57
packages/web/src/content/docs/da/network.mdx
Normal file
57
packages/web/src/content/docs/da/network.mdx
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: Netværk
|
||||
description: Konfigurer proxyer og brugerdefinerede certifikater.
|
||||
---
|
||||
|
||||
OpenCode understøtter standard proxymiljøvariabler og brugerdefinerede certifikater til virksomhedsnetværksmiljøer.
|
||||
|
||||
---
|
||||
|
||||
## Proxy
|
||||
|
||||
OpenCode respekterer standard proxy-miljøvariabler.
|
||||
|
||||
```bash
|
||||
# HTTPS proxy (recommended)
|
||||
export HTTPS_PROXY=https://proxy.example.com:8080
|
||||
|
||||
# HTTP proxy (if HTTPS not available)
|
||||
export HTTP_PROXY=http://proxy.example.com:8080
|
||||
|
||||
# Bypass proxy for local server (required)
|
||||
export NO_PROXY=localhost,127.0.0.1
|
||||
```
|
||||
|
||||
:::forsigtighed
|
||||
TUI kommunikerer med en lokal HTTP-server. Du skal omgå proxyen for denne forbindelse for at forhindre routingsløjfer.
|
||||
:::
|
||||
|
||||
Du kan konfigurere serverens port og værtsnavn ved hjælp af [CLI flags](/docs/cli#run).
|
||||
|
||||
---
|
||||
|
||||
### Godkend
|
||||
|
||||
Hvis din proxy kræver grundlæggende godkendelse, skal du inkludere legitimationsoplysninger i URL.
|
||||
|
||||
```bash
|
||||
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
|
||||
```
|
||||
|
||||
:::forsigtighed
|
||||
Undgå hardkodning af adgangskoder. Brug miljøvariabler eller sikker lagring af legitimationsoplysninger.
|
||||
:::
|
||||
|
||||
For proxyer, der kræver avanceret godkendelse som NTLM eller Kerberos, kan du overveje at bruge en LLM Gateway, der understøtter din godkendelsesmetode.
|
||||
|
||||
---
|
||||
|
||||
## Brugerdefinerede certifikater
|
||||
|
||||
Hvis din virksomhed bruger tilpassede CA'er til HTTPS-forbindelser, skal du konfigurere OpenCode til at stole på dem.
|
||||
|
||||
```bash
|
||||
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
|
||||
```
|
||||
|
||||
Dette virker for både proxy-forbindelser og direkte API-adgang.
|
||||
237
packages/web/src/content/docs/da/permissions.mdx
Normal file
237
packages/web/src/content/docs/da/permissions.mdx
Normal file
@@ -0,0 +1,237 @@
|
||||
---
|
||||
title: Tilladelser
|
||||
description: Kontroller, hvilke handlinger der kræver godkendelse for at køre.
|
||||
---
|
||||
|
||||
OpenCode bruger `permission`-konfigurationen til at bestemme, om en given handling skal køre automatisk, bede dig om eller blokeres.
|
||||
|
||||
Fra `v1.1.1` er den ældre `tools` booleske konfiguration forældet og er blevet flettet ind i `permission`. Den gamle `tools`-konfiguration er stadig understøttet for bagudkompatibilitet.
|
||||
|
||||
---
|
||||
|
||||
## Handlinger
|
||||
|
||||
Hver tilladelsesregel løses til en af:
|
||||
|
||||
- `"allow"` — køre uden godkendelse
|
||||
- `"ask"` — prompt om godkendelse
|
||||
- `"deny"` — bloker handlingen
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Du kan indstille tilladelser globalt (med `*`) og tilsidesætte specifikke værktøjer.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"*": "ask",
|
||||
"bash": "allow",
|
||||
"edit": "deny"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Du kan også indstille alle tilladelser på én gang:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": "allow"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Granulære regler (objektsyntaks)
|
||||
|
||||
For de fleste tilladelser kan du bruge et objekt til at anvende forskellige handlinger baseret på værktøjsinputtet.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git *": "allow",
|
||||
"npm *": "allow",
|
||||
"rm *": "deny",
|
||||
"grep *": "allow"
|
||||
},
|
||||
"edit": {
|
||||
"*": "deny",
|
||||
"packages/web/src/content/docs/*.mdx": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Regler evalueres efter mønstermatch, hvor den **sidste matchende regel vinder**. Et almindeligt mønster er at sætte catch-all `"*"` reglen først og mere specifikke regler efter den.
|
||||
|
||||
### Jokertegn
|
||||
|
||||
Tilladelsesmønstre bruger simpel jokertegn-matchning:
|
||||
|
||||
- `*` matcher nul eller flere af et hvilket som helst tegn
|
||||
- `?` matcher nøjagtigt ét tegn
|
||||
- Alle andre karakterer matcher bogstaveligt talt
|
||||
|
||||
### Udvidelse af hjemmemappe
|
||||
|
||||
Du kan bruge `~` eller `$HOME` i starten af et mønster til at referere til din hjemmemappe. Dette er især nyttigt for [`external_directory`](#external-directories) regler.
|
||||
|
||||
- `~/projects/*` -> `/Users/username/projects/*`
|
||||
- `$HOME/projects/*` -> `/Users/username/projects/*`
|
||||
- `~` -> `/Users/username`
|
||||
|
||||
### Eksterne mapper
|
||||
|
||||
Brug `external_directory` til at tillade værktøjsopkald, der berører stier uden for den arbejdsmappe, hvor OpenCode blev startet. Dette gælder for ethvert værktøj, der tager en sti som input (for eksempel `read`, `edit`, `list`, `glob`, `grep` og mange `bash` kommandoer).
|
||||
|
||||
Hjemmeudvidelse (som `~/...`) påvirker kun, hvordan et mønster skrives. Det gør ikke en ekstern sti til en del af det aktuelle arbejdsområde, så stier uden for arbejdsbiblioteket skal stadig være tilladt via `external_directory`.
|
||||
|
||||
For eksempel giver dette adgang til alt under `~/projects/personal/`:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"external_directory": {
|
||||
"~/projects/personal/**": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Enhver mappe, der er tilladt her, arver de samme standarder som det aktuelle arbejdsområde. Siden [`read` defaults to `allow`](#defaults), er læsninger også tilladt for poster under `external_directory`, medmindre de tilsidesættes. Tilføj eksplicitte regler, når et værktøj skal begrænses i disse stier, såsom blokering af redigeringer, mens læsninger bevares:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"external_directory": {
|
||||
"~/projects/personal/**": "allow"
|
||||
},
|
||||
"edit": {
|
||||
"~/projects/personal/**": "deny"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hold listen fokuseret på betroede stier, og lag ekstra tillad eller afvis regler efter behov for andre værktøjer (for eksempel `bash`).
|
||||
|
||||
---
|
||||
|
||||
## Tilgængelige tilladelser
|
||||
|
||||
OpenCode tilladelser indtastes efter værktøjsnavn plus et par sikkerhedsafskærmninger:
|
||||
|
||||
- `read` — læser en fil (matcher filstien)
|
||||
- `edit` — alle filændringer (dækker `edit`, `write`, `patch`, `multiedit`)
|
||||
- `glob` — fil-globing (matcher glob-mønsteret)
|
||||
- `grep` — indholdssøgning (matcher regex-mønsteret)
|
||||
- `list` — viser filer i en mappe (matcher mappestien)
|
||||
- `bash` — kører shell-kommandoer (matcher parsede kommandoer som `git status --porcelain`)
|
||||
- `task` — lancering af underagenter (matcher underagenttypen)
|
||||
- `skill` — indlæsning af en færdighed (matcher færdighedsnavnet)
|
||||
- `lsp` — kører LSP forespørgsler (i øjeblikket ikke-granulære)
|
||||
- `todoread`, `todowrite` — reading/updating todo-listen
|
||||
- `webfetch` — henter en URL (matcher URL)
|
||||
- `websearch`, `codesearch` — web/code søgning (matcher forespørgslen)
|
||||
- `external_directory` — udløses, når et værktøj berører stier uden for projektets arbejdsmappe
|
||||
- `doom_loop` — udløses, når det samme værktøjskald gentages 3 gange med identisk input
|
||||
|
||||
---
|
||||
|
||||
## Standarder
|
||||
|
||||
Hvis du ikke angiver noget, starter OpenCode fra tilladelige standardindstillinger:
|
||||
|
||||
- De fleste tilladelser er som standard `"allow"`.
|
||||
- `doom_loop` og `external_directory` er som standard `"ask"`.
|
||||
- `read` er `"allow"`, men `.env` filer nægtes som standard:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"permission": {
|
||||
"read": {
|
||||
"*": "allow",
|
||||
"*.env": "deny",
|
||||
"*.env.*": "deny",
|
||||
"*.env.example": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Hvad "Spørg" gør
|
||||
|
||||
Når OpenCode beder om godkendelse, tilbyder brugergrænsefladen tre resultater:
|
||||
|
||||
- `once` — godkend netop denne anmodning
|
||||
- `always` — godkend fremtidige anmodninger, der matcher de foreslåede mønstre (for resten af den nuværende OpenCode session)
|
||||
- `reject` — afvis anmodningen
|
||||
|
||||
Sættet af mønstre, som `always` ville godkende, leveres af værktøjet (f.eks. hvidlister bash-godkendelser typisk et sikkert kommandopræfiks som `git status*`).
|
||||
|
||||
---
|
||||
|
||||
## Agenter
|
||||
|
||||
Du kan tilsidesætte tilladelser pr. agent. Agenttilladelser flettes med den globale konfiguration, og agentregler har forrang. [Learn more](/docs/agents#permissions) om agenttilladelser.
|
||||
|
||||
:::note
|
||||
Se afsnittet [Granular Rules (Object Syntax)](#granular-rules-object-syntax) ovenfor for mere detaljerede mønstermatchningseksempler.
|
||||
:::
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Du kan også konfigurere agenttilladelser i Markdown:
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
description: Code review without edits
|
||||
mode: subagent
|
||||
permission:
|
||||
edit: deny
|
||||
bash: ask
|
||||
webfetch: deny
|
||||
---
|
||||
|
||||
Only analyze code and suggest changes.
|
||||
```
|
||||
|
||||
:::tip
|
||||
Brug mønstermatchning til kommandoer med argumenter. `"grep *"` tillader `grep pattern file.txt`, mens `"grep"` alene ville blokere det. Kommandoer som `git status` fungerer for standardadfærd, men kræver eksplicit tilladelse (som `"git status *"`), når argumenter sendes.
|
||||
:::
|
||||
385
packages/web/src/content/docs/da/plugins.mdx
Normal file
385
packages/web/src/content/docs/da/plugins.mdx
Normal file
@@ -0,0 +1,385 @@
|
||||
---
|
||||
title: Plugins
|
||||
description: Skriv dine egne plugins for at udvide OpenCode.
|
||||
---
|
||||
|
||||
Plugins giver dig mulighed for at udvide OpenCode ved at tilslutte sig forskellige begivenheder og tilpasse adfærd. Du kan oprette plugins for at tilføje nye funktioner, integrere med eksterne tjenester eller ændre OpenCodes standardadfærd.
|
||||
|
||||
For eksempler, tjek [plugins](/docs/ecosystem#plugins) oprettet af fællesskabet.
|
||||
|
||||
---
|
||||
|
||||
## Brug et plugin
|
||||
|
||||
Der er to måder at indlæse plugins på.
|
||||
|
||||
---
|
||||
|
||||
### Fra lokale filer
|
||||
|
||||
Placer JavaScript- eller TypeScript-filer i plugin-mappen.
|
||||
|
||||
- `.opencode/plugins/` - Plugins på projektniveau
|
||||
- `~/.config/opencode/plugins/` - Globale plugins
|
||||
|
||||
Filer i disse mapper indlæses automatisk ved opstart.
|
||||
|
||||
---
|
||||
|
||||
### Fra npm
|
||||
|
||||
Angiv npm-pakker i din konfigurationsfil.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
|
||||
}
|
||||
```
|
||||
|
||||
Både almindelige og omfangsrige npm-pakker understøttes.
|
||||
|
||||
Gennemse tilgængelige plugins i [ecosystem](/docs/ecosystem#plugins).
|
||||
|
||||
---
|
||||
|
||||
### Hvordan plugins installeres
|
||||
|
||||
**npm plugins** installeres automatisk ved hjælp af Bun ved opstart. Pakker og deres afhængigheder cachelagres i `~/.cache/opencode/node_modules/`.
|
||||
|
||||
**Lokale plugins** indlæses direkte fra plugin-biblioteket. For at bruge eksterne pakker skal du oprette en `package.json` i din konfigurationsmappe (se [Dependencies](#dependencies)), eller udgive pluginnet til npm og [add it to your config](/docs/config#plugins).
|
||||
|
||||
---
|
||||
|
||||
### Indlæs rækkefølge
|
||||
|
||||
Plugins indlæses fra alle kilder, og alle hooks kører i rækkefølge. Indlæsningsrækkefølgen er:
|
||||
|
||||
1. Global konfiguration (`~/.config/opencode/opencode.json`)
|
||||
2. Projektkonfiguration (`opencode.json`)
|
||||
3. Global plugin-mappe (`~/.config/opencode/plugins/`)
|
||||
4. Projekt plugin bibliotek (`.opencode/plugins/`)
|
||||
|
||||
Dublerede npm-pakker med samme navn og version indlæses én gang. Et lokalt plugin og et npm plugin med lignende navne indlæses dog hver for sig.
|
||||
|
||||
---
|
||||
|
||||
## Opret et plugin
|
||||
|
||||
Et plugin er et **JavaScript/TypeScript modul**, der eksporterer et eller flere plugin
|
||||
funktioner. Hver funktion modtager et kontekstobjekt og returnerer et hooks-objekt.
|
||||
|
||||
---
|
||||
|
||||
### Afhængigheder
|
||||
|
||||
Lokale plugins og brugerdefinerede værktøjer kan bruge eksterne npm-pakker. Tilføj en `package.json` til din konfigurationsmappe med de afhængigheder, du har brug for.
|
||||
|
||||
```json title=".opencode/package.json"
|
||||
{
|
||||
"dependencies": {
|
||||
"shescape": "^2.1.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
OpenCode kører `bun install` ved opstart for at installere disse. Dine plugins og værktøjer kan derefter importere dem.
|
||||
|
||||
```ts title=".opencode/plugins/my-plugin.ts"
|
||||
import { escape } from "shescape"
|
||||
|
||||
export const MyPlugin = async (ctx) => {
|
||||
return {
|
||||
"tool.execute.before": async (input, output) => {
|
||||
if (input.tool === "bash") {
|
||||
output.args.command = escape(output.args.command)
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Grundlæggende struktur
|
||||
|
||||
```js title=".opencode/plugins/example.js"
|
||||
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
|
||||
console.log("Plugin initialized!")
|
||||
|
||||
return {
|
||||
// Hook implementations go here
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Plugin-funktionen modtager:
|
||||
|
||||
- `project`: Den aktuelle projektinformation.
|
||||
- `directory`: Den aktuelle arbejdsmappe.
|
||||
- `worktree`: Git worktree-stien.
|
||||
- `client`: En opencode SDK klient til interaktion med AI.
|
||||
- `-: Buns [shell API](https://bun.com/docs/runtime/shell) til udførelse af kommandoer.
|
||||
|
||||
---
|
||||
|
||||
### TypeScript-understøttelse
|
||||
|
||||
For TypeScript-plugins kan du importere typer fra plugin-pakken:
|
||||
|
||||
```ts title="my-plugin.ts" {1}
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
|
||||
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
// Type-safe hook implementations
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Begivenheder
|
||||
|
||||
Plugins kan abonnere på begivenheder som vist nedenfor i afsnittet Eksempler. Her er en liste over de forskellige arrangementer.
|
||||
|
||||
#### Kommandohændelser
|
||||
|
||||
- `command.executed`
|
||||
|
||||
#### Filhændelser
|
||||
|
||||
- `file.edited`
|
||||
- `file.watcher.updated`
|
||||
|
||||
#### Installationshændelser
|
||||
|
||||
- `installation.updated`
|
||||
|
||||
#### LSP Begivenheder
|
||||
|
||||
- `lsp.client.diagnostics`
|
||||
- `lsp.updated`
|
||||
|
||||
#### Beskedhændelser
|
||||
|
||||
- `message.part.removed`
|
||||
- `message.part.updated`
|
||||
- `message.removed`
|
||||
- `message.updated`
|
||||
|
||||
#### Tilladelsesbegivenheder
|
||||
|
||||
- `permission.asked`
|
||||
- `permission.replied`
|
||||
|
||||
#### Serverhændelser
|
||||
|
||||
- `server.connected`
|
||||
|
||||
#### Sessionsbegivenheder
|
||||
|
||||
- `session.created`
|
||||
- `session.compacted`
|
||||
- `session.deleted`
|
||||
- `session.diff`
|
||||
- `session.error`
|
||||
- `session.idle`
|
||||
- `session.status`
|
||||
- `session.updated`
|
||||
|
||||
#### Todo-begivenheder
|
||||
|
||||
- `todo.updated`
|
||||
|
||||
#### Shell-begivenheder
|
||||
|
||||
- `shell.env`
|
||||
|
||||
#### Værktøjsbegivenheder
|
||||
|
||||
- `tool.execute.after`
|
||||
- `tool.execute.before`
|
||||
|
||||
#### TUI Begivenheder
|
||||
|
||||
- `tui.prompt.append`
|
||||
- `tui.command.execute`
|
||||
- `tui.toast.show`
|
||||
|
||||
---
|
||||
|
||||
## Eksempler
|
||||
|
||||
Her er nogle eksempler på plugins, du kan bruge til at udvide opencode.
|
||||
|
||||
---
|
||||
|
||||
### Send meddelelser
|
||||
|
||||
Send meddelelser, når visse hændelser indtræffer:
|
||||
|
||||
```js title=".opencode/plugins/notification.js"
|
||||
export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
event: async ({ event }) => {
|
||||
// Send notification on session completion
|
||||
if (event.type === "session.idle") {
|
||||
await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vi bruger `osascript` til at køre AppleScript på macOS. Her bruger vi det til at sende notifikationer.
|
||||
|
||||
:::note
|
||||
Hvis du bruger OpenCode desktop-appen, kan den sende systemmeddelelser automatisk, når et svar er klar, eller når en session fejler.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
###.env-beskyttelse
|
||||
|
||||
Undgå opencode i at læse `.env` filer:
|
||||
|
||||
```javascript title=".opencode/plugins/env-protection.js"
|
||||
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
"tool.execute.before": async (input, output) => {
|
||||
if (input.tool === "read" && output.args.filePath.includes(".env")) {
|
||||
throw new Error("Do not read .env files")
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Injicer miljøvariabler
|
||||
|
||||
Injicer miljøvariabler i al shell-udførelse (AI-værktøjer og brugerterminaler):
|
||||
|
||||
```javascript title=".opencode/plugins/inject-env.js"
|
||||
export const InjectEnvPlugin = async () => {
|
||||
return {
|
||||
"shell.env": async (input, output) => {
|
||||
output.env.MY_API_KEY = "secret"
|
||||
output.env.PROJECT_ROOT = input.cwd
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Brugerdefinerede værktøjer
|
||||
|
||||
Plugins kan også tilføje brugerdefinerede værktøjer til opencode:
|
||||
|
||||
```ts title=".opencode/plugins/custom-tools.ts"
|
||||
import { type Plugin, tool } from "@opencode-ai/plugin"
|
||||
|
||||
export const CustomToolsPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
tool: {
|
||||
mytool: tool({
|
||||
description: "This is a custom tool",
|
||||
args: {
|
||||
foo: tool.schema.string(),
|
||||
},
|
||||
async execute(args, context) {
|
||||
const { directory, worktree } = context
|
||||
return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
|
||||
},
|
||||
}),
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`tool`-hjælperen opretter et brugerdefineret værktøj, som opencode kan kalde. Det tager en Zod-skemafunktion og returnerer en værktøjsdefinition med:
|
||||
|
||||
- `description`: Hvad værktøjet gør
|
||||
- `args`: Zod-skema for værktøjets argumenter
|
||||
- `execute`: Funktion, der kører, når værktøjet kaldes
|
||||
|
||||
Dine tilpassede værktøjer vil være tilgængelige for opencode sammen med indbyggede værktøjer.
|
||||
|
||||
---
|
||||
|
||||
### Logning
|
||||
|
||||
Brug `client.app.log()` i stedet for `console.log` til struktureret logning:
|
||||
|
||||
```ts title=".opencode/plugins/my-plugin.ts"
|
||||
export const MyPlugin = async ({ client }) => {
|
||||
await client.app.log({
|
||||
body: {
|
||||
service: "my-plugin",
|
||||
level: "info",
|
||||
message: "Plugin initialized",
|
||||
extra: { foo: "bar" },
|
||||
},
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
Niveauer: `debug`, `info`, `warn`, `error`. Se [SDK documentation](https://opencode.ai/docs/sdk) for detaljer.
|
||||
|
||||
---
|
||||
|
||||
### Komprimeringskroge
|
||||
|
||||
Tilpas konteksten inkluderet, når en session komprimeres:
|
||||
|
||||
```ts title=".opencode/plugins/compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
|
||||
export const CompactionPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
"experimental.session.compacting": async (input, output) => {
|
||||
// Inject additional context into the compaction prompt
|
||||
output.context.push(`
|
||||
## Custom Context
|
||||
|
||||
Include any state that should persist across compaction:
|
||||
- Current task status
|
||||
- Important decisions made
|
||||
- Files being actively worked on
|
||||
`)
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`experimental.session.compacting` krogen affyres, før LLM genererer en fortsættelsesoversigt. Brug den til at injicere domænespecifik kontekst, som standardkomprimeringsprompten ville gå glip af.
|
||||
|
||||
Du kan også erstatte komprimeringsprompten helt ved at indstille `output.prompt`:
|
||||
|
||||
```ts title=".opencode/plugins/custom-compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
|
||||
export const CustomCompactionPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
"experimental.session.compacting": async (input, output) => {
|
||||
// Replace the entire compaction prompt
|
||||
output.prompt = `
|
||||
You are generating a continuation prompt for a multi-agent swarm session.
|
||||
|
||||
Summarize:
|
||||
1. The current task and its status
|
||||
2. Which files are being modified and by whom
|
||||
3. Any blockers or dependencies between agents
|
||||
4. The next steps to complete the work
|
||||
|
||||
Format as a structured prompt that a new agent can use to resume work.
|
||||
`
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Når `output.prompt` er indstillet, erstatter den standardkompressionsprompten fuldstændigt. `output.context`-arrayet ignoreres i dette tilfælde.
|
||||
1889
packages/web/src/content/docs/da/providers.mdx
Normal file
1889
packages/web/src/content/docs/da/providers.mdx
Normal file
File diff suppressed because it is too large
Load Diff
180
packages/web/src/content/docs/da/rules.mdx
Normal file
180
packages/web/src/content/docs/da/rules.mdx
Normal file
@@ -0,0 +1,180 @@
|
||||
---
|
||||
title: Regler
|
||||
description: Set custom instructions for opencode.
|
||||
---
|
||||
|
||||
Du kan gi tilpassede instruksjoner for å OpenCode ved å opprette en `AGENTS.md`-fil. Dette ligner på Cursors regler. Den inneholder instruksjoner som vil bli inkludert i LLMs kontekst for å tilpasse oppførselen til ditt spesifikke prosjekt.
|
||||
|
||||
---
|
||||
|
||||
## Initialiser
|
||||
|
||||
For å lage en ny `AGENTS.md` fil, kan du kjøre kommandoen `/init` i opencode.
|
||||
|
||||
:::tupp
|
||||
Du bør overgi prosjektets `AGENTS.md`-fil til Git.
|
||||
:::
|
||||
|
||||
Dette vil skanne prosjektet og alt dets innhold for å forstå hva prosjektet handler om og generere en `AGENTS.md`-fil med det. Dette hjelper opencode å navigere i prosjektet bedre.
|
||||
|
||||
Hvis du har en eksisterende `AGENTS.md`-fil, vil denne prøve å legge til den.
|
||||
|
||||
---
|
||||
|
||||
## Eksempel
|
||||
|
||||
Du kan også bare lage denne filen manuelt. Her er et eksempel på noen ting du kan legge inn i en `AGENTS.md`-fil.
|
||||
|
||||
```markdown title="AGENTS.md"
|
||||
# SST v3 Monorepo Project
|
||||
|
||||
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
|
||||
|
||||
## Project Structure
|
||||
|
||||
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
|
||||
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
|
||||
- `sst.config.ts` - Main SST configuration with dynamic imports
|
||||
|
||||
## Code Standards
|
||||
|
||||
- Use TypeScript with strict mode enabled
|
||||
- Shared code goes in `packages/core/` with proper exports configuration
|
||||
- Functions go in `packages/functions/`
|
||||
- Infrastructure should be split into logical files in `infra/`
|
||||
|
||||
## Monorepo Conventions
|
||||
|
||||
- Import shared modules using workspace names: `@my-app/core/example`
|
||||
```
|
||||
|
||||
Vi legger til prosjektspesifikke instruksjoner her, og dette vil bli delt på tvers av teamet ditt.
|
||||
|
||||
---
|
||||
|
||||
## Typer
|
||||
|
||||
opencode støtter også lesing av `AGENTS.md`-filen fra flere steder. Og dette tjener forskjellige formål.
|
||||
|
||||
### Prosjekt
|
||||
|
||||
Plasser en `AGENTS.md` i prosjektroten for prosjektspesifikke regler. Disse gjelder kun når du arbeider i denne katalogen eller dens underkataloger.
|
||||
|
||||
### Globalt
|
||||
|
||||
Du kan også ha globale regler i en `~/.config/opencode/AGENTS.md`-fil. Dette blir brukt på alle opencode-økter.
|
||||
|
||||
Siden dette ikke er forpliktet til Git eller delt med teamet ditt, anbefaler vi å bruke dette til å spesifisere eventuelle personlige regler som LLM bør følge.
|
||||
|
||||
### Claude-kodekompatibilitet
|
||||
|
||||
For brukere som migrerer fra Claude Code, støtter OpenCode Claude Codes filkonvensjoner som fallbacks:
|
||||
|
||||
- **Prosjektregler**: `CLAUDE.md` i prosjektkatalogen din (brukes hvis ingen `AGENTS.md` eksisterer)
|
||||
- **Globale regler**: `~/.claude/CLAUDE.md` (brukes hvis ingen `~/.config/opencode/AGENTS.md` eksisterer)
|
||||
- **Skills**: `~/.claude/skills/` — se [Agent Skills](/docs/skills/) for detaljer
|
||||
|
||||
For å deaktivere Claude Code-kompatibilitet, sett en av disse miljøvariablene:
|
||||
|
||||
```bash
|
||||
export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
|
||||
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
|
||||
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Forrang
|
||||
|
||||
Når opencode starter, ser den etter regelfiler i denne rekkefølgen:
|
||||
|
||||
1. **Lokale filer** ved å gå opp fra gjeldende katalog (`AGENTS.md`, `CLAUDE.md`)
|
||||
2. **Global fil** på `~/.config/opencode/AGENTS.md`
|
||||
3. **Claude Code-fil** på `~/.claude/CLAUDE.md` (med mindre de er deaktivert)
|
||||
|
||||
Den første matchende filen vinner i hver kategori. For eksempel, hvis du har både `AGENTS.md` og `CLAUDE.md`, brukes bare `AGENTS.md`. På samme måte har `~/.config/opencode/AGENTS.md` forrang over `~/.claude/CLAUDE.md`.
|
||||
|
||||
---
|
||||
|
||||
## Egendefinerte instruksjoner
|
||||
|
||||
Du kan spesifisere egendefinerte instruksjonsfiler i din `opencode.json` eller den globale `~/.config/opencode/opencode.json`. Dette lar deg og teamet ditt gjenbruke eksisterende regler i stedet for å måtte duplisere dem til AGENTS.md.
|
||||
|
||||
Eksempel:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
|
||||
}
|
||||
```
|
||||
|
||||
Du kan også bruke eksterne URL-er for å laste instruksjoner fra nettet.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
|
||||
}
|
||||
```
|
||||
|
||||
Fjerninstruksjoner hentes med 5 sekunders tidsavbrudd.
|
||||
|
||||
Alle instruksjonsfilene er kombinert med `AGENTS.md`-filene dine.
|
||||
|
||||
---
|
||||
|
||||
## Refererer til eksterne filer
|
||||
|
||||
Selv om opencode ikke automatisk analyserer filreferanser i `AGENTS.md`, kan du oppnå lignende funksjonalitet på to måter:
|
||||
|
||||
### Bruker opencode.json
|
||||
|
||||
Den anbefalte tilnærmingen er å bruke feltet `instructions` i `opencode.json`:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
|
||||
}
|
||||
```
|
||||
|
||||
### Manuelle instruksjoner i AGENTS.md
|
||||
|
||||
Du kan lære opencode å lese eksterne filer ved å gi eksplisitte instruksjoner i `AGENTS.md`. Her er et praktisk eksempel:
|
||||
|
||||
```markdown title="AGENTS.md"
|
||||
# TypeScript Project Rules
|
||||
|
||||
## External File Loading
|
||||
|
||||
CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
|
||||
|
||||
Instructions:
|
||||
|
||||
- Do NOT preemptively load all references - use lazy loading based on actual need
|
||||
- When loaded, treat content as mandatory instructions that override defaults
|
||||
- Follow references recursively when needed
|
||||
|
||||
## Development Guidelines
|
||||
|
||||
For TypeScript code style and best practices: @docs/typescript-guidelines.md
|
||||
For React component architecture and hooks patterns: @docs/react-patterns.md
|
||||
For REST API design and error handling: @docs/api-standards.md
|
||||
For testing strategies and coverage requirements: @test/testing-guidelines.md
|
||||
|
||||
## General Guidelines
|
||||
|
||||
Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
|
||||
```
|
||||
|
||||
Denne tilnærmingen lar deg:
|
||||
|
||||
- Lag modulære, gjenbrukbare regelfiler
|
||||
- Del regler på tvers av prosjekter via symbolkoblinger eller git-undermoduler
|
||||
- Hold AGENTS.md kortfattet mens du refererer til detaljerte retningslinjer
|
||||
- Sørg for at opencode laster filer kun når det er nødvendig for den spesifikke oppgaven
|
||||
|
||||
:::tupp
|
||||
For monorepos eller prosjekter med delte standarder er bruk av `opencode.json` med glob-mønstre (som `packages/*/AGENTS.md`) mer vedlikeholdbart enn manuelle instruksjoner.
|
||||
:::
|
||||
391
packages/web/src/content/docs/da/sdk.mdx
Normal file
391
packages/web/src/content/docs/da/sdk.mdx
Normal file
@@ -0,0 +1,391 @@
|
||||
---
|
||||
title: SDK
|
||||
description: Typesikker JS-klient for åpen kodeserver.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
|
||||
|
||||
Åpenkoden JS/TS SDK gir en typesikker klient for samhandling med serveren.
|
||||
Bruk den til å bygge integrasjoner og kontrollere opencode programmatisk.
|
||||
|
||||
[Finn ut mer](/docs/server) om hvordan serveren fungerer. For eksempler, sjekk ut [prosjektene](/docs/ecosystem#projects) bygget av fellesskapet.
|
||||
|
||||
---
|
||||
|
||||
## Installer
|
||||
|
||||
Installer SDK fra npm:
|
||||
|
||||
```bash
|
||||
npm install @opencode-ai/sdk
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Opprett klient
|
||||
|
||||
Opprett en forekomst av opencode:
|
||||
|
||||
```javascript
|
||||
import { createOpencode } from "@opencode-ai/sdk"
|
||||
|
||||
const { client } = await createOpencode()
|
||||
```
|
||||
|
||||
Dette starter både en server og en klient
|
||||
|
||||
#### Alternativer
|
||||
|
||||
| Alternativ | Skriv | Beskrivelse | Standard |
|
||||
| ---------- | ------------- | -------------------------------- | ----------- |
|
||||
| `hostname` | `string` | Server vertsnavn | `127.0.0.1` |
|
||||
| `port` | `number` | Serverport | `4096` |
|
||||
| `signal` | `AbortSignal` | Avbryt signal for kansellering | `undefined` |
|
||||
| `timeout` | `number` | Tidsavbrudd i ms for serverstart | `5000` |
|
||||
| `config` | `Config` | Konfigurasjonsobjekt | `{}` |
|
||||
|
||||
---
|
||||
|
||||
## Konfig
|
||||
|
||||
Du kan sende et konfigurasjonsobjekt for å tilpasse virkemåten. Forekomsten henter fortsatt din `opencode.json`, men du kan overstyre eller legge til konfigurasjon inline:
|
||||
|
||||
```javascript
|
||||
import { createOpencode } from "@opencode-ai/sdk"
|
||||
|
||||
const opencode = await createOpencode({
|
||||
hostname: "127.0.0.1",
|
||||
port: 4096,
|
||||
config: {
|
||||
model: "anthropic/claude-3-5-sonnet-20241022",
|
||||
},
|
||||
})
|
||||
|
||||
console.log(`Server running at ${opencode.server.url}`)
|
||||
|
||||
opencode.server.close()
|
||||
```
|
||||
|
||||
## Kun klient
|
||||
|
||||
Hvis du allerede har en kjørende forekomst av opencode, kan du opprette en klientforekomst for å koble til den:
|
||||
|
||||
```javascript
|
||||
import { createOpencodeClient } from "@opencode-ai/sdk"
|
||||
|
||||
const client = createOpencodeClient({
|
||||
baseUrl: "http://localhost:4096",
|
||||
})
|
||||
```
|
||||
|
||||
#### Alternativer
|
||||
|
||||
| Alternativ | Skriv inn | Beskrivelse | Standard |
|
||||
| --------------- | ---------- | ---------------------------------- | ----------------------- |
|
||||
| `baseUrl` | `string` | URL av serveren | `http://localhost:4096` |
|
||||
| `fetch` | `function` | Egendefinert hentingimplementering | `globalThis.fetch` |
|
||||
| `parseAs` | `string` | Svarparsingmetode | `auto` |
|
||||
| `responseStyle` | `string` | Returstil: `data` eller `fields` | `fields` |
|
||||
| `throwOnError` | `boolean` | Kast feil i stedet for retur | `false` |
|
||||
|
||||
---
|
||||
|
||||
## Typer
|
||||
|
||||
SDK inkluderer TypeScript-definisjoner for alle API-typer. Importer dem direkte:
|
||||
|
||||
```typescript
|
||||
import type { Session, Message, Part } from "@opencode-ai/sdk"
|
||||
```
|
||||
|
||||
Alle typer er generert fra serverens OpenAPI-spesifikasjon og tilgjengelig i <a href={typesUrl}>types-filen</a>.
|
||||
|
||||
---
|
||||
|
||||
## Feil
|
||||
|
||||
SDK kan gi feil som du kan fange opp og håndtere:
|
||||
|
||||
```typescript
|
||||
try {
|
||||
await client.session.get({ path: { id: "invalid-id" } })
|
||||
} catch (error) {
|
||||
console.error("Failed to get session:", (error as Error).message)
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## APIer
|
||||
|
||||
SDK avslører alle server-APIer gjennom en typesikker klient.
|
||||
|
||||
---
|
||||
|
||||
### Globalt
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ----------------- | ---------------------------- | ------------------------------------ |
|
||||
| `global.health()` | Sjekk serverhelse og versjon | `{ healthy: true, version: string }` |
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
const health = await client.global.health()
|
||||
console.log(health.data.version)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### App
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| -------------- | -------------------------------- | ------------------------------------------- |
|
||||
| `app.log()` | Skriv en loggoppføring | `boolean` |
|
||||
| `app.agents()` | Liste alle tilgjengelige agenter | <a href={typesUrl}><code>Agent[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
// Write a log entry
|
||||
await client.app.log({
|
||||
body: {
|
||||
service: "my-app",
|
||||
level: "info",
|
||||
message: "Operation completed",
|
||||
},
|
||||
})
|
||||
|
||||
// List available agents
|
||||
const agents = await client.app.agents()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Prosjekt
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ------------------- | -------------------------- | ---------------------------------------------- |
|
||||
| `project.list()` | Liste over alle prosjekter | <a href={typesUrl}><code>Prosjekt[]</code></a> |
|
||||
| `project.current()` | Få nåværende prosjekt | <a href={typesUrl}><code>Prosjekt</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
// List all projects
|
||||
const projects = await client.project.list()
|
||||
|
||||
// Get current project
|
||||
const currentProject = await client.project.current()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Sti
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ------------ | ----------------- | ---------------------------------------- |
|
||||
| `path.get()` | Få gjeldende bane | <a href={typesUrl}><code>Path</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
// Get current path information
|
||||
const pathInfo = await client.path.get()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Konfig
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| -------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| `config.get()` | Få konfigurasjonsinformasjon | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `config.providers()` | Liste leverandører og standardmodeller | `{ providers: `<a href={typesUrl}><code>Tilbyder[]</code></a>`, default: { [key: string]: string } }` |
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
const config = await client.config.get()
|
||||
|
||||
const { providers, default: defaults } = await client.config.providers()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### økter
|
||||
|
||||
| Metode | Beskrivelse | Merknader |
|
||||
| ---------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `session.list()` | Liste økter | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `session.get({ path })` | Få økt | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.children({ path })` | Liste over barneøkter | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `session.create({ body })` | Opprett økt | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.delete({ path })` | Slett økt | Returnerer `boolean` |
|
||||
| `session.update({ path, body })` | Oppdater øktegenskaper | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.init({ path, body })` | Analyser appen og lag `AGENTS.md` | Returnerer `boolean` |
|
||||
| `session.abort({ path })` | Avbryt en løpeøkt | Returnerer `boolean` |
|
||||
| `session.share({ path })` | Del økten | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unshare({ path })` | Slutt å dele økten | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.summarize({ path, body })` | Oppsummer økten | Returnerer `boolean` |
|
||||
| `session.messages({ path })` | Liste meldinger i en økt | Returnerer `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Del[]</code></a>`}[]` |
|
||||
| `session.message({ path })` | Få meldingsdetaljer | Returnerer `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Del[]</code></a>`}` |
|
||||
| `session.prompt({ path, body })` | Send melding | `body.noReply: true` returnerer UserMessage (kun kontekst). Standard returnerer <a href={typesUrl}><code>AssistantMessage</code></a> med AI svar |
|
||||
| `session.command({ path, body })` | Send kommando til økt | Returnerer `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Del[]</code></a>`}` |
|
||||
| `session.shell({ path, body })` | Kjør en shell-kommando | Returnerer <a href={typesUrl}><code>AssistantMessage</code></a> |
|
||||
| `session.revert({ path, body })` | Tilbakestill en melding | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unrevert({ path })` | Gjenopprett tilbakestilte meldinger | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `postSessionByIdPermissionsByPermissionId({ path, body })` | Svar på en tillatelsesforespørsel | Returnerer `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
// Create and manage sessions
|
||||
const session = await client.session.create({
|
||||
body: { title: "My session" },
|
||||
})
|
||||
|
||||
const sessions = await client.session.list()
|
||||
|
||||
// Send a prompt message
|
||||
const result = await client.session.prompt({
|
||||
path: { id: session.id },
|
||||
body: {
|
||||
model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
|
||||
parts: [{ type: "text", text: "Hello!" }],
|
||||
},
|
||||
})
|
||||
|
||||
// Inject context without triggering AI response (useful for plugins)
|
||||
await client.session.prompt({
|
||||
path: { id: session.id },
|
||||
body: {
|
||||
noReply: true,
|
||||
parts: [{ type: "text", text: "You are a helpful assistant." }],
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Filer
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| `find.text({ query })` | Søk etter tekst i filer | En rekke matchobjekter med `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `find.files({ query })` | Finn filer og kataloger etter navn | `string[]` (baner) |
|
||||
| `find.symbols({ query })` | Finn arbeidsområdesymboler | <a href={typesUrl}><code>Symbol[]</code></a> |
|
||||
| `file.read({ query })` | Les en fil | `{ type: "raw" \| "patch", content: string }` |
|
||||
| `file.status({ query? })` | Få status for sporede filer | <a href={typesUrl}><code>Fil[]</code></a> |
|
||||
|
||||
`find.files` støtter noen få valgfrie søkefelt:
|
||||
|
||||
- `type`: `"file"` eller `"directory"`
|
||||
- `directory`: overstyr prosjektroten for søket
|
||||
- `limit`: maksimalt antall resultater (1–200)
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
// Search and read files
|
||||
const textResults = await client.find.text({
|
||||
query: { pattern: "function.*opencode" },
|
||||
})
|
||||
|
||||
const files = await client.find.files({
|
||||
query: { query: "*.ts", type: "file" },
|
||||
})
|
||||
|
||||
const directories = await client.find.files({
|
||||
query: { query: "packages", type: "directory", limit: 20 },
|
||||
})
|
||||
|
||||
const content = await client.file.read({
|
||||
query: { path: "src/index.ts" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ------------------------------ | ---------------------------- | --------- |
|
||||
| `tui.appendPrompt({ body })` | Legg til tekst i ledeteksten | `boolean` |
|
||||
| `tui.openHelp()` | Åpne hjelpedialogen | `boolean` |
|
||||
| `tui.openSessions()` | Åpne øktvelgeren | `boolean` |
|
||||
| `tui.openThemes()` | Åpne temavelgeren | `boolean` |
|
||||
| `tui.openModels()` | Åpne modellvelgeren | `boolean` |
|
||||
| `tui.submitPrompt()` | Send inn gjeldende ledetekst | `boolean` |
|
||||
| `tui.clearPrompt()` | Fjern ledeteksten | `boolean` |
|
||||
| `tui.executeCommand({ body })` | Utfør en kommando | `boolean` |
|
||||
| `tui.showToast({ body })` | Vis toastvarsel | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
// Control TUI interface
|
||||
await client.tui.appendPrompt({
|
||||
body: { text: "Add this to prompt" },
|
||||
})
|
||||
|
||||
await client.tui.showToast({
|
||||
body: { message: "Task completed", variant: "success" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Auth
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ------------------- | ------------------------------- | --------- |
|
||||
| `auth.set({ ... })` | Angi autentiseringslegitimasjon | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
await client.auth.set({
|
||||
path: { id: "anthropic" },
|
||||
body: { type: "api", key: "your-api-key" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Hendelser
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ------------------- | ------------------------------ | ------------------------------ |
|
||||
| `event.subscribe()` | Server-sendte hendelser stream | Server-sendte hendelser stream |
|
||||
|
||||
---
|
||||
|
||||
#### Eksempler
|
||||
|
||||
```javascript
|
||||
// Listen to real-time events
|
||||
const events = await client.event.subscribe()
|
||||
for await (const event of events.stream) {
|
||||
console.log("Event:", event.type, event.properties)
|
||||
}
|
||||
```
|
||||
287
packages/web/src/content/docs/da/server.mdx
Normal file
287
packages/web/src/content/docs/da/server.mdx
Normal file
@@ -0,0 +1,287 @@
|
||||
---
|
||||
title: Server
|
||||
description: Samhandle med opencode-server over HTTP.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
|
||||
|
||||
Kommandoen `opencode serve` kjører en hodeløs HTTP-server som avslører et OpenAPI-endepunkt som en opencode-klient kan bruke.
|
||||
|
||||
---
|
||||
|
||||
### Bruk
|
||||
|
||||
```bash
|
||||
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
|
||||
```
|
||||
|
||||
#### Alternativer
|
||||
|
||||
| Flagg | Beskrivelse | Standard |
|
||||
| --------------- | ---------------------------------------------- | ---------------- |
|
||||
| `--port` | Port å lytte på | `4096` |
|
||||
| `--hostname` | Vertsnavn å lytte på | `127.0.0.1` |
|
||||
| `--mdns` | Aktiver mDNS-oppdagelse | `false` |
|
||||
| `--mdns-domain` | Egendefinert domenenavn for mDNS-tjeneste | `opencode.local` |
|
||||
| `--cors` | Ytterligere nettleseropprinnelse for å tillate | `[]` |
|
||||
|
||||
`--cors` kan passeres flere ganger:
|
||||
|
||||
```bash
|
||||
opencode serve --cors http://localhost:5173 --cors https://app.example.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Autentisering
|
||||
|
||||
Sett `OPENCODE_SERVER_PASSWORD` for å beskytte serveren med HTTP grunnleggende autentisering. Brukernavnet er standard til `opencode`, eller sett `OPENCODE_SERVER_USERNAME` for å overstyre det. Dette gjelder både `opencode serve` og `opencode web`.
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=your-password opencode serve
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Slik fungerer det
|
||||
|
||||
Når du kjører `opencode` starter den en TUI og en server. Der TUI er
|
||||
klient som snakker med serveren. Serveren viser en OpenAPI 3.1-spesifikasjon
|
||||
endepunkt. Dette endepunktet brukes også til å generere en [SDK](/docs/sdk).
|
||||
|
||||
:::tupp
|
||||
Bruk opencode-serveren til å samhandle med opencode programmatisk.
|
||||
:::
|
||||
|
||||
Denne arkitekturen lar opencode støtte flere klienter og lar deg samhandle med opencode programmatisk.
|
||||
|
||||
Du kan kjøre `opencode serve` for å starte en frittstående server. Hvis du har
|
||||
opencode TUI kjører, vil `opencode serve` starte en ny server.
|
||||
|
||||
---
|
||||
|
||||
#### Koble til en eksisterende server
|
||||
|
||||
Når du starter TUI, tildeler den tilfeldig en port og vertsnavn. Du kan i stedet sende inn `--hostname` og `--port` [flagg](/docs/cli). Bruk deretter denne til å koble til serveren.
|
||||
|
||||
[`/tui`](#tui) endepunktet kan brukes til å kjøre TUI gjennom serveren. Du kan for eksempel forhåndsutfylle eller kjøre en forespørsel. Dette oppsettet brukes av OpenCode [IDE](/docs/ide) plugins.
|
||||
|
||||
---
|
||||
|
||||
## Spes
|
||||
|
||||
Serveren publiserer en OpenAPI 3.1-spesifikasjon som kan vises på:
|
||||
|
||||
```
|
||||
http://<hostname>:<port>/doc
|
||||
```
|
||||
|
||||
For eksempel `http://localhost:4096/doc`. Bruk spesifikasjonen til å generere klienter eller inspisere forespørsels- og svartyper. Eller se den i en Swagger-utforsker.
|
||||
|
||||
---
|
||||
|
||||
## APIer
|
||||
|
||||
OpenCode-serveren viser følgende APIer.
|
||||
|
||||
---
|
||||
|
||||
### Globalt
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ---------------- | -------------------------------- | ------------------------------------ |
|
||||
| `GET` | `/global/health` | Få serverhelse og versjon | `{ healthy: true, version: string }` |
|
||||
| `GET` | `/global/event` | Få globale hendelser (SSE strøm) | Eventstrøm |
|
||||
|
||||
---
|
||||
|
||||
### Prosjekt
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------ | --------------------------- | ---------------------------------------------- |
|
||||
| `GET` | `/project` | Liste over alle prosjekter | <a href={typesUrl}><code>Prosjekt[]</code></a> |
|
||||
| `GET` | `/project/current` | Få det nåværende prosjektet | <a href={typesUrl}><code>Prosjekt</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Bane og VCS
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------- | ---------------------------------- | ------------------------------------------- |
|
||||
| `GET` | `/path` | Få gjeldende bane | <a href={typesUrl}><code>Path</code></a> |
|
||||
| `GET` | `/vcs` | Få VCS info for gjeldende prosjekt | <a href={typesUrl}><code>VcsInfo</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Forekomst
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------- | ------------------------ | --------- |
|
||||
| `POST` | `/instance/dispose` | Kast gjeldende forekomst | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Konfig
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------- | ------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/config` | Få konfigurasjonsinformasjon | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `PATCH` | `/config` | Oppdater konfigurasjon | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `GET` | `/config/providers` | Liste leverandører og standardmodeller | `{ providers: `<a href={typesUrl}>Tilbyder[]</a>`, default: { [key: string]: string } }` |
|
||||
|
||||
---
|
||||
|
||||
### Leverandør
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | -------------------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `GET` | `/provider` | Liste alle leverandører | `{ all: `<a href={typesUrl}>Tilbyder[]</a>`, default: {...}, connected: string[] }` |
|
||||
| `GET` | `/provider/auth` | Få leverandørautentiseringsmetoder | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
|
||||
| `POST` | `/provider/{id}/oauth/authorize` | Autoriser en leverandør ved å bruke OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
|
||||
| `POST` | `/provider/{id}/oauth/callback` | Håndtere OAuth-tilbakeringing for en leverandør | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### økter
|
||||
|
||||
| Metode | Sti | Beskrivelse | Merknader |
|
||||
| -------- | ---------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/session` | Liste alle økter | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `POST` | `/session` | Opprett en ny økt | body: `{ parentID?, title? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/status` | Få øktstatus for alle økter | Returnerer `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
|
||||
| `GET` | `/session/:id` | Få øktdetaljer | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id` | Slett en økt og alle dens data | Returnerer `boolean` |
|
||||
| `PATCH` | `/session/:id` | Oppdater øktegenskaper | body: `{ title? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/children` | Få en økts barneøkter | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `GET` | `/session/:id/todo` | Få gjøremålslisten for en økt | Returnerer <a href={typesUrl}><code>Todo[]</code></a> |
|
||||
| `POST` | `/session/:id/init` | Analyser appen og lag `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returnerer `boolean` |
|
||||
| `POST` | `/session/:id/fork` | Fork en eksisterende økt ved en melding | body: `{ messageID? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `POST` | `/session/:id/abort` | Avbryt en løpeøkt | Returnerer `boolean` |
|
||||
| `POST` | `/session/:id/share` | Del en økt | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id/share` | Slutt å dele en økt | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/diff` | Få diff for denne økten | spørring: `messageID?`, returnerer <a href={typesUrl}><code>FileDiff[]</code></a> |
|
||||
| `POST` | `/session/:id/summarize` | Oppsummer økten | body: `{ providerID, modelID }`, returnerer `boolean` |
|
||||
| `POST` | `/session/:id/revert` | Tilbakestill en melding | body: `{ messageID, partID? }`, returnerer `boolean` |
|
||||
| `POST` | `/session/:id/unrevert` | Gjenopprett alle tilbakestilte meldinger | Returnerer `boolean` |
|
||||
| `POST` | `/session/:id/permissions/:permissionID` | Svar på en tillatelsesforespørsel | body: `{ response, remember? }`, returnerer `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Meldinger
|
||||
|
||||
| Metode | Sti | Beskrivelse | Merknader |
|
||||
| ------ | --------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `GET` | `/session/:id/message` | Liste meldinger i en økt | spørring: `limit?`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
|
||||
| `POST` | `/session/:id/message` | Send en melding og vent på svar | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `GET` | `/session/:id/message/:messageID` | Få meldingsdetaljer | Returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Del[]</a>`}` |
|
||||
| `POST` | `/session/:id/prompt_async` | Send en melding asynkront (ingen vent) | body: samme som `/session/:id/message`, returnerer `204 No Content` |
|
||||
| `POST` | `/session/:id/command` | Utfør en skråstrek-kommando | body: `{ messageID?, agent?, model?, command, arguments }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `POST` | `/session/:id/shell` | Kjør en shell-kommando | body: `{ agent, model?, command }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
|
||||
---
|
||||
|
||||
### Kommandoer
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ---------- | --------------------- | ---------------------------------------------- |
|
||||
| `GET` | `/command` | Liste alle kommandoer | <a href={typesUrl}><code>Kommando[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Filer
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| `GET` | `/find?pattern=<pat>` | Søk etter tekst i filer | En rekke matchobjekter med `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `GET` | `/find/file?query=<q>` | Finn filer og kataloger etter navn | `string[]` (baner) |
|
||||
| `GET` | `/find/symbol?query=<q>` | Finn arbeidsområdesymboler | <a href={typesUrl}><code>Symbol[]</code></a> |
|
||||
| `GET` | `/file?path=<path>` | Liste filer og kataloger | <a href={typesUrl}><code>FilNode[]</code></a> |
|
||||
| `GET` | `/file/content?path=<p>` | Les en fil | <a href={typesUrl}><code>Filinnhold</code></a> |
|
||||
| `GET` | `/file/status` | Få status for sporede filer | <a href={typesUrl}><code>Fil[]</code></a> |
|
||||
|
||||
#### `/find/file` spørringsparametere
|
||||
|
||||
- `query` (obligatorisk) - søkestreng (uklar samsvar)
|
||||
- `type` (valgfritt) - begrense resultatene til `"file"` eller `"directory"`
|
||||
- `directory` (valgfritt) — overstyr prosjektroten for søket
|
||||
- `limit` (valgfritt) - maks. resultater (1–200)
|
||||
- `dirs` (valgfritt) - eldre flagg (`"false"` returnerer kun filer)
|
||||
|
||||
---
|
||||
|
||||
### Verktøy (eksperimentelt)
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------------------------------- | -------------------------------------------- | -------------------------------------------- |
|
||||
| `GET` | `/experimental/tool/ids` | Vis alle verktøy-ID-er | <a href={typesUrl}><code>ToolIDs</code></a> |
|
||||
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | List verktøy med JSON-skjemaer for en modell | <a href={typesUrl}><code>ToolList</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### LSP, formattere og MCP
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------ | ---------------------------- | -------------------------------------------------------- |
|
||||
| `GET` | `/lsp` | Få LSP serverstatus | <a href={typesUrl}><code>LSPStatus[]</code></a> |
|
||||
| `GET` | `/formatter` | Få formateringsstatus | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
|
||||
| `GET` | `/mcp` | Få MCP serverstatus | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
|
||||
| `POST` | `/mcp` | Legg til MCP server dynamisk | body: `{ name, config }`, returnerer MCP statusobjekt |
|
||||
|
||||
---
|
||||
|
||||
### Agenter
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | -------- | -------------------------------- | ------------------------------------------- |
|
||||
| `GET` | `/agent` | Liste alle tilgjengelige agenter | <a href={typesUrl}><code>Agent[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Logging
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------ | --------------------------------------------------------------------- | --------- |
|
||||
| `POST` | `/log` | Skriv loggoppføring. Brødtekst: `{ service, level, message, extra? }` | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ----------------------- | ------------------------------------------- | -------------------------- |
|
||||
| `POST` | `/tui/append-prompt` | Legg til tekst i ledeteksten | `boolean` |
|
||||
| `POST` | `/tui/open-help` | Åpne hjelpedialogen | `boolean` |
|
||||
| `POST` | `/tui/open-sessions` | Åpne øktvelgeren | `boolean` |
|
||||
| `POST` | `/tui/open-themes` | Åpne temavelgeren | `boolean` |
|
||||
| `POST` | `/tui/open-models` | Åpne modellvelgeren | `boolean` |
|
||||
| `POST` | `/tui/submit-prompt` | Send inn gjeldende ledetekst | `boolean` |
|
||||
| `POST` | `/tui/clear-prompt` | Fjern ledeteksten | `boolean` |
|
||||
| `POST` | `/tui/execute-command` | Utfør en kommando (`{ command }`) | `boolean` |
|
||||
| `POST` | `/tui/show-toast` | Vis toast (`{ title?, message, variant }`) | `boolean` |
|
||||
| `GET` | `/tui/control/next` | Vent på neste kontrollforespørsel | Kontrollforespørselsobjekt |
|
||||
| `POST` | `/tui/control/response` | Svar på en kontrollforespørsel (`{ body }`) | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Auth
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ----------- | --------------------------------------------------------------------------- | --------- |
|
||||
| `PUT` | `/auth/:id` | Angi autentiseringslegitimasjon. Brødtekst må samsvare med leverandørskjema | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Hendelser
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | -------- | -------------------------------------------------------------------------------------------------- | ------------------------------ |
|
||||
| `GET` | `/event` | Server-sendte hendelsesstrøm. Første arrangement er `server.connected`, deretter bussarrangementer | Server-sendte hendelser stream |
|
||||
|
||||
---
|
||||
|
||||
### Dokumenter
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------ | ------------------------- | ----------------------------------- |
|
||||
| `GET` | `/doc` | OpenAPI 3.1-spesifikasjon | HTML side med OpenAPI-spesifikasjon |
|
||||
128
packages/web/src/content/docs/da/share.mdx
Normal file
128
packages/web/src/content/docs/da/share.mdx
Normal file
@@ -0,0 +1,128 @@
|
||||
---
|
||||
title: Dele
|
||||
description: Del dine OpenCode-samtaler.
|
||||
---
|
||||
|
||||
OpenCodes delingsfunksjon lar deg lage offentlige lenker til dine OpenCode-samtaler, slik at du kan samarbeide med lagkamerater eller få hjelp fra andre.
|
||||
|
||||
:::note
|
||||
Delte samtaler er offentlig tilgjengelige for alle med linken.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Slik fungerer det
|
||||
|
||||
Når du deler en samtale, OpenCode:
|
||||
|
||||
1. Oppretter en unik offentlig URL for økten din
|
||||
2. Synkroniserer samtaleloggen din til serverne våre
|
||||
3. Gjør samtalen tilgjengelig via den delbare lenken — `opncd.ai/s/<share-id>`
|
||||
|
||||
---
|
||||
|
||||
## Deling
|
||||
|
||||
OpenCode støtter tre delingsmoduser som kontrollerer hvordan samtaler deles:
|
||||
|
||||
---
|
||||
|
||||
### Manuell (standard)
|
||||
|
||||
Som standard bruker OpenCode manuell delingsmodus. Økter deles ikke automatisk, men du kan dele dem manuelt ved å bruke kommandoen `/share`:
|
||||
|
||||
```
|
||||
/share
|
||||
```
|
||||
|
||||
Dette vil generere en unik URL som vil bli kopiert til utklippstavlen din.
|
||||
|
||||
For å eksplisitt angi manuell modus i [konfigurasjonsfilen](/docs/config):
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "manual"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Automatisk deling
|
||||
|
||||
Du kan aktivere automatisk deling for alle nye samtaler ved å sette alternativet `share` til `"auto"` i [konfigurasjonsfilen](/docs/config):
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "auto"
|
||||
}
|
||||
```
|
||||
|
||||
Med automatisk deling aktivert, vil hver nye samtale automatisk bli delt og en kobling vil bli generert.
|
||||
|
||||
---
|
||||
|
||||
### Deaktivert
|
||||
|
||||
Du kan deaktivere deling helt ved å sette alternativet `share` til `"disabled"` i [konfigurasjonsfilen](/docs/config):
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "disabled"
|
||||
}
|
||||
```
|
||||
|
||||
For å håndheve dette på tvers av teamet ditt for et gitt prosjekt, legg det til `opencode.json` i prosjektet ditt og sjekk inn i Git.
|
||||
|
||||
---
|
||||
|
||||
## Opphev deling
|
||||
|
||||
Slik slutter du å dele en samtale og fjerner den fra offentlig tilgang:
|
||||
|
||||
```
|
||||
/unshare
|
||||
```
|
||||
|
||||
Dette vil fjerne delelinken og slette dataene knyttet til samtalen.
|
||||
|
||||
---
|
||||
|
||||
## Personvern
|
||||
|
||||
Det er et par ting du må huske på når du deler en samtale.
|
||||
|
||||
---
|
||||
|
||||
### Datalagring
|
||||
|
||||
Delte samtaler forblir tilgjengelige til du eksplisitt opphever deling av dem. Dette
|
||||
inkluderer:
|
||||
|
||||
- Full samtalehistorikk
|
||||
- Alle meldinger og svar
|
||||
- Metadata for økter
|
||||
|
||||
---
|
||||
|
||||
### Anbefalinger
|
||||
|
||||
- Del kun samtaler som ikke inneholder sensitiv informasjon.
|
||||
- Se gjennom samtaleinnholdet før du deler.
|
||||
- Opphev deling av samtaler når samarbeidet er fullført.
|
||||
- Unngå å dele samtaler med proprietær kode eller konfidensielle data.
|
||||
- For sensitive prosjekter, deaktiver deling helt.
|
||||
|
||||
---
|
||||
|
||||
## For bedrifter
|
||||
|
||||
For bedriftsimplementeringer kan delingsfunksjonen være:
|
||||
|
||||
- **Deaktivert** helt for overholdelse av sikkerhet
|
||||
- **Begrenset** til brukere som kun er autentisert gjennom SSO
|
||||
- **Selvvert** på din egen infrastruktur
|
||||
|
||||
[Finn ut mer](/docs/enterprise) om bruk av opencode i organisasjonen din.
|
||||
222
packages/web/src/content/docs/da/skills.mdx
Normal file
222
packages/web/src/content/docs/da/skills.mdx
Normal file
@@ -0,0 +1,222 @@
|
||||
---
|
||||
title: "Agentferdigheter"
|
||||
description: "Definer gjenbrukbar atferd via SKILL.md-definisjoner"
|
||||
---
|
||||
|
||||
Agentferdigheter lar OpenCode oppdage gjenbrukbare instruksjoner fra repo- eller hjemmekatalogen din.
|
||||
Ferdigheter lastes inn på forespørsel via det opprinnelige `skill`-verktøyet – agenter ser tilgjengelige ferdigheter og kan laste inn hele innholdet når det er nødvendig.
|
||||
|
||||
---
|
||||
|
||||
## Plasser filer
|
||||
|
||||
Opprett én mappe per ferdighetsnavn og legg inn en `SKILL.md` i den.
|
||||
OpenCode søker etter disse stedene:
|
||||
|
||||
- Prosjektkonfigurasjon: `.opencode/skills/<name>/SKILL.md`
|
||||
- Global konfigurasjon: `~/.config/opencode/skills/<name>/SKILL.md`
|
||||
- Prosjekt Claude-kompatibel: `.claude/skills/<name>/SKILL.md`
|
||||
- Global Claude-kompatibel: `~/.claude/skills/<name>/SKILL.md`
|
||||
- Prosjektagent-kompatibel: `.agents/skills/<name>/SKILL.md`
|
||||
- Global agent-kompatibel: `~/.agents/skills/<name>/SKILL.md`
|
||||
|
||||
---
|
||||
|
||||
## Forstå oppdagelsen
|
||||
|
||||
For prosjektlokale stier går OpenCode opp fra din nåværende arbeidskatalog til den når git-arbeidstreet.
|
||||
Den laster alle matchende `skills/*/SKILL.md` i `.opencode/` og alle matchende `.claude/skills/*/SKILL.md` eller `.agents/skills/*/SKILL.md` underveis.
|
||||
|
||||
Globale definisjoner lastes også inn fra `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` og `~/.agents/skills/*/SKILL.md`.
|
||||
|
||||
---
|
||||
|
||||
## Skriv frontmaterie
|
||||
|
||||
Hver `SKILL.md` må starte med YAML frontmatter.
|
||||
Bare disse feltene gjenkjennes:
|
||||
|
||||
- `name` (påkrevd)
|
||||
- `description` (påkrevd)
|
||||
- `license` (valgfritt)
|
||||
- `compatibility` (valgfritt)
|
||||
- `metadata` (valgfritt, streng-til-streng kart)
|
||||
|
||||
Ukjente frontmatter-felter ignoreres.
|
||||
|
||||
---
|
||||
|
||||
## Bekreft navn
|
||||
|
||||
`name` må:
|
||||
|
||||
- Bestå av 1–64 tegn
|
||||
- Vær alfanumerisk med små bokstaver med skilletegn med enkelt bindestrek
|
||||
- Ikke begynne eller slutte med `-`
|
||||
- Ikke inneholde påfølgende `--`
|
||||
- Match katalognavnet som inneholder `SKILL.md`
|
||||
|
||||
Ekvivalent regulært uttrykk:
|
||||
|
||||
```text
|
||||
^[a-z0-9]+(-[a-z0-9]+)*$
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Følg lengdereglene
|
||||
|
||||
`description` må bestå av 1-1024 tegn.
|
||||
Hold det spesifikt nok til at agenten kan velge riktig.
|
||||
|
||||
---
|
||||
|
||||
## Bruk et eksempel
|
||||
|
||||
Lag `.opencode/skills/git-release/SKILL.md` slik:
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: git-release
|
||||
description: Create consistent releases and changelogs
|
||||
license: MIT
|
||||
compatibility: opencode
|
||||
metadata:
|
||||
audience: maintainers
|
||||
workflow: github
|
||||
---
|
||||
|
||||
## What I do
|
||||
|
||||
- Draft release notes from merged PRs
|
||||
- Propose a version bump
|
||||
- Provide a copy-pasteable `gh release create` command
|
||||
|
||||
## When to use me
|
||||
|
||||
Use this when you are preparing a tagged release.
|
||||
Ask clarifying questions if the target versioning scheme is unclear.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gjenkjenne verktøybeskrivelsen
|
||||
|
||||
OpenCode viser tilgjengelige ferdigheter i `skill` verktøybeskrivelsen.
|
||||
Hver oppføring inneholder ferdighetsnavnet og beskrivelsen:
|
||||
|
||||
```xml
|
||||
<available_skills>
|
||||
<skill>
|
||||
<name>git-release</name>
|
||||
<description>Create consistent releases and changelogs</description>
|
||||
</skill>
|
||||
</available_skills>
|
||||
```
|
||||
|
||||
Agenten laster inn en ferdighet ved å kalle verktøyet:
|
||||
|
||||
```
|
||||
skill({ name: "git-release" })
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer tillatelser
|
||||
|
||||
Kontroller hvilke ferdigheter agenter har tilgang til ved å bruke mønsterbaserte tillatelser i `opencode.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"permission": {
|
||||
"skill": {
|
||||
"*": "allow",
|
||||
"pr-review": "allow",
|
||||
"internal-*": "deny",
|
||||
"experimental-*": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Tillatelse | Atferd |
|
||||
| ---------- | ----------------------------------------- |
|
||||
| `allow` | Ferdigheter lastes umiddelbart |
|
||||
| `deny` | Ferdighet skjult for agent, tilgang avvist |
|
||||
| `ask` | Bruker bedt om godkjenning før lasting |
|
||||
|
||||
Mønstre støtter jokertegn: `internal-*` samsvarer med `internal-docs`, `internal-tools` osv.
|
||||
|
||||
---
|
||||
|
||||
## Overstyring per agent
|
||||
|
||||
Gi spesifikke agenter andre tillatelser enn de globale standardinnstillingene.
|
||||
|
||||
**For egendefinerte agenter** (i agent frontmatter):
|
||||
|
||||
```yaml
|
||||
---
|
||||
permission:
|
||||
skill:
|
||||
"documents-*": "allow"
|
||||
---
|
||||
```
|
||||
|
||||
**For innebygde agenter** (i `opencode.json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"permission": {
|
||||
"skill": {
|
||||
"internal-*": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Deaktiver ferdighetsverktøyet
|
||||
|
||||
Deaktiver ferdigheter fullstendig for agenter som ikke bør bruke dem:
|
||||
|
||||
**For egendefinerte agenter**:
|
||||
|
||||
```yaml
|
||||
---
|
||||
tools:
|
||||
skill: false
|
||||
---
|
||||
```
|
||||
|
||||
**For innebygde agenter**:
|
||||
|
||||
```json
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"tools": {
|
||||
"skill": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Når den er deaktivert, blir `<available_skills>`-delen utelatt helt.
|
||||
|
||||
---
|
||||
|
||||
## Feilsøk lasting
|
||||
|
||||
Hvis en ferdighet ikke vises:
|
||||
|
||||
1. Kontroller at `SKILL.md` er stavet med store bokstaver
|
||||
2. Sjekk at frontmatter inkluderer `name` og `description`
|
||||
3. Sørg for at ferdighetsnavnene er unike på alle steder
|
||||
4. Sjekk tillatelser – ferdigheter med `deny` er skjult for agenter
|
||||
369
packages/web/src/content/docs/da/themes.mdx
Normal file
369
packages/web/src/content/docs/da/themes.mdx
Normal file
@@ -0,0 +1,369 @@
|
||||
---
|
||||
title: Temaer
|
||||
description: Velg et innebygd tema eller definer ditt eget.
|
||||
---
|
||||
|
||||
Med OpenCode kan du velge fra ett av flere innebygde temaer, bruke et tema som tilpasser seg terminaltemaet ditt, eller definere ditt eget tilpassede tema.
|
||||
|
||||
Som standard bruker OpenCode vårt eget `opencode`-tema.
|
||||
|
||||
---
|
||||
|
||||
## Terminalkrav
|
||||
|
||||
For at temaer skal vises riktig med fullfargepalett, må terminalen din støtte **truecolor** (24-biters farger). De fleste moderne terminaler støtter dette som standard, men du må kanskje aktivere det:
|
||||
|
||||
- **Sjekk støtte**: Kjør `echo $COLORTERM` - den skal gi ut `truecolor` eller `24bit`
|
||||
- **Aktiver truecolor**: Sett miljøvariabelen `COLORTERM=truecolor` i skallprofilen din
|
||||
- **Terminalkompatibilitet**: Sørg for at terminalemulatoren din støtter 24-bits farger (de fleste moderne terminaler som iTerm2, Alacritty, Kitty, Windows Terminal og nyere versjoner av GNOME Terminal gjør det)
|
||||
|
||||
Uten truecolor-støtte kan temaer vises med redusert fargenøyaktighet eller falle tilbake til nærmeste 256-fargers tilnærming.
|
||||
|
||||
---
|
||||
|
||||
## Innebygde temaer
|
||||
|
||||
OpenCode kommer med flere innebygde temaer.
|
||||
|
||||
| Navn | Beskrivelse |
|
||||
| ---------------------- | ---------------------------------------------------------------------------- |
|
||||
| `system` | Tilpasser seg terminalens bakgrunnsfarge |
|
||||
| `tokyonight` | Basert på [Tokyonight](https://github.com/folke/tokyonight.nvim)-temaet |
|
||||
| `everforest` | Basert på [Everforest](https://github.com/sainnhe/everforest)-temaet |
|
||||
| `ayu` | Basert på [Ayu](https://github.com/ayu-theme) mørke tema |
|
||||
| `catppuccin` | Basert på [Catppuccin](https://github.com/catppuccin)-temaet |
|
||||
| `catppuccin-macchiato` | Basert på [Catppuccin](https://github.com/catppuccin)-temaet |
|
||||
| `gruvbox` | Basert på [Gruvbox](https://github.com/morhetz/gruvbox)-temaet |
|
||||
| `kanagawa` | Basert på [Kanagawa](https://github.com/rebelot/kanagawa.nvim)-temaet |
|
||||
| `nord` | Basert på [Nord](https://github.com/nordtheme/nord)-temaet |
|
||||
| `matrix` | Hacker-stil grønt på svart tema |
|
||||
| `one-dark` | Basert på [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Mørkt tema |
|
||||
|
||||
Og mer, vi legger stadig til nye temaer.
|
||||
|
||||
---
|
||||
|
||||
## Systemtema
|
||||
|
||||
`system`-temaet er designet for å automatisk tilpasse seg terminalens fargevalg. I motsetning til tradisjonelle temaer som bruker faste farger, er _system_-temaet:
|
||||
|
||||
- **Genererer gråskala**: Oppretter en tilpasset gråskala basert på terminalens bakgrunnsfarge, og sikrer optimal kontrast.
|
||||
- **Bruker ANSI farger**: Bruker standard ANSI farger (0-15) for syntaksutheving og UI elementer, som respekterer terminalens fargepalett.
|
||||
- **Bevarer terminalens standardinnstillinger**: Bruker `none` for tekst- og bakgrunnsfarger for å opprettholde terminalens opprinnelige utseende.
|
||||
|
||||
Systemtemaet er for brukere som:
|
||||
|
||||
- Vil at OpenCode skal matche terminalens utseende
|
||||
- Bruk tilpassede terminalfargeskjemaer
|
||||
- Foretrekker et konsistent utseende på tvers av alle terminalapplikasjoner
|
||||
|
||||
---
|
||||
|
||||
## Bruke et tema
|
||||
|
||||
Du kan velge et tema ved å hente frem temavalg med kommandoen `/theme`. Eller du kan spesifisere det i [config](/docs/config).
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": "tokyonight"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Egendefinerte temaer
|
||||
|
||||
OpenCode støtter et fleksibelt JSON-basert temasystem som lar brukere enkelt lage og tilpasse temaer.
|
||||
|
||||
---
|
||||
|
||||
### Hierarki
|
||||
|
||||
Temaer lastes inn fra flere kataloger i følgende rekkefølge der senere kataloger overstyrer tidligere:
|
||||
|
||||
1. **Innebygde temaer** - Disse er innebygd i binæren
|
||||
2. **Brukerkonfigurasjonskatalog** - Definert i `~/.config/opencode/themes/*.json` eller `$XDG_CONFIG_HOME/opencode/themes/*.json`
|
||||
3. **Prosjektrotkatalog** - Definert i `<project-root>/.opencode/themes/*.json`
|
||||
4. **Gjeldende arbeidskatalog** - Definert i `./.opencode/themes/*.json`
|
||||
|
||||
Hvis flere kataloger inneholder et tema med samme navn, vil temaet fra katalogen med høyere prioritet bli brukt.
|
||||
|
||||
---
|
||||
|
||||
### Opprette et tema
|
||||
|
||||
For å lage et tilpasset tema, lag en JSON-fil i en av temakatalogene.
|
||||
|
||||
For brukeromfattende temaer:
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p ~/.config/opencode/themes
|
||||
vim ~/.config/opencode/themes/my-theme.json
|
||||
```
|
||||
|
||||
Og for prosjektspesifikke temaer.
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p .opencode/themes
|
||||
vim .opencode/themes/my-theme.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### JSON format
|
||||
|
||||
Temaer bruker et fleksibelt JSON-format med støtte for:
|
||||
|
||||
- **Sekskantfarger**: `"#ffffff"`
|
||||
- **ANSI farger**: `3` (0-255)
|
||||
- **Fargereferanser**: `"primary"` eller egendefinerte definisjoner
|
||||
- **Mørke/lyse varianter**: `{"dark": "#000", "light": "#fff"}`
|
||||
- **Ingen farge**: `"none"` - Bruker terminalens standardfarge eller transparent
|
||||
|
||||
---
|
||||
|
||||
### Fargedefinisjoner
|
||||
|
||||
`defs`-delen er valgfri, og den lar deg definere gjenbrukbare farger som kan refereres til i temaet.
|
||||
|
||||
---
|
||||
|
||||
### Terminalstandarder
|
||||
|
||||
Spesialverdien `"none"` kan brukes for hvilken som helst farge for å arve terminalens standardfarge. Dette er spesielt nyttig for å lage temaer som passer sømløst med terminalens fargeskjema:
|
||||
|
||||
- `"text": "none"` - Bruker terminalens standard forgrunnsfarge
|
||||
- `"background": "none"` - Bruker terminalens standard bakgrunnsfarge
|
||||
|
||||
---
|
||||
|
||||
### Eksempel
|
||||
|
||||
Her er et eksempel på et tilpasset tema:
|
||||
|
||||
```json title="my-theme.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/theme.json",
|
||||
"defs": {
|
||||
"nord0": "#2E3440",
|
||||
"nord1": "#3B4252",
|
||||
"nord2": "#434C5E",
|
||||
"nord3": "#4C566A",
|
||||
"nord4": "#D8DEE9",
|
||||
"nord5": "#E5E9F0",
|
||||
"nord6": "#ECEFF4",
|
||||
"nord7": "#8FBCBB",
|
||||
"nord8": "#88C0D0",
|
||||
"nord9": "#81A1C1",
|
||||
"nord10": "#5E81AC",
|
||||
"nord11": "#BF616A",
|
||||
"nord12": "#D08770",
|
||||
"nord13": "#EBCB8B",
|
||||
"nord14": "#A3BE8C",
|
||||
"nord15": "#B48EAD"
|
||||
},
|
||||
"theme": {
|
||||
"primary": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"secondary": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"accent": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"error": {
|
||||
"dark": "nord11",
|
||||
"light": "nord11"
|
||||
},
|
||||
"warning": {
|
||||
"dark": "nord12",
|
||||
"light": "nord12"
|
||||
},
|
||||
"success": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"info": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"text": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
},
|
||||
"textMuted": {
|
||||
"dark": "nord3",
|
||||
"light": "nord1"
|
||||
},
|
||||
"background": {
|
||||
"dark": "nord0",
|
||||
"light": "nord6"
|
||||
},
|
||||
"backgroundPanel": {
|
||||
"dark": "nord1",
|
||||
"light": "nord5"
|
||||
},
|
||||
"backgroundElement": {
|
||||
"dark": "nord1",
|
||||
"light": "nord4"
|
||||
},
|
||||
"border": {
|
||||
"dark": "nord2",
|
||||
"light": "nord3"
|
||||
},
|
||||
"borderActive": {
|
||||
"dark": "nord3",
|
||||
"light": "nord2"
|
||||
},
|
||||
"borderSubtle": {
|
||||
"dark": "nord2",
|
||||
"light": "nord3"
|
||||
},
|
||||
"diffAdded": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"diffRemoved": {
|
||||
"dark": "nord11",
|
||||
"light": "nord11"
|
||||
},
|
||||
"diffContext": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"diffHunkHeader": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"diffHighlightAdded": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"diffHighlightRemoved": {
|
||||
"dark": "nord11",
|
||||
"light": "nord11"
|
||||
},
|
||||
"diffAddedBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"diffRemovedBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"diffContextBg": {
|
||||
"dark": "nord1",
|
||||
"light": "nord5"
|
||||
},
|
||||
"diffLineNumber": {
|
||||
"dark": "nord2",
|
||||
"light": "nord4"
|
||||
},
|
||||
"diffAddedLineNumberBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"diffRemovedLineNumberBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"markdownText": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
},
|
||||
"markdownHeading": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"markdownLink": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"markdownLinkText": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"markdownCode": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"markdownBlockQuote": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"markdownEmph": {
|
||||
"dark": "nord12",
|
||||
"light": "nord12"
|
||||
},
|
||||
"markdownStrong": {
|
||||
"dark": "nord13",
|
||||
"light": "nord13"
|
||||
},
|
||||
"markdownHorizontalRule": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"markdownListItem": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"markdownListEnumeration": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"markdownImage": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"markdownImageText": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"markdownCodeBlock": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
},
|
||||
"syntaxComment": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"syntaxKeyword": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"syntaxFunction": {
|
||||
"dark": "nord8",
|
||||
"light": "nord8"
|
||||
},
|
||||
"syntaxVariable": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"syntaxString": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"syntaxNumber": {
|
||||
"dark": "nord15",
|
||||
"light": "nord15"
|
||||
},
|
||||
"syntaxType": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"syntaxOperator": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"syntaxPunctuation": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
379
packages/web/src/content/docs/da/tools.mdx
Normal file
379
packages/web/src/content/docs/da/tools.mdx
Normal file
@@ -0,0 +1,379 @@
|
||||
---
|
||||
title: Verktøy
|
||||
description: Administrer verktøyene en LLM kan bruke.
|
||||
---
|
||||
|
||||
Verktøy lar LLM utføre handlinger i kodebasen din. OpenCode kommer med et sett med innebygde verktøy, men du kan utvide det med [egendefinerte verktøy](/docs/custom-tools) eller [MCP servere](/docs/mcp-servers).
|
||||
|
||||
Som standard er alle verktøy **aktivert** og trenger ikke tillatelse for å kjøre. Du kan kontrollere verktøyets oppførsel gjennom [tillatelser](/docs/permissions).
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
Bruk feltet `permission` for å kontrollere verktøyets oppførsel. Du kan tillate, avslå eller kreve godkjenning for hvert verktøy.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny",
|
||||
"bash": "ask",
|
||||
"webfetch": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Du kan også bruke jokertegn for å kontrollere flere verktøy samtidig. For eksempel, for å kreve godkjenning for alle verktøy fra en MCP-server:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"mymcp_*": "ask"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Finn ut mer](/docs/permissions) om konfigurering av tillatelser.
|
||||
|
||||
---
|
||||
|
||||
## Innebygd
|
||||
|
||||
Her er alle de innebygde verktøyene som er tilgjengelige i OpenCode.
|
||||
|
||||
---
|
||||
|
||||
### bash
|
||||
|
||||
Utfør skallkommandoer i prosjektmiljøet ditt.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"bash": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette verktøyet lar LLM kjøre terminalkommandoer som `npm install`, `git status` eller en hvilken som helst annen shell-kommando.
|
||||
|
||||
---
|
||||
|
||||
### rediger
|
||||
|
||||
Endre eksisterende filer ved å bruke eksakte strengerstatninger.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette verktøyet utfører nøyaktige redigeringer av filer ved å erstatte eksakte teksttreff. Det er den primære måten LLM endrer kode på.
|
||||
|
||||
---
|
||||
|
||||
### skriv
|
||||
|
||||
Opprett nye filer eller overskriv eksisterende.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Bruk denne for å la LLM lage nye filer. Den vil overskrive eksisterende filer hvis de allerede eksisterer.
|
||||
|
||||
:::note
|
||||
`write`-verktøyet kontrolleres av tillatelsen `edit`, som dekker alle filendringer (`edit`, `write`, `patch`, `multiedit`).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### lest
|
||||
|
||||
Les filinnholdet fra kodebasen din.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"read": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette verktøyet leser filer og returnerer innholdet. Den støtter lesing av spesifikke linjeområder for store filer.
|
||||
|
||||
---
|
||||
|
||||
### grep
|
||||
|
||||
Søk i filinnhold ved hjelp av regulære uttrykk.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"grep": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Rask innholdssøk på tvers av kodebasen din. Støtter full regex-syntaks og filmønsterfiltrering.
|
||||
|
||||
---
|
||||
|
||||
### glob
|
||||
|
||||
Finn filer etter mønstermatching.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"glob": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Søk etter filer ved å bruke glob-mønstre som `**/*.js` eller `src/**/*.ts`. Returnerer samsvarende filbaner sortert etter endringstid.
|
||||
|
||||
---
|
||||
|
||||
### liste
|
||||
|
||||
List filer og kataloger i en gitt bane.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"list": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette verktøyet viser kataloginnhold. Den aksepterer glob-mønstre for å filtrere resultater.
|
||||
|
||||
---
|
||||
|
||||
### lsp (eksperimentell)
|
||||
|
||||
Samhandle med dine konfigurerte LSP-servere for å få kodeintelligensfunksjoner som definisjoner, referanser, sveveinformasjon og anropshierarki.
|
||||
|
||||
:::note
|
||||
Dette verktøyet er bare tilgjengelig når `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (eller `OPENCODE_EXPERIMENTAL=true`).
|
||||
:::
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"lsp": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Støttede operasjoner inkluderer `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` og `outgoingCalls`.
|
||||
|
||||
For å konfigurere hvilke LSP-servere som er tilgjengelige for prosjektet ditt, se [LSP-servere](/docs/lsp).
|
||||
|
||||
---
|
||||
|
||||
### patch
|
||||
|
||||
Bruk patcher på filer.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette verktøyet bruker oppdateringsfiler til kodebasen din. Nyttig for å påføre diff og lapper fra forskjellige kilder.
|
||||
|
||||
:::note
|
||||
`patch`-verktøyet kontrolleres av tillatelsen `edit`, som dekker alle filendringer (`edit`, `write`, `patch`, `multiedit`).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### ferdighet
|
||||
|
||||
Last inn en [ferdighet](/docs/skills) (en `SKILL.md` fil) og returner innholdet i samtalen.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"skill": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### for å skrive
|
||||
|
||||
Administrer gjøremålslister under kodingsøkter.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"todowrite": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Oppretter og oppdaterer oppgavelister for å spore fremdrift under komplekse operasjoner. LLM bruker dette til å organisere flertrinnsoppgaver.
|
||||
|
||||
:::note
|
||||
Dette verktøyet er deaktivert for subagenter som standard, men du kan aktivere det manuelt. [Finn ut mer](/docs/agents/#permissions)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### todoread
|
||||
|
||||
Les eksisterende gjøremålslister.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"todoread": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Leser gjeldende gjøremålslistestatus. Brukes av LLM for å spore hvilke oppgaver som venter eller er fullført.
|
||||
|
||||
:::note
|
||||
Dette verktøyet er deaktivert for subagenter som standard, men du kan aktivere det manuelt. [Finn ut mer](/docs/agents/#permissions)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### webhenting
|
||||
|
||||
Hent nettinnhold.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"webfetch": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Lar LLM hente og lese nettsider. Nyttig for å slå opp dokumentasjon eller forske på nettressurser.
|
||||
|
||||
---
|
||||
|
||||
### nettsøk
|
||||
|
||||
Søk på nettet for informasjon.
|
||||
|
||||
:::note
|
||||
Dette verktøyet er bare tilgjengelig når du bruker OpenCode-leverandøren eller når miljøvariabelen `OPENCODE_ENABLE_EXA` er satt til en sannverdi (f.eks. `true` eller `1`).
|
||||
|
||||
Slik aktiverer du når du starter OpenCode:
|
||||
|
||||
```bash
|
||||
OPENCODE_ENABLE_EXA=1 opencode
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"websearch": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Utfører nettsøk med Exa AI for å finne relevant informasjon på nettet. Nyttig for å undersøke emner, finne aktuelle hendelser eller samle informasjon utover treningsdataavbruddet.
|
||||
|
||||
Ingen API-nøkkel kreves — verktøyet kobles direkte til Exa AIs vertsbaserte MCP-tjeneste uten autentisering.
|
||||
|
||||
:::tupp
|
||||
Bruk `websearch` når du trenger å finne informasjon (oppdagelse), og `webfetch` når du trenger å hente innhold fra en bestemt URL (henting).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### spørsmål
|
||||
|
||||
Still brukeren spørsmål under utførelse.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"question": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dette verktøyet lar LLM stille spørsmål til brukeren under en oppgave. Det er nyttig for:
|
||||
|
||||
- Samle brukerpreferanser eller krav
|
||||
- Avklarende tvetydige instruksjoner
|
||||
- Få beslutninger om gjennomføringsvalg
|
||||
- Tilbyr valg om hvilken retning du skal ta
|
||||
|
||||
Hvert spørsmål inkluderer en overskrift, spørsmålsteksten og en liste over alternativer. Brukere kan velge fra de angitte alternativene eller skrive inn et tilpasset svar. Når det er flere spørsmål, kan brukerne navigere mellom dem før de sender inn alle svarene.
|
||||
|
||||
---
|
||||
|
||||
## Egendefinerte verktøy
|
||||
|
||||
Egendefinerte verktøy lar deg definere dine egne funksjoner som LLM kan kalle. Disse er definert i konfigurasjonsfilen din og kan kjøre vilkårlig kode.
|
||||
|
||||
[Finn ut mer](/docs/custom-tools) om å lage tilpassede verktøy.
|
||||
|
||||
---
|
||||
|
||||
## MCP servere
|
||||
|
||||
MCP (Model Context Protocol) servere lar deg integrere eksterne verktøy og tjenester. Dette inkluderer databasetilgang, API-integrasjoner og tredjepartstjenester.
|
||||
|
||||
[Les mer](/docs/mcp-servers) om konfigurering av MCP-servere.
|
||||
|
||||
---
|
||||
|
||||
## Internaler
|
||||
|
||||
Internt bruker verktøy som `grep`, `glob` og `list` [ripgrep](https://github.com/BurntSushi/ripgrep) under panseret. Som standard respekterer ripgrep `.gitignore`-mønstre, noe som betyr at filer og kataloger som er oppført i `.gitignore` vil bli ekskludert fra søk og oppføringer.
|
||||
|
||||
---
|
||||
|
||||
### Ignorer mønstre
|
||||
|
||||
For å inkludere filer som normalt vil bli ignorert, lag en `.ignore`-fil i prosjektroten. Denne filen kan eksplisitt tillate visse stier.
|
||||
|
||||
```text title=".ignore"
|
||||
!node_modules/
|
||||
!dist/
|
||||
!build/
|
||||
```
|
||||
|
||||
For eksempel lar denne `.ignore` filen ripgrep søke i `node_modules/`, `dist/` og `build/` kataloger selv om de er oppført i `.gitignore`.
|
||||
300
packages/web/src/content/docs/da/troubleshooting.mdx
Normal file
300
packages/web/src/content/docs/da/troubleshooting.mdx
Normal file
@@ -0,0 +1,300 @@
|
||||
---
|
||||
title: Feilsøking
|
||||
description: Vanlige problemer og hvordan de kan løses.
|
||||
---
|
||||
|
||||
For å feilsøke problemer med OpenCode, start med å sjekke loggene og lokale data den lagrer på disken.
|
||||
|
||||
---
|
||||
|
||||
## Logger
|
||||
|
||||
Loggfiler skrives til:
|
||||
|
||||
- **macOS/Linux**: `~/.local/share/opencode/log/`
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.local\share\opencode\log`
|
||||
|
||||
Loggfiler navngis med tidsstempler (f.eks. `2025-01-09T123456.log`) og de siste 10 loggfilene beholdes.
|
||||
|
||||
Du kan angi loggnivået med kommandolinjealternativet `--log-level` for å få mer detaljert feilsøkingsinformasjon. For eksempel `opencode --log-level DEBUG`.
|
||||
|
||||
---
|
||||
|
||||
## Lagring
|
||||
|
||||
opencode lagrer øktdata og andre applikasjonsdata på disken på:
|
||||
|
||||
- **macOS/Linux**: `~/.local/share/opencode/`
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
Denne katalogen inneholder:
|
||||
|
||||
- `auth.json` - Autentiseringsdata som API-nøkler, OAuth-tokens
|
||||
- `log/` - Applikasjonslogger
|
||||
- `project/` - Prosjektspesifikke data som økt- og meldingsdata
|
||||
- Hvis prosjektet er innenfor en Git-repo, lagres det i `./<project-slug>/storage/`
|
||||
- Hvis det ikke er en Git-repo, lagres det i `./global/storage/`
|
||||
|
||||
---
|
||||
|
||||
## Desktop-app
|
||||
|
||||
OpenCode Desktop kjører en lokal OpenCode-server (`opencode-cli` sidevognen) i bakgrunnen. De fleste problemene er forårsaket av en plugin som fungerer dårlig, en ødelagt cache eller en dårlig serverinnstilling.
|
||||
|
||||
### Raske sjekker
|
||||
|
||||
- Avslutt og start appen på nytt.
|
||||
- Hvis appen viser en feilskjerm, klikker du på **Start på nytt** og kopierer feildetaljene.
|
||||
- Bare macOS: `OpenCode`-meny -> **Last nettvisning på nytt** (hjelper hvis UI er tom/frosset).
|
||||
|
||||
---
|
||||
|
||||
### Deaktiver plugins
|
||||
|
||||
Hvis skrivebordsappen krasjer ved oppstart, henger eller oppfører seg merkelig, start med å deaktivere plugins.
|
||||
|
||||
#### Sjekk den globale konfigurasjonen
|
||||
|
||||
Åpne den globale konfigurasjonsfilen og se etter en `plugin`-nøkkel.
|
||||
|
||||
- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (eller `~/.config/opencode/opencode.json`)
|
||||
- **macOS/Linux** (eldre installasjoner): `~/.local/share/opencode/opencode.jsonc`
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.config\opencode\opencode.jsonc`
|
||||
|
||||
Hvis du har konfigurert plugins, deaktiver dem midlertidig ved å fjerne nøkkelen eller sette den til en tom matrise:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": [],
|
||||
}
|
||||
```
|
||||
|
||||
#### Sjekk plugin-kataloger
|
||||
|
||||
OpenCode kan også laste lokale plugins fra disken. Flytt disse midlertidig ut av veien (eller gi nytt navn til mappen) og start skrivebordsappen på nytt:
|
||||
|
||||
- **Globale plugins**
|
||||
- **macOS/Linux**: `~/.config/opencode/plugins/`
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.config\opencode\plugins`
|
||||
- **Prosjektplugins** (bare hvis du bruker konfigurasjon per prosjekt)
|
||||
- `<your-project>/.opencode/plugins/`
|
||||
|
||||
Hvis appen begynner å fungere igjen, aktiverer du plugins én om gangen for å finne ut hvilken som forårsaker problemet.
|
||||
|
||||
---
|
||||
|
||||
### Tøm hurtigbufferen
|
||||
|
||||
Hvis deaktivering av plugins ikke hjelper (eller en plugin-installasjon sitter fast), tøm hurtigbufferen slik at OpenCode kan gjenoppbygge den.
|
||||
|
||||
1. Avslutt OpenCode Desktop helt.
|
||||
2. Slett hurtigbufferkatalogen:
|
||||
|
||||
- **macOS**: Finder -> `Cmd+Shift+G` -> lim inn `~/.cache/opencode`
|
||||
- **Linux**: slett `~/.cache/opencode` (eller kjør `rm -rf ~/.cache/opencode`)
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
3. Start OpenCode Desktop på nytt.
|
||||
|
||||
---
|
||||
|
||||
### Løs problemer med servertilkobling
|
||||
|
||||
OpenCode Desktop kan enten starte sin egen lokale server (standard) eller koble til en server URL du har konfigurert.
|
||||
|
||||
Hvis du ser en **"Tilkobling mislyktes"**-dialogboks (eller appen kommer aldri forbi splash-skjermen), se etter en tilpasset server URL.
|
||||
|
||||
#### Slett standardserveren for skrivebordet URL
|
||||
|
||||
Fra startskjermen klikker du på servernavnet (med statusprikken) for å åpne servervelgeren. I delen **Standardserver** klikker du på **Slett**.
|
||||
|
||||
#### Fjern `server.port` / `server.hostname` fra konfigurasjonen din
|
||||
|
||||
Hvis `opencode.json(c)` inneholder en `server`-del, fjern den midlertidig og start skrivebordsappen på nytt.
|
||||
|
||||
#### Sjekk miljøvariabler
|
||||
|
||||
Hvis du har `OPENCODE_PORT` satt i miljøet ditt, vil skrivebordsappen prøve å bruke den porten for den lokale serveren.
|
||||
|
||||
- Deaktiver `OPENCODE_PORT` (eller velg en ledig port) og start på nytt.
|
||||
|
||||
---
|
||||
|
||||
### Linux: Wayland / X11 problemer
|
||||
|
||||
På Linux kan noen Wayland-oppsett forårsake tomme vinduer eller kompositorfeil.
|
||||
|
||||
- Hvis du er på Wayland og appen er tom/krasj, prøv å starte med `OC_ALLOW_WAYLAND=1`.
|
||||
- Hvis det gjør ting verre, fjern det og prøv å starte under en X11-økt i stedet.
|
||||
|
||||
---
|
||||
|
||||
### Windows: WebView2 kjøretid
|
||||
|
||||
På Windows krever OpenCode Desktop Microsoft Edge **WebView2 Runtime**. Hvis appen åpnes i et tomt vindu eller ikke starter, installer/oppdater WebView2 og prøv igjen.
|
||||
|
||||
---
|
||||
|
||||
### Windows: Generelle ytelsesproblemer
|
||||
|
||||
Hvis du opplever treg ytelse, problemer med filtilgang eller terminalproblemer på Windows, kan du prøve å bruke [WSL (Windows Subsystem for Linux)](/docs/windows-wsl). WSL gir et Linux-miljø som fungerer mer sømløst med funksjonene til OpenCode.
|
||||
|
||||
---
|
||||
|
||||
### Varsler vises ikke
|
||||
|
||||
OpenCode Desktop viser bare systemvarsler når:
|
||||
|
||||
- varsler er aktivert for OpenCode i OS-innstillingene dine, og
|
||||
- appvinduet er ikke fokusert.
|
||||
|
||||
---
|
||||
|
||||
### Tilbakestill skrivebordsapplagring (siste utvei)
|
||||
|
||||
Hvis appen ikke starter og du ikke kan slette innstillingene fra UI, tilbakestill skrivebordsappens lagrede tilstand.
|
||||
|
||||
1. Avslutt OpenCode Desktop.
|
||||
2. Finn og slett disse filene (de finnes i OpenCode Desktop-appens datakatalog):
|
||||
|
||||
- `opencode.settings.dat` (stasjonær standardserver URL)
|
||||
- `opencode.global.dat` og `opencode.workspace.*.dat` (UI tilstand som nylige servere/prosjekter)
|
||||
|
||||
Slik finner du katalogen raskt:
|
||||
|
||||
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (søk deretter etter filnavnene ovenfor)
|
||||
- **Linux**: søk under `~/.local/share` etter filnavnene ovenfor
|
||||
- **Windows**: Trykk `WIN+R` -> `%APPDATA%` (søk deretter etter filnavnene ovenfor)
|
||||
|
||||
---
|
||||
|
||||
## Får hjelp
|
||||
|
||||
Hvis du opplever problemer med OpenCode:
|
||||
|
||||
1. **Rapporter problemer på GitHub**
|
||||
|
||||
Den beste måten å rapportere feil eller be om funksjoner på er gjennom vårt GitHub-lager:
|
||||
|
||||
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
|
||||
|
||||
Før du oppretter et nytt problem, søk i eksisterende problemer for å se om problemet ditt allerede er rapportert.
|
||||
|
||||
2. **Bli med i vår Discord**
|
||||
|
||||
For sanntidshjelp og fellesskapsdiskusjon, bli med i vår Discord-server:
|
||||
|
||||
[**opencode.ai/discord**](https://opencode.ai/discord)
|
||||
|
||||
---
|
||||
|
||||
## Vanlige problemer
|
||||
|
||||
Her er noen vanlige problemer og hvordan du kan løse dem.
|
||||
|
||||
---
|
||||
|
||||
### OpenCode vil ikke starte
|
||||
|
||||
1. Sjekk loggene for feilmeldinger
|
||||
2. Prøv å kjøre med `--print-logs` for å se utdata i terminalen
|
||||
3. Sørg for at du har den nyeste versjonen med `opencode upgrade`
|
||||
|
||||
---
|
||||
|
||||
### Autentiseringsproblemer
|
||||
|
||||
1. Prøv å autentisere på nytt med kommandoen `/connect` i TUI
|
||||
2. Sjekk at API-nøklene dine er gyldige
|
||||
3. Sørg for at nettverket ditt tillater tilkoblinger til leverandørens API
|
||||
|
||||
---
|
||||
|
||||
### Modellen er ikke tilgjengelig
|
||||
|
||||
1. Sjekk at du har autentisert deg med leverandøren
|
||||
2. Kontroller at modellnavnet i konfigurasjonen er riktig
|
||||
3. Noen modeller kan kreve spesifikk tilgang eller abonnement
|
||||
|
||||
Hvis du støter på `ProviderModelNotFoundError` er du mest sannsynlig feil
|
||||
refererer til en modell et sted.
|
||||
Modeller skal refereres slik: `<providerId>/<modelId>`
|
||||
|
||||
Eksempler:
|
||||
|
||||
- `openai/gpt-4.1`
|
||||
- `openrouter/google/gemini-2.5-flash`
|
||||
- `opencode/kimi-k2`
|
||||
|
||||
For å finne ut hvilke modeller du har tilgang til, kjør `opencode models`
|
||||
|
||||
---
|
||||
|
||||
### ProviderInitError
|
||||
|
||||
Hvis du støter på en ProviderInitError, har du sannsynligvis en ugyldig eller ødelagt konfigurasjon.
|
||||
|
||||
For å løse dette:
|
||||
|
||||
1. Kontroller først at leverandøren din er riktig konfigurert ved å følge [leverandørveiledningen](/docs/providers)
|
||||
2. Hvis problemet vedvarer, prøv å tømme den lagrede konfigurasjonen:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.local/share/opencode
|
||||
```
|
||||
|
||||
På Windows, trykk `WIN+R` og slett: `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
3. Autentiser på nytt med leverandøren din ved å bruke kommandoen `/connect` i TUI.
|
||||
|
||||
---
|
||||
|
||||
### AI_APICallError og leverandørpakkeproblemer
|
||||
|
||||
Hvis du støter på API anropsfeil, kan dette skyldes utdaterte leverandørpakker. opencode installerer dynamisk leverandørpakker (OpenAI, Anthropic, Google, etc.) etter behov og cacher dem lokalt.
|
||||
|
||||
For å løse problemer med leverandørpakke:
|
||||
|
||||
1. Tøm leverandørens pakkebuffer:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.cache/opencode
|
||||
```
|
||||
|
||||
På Windows, trykk `WIN+R` og slett: `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
2. Start opencode på nytt for å installere de nyeste leverandørpakkene på nytt
|
||||
|
||||
Dette vil tvinge opencode til å laste ned de nyeste versjonene av leverandørpakkene, som ofte løser kompatibilitetsproblemer med modellparametere og API endringer.
|
||||
|
||||
---
|
||||
|
||||
### Kopier/lim inn fungerer ikke på Linux
|
||||
|
||||
Linux-brukere må ha ett av følgende utklippstavleverktøy installert for at kopier/lim inn-funksjonalitet skal fungere:
|
||||
|
||||
**For X11-systemer:**
|
||||
|
||||
```bash
|
||||
apt install -y xclip
|
||||
# or
|
||||
apt install -y xsel
|
||||
```
|
||||
|
||||
**For Wayland-systemer:**
|
||||
|
||||
```bash
|
||||
apt install -y wl-clipboard
|
||||
```
|
||||
|
||||
**For hodeløse miljøer:**
|
||||
|
||||
```bash
|
||||
apt install -y xvfb
|
||||
# and run:
|
||||
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
|
||||
export DISPLAY=:99.0
|
||||
```
|
||||
|
||||
opencode vil oppdage om du bruker Wayland og foretrekker `wl-clipboard`, ellers vil den prøve å finne utklippstavleverktøy i rekkefølgen: `xclip` og `xsel`.
|
||||
390
packages/web/src/content/docs/da/tui.mdx
Normal file
390
packages/web/src/content/docs/da/tui.mdx
Normal file
@@ -0,0 +1,390 @@
|
||||
---
|
||||
title: TUI
|
||||
description: Bruke OpenCode-terminalbrukergrensesnittet.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
OpenCode gir et interaktivt terminalgrensesnitt eller TUI for å jobbe med prosjektene dine med en LLM.
|
||||
|
||||
Å kjøre OpenCode starter TUI for gjeldende katalog.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Eller du kan starte den for en bestemt arbeidskatalog.
|
||||
|
||||
```bash
|
||||
opencode /path/to/project
|
||||
```
|
||||
|
||||
Når du er i TUI, kan du spørre den med en melding.
|
||||
|
||||
```text
|
||||
Give me a quick summary of the codebase.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Filreferanser
|
||||
|
||||
Du kan referere til filer i meldingene dine ved å bruke `@`. Dette gjør et uklar filsøk i gjeldende arbeidskatalog.
|
||||
|
||||
:::tupp
|
||||
Du kan også bruke `@` til å referere til filer i meldingene dine.
|
||||
:::
|
||||
|
||||
```text "@packages/functions/src/api/index.ts"
|
||||
How is auth handled in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Innholdet i filen legges automatisk til samtalen.
|
||||
|
||||
---
|
||||
|
||||
## Bash-kommandoer
|
||||
|
||||
Start en melding med `!` for å kjøre en shell-kommando.
|
||||
|
||||
```bash frame="none"
|
||||
!ls -la
|
||||
```
|
||||
|
||||
Utdataene fra kommandoen legges til samtalen som et verktøyresultat.
|
||||
|
||||
---
|
||||
|
||||
## Kommandoer
|
||||
|
||||
Når du bruker OpenCode TUI, kan du skrive `/` etterfulgt av et kommandonavn for raskt å utføre handlinger. For eksempel:
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
De fleste kommandoer har også tastebinding som bruker `ctrl+x` som ledernøkkel, der `ctrl+x` er standard ledernøkkel. [Finn ut mer](/docs/keybinds).
|
||||
|
||||
Her er alle tilgjengelige skråstrekkommandoer:
|
||||
|
||||
---
|
||||
|
||||
### koble til
|
||||
|
||||
Legg til en leverandør til OpenCode. Lar deg velge fra tilgjengelige leverandører og legge til deres API-nøkler.
|
||||
|
||||
```bash frame="none"
|
||||
/connect
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### kompakt
|
||||
|
||||
Komprimer gjeldende økt. _Alias_: `/summarize`
|
||||
|
||||
```bash frame="none"
|
||||
/compact
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x c`
|
||||
|
||||
---
|
||||
|
||||
### detaljer
|
||||
|
||||
Veksle verktøyutførelsesdetaljer.
|
||||
|
||||
```bash frame="none"
|
||||
/details
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x d`
|
||||
|
||||
---
|
||||
|
||||
### redaktør
|
||||
|
||||
Åpne eksternt redigeringsprogram for å skrive meldinger. Bruker redigeringssettet i miljøvariabelen `EDITOR`. [Finn ut mer](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/editor
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x e`
|
||||
|
||||
---
|
||||
|
||||
### avslutt
|
||||
|
||||
Avslutt OpenCode. _Aliaser_: `/quit`, `/q`
|
||||
|
||||
```bash frame="none"
|
||||
/exit
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x q`
|
||||
|
||||
---
|
||||
|
||||
### eksport
|
||||
|
||||
Eksporter gjeldende samtale til Markdown og åpne i standardredigeringsprogrammet. Bruker redigeringssettet i miljøvariabelen `EDITOR`. [Finn ut mer](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/export
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x x`
|
||||
|
||||
---
|
||||
|
||||
### hjelp
|
||||
|
||||
Vis hjelpedialogen.
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x h`
|
||||
|
||||
---
|
||||
|
||||
### init
|
||||
|
||||
Opprett eller oppdater `AGENTS.md`-fil. [Finn ut mer](/docs/rules).
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x i`
|
||||
|
||||
---
|
||||
|
||||
### modeller
|
||||
|
||||
Liste over tilgjengelige modeller.
|
||||
|
||||
```bash frame="none"
|
||||
/models
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x m`
|
||||
|
||||
---
|
||||
|
||||
### ny
|
||||
|
||||
Start en ny økt. _Alias_: `/clear`
|
||||
|
||||
```bash frame="none"
|
||||
/new
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x n`
|
||||
|
||||
---
|
||||
|
||||
### gjør om
|
||||
|
||||
Gjenta en tidligere angret melding. Kun tilgjengelig etter bruk av `/undo`.
|
||||
|
||||
:::tupp
|
||||
Eventuelle filendringer vil også bli gjenopprettet.
|
||||
:::
|
||||
|
||||
Internt bruker dette Git til å administrere filendringene. Så ditt prosjekt **må
|
||||
være et Git-depot**.
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x r`
|
||||
|
||||
---
|
||||
|
||||
### økter
|
||||
|
||||
List opp og bytt mellom økter. _Aliaser_: `/resume`, `/continue`
|
||||
|
||||
```bash frame="none"
|
||||
/sessions
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x l`
|
||||
|
||||
---
|
||||
|
||||
### del
|
||||
|
||||
Del gjeldende økt. [Finn ut mer](/docs/share).
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x s`
|
||||
|
||||
---
|
||||
|
||||
### temaer
|
||||
|
||||
Liste over tilgjengelige temaer.
|
||||
|
||||
```bash frame="none"
|
||||
/theme
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x t`
|
||||
|
||||
---
|
||||
|
||||
### tenker
|
||||
|
||||
Veksle mellom synligheten av tenke-/resonneringsblokker i samtalen. Når den er aktivert, kan du se modellens resonneringsprosess for modeller som støtter utvidet tenkning.
|
||||
|
||||
:::note
|
||||
Denne kommandoen kontrollerer bare om tenkeblokker **vises** - den aktiverer eller deaktiverer ikke modellens resonneringsmuligheter. For å veksle mellom faktiske resonneringsmuligheter, bruk `ctrl+t` for å bla gjennom modellvarianter.
|
||||
:::
|
||||
|
||||
```bash frame="none"
|
||||
/thinking
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### angre
|
||||
|
||||
Angre siste melding i samtalen. Fjerner den siste brukermeldingen, alle påfølgende svar og eventuelle filendringer.
|
||||
|
||||
:::tupp
|
||||
Eventuelle filendringer vil også bli tilbakestilt.
|
||||
:::
|
||||
|
||||
Internt bruker dette Git til å administrere filendringene. Så ditt prosjekt **må
|
||||
være et Git-depot**.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
**Nøkkelbinding:** `ctrl+x u`
|
||||
|
||||
---
|
||||
|
||||
### avbryt deling
|
||||
|
||||
Opphev deling av gjeldende økt. [Finn ut mer](/docs/share#un-sharing).
|
||||
|
||||
```bash frame="none"
|
||||
/unshare
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Redaktøroppsett
|
||||
|
||||
Både kommandoene `/editor` og `/export` bruker redigeringsprogrammet som er spesifisert i miljøvariabelen `EDITOR`.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Linux/macOS">
|
||||
```bash
|
||||
# Example for nano or vim
|
||||
export EDITOR=nano
|
||||
export EDITOR=vim
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
export EDITOR="code --wait"
|
||||
```
|
||||
|
||||
For å gjøre det permanent, legg dette til i skallprofilen din;
|
||||
`~/.bashrc`, `~/.zshrc` osv.
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Windows (CMD)">
|
||||
```bash
|
||||
set EDITOR=notepad
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
set EDITOR=code --wait
|
||||
```
|
||||
|
||||
For å gjøre det permanent, bruk **Systemegenskaper** > **Miljø
|
||||
Variabler**.
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Windows (PowerShell)">
|
||||
```powershell
|
||||
$env:EDITOR = "notepad"
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
$env:EDITOR = "code --wait"
|
||||
```
|
||||
|
||||
For å gjøre det permanent, legg dette til i PowerShell-profilen din.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
Populære redigeringsalternativer inkluderer:
|
||||
|
||||
- `code` - Visual Studio Code
|
||||
- `cursor` - Cursor
|
||||
- `windsurf` - Vindsurfing
|
||||
- `nvim` - Neovim-redaktør
|
||||
- `vim` - Vim editor
|
||||
- `nano` - Nano-editor
|
||||
- `notepad` - Windows Notisblokk
|
||||
- `subl` - Sublim tekst
|
||||
|
||||
:::note
|
||||
Noen redaktører som VS Code må startes med flagget `--wait`.
|
||||
:::
|
||||
|
||||
Noen redaktører trenger kommandolinjeargumenter for å kjøre i blokkeringsmodus. `--wait`-flagget gjør at redigeringsprosessen blokkeres til den lukkes.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse TUI-oppførselen gjennom OpenCode-konfigurasjonsfilen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Alternativer
|
||||
|
||||
- `scroll_acceleration` - Aktiver rulleakselerasjon i macOS-stil for jevn, naturlig rulling. Når aktivert, øker rullehastigheten med raske rullebevegelser og forblir presis for langsommere bevegelser. **Denne innstillingen har forrang over `scroll_speed` og overstyrer den når den er aktivert.**
|
||||
- `scroll_speed` - Styrer hvor raskt TUI ruller når du bruker rullekommandoer (minimum: `1`). Standard er `3`. **Merk: Dette ignoreres hvis `scroll_acceleration.enabled` er satt til `true`.**
|
||||
|
||||
---
|
||||
|
||||
## Tilpasning
|
||||
|
||||
Du kan tilpasse ulike aspekter av TUI-visningen ved å bruke kommandopaletten (`ctrl+x h` eller `/help`). Disse innstillingene vedvarer ved omstarter.
|
||||
|
||||
---
|
||||
|
||||
#### Visning av brukernavn
|
||||
|
||||
Veksle om brukernavnet ditt vises i chat-meldinger. Få tilgang til dette gjennom:
|
||||
|
||||
- Kommandopalett: Søk etter "brukernavn" eller "skjul brukernavn"
|
||||
- Innstillingen vedvarer automatisk og vil bli husket over TUI økter
|
||||
142
packages/web/src/content/docs/da/web.mdx
Normal file
142
packages/web/src/content/docs/da/web.mdx
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
title: Web
|
||||
description: Brug af OpenCode i din browser.
|
||||
---
|
||||
|
||||
OpenCode kan køre som en webapplikation i din browser, hvilket giver den samme kraftfulde AI-kodningsoplevelse uden behov for en terminal.
|
||||
|
||||

|
||||
|
||||
## Kom godt i gang
|
||||
|
||||
Start webgrænsefladen ved at køre:
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
```
|
||||
|
||||
Dette starter en lokal server på `127.0.0.1` med en tilfældig tilgængelig port og åbner automatisk OpenCode i din standardbrowser.
|
||||
|
||||
:::caution
|
||||
Hvis `OPENCODE_SERVER_PASSWORD` ikke er indstillet, vil serveren være usikret. Dette er fint til lokal brug, men bør indstilles til netværksadgang.
|
||||
:::
|
||||
|
||||
:::tip[Windows Users]
|
||||
For den bedste oplevelse skal du køre `opencode web` fra [WSL](/docs/windows-wsl) i stedet for PowerShell. Dette sikrer korrekt filsystemadgang og terminalintegration.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Du kan konfigurere webserveren ved hjælp af kommandolinjeflag eller i din [config-fil](/docs/config).
|
||||
|
||||
### Port
|
||||
|
||||
Som standard vælger OpenCode en tilgængelig port. Du kan angive en port:
|
||||
|
||||
```bash
|
||||
opencode web --port 4096
|
||||
```
|
||||
|
||||
### Værtsnavn
|
||||
|
||||
Som standard binder serveren til `127.0.0.1` (kun lokal vært). Sådan gør du OpenCode tilgængelig på dit netværk:
|
||||
|
||||
```bash
|
||||
opencode web --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
Når du bruger `0.0.0.0`, vil OpenCode vise både lokale adresser og netværksadresser:
|
||||
|
||||
```
|
||||
Local access: http://localhost:4096
|
||||
Network access: http://192.168.1.100:4096
|
||||
```
|
||||
|
||||
### mDNS-opdagelse
|
||||
|
||||
Aktiver mDNS for at gøre din server synlig på det lokale netværk:
|
||||
|
||||
```bash
|
||||
opencode web --mdns
|
||||
```
|
||||
|
||||
Dette indstiller automatisk værtsnavnet til `0.0.0.0` og annoncerer serveren som `opencode.local`.
|
||||
|
||||
Du kan tilpasse mDNS-domænenavnet til at køre flere forekomster på det samme netværk:
|
||||
|
||||
```bash
|
||||
opencode web --mdns --mdns-domain myproject.local
|
||||
```
|
||||
|
||||
### CORS
|
||||
|
||||
For at tillade yderligere domæner til CORS (nyttigt til brugerdefinerede frontends):
|
||||
|
||||
```bash
|
||||
opencode web --cors https://example.com
|
||||
```
|
||||
|
||||
### Godkendelse
|
||||
|
||||
For at beskytte adgangen skal du angive en adgangskode ved hjælp af `OPENCODE_SERVER_PASSWORD` miljøvariablen:
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=secret opencode web
|
||||
```
|
||||
|
||||
Brugernavnet er som standard `opencode`, men kan ændres med `OPENCODE_SERVER_USERNAME`.
|
||||
|
||||
---
|
||||
|
||||
## Brug af webgrænsefladen
|
||||
|
||||
Når den er startet, giver webgrænsefladen adgang til dine OpenCode-sessioner.
|
||||
|
||||
### Sessioner
|
||||
|
||||
Se og administrer dine sessioner fra hjemmesiden. Du kan se aktive sessioner og starte nye.
|
||||
|
||||

|
||||
|
||||
### Serverstatus
|
||||
|
||||
Klik på "Se servere" for at se tilsluttede servere og deres status.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Tilslutning af en terminal
|
||||
|
||||
Du kan vedhæfte en terminal TUI til en kørende webserver:
|
||||
|
||||
```bash
|
||||
# Start the web server
|
||||
opencode web --port 4096
|
||||
|
||||
# In another terminal, attach the TUI
|
||||
opencode attach http://localhost:4096
|
||||
```
|
||||
|
||||
Dette giver dig mulighed for at bruge både webgrænsefladen og terminalen samtidigt og dele de samme sessioner og tilstand.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurationsfil
|
||||
|
||||
Du kan også konfigurere serverindstillinger i din `opencode.json`-konfigurationsfil:
|
||||
|
||||
```json
|
||||
{
|
||||
"server": {
|
||||
"port": 4096,
|
||||
"hostname": "0.0.0.0",
|
||||
"mdns": true,
|
||||
"cors": ["https://example.com"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Kommandolinjeflag har forrang over konfigurationsfilindstillinger.
|
||||
113
packages/web/src/content/docs/da/windows-wsl.mdx
Normal file
113
packages/web/src/content/docs/da/windows-wsl.mdx
Normal file
@@ -0,0 +1,113 @@
|
||||
---
|
||||
title: Windows (WSL)
|
||||
description: Kør OpenCode på Windows med WSL for den bedste oplevelse.
|
||||
---
|
||||
|
||||
import { Steps } from "@astrojs/starlight/components"
|
||||
|
||||
Selvom OpenCode kan køre direkte på Windows, anbefaler vi at bruge [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) for den bedste oplevelse. WSL giver et Linux-miljø, der fungerer problemfrit med OpenCodes funktioner.
|
||||
|
||||
:::tip[Hvorfor WSL?]
|
||||
WSL giver bedre filsystemydelse, fuld terminalunderstøttelse og kompatibilitet med de udviklingsværktøjer, som OpenCode er afhængig af.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Opsætning
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Installer WSL**
|
||||
|
||||
Hvis du ikke allerede har gjort det, så [installer WSL](https://learn.microsoft.com/en-us/windows/wsl/install) med Microsofts officielle vejledning.
|
||||
|
||||
2. **Installer OpenCode i WSL**
|
||||
|
||||
Når WSL er sat op, skal du åbne din WSL-terminal og installere OpenCode med en af [installationsmetoderne](/docs/).
|
||||
|
||||
```bash
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
```
|
||||
|
||||
3. **Brug OpenCode fra WSL**
|
||||
|
||||
Gå til din projektmappe (få adgang til Windows-filer via `/mnt/c/`, `/mnt/d/` osv.) og kør OpenCode.
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/YourName/project
|
||||
opencode
|
||||
```
|
||||
|
||||
</Steps>
|
||||
|
||||
---
|
||||
|
||||
## Desktop-app + WSL-server
|
||||
|
||||
Hvis du foretrækker OpenCode Desktop-appen, men vil køre serveren i WSL:
|
||||
|
||||
1. **Start serveren i WSL** med `--hostname 0.0.0.0` for at tillade eksterne forbindelser:
|
||||
|
||||
```bash
|
||||
opencode serve --hostname 0.0.0.0 --port 4096
|
||||
```
|
||||
|
||||
2. **Forbind Desktop-appen** til `http://localhost:4096`
|
||||
|
||||
:::note
|
||||
Hvis `localhost` ikke virker i din opsætning, så forbind i stedet med WSL-IP-adressen (fra WSL: `hostname -I`) og brug `http://<wsl-ip>:4096`.
|
||||
:::
|
||||
|
||||
:::caution
|
||||
Når du bruger `--hostname 0.0.0.0`, skal du sætte `OPENCODE_SERVER_PASSWORD` for at sikre serveren.
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Webklient + WSL
|
||||
|
||||
For den bedste weboplevelse på Windows:
|
||||
|
||||
1. **Kør `opencode web` i WSL-terminalen** i stedet for PowerShell:
|
||||
|
||||
```bash
|
||||
opencode web --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
2. **Åbn fra din Windows-browser** på `http://localhost:<port>` (OpenCode udskriver URL'en)
|
||||
|
||||
Når du kører `opencode web` fra WSL, får du korrekt filsystemadgang og terminalintegration, samtidig med at det stadig er tilgængeligt fra din Windows-browser.
|
||||
|
||||
---
|
||||
|
||||
## Adgang til Windows-filer
|
||||
|
||||
WSL kan få adgang til alle dine Windows-filer via `/mnt/`-mappen:
|
||||
|
||||
- `C:`-drev → `/mnt/c/`
|
||||
- `D:`-drev → `/mnt/d/`
|
||||
- Og så videre...
|
||||
|
||||
Eksempel:
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/YourName/Documents/project
|
||||
opencode
|
||||
```
|
||||
|
||||
:::tip
|
||||
For den mest problemfri oplevelse kan du overveje at klone/kopiere dit repo ind i WSL-filsystemet (for eksempel under `~/code/`) og køre OpenCode derfra.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Tips
|
||||
|
||||
- Lad OpenCode køre i WSL for projekter, der ligger på Windows-drev - filadgangen er problemfri
|
||||
- Brug VS Codes [WSL-udvidelse](https://code.visualstudio.com/docs/remote/wsl) sammen med OpenCode for et integreret udviklingsworkflow
|
||||
- Din OpenCode-konfiguration og dine sessioner gemmes i WSL-miljøet i `~/.local/share/opencode/`
|
||||
254
packages/web/src/content/docs/da/zen.mdx
Normal file
254
packages/web/src/content/docs/da/zen.mdx
Normal file
@@ -0,0 +1,254 @@
|
||||
---
|
||||
title: Zen
|
||||
description: Utvalgt liste over modeller levert av OpenCode.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
OpenCode Zen er en liste over testede og verifiserte modeller levert av OpenCode-teamet.
|
||||
|
||||
:::note
|
||||
OpenCode Zen er for øyeblikket i beta.
|
||||
:::
|
||||
|
||||
Zen fungerer som alle andre leverandører i OpenCode. Du logger på OpenCode Zen og får
|
||||
din API nøkkel. Den er **helt valgfri** og du trenger ikke bruke den for å bruke den
|
||||
OpenCode.
|
||||
|
||||
---
|
||||
|
||||
## Bakgrunn
|
||||
|
||||
Det er et stort antall modeller der ute, men bare noen få av dem
|
||||
disse modellene fungerer godt som kodeagenter. I tillegg er de fleste tilbydere
|
||||
konfigurert veldig annerledes; slik at du får veldig forskjellig ytelse og kvalitet.
|
||||
|
||||
:::tupp
|
||||
Vi testet en utvalgt gruppe modeller og leverandører som fungerer godt med OpenCode.
|
||||
:::
|
||||
|
||||
Så hvis du bruker en modell gjennom noe som OpenRouter, kan du aldri bli det
|
||||
sikker på om du får den beste versjonen av modellen du ønsker.
|
||||
|
||||
For å fikse dette gjorde vi et par ting:
|
||||
|
||||
1. Vi testet en utvalgt gruppe modeller og snakket med teamene deres om hvordan
|
||||
best kjøre dem.
|
||||
2. Vi samarbeidet deretter med noen få leverandører for å sikre at disse ble servert
|
||||
riktig.
|
||||
3. Til slutt benchmarket vi kombinasjonen av modell/leverandør og kom frem
|
||||
med en liste som vi har lyst til å anbefale.
|
||||
|
||||
OpenCode Zen er en AI gateway som gir deg tilgang til disse modellene.
|
||||
|
||||
---
|
||||
|
||||
## Slik fungerer det
|
||||
|
||||
OpenCode Zen fungerer som alle andre leverandører i OpenCode.
|
||||
|
||||
1. Du logger på **<a href={console}>OpenCode Zen</a>**, legg til fakturering
|
||||
detaljer, og kopier API-nøkkelen.
|
||||
2. Du kjører kommandoen `/connect` i TUI, velger OpenCode Zen og limer inn API-nøkkelen.
|
||||
3. Kjør `/models` i TUI for å se listen over modeller vi anbefaler.
|
||||
|
||||
Du belastes per forespørsel, og du kan legge til kreditt på kontoen din.
|
||||
|
||||
---
|
||||
|
||||
## Endepunkter
|
||||
|
||||
Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter.
|
||||
|
||||
| Modell | Modell ID | Endepunkt | AI SDK Pakke |
|
||||
| ------------------- | ------------------ | -------------------------------------------------- | --------------------------- |
|
||||
| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.2 Codex | gpt-5.2-kodeks | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 Codex | gpt-5.1-kodeks | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 Codex Max | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 Codex Mini | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 Codex | gpt-5-kodeks | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| Claude Sonnet 4.5 | claude-sonnett-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Sonnet 4 | claude-sonnett-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Haiku 3.5 | claude-3-5-haiku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
|
||||
| Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
|
||||
| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| MiniMax M2.1 Gratis | minimax-m2.1-fri | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.7 Gratis | glm-4.7-fri | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 Gratis | kimi-k2.5-fri | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 Tenker | kimi-k2-tenking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Qwen3-koder 480B | qwen3-koder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Stor sylteagurk | stor sylteagurk | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
|
||||
[modell-id](/docs/config/#models) i OpenCode-konfigurasjonen
|
||||
bruker formatet `opencode/<model-id>`. For eksempel, for GPT 5.2 Codex, ville du
|
||||
bruk `opencode/gpt-5.2-codex` i konfigurasjonen din.
|
||||
|
||||
---
|
||||
|
||||
### Modeller
|
||||
|
||||
Du kan hente hele listen over tilgjengelige modeller og deres metadata fra:
|
||||
|
||||
```
|
||||
https://opencode.ai/zen/v1/models
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Priser
|
||||
|
||||
Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1 million tokens**.
|
||||
|
||||
| Modell | Inngang | Utgang | Bufret Les | Bufret skriv |
|
||||
| --------------------------------- | ------- | ------ | ---------- | ------------ |
|
||||
| Stor sylteagurk | Gratis | Gratis | Gratis | - |
|
||||
| MiniMax M2.1 Gratis | Gratis | Gratis | Gratis | - |
|
||||
| MiniMax M2.1 | $0,30 | $1,20 | $0,10 | - |
|
||||
| GLM 4.7 Gratis | Gratis | Gratis | Gratis | - |
|
||||
| GLM 4.7 | $0,60 | $2,20 | $0,10 | - |
|
||||
| GLM 4.6 | $0,60 | $2,20 | $0,10 | - |
|
||||
| Kimi K2.5 Gratis | Gratis | Gratis | Gratis | - |
|
||||
| Kimi K2.5 | $0,60 | $3,00 | $0,08 | - |
|
||||
| Kimi K2 Tenker | $0,40 | $2,50 | - | - |
|
||||
| Kimi K2 | $0,40 | $2,50 | - | - |
|
||||
| Qwen3-koder 480B | $0,45 | $1,50 | - | - |
|
||||
| Claude Sonnet 4.5 (≤ 200K tokens) | $3,00 | $15,00 | $0,30 | $3,75 |
|
||||
| Claude Sonnet 4.5 (> 200K tokens) | $6,00 | $22,50 | $0,60 | $7,50 |
|
||||
| Claude Sonnet 4 (≤ 200K tokens) | $3,00 | $15,00 | $0,30 | $3,75 |
|
||||
| Claude Sonnet 4 (> 200K tokens) | $6,00 | $22,50 | $0,60 | $7,50 |
|
||||
| Claude Haiku 4.5 | $1,00 | $5,00 | $0,10 | $1,25 |
|
||||
| Claude Haiku 3.5 | $0,80 | $4,00 | $0,08 | $1,00 |
|
||||
| Claude Opus 4.6 (≤ 200K tokens) | $5,00 | $25,00 | $0,50 | $6,25 |
|
||||
| Claude Opus 4.6 (> 200K tokens) | $10,00 | $37,50 | $1,00 | $12,50 |
|
||||
| Claude Opus 4.5 | $5,00 | $25,00 | $0,50 | $6,25 |
|
||||
| Claude Opus 4.1 | $15,00 | $75,00 | $1,50 | $18,75 |
|
||||
| Gemini 3 Pro (≤ 200K tokens) | $2,00 | $12,00 | $0,20 | - |
|
||||
| Gemini 3 Pro (> 200K tokens) | $4,00 | $18,00 | $0,40 | - |
|
||||
| Gemini 3 Flash | $0,50 | $3,00 | $0,05 | - |
|
||||
| GPT 5.2 | $1,75 | $14,00 | $0,175 | - |
|
||||
| GPT 5.2 Codex | $1,75 | $14,00 | $0,175 | - |
|
||||
| GPT 5.1 | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5.1 Codex | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5.1 Codex Max | $1,25 | $10,00 | $0,125 | - |
|
||||
| GPT 5.1 Codex Mini | $0,25 | $2,00 | $0,025 | - |
|
||||
| GPT 5 | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5 Codex | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5 Nano | Gratis | Gratis | Gratis | - |
|
||||
|
||||
Du legger kanskje merke til _Claude Haiku 3.5_ i brukshistorikken din. Dette er en [lavprismodell](/docs/config/#models) som brukes til å generere titlene på øktene dine.
|
||||
|
||||
:::note
|
||||
Kredittkortgebyrer overføres til kostpris (4,4 % + $0,30 per transaksjon); vi belaster ikke noe utover det.
|
||||
:::
|
||||
|
||||
De gratis modellene:
|
||||
|
||||
- GLM 4.7 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle tilbakemeldinger og forbedre modellen.
|
||||
- Kimi K2.5 Gratis er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle tilbakemeldinger og forbedre modellen.
|
||||
- MiniMax M2.1 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle tilbakemeldinger og forbedre modellen.
|
||||
- Big Pickle er en stealth-modell som er gratis på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle tilbakemeldinger og forbedre modellen.
|
||||
|
||||
<a href={email}>Contact us</a> if you have any questions.
|
||||
|
||||
---
|
||||
|
||||
### Last inn automatisk
|
||||
|
||||
Hvis saldoen din går under $5, vil Zen automatisk laste inn $20 på nytt.
|
||||
|
||||
Du kan endre beløpet for automatisk påfylling. Du kan også deaktivere automatisk reload helt.
|
||||
|
||||
---
|
||||
|
||||
### Månedlige grenser
|
||||
|
||||
Du kan også angi en månedlig bruksgrense for hele arbeidsområdet og for hver
|
||||
medlem av teamet ditt.
|
||||
|
||||
La oss for eksempel si at du setter en månedlig bruksgrense til $20, Zen vil ikke bruke
|
||||
mer enn $20 på en måned. Men hvis du har automatisk reload aktivert, kan Zen ende opp
|
||||
belaster deg mer enn $20 hvis saldoen din går under $5.
|
||||
|
||||
---
|
||||
|
||||
## Personvern
|
||||
|
||||
Alle våre modeller er vert i US. Leverandørene våre følger en nulloppbevaringspolicy og bruker ikke dataene dine til modellopplæring, med følgende unntak:
|
||||
|
||||
- Big Pickle: I løpet av gratisperioden kan innsamlede data brukes til å forbedre modellen.
|
||||
- GLM 4.7 Gratis: I løpet av gratisperioden kan innsamlede data brukes til å forbedre modellen.
|
||||
- Kimi K2.5 Gratis: I løpet av gratisperioden kan innsamlede data brukes til å forbedre modellen.
|
||||
- MiniMax M2.1 Gratis: I løpet av gratisperioden kan innsamlede data brukes til å forbedre modellen.
|
||||
- OpenAI APIer: Forespørsler oppbevares i 30 dager i samsvar med [OpenAIs datapolicyer](https://platform.openai.com/docs/guides/your-data).
|
||||
- Anthropic APIer: Forespørsler oppbevares i 30 dager i samsvar med [Anthropics datapolicyer](https://docs.anthropic.com/en/docs/claude-code/data-usage).
|
||||
|
||||
---
|
||||
|
||||
## For lag
|
||||
|
||||
Zen fungerer også utmerket for team. Du kan invitere lagkamerater, tildele roller, kuratere
|
||||
modellene laget ditt bruker, og mer.
|
||||
|
||||
:::note
|
||||
Arbeidsområder er for øyeblikket gratis for team som en del av betaversjonen.
|
||||
:::
|
||||
|
||||
Å administrere arbeidsområdet ditt er for øyeblikket gratis for team som en del av betaversjonen. Det blir vi
|
||||
deler mer informasjon om prisene snart.
|
||||
|
||||
---
|
||||
|
||||
### Roller
|
||||
|
||||
Du kan invitere lagkamerater til arbeidsområdet ditt og tildele roller:
|
||||
|
||||
- **Admin**: Administrer modeller, medlemmer, API-nøkler og fakturering
|
||||
- **Medlem**: Administrer kun sine egne API-nøkler
|
||||
|
||||
Administratorer kan også sette månedlige forbruksgrenser for hvert medlem for å holde kostnadene under kontroll.
|
||||
|
||||
---
|
||||
|
||||
### Modelltilgang
|
||||
|
||||
Administratorer kan aktivere eller deaktivere spesifikke modeller for arbeidsområdet. Forespørsler til en deaktivert modell vil returnere en feil.
|
||||
|
||||
Dette er nyttig for tilfeller der du ønsker å deaktivere bruken av en modell som
|
||||
samler inn data.
|
||||
|
||||
---
|
||||
|
||||
### Ta med egen nøkkel
|
||||
|
||||
Du kan bruke dine egne OpenAI- eller Anthropic API-nøkler mens du fortsatt har tilgang til andre modeller i Zen.
|
||||
|
||||
Når du bruker dine egne nøkler, faktureres tokens direkte av leverandøren, ikke av Zen.
|
||||
|
||||
For eksempel kan organisasjonen din allerede ha en nøkkel for OpenAI eller Anthropic
|
||||
og du vil bruke det i stedet for det Zen gir.
|
||||
|
||||
---
|
||||
|
||||
## Mål
|
||||
|
||||
Vi opprettet OpenCode Zen for å:
|
||||
|
||||
1. **Benchmark** de beste modellene/leverandørene for kodingsagenter.
|
||||
2. Ha tilgang til alternativene for **høyeste kvalitet** og ikke nedgrader ytelsen eller rute til billigere leverandører.
|
||||
3. Gi videre eventuelle **prisfall** ved å selge til kostpris; så den eneste markeringen er å dekke behandlingsgebyrene våre.
|
||||
4. Ha **ingen låsing** ved å la deg bruke den med en hvilken som helst annen kodeagent. Og la deg alltid bruke en hvilken som helst annen leverandør med OpenCode også.
|
||||
Reference in New Issue
Block a user