mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-08 17:59:09 +00:00
wip(docs): i18n (#12681)
This commit is contained in:
67
packages/web/src/content/docs/de/1-0.mdx
Normal file
67
packages/web/src/content/docs/de/1-0.mdx
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
title: Migration zu 1.0
|
||||
description: Was ist neu in OpenCode 1.0.
|
||||
---
|
||||
|
||||
OpenCode 1.0 ist eine komplette Neufassung des TUI.
|
||||
|
||||
Wir sind vom go+bubbletea-basierten TUI, das Leistungs- und Leistungsprobleme aufwies, zu einem internen Framework (OpenTUI) übergegangen, das in zig+solidjs geschrieben wurde.
|
||||
|
||||
Der neue TUI funktioniert wie der alte, da er eine Verbindung zum gleichen Opencode-Server herstellt.
|
||||
|
||||
---
|
||||
|
||||
## Upgrading
|
||||
|
||||
Sie sollten nicht automatisch auf 1.0 aktualisiert werden, wenn Sie derzeit eine frühere Version verwenden
|
||||
Version. Einige ältere Versionen von OpenCode greifen jedoch immer auf die neueste Version zu.
|
||||
|
||||
Führen Sie zum manuellen Upgrade Folgendes aus:
|
||||
|
||||
```bash
|
||||
$ opencode upgrade 1.0.0
|
||||
```
|
||||
|
||||
Führen Sie Folgendes aus, um ein Downgrade auf 0.x durchzuführen
|
||||
|
||||
```bash
|
||||
$ opencode upgrade 0.15.31
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## UX ändert sich
|
||||
|
||||
Der Sitzungsverlauf ist stärker komprimiert und zeigt nur alle Details des Bearbeitungs- und Bash-Tools an.
|
||||
|
||||
Wir haben eine Befehlsleiste hinzugefügt, durch die schnell alles fließt. Drücken Sie Strg+P, um es in einem beliebigen Kontext aufzurufen und alles zu sehen, was Sie tun können.
|
||||
|
||||
Eine Sitzungsseitenleiste (kann umgeschaltet werden) mit nützlichen Informationen hinzugefügt.
|
||||
|
||||
Wir haben einige Funktionen entfernt, von denen wir nicht sicher waren, ob sie tatsächlich jemand nutzte. Wenn etwas Wichtiges fehlt, öffnen Sie bitte eine Ausgabe und wir werden es schnell wieder hinzufügen.
|
||||
|
||||
---
|
||||
|
||||
## Bahnbrechende Veränderungen
|
||||
|
||||
### Tastenkombinationen umbenannt
|
||||
|
||||
- Nachrichten_revert -> Nachrichten_Rückgängig machen
|
||||
- switch_agent -> agent_cycle
|
||||
- switch_agent_reverse -> agent_cycle_reverse
|
||||
- switch_mode -> agent_cycle
|
||||
- switch_mode_reverse -> agent_cycle_reverse
|
||||
|
||||
### Tastenkombinationen entfernt
|
||||
|
||||
- message_layout_toggle
|
||||
- message_next
|
||||
- Nachrichten_vorherige
|
||||
- file_diff_toggle
|
||||
- file_search
|
||||
- file_close
|
||||
- Dateiliste
|
||||
- app_help
|
||||
- project_init
|
||||
- Werkzeugdetails
|
||||
- think_blocks
|
||||
156
packages/web/src/content/docs/de/acp.mdx
Normal file
156
packages/web/src/content/docs/de/acp.mdx
Normal file
@@ -0,0 +1,156 @@
|
||||
---
|
||||
title: ACP-Unterstützung
|
||||
description: Verwenden Sie OpenCode in jedem ACP-kompatiblen Editor.
|
||||
---
|
||||
|
||||
OpenCode unterstützt [Agent Client Protocol](https://agentclientprotocol.com) oder (ACP), sodass Sie es direkt in kompatiblen Editoren und IDEs verwenden können.
|
||||
|
||||
:::tip
|
||||
Eine Liste der Editoren und Tools, die ACP unterstützen, finden Sie unter [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now).
|
||||
:::
|
||||
|
||||
ACP ist ein offenes Protokoll, das die Kommunikation zwischen Code-Editoren und AI-Codierungsagenten standardisiert.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurieren
|
||||
|
||||
Um OpenCode über ACP zu verwenden, konfigurieren Sie Ihren Editor für die Ausführung des Befehls `opencode acp`.
|
||||
|
||||
Der Befehl startet OpenCode als ACP-kompatiblen Unterprozess, der über stdio über JSON-RPC mit Ihrem Editor kommuniziert.
|
||||
|
||||
Nachfolgend finden Sie Beispiele für beliebte Editoren, die ACP unterstützen.
|
||||
|
||||
---
|
||||
|
||||
### Zed
|
||||
|
||||
Fügen Sie Ihrer [Zed](https://zed.dev)-Konfiguration (`~/.config/zed/settings.json`) Folgendes hinzu:
|
||||
|
||||
```json title="~/.config/zed/settings.json"
|
||||
{
|
||||
"agent_servers": {
|
||||
"OpenCode": {
|
||||
"command": "opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Um es zu öffnen, verwenden Sie die Aktion `agent: new thread` in der **Befehlspalette**.
|
||||
|
||||
Sie können auch eine Tastenkombination binden, indem Sie Ihren `keymap.json` bearbeiten:
|
||||
|
||||
```json title="keymap.json"
|
||||
[
|
||||
{
|
||||
"bindings": {
|
||||
"cmd-alt-o": [
|
||||
"agent::NewExternalAgentThread",
|
||||
{
|
||||
"agent": {
|
||||
"custom": {
|
||||
"name": "OpenCode",
|
||||
"command": {
|
||||
"command": "opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### JetBrains IDEs
|
||||
|
||||
Fügen Sie zu Ihrem [JetBrains IDE](https://www.jetbrains.com/) acp.json gemäß [documentation](https://www.jetbrains.com/help/ai-assistant/acp.html) hinzu:
|
||||
|
||||
```json title="acp.json"
|
||||
{
|
||||
"agent_servers": {
|
||||
"OpenCode": {
|
||||
"command": "/absolute/path/bin/opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Um es zu öffnen, verwenden Sie den neuen Agenten „OpenCode“ in der Chat-Agentenauswahl AI.
|
||||
|
||||
---
|
||||
|
||||
### Avante.nvim
|
||||
|
||||
Fügen Sie Ihrer [Avante.nvim](https://github.com/yetone/avante.nvim)-Konfiguration Folgendes hinzu:
|
||||
|
||||
```lua
|
||||
{
|
||||
acp_providers = {
|
||||
["opencode"] = {
|
||||
command = "opencode",
|
||||
args = { "acp" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn Sie Umgebungsvariablen übergeben müssen:
|
||||
|
||||
```lua {6-8}
|
||||
{
|
||||
acp_providers = {
|
||||
["opencode"] = {
|
||||
command = "opencode",
|
||||
args = { "acp" },
|
||||
env = {
|
||||
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### CodeCompanion.nvim
|
||||
|
||||
Um OpenCode als ACP-Agent in [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim) zu verwenden, fügen Sie Folgendes zu Ihrer Neovim-Konfiguration hinzu:
|
||||
|
||||
```lua
|
||||
require("codecompanion").setup({
|
||||
interactions = {
|
||||
chat = {
|
||||
adapter = {
|
||||
name = "opencode",
|
||||
model = "claude-sonnet-4",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Diese Konfiguration richtet CodeCompanion so ein, dass OpenCode als ACP-Agent für den Chat verwendet wird.
|
||||
|
||||
Wenn Sie Umgebungsvariablen (wie `OPENCODE_API_KEY`) übergeben müssen, finden Sie ausführliche Informationen zu [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) in der Dokumentation zu CodeCompanion.nvim.
|
||||
|
||||
## Support
|
||||
|
||||
OpenCode funktioniert über ACP genauso wie im Terminal. Alle Funktionen werden unterstützt:
|
||||
|
||||
:::note
|
||||
Einige integrierte Schrägstrichbefehle wie `/undo` und `/redo` werden derzeit nicht unterstützt.
|
||||
:::
|
||||
|
||||
- Integrierte Tools (Dateioperationen, Terminalbefehle usw.)
|
||||
- Benutzerdefinierte Tools und Slash-Befehle
|
||||
- MCP-Server, die in Ihrer OpenCode-Konfiguration konfiguriert sind
|
||||
- Projektspezifische Regeln von `AGENTS.md`
|
||||
- Benutzerdefinierte Formatierer und Linters
|
||||
- Agenten- und Berechtigungssystem
|
||||
747
packages/web/src/content/docs/de/agents.mdx
Normal file
747
packages/web/src/content/docs/de/agents.mdx
Normal file
@@ -0,0 +1,747 @@
|
||||
---
|
||||
title: Agenten
|
||||
description: Konfigurieren und verwenden Sie spezielle Agenten.
|
||||
---
|
||||
|
||||
Agenten sind spezialisierte AI-Assistenten, die für bestimmte Aufgaben und Arbeitsabläufe konfiguriert werden können. Sie ermöglichen Ihnen die Erstellung gezielter Werkzeuge mit benutzerdefinierten Eingabeaufforderungen, Modellen und Werkzeugzugriff.
|
||||
|
||||
:::tip
|
||||
Verwenden Sie den Planagenten, um Code zu analysieren und Vorschläge zu überprüfen, ohne Codeänderungen vorzunehmen.
|
||||
:::
|
||||
|
||||
Sie können während einer Sitzung zwischen Agenten wechseln oder sie mit der Erwähnung `@` aufrufen.
|
||||
|
||||
---
|
||||
|
||||
## Typen
|
||||
|
||||
Es gibt zwei Arten von Agenten in OpenCode; Primäragenten und Subagenten.
|
||||
|
||||
---
|
||||
|
||||
### Primäragenten
|
||||
|
||||
Primäragenten sind die Hauptassistenten, mit denen Sie direkt interagieren. Sie können sie mit der **Tabulatortaste** oder Ihrer konfigurierten Tastenkombination `switch_agent` durchblättern. Diese Agenten kümmern sich um Ihr Hauptgespräch. Der Werkzeugzugriff wird über Berechtigungen konfiguriert – zum Beispiel sind bei „Build“ alle Werkzeuge aktiviert, während „Plan“ eingeschränkt ist.
|
||||
|
||||
:::tip
|
||||
Sie können die **Tabulatortaste** verwenden, um während einer Sitzung zwischen primären Agenten zu wechseln.
|
||||
:::
|
||||
|
||||
OpenCode verfügt über zwei integrierte Primäragenten: **Build** und **Plan**. Auch
|
||||
Schauen Sie sich diese unten an.
|
||||
|
||||
---
|
||||
|
||||
### Subagenten
|
||||
|
||||
Unteragenten sind spezialisierte Assistenten, die Primäragenten für bestimmte Aufgaben aufrufen können. Sie können sie auch manuell aufrufen, indem Sie sie in Ihren Nachrichten **@erwähnen**.
|
||||
|
||||
OpenCode verfügt über zwei integrierte Subagenten: **General** und **Explore**. Wir werden uns das weiter unten ansehen.
|
||||
|
||||
---
|
||||
|
||||
## Eingebaut
|
||||
|
||||
OpenCode verfügt über zwei integrierte Primäragenten und zwei integrierte Subagenten.
|
||||
|
||||
---
|
||||
|
||||
### Verwenden Sie Build
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
Build ist der **Standard**-Primäragent mit allen aktivierten Tools. Dies ist der Standardagent für Entwicklungsarbeiten, bei dem Sie vollen Zugriff auf Dateioperationen und Systembefehle benötigen.
|
||||
|
||||
---
|
||||
|
||||
### Nutzungsplan
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
Ein eingeschränkter Agent, der für Planung und Analyse entwickelt wurde. Wir verwenden ein Berechtigungssystem, um Ihnen mehr Kontrolle zu geben und unbeabsichtigte Änderungen zu verhindern.
|
||||
Standardmäßig sind alle folgenden Elemente auf `ask` gesetzt:
|
||||
|
||||
- `file edits`: Alle Schreibvorgänge, Patches und Bearbeitungen
|
||||
- `bash`: Alle Bash-Befehle
|
||||
|
||||
Dieser Agent ist nützlich, wenn Sie möchten, dass LLM Code analysiert, Änderungen vorgeschlagen oder Pläne erstellt werden, ohne tatsächliche Änderungen an Ihrer Codebasis vorzunehmen.
|
||||
|
||||
---
|
||||
|
||||
### Verwenden Sie es allgemein
|
||||
|
||||
_Modus_: `subagent`
|
||||
|
||||
Ein Allzweckagent zur Recherche komplexerer Fragen und zur Ausführung mehrstufiger Aufgaben. Verfügt über vollständigen Zugriff auf das Tool (außer Todo), sodass bei Bedarf Dateiänderungen vorgenommen werden können. Verwenden Sie Matrizen, um mehrere Arbeitseinheiten parallel auszuführen.
|
||||
|
||||
---
|
||||
|
||||
### Verwenden Sie „Erkunden“.
|
||||
|
||||
_Modus_: `subagent`
|
||||
|
||||
Ein schneller, schreibgeschützter Agent zum Erkunden von Codebasen. Dateien können nicht geändert werden. Verwenden Sie dies, wenn Sie Dateien schnell anhand von Mustern finden, Code nach Schlüsselwörtern durchsuchen oder Fragen zur Codebasis beantworten müssen.
|
||||
|
||||
---
|
||||
|
||||
### Verwenden Sie Dichtung
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
Versteckter Systemagent, der lange Kontext in einer kleineren Zusammenfassung komprimiert. Es wird bei Bedarf automatisch ausgeführt und ist im UI nicht auswählbar.
|
||||
|
||||
---
|
||||
|
||||
### Titel verwenden
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
Versteckter Systemagent, der kurze Sitzungstitel generiert. Es läuft automatisch und ist im UI nicht auswählbar.
|
||||
|
||||
---
|
||||
|
||||
### Zusammenfassung verwenden
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
Versteckter Systemagent, der Sitzungszusammenfassungen erstellt. Es läuft automatisch und ist im UI nicht auswählbar.
|
||||
|
||||
---
|
||||
|
||||
## Verwendung
|
||||
|
||||
1. Verwenden Sie für primäre Agenten die **Tabulatortaste**, um während einer Sitzung durch sie zu blättern. Sie können auch Ihre konfigurierte `switch_agent`-Tastenkombination verwenden.
|
||||
|
||||
2. Subagenten können aufgerufen werden:
|
||||
- **Automatisch** durch primäre Agenten für spezielle Aufgaben basierend auf ihren Beschreibungen.
|
||||
- Manuell durch **@ Erwähnung** eines Subagenten in Ihrer Nachricht. Zum Beispiel.
|
||||
|
||||
```txt frame="none"
|
||||
@general help me search for this function
|
||||
```
|
||||
|
||||
3. **Navigation zwischen Sitzungen**: Wenn Subagenten ihre eigenen untergeordneten Sitzungen erstellen, können Sie zwischen der übergeordneten Sitzung und allen untergeordneten Sitzungen sorgfältig handeln, indem Sie Folgendes verwenden:
|
||||
- **\<Leader>+Rechts** (oder Ihre konfigurierte `session_child_cycle`-Tastenkombination), um vorwärts durch Eltern → Kind1 → Kind2 → ... → Eltern zu blättern
|
||||
- **\<Leader>+Links** (oder Ihre konfigurierte `session_child_cycle_reverse`-Tastenkombination), um rückwärts durch übergeordnetes Element ← untergeordnetes Element1 ← untergeordnetes Element2 ← ... ← übergeordnetes Element zu blättern
|
||||
|
||||
Dadurch können Sie nahtlos zwischen der Hauptkonversation und der spezialisierten Subagentenarbeit wechseln.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurieren
|
||||
|
||||
Sie können die integrierten Agenten anpassen oder über die Konfiguration eigene erstellen. Agenten können auf zwei Arten konfiguriert werden:
|
||||
|
||||
---
|
||||
|
||||
### JSON
|
||||
|
||||
Konfigurieren Sie Agenten in Ihrer `opencode.json`-Konfigurationsdatei:
|
||||
|
||||
```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
|
||||
|
||||
Sie können Agenten auch mithilfe von Markdown-Dateien definieren. Platzieren Sie sie in:
|
||||
|
||||
- Global: `~/.config/opencode/agents/`
|
||||
- Pro 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.
|
||||
```
|
||||
|
||||
Der Name der Markdown-Datei wird zum Agentennamen. Beispielsweise erstellte `review.md` einen `review`-Agenten.
|
||||
|
||||
---
|
||||
|
||||
## Options
|
||||
|
||||
Schauen Sie sich diese Konfigurationsmöglichkeiten im Detail an.
|
||||
|
||||
---
|
||||
|
||||
### Beschreibung
|
||||
|
||||
Verwenden Sie die Option `description`, um eine kurze Beschreibung darüber bereitzustellen, was der Agent tut und wann er verwendet werden soll.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"description": "Reviews code for best practices and potential issues"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dies ist eine **erforderliche** Konfigurationsoption.
|
||||
|
||||
---
|
||||
|
||||
### Temperature
|
||||
|
||||
Steuern Sie die Zufälligkeit und Kreativität der Antworten von LLM mit der `temperature`-Konfiguration.
|
||||
|
||||
Höchste Werte machen die Antworten fokussierter und deterministischer, während höhere Werte die Kreativität und Variabilität steigern.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"temperature": 0.1
|
||||
},
|
||||
"creative": {
|
||||
"temperature": 0.8
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Temperaturwerte liegen typischerweise zwischen 0.0 und 1.0:
|
||||
|
||||
- **0.0-0.2**: Sehr fokussierte und deterministische Antworten, ideal für Code-Analyse und Planung
|
||||
- **0.3-0.5**: Ausgewogene Antworten mit etwas Kreativität, gut für allgemeine Entwicklungsaufgaben
|
||||
- **0.6-1.0**: Kreativere und vielfältigere Antworten, nützlich für Brainstorming und Erkundung
|
||||
|
||||
```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}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn keine Temperatur angegeben ist, verwendet OpenCode modellspezifische Standardwerte; typischerweise 0 für die meisten Modelle, 0.55 für Qwen-Modelle.
|
||||
|
||||
---
|
||||
|
||||
### Maximale Schritte
|
||||
|
||||
Steuern Sie die maximale Anzahl an Agenteniterationen, die ein Agent durchführen kann, bevor er gezwungen wird, nur mit Text zu antworten. Dadurch können Benutzer, die die Kosten kontrollieren möchten, ein Limit für Agentenaktionen festlegen.
|
||||
|
||||
Wenn dies nicht festgelegt ist, iteriert der Agent weiter, bis das Modell den Stopp beschließt oder der Benutzer die Sitzung unterbricht.
|
||||
|
||||
```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
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn das Limit erreicht ist, erhält der Agent eine spezielle Systemaufforderung, die ihn anweist, mit einer Zusammenfassung seiner Arbeit und empfohlenen verbleibenden Aufgaben zu antworten.
|
||||
|
||||
:::caution
|
||||
Das alte Feld `maxSteps` ist veraltet. Verwenden Sie stattdessen `steps`.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Disable
|
||||
|
||||
Auf `true` setzen, um den Agenten zu deaktivieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"disable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Prompt
|
||||
|
||||
Geben Sie mit der `prompt`-Konfiguration eine benutzerdefinierte Systemaufforderungsdatei für diese Agenten an. Die Eingabeaufforderungsdatei sollte Anweisungen enthalten, die speziell auf den Zweck des Agenten zugeschnitten sind.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"prompt": "{file:./prompts/code-review.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dieser Pfad ist relativ zum Speicherort der Konfigurationsdatei. Dies funktioniert sowohl für die globale OpenCode-Konfiguration als auch für die projektspezifische Konfiguration.
|
||||
|
||||
---
|
||||
|
||||
### Modell
|
||||
|
||||
Verwenden Sie die `model`-Konfiguration, um das Modell für diese Agenten zu überschreiben. Nützlich für die Verwendung verschiedener Modelle, die für verschiedene Aufgaben optimiert sind. Zum Beispiel ein schnelleres Modell für die Planung, ein leistungsfähigeres Modell für die Umsetzung.
|
||||
|
||||
:::tip
|
||||
Wenn Sie kein Modell angeben, verwenden Sie den primären Agenten [model globally configured](/docs/config#models), während die Subagenten das Modell des primären Agenten verwenden, der den Subagenten aufgerufen hat.
|
||||
:::
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Das Modell ID in Ihrer OpenCode-Konfiguration verwendet das Format `provider/model-id`. Wenn Sie beispielsweise [OpenCode Zen](/docs/zen) verwenden, würden Sie `opencode/gpt-5.1-codex` für GPT 5.1 Codex verwenden.
|
||||
|
||||
---
|
||||
|
||||
### Tools
|
||||
|
||||
Steuern Sie mit der `tools`-Konfiguration, welche Tools in diesem Agent verfügbar sind. Sie können bestimmte Tools aktivieren oder deaktivieren, indem Sie sie auf `true` oder `false` setzen.
|
||||
|
||||
```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
|
||||
Die agentenspezifische Konfiguration überschreibt die globale Konfiguration.
|
||||
:::
|
||||
|
||||
Sie können Platzhalter auch verwenden, um mehrere Werkzeuge gleichzeitig zu steuern. So deaktivieren Sie beispielsweise alle Tools von einem 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).
|
||||
|
||||
---
|
||||
|
||||
### Permissions
|
||||
|
||||
Sie können Berechtigungen konfigurieren, um zu verwalten, welche Aktionen ein Agent ausführen kann. Derzeit können die Berechtigungen für die Tools `edit`, `bash` und `webfetch` wie folgt konfiguriert werden:
|
||||
|
||||
- `"ask"` – Bitten Sie um Genehmigung, bevor Sie das Tool ausführen
|
||||
- `"allow"` – Alle Vorgänge ohne Genehmigung zulassen
|
||||
- `"deny"` – Deaktivieren Sie das Tool
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Sie können diese Berechtigungen pro Agent überschreiben.
|
||||
|
||||
```json title="opencode.json" {3-5,8-10}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny"
|
||||
},
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"edit": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Sie können Berechtigungen auch in Markdown-Agenten festlegen.
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
Sie können Berechtigungen für bestimmte Bash-Befehle festlegen.
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"git push": "ask",
|
||||
"grep *": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dies kann ein Kugelmuster annehmen.
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"git *": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Und Sie können den Platzhalter `*` auch verwenden, um Berechtigungen für alle Befehle zu verwalten.
|
||||
Da die letzte übereinstimmende Regel Vorrang hat, setzen Sie zuerst den Platzhalter `*` und danach bestimmte Regeln.
|
||||
|
||||
```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).
|
||||
|
||||
---
|
||||
|
||||
### Mode
|
||||
|
||||
Steuern Sie den Modus des Agenten mit der `mode`-Konfiguration. Mit der Option `mode` wird festgelegt, wie der Agent verwendet werden kann.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"mode": "subagent"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Die Option `mode` kann auf `primary`, `subagent` oder `all` gesetzt werden. Wenn kein `mode` angegeben ist, wird standardmäßig `all` verwendet.
|
||||
|
||||
---
|
||||
|
||||
### Hidden
|
||||
|
||||
Verstecken Sie einen Subagenten im Autovervollständigungsmenü `@` mit `hidden: true`. Nützlich für interne Subagenten, die nur programmgesteuert von anderen Agenten über das Task-Tool aufgerufen werden sollten.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"internal-helper": {
|
||||
"mode": "subagent",
|
||||
"hidden": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dies wirkt sich nur auf die Benutzersichtbarkeit im Autovervollständigungsmenü aus. Versteckte Agenten können weiterhin vom Modell über das Aufgabentool aufgerufen werden, sofern die Berechtigungen dies zulassen.
|
||||
|
||||
:::note
|
||||
Gilt nur für `mode: subagent`-Agenten.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Aufgabenberechtigungen
|
||||
|
||||
Steuern Sie, welche Subagenten ein Agent über das Task-Tool mit `permission.task` aufrufen kann. Verwendet Glob-Muster für eine flexible Zuordnung.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"orchestrator": {
|
||||
"mode": "primary",
|
||||
"permission": {
|
||||
"task": {
|
||||
"*": "deny",
|
||||
"orchestrator-*": "allow",
|
||||
"code-reviewer": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Bei der Einstellung `deny` wird der Subagent vollständig aus der Beschreibung des Aufgabentools entfernt, sodass das Modell nicht versucht, ihn aufzurufen.
|
||||
|
||||
:::tip
|
||||
Die Regeln werden der Reihe nach ausgewertet und die **letzte übereinstimmende Regel gewinnt**. Im obigen Beispiel entspricht `orchestrator-planner` sowohl `*` (verweigern) als auch `orchestrator-*` (zulassen), aber da `orchestrator-*` nach `*` kommt, ist das Ergebnis `allow`.
|
||||
:::
|
||||
|
||||
:::tip
|
||||
Benutzer können jeden Subagenten immer direkt über das Autovervollständigungsmenü `@` aufrufen, auch wenn die Aufgabenberechtigungen des Agenten sterben würden.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Color
|
||||
|
||||
Passen Sie das visuelle Erscheinungsbild des Agenten im UI mit der Option `color` an. Dies wirkt sich darauf aus, wie der Agent in der Benutzeroberfläche angezeigt wird.
|
||||
|
||||
Verwenden Sie eine gültige Hex-Farbe (e.g., `#FF5733`) oder Designfarbe: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"creative": {
|
||||
"color": "#ff6b6b"
|
||||
},
|
||||
"code-reviewer": {
|
||||
"color": "accent"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Top P
|
||||
|
||||
Steuern Sie die Antwortvielfalt mit der Option `top_p`. Alternative zur Temperatur zur Kontrolle des Zufalls.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"brainstorm": {
|
||||
"top_p": 0.9
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Die Werte reichen von 0.0 bis 1.0. Die meisten Werte sind fokussierter, die höheren Werte vielfältiger.
|
||||
|
||||
---
|
||||
|
||||
### Additional
|
||||
|
||||
Alle anderen Optionen, die Sie in Ihrer Agentenkonfiguration angeben, werden als Modelloptionen **direkt** an den Anbieter weitergeleitet. Dadurch können Sie anbieterspezifische Funktionen und Parameter nutzen.
|
||||
|
||||
Mit den Argumentationsmodellen von OpenAI können Sie beispielsweise den Argumentationsaufwand steuern:
|
||||
|
||||
```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"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Diese zusätzlichen Optionen sind modell- und anbieterspezifisch. Überprüfen Sie die Dokumentation Ihres Anbieters auf verfügbare Parameter.
|
||||
|
||||
:::tip
|
||||
Führen Sie `opencode models` aus, um eine Liste der verfügbaren Modelle anzubieten.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Erstellen Sie Agenten
|
||||
|
||||
Mit dem folgenden Befehl können Sie neue Agenten erstellen:
|
||||
|
||||
```bash
|
||||
opencode agent create
|
||||
```
|
||||
|
||||
Dieser interaktive Befehl führt zu Folgendem:
|
||||
|
||||
1. Fragen Sie, wo der Agent gespeichert werden soll. global oder projektspezifisch.
|
||||
2. Beschreibung dessen, was der Agent tun soll.
|
||||
3. Generieren Sie eine entsprechende Systemaufforderung und -kennung.
|
||||
4. Hier können Sie auswählen, auf welche Tools der Agent zugreifen kann.
|
||||
5. Erstellen Sie abschließend eine Markdown-Datei mit der Agentenkonfiguration.
|
||||
|
||||
---
|
||||
|
||||
## Anwendungsfälle
|
||||
|
||||
Hier sind einige häufige Anwendungsfälle für verschiedene Agenten.
|
||||
|
||||
- **Build-Agent**: Vollständige Entwicklungsarbeit mit allen aktivierten Tools
|
||||
- **Planagent**: Analyse und Planung ohne Änderungen
|
||||
- **Review-Agent**: Codeüberprüfung mit schreibgeschütztem Zugriff plus Dokumentationstools
|
||||
- **Debug-Agent**: Konzentriert sich auf die Untersuchung mit aktivierten Bash- und Lesetools
|
||||
- **Docs-Agent**: Schreiben von Dokumentationen mit Dateioperationen, aber ohne Systembefehle
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
Hier sind einige Beispielagenten, die für Sie nützlich sein könnten.
|
||||
|
||||
:::tip
|
||||
Haben Sie einen Agenten, den Sie gerne teilen möchten? [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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Sicherheitsprüfer
|
||||
|
||||
```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/de/cli.mdx
Normal file
601
packages/web/src/content/docs/de/cli.mdx
Normal file
@@ -0,0 +1,601 @@
|
||||
---
|
||||
title: CLI
|
||||
description: OpenCode CLI Optionen und Befehle.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
Der OpenCode CLI startet standardmäßig den [TUI](/docs/tui), wenn er ohne Argumente ausgeführt wird.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Es akzeptiert aber auch Befehle, wie auf dieser Seite dokumentiert. Dadurch können Sie programmgesteuert mit OpenCode interagieren.
|
||||
|
||||
```bash
|
||||
opencode run "Explain how closures work in JavaScript"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### tui
|
||||
|
||||
Starten Sie die Terminalbenutzeroberfläche OpenCode.
|
||||
|
||||
```bash
|
||||
opencode [project]
|
||||
```
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ------------ | ----- | ------------------------------------------ |
|
||||
| `--continue` | `-c` | Setzen Sie die letzte Sitzung fort |
|
||||
| `--session` | `-s` | Sitzung ID zum Fortfahren |
|
||||
| `--prompt` | | Zur Verwendung auffordern |
|
||||
| `--model` | `-m` | Zu verwendendes Modell in der Form provider/model |
|
||||
| `--agent` | | Zu verwendender Agent |
|
||||
| `--port` | | Port zum Abhören |
|
||||
| `--hostname` | | Hostname zum Abhören |
|
||||
|
||||
---
|
||||
|
||||
## Befehle
|
||||
|
||||
Der OpenCode CLI verfügt außerdem über die folgenden Befehle.
|
||||
|
||||
---
|
||||
|
||||
### agent
|
||||
|
||||
Agenten für OpenCode verwalten.
|
||||
|
||||
```bash
|
||||
opencode agent [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### attach
|
||||
|
||||
Schließen Sie ein Terminal an einen bereits laufenden OpenCode-Backend-Server an, der über die Befehle `serve` oder `web` gestartet wurde.
|
||||
|
||||
```bash
|
||||
opencode attach [url]
|
||||
```
|
||||
|
||||
Dies ermöglicht die Verwendung von TUI mit einem Remote-Backend OpenCode. Zum Beispiel:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ----------- | ----- | --------------------------------- |
|
||||
| `--dir` | | Arbeitsverzeichnis zum Starten von TUI in |
|
||||
| `--session` | `-s` | Sitzung ID zum Fortfahren |
|
||||
|
||||
---
|
||||
|
||||
#### create
|
||||
|
||||
Erstellen Sie einen neuen Agenten mit benutzerdefinierter Konfiguration.
|
||||
|
||||
```bash
|
||||
opencode agent create
|
||||
```
|
||||
|
||||
Dieser Befehl führt Sie durch die Erstellung eines neuen Agenten mit einer benutzerdefinierten Systemeingabeaufforderung und Toolkonfiguration.
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
|
||||
Hören Sie sich alle verfügbaren Agenten an.
|
||||
|
||||
```bash
|
||||
opencode agent list
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### auth
|
||||
|
||||
Befehl zum Verwalten von Anmeldeinformationen und Anmelden für Anbieter.
|
||||
|
||||
```bash
|
||||
opencode auth [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### login
|
||||
|
||||
OpenCode wird von der Anbieterliste bei [Models.dev](https://models.dev) unterstützt, sodass Sie `opencode auth login` verwenden können, um API-Schlüssel für jeden Anbieter zu konfigurieren, den Sie verwenden möchten. Dies wird in `~/.local/share/opencode/auth.json` gespeichert.
|
||||
|
||||
```bash
|
||||
opencode auth login
|
||||
```
|
||||
|
||||
Wenn OpenCode startet, lädt es den Anbieter aus der Anmeldeinformationsdatei. Und ob in Ihren Umgebungen Schlüssel sind oder in Ihrem Projekt eine `.env`-Datei vorhanden ist.
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
|
||||
Listet alle authentifizierten Anbieter auf, wie in der Anmeldeinformationsdatei gespeichert.
|
||||
|
||||
```bash
|
||||
opencode auth list
|
||||
```
|
||||
|
||||
Oder die Kurzversion.
|
||||
|
||||
```bash
|
||||
opencode auth ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
|
||||
Melden Sie sich von einem Anbieter ab, ohne dass es aus der Anmeldeinformationsdatei gelöscht wird.
|
||||
|
||||
```bash
|
||||
opencode auth logout
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### github
|
||||
|
||||
Verwalten Sie den GitHub-Agenten für die Repository-Automatisierung.
|
||||
|
||||
```bash
|
||||
opencode github [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### installieren
|
||||
|
||||
Installieren Sie den GitHub-Agenten in Ihrem Repository.
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
```
|
||||
|
||||
Dadurch wird der erforderliche GitHub-Aktionsworkflow eingerichtet und Sie durch den Konfigurationsprozess geführt. [Learn more](/docs/github).
|
||||
|
||||
---
|
||||
|
||||
#### laufen
|
||||
|
||||
Führen Sie den GitHub-Agenten aus. Dies wird normalerweise in GitHub-Aktionen verwendet.
|
||||
|
||||
```bash
|
||||
opencode github run
|
||||
```
|
||||
|
||||
##### Flaggen
|
||||
|
||||
| Flagge | Beschreibung |
|
||||
| --------- | -------------------------------------- |
|
||||
| `--event` | GitHub Scheinereignis zum Ausführen des Agenten für |
|
||||
| `--token` | GitHub persönliches Zugriffstoken |
|
||||
|
||||
---
|
||||
|
||||
### mcp
|
||||
|
||||
Verwalten Sie den Model Context Protocol-Server.
|
||||
|
||||
```bash
|
||||
opencode mcp [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### add
|
||||
|
||||
Fügen Sie Ihrer Konfiguration einen MCP-Server hinzu.
|
||||
|
||||
```bash
|
||||
opencode mcp add
|
||||
```
|
||||
|
||||
Dieser Befehl führt Sie durch das Hinzufügen eines lokalen oder Remote-Servers MCP.
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
|
||||
Hören Sie sich alle konfigurierten MCP-Server und deren Verbindungsstatus an.
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
```
|
||||
|
||||
Oder nutzen Sie die Kurzversion.
|
||||
|
||||
```bash
|
||||
opencode mcp ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### auth
|
||||
|
||||
Authentifizieren Sie sich mit einem OAuth-fähigen MCP-Server.
|
||||
|
||||
```bash
|
||||
opencode mcp auth [name]
|
||||
```
|
||||
|
||||
Wenn Sie keinen Servernamen angeben, werden Sie autorisiert, einen der verfügbaren OAuth-fähigen Server auszuwählen.
|
||||
|
||||
Sie können auch OAuth-fähige Server und deren Authentifizierungsstatus auflisten.
|
||||
|
||||
```bash
|
||||
opencode mcp auth list
|
||||
```
|
||||
|
||||
Oder nutzen Sie die Kurzversion.
|
||||
|
||||
```bash
|
||||
opencode mcp auth ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
|
||||
Entfernen Sie OAuth-Anmeldeinformationen für einen MCP-Server.
|
||||
|
||||
```bash
|
||||
opencode mcp logout [name]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### debug
|
||||
|
||||
Beheben Sie OAuth-Verbindungsprobleme für einen MCP-Server.
|
||||
|
||||
```bash
|
||||
opencode mcp debug <name>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### models
|
||||
|
||||
Hören Sie sich alle verfügbaren Modelle der konfigurierten Anbieter an.
|
||||
|
||||
```bash
|
||||
opencode models [provider]
|
||||
```
|
||||
|
||||
Dieser Befehl zeigt alle bei Ihren konfigurierten Anbietern verfügbaren Modelle im Format `provider/model` an.
|
||||
|
||||
Dies ist nützlich, um die genauen Modellnamen herauszufinden, die in [your config](/docs/config/) verwendet werden sollen.
|
||||
|
||||
Sie können optional einen Anbieter ID übergeben, um Modelle nach diesem Anbieter zu filtern.
|
||||
|
||||
```bash
|
||||
opencode models anthropic
|
||||
```
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Beschreibung |
|
||||
| ----------- | ------------------------------------------------------------ |
|
||||
| `--refresh` | Aktualisieren Sie den Modellcache von models.dev |
|
||||
| `--verbose` | Verwenden Sie eine ausführlichere Modellausgabe (einschließlich Metadaten wie Kosten) |
|
||||
|
||||
Verwenden Sie das Flag `--refresh`, um die zwischengespeicherte Modellliste zu aktualisieren. Dies ist nützlich, wenn einem Anbieter neue Modelle hinzugefügt wurden und Sie diese in OpenCode sehen möchten.
|
||||
|
||||
```bash
|
||||
opencode models --refresh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### laufen
|
||||
|
||||
Führen Sie Opencode im nicht interaktiven Modus aus, indem Sie direkt eine Eingabeaufforderung übergeben.
|
||||
|
||||
```bash
|
||||
opencode run [message..]
|
||||
```
|
||||
|
||||
Dies ist nützlich für die Skripterstellung, die Automatisierung oder wenn Sie eine schnelle Antwort wünschen, ohne den vollständigen TUI zu starten. Zum Beispiel.
|
||||
|
||||
```bash "opencode run"
|
||||
opencode run Explain the use of context in Go
|
||||
```
|
||||
|
||||
Sie können auch eine Verbindung zu einer laufenden `opencode serve`-Instanz herstellen, um bei jedem Lauf Kaltstartzeiten für den MCP-Server zu vermeiden:
|
||||
|
||||
```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"
|
||||
```
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ------------ | ----- | ------------------------------------------------------------------ |
|
||||
| `--command` | | Der auszuführende Befehl: Nachricht für args | verwenden
|
||||
| `--continue` | `-c` | Setzen Sie die letzte Sitzung fort |
|
||||
| `--session` | `-s` | Sitzung ID zum Fortfahren |
|
||||
| `--share` | | Teilen Sie die Sitzung |
|
||||
| `--model` | `-m` | Zu verwendendes Modell in der Form provider/model |
|
||||
| `--agent` | | Zu verwendender Agent |
|
||||
| `--file` | `-f` | Datei(en) zum Anhängen an die Nachricht |
|
||||
| `--format` | | Format: Standard (formatiert) oder JSON (rohe JSON-Ereignisse) |
|
||||
| `--title` | | Titel für die Sitzung (verwendet eine verkürzte Eingabeaufforderung, wenn kein Wert angegeben wird) |
|
||||
| `--attach` | | An einen laufenden Opencode-Server anschließen (e.g., http://localhost:4096) |
|
||||
| `--port` | | Port für den lokalen Server (standardmäßig zufälliger Port) |
|
||||
|
||||
---
|
||||
|
||||
### serve
|
||||
|
||||
Starten Sie einen Headless-OpenCode-Server für den API-Zugriff. Sehen Sie sich [server docs](/docs/server) für die vollständige HTTP-Schnittstelle an.
|
||||
|
||||
```bash
|
||||
opencode serve
|
||||
```
|
||||
|
||||
Dadurch wird ein HTTP-Server gestartet, der API-Zugriff auf Opencode-Funktionalität ohne die TUI-Schnittstelle bietet. Legen Sie `OPENCODE_SERVER_PASSWORD` fest, um die HTTP-Basisauthentifizierung zu aktivieren (Benutzername ist standardmäßig `opencode`).
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Beschreibung |
|
||||
| ------------ | ------------------------------------------ |
|
||||
| `--port` | Port zum Abhören |
|
||||
| `--hostname` | Hostname zum Abhören |
|
||||
| `--mdns` | mDNS-Erkennung aktivieren |
|
||||
| `--cors` | Zusätzliche Browserursprung(e), um CORS | zulassen
|
||||
|
||||
---
|
||||
|
||||
### Sitzung
|
||||
|
||||
Verwalten Sie OpenCode-Sitzungen.
|
||||
|
||||
```bash
|
||||
opencode session [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
|
||||
Hören Sie sich alle OpenCode-Sitzungen an.
|
||||
|
||||
```bash
|
||||
opencode session list
|
||||
```
|
||||
|
||||
##### Flaggen
|
||||
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ------------- | ----- | ------------------------------------ |
|
||||
| `--max-count` | `-n` | Auf N letzte Sitzungen beschränken |
|
||||
| `--format` | | Ausgabeformat: Tabelle oder JSON (Tabelle) |
|
||||
|
||||
---
|
||||
|
||||
### stats
|
||||
|
||||
Zeigen Sie Token-Nutzungs- und Kostenstatistiken für Ihre OpenCode-Sitzungen an.
|
||||
|
||||
```bash
|
||||
opencode stats
|
||||
```
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Beschreibung |
|
||||
| ----------- | --------------------------------------------------------------------------- |
|
||||
| `--days` | Statistiken für die letzten N Tage anzeigen (alle Zeiten) |
|
||||
| `--tools` | Anzahl der angebotenen Werkzeuge (alle) |
|
||||
| `--models` | Aufschlüsselung der Modellnutzung anzeigen (standardmäßig ausgeblendet). Übergeben Sie eine Zahl, um das obere N | .
|
||||
| `--project` | Nach Projekt filtern (alle Projekte, leere Zeichenfolge: aktuelles Projekt) |
|
||||
|
||||
---
|
||||
|
||||
### export
|
||||
|
||||
Sitzungsdaten als JSON exportieren.
|
||||
|
||||
```bash
|
||||
opencode export [sessionID]
|
||||
```
|
||||
|
||||
Wenn Sie keine Sitzung ID angeben, werden Sie berechtigt, eine der verfügbaren Sitzungen auszuwählen.
|
||||
|
||||
---
|
||||
|
||||
### import
|
||||
|
||||
Importieren Sie Sitzungsdaten aus einer JSON-Datei oder einer OpenCode-Freigabe URL.
|
||||
|
||||
```bash
|
||||
opencode import <file>
|
||||
```
|
||||
|
||||
Sie können aus einer lokalen Datei oder einer OpenCode-Freigabe URL importieren.
|
||||
|
||||
```bash
|
||||
opencode import session.json
|
||||
opencode import https://opncd.ai/s/abc123
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### web
|
||||
|
||||
Starten Sie einen Headless-OpenCode-Server mit einer Weboberfläche.
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
```
|
||||
|
||||
Dadurch wird ein HTTP-Server gestartet und ein Webbrowser geöffnet, um über eine Webschnittstelle auf OpenCode zuzugreifen. Legen Sie `OPENCODE_SERVER_PASSWORD` fest, um die HTTP-Basisauthentifizierung zu aktivieren (Benutzername ist standardmäßig `opencode`).
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Beschreibung |
|
||||
| ------------ | ------------------------------------------ |
|
||||
| `--port` | Port zum Abhören |
|
||||
| `--hostname` | Hostname zum Abhören |
|
||||
| `--mdns` | mDNS-Erkennung aktivieren |
|
||||
| `--cors` | Zusätzliche Browserursprung(e), um CORS | zulassen
|
||||
|
||||
---
|
||||
|
||||
### acp
|
||||
|
||||
Starten Sie einen ACP-Server (Agent Client Protocol).
|
||||
|
||||
```bash
|
||||
opencode acp
|
||||
```
|
||||
|
||||
Dieser Befehl startet einen ACP-Server, der über stdin/stdout mit nd-JSON kommuniziert.
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Beschreibung |
|
||||
| ------------ | --------------------- |
|
||||
| `--cwd` | Arbeitsverzeichnis |
|
||||
| `--port` | Port zum Abhören |
|
||||
| `--hostname` | Hostname zum Abhören |
|
||||
|
||||
---
|
||||
|
||||
### uninstall
|
||||
|
||||
Deinstallieren Sie OpenCode und entfernen Sie alle zugehörigen Dateien.
|
||||
|
||||
```bash
|
||||
opencode uninstall
|
||||
```
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| --------------- | ----- | ------------------------------------------- |
|
||||
| `--keep-config` | `-c` | Konfigurationsdateien behalten |
|
||||
| `--keep-data` | `-d` | Sitzungsdaten und Snapshots aufbewahren |
|
||||
| `--dry-run` | | Zeigt, was entfernt werden würde, ohne | zu entfernen
|
||||
| `--force` | `-f` | Bestätigungsaufforderungen überspringen |
|
||||
|
||||
---
|
||||
|
||||
### upgrade
|
||||
|
||||
Aktualisiert Opencode auf die neueste Version oder eine bestimmte Version.
|
||||
|
||||
```bash
|
||||
opencode upgrade [target]
|
||||
```
|
||||
|
||||
Um auf die neueste Version zu aktualisieren.
|
||||
|
||||
```bash
|
||||
opencode upgrade
|
||||
```
|
||||
|
||||
Um auf eine bestimmte Version zu aktualisieren.
|
||||
|
||||
```bash
|
||||
opencode upgrade v0.1.48
|
||||
```
|
||||
|
||||
#### Flaggen
|
||||
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ---------- | ----- | ----------------------------------------------------------------- |
|
||||
| `--method` | `-m` | Die verwendete Installationsmethode; Curl, NPM, PNPM, Brötchen, Brauen |
|
||||
|
||||
---
|
||||
|
||||
## Globale Flaggen
|
||||
|
||||
Der Opencode CLI akzeptiert die folgenden globalen Flags.
|
||||
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| -------------- | ----- | ------------------------------------ |
|
||||
| `--help` | `-h` | Hilfe anzeigen |
|
||||
| `--version` | `-v` | Versionsnummer drucken |
|
||||
| `--print-logs` | | Protokolle nach Standard drucken |
|
||||
| `--log-level` | | Protokollebene (DEBUG, INFO, WARN, ERROR) |
|
||||
|
||||
---
|
||||
|
||||
## Umgebungsvariablen
|
||||
|
||||
OpenCode kann mithilfe von Umgebungsvariablen konfiguriert werden.
|
||||
|
||||
| Variable | Geben Sie | eine Beschreibung |
|
||||
| ------------------------------------- | ------- | ------------------------------------------------- |
|
||||
| `OPENCODE_AUTO_SHARE` | boolescher Wert | Sitzungen automatisch teilen |
|
||||
| `OPENCODE_GIT_BASH_PATH` | Zeichenfolge | Pfad zur ausführbaren Git Bash-Datei unter Windows |
|
||||
| `OPENCODE_CONFIG` | Zeichenfolge | Pfad zur Konfigurationsdatei |
|
||||
| `OPENCODE_CONFIG_DIR` | Zeichenfolge | Pfad zum Konfigurationsverzeichnis |
|
||||
| `OPENCODE_CONFIG_CONTENT` | Zeichenfolge | Inline-JSON-Konfigurationsinhalt |
|
||||
| `OPENCODE_DISABLE_AUTOUPDATE` | boolescher Wert | Automatische Update-Prüfungen deaktivieren |
|
||||
| `OPENCODE_DISABLE_PRUNE` | boolescher Wert | Bereinigung alter Daten deaktivieren |
|
||||
| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolescher Wert | Deaktivieren Sie die automatische Aktualisierung von Terminaltiteln |
|
||||
| `OPENCODE_PERMISSION` | Zeichenfolge | Inline-JSON-Berechtigungskonfiguration |
|
||||
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolescher Wert | Standard-Plugins deaktivieren |
|
||||
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolescher Wert | Automatische LSP-Server-Downloads deaktivieren |
|
||||
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolescher Wert | Experimentelle Modelle aktivieren |
|
||||
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolescher Wert | Automatische Kontextkomprimierung deaktivieren |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolescher Wert | Deaktivieren Sie das Lesen von `.claude` (Eingabeaufforderung + Fähigkeiten) |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolescher Wert | Deaktivieren Sie das Lesen von `~/.claude/CLAUDE.md` |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolescher Wert | Deaktivieren Sie das Laden von `.claude/skills` |
|
||||
| `OPENCODE_DISABLE_MODELS_FETCH` | boolescher Wert | Deaktivieren Sie das gesammelte Modell von Remote-Quellen |
|
||||
| `OPENCODE_FAKE_VCS` | Zeichenfolge | Gefälschter VCS-Anbieter zu Testzwecken |
|
||||
| `OPENCODE_DISABLE_FILETIME_CHECK` | boolescher Wert | Dateizeitprüfung zur Optimierung deaktivieren |
|
||||
| `OPENCODE_CLIENT` | Zeichenfolge | Client-ID (standardmäßig `cli`) |
|
||||
| `OPENCODE_ENABLE_EXA` | boolescher Wert | Exa-Websuchtools aktivieren |
|
||||
| `OPENCODE_SERVER_PASSWORD` | Zeichenfolge | Aktivieren Sie die Basisauthentifizierung für `serve`/`web` |
|
||||
| `OPENCODE_SERVER_USERNAME` | Zeichenfolge | Benutzernamen für die Basisauthentifizierung überschreiben (Standard `opencode`) |
|
||||
| `OPENCODE_MODELS_URL` | Zeichenfolge | Benutzerdefinierte URL zum Erhalten der Modellkonfiguration |
|
||||
|
||||
---
|
||||
|
||||
### Experimental
|
||||
|
||||
Diese Umgebungsvariablen ermöglichen experimentelle Funktionen, die sich ändern oder entfernen können.
|
||||
|
||||
| Variable | Geben Sie | eine Beschreibung |
|
||||
| ----------------------------------------------- | ------- | --------------------------------------- |
|
||||
| `OPENCODE_EXPERIMENTAL` | boolescher Wert | Alle experimentellen Funktionen aktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolescher Wert | Symbolerkennung aktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolescher Wert | Kopieren bei Auswahl in TUI | deaktivieren
|
||||
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | Zahl | Standard-Timeout für Bash-Befehle in ms |
|
||||
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | Zahl | Maximale Ausgabetokens für LLM-Antworten |
|
||||
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolescher Wert | Dateiüberwachung für das gesamte Verzeichnis aktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_OXFMT` | boolescher Wert | Oxfmt-Formatierer aktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolescher Wert | Experimentelles LSP-Tool aktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolescher Wert | Dateiüberwachung deaktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_EXA` | boolescher Wert | Experimentelle Exa-Funktionen aktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolescher Wert | Experimentelle LSP-Typprüfung aktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolescher Wert | Experimentelle Markdown-Funktionen aktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolescher Wert | Planmodus aktivieren |
|
||||
323
packages/web/src/content/docs/de/commands.mdx
Normal file
323
packages/web/src/content/docs/de/commands.mdx
Normal file
@@ -0,0 +1,323 @@
|
||||
---
|
||||
title: Befehle
|
||||
description: Erstellen Sie benutzerdefinierte Befehle für sich wiederholende Aufgaben.
|
||||
---
|
||||
|
||||
Mit benutzerdefinierten Befehlen können Sie eine Eingabeaufforderung angeben, die ausgeführt werden soll, wenn dieser Befehl im TUI ausgeführt wird.
|
||||
|
||||
```bash frame="none"
|
||||
/my-command
|
||||
```
|
||||
|
||||
Benutzerdefinierte Befehle gibt es zusätzlich zu den integrierten Befehlen wie `/init`, `/undo`, `/redo`, `/share`, `/help`. [Learn more](/docs/tui#commands).
|
||||
|
||||
---
|
||||
|
||||
## Befehlsdateien erstellen
|
||||
|
||||
Erstellen Sie Markdown-Dateien im Verzeichnis `commands/`, um benutzerdefinierte Befehle zu definieren.
|
||||
|
||||
Erstellen Sie `.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.
|
||||
```
|
||||
|
||||
Der Frontmatter definiert Befehlseigenschaften. Der Inhalt wird zur Vorlage.
|
||||
|
||||
Verwenden Sie den Befehl, indem Sie `/` folgen vom Befehlsnamen eingeben.
|
||||
|
||||
```bash frame="none"
|
||||
"/test"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Konfigurieren
|
||||
|
||||
Sie können benutzerdefinierte Befehle über die OpenCode-Konfiguration hinzufügen oder indem Sie Markdown-Dateien im Verzeichnis `commands/` erstellen.
|
||||
|
||||
---
|
||||
|
||||
### JSON
|
||||
|
||||
Verwenden Sie die Option `command` in Ihrem 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Jetzt können Sie diesen Befehl im TUI ausführen:
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Markdown
|
||||
|
||||
Sie können Befehle auch mithilfe von Markdown-Dateien definieren. Platzieren Sie sie in:
|
||||
|
||||
- Global: `~/.config/opencode/commands/`
|
||||
- Pro 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.
|
||||
```
|
||||
|
||||
Der Name der Markdown-Datei wird zum Befehlsnamen. Zum Beispiel `test.md` lässt
|
||||
Du läufst:
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Prompt-Konfiguration
|
||||
|
||||
Die Eingabeaufforderungen für die benutzerdefinierten Befehle unterstützen mehrere spezielle Platzhalter und Syntax.
|
||||
|
||||
---
|
||||
|
||||
### Arguments
|
||||
|
||||
Übergeben Sie Argumente an Befehle mithilfe des Platzhalters `$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.
|
||||
```
|
||||
|
||||
Führen Sie den Befehl mit Argumenten aus:
|
||||
|
||||
```bash frame="none"
|
||||
/component Button
|
||||
```
|
||||
|
||||
Und `$ARGUMENTS` wird durch `Button` ersetzt.
|
||||
|
||||
Sie können auch über Positionsparameter auf einzelne Argumente zugreifen:
|
||||
|
||||
- `$1` – Erstes Argument
|
||||
- `$2` – Zweites Argument
|
||||
- `$3` – Drittes Argument
|
||||
- Und so weiter...
|
||||
|
||||
Zum Beispiel:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Führen Sie den Befehl aus:
|
||||
|
||||
```bash frame="none"
|
||||
/create-file config.json src "{ \"key\": \"value\" }"
|
||||
```
|
||||
|
||||
Dies ersetzt:
|
||||
|
||||
- `$1` mit `config.json`
|
||||
- `$2` mit `src`
|
||||
- `$3` mit `{ "key": "value" }`
|
||||
|
||||
---
|
||||
|
||||
### Shell-Ausgabe
|
||||
|
||||
Verwenden Sie _!`command`_, um die Ausgabe [bash command](/docs/tui#bash-commands) in Ihre Eingabeaufforderung einzufügen.
|
||||
|
||||
So erstellen Sie beispielsweise einen benutzerdefinierten Befehl, der die Testabdeckung analysiert:
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
Oder um die letzten Änderungen zu überprüfen:
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
Befehle werden im Stammverzeichnis Ihres Projekts ausgeführt und ihre Ausgabe wird Teil der Eingabeaufforderung.
|
||||
|
||||
---
|
||||
|
||||
### Dateiverweise
|
||||
|
||||
Fügen Sie Dateien in Ihren Befehl ein, indem Sie `@` folgend vom Dateinamen verwenden.
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
Der Dateiinhalt wird automatisch in die Eingabeaufforderung einbezogen.
|
||||
|
||||
---
|
||||
|
||||
## Options
|
||||
|
||||
Schauen wir uns die Konfigurationsmöglichkeiten im Detail an.
|
||||
|
||||
---
|
||||
|
||||
### Template
|
||||
|
||||
Die Option `template` die Eingabeaufforderung, die an LLM gesendet wird, wenn der Befehl ausgeführt wird.
|
||||
|
||||
```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."
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dies ist eine **erforderliche** Konfigurationsoption.
|
||||
|
||||
---
|
||||
|
||||
### Beschreibung
|
||||
|
||||
Verwenden Sie die Option `description`, um eine kurze Beschreibung der Funktion des Befehls bereitzustellen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"test": {
|
||||
"description": "Run tests with coverage"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dies wird als Beschreibung im TUI angezeigt, wenn Sie den Befehl eingeben.
|
||||
|
||||
---
|
||||
|
||||
### Agent
|
||||
|
||||
Verwenden Sie die `agent`-Konfiguration, um optional anzugeben, welche [agent](/docs/agents) diesen Befehl ausführen soll.
|
||||
Wenn es sich um einen [subagent](/docs/agents/#subagents) handelt, löst der Befehl standardmäßig einen Subagentenaufruf aus.
|
||||
Um dieses Verhalten zu deaktivieren, setzen Sie `subtask` auf `false`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"review": {
|
||||
"agent": "plan"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dies ist eine **optionale** Konfigurationsoption. Wenn nicht angegeben, wird standardmäßig Ihr aktueller Agent verwendet.
|
||||
|
||||
---
|
||||
|
||||
### Subtask
|
||||
|
||||
Verwenden Sie den booleschen Wert `subtask`, um zu erzwingen, dass der Befehl einen [subagent](/docs/agents/#subagents)-Aufruf auslöst.
|
||||
Dies ist nützlich, wenn Sie möchten, dass der Befehl Ihren primären Kontext nicht verunreinigt und den Agenten dazu zwingt, als Subagent zu fungieren.
|
||||
auch wenn `mode` in der [agent](/docs/agents)-Konfiguration auf `primary` gesetzt ist.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"analyze": {
|
||||
"subtask": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dies ist eine **optionale** Konfigurationsoption.
|
||||
|
||||
---
|
||||
|
||||
### Modell
|
||||
|
||||
Verwenden Sie die `model`-Konfiguration, um das Standardmodell für diesen Befehl zu überschreiben.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"analyze": {
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dies ist eine **optionale** Konfigurationsoption.
|
||||
|
||||
---
|
||||
|
||||
## Eingebaut
|
||||
|
||||
Opencode enthält mehrere integrierte Befehle wie `/init`, `/undo`, `/redo`, `/share`, `/help`; [learn more](/docs/tui#commands).
|
||||
|
||||
:::note
|
||||
Benutzerdefinierte Befehle können integrierte Befehle überschreiben.
|
||||
:::
|
||||
|
||||
Wenn Sie einen benutzerdefinierten Befehl mit demselben Namen definieren, überschreibt dieser den integrierten Befehl.
|
||||
685
packages/web/src/content/docs/de/config.mdx
Normal file
685
packages/web/src/content/docs/de/config.mdx
Normal file
@@ -0,0 +1,685 @@
|
||||
---
|
||||
title: Konfig
|
||||
description: Verwenden Sie die Konfiguration OpenCode JSON.
|
||||
---
|
||||
|
||||
Sie können OpenCode mithilfe einer JSON-Konfigurationsdatei konfigurieren.
|
||||
|
||||
---
|
||||
|
||||
## Format
|
||||
|
||||
OpenCode unterstützt die Formate **JSON** und **JSONC** (JSON mit Kommentaren).
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
// Theme configuration
|
||||
"theme": "opencode",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"autoupdate": true,
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Locations
|
||||
|
||||
Sie können Ihre Konfiguration an verschiedenen Orten platzieren und sie haben eine
|
||||
andere Rangfolge.
|
||||
|
||||
:::note
|
||||
Konfigurationsdateien werden **zusammengeführt**, nicht ersetzt.
|
||||
:::
|
||||
|
||||
Konfigurationsdateien werden zusammengeführt und nicht ersetzt. Einstellungen aus den folgenden Konfigurationsspeicherorten werden kombiniert. Spätere Konfigurationen überschreiben frühere nur bei Schlüsselkonflikten. Es bleiben keine widersprüchlichen Einstellungen aus allen Konfigurationen erhalten.
|
||||
|
||||
Wenn Ihre globale Konfiguration beispielsweise `theme: "opencode"` und `autoupdate: true` und Ihre Projektkonfiguration `model: "anthropic/claude-sonnet-4-5"` festlegt, umfasst die endgültige Konfiguration alle drei Einstellungen.
|
||||
|
||||
---
|
||||
|
||||
### Rangfolge
|
||||
|
||||
Konfigurationsquellen werden in dieser Reihenfolge geladen (spätere Quellen überschreiben frühere):
|
||||
|
||||
1. **Remote-Konfiguration** (von `.well-known/opencode`) – Organisationsstandards
|
||||
2. **Globale Konfiguration** (`~/.config/opencode/opencode.json`) – Benutzereinstellungen
|
||||
3. **Benutzerdefinierte Konfiguration** (`OPENCODE_CONFIG` env var) – benutzerdefinierte Überschreibungen
|
||||
4. **Projektkonfiguration** (`opencode.json` im Projekt) – projektspezifische Einstellungen
|
||||
5. **`.opencode` Verzeichnisse** – Agenten, Befehle, Plugins
|
||||
6. **Inline-Konfiguration** (`OPENCODE_CONFIG_CONTENT` env var) – Laufzeitüberschreibungen
|
||||
|
||||
Dies bedeutet, dass Projektkonfigurationen globale Standardeinstellungen überschreiben können und globale Konfigurationen Remote-Organisationsstandards überschreiben können.
|
||||
|
||||
:::note
|
||||
Die Verzeichnisse `.opencode` und `~/.config/opencode` verwenden **Pluralnamen** für Unterverzeichnisse: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` und `themes/`. Aus Gründen der Abwärtskompatibilität werden auch einzelne Namen (e.g., `agent/`) unterstützt.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Remote
|
||||
|
||||
Organisationen können die Standardkonfiguration über den Endpunkt `.well-known/opencode` bereitstellen. Dieser wird automatisch abgerufen, wenn Sie sich bei einem Anbieter authentifizieren, der dies unterstützt.
|
||||
|
||||
Zuerst wird die Remote-Konfiguration geladen, die als Basisschicht dient. Alle anderen Konfigurationsquellen (global, Projekt) können diese Standardeinstellungen überschreiben.
|
||||
|
||||
Wenn Ihre Organisation beispielsweise MCP-Server bereitstellt, sind die standardmäßig deaktiviert:
|
||||
|
||||
```json title="Remote config from .well-known/opencode"
|
||||
{
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Sie können bestimmte Server in Ihrer lokalen Konfiguration aktivieren:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Global
|
||||
|
||||
Platzieren Sie Ihre globale OpenCode-Konfiguration in `~/.config/opencode/opencode.json`. Verwenden Sie die globale Konfiguration für benutzerweite Einstellungen wie Themen, Anbieter oder Tastenkombinationen.
|
||||
|
||||
Die globale Konfiguration überschreibt die Standardeinstellungen der Remote-Organisation.
|
||||
|
||||
---
|
||||
|
||||
### Pro Projekt
|
||||
|
||||
Fügen Sie `opencode.json` in Ihrem Projektstamm hinzu. Die Projektkonfiguration hat unter den Standardkonfigurationsdateien die höchste Priorität – sie überschreibt sowohl globale als auch Remote-Konfigurationen.
|
||||
|
||||
:::tip
|
||||
Platzieren Sie die projektspezifische Konfiguration im Stammverzeichnis Ihres Projekts.
|
||||
:::
|
||||
|
||||
Wenn OpenCode gestartet wird, sucht es im aktuellen Verzeichnis nach einer Konfigurationsdatei oder durchsucht das nächstgelegene Git-Verzeichnis.
|
||||
|
||||
Dies kann auch sicher in Git eingecheckt werden und dasselbe Schema wie das globale verwenden.
|
||||
|
||||
---
|
||||
|
||||
### Benutzerdefinierter Pfad
|
||||
|
||||
Geben Sie mithilfe der Umgebungsvariablen `OPENCODE_CONFIG` einen benutzerdefinierten Konfigurationsdateipfad an.
|
||||
|
||||
```bash
|
||||
export OPENCODE_CONFIG=/path/to/my/custom-config.json
|
||||
opencode run "Hello world"
|
||||
```
|
||||
|
||||
Die benutzerdefinierte Konfiguration wird in der Rangfolge zwischen globalen und Projektkonfigurationen geladen.
|
||||
|
||||
---
|
||||
|
||||
### Benutzerdefiniertes Verzeichnis
|
||||
|
||||
Geben Sie mit `OPENCODE_CONFIG_DIR` ein benutzerdefiniertes Konfigurationsverzeichnis an.
|
||||
Umgebungsvariable. Dieses Verzeichnis wird nach Agenten, Befehlen,
|
||||
Modi und Plugins genau wie das Standardverzeichnis `.opencode` und sollten
|
||||
folgen der gleichen Struktur.
|
||||
|
||||
```bash
|
||||
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
|
||||
opencode run "Hello world"
|
||||
```
|
||||
|
||||
Das benutzerdefinierte Verzeichnis wird nach den Verzeichnissen global config und `.opencode` geladen, sodass es deren Einstellungen **überschreiben** kann.
|
||||
|
||||
---
|
||||
|
||||
## Schema
|
||||
|
||||
Die Konfigurationsdatei verfügt über ein Schema, das in [**`opencode.ai/config.json`**](https://opencode.ai/config.json) definiert ist.
|
||||
|
||||
Ihr Editor sollte in der Lage sein, basierend auf dem Schema zu validieren und automatisch zu vervollständigen.
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
Sie können TUI-spezifische Einstellungen über die Option `tui` konfigurieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
},
|
||||
"diff_style": "auto"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Verfügbare Optionen:
|
||||
|
||||
- `scroll_acceleration.enabled` – Scrollbeschleunigung im macOS-Stil aktivieren. **Hat Vorrang vor `scroll_speed`.**
|
||||
- `scroll_speed` – Benutzerdefinierter Scrollgeschwindigkeitsmultiplikator (Standard: `3`, Minimum: `1`). Wird ignoriert, wenn `scroll_acceleration.enabled` gleich `true` ist.
|
||||
- `diff_style` – Steuern Sie das Diff-Rendering. `"auto"` passt sich der Terminalbreite an, `"stacked"` zeigt immer eine einzelne Spalte an.
|
||||
|
||||
[Learn more about using the TUI here](/docs/tui).
|
||||
|
||||
---
|
||||
|
||||
### Server
|
||||
|
||||
Sie können Servereinstellungen für die Befehle `opencode serve` und `opencode web` über die Option `server` konfigurieren.
|
||||
|
||||
```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"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Verfügbare Optionen:
|
||||
|
||||
- `port` – Port zum Abhören.
|
||||
- `hostname` – Hostname zum Abhören. Wenn `mdns` aktiviert ist und kein Hostname festgelegt ist, wird standardmäßig `0.0.0.0` verwendet.
|
||||
- `mdns` – mDNS-Diensterkennung aktivieren. Dadurch können andere Geräte im Netzwerk Ihres OpenCode-Servers erkannt werden.
|
||||
- `mdnsDomain` – Benutzerdefinierter Domänenname für den mDNS-Dienst. Standardmäßig ist `opencode.local`. Nützlich für die Ausführung mehrerer Instanzen im selben Netzwerk.
|
||||
- `cors` – Zusätzliche Ursprünge, um CORS zu ermöglichen, wenn der HTTP-Server von einem browserbasierten Client aus verwendet wird. Die Werte müssen vollständige Ursprünge haben (Schema + Host + optionaler Port), z. B. `https://app.example.com`.
|
||||
|
||||
[Learn more about the server here](/docs/server).
|
||||
|
||||
---
|
||||
|
||||
### Tools
|
||||
|
||||
Sie können die Tools, die ein LLM verwenden kann, über die Option `tools` verwalten.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about tools here](/docs/tools).
|
||||
|
||||
---
|
||||
|
||||
### Models
|
||||
|
||||
Sie können die Anbieter und Modelle, die Sie in Ihrer OpenCode-Konfiguration verwenden möchten, über die Optionen `provider`, `model` und `small_model` konfigurieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {},
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"small_model": "anthropic/claude-haiku-4-5"
|
||||
}
|
||||
```
|
||||
|
||||
Die Option `small_model` konfiguriert ein separates Modell für einfache Aufgaben wie die Titelgenerierung. Standardmäßig versucht OpenCode, ein günstigeres Modell zu verwenden, sofern eines bei Ihrem Anbieter verfügbar ist, andernfalls greift es auf Ihr Hauptmodell zurück.
|
||||
|
||||
Zu den Anbieteroptionen können `timeout` und `setCacheKey` gehören:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"options": {
|
||||
"timeout": 600000,
|
||||
"setCacheKey": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `timeout` – Anforderungszeitlimit in Millisekunden (Standard: 300000). Zum Deaktivieren auf `false` setzen.
|
||||
- `setCacheKey` – Stellen Sie sicher, dass immer ein Cache-Schlüssel für den angegebenen Anbieter festgelegt ist.
|
||||
|
||||
Sie können auch [local models](/docs/models#local) konfigurieren. [Learn more](/docs/models).
|
||||
|
||||
---
|
||||
|
||||
#### Anbieterspezifische Optionen
|
||||
|
||||
Einige Anbieter unterstützen zusätzliche Konfigurationsoptionen über die allgemeinen Einstellungen `timeout` und `apiKey` hinaus.
|
||||
|
||||
##### Amazonas-Grundgestein
|
||||
|
||||
Amazon Bedrock unterstützt AWS-spezifische Konfigurationen:
|
||||
|
||||
```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 für Bedrock (standardmäßig `AWS_REGION` env var oder `us-east-1`)
|
||||
- `profile` – AWS benanntes Profil von `~/.aws/credentials` (standardmäßig `AWS_PROFILE` Umgebungsvariable)
|
||||
- `endpoint` – Benutzerdefinierter Endpunkt URL für VPC-Endpunkte. Dies ist ein Alias für die generische Option `baseURL` unter Verwendung der AWS-spezifischen Terminologie. Wenn beide angegeben sind, hat `endpoint` Vorrang.
|
||||
|
||||
:::note
|
||||
Inhabertoken (`AWS_BEARER_TOKEN_BEDROCK` oder `/connect`) haben Vorrang vor der profilbasierten Authentifizierung. Weitere Informationen finden Sie unter [authentication precedence](/docs/providers#authentication-precedence).
|
||||
:::
|
||||
|
||||
[Learn more about Amazon Bedrock configuration](/docs/providers#amazon-bedrock).
|
||||
|
||||
---
|
||||
|
||||
### Themes
|
||||
|
||||
Sie können das Thema, das Sie in Ihrer OpenCode-Konfiguration verwenden möchten, über die Option `theme` konfigurieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": ""
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more here](/docs/themes).
|
||||
|
||||
---
|
||||
|
||||
### Agents
|
||||
|
||||
Über die Option `agent` können Sie spezielle Agenten für bestimmte Aufgaben konfigurieren.
|
||||
|
||||
```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,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Sie können Agenten auch mithilfe von Markdown-Dateien in `~/.config/opencode/agents/` oder `.opencode/agents/` definieren. [Learn more here](/docs/agents).
|
||||
|
||||
---
|
||||
|
||||
### Standardagent
|
||||
|
||||
Sie können den Standardagenten mit der Option `default_agent` festlegen. Dadurch wird bestimmt, welcher Agent verwendet wird, wenn keiner explizit angegeben wird.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"default_agent": "plan"
|
||||
}
|
||||
```
|
||||
|
||||
Der Standardagent muss ein Primäragent (kein Subagent) sein. Dies kann ein integrierter Agent wie `"build"` oder `"plan"` oder ein von Ihnen definierter [custom agent](/docs/agents) sein. Wenn der angegebene Agent nicht existiert oder ein Subagent ist, greift OpenCode mit einer Warnung auf `"build"` zurück.
|
||||
|
||||
Diese Einstellung gilt für alle Schnittstellen: TUI, CLI (`opencode run`), Desktop-App und GitHub Aktion.
|
||||
|
||||
---
|
||||
|
||||
### Sharing
|
||||
|
||||
Sie können die Funktion [share](/docs/share) über die Option `share` konfigurieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"share": "manual"
|
||||
}
|
||||
```
|
||||
|
||||
Dazu braucht es:
|
||||
|
||||
- `"manual"` – Manuelles Teilen über Befehle zulassen (Standard)
|
||||
- `"auto"` – Neue Konversationen automatisch teilen
|
||||
- `"disabled"` – Teile vollständig deaktivieren
|
||||
|
||||
Standardmäßig ist die Freigabe auf den manuellen Modus eingestellt, in dem Sie Konversationen explizit mit dem Befehl `/share` teilen müssen.
|
||||
|
||||
---
|
||||
|
||||
### Befehle
|
||||
|
||||
Sie können benutzerdefinierte Befehle für sich wiederholende Aufgaben über die Option `command` konfigurieren.
|
||||
|
||||
```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",
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Sie können Befehle auch mithilfe von Markdown-Dateien in `~/.config/opencode/commands/` oder `.opencode/commands/` definieren. [Learn more here](/docs/commands).
|
||||
|
||||
---
|
||||
|
||||
### Keybinds
|
||||
|
||||
Sie können Ihre Tastenkombinationen über die Option `keybinds` anpassen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more here](/docs/keybinds).
|
||||
|
||||
---
|
||||
|
||||
### Autoupdate
|
||||
|
||||
OpenCode lädt beim Start automatisch alle neuen Updates herunter. Sie können dies mit der Option `autoupdate` deaktivieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"autoupdate": false
|
||||
}
|
||||
```
|
||||
|
||||
Wenn Sie keine Updates wünschen, aber dringend möchten, wenn eine neue Version verfügbar ist, setzen Sie `autoupdate` auf `"notify"`.
|
||||
Beachten Sie, dass dies nur funktioniert, wenn es nicht mit einem Paketmanager wie Homebrew installiert wurde.
|
||||
|
||||
---
|
||||
|
||||
### Formatters
|
||||
|
||||
Sie können Codeformatierer über die Option `formatter` konfigurieren.
|
||||
|
||||
```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).
|
||||
|
||||
---
|
||||
|
||||
### Permissions
|
||||
|
||||
Opencode erlaubt standardmäßig alle Vorgänge, ohne dass eine ausdrückliche Genehmigung erforderlich ist. Sie können dies mit der Option `permission` ändern.
|
||||
|
||||
Um beispielsweise sicherzustellen, dass die Tools `edit` und `bash` eine Benutzergenehmigung erfordern:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "ask",
|
||||
"bash": "ask"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about permissions here](/docs/permissions).
|
||||
|
||||
---
|
||||
|
||||
### Compaction
|
||||
|
||||
Sie können das Verhalten der Kontextkomprimierung über die Option `compaction` steuern.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"compaction": {
|
||||
"auto": true,
|
||||
"prune": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `auto` – Die Sitzung wird automatisch komprimieren, wenn der Kontext voll ist (Standard: `true`).
|
||||
- `prune` – Alte Tool-Ausgaben entfernen, um Token zu sparen (Standard: `true`).
|
||||
|
||||
---
|
||||
|
||||
### Watcher
|
||||
|
||||
Sie können Datei-Watcher-Ignoriermuster über die Option `watcher` konfigurieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"watcher": {
|
||||
"ignore": ["node_modules/**", "dist/**", ".git/**"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Muster folgen der Glob-Syntax. Verwenden Sie diese Option, um verrauschte Verzeichnisse von der Dateiüberwachung auszuschließen.
|
||||
|
||||
---
|
||||
|
||||
### MCP Server
|
||||
|
||||
Sie können den MCP-Server, den Sie verwenden möchten, über die Option `mcp` konfigurieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {}
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more here](/docs/mcp-servers).
|
||||
|
||||
---
|
||||
|
||||
### Plugins
|
||||
|
||||
[Plugins](/docs/plugins) erweitert OpenCode mit benutzerdefinierten Tools, Hooks und Integrationen.
|
||||
|
||||
Platzieren Sie Ihre Plugin-Dateien in `.opencode/plugins/` oder `~/.config/opencode/plugins/`. Sie können Plugins auch über die Option `plugin` von npm laden.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more here](/docs/plugins).
|
||||
|
||||
---
|
||||
|
||||
### Instructions
|
||||
|
||||
Sie können die Anweisungen für das von Ihnen verwendete Modell über die Option `instructions` konfigurieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
|
||||
}
|
||||
```
|
||||
|
||||
Dies erfordert eine Reihe von Pfaden und Glob-Mustern zu Anweisungsdateien. [Erfahren Sie mehr
|
||||
über Regeln hier](/docs/rules).
|
||||
|
||||
---
|
||||
|
||||
### Behinderte Anbieter
|
||||
|
||||
Sie können Anbieter, die automatisch geladen werden, über die Option `disabled_providers` deaktivieren. Dies ist nützlich, wenn Sie verhindern möchten, dass bestimmte Anbieter geladen werden, selbst wenn deren Anmeldeinformationen verfügbar sind.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"disabled_providers": ["openai", "gemini"]
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
Der `disabled_providers` hat Vorrang vor `enabled_providers`.
|
||||
:::
|
||||
|
||||
Die Option `disabled_providers` akzeptiert ein Array des Anbieters IDs. Wenn ein Anbieter deaktiviert ist:
|
||||
|
||||
- Es wird nicht geladen, selbst wenn Umgebungsvariablen festgelegt sind.
|
||||
- Es wird nicht geladen, selbst wenn API-Schlüssel über den Befehl `/connect` konfiguriert werden.
|
||||
- Die Modelle des Anbieters erscheinen nicht in der Modellauswahlliste.
|
||||
|
||||
---
|
||||
|
||||
### Aktivierte Anbieter
|
||||
|
||||
Sie können über die Option `enabled_providers` eine Zulassungsliste für Anbieter angeben. Wenn diese Option festgelegt ist, werden nur die angegebenen Anbieter aktiviert und alle anderen werden ignoriert.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"enabled_providers": ["anthropic", "openai"]
|
||||
}
|
||||
```
|
||||
|
||||
Dies ist nützlich, wenn Sie OpenCode darauf beschränken möchten, nur bestimmte Anbieter zu verwenden, anstatt sie einzeln zu deaktivieren.
|
||||
|
||||
:::note
|
||||
Der `disabled_providers` hat Vorrang vor `enabled_providers`.
|
||||
:::
|
||||
|
||||
Wenn ein Anbieter sowohl in `enabled_providers` als auch in `disabled_providers` vorkommt, hat `disabled_providers` aus Gründen der Abwärtskompatibilität Vorrang.
|
||||
|
||||
---
|
||||
|
||||
### Experimental
|
||||
|
||||
Der Schlüssel `experimental` enthält Optionen, die sich in der aktiven Entwicklung befinden.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"experimental": {}
|
||||
}
|
||||
```
|
||||
|
||||
:::caution
|
||||
Experimentelle Optionen sind nicht stabil. Sie können ohne vorherige Ankündigung geändert oder entfernt werden.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Variables
|
||||
|
||||
Sie können die Variablenersetzung in Ihren Konfigurationsdateien verwenden, um auf Umgebungsvariablen und Dateiinhalte zu verweisen.
|
||||
|
||||
---
|
||||
|
||||
### Umgebungsvars
|
||||
|
||||
Verwenden Sie `{env:VARIABLE_NAME}`, um Umgebungsvariablen zu ersetzen:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "{env:OPENCODE_MODEL}",
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"models": {},
|
||||
"options": {
|
||||
"apiKey": "{env:ANTHROPIC_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn die Umgebungsvariable nicht gesetzt ist, wird sie durch eine leere Zeichenfolge ersetzt.
|
||||
|
||||
---
|
||||
|
||||
### Files
|
||||
|
||||
Verwenden Sie `{file:path/to/file}`, um den Inhalt einer Datei zu ersetzen:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["./custom-instructions.md"],
|
||||
"provider": {
|
||||
"openai": {
|
||||
"options": {
|
||||
"apiKey": "{file:~/.secrets/openai-key}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dateipfade können sein:
|
||||
|
||||
- Relativ zum Konfigurationsdateiverzeichnis
|
||||
- Oder absolute Pfade beginnend mit `/` oder `~`
|
||||
|
||||
Diese sind nützlich für:
|
||||
|
||||
- Bewahren Sie vertrauliche Daten wie API-Schlüssel in separaten Dateien auf.
|
||||
- Einschließlich große Anweisungsdateien, ohne Ihre Konfiguration zu überladen.
|
||||
- Gemeinsame Nutzung gemeinsamer Konfigurationsausschnitte über mehrere Konfigurationsdateien hinweg.
|
||||
170
packages/web/src/content/docs/de/custom-tools.mdx
Normal file
170
packages/web/src/content/docs/de/custom-tools.mdx
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: Benutzerdefinierte Werkzeuge
|
||||
description: Erstellen Sie Tools, die der LLM in Opencode aufrufen kann.
|
||||
---
|
||||
|
||||
Benutzerdefinierte Tools sind von Ihnen erstellte Funktionen, die der LLM während Gesprächen aufrufen kann. Sie arbeiten neben [built-in tools](/docs/tools) von Opencode wie `read`, `write` und `bash`.
|
||||
|
||||
---
|
||||
|
||||
## Ein Werkzeug erstellen
|
||||
|
||||
Werkzeuge werden als **TypeScript**- oder **JavaScript**-Dateien definiert. Die Werkzeugdefinition kann jedoch Skripte aufrufen, die in **jeder Sprache** geschrieben sind – TypeScript oder JavaScript wird nur für die Werkzeugdefinition selbst verwendet.
|
||||
|
||||
---
|
||||
|
||||
### Location
|
||||
|
||||
Sie können wie folgt definiert werden:
|
||||
|
||||
- Lokal, indem Sie sie im Verzeichnis `.opencode/tools/` Ihres Projekts platzieren.
|
||||
- Oder global, indem Sie sie in `~/.config/opencode/tools/` platzieren.
|
||||
|
||||
---
|
||||
|
||||
### Structure
|
||||
|
||||
Der einfachste Weg, Tools zu erstellen, ist die Verwendung des `tool()`-Helfers, der Typsicherheit und Validierung bietet.
|
||||
|
||||
```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}`
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Der **Dateiname** wird zum **Toolnamen**. Das Obige erstellt ein `database`-Tool.
|
||||
|
||||
---
|
||||
|
||||
#### Mehrere Werkzeuge pro Datei
|
||||
|
||||
Sie können auch mehrere Tools aus einer einzigen Datei exportieren. Jeder Export wird zu **einem separaten Tool** mit dem Namen **`<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
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Dadurch werden zwei Tools erstellt: `math_add` und `math_multiply`.
|
||||
|
||||
---
|
||||
|
||||
### Arguments
|
||||
|
||||
Sie können `tool.schema` verwenden, was nur [Zod](https://zod.dev) ist, um Argumenttypen zu definieren.
|
||||
|
||||
```ts "tool.schema"
|
||||
args: {
|
||||
query: tool.schema.string().describe("SQL query to execute")
|
||||
}
|
||||
```
|
||||
|
||||
Sie können [Zod](https://zod.dev) auch direkt importieren und ein ähnliches Objekt zurückgeben:
|
||||
|
||||
```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"
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Context
|
||||
|
||||
Tools erhalten Kontext zur aktuellen Sitzung:
|
||||
|
||||
```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}`
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Verwenden Sie `context.directory` für das Sitzungsarbeitsverzeichnis.
|
||||
Verwenden Sie `context.worktree` für das Stammverzeichnis des Git-Arbeitsbaums.
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
### Schreiben Sie ein Tool in Python
|
||||
|
||||
Sie können Ihre Tools in jeder gewünschten Sprache schreiben. Hier ist ein Beispiel, das mit Python zwei Zahlen addiert.
|
||||
|
||||
Erstellen Sie zunächst das Tool als Python-Skript:
|
||||
|
||||
```python title=".opencode/tools/add.py"
|
||||
import sys
|
||||
|
||||
a = int(sys.argv[1])
|
||||
b = int(sys.argv[2])
|
||||
print(a + b)
|
||||
```
|
||||
|
||||
Erstellen Sie dann die Werkzeugdefinition, die es aufruft:
|
||||
|
||||
```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()
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Hier verwenden wir das Dienstprogramm [`Bun.$`](https://bun.com/docs/runtime/shell), um das Python-Skript auszuführen.
|
||||
76
packages/web/src/content/docs/de/ecosystem.mdx
Normal file
76
packages/web/src/content/docs/de/ecosystem.mdx
Normal file
@@ -0,0 +1,76 @@
|
||||
---
|
||||
title: Ökosystem
|
||||
description: Mit OpenCode erstellte Projekte und Integrationen.
|
||||
---
|
||||
|
||||
Eine Sammlung von Community-Projekten, die auf OpenCode basieren.
|
||||
|
||||
:::note
|
||||
Möchten Sie Ihr OpenCode-bezogenes Projekt zu dieser Liste hinzufügen? Senden Sie einen PR.
|
||||
:::
|
||||
|
||||
Sie können sich auch [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) und [opencode.cafe](https://opencode.cafe) ansehen, eine Community, die das Ökosystem und die Community zusammenfasst.
|
||||
|
||||
---
|
||||
|
||||
## Plugins
|
||||
|
||||
| Name | Beschreibung |
|
||||
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
||||
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | Führen Sie OpenCode-Sitzungen automatisch in isolierten Daytona-Sandboxes mit Git-Synchronisierung und Live-Vorschauen aus |
|
||||
| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | Helicone-Sitzungsheader für die Anforderungsgruppierung automatisch einfügen |
|
||||
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | TypeScript/Svelte-Typen mit Suchtools automatisch in Dateilesevorgänge einfügen |
|
||||
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Verwenden Sie Ihr ChatGPT Plus/Pro-Abonnement anstelle von API Credits |
|
||||
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Verwenden Sie Ihren bestehenden Gemini-Plan anstelle der API-Abrechnung |
|
||||
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Nutzen Sie die kostenlosen Modelle von Antigravity anstelle der API-Abrechnung |
|
||||
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | Multi-Branch-Devcontainer-Isolierung mit flachen Klonen und automatisch zugewiesenen Ports |
|
||||
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth-Plugin mit Unterstützung für die Google-Suche und robustere API-Verarbeitung |
|
||||
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimieren Sie die Token-Nutzung, indem Sie veraltete Tool-Ausgaben bereinigen |
|
||||
| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | Fügen Sie native Websuchunterstützung für unterstützte Anbieter mit Google Grounded Style hinzu |
|
||||
| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | Ermöglicht AI-Agenten, Hintergrundprozesse in einem PTY auszuführen und ihnen interaktive Eingaben zu senden. |
|
||||
| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | Anweisungen für nicht interaktive Shell-Befehle – verhindert Abstürze bei TTY-abhängigen Vorgängen |
|
||||
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Verfolgen Sie die Nutzung von OpenCode mit Wakatime |
|
||||
| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | Von LLMs | erstellte Abschriftentabellen bereinigen
|
||||
| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 10x schnellere Codebearbeitung mit Morph Fast Apply API und Lazy-Edit-Markern |
|
||||
| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | Hintergrundagenten, vorgefertigte LSP/AST/MCP-Tools, kuratierte Agenten, Claude Code-kompatibel |
|
||||
| [opencode-notificator](https://github.com/panta82/opencode-notificator) | Desktop-Benachrichtigungen und akustische Warnungen für OpenCode-Sitzungen |
|
||||
| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | Desktop-Benachrichtigungen und akustische Warnungen für Berechtigungs-, Abschluss- und Fehlerereignisse |
|
||||
| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | AI-gestützte automatische Benennung von Zellij-Sitzungen basierend auf dem OpenCode-Kontext |
|
||||
| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | Ermöglichen Sie OpenCode-Agenten das verzögerte Laden von Eingabeaufforderungen bei Bedarf mit Skill-Erkennung und -Injektion |
|
||||
| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | Persistenter Speicher über Sitzungen hinweg mit Supermemory |
|
||||
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | Interaktive Planüberprüfung mit visueller Anmerkung und private/offline-Freigabe |
|
||||
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | Erweitern Sie Opencode /commands zu einem leistungsstarken Orchestrierungssystem mit granularer Flusskontrolle |
|
||||
| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | Planen Sie wiederkehrende Jobs mit launchd (Mac) oder systemd (Linux) mit Cron-Syntax |
|
||||
| [micode](https://github.com/vtemian/micode) | Strukturiertes Brainstorming → Planen → Workflow mit Sitzungskontinuität Implementierung |
|
||||
| [octto](https://github.com/vtemian/octto) | Interaktiver Browser UI für AI Brainstorming mit Formularen mit mehreren Fragen |
|
||||
| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | Hintergrundagenten im Claude Code-Stil mit asynchroner Delegation und Kontextpersistenz |
|
||||
| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | Native OS-Benachrichtigungen für OpenCode – wissen, wann Aufgaben erledigt sind |
|
||||
| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | Gebündelter Multi-Agent-Orchestrierungs-Harness – 16 Komponenten, eine Installation |
|
||||
| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | Reibungslose Git-Arbeitsbäume für OpenCode |
|
||||
|
||||
---
|
||||
|
||||
## Projects
|
||||
|
||||
| Name | Beschreibung |
|
||||
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
|
||||
| [kimaki](https://github.com/remorses/kimaki) | Discord-Bot zur Steuerung von OpenCode-Sitzungen, basierend auf SDK |
|
||||
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Neovim-Plugin für editorfähige Eingabeaufforderungen, basierend auf API |
|
||||
| [portal](https://github.com/hosenur/portal) | Mobile-First-Web UI für OpenCode über Tailscale/VPN |
|
||||
| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | Vorlage zum Erstellen von OpenCode-Plugins |
|
||||
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Neovim-Frontend für Opencode – ein terminalbasierter AI-Coding-Agent |
|
||||
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Vercel AI SDK Anbieter für die Verwendung von OpenCode über @opencode-ai/sdk |
|
||||
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | Web-/Desktop-App und VS Code-Erweiterung für OpenCode |
|
||||
| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | Obsidian-Plugin, das OpenCode in Obsidians UI | einbettet
|
||||
| [OpenWork](https://github.com/different-ai/openwork) | Eine Open-Source-Alternative zu Claude Cowork, unterstützt von OpenCode |
|
||||
| [ocx](https://github.com/kdcokenny/ocx) | OpenCode Erweiterungsmanager mit portablen, isolierten Profilen. |
|
||||
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | Desktop-, Web-, Mobil- und Remote-Client-App für OpenCode |
|
||||
|
||||
---
|
||||
|
||||
## Agents
|
||||
|
||||
| Name | Beschreibung |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| [Agentic](https://github.com/Cluster444/agentic) | Modulare AI-Agenten und -Befehle für strukturierte Entwicklung |
|
||||
| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | Konfigurationen, Eingabeaufforderungen, Agenten und Plugins für verbesserte Arbeitsabläufe |
|
||||
170
packages/web/src/content/docs/de/enterprise.mdx
Normal file
170
packages/web/src/content/docs/de/enterprise.mdx
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: Unternehmen
|
||||
description: Sichere Verwendung von OpenCode in Ihrem Unternehmen.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
OpenCode Enterprise ist für Organisationen gedacht, die sicherstellen möchten, dass ihr Code und ihre Daten niemals ihre Infrastruktur verlassen. Dies kann durch die Verwendung einer zentralen Konfiguration erreicht werden, die in Ihr SSO- und internes AI-Gateway integriert ist.
|
||||
|
||||
:::note
|
||||
OpenCode speichert keine Ihrer Code- oder Kontextdaten.
|
||||
:::
|
||||
|
||||
So starten Sie mit OpenCode Enterprise:
|
||||
|
||||
1. Führen Sie einen internen Test mit Ihrem Team durch.
|
||||
2. **<a href={email}>Kontaktieren Sie uns</a>**, um Preise und Implementierungsoptionen zu besprechen.
|
||||
|
||||
---
|
||||
|
||||
## Trial
|
||||
|
||||
OpenCode ist Open Source und speichert keine Ihrer Code- oder Kontextdaten, sodass Ihr Entwickler einfach [get started](/docs/) und eine Testversion durchführen kann.
|
||||
|
||||
---
|
||||
|
||||
### Datenverarbeitung
|
||||
|
||||
**OpenCode speichert Ihren Code oder Ihre Kontextdaten nicht.** Die gesamte Verarbeitung erfolgt lokal oder durch direkte API-Aufrufe an Ihren AI-Anbieter.
|
||||
|
||||
Das heißt, solange Sie einen Anbieter Ihres Vertrauens oder einen internen nutzen
|
||||
AI-Gateway können Sie OpenCode sicher verwenden.
|
||||
|
||||
Die einzige Einschränkung hier ist die optionale Funktion `/share`.
|
||||
|
||||
---
|
||||
|
||||
#### Gespräche teilen
|
||||
|
||||
Wenn ein Benutzer die Funktion `/share` aktiviert, werden die Konversation und die damit verbundenen Daten an den Dienst gesendet, den wir zum Hosten dieser Freigabeseiten unter opencode.ai verwenden.
|
||||
|
||||
Die Daten werden derzeit über das Edge-Netzwerk unseres CDN bereitgestellt und am Edge in der Nähe Ihres Benutzers zwischengespeichert.
|
||||
|
||||
Wir empfehlen Ihnen, dies für Ihre Testversion zu deaktivieren.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"share": "disabled"
|
||||
}
|
||||
```
|
||||
|
||||
[Learn more about sharing](/docs/share).
|
||||
|
||||
---
|
||||
|
||||
### Code-Besitz
|
||||
|
||||
**Der gesamte von OpenCode erstellte Code gehört Ihnen.** Es bestehen keine Lizenzbeschränkungen oder Eigentumsansprüche.
|
||||
|
||||
---
|
||||
|
||||
## Pricing
|
||||
|
||||
Für OpenCode Enterprise verwenden wir ein Pro-Sitz-Modell. Wenn Sie über ein eigenes LLM-Gateway verfügen, berechnen wir keine Gebühren für die verwendeten Token. Für weitere Informationen zu Preisen und Implementierungsoptionen **<a href={email}>kontaktieren Sie uns</a>**.
|
||||
|
||||
---
|
||||
|
||||
## Deployment
|
||||
|
||||
Sobald Sie Ihre Testversion abgeschlossen haben und bereit sind, OpenCode unter zu verwenden
|
||||
Für Ihre Organisation können Sie **<a href={email}>uns kontaktieren</a>**, um dies zu besprechen
|
||||
Preisgestaltung und Umsetzungsmöglichkeiten.
|
||||
|
||||
---
|
||||
|
||||
### Zentrale Konfiguration
|
||||
|
||||
Wir können OpenCode so einrichten, dass eine einzige zentrale Konfiguration für Ihre gesamte Organisation verwendet wird.
|
||||
|
||||
Diese zentralisierte Konfiguration kann in Ihren SSO-Anbieter integriert werden und stellt sicher, dass alle Benutzer nur auf Ihr internes AI-Gateway zugreifen.
|
||||
|
||||
---
|
||||
|
||||
### SSO-Integration
|
||||
|
||||
Über die zentrale Konfiguration kann OpenCode zur Authentifizierung in den SSO-Anbieter Ihrer Organisation integriert werden.
|
||||
|
||||
Dadurch kann OpenCode Anmeldeinformationen für Ihr internes AI-Gateway über Ihr eigenes Identitätsverwaltungssystem abrufen.
|
||||
|
||||
---
|
||||
|
||||
### Internes AI-Gateway
|
||||
|
||||
Mit der zentralen Konfiguration kann OpenCode auch so konfiguriert werden, dass nur Ihr internes AI-Gateway verwendet wird.
|
||||
|
||||
Sie können auch alle anderen AI-Anbieter deaktivieren und so sicherstellen, dass alle Anfragen über die genehmigte Infrastruktur Ihrer Organisation laufen.
|
||||
|
||||
---
|
||||
|
||||
### Self-hosting
|
||||
|
||||
Wir empfehlen jedoch, die Freigabeseiten zu deaktivieren, um sicherzustellen, dass Ihre Daten niemals verloren gehen
|
||||
In Ihrer Organisation können wir Ihnen auch dabei helfen, sie selbst in Ihrer Infrastruktur zu hosten.
|
||||
|
||||
Dies steht derzeit auf unserer Roadmap. Wenn Sie Interesse haben, **<a href={email}>lassen Sie es uns wissen</a>**.
|
||||
|
||||
---
|
||||
|
||||
## FAQ
|
||||
|
||||
<details>
|
||||
<summary>What is OpenCode Enterprise?</summary>
|
||||
|
||||
OpenCode Enterprise ist für Organisationen gedacht, die sicherstellen möchten, dass ihr Code und ihre Daten niemals ihre Infrastruktur verlassen. Dies kann durch die Verwendung einer zentralen Konfiguration erreicht werden, die in Ihr SSO- und internes AI-Gateway integriert ist.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>How do I get started with OpenCode Enterprise?</summary>
|
||||
|
||||
Beginnen Sie einfach mit einem internen Test mit Ihrem Team. OpenCode speichert standardmäßig weder Ihren Code noch Ihre Kontextdaten, was den Einstieg erleichtert.
|
||||
|
||||
Dann **<a href={email}>kontaktieren Sie uns</a>**, um Preise und Implementierungsoptionen zu besprechen.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>How does enterprise pricing work?</summary>
|
||||
|
||||
Wir bieten Enterprise-Preise pro Sitzplatz an. Wenn Sie über ein eigenes LLM-Gateway verfügen, berechnen wir keine Gebühren für die verwendeten Token. Für weitere Informationen **<a href={email}>kontaktieren Sie uns</a>** für ein individuelles Angebot, das auf die Bedürfnisse Ihrer Organisation zugeschnitten ist.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Is my data secure with OpenCode Enterprise?</summary>
|
||||
|
||||
Ja. OpenCode speichert Ihren Code oder Ihre Kontextdaten nicht. Die gesamte Verarbeitung erfolgt lokal oder durch direkte API-Anrufe an Ihren AI-Anbieter. Dank zentraler Konfiguration und SSO-Integration bleiben Ihre Daten innerhalb der Infrastruktur Ihres Unternehmens sicher.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Can we use our own private NPM registry?</summary>
|
||||
|
||||
OpenCode unterstützt private NPM-Registrierungen durch Buns native `.npmrc`-Dateiunterstützung. Wenn Ihre Organisation eine private Registrierung wie JFrog Artifactory, Nexus oder ähnliches verwendet, stellen Sie sicher, dass der Entwickler authentifiziert ist, bevor Sie OpenCode ausführen.
|
||||
|
||||
So richten Sie die Authentifizierung mit Ihrer privaten Registrierung ein:
|
||||
|
||||
```bash
|
||||
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
|
||||
```
|
||||
|
||||
Dadurch wird `~/.npmrc` mit Authentifizierungsdetails erstellt. OpenCode wird automatisch
|
||||
Hebe das auf.
|
||||
|
||||
:::caution
|
||||
Sie müssen bei der privaten Registrierung angemeldet sein, bevor Sie OpenCode ausführen.
|
||||
:::
|
||||
|
||||
Alternativ können Sie eine `.npmrc`-Datei manuell konfigurieren:
|
||||
|
||||
```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}
|
||||
```
|
||||
|
||||
Entwickler müssen vor der Ausführung von OpenCode bei der privaten Registrierung angemeldet sein, um sicherzustellen, dass Pakete aus Ihrer Unternehmensregistrierung installiert werden können.
|
||||
|
||||
</details>
|
||||
130
packages/web/src/content/docs/de/formatters.mdx
Normal file
130
packages/web/src/content/docs/de/formatters.mdx
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: Formatierer
|
||||
description: OpenCode verwendet sprachspezifische Formatierer.
|
||||
---
|
||||
|
||||
OpenCode formatiert Dateien automatisch, nachdem sie mit sprachspezifischen Formatierern geschrieben oder bearbeitet wurden. Dadurch wird sichergestellt, dass der generierte Code dem Codestil Ihres Projekts entspricht.
|
||||
|
||||
---
|
||||
|
||||
## Eingebaut
|
||||
|
||||
OpenCode verfügt über mehrere integrierte Formatierer für gängige Sprachen und Frameworks. Nachfolgend finden Sie eine Liste der Formatierer, unterstützten Dateierweiterungen und benötigten Befehle oder Konfigurationsoptionen.
|
||||
|
||||
| Formatierer | Erweiterungen | Anforderungen |
|
||||
| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| gofmt | .go | `gofmt`-Befehl verfügbar |
|
||||
| mischen | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix`-Befehl verfügbar |
|
||||
| hübscher | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml und [more](https://prettier.io/docs/en/index.html) | `prettier`-Abhängigkeit in `package.json` |
|
||||
| Biom | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml und [more](https://biomejs.dev/) | `biome.json(c)` Konfigurationsdatei |
|
||||
| Zickzack | .zig, .zon | `zig`-Befehl verfügbar |
|
||||
| clang-format | .c, .cpp, .h, .hpp, .ino und [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` Konfigurationsdatei |
|
||||
| ktlint | .kt, .kts | `ktlint`-Befehl verfügbar |
|
||||
| Halskrause | .py, .pyi | `ruff`-Befehl verfügbar mit config |
|
||||
| rustfmt | .rs | `rustfmt`-Befehl verfügbar |
|
||||
| frachtfmt | .rs | `cargo fmt`-Befehl verfügbar |
|
||||
| UV | .py, .pyi | `uv`-Befehl verfügbar |
|
||||
| rubocop | .rb, .rake, .gemspec, .ru | `rubocop`-Befehl verfügbar |
|
||||
| standardrb | .rb, .rake, .gemspec, .ru | `standardrb`-Befehl verfügbar |
|
||||
| htmlbeautifier | .erb, .html.erb | `htmlbeautifier`-Befehl verfügbar |
|
||||
| Luft | .R | `air`-Befehl verfügbar |
|
||||
| Dart | .dart | `dart`-Befehl verfügbar |
|
||||
| ocamlformat | .ml, .mli | `ocamlformat` Befehl verfügbar und `.ocamlformat` Konfigurationsdatei |
|
||||
| Terraform | .tf, .tfvars | `terraform`-Befehl verfügbar |
|
||||
| Glanz | .glanz | `gleam`-Befehl verfügbar |
|
||||
| nixfmt | .nix | `nixfmt`-Befehl verfügbar |
|
||||
| shfmt | .sh, .bash | `shfmt`-Befehl verfügbar |
|
||||
| Pint | .php | `laravel/pint`-Abhängigkeit in `composer.json` |
|
||||
| oxfmt (Experimentell) | .js, .jsx, .ts, .tsx | `oxfmt`-Abhängigkeit in `package.json` und einer [experimental env variable flag](/docs/cli/#experimental) |
|
||||
| Ormolu | .hs | `ormolu`-Befehl verfügbar |
|
||||
|
||||
Wenn Ihr Projekt auch `prettier` in Ihrem `package.json` hat, wird OpenCode automatisch verwendet.
|
||||
|
||||
---
|
||||
|
||||
## Wie es funktioniert
|
||||
|
||||
Wenn OpenCode eine Datei schreibt oder bearbeitet, geschieht Folgendes:
|
||||
|
||||
1. Überprüft die Dateierweiterung anhand aller aktivierten Formatierer.
|
||||
2. Führt den entsprechenden Formatierungsbefehl für die Datei aus.
|
||||
3. Wendet die Formatierungsänderungen automatisch an.
|
||||
|
||||
Dieser Prozess findet im Hintergrund statt und stellt sicher, dass Ihr Codestile ohne manuelle Schritte beibehalten werden.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurieren
|
||||
|
||||
Sie können Formatierer über den Abschnitt `formatter` in Ihrer OpenCode-Konfiguration anpassen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {}
|
||||
}
|
||||
```
|
||||
|
||||
Jede Formatierungskonfiguration unterstützt Folgendes:
|
||||
|
||||
| Eigentum | Geben Sie | eine Beschreibung |
|
||||
| ------------- | -------- | ------------------------------------------------------- |
|
||||
| `disabled` | boolescher Wert | Setzen Sie dies auf `true`, um den Formatierer | zu deaktivieren
|
||||
| `command` | string[] | Der zum Formatieren auszuführende Befehl |
|
||||
| `environment` | Objekt | Umgebungsvariablen, die beim Ausführen des Formatierers | festgelegt werden sollen
|
||||
| `extensions` | string[] | Dateierweiterungen, die dieser Formatierer verarbeiten soll |
|
||||
|
||||
Schauen wir uns einige Beispiele an.
|
||||
|
||||
---
|
||||
|
||||
### Formatierer deaktivieren
|
||||
|
||||
Um **alle** Formatierer global zu deaktivieren, setzen Sie `formatter` auf `false`:
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": false
|
||||
}
|
||||
```
|
||||
|
||||
Um einen **bestimmten** Formatierer zu deaktivieren, setzen Sie `disabled` auf `true`:
|
||||
|
||||
```json title="opencode.json" {5}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"disabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Benutzerdefinierter Formatierer
|
||||
|
||||
Sie können den integrierten Formatierer überschreiben oder neu hinzufügen, indem Sie den Befehl, Umgebungsvariablen und Dateierweiterungen angeben:
|
||||
|
||||
```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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Der Platzhalter **`$FILE`** im Befehl wird durch den Pfad zur zu formatierenden Datei ersetzt.
|
||||
321
packages/web/src/content/docs/de/github.mdx
Normal file
321
packages/web/src/content/docs/de/github.mdx
Normal file
@@ -0,0 +1,321 @@
|
||||
---
|
||||
title: GitHub
|
||||
description: Verwenden Sie OpenCode in GitHub-Problemen und Pull-Requests.
|
||||
---
|
||||
|
||||
OpenCode lässt sich in Ihren GitHub-Workflow integrieren. Erwähnen Sie `/opencode` oder `/oc` in Ihrem Kommentar, und OpenCode führt Aufgaben in Ihrem GitHub Actions-Runner aus.
|
||||
|
||||
---
|
||||
|
||||
## Features
|
||||
|
||||
- **Triage-Probleme**: Bitten Sie OpenCode, ein Problem zu untersuchen und es Ihnen zu erklären.
|
||||
- **Reparieren und implementieren**: Bitten Sie OpenCode, ein Problem zu beheben oder eine Funktion zu implementieren. Und es funktioniert in einem neuen Zweig und sendet ein PR mit allen Änderungen.
|
||||
- **Sicher**: OpenCode läuft in den Runnern Ihres GitHub.
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Führen Sie den folgenden Befehl in einem Projekt aus, das sich in einem GitHub-Repository befindet:
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
```
|
||||
|
||||
Dies führt Sie durch die Installation der GitHub-App, das Erstellen des Workflows und das Einrichten von Geheimnissen.
|
||||
|
||||
---
|
||||
|
||||
### Manuelle Einrichtung
|
||||
|
||||
Oder Sie können es manuell einrichten.
|
||||
|
||||
1. **Installieren Sie die GitHub-App**
|
||||
|
||||
Gehen Sie zu [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). Stellen Sie sicher, dass es im Ziel-Repository installiert ist.
|
||||
|
||||
2. **Den Workflow hinzufügen**
|
||||
|
||||
Fügen Sie die folgende Workflowdatei zu `.github/workflows/opencode.yml` in Ihrem Repository hinzu. Stellen Sie sicher, dass Sie in `env` die entsprechenden Schlüssel `model` und API festlegen.
|
||||
|
||||
```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. **Speichern Sie die API-Schlüssel in Geheimnissen**
|
||||
|
||||
Erweitern Sie in den **Einstellungen** Ihrer Organisation oder Ihres Projekts links **Geheimnisse und Variablen** und wählen Sie **Aktionen** aus. Und fügen Sie die erforderlichen API-Schlüssel hinzu.
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
- `model`: Das mit OpenCode zu verwendende Modell. Nimmt das Format `provider/model` an. Dies ist **erforderlich**.
|
||||
- `agent`: Der zu verwendende Agent. Muss ein Hauptagent sein. Fällt aus der Konfiguration auf `default_agent` oder `"build"` zurück, wenn es nicht gefunden wird.
|
||||
- `share`: Ob die OpenCode-Sitzung geteilt werden soll. Der Standardwert ist **true** für öffentliche Repositorys.
|
||||
- `prompt`: Optionale benutzerdefinierte Eingabeaufforderung zum Überschreiben des Standardverhaltens. Verwenden Sie dies, um anzupassen, wie OpenCode Anfragen verarbeitet.
|
||||
- `token`: Optionales GitHub-Zugriffstoken zum Ausführen von Vorgängen wie dem Erstellen von Kommentaren, dem Festschreiben von Änderungen und dem Öffnen von Pull-Anfragen. Standardmäßig verwendet OpenCode das Installationszugriffstoken der OpenCode GitHub-App, sodass Commits, Kommentare und Pull-Anfragen so aussehen, als würden sie von der App kommen.
|
||||
|
||||
Alternativ können Sie [built-in `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) des GitHub Action Runners verwenden, ohne die OpenCode GitHub App zu installieren. Stellen Sie einfach sicher, dass Sie in Ihrem Workflow die erforderlichen Berechtigungen erteilen:
|
||||
|
||||
```yaml
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
```
|
||||
|
||||
Sie können bei Bedarf auch einen [personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT) verwenden.
|
||||
|
||||
---
|
||||
|
||||
## Unterstützte Veranstaltungen
|
||||
|
||||
OpenCode kann durch die folgenden GitHub-Ereignisse ausgelöst werden:
|
||||
|
||||
| Ereignistyp | Ausgelöst durch | Einzelheiten |
|
||||
| ----------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
||||
| `issue_comment` | Kommentieren Sie ein Problem oder PR | Erwähnen Sie `/opencode` oder `/oc` in Ihrem Kommentar. OpenCode liest den Kontext und kann Verzweigungen erstellen, PRs öffnen oder antworten. |
|
||||
| `pull_request_review_comment` | Kommentieren Sie bestimmte Codezeilen in einem PR | Erwähnen Sie `/opencode` oder `/oc` beim Überprüfen des Codes. OpenCode empfängt Dateipfad, Zeilennummern und Diff-Kontext. |
|
||||
| `issues` | Problem geöffnet oder bearbeitet | Lösen Sie OpenCode automatisch aus, wenn Probleme erstellt oder geändert werden. Erfordert `prompt`-Eingabe. |
|
||||
| `pull_request` | PR geöffnet oder aktualisiert | Lösen Sie OpenCode automatisch aus, wenn PRs geöffnet, synchronisiert oder erneut geöffnet werden. Nützlich für automatisierte Bewertungen. |
|
||||
| `schedule` | Cron-basierter Zeitplan | Führen Sie OpenCode nach einem Zeitplan aus. Erfordert `prompt`-Eingabe. Die Ausgabe geht an Protokolle und PRs (kein Kommentar zu diesem Problem). |
|
||||
| `workflow_dispatch` | Manueller Trigger von GitHub UI | Lösen Sie OpenCode bei Bedarf über die Registerkarte „Aktionen“ aus. Erfordert `prompt`-Eingabe. Die Ausgabe erfolgt an Protokolle und PRs. |
|
||||
|
||||
### Beispiel für einen Zeitplan
|
||||
|
||||
Führen Sie OpenCode nach einem Zeitplan aus, um automatisierte Aufgaben auszuführen:
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
Für geplante Ereignisse ist die Eingabe `prompt` **erforderlich**, da es keinen Kommentar gibt, aus dem Anweisungen extrahiert werden können. Geplante Workflows werden ohne Benutzerkontext zur Berechtigungsprüfung ausgeführt. Daher muss der Workflow `contents: write` und `pull-requests: write` gewähren, wenn Sie erwarten, dass OpenCode Zweige oder PRs erstellt.
|
||||
|
||||
---
|
||||
|
||||
### Pull-Request-Beispiel
|
||||
|
||||
Überprüfen Sie PRs automatisch, wenn sie geöffnet oder aktualisiert werden:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Wenn für `pull_request`-Ereignisse kein `prompt` bereitgestellt wird, überprüft OpenCode standardmäßig die Pull-Anfrage.
|
||||
|
||||
---
|
||||
|
||||
### Beispiel für eine Triage von Problemen
|
||||
|
||||
Neue Probleme automatisch selektieren. In diesem Beispiel wird nach Konten gefiltert, die älter als 30 Tage sind, um Spam zu reduzieren:
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
Für `issues`-Ereignisse ist die Eingabe `prompt` **erforderlich**, da es keinen Kommentar gibt, aus dem Anweisungen extrahiert werden können.
|
||||
|
||||
---
|
||||
|
||||
## Benutzerdefinierte Eingabeaufforderungen
|
||||
|
||||
Überschreiben Sie die Standardaufforderung, um das Verhalten von OpenCode für Ihren Workflow anzupassen.
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Dies ist nützlich, um bestimmte Prüfkriterien, Kodierungsstandards oder Schwerpunktbereiche durchzusetzen, die für Ihr Projekt relevant sind.
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
Hier sind einige Beispiele, wie Sie OpenCode in GitHub verwenden können.
|
||||
|
||||
- **Erklären Sie ein Problem**
|
||||
|
||||
Fügen Sie diesen Kommentar in einer GitHub-Ausgabe hinzu.
|
||||
|
||||
```
|
||||
/opencode explain this issue
|
||||
```
|
||||
|
||||
OpenCode liest den gesamten Thread, einschließlich aller Kommentare, und antwortet mit einer klaren Erklärung.
|
||||
|
||||
- **Ein Problem beheben**
|
||||
|
||||
Sagen Sie in einer GitHub-Ausgabe:
|
||||
|
||||
```
|
||||
/opencode fix this
|
||||
```
|
||||
|
||||
Und OpenCode erstellt einen neuen Zweig, implementiert die Änderungen und öffnet ein PR mit den Änderungen.
|
||||
|
||||
- **PRs überprüfen und Änderungen vornehmen**
|
||||
|
||||
Hinterlassen Sie den folgenden Kommentar auf einem GitHub PR.
|
||||
|
||||
```
|
||||
Delete the attachment from S3 when the note is removed /oc
|
||||
```
|
||||
|
||||
OpenCode implementiert die angeforderte Änderung und schreibt sie an denselben PR fest.
|
||||
|
||||
- **Überprüfen Sie bestimmte Codezeilen**
|
||||
|
||||
Hinterlassen Sie einen Kommentar direkt zu den Codezeilen auf der Registerkarte „Dateien“ von PR. OpenCode erkennt automatisch die Datei, Zeilennummern und den Diff-Kontext, um präzise Antworten bereitzustellen.
|
||||
|
||||
```
|
||||
[Comment on specific lines in Files tab]
|
||||
/oc add error handling here
|
||||
```
|
||||
|
||||
Beim Kommentieren bestimmter Zeilen erhält OpenCode:
|
||||
- Die genaue Datei, die überprüft wird
|
||||
- Die spezifischen Codezeilen
|
||||
- Der umgebende Diff-Kontext
|
||||
- Informationen zur Zeilennummer
|
||||
|
||||
Dies ermöglicht gezieltere Anfragen, ohne dass Dateipfade oder Zeilennummern manuell angegeben werden müssen.
|
||||
195
packages/web/src/content/docs/de/gitlab.mdx
Normal file
195
packages/web/src/content/docs/de/gitlab.mdx
Normal file
@@ -0,0 +1,195 @@
|
||||
---
|
||||
title: GitLab
|
||||
description: Verwenden Sie OpenCode in GitLab-Problemen und Zusammenführungsanfragen.
|
||||
---
|
||||
|
||||
OpenCode lässt sich über Ihre GitLab CI/CD-Pipeline oder mit GitLab Duo in Ihren GitLab-Workflow integrieren.
|
||||
|
||||
In beiden Fällen läuft OpenCode auf Ihren GitLab-Läufern.
|
||||
|
||||
---
|
||||
|
||||
## GitLab CI
|
||||
|
||||
OpenCode funktioniert in einer regulären GitLab-Pipeline. Sie können es als [CI component](https://docs.gitlab.com/ee/ci/components/) in eine Pipeline einbauen.
|
||||
|
||||
Hier verwenden wir eine von der Community erstellte CI/CD-Komponente für OpenCode – [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
|
||||
|
||||
---
|
||||
|
||||
### Features
|
||||
|
||||
- **Benutzerdefinierte Konfiguration pro Job verwenden**: Konfigurieren Sie OpenCode mit einem benutzerdefinierten Konfigurationsverzeichnis, zum Beispiel `./config/#custom-directory`, um die Funktionalität pro OpenCode-Aufruf zu aktivieren oder zu deaktivieren.
|
||||
- **Minimale Einrichtung**: Die CI-Komponente richtet OpenCode im Hintergrund ein. Sie müssen lediglich die OpenCode-Konfiguration und die erste Eingabeaufforderung erstellen.
|
||||
- **Flexibel**: Die CI-Komponente unterstützt mehrere Eingaben zum Anpassen ihres Verhaltens
|
||||
|
||||
---
|
||||
|
||||
### Setup
|
||||
|
||||
1. Speichern Sie Ihre OpenCode-Authentifizierung JSON als Umgebungsvariablen vom Dateityp CI unter **Einstellungen** > **CI/CD** > **Variablen**. Stellen Sie sicher, dass Sie sie als „Maskiert und ausgeblendet“ markieren.
|
||||
2. Fügen Sie Folgendes zu Ihrer `.gitlab-ci.yml`-Datei hinzu.
|
||||
|
||||
```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"
|
||||
```
|
||||
|
||||
Weitere Eingaben und Anwendungsfälle finden Sie unter [check out the docs](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) für diese Komponente.
|
||||
|
||||
---
|
||||
|
||||
## GitLab Duo
|
||||
|
||||
OpenCode lässt sich in Ihren GitLab-Workflow integrieren.
|
||||
Erwähnen Sie `@opencode` in einem Kommentar und OpenCode führt Aufgaben innerhalb Ihrer GitLab CI-Pipeline aus.
|
||||
|
||||
---
|
||||
|
||||
### Features
|
||||
|
||||
- **Triage-Probleme**: Bitten Sie OpenCode, ein Problem zu untersuchen und es Ihnen zu erklären.
|
||||
- **Reparieren und implementieren**: Bitten Sie OpenCode, ein Problem zu beheben oder eine Funktion zu implementieren.
|
||||
Es wird ein neuer Zweig erstellt und eine Zusammenführungsanforderung mit den Änderungen ausgelöst.
|
||||
- **Sicher**: OpenCode läuft auf Ihren GitLab-Läufern.
|
||||
|
||||
---
|
||||
|
||||
### Setup
|
||||
|
||||
OpenCode wird in Ihrer GitLab CI/CD-Pipeline ausgeführt. Folgendes müssen Sie zum Einrichten benötigen:
|
||||
|
||||
:::tip
|
||||
Aktuelle Anweisungen finden Sie im [**GitLab docs**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/).
|
||||
:::
|
||||
|
||||
1. Konfigurieren Sie Ihre GitLab-Umgebung
|
||||
2. CI/CD einrichten
|
||||
3. Holen Sie sich einen AI-Modellanbieterschlüssel API
|
||||
4. Erstellen Sie ein Dienstkonto
|
||||
5. Konfigurieren Sie CI/CD-Variablen
|
||||
6. Erstellen Sie eine Flow-Konfigurationsdatei, hier ist ein Beispiel:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Flow configuration</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>
|
||||
|
||||
Ausführliche Anweisungen finden Sie unter [GitLab CLI agents docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/).
|
||||
|
||||
---
|
||||
|
||||
### Examples
|
||||
|
||||
Hier sind einige Beispiele, wie Sie OpenCode in GitLab verwenden können.
|
||||
|
||||
:::tip
|
||||
Sie können die Verwendung einer anderen Triggerphrase als `@opencode` konfigurieren.
|
||||
:::
|
||||
|
||||
- **Erklären Sie ein Problem**
|
||||
|
||||
Fügen Sie diesen Kommentar in einer GitLab-Ausgabe hinzu.
|
||||
|
||||
```
|
||||
@opencode explain this issue
|
||||
```
|
||||
|
||||
OpenCode liest das Problem und antwortet mit einer klaren Erklärung.
|
||||
|
||||
- **Ein Problem beheben**
|
||||
|
||||
Sagen Sie in einer GitLab-Ausgabe:
|
||||
|
||||
```
|
||||
@opencode fix this
|
||||
```
|
||||
|
||||
OpenCode erstellt einen neuen Zweig, implementiert die Änderungen und öffnet eine Zusammenführungsanforderung mit den Änderungen.
|
||||
|
||||
- **Zusammenführungsanfragen prüfen**
|
||||
|
||||
Hinterlassen Sie den folgenden Kommentar zu einer GitLab-Merge-Anfrage.
|
||||
|
||||
```
|
||||
@opencode review this merge request
|
||||
```
|
||||
|
||||
OpenCode prüft die Zusammenführungsanfrage und gibt Feedback.
|
||||
48
packages/web/src/content/docs/de/ide.mdx
Normal file
48
packages/web/src/content/docs/de/ide.mdx
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: IDE
|
||||
description: Die OpenCode-Erweiterung für VS Code, Cursor und andere IDEs
|
||||
---
|
||||
|
||||
OpenCode lässt sich in VS Code, Cursor oder jeden IDE integrieren, der ein Terminal unterstützt. Führen Sie einfach `opencode` im Terminal aus, um zu beginnen.
|
||||
|
||||
---
|
||||
|
||||
## Verwendung
|
||||
|
||||
- **Schnellstart**: Verwenden Sie `Cmd+Esc` (Mac) oder `Ctrl+Esc` (Windows/Linux), um OpenCode in einer geteilten Terminalansicht zu öffnen, oder fokussieren Sie eine dieser Terminalsitzung, falls bereits eine ausgeführt wird.
|
||||
- **Neue Sitzung**: Verwenden Sie `Cmd+Shift+Esc` (Mac) oder `Ctrl+Shift+Esc` (Windows/Linux), um eine neue OpenCode-Terminalsitzung zu starten, auch wenn eine bereits geöffnet ist. Sie können auch auf die OpenCode-Schaltfläche im UI klicken.
|
||||
- **Kontextbewusstsein**: Teilen Sie Ihre aktuelle Auswahl oder Registerkarte automatisch mit OpenCode.
|
||||
- **Verknüpfungen zu Dateiverweisen**: Verwenden Sie `Cmd+Option+K` (Mac) oder `Alt+Ctrl+K` (Linux/Windows), um Dateiverweisen einzufügen. Beispiel: `@File#L37-42`.
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
So installieren Sie OpenCode auf VS Code und beliebten Forks wie Cursor, Windsurf, VSCodium:
|
||||
|
||||
1. Öffnen Sie den VS-Code
|
||||
2. Öffnen Sie das integrierte Terminal
|
||||
3. Führen Sie `opencode` aus – die Erweiterung wird automatisch installiert
|
||||
|
||||
Wenn Sie andererseits Ihr eigenes IDE verwenden möchten, wenn Sie `/editor` oder `/export` von TUI ausführen, müssen Sie `export EDITOR="code --wait"` festlegen. [Learn more](/docs/tui/#editor-setup).
|
||||
|
||||
---
|
||||
|
||||
### Manuelle Installation
|
||||
|
||||
Suchen Sie im Extension Marketplace nach **OpenCode** und klicken Sie auf **Installieren**.
|
||||
|
||||
---
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
Wenn die Erweiterung nicht automatisch installiert werden kann:
|
||||
|
||||
- Stellen Sie sicher, dass Sie `opencode` im integrierten Terminal ausführen.
|
||||
- Bestätigen Sie, dass CLI für Ihr IDE installiert ist:
|
||||
- Für VS Code: `code` Befehl
|
||||
- Für Cursor: Befehl `cursor`
|
||||
- Für Windsurfen: Befehl `windsurf`
|
||||
- Für VSCodium: Befehl `codium`
|
||||
- Wenn nicht, führen Sie `Cmd+Shift+P` (Mac) oder `Ctrl+Shift+P` (Windows/Linux) aus und suchen Sie nach „Shell Command: Install 'code' command in PATH“ (oder dem Äquivalent für Ihr IDE).
|
||||
- Stellen Sie sicher, dass der VS-Code über die Berechtigung zum Installieren von Erweiterungen verfügt
|
||||
359
packages/web/src/content/docs/de/index.mdx
Normal file
359
packages/web/src/content/docs/de/index.mdx
Normal file
@@ -0,0 +1,359 @@
|
||||
---
|
||||
title: Einführung
|
||||
description: Beginnen Sie mit OpenCode.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
|
||||
[**OpenCode**](/) ist ein Open-Source-Coding-Agent für AI. Es ist als terminalbasierte Schnittstelle, Desktop-App oder IDE-Erweiterung verfügbar.
|
||||
|
||||

|
||||
|
||||
Fangen wir an.
|
||||
|
||||
---
|
||||
|
||||
#### Voraussetzungen
|
||||
|
||||
Um OpenCode in Ihrem Terminal verwenden zu können, benötigen Sie:
|
||||
|
||||
1. Ein moderner Terminal-Emulator, zum Beispiel:
|
||||
- [WezTerm](https://wezterm.org), cross-platform
|
||||
- [Alacritty](https://alacritty.org), plattformübergreifend
|
||||
- [Ghostty](https://ghostty.org), Linux und macOS
|
||||
- [Kitty](https://sw.kovidgoyal.net/kitty/), Linux und macOS
|
||||
|
||||
2. API-Schlüssel für die LLM-Anbieter, die Sie verwenden möchten.
|
||||
|
||||
---
|
||||
|
||||
## Installieren
|
||||
|
||||
Der einfachste Weg, OpenCode zu installieren, ist über das Installationsskript.
|
||||
|
||||
```bash
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
```
|
||||
|
||||
Sie können es auch mit den folgenden Befehlen installieren:
|
||||
|
||||
- **Mit 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>
|
||||
|
||||
- **Homebrew unter macOS und Linux verwenden**
|
||||
|
||||
```bash
|
||||
brew install anomalyco/tap/opencode
|
||||
```
|
||||
|
||||
> Wir empfehlen die Verwendung des OpenCode-Tapes für die aktuellsten Versionen. Die offizielle `brew install opencode`-Formel wird vom Homebrew-Team gepflegt und seltener aktualisiert.
|
||||
|
||||
- **Verwendung von Paru unter Arch Linux**
|
||||
|
||||
```bash
|
||||
paru -S opencode-bin
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
:::tip[Empfohlen: Verwenden Sie WSL]
|
||||
Für das beste Erlebnis unter Windows empfehlen wir die Verwendung von [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). Es bietet eine bessere Leistung und vollständige Kompatibilität mit den Funktionen von OpenCode.
|
||||
:::
|
||||
|
||||
- **Verwendung von Schokolade**
|
||||
|
||||
```bash
|
||||
choco install opencode
|
||||
```
|
||||
|
||||
- **Scoop verwenden**
|
||||
|
||||
```bash
|
||||
scoop install opencode
|
||||
```
|
||||
|
||||
- **Mit NPM**
|
||||
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
```
|
||||
|
||||
- **Mit Mise**
|
||||
|
||||
```bash
|
||||
mise use -g github:anomalyco/opencode
|
||||
```
|
||||
|
||||
- **Verwendung von Docker**
|
||||
|
||||
```bash
|
||||
docker run -it --rm ghcr.io/anomalyco/opencode
|
||||
```
|
||||
|
||||
Die Unterstützung für die Installation von OpenCode unter Windows mit Bun ist derzeit in Arbeit.
|
||||
|
||||
Sie können die Binärdatei auch aus [Releases](https://github.com/anomalyco/opencode/releases) abrufen.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurieren
|
||||
|
||||
Mit OpenCode können Sie jeden LLM-Anbieter verwenden, indem Sie dessen API-Schlüssel konfigurieren.
|
||||
|
||||
Wenn Sie mit der Verwendung von LLM-Anbietern noch nicht vertraut sind, empfehlen wir die Verwendung von [OpenCode Zen](/docs/zen).
|
||||
Es handelt sich um eine kuratierte Liste von Modellen, die von OpenCode getestet und verifiziert wurden
|
||||
team.
|
||||
|
||||
1. Führen Sie den Befehl `/connect` in TUI aus, wählen Sie Opencode aus und gehen Sie zu [opencode.ai/auth](https://opencode.ai/auth).
|
||||
|
||||
```txt
|
||||
/connect
|
||||
```
|
||||
|
||||
2. Melden Sie sich an, geben Sie Ihre Rechnungsdaten ein und kopieren Sie Ihren API-Schlüssel.
|
||||
|
||||
3. Fügen Sie Ihren API-Schlüssel ein.
|
||||
|
||||
```txt
|
||||
┌ API key
|
||||
│
|
||||
│
|
||||
└ enter
|
||||
```
|
||||
|
||||
Alternativ können Sie auch einen der anderen Anbieter auswählen. [Mehr erfahren](/docs/providers#directory).
|
||||
|
||||
---
|
||||
|
||||
## Initialize
|
||||
|
||||
Nachdem Sie nun einen Anbieter konfiguriert haben, können Sie zu einem Projekt navigieren
|
||||
an dem du arbeiten möchtest.
|
||||
|
||||
```bash
|
||||
cd /path/to/project
|
||||
```
|
||||
|
||||
Und führen Sie OpenCode aus.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Als nächstes initialisieren Sie OpenCode für das Projekt, indem Sie den folgenden Befehl ausführen.
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
Dadurch wird OpenCode dazu veranlasst, Ihr Projekt zu analysieren und eine `AGENTS.md`-Datei zu erstellen
|
||||
das Projektstammverzeichnis.
|
||||
|
||||
:::tip
|
||||
Sie sollten die `AGENTS.md`-Datei Ihres Projekts an Git übergeben.
|
||||
:::
|
||||
|
||||
Dies hilft OpenCode, die Projektstruktur und die Codierungsmuster zu verstehen
|
||||
used.
|
||||
|
||||
---
|
||||
|
||||
## Verwendung
|
||||
|
||||
Sie können nun OpenCode verwenden, um an Ihrem Projekt zu arbeiten. Fragen Sie ruhig danach
|
||||
anything!
|
||||
|
||||
Wenn Sie mit der Verwendung eines AI-Codierungsagenten noch nicht vertraut sind, finden Sie hier einige Beispiele, die hilfreich sein könnten
|
||||
help.
|
||||
|
||||
---
|
||||
|
||||
### Stellen Sie Fragen
|
||||
|
||||
Sie können OpenCode bitten, Ihnen die Codebasis zu erklären.
|
||||
|
||||
:::tip
|
||||
Verwenden Sie die Taste `@`, um eine Fuzzy-Suche nach Dateien im Projekt durchzuführen.
|
||||
:::
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
How is authentication handled in @packages/functions/src/api/index.ts
|
||||
```
|
||||
|
||||
Dies ist hilfreich, wenn es einen Teil der Codebasis gibt, an dem Sie nicht gearbeitet haben.
|
||||
|
||||
---
|
||||
|
||||
### Funktionen hinzufügen
|
||||
|
||||
Sie können OpenCode bitten, Ihrem Projekt neue Funktionen hinzuzufügen. Wir empfehlen jedoch, es zunächst um die Erstellung eines Plans zu bitten.
|
||||
|
||||
1. **Erstellen Sie einen Plan**
|
||||
|
||||
OpenCode verfügt über einen _Planmodus_, der seine Fähigkeit, Änderungen vorzunehmen, deaktiviert
|
||||
Schlagen Sie stattdessen vor, wie die Funktion implementiert wird.
|
||||
|
||||
Wechseln Sie mit der **Tabulatortaste** dorthin. In der unteren rechten Ecke sehen Sie einen Indikator dafür.
|
||||
|
||||
```bash frame="none" title="Switch to Plan mode"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
Beschreiben wir nun, was es tun soll.
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
Sie möchten OpenCode genügend Details geben, um zu verstehen, was Sie wollen. Es hilft
|
||||
mit ihm zu sprechen, als ob Sie mit einem Junior-Entwickler in Ihrem Team sprechen würden.
|
||||
|
||||
:::tip
|
||||
Geben Sie OpenCode reichlich Kontext und Beispiele, damit es versteht, was Sie möchten
|
||||
want.
|
||||
:::
|
||||
|
||||
2. **Den Plan wiederholen**
|
||||
|
||||
Sobald Sie einen Plan erhalten, können Sie ihm Feedback geben oder weitere Details hinzufügen.
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
:::tip
|
||||
Ziehen Sie Bilder per Drag-and-Drop in das Terminal, um sie zur Eingabeaufforderung hinzuzufügen.
|
||||
:::
|
||||
|
||||
OpenCode kann alle von Ihnen bereitgestellten Bilder scannen und zur Eingabeaufforderung hinzufügen. Du kannst
|
||||
Ziehen Sie dazu ein Bild per Drag & Drop in das Terminal.
|
||||
|
||||
3. **Funktion erstellen**
|
||||
|
||||
Wenn Sie mit dem Plan zufrieden sind, wechseln Sie zurück in den _Build-Modus_
|
||||
indem Sie erneut die **Tabulatortaste** drücken.
|
||||
|
||||
```bash frame="none"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
Und es bitten, die Änderungen vorzunehmen.
|
||||
|
||||
```bash frame="none"
|
||||
Sounds good! Go ahead and make the changes.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Nehmen Sie Änderungen vor
|
||||
|
||||
Für einfachere Änderungen können Sie OpenCode bitten, es direkt zu erstellen
|
||||
ohne den Plan vorher überprüfen zu müssen.
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Sie möchten sicherstellen, dass Sie viele Details bereitstellen, damit OpenCode das Richtige tut
|
||||
changes.
|
||||
|
||||
---
|
||||
|
||||
### Änderungen rückgängig machen
|
||||
|
||||
Nehmen wir an, Sie bitten OpenCode, einige Änderungen vorzunehmen.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Aber Sie erkennen, dass es nicht das ist, was Sie wollten. Sie können die Änderungen **rückgängig machen**
|
||||
mit dem Befehl `/undo`.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
OpenCode macht nun die von Ihnen vorgenommenen Änderungen rückgängig und zeigt Ihre ursprüngliche Nachricht an
|
||||
again.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Von hier aus können Sie die Eingabeaufforderung anpassen und OpenCode bitten, es erneut zu versuchen.
|
||||
|
||||
:::tip
|
||||
Sie können `/undo` mehrmals ausführen, um mehrere Änderungen rückgängig zu machen.
|
||||
:::
|
||||
|
||||
Oder Sie **können** die Änderungen mit dem Befehl `/redo` wiederholen.
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Aktie
|
||||
|
||||
Die Gespräche, die Sie mit OpenCode führen, können [mit Ihrem geteilt werden
|
||||
Team](/docs/share).
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
Dadurch wird ein Link zur aktuellen Konversation erstellt und in Ihre Zwischenablage kopiert.
|
||||
|
||||
:::note
|
||||
Gespräche werden standardmäßig nicht geteilt.
|
||||
:::
|
||||
|
||||
Hier ist ein [Beispielgespräch](https://opencode.ai/s/4XP1fce5) mit OpenCode.
|
||||
|
||||
---
|
||||
|
||||
## Customize
|
||||
|
||||
Und das ist es! Sie sind jetzt ein Profi im Umgang mit OpenCode.
|
||||
|
||||
Um es zu Ihrem eigenen zu machen, empfehlen wir [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands) oder experimentieren Sie mit [OpenCode config](/docs/config).
|
||||
192
packages/web/src/content/docs/de/keybinds.mdx
Normal file
192
packages/web/src/content/docs/de/keybinds.mdx
Normal file
@@ -0,0 +1,192 @@
|
||||
---
|
||||
title: Tastenkombinationen
|
||||
description: Passen Sie Ihre Tastenkombinationen an.
|
||||
---
|
||||
|
||||
OpenCode verfügt über eine Liste von Tastenkombinationen, die Sie über die OpenCode-Konfiguration anpassen können.
|
||||
|
||||
```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"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Führungsschlüssel
|
||||
|
||||
OpenCode verwendet für die meisten Tastenkombinationen einen `leader`-Schlüssel. Dies vermeidet Konflikte in Ihrem Terminal.
|
||||
|
||||
Standardmäßig ist `ctrl+x` die Führungstaste und bei den meisten Aktionen müssen Sie zuerst die Führungstaste und dann die Tastenkombination drücken. Um beispielsweise eine neue Sitzung zu starten, drücken Sie zuerst `ctrl+x` und dann `n`.
|
||||
|
||||
Sie müssen für Ihre Tastenkombinationen keine Führungstaste verwenden, wir empfehlen jedoch, dies zu tun.
|
||||
|
||||
---
|
||||
|
||||
## Tastenkombination deaktivieren
|
||||
|
||||
Sie können eine Tastenkombination deaktivieren, indem Sie den Schlüssel mit dem Wert „none“ zu Ihrer Konfiguration hinzufügen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {
|
||||
"session_compact": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Verknüpfungen zur Desktop-Eingabeaufforderung
|
||||
|
||||
Die Eingabeaufforderungseingabe der OpenCode-Desktop-App unterstützt gängige Readline/Emacs-style-Verknüpfungen zum Bearbeiten von Text. Diese sind integriert und derzeit nicht über `opencode.json` konfigurierbar.
|
||||
|
||||
| Verknüpfung | Aktion |
|
||||
| -------- | ---------------------------------------- |
|
||||
| `ctrl+a` | Zum Anfang der aktuellen Zeile gehen |
|
||||
| `ctrl+e` | Zum Ende der aktuellen Zeile gehen |
|
||||
| `ctrl+b` | Cursor um ein Zeichen zurückbewegen |
|
||||
| `ctrl+f` | Cursor um ein Zeichen vorwärts bewegen |
|
||||
| `alt+b` | Cursor um ein Wort zurückbewegen |
|
||||
| `alt+f` | Bewegen Sie den Cursor ein Wort vorwärts |
|
||||
| `ctrl+d` | Zeichen unter Cursor | löschen
|
||||
| `ctrl+k` | Bis zum Zeilenende töten |
|
||||
| `ctrl+u` | Bis zum Zeilenanfang töten |
|
||||
| `ctrl+w` | Vorheriges Wort töten |
|
||||
| `alt+d` | Nächstes Wort töten |
|
||||
| `ctrl+t` | Zeichen transponieren |
|
||||
| `ctrl+g` | Popovers abbrechen / Ausführung der Antwort abbrechen |
|
||||
|
||||
---
|
||||
|
||||
## Umschalt+Eingabetaste
|
||||
|
||||
Einige Terminals senden standardmäßig keine Zusatztasten mit der Eingabetaste. Möglicherweise müssen Sie Ihr Terminal so konfigurieren, dass es `Shift+Enter` als Escape-Sequenz sendet.
|
||||
|
||||
### Windows-Terminal
|
||||
|
||||
Öffnen Sie Ihr `settings.json` unter:
|
||||
|
||||
```
|
||||
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
|
||||
```
|
||||
|
||||
Fügen Sie dies dem `actions`-Array auf Stammebene hinzu:
|
||||
|
||||
```json
|
||||
"actions": [
|
||||
{
|
||||
"command": {
|
||||
"action": "sendInput",
|
||||
"input": "\u001b[13;2u"
|
||||
},
|
||||
"id": "User.sendInput.ShiftEnterCustom"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Fügen Sie dies dem `keybindings`-Array auf Stammebene hinzu:
|
||||
|
||||
```json
|
||||
"keybindings": [
|
||||
{
|
||||
"keys": "shift+enter",
|
||||
"id": "User.sendInput.ShiftEnterCustom"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Speichern Sie die Datei und starten Sie das Windows-Terminal neu oder öffnen Sie einen neuen Tab.
|
||||
188
packages/web/src/content/docs/de/lsp.mdx
Normal file
188
packages/web/src/content/docs/de/lsp.mdx
Normal file
@@ -0,0 +1,188 @@
|
||||
---
|
||||
title: LSP Server
|
||||
description: OpenCode lässt sich in Ihren LSP-Server integrieren.
|
||||
---
|
||||
|
||||
OpenCode lässt sich in Ihr Language Server Protocol (LSP) integrieren, um die Interaktion von LLM mit Ihrer Codebasis zu unterstützen. Es verwendet Diagnosefunktionen, um dem LLM Feedback zu geben.
|
||||
|
||||
---
|
||||
|
||||
## Eingebaut
|
||||
|
||||
OpenCode verfügt über mehrere integrierte LSP-Server für gängige Sprachen:
|
||||
|
||||
| LSP Server | Erweiterungen | Anforderungen |
|
||||
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| Astro | .astro | Automatische Installation für Astro-Projekte |
|
||||
| bash | .sh, .bash, .zsh, .ksh | Installiert den Bash-Language-Server | automatisch
|
||||
| klirrend | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Automatische Installation für C/C++-Projekte |
|
||||
| csharp | .cs | `.NET SDK` installed |
|
||||
| clojure-lsp | .clj, .cljs, .cljc, .edn | `clojure-lsp`-Befehl verfügbar |
|
||||
| Dart | .dart | `dart`-Befehl verfügbar |
|
||||
| deno | .ts, .tsx, .js, .jsx, .mjs | `deno`-Befehl verfügbar (automatische Erkennung von deno.json/deno.jsonc) |
|
||||
| Elixier-ls | .ex, .exs | `elixir`-Befehl verfügbar |
|
||||
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` dependency in project |
|
||||
| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` installed |
|
||||
| Glanz | .glanz | `gleam`-Befehl verfügbar |
|
||||
| gopls | .go | `go`-Befehl verfügbar |
|
||||
| hls | .hs, .lhs | `haskell-language-server-wrapper`-Befehl verfügbar |
|
||||
| jdtls | .java | `Java SDK (version 21+)` installiert |
|
||||
| kotlin-ls | .kt, .kts | Automatische Installation für Kotlin-Projekte |
|
||||
| lua-ls | .lua | Automatische Installation für Lua-Projekte |
|
||||
| nixd | .nix | `nixd`-Befehl verfügbar |
|
||||
| ocaml-lsp | .ml, .mli | `ocamllsp`-Befehl verfügbar |
|
||||
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` dependency in project |
|
||||
| PHP Intelepense | .php | Automatische Installation für PHP-Projekte |
|
||||
| Prisma | .prisma | `prisma`-Befehl verfügbar |
|
||||
| pyright | .py, .pyi | `pyright` dependency installed |
|
||||
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Befehle `ruby` und `gem` verfügbar |
|
||||
| Rost | .rs | `rust-analyzer`-Befehl verfügbar |
|
||||
| sourcekit-lsp | .swift, .objc, .objcpp | `swift` installed (`xcode` on macOS) |
|
||||
| schlank | .svelte | Automatische Installation für Svelte-Projekte |
|
||||
| Terraform | .tf, .tfvars | Automatische Installation von GitHub-Releases |
|
||||
| winziger Nebel | .typ, .typc | Automatische Installation von GitHub-Releases |
|
||||
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` dependency in project |
|
||||
| vue | .vue | Automatische Installation für Vue-Projekte |
|
||||
| yaml-ls | .yaml, .yml | Installiert den Red Hat Yaml-Language-Server | automatisch
|
||||
| zls | .zig, .zon | `zig`-Befehl verfügbar |
|
||||
|
||||
LSP-Server werden automatisch aktiviert, wenn eine der oben genannten Dateierweiterungen erkannt wird und die Anforderungen erfüllt sind.
|
||||
|
||||
:::note
|
||||
Sie können LSP-Server-Downloads automatisch deaktivieren, indem Sie die Umgebungsvariable `OPENCODE_DISABLE_LSP_DOWNLOAD` auf `true` setzen.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Wie es funktioniert
|
||||
|
||||
Wenn Opencode eine Datei öffnet, geschieht Folgendes:
|
||||
|
||||
1. Überprüft die Dateierweiterung anhand aller aktivierten LSP-Server.
|
||||
2. Startet den entsprechenden LSP-Server, falls er noch nicht ausgeführt wird.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurieren
|
||||
|
||||
Sie können LSP-Server über den Abschnitt `lsp` in Ihrer Opencode-Konfiguration anpassen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {}
|
||||
}
|
||||
```
|
||||
|
||||
Jeder LSP-Server unterstützt Folgendes:
|
||||
|
||||
| Eigentum | Geben Sie | ein Beschreibung |
|
||||
| ---------------- | -------- | ------------------------------------------------- |
|
||||
| `disabled` | boolescher Wert | Setzen Sie dies auf `true`, um den LSP-Server zu deaktivieren
|
||||
| `command` | string[] | Der Befehl zum Starten des LSP-Servers |
|
||||
| `extensions` | string[] | Dateierweiterungen, die dieser LSP-Server verarbeiten soll |
|
||||
| `env` | Objekt | Umgebungsvariablen, die beim Starten des Servers festgelegt werden |
|
||||
| `initialization` | Objekt | Initialisierungsoptionen zum Senden an den LSP-Server |
|
||||
|
||||
Schauen wir uns einige Beispiele an.
|
||||
|
||||
---
|
||||
|
||||
### Umgebungsvariablen
|
||||
|
||||
Verwenden Sie die Eigenschaft `env`, um Umgebungsvariablen festzulegen, wenn Sie den Server LSP starten:
|
||||
|
||||
```json title="opencode.json" {5-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"rust": {
|
||||
"env": {
|
||||
"RUST_LOG": "debug"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Initialisierungsoptionen
|
||||
|
||||
Verwenden Sie die Eigenschaft `initialization`, um Initialisierungsoptionen an den Server LSP zu übergeben. Dies sind serverspezifische Einstellungen, die während der LSP `initialize`-Anfrage gesendet werden:
|
||||
|
||||
```json title="opencode.json" {5-9}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"typescript": {
|
||||
"initialization": {
|
||||
"preferences": {
|
||||
"importModuleSpecifierPreference": "relative"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
Die Initialisierungsoptionen variieren je nach LSP-Server. Überprüfen Sie die Dokumentation Ihres LSP-Servers auf verfügbare Optionen.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Deaktivieren von LSP-Servern
|
||||
|
||||
Um **alle** LSP-Server global zu deaktivieren, setzen Sie `lsp` auf `false`:
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": false
|
||||
}
|
||||
```
|
||||
|
||||
Um einen **bestimmten** LSP-Server zu deaktivieren, setzen Sie `disabled` auf `true`:
|
||||
|
||||
```json title="opencode.json" {5}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"typescript": {
|
||||
"disabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Benutzerdefinierter LSP-Server
|
||||
|
||||
Sie können einen benutzerdefinierten LSP-Server hinzufügen, indem Sie den Befehl und die Dateierweiterungen angeben:
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"custom-lsp": {
|
||||
"command": ["custom-lsp-server", "--stdio"],
|
||||
"extensions": [".custom"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Weitere Informationen
|
||||
|
||||
### PHP Intelepense
|
||||
|
||||
PHP Intelepense bietet Premium-Funktionen über einen Lizenzschlüssel. Sie können einen Lizenzschlüssel bereitstellen, indem Sie (nur) den Schlüssel in eine Textdatei einfügen unter:
|
||||
|
||||
- Auf macOS/Linux: `$HOME/intelephense/licence.txt`
|
||||
- Unter Windows: `%USERPROFILE%/intelephense/licence.txt`
|
||||
|
||||
Die Datei sollte nur den Lizenzschlüssel ohne zusätzlichen Inhalt enthalten.
|
||||
511
packages/web/src/content/docs/de/mcp-servers.mdx
Normal file
511
packages/web/src/content/docs/de/mcp-servers.mdx
Normal file
@@ -0,0 +1,511 @@
|
||||
---
|
||||
title: MCP Server
|
||||
description: Fügen Sie lokale und Remote-MCP-Tools hinzu.
|
||||
---
|
||||
|
||||
Sie können externe Tools zu OpenCode hinzufügen, indem Sie das _Model Context Protocol_ oder MCP verwenden. OpenCode unterstützt sowohl lokale als auch Remote-Server.
|
||||
|
||||
Nach dem Hinzufügen stehen MCP-Tools automatisch neben den integrierten Tools für LLM zur Verfügung.
|
||||
|
||||
---
|
||||
|
||||
#### Caveats
|
||||
|
||||
Wenn Sie einen MCP-Server verwenden, wird dieser zum Kontext hinzugefügt. Wenn Sie viele Werkzeuge haben, können Sie das schnell zusammenfassen. Wir empfehlen daher, vorsichtig zu sein, welchen MCP-Server Sie verwenden.
|
||||
|
||||
:::tip
|
||||
MCP-Server ergänzen Ihren Kontext, daher sollten Sie vorsichtig sein, welchen Server Sie aktivieren.
|
||||
:::
|
||||
|
||||
Bestimmte MCP-Server, wie der GitHub-Server MCP, neigen dazu, viele Token hinzuzufügen und können leicht das Kontextlimit überschreiten.
|
||||
|
||||
---
|
||||
|
||||
## Enable
|
||||
|
||||
Sie können den MCP-Server in Ihrem [OpenCode Config](https://opencode.ai/docs/config/) unter `mcp` definieren. Fügen Sie jedem MCP einen eindeutigen Namen hinzu. Sie können bei der Eingabe von LLM namentlich auf diesen MCP verweisen.
|
||||
|
||||
```jsonc title="opencode.jsonc" {6}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"name-of-mcp-server": {
|
||||
// ...
|
||||
"enabled": true,
|
||||
},
|
||||
"name-of-other-mcp-server": {
|
||||
// ...
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Sie können einen Server auch deaktivieren, indem Sie `enabled` auf `false` setzen. Dies ist nützlich, wenn Sie einen Server vorübergehend deaktivieren möchten, ohne ihn aus Ihrer Konfiguration zu entfernen.
|
||||
|
||||
---
|
||||
|
||||
### Überschreiben von Remote-Standardwerten
|
||||
|
||||
Organisationen können über ihren `.well-known/opencode`-Endpunkt Standard-MCP-Server bereitstellen. Diese Server sind möglicherweise standardmäßig deaktiviert, sodass Benutzer sich für den Server entscheiden können, die sie benötigen.
|
||||
|
||||
Um einen bestimmten Server aus der Remote-Konfiguration Ihrer Organisation zu aktivieren, fügen Sie ihn mit `enabled: true` zu Ihrer lokalen Konfiguration hinzu:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ihre lokalen Konfigurationswerte überschreiben die Remote-Standardwerte. Weitere Einzelheiten finden Sie unter [config precedence](/docs/config#precedence-order).
|
||||
|
||||
---
|
||||
|
||||
## Local
|
||||
|
||||
Fügen Sie lokale MCP-Server mit `type` bis `"local"` innerhalb des MCP-Objekts hinzu.
|
||||
|
||||
```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",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Mit dem Befehl wird der lokale MCP-Server gestartet. Sie können auch eine Liste von Umgebungsvariablen übergeben.
|
||||
|
||||
So können Sie beispielsweise den Testserver [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP hinzufügen.
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"mcp_everything": {
|
||||
"type": "local",
|
||||
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Und um es zu verwenden, kann ich `use the mcp_everything tool` zu meinen Eingabeaufforderungen hinzufügen.
|
||||
|
||||
```txt "mcp_everything"
|
||||
use the mcp_everything tool to add the number 3 and 4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Options
|
||||
|
||||
Hier finden Sie alle Optionen zum Konfigurieren eines lokalen MCP-Servers.
|
||||
|
||||
| Option | Geben Sie | ein Erforderlich | Beschreibung |
|
||||
| ------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| `type` | Zeichenfolge | Y | Typ der MCP-Serververbindung, muss `"local"` sein. |
|
||||
| `command` | Array | Y | Befehl und Argumente zum Ausführen des MCP-Servers. |
|
||||
| `environment` | Objekt | | Umgebungsvariablen, die beim Ausführen des Servers festgelegt werden sollen. |
|
||||
| `enabled` | Boolescher Wert | | Aktivieren oder deaktivieren Sie den MCP-Server beim Start. |
|
||||
| `timeout` | Nummer | | Timeout in ms für das Abrufen von Tools vom MCP-Server. Standardmäßig ist 5000 (5 Sekunden). |
|
||||
|
||||
---
|
||||
|
||||
## Remote
|
||||
|
||||
Fügen Sie den Remote-MCP-Server hinzu, indem Sie `type` auf `"remote"` setzen.
|
||||
|
||||
```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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Der `url` ist der URL des Remote-Servers MCP und mit der Option `headers` können Sie eine Liste von Headern übergeben.
|
||||
|
||||
---
|
||||
|
||||
#### Options
|
||||
|
||||
| Option | Geben Sie | ein Erforderlich | Beschreibung |
|
||||
| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| `type` | Zeichenfolge | Y | Typ der MCP-Serververbindung, muss `"remote"` sein. |
|
||||
| `url` | Zeichenfolge | Y | URL des Remote-Servers MCP. |
|
||||
| `enabled` | Boolescher Wert | | Aktivieren oder deaktivieren Sie den MCP-Server beim Start. |
|
||||
| `headers` | Objekt | | Header, die mit der Anfrage gesendet werden sollen. |
|
||||
| `oauth` | Objekt | | OAuth-Authentifizierungskonfiguration. Siehe Abschnitt [OAuth](#oauth) unten. |
|
||||
| `timeout` | Nummer | | Timeout in ms für das Abrufen von Tools vom MCP-Server. Standardmäßig ist 5000 (5 Sekunden). |
|
||||
|
||||
---
|
||||
|
||||
## OAuth
|
||||
|
||||
OpenCode übernimmt automatisch die OAuth-Authentifizierung für Remote-MCP-Server. Wenn ein Server eine Authentifizierung erfordert, wird OpenCode Folgendes tun:
|
||||
|
||||
1. Erkennen Sie die 401-Antwort und initiieren Sie den OAuth-Fluss
|
||||
2. Verwenden Sie **Dynamische Client-Registrierung (RFC 7591)**, sofern vom Server unterstützt
|
||||
3. Bewahren Sie Token sicher für zukünftige Anfragen auf
|
||||
|
||||
---
|
||||
|
||||
### Automatic
|
||||
|
||||
Für die meisten OAuth-fähigen MCP-Server ist keine spezielle Konfiguration erforderlich. Konfigurieren Sie einfach den Remote-Server:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-oauth-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn der Server eine Authentifizierung erfordert, werden Sie von OpenCode beim ersten Versuch, ihn zu verwenden, zur Authentifizierung autorisiert. Wenn nicht, können Sie [manually trigger the flow](#authenticating) mit `opencode mcp auth <server-name>` verwenden.
|
||||
|
||||
---
|
||||
|
||||
### Pre-registered
|
||||
|
||||
Wenn Sie über Client-Anmeldeinformationen vom Serveranbieter MCP verfügen, können Sie diese konfigurieren:
|
||||
|
||||
```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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Authenticating
|
||||
|
||||
Sie können die Authentifizierung manuell auslösen oder Anmeldeinformationen verwalten.
|
||||
|
||||
Authentifizieren Sie sich bei einem bestimmten MCP-Server:
|
||||
|
||||
```bash
|
||||
opencode mcp auth my-oauth-server
|
||||
```
|
||||
|
||||
Hören Sie alle MCP-Server und ihren Authentifizierungsstatus auf:
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
```
|
||||
|
||||
Gespeicherte Zugangsdaten entfernen:
|
||||
|
||||
```bash
|
||||
opencode mcp logout my-oauth-server
|
||||
```
|
||||
|
||||
Der Befehl `mcp auth` öffnet Ihren Browser zur Autorisierung. Nach der Autorisierung speichert OpenCode die Token sicher in `~/.local/share/opencode/mcp-auth.json`.
|
||||
|
||||
---
|
||||
|
||||
#### OAuth deaktivieren
|
||||
|
||||
Wenn Sie automatisches OAuth für einen Server deaktivieren möchten (e.g., für Server, die stattdessen API-Schlüssel verwenden), setzen Sie `oauth` auf `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-Optionen
|
||||
|
||||
| Option | Geben Sie | ein Beschreibung |
|
||||
| -------------- | --------------- | -------------------------------------------------------------------------------- |
|
||||
| `oauth` | Objekt \| falsch | OAuth-Konfigurationsobjekt oder `false`, um die automatische OAuth-Erkennung zu deaktivieren. |
|
||||
| `clientId` | Zeichenfolge | OAuth-Client ID. Wenn nicht angegeben, wird eine dynamische Client-Registrierung versucht. |
|
||||
| `clientSecret` | Zeichenfolge | OAuth-Client-Geheimnis, falls vom Autorisierungsserver erforderlich. |
|
||||
| `scope` | Zeichenfolge | OAuth-Bereiche, die während der Autorisierung angefordert werden sollen. |
|
||||
|
||||
#### Debugging
|
||||
|
||||
Wenn die Authentifizierung eines Remote-Servers MCP fehlschlägt, können Sie Probleme diagnostizieren mit:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Der Befehl `mcp debug` zeigt den aktuellen Authentifizierungsstatus an, testet die HTTP-Konnektivität und versucht den OAuth-Erkennungsfluss.
|
||||
|
||||
---
|
||||
|
||||
## Manage
|
||||
|
||||
Ihre MCPs sind neben integrierten Tools auch als Tools in OpenCode verfügbar. Sie können sie also wie jedes andere Tool über die OpenCode-Konfiguration verwalten.
|
||||
|
||||
---
|
||||
|
||||
### Global
|
||||
|
||||
Das bedeutet, dass Sie sie global aktivieren oder deaktivieren können.
|
||||
|
||||
```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
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wir können auch ein Glob-Muster verwenden, um alle passenden MCPs zu deaktivieren.
|
||||
|
||||
```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
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hier verwenden wir das Glob-Muster `my-mcp*`, um alle MCPs zu deaktivieren.
|
||||
|
||||
---
|
||||
|
||||
### Pro Agent
|
||||
|
||||
Wenn Sie über eine große Anzahl von MCP-Servern verfügen, möchten Sie diese möglicherweise nur pro Agent aktivieren und global deaktivieren. Gehen Sie dazu wie folgt vor:
|
||||
|
||||
1. Deaktivieren Sie es global als Tool.
|
||||
2. Aktivieren Sie in Ihrem [agent config](/docs/agents#tools) den MCP-Server als Tool.
|
||||
|
||||
```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-Muster
|
||||
|
||||
Das Glob-Muster verwendet einfache Regex-Globbing-Muster:
|
||||
|
||||
- `*` entspricht null oder mehr Zeichen (e.g., `"my-mcp*"` entspricht `my-mcp_search`, `my-mcp_list` usw.)
|
||||
- `?` matches exactly one character
|
||||
- Alle anderen Zeichen stimmen wörtlich überein
|
||||
|
||||
:::note
|
||||
MCP-Servertools werden mit dem Servernamen als Präfix registriert. Um alle Tools für einen Server zu deaktivieren, verwenden Sie einfach Folgendes:
|
||||
|
||||
```
|
||||
"mymcpservername_*": false
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
Nachfolgend finden Sie Beispiele einiger gängiger MCP-Server. Sie können ein PR einreichen, wenn Sie einen anderen Server dokumentieren möchten.
|
||||
|
||||
---
|
||||
|
||||
### Sentry
|
||||
|
||||
Fügen Sie [Sentry MCP server](https://mcp.sentry.dev) hinzu, um mit Ihren Sentry-Projekten und -Problemen zu interagieren.
|
||||
|
||||
```json title="opencode.json" {4-8}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"sentry": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.sentry.dev/mcp",
|
||||
"oauth": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Authentifizieren Sie sich nach dem Hinzufügen der Konfiguration mit Sentry:
|
||||
|
||||
```bash
|
||||
opencode mcp auth sentry
|
||||
```
|
||||
|
||||
Dadurch wird ein Browserfenster geöffnet, um den OAuth-Ablauf abzuschließen und OpenCode mit Ihrem Sentry-Konto zu verbinden.
|
||||
|
||||
Nach der Authentifizierung können Sie Sentry-Tools in Ihren Eingabeaufforderungen verwenden, um Probleme, Projekte und Fehlerdaten abzufragen.
|
||||
|
||||
```txt "use sentry"
|
||||
Show me the latest unresolved issues in my project. use sentry
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Context7
|
||||
|
||||
Fügen Sie [Context7 MCP server](https://github.com/upstash/context7) hinzu, um Dokumente zu durchsuchen.
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"context7": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.context7.com/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn Sie sich für ein kostenloses Konto angemeldet haben, können Sie Ihren API-Schlüssel verwenden und höhere Ratenlimits erhalten.
|
||||
|
||||
```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}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Hier gehen wir davon aus, dass Sie die Umgebungsvariable `CONTEXT7_API_KEY` festgelegt haben.
|
||||
|
||||
Fügen Sie `use context7` zu Ihren Eingabeaufforderungen hinzu, um den Context7 MCP-Server zu verwenden.
|
||||
|
||||
```txt "use context7"
|
||||
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
|
||||
```
|
||||
|
||||
Alternativ können Sie so etwas zu Ihrem [AGENTS.md](/docs/rules/) hinzufügen.
|
||||
|
||||
```md title="AGENTS.md"
|
||||
When you need to search docs, use `context7` tools.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Grep von Vercel
|
||||
|
||||
Fügen Sie den Server [Grep by Vercel](https://grep.app) MCP hinzu, um Codefragmente auf GitHub zu durchsuchen.
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"gh_grep": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.grep.app"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Da wir unseren MCP-Server `gh_grep` genannt haben, können Sie `use the gh_grep tool` zu Ihren Eingabeaufforderungen hinzufügen, um den Agenten dazu zu bringen, ihn zu verwenden.
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Alternativ können Sie so etwas zu Ihrem [AGENTS.md](/docs/rules/) hinzufügen.
|
||||
|
||||
```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/de/models.mdx
Normal file
223
packages/web/src/content/docs/de/models.mdx
Normal file
@@ -0,0 +1,223 @@
|
||||
---
|
||||
title: Modelle
|
||||
description: Konfigurieren eines LLM-Anbieters und -Modells.
|
||||
---
|
||||
|
||||
OpenCode verwendet [AI SDK](https://ai-sdk.dev/) und [Models.dev](https://models.dev) zur Unterstützung von **75+ LLM-Anbietern** und unterstützt die Ausführung lokaler Modelle.
|
||||
|
||||
---
|
||||
|
||||
## Providers
|
||||
|
||||
Die meisten gängigen Anbieter sind standardmäßig vorinstalliert. Wenn Sie die Anmeldeinformationen für einen Anbieter über den Befehl `/connect` hinzugefügt haben, sind diese verfügbar, wenn Sie OpenCode starten.
|
||||
|
||||
Erfahren Sie mehr über [providers](/docs/providers).
|
||||
|
||||
---
|
||||
|
||||
## Wählen Sie ein Modell aus
|
||||
|
||||
Sobald Sie Ihren Anbieter konfiguriert haben, können Sie das gewünschte Modell auswählen, indem Sie Folgendes eingeben:
|
||||
|
||||
```bash frame="none"
|
||||
/models
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Empfohlene Modelle
|
||||
|
||||
Es gibt viele Modelle da draußen und jede Woche kommen neue Modelle heraus.
|
||||
|
||||
:::tip
|
||||
Erwägen Sie die Verwendung eines der von uns empfohlenen Modelle.
|
||||
:::
|
||||
|
||||
Allerdings gibt es nur wenige von ihnen, die sowohl gut darin sind, Code zu generieren als auch Tools aufzurufen.
|
||||
|
||||
Hier sind mehrere Modelle, die gut mit OpenCode funktionieren, in keiner bestimmten Reihenfolge. (Dies ist weder eine vollständige noch eine unbedingt aktuelle Liste):
|
||||
|
||||
- GPT 5.2
|
||||
- GPT 5.1 Kodex
|
||||
- Claude Opus 4.5
|
||||
- Claude Sonett 4.5
|
||||
- Minimax M2.1
|
||||
- Gemini 3 Pro
|
||||
|
||||
---
|
||||
|
||||
## Legen Sie einen Standard fest
|
||||
|
||||
Um eines davon als Standardmodell festzulegen, können Sie den Schlüssel `model` in Ihrem festlegen
|
||||
OpenCode config.
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "lmstudio/google/gemma-3n-e4b"
|
||||
}
|
||||
```
|
||||
|
||||
Hier ist der vollständige ID `provider_id/model_id`. Wenn Sie beispielsweise [OpenCode Zen](/docs/zen) verwenden, würden Sie `opencode/gpt-5.1-codex` für GPT 5.1 Codex verwenden.
|
||||
|
||||
Wenn Sie einen [custom provider](/docs/providers#custom) konfiguriert haben, ist `provider_id` der Schlüssel aus dem `provider`-Teil Ihrer Konfiguration und `model_id` der Schlüssel aus `provider.models`.
|
||||
|
||||
---
|
||||
|
||||
## Modelle konfigurieren
|
||||
|
||||
Sie können die Optionen eines Modells global über die Konfiguration konfigurieren.
|
||||
|
||||
```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,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Hier konfigurieren wir globale Einstellungen für zwei integrierte Modelle: `gpt-5` bei Zugriff über den `openai`-Anbieter und `claude-sonnet-4-20250514` bei Zugriff über den `anthropic`-Anbieter.
|
||||
Die integrierten Anbieter- und Modellnamen finden Sie unter [Models.dev](https://models.dev).
|
||||
|
||||
Sie können diese Optionen auch für alle von Ihnen verwendeten Agenten konfigurieren. Die Agentenkonfiguration beschreibt hier alle globalen Optionen. [Learn more](/docs/agents/#additional).
|
||||
|
||||
Sie können auch benutzerdefinierte Varianten definieren, die integrierte Varianten erweitern. Mit Varianten können Sie unterschiedliche Einstellungen für dasselbe Modell konfigurieren, ohne doppelte Einträge zu erstellen:
|
||||
|
||||
```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",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Variants
|
||||
|
||||
Viele Modelle unterstützen mehrere Varianten mit unterschiedlichen Konfigurationen. OpenCode wird mit integrierten Standardvarianten für beliebte Anbieter ausgeliefert.
|
||||
|
||||
### Einbauvarianten
|
||||
|
||||
OpenCode wird für viele Anbieter mit Standardvarianten ausgeliefert:
|
||||
|
||||
**Anthropisch**:
|
||||
|
||||
- `high` – Budget für hohes Denken (Standard)
|
||||
- `max` – Maximales Denkbudget
|
||||
|
||||
**OpenAI**:
|
||||
|
||||
Variiert je nach Modell, aber ungefähr:
|
||||
|
||||
- `none` – Keine Begründung
|
||||
- `minimal` – Minimaler Argumentationsaufwand
|
||||
- `low` – Geringer Denkaufwand
|
||||
- `medium` – Mittlerer Denkaufwand
|
||||
- `high` – Hoher Denkaufwand
|
||||
- `xhigh` – Extra hoher Argumentationsaufwand
|
||||
|
||||
**Google**:
|
||||
|
||||
- `low` – Beliebtestes effort/token-Budget
|
||||
- `high` – Höheres effort/token-Budget
|
||||
|
||||
:::tip
|
||||
Diese Liste ist nicht vollständig. Viele andere Anbieter verfügen ebenfalls über integrierte Standardeinstellungen.
|
||||
:::
|
||||
|
||||
### Benutzerdefinierte Varianten
|
||||
|
||||
Sie können vorhandene Varianten überschreiben oder eigene hinzufügen:
|
||||
|
||||
```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,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Zyklusvarianten
|
||||
|
||||
Verwenden Sie die Tastenkombination `variant_cycle`, um schnell zwischen Varianten zu wechseln. [Learn more](/docs/keybinds).
|
||||
|
||||
---
|
||||
|
||||
## Laden von Modellen
|
||||
|
||||
Wenn OpenCode startet, sucht es nach Modellen in der folgenden Prioritätsreihenfolge:
|
||||
|
||||
1. Das Befehlszeilenflag `--model` oder `-m`. Das Format ist das gleiche wie in der Konfigurationsdatei: `provider_id/model_id`.
|
||||
|
||||
2. Die Modellliste in der OpenCode-Konfiguration.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "anthropic/claude-sonnet-4-20250514"
|
||||
}
|
||||
```
|
||||
|
||||
Das Format hier ist `provider/model`.
|
||||
|
||||
3. Das zuletzt verwendete Modell.
|
||||
|
||||
4. Das erste Modell, das eine interne Priorität verwendet.
|
||||
331
packages/web/src/content/docs/de/modes.mdx
Normal file
331
packages/web/src/content/docs/de/modes.mdx
Normal file
@@ -0,0 +1,331 @@
|
||||
---
|
||||
title: Modi
|
||||
description: Verschiedene Modi für unterschiedliche Anwendungsfälle.
|
||||
---
|
||||
|
||||
:::caution
|
||||
Modi werden jetzt über die Option `agent` in der Opencode-Konfiguration konfiguriert. Der
|
||||
Die Option `mode` ist jetzt veraltet. [Learn more](/docs/agents).
|
||||
:::
|
||||
|
||||
Mit den Modi in Opencode können Sie das Verhalten, die Tools und die Eingabeaufforderungen für verschiedene Anwendungsfälle anpassen.
|
||||
|
||||
Es verfügt über zwei integrierte Modi: **Build** und **Plan**. Sie können anpassen
|
||||
diese oder konfigurieren Sie Ihre eigenen über die Opencode-Konfiguration.
|
||||
|
||||
Sie können während einer Sitzung zwischen den Modi wechseln oder diese in Ihrer Konfigurationsdatei konfigurieren.
|
||||
|
||||
---
|
||||
|
||||
## Built-in
|
||||
|
||||
Opencode verfügt über zwei integrierte Modi.
|
||||
|
||||
---
|
||||
|
||||
### Build
|
||||
|
||||
Build ist der **Standardmodus**, bei dem alle Tools aktiviert sind. Dies ist der Standardmodus für Entwicklungsarbeiten, bei dem Sie vollen Zugriff auf Dateioperationen und Systembefehle benötigen.
|
||||
|
||||
---
|
||||
|
||||
### Plan
|
||||
|
||||
Ein eingeschränkter Modus für Planung und Analyse. Im Planmodus sind die folgenden Tools standardmäßig deaktiviert:
|
||||
|
||||
- `write` – Es können keine neuen Dateien erstellt werden
|
||||
- `edit` – Vorhandene Dateien können nicht geändert werden, mit Ausnahme der Dateien unter `.opencode/plans/*.md`, um den Plan selbst detailliert darzustellen
|
||||
- `patch` – Patches können nicht angewendet werden
|
||||
- `bash` – Shell-Befehle können nicht ausgeführt werden
|
||||
|
||||
Dieser Modus ist nützlich, wenn Sie möchten, dass AI Code analysiert, Änderungen vorschlägt oder Pläne erstellt, ohne tatsächliche Änderungen an Ihrer Codebasis vorzunehmen.
|
||||
|
||||
---
|
||||
|
||||
## Switching
|
||||
|
||||
Sie können während einer Sitzung mit der _Tab_-Taste zwischen den Modi wechseln. Oder Ihre konfigurierte `switch_mode`-Tastenkombination.
|
||||
|
||||
Siehe auch: [Formatters](/docs/formatters) für Informationen zur Codeformatierungskonfiguration.
|
||||
|
||||
---
|
||||
|
||||
## Configure
|
||||
|
||||
Sie können die integrierten Modi anpassen oder über die Konfiguration eigene erstellen. Modi können auf zwei Arten konfiguriert werden:
|
||||
|
||||
### JSON Konfiguration
|
||||
|
||||
Konfigurieren Sie Modi in Ihrer `opencode.json`-Konfigurationsdatei:
|
||||
|
||||
```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
|
||||
|
||||
Sie können Modi auch mithilfe von Markdown-Dateien definieren. Platzieren Sie sie in:
|
||||
|
||||
- Global: `~/.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.
|
||||
```
|
||||
|
||||
Der Name der Markdown-Datei wird zum Modusnamen (e.g., `review.md` erstellt einen `review`-Modus).
|
||||
|
||||
Schauen wir uns diese Konfigurationsmöglichkeiten im Detail an.
|
||||
|
||||
---
|
||||
|
||||
### Model
|
||||
|
||||
Verwenden Sie die `model`-Konfiguration, um das Standardmodell für diesen Modus zu überschreiben. Nützlich für die Verwendung verschiedener Modelle, die für verschiedene Aufgaben optimiert sind. Zum Beispiel ein schnelleres Modell für die Planung, ein leistungsfähigeres Modell für die Umsetzung.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Temperature
|
||||
|
||||
Steuern Sie die Zufälligkeit und Kreativität der Antworten von AI mit der `temperature`-Konfiguration. Niedrigere Werte machen die Antworten fokussierter und deterministischer, während höhere Werte die Kreativität und Variabilität steigern.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"plan": {
|
||||
"temperature": 0.1
|
||||
},
|
||||
"creative": {
|
||||
"temperature": 0.8
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Temperaturwerte liegen typischerweise zwischen 0.0 und 1.0:
|
||||
|
||||
- **0.0-0.2**: Sehr fokussierte und deterministische Antworten, ideal für Code-Analyse und Planung
|
||||
- **0.3-0.5**: Ausgewogene Antworten mit etwas Kreativität, gut für allgemeine Entwicklungsaufgaben
|
||||
- **0.6-1.0**: Kreativere und vielfältigere Antworten, nützlich für Brainstorming und Erkundung
|
||||
|
||||
```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}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn keine Temperatur angegeben ist, verwendet Opencode modellspezifische Standardwerte (normalerweise 0 für die meisten Modelle, 0.55 für Qwen-Modelle).
|
||||
|
||||
---
|
||||
|
||||
### Prompt
|
||||
|
||||
Geben Sie mit der `prompt`-Konfiguration eine benutzerdefinierte Systemaufforderungsdatei für diesen Modus an. Die Eingabeaufforderungsdatei sollte spezifische Anweisungen für den Zweck des Modus enthalten.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"review": {
|
||||
"prompt": "{file:./prompts/code-review.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dieser Pfad ist relativ zum Speicherort der Konfigurationsdatei. Das funktioniert also
|
||||
sowohl die globale Opencode-Konfiguration als auch die projektspezifische Konfiguration.
|
||||
|
||||
---
|
||||
|
||||
### Tools
|
||||
|
||||
Steuern Sie mit der `tools`-Konfiguration, welche Tools in diesem Modus verfügbar sind. Sie können bestimmte Tools aktivieren oder deaktivieren, indem Sie sie auf `true` oder `false` setzen.
|
||||
|
||||
```json
|
||||
{
|
||||
"mode": {
|
||||
"readonly": {
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false,
|
||||
"read": true,
|
||||
"grep": true,
|
||||
"glob": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn keine Tools angegeben sind, sind alle Tools standardmäßig aktiviert.
|
||||
|
||||
---
|
||||
|
||||
#### Verfügbare Werkzeuge
|
||||
|
||||
Hier sind alle Tools aufgeführt, die über den Konfigurationsmodus gesteuert werden können.
|
||||
|
||||
| Werkzeug | Beschreibung |
|
||||
| ----------- | ----------------------- |
|
||||
| `bash` | Shell-Befehle ausführen |
|
||||
| `edit` | Vorhandene Dateien ändern |
|
||||
| `write` | Neue Dateien erstellen |
|
||||
| `read` | Dateiinhalt lesen |
|
||||
| `grep` | Dateiinhalte durchsuchen |
|
||||
| `glob` | Dateien nach Muster suchen |
|
||||
| `list` | Verzeichnisinhalte auflisten |
|
||||
| `patch` | Patches auf Dateien anwenden |
|
||||
| `todowrite` | Aufgabenlisten verwalten |
|
||||
| `todoread` | Aufgabenlisten lesen |
|
||||
| `webfetch` | Webinhalte abrufen |
|
||||
|
||||
---
|
||||
|
||||
## Benutzerdefinierte Modi
|
||||
|
||||
Sie können Ihre eigenen benutzerdefinierten Modi erstellen, indem Sie diese zur Konfiguration hinzufügen. Hier sind Beispiele für beide Ansätze:
|
||||
|
||||
### Verwenden der 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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Verwendung von Markdown-Dateien
|
||||
|
||||
Erstellen Sie Modusdateien in `.opencode/modes/` für projektspezifische Modi oder `~/.config/opencode/modes/` für globale Modi:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Anwendungsfälle
|
||||
|
||||
Hier sind einige häufige Anwendungsfälle für verschiedene Modi.
|
||||
|
||||
- **Build-Modus**: Vollständige Entwicklungsarbeit mit allen aktivierten Tools
|
||||
- **Planmodus**: Analyse und Planung ohne Änderungen
|
||||
- **Überprüfungsmodus**: Codeüberprüfung mit schreibgeschütztem Zugriff plus Dokumentationstools
|
||||
- **Debug-Modus**: Konzentriert sich auf die Untersuchung mit aktivierten Bash- und Lesetools
|
||||
- **Docs-Modus**: Dokumentationsschreiben mit Dateioperationen, aber ohne Systembefehle
|
||||
|
||||
Möglicherweise stellen Sie auch fest, dass unterschiedliche Modelle für unterschiedliche Anwendungsfälle geeignet sind.
|
||||
57
packages/web/src/content/docs/de/network.mdx
Normal file
57
packages/web/src/content/docs/de/network.mdx
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: Netzwerk
|
||||
description: Konfigurieren Sie Proxys und benutzerdefinierte Zertifikate.
|
||||
---
|
||||
|
||||
OpenCode unterstützt Standard-Proxy-Umgebungsvariablen und benutzerdefinierte Zertifikate für Unternehmensnetzwerkumgebungen.
|
||||
|
||||
---
|
||||
|
||||
## Proxy
|
||||
|
||||
OpenCode respects standard proxy environment variables.
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
:::caution
|
||||
Der TUI kommuniziert mit einem lokalen HTTP-Server. Sie müssen den Proxy für diese Verbindung umgehen, um Routing-Schleifen zu verhindern.
|
||||
:::
|
||||
|
||||
Sie können den Port und den Hostnamen des Servers mit [CLI flags](/docs/cli#run) konfigurieren.
|
||||
|
||||
---
|
||||
|
||||
### Authenticate
|
||||
|
||||
Wenn Ihr Proxy eine Basisauthentifizierung erfordert, geben Sie Anmeldeinformationen in URL ein.
|
||||
|
||||
```bash
|
||||
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
|
||||
```
|
||||
|
||||
:::caution
|
||||
Vermeiden Sie hartkodierte Passwörter. Verwenden Sie Umgebungsvariablen oder einen sicheren Speicher für Anmeldeinformationen.
|
||||
:::
|
||||
|
||||
Für Proxys, die eine erweiterte Authentifizierung wie NTLM oder Kerberos erfordern, sollten Sie die Verwendung eines LLM-Gateways in Betracht ziehen, das Ihre Authentifizierungsmethode unterstützt.
|
||||
|
||||
---
|
||||
|
||||
## Benutzerdefinierte Zertifikate
|
||||
|
||||
Wenn Ihr Unternehmen benutzerdefinierte Zertifizierungsstellen für HTTPS-Verbindungen verwendet, konfigurieren Sie OpenCode so, dass es ihnen vertraut.
|
||||
|
||||
```bash
|
||||
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
|
||||
```
|
||||
|
||||
Dies funktioniert sowohl für Proxy-Verbindungen als auch für den direkten API-Zugriff.
|
||||
237
packages/web/src/content/docs/de/permissions.mdx
Normal file
237
packages/web/src/content/docs/de/permissions.mdx
Normal file
@@ -0,0 +1,237 @@
|
||||
---
|
||||
title: Berechtigungen
|
||||
description: Steuern Sie, für welche Aktionen eine Genehmigung erforderlich ist.
|
||||
---
|
||||
|
||||
OpenCode verwendet die `permission`-Konfiguration, um zu entscheiden, ob eine bestimmte Aktion automatisch ausgeführt werden soll, Sie dazu auffordern oder blockiert werden soll.
|
||||
|
||||
Ab `v1.1.1` ist die alte boolesche Konfiguration `tools` veraltet und wurde in `permission` zusammengeführt. Die alte `tools`-Konfiguration wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt.
|
||||
|
||||
---
|
||||
|
||||
## Actions
|
||||
|
||||
Jede Berechtigungsregel wird zu einem der folgenden aufgelöst:
|
||||
|
||||
- `"allow"` – ohne Genehmigung ausführen
|
||||
- `"ask"` — prompt for approval
|
||||
- `"deny"` – Aktion blockieren
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
Sie können Berechtigungen global festlegen (mit `*`) und bestimmte Tools überschreiben.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"*": "ask",
|
||||
"bash": "allow",
|
||||
"edit": "deny"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Sie können auch alle Berechtigungen auf einmal festlegen:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": "allow"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Granulare Regeln (Objektsyntax)
|
||||
|
||||
Bei den meisten Berechtigungen können Sie ein Objekt verwenden, um basierend auf der Werkzeugeingabe verschiedene Aktionen anzuwenden.
|
||||
|
||||
```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"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Regeln werden nach Musterübereinstimmung ausgewertet, wobei die **letzte übereinstimmende Regel gewinnt**. Ein gängiges Muster besteht darin, zuerst die Catch-All-Regel `"*"` und danach spezifischere Regeln zu platzieren.
|
||||
|
||||
### Wildcards
|
||||
|
||||
Berechtigungsmuster verwenden einen einfachen Platzhalterabgleich:
|
||||
|
||||
- `*` matches zero or more of any character
|
||||
- `?` matches exactly one character
|
||||
- Alle anderen Zeichen stimmen wörtlich überein
|
||||
|
||||
### Erweiterung des Home-Verzeichnisses
|
||||
|
||||
Sie können `~` oder `$HOME` am Anfang eines Musters verwenden, um auf Ihr Home-Verzeichnis zu verweisen. Dies ist besonders nützlich für [`external_directory`](#external-directories)-Regeln.
|
||||
|
||||
- `~/projects/*` -> `/Users/username/projects/*`
|
||||
- `$HOME/projects/*` -> `/Users/username/projects/*`
|
||||
- `~` -> `/Users/username`
|
||||
|
||||
### Externe Verzeichnisse
|
||||
|
||||
Verwenden Sie `external_directory`, um Toolaufrufe zuzulassen, die Pfade außerhalb des Arbeitsverzeichnisses berühren, in dem OpenCode gestartet wurde. Dies gilt für jedes Werkzeug, das einen Pfad als Eingabe verwendet (z. B. `read`, `edit`, `list`, `glob`, `grep` und viele `bash`-Befehle).
|
||||
|
||||
Die Home-Erweiterung (wie `~/...`) wirkt sich nur darauf aus, wie ein Muster geschrieben wird. Dadurch wird ein externer Pfad nicht zum Teil des aktuellen Arbeitsbereichs, daher müssen Pfade außerhalb des Arbeitsverzeichnisses weiterhin über `external_directory` zulässig sein.
|
||||
|
||||
Dies ermöglicht beispielsweise den Zugriff auf alles unter `~/projects/personal/`:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"external_directory": {
|
||||
"~/projects/personal/**": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Jedes hier zulässige Verzeichnis erbt dieselben Standardeinstellungen wie der aktuelle Arbeitsbereich. Seit [`read` defaults to `allow`](#defaults) sind Lesevorgänge auch für Einträge unter `external_directory` zulässig, sofern sie nicht überschrieben werden. Fügen Sie explizite Regeln hinzu, wenn ein Tool in diesen Pfaden eingeschränkt werden soll, z. B. das Blockieren von Bearbeitungen, während Lesevorgänge beibehalten werden:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"external_directory": {
|
||||
"~/projects/personal/**": "allow"
|
||||
},
|
||||
"edit": {
|
||||
"~/projects/personal/**": "deny"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Konzentrieren Sie sich in der Liste auf vertrauenswürdige Pfade und fügen Sie bei Bedarf zusätzliche Zulassungs- oder Ablehnungsregeln für andere Tools hinzu (z. B. `bash`).
|
||||
|
||||
---
|
||||
|
||||
## Verfügbare Berechtigungen
|
||||
|
||||
OpenCode permissions are keyed by tool name, plus a couple of safety guards:
|
||||
|
||||
- `read` – eine Datei lesen (entspricht dem Dateipfad)
|
||||
- `edit` – alle Dateiänderungen (umfasst `edit`, `write`, `patch`, `multiedit`)
|
||||
- `glob` – Datei-Globbing (entspricht dem Glob-Muster)
|
||||
- `grep` – Inhaltssuche (entspricht dem Regex-Muster)
|
||||
- `list` – Auflistung der Dateien in einem Verzeichnis (entspricht dem Verzeichnispfad)
|
||||
- `bash` – Ausführen von Shell-Befehlen (entspricht analysierten Befehlen wie `git status --porcelain`)
|
||||
- `task` – Subagenten starten (entspricht dem Subagententyp)
|
||||
- `skill` – Laden einer Fertigkeit (entspricht dem Fertigkeitsnamen)
|
||||
- `lsp` — running LSP queries (currently non-granular)
|
||||
- `todoread`, `todowrite` – reading/updating die Aufgabenliste
|
||||
- `webfetch` – Abrufen eines URL (entspricht dem URL)
|
||||
- `websearch`, `codesearch` – web/code Suche (entspricht der Abfrage)
|
||||
- `external_directory` – wird ausgelöst, wenn ein Tool Pfade außerhalb des Projektarbeitsverzeichnisses berührt
|
||||
- `doom_loop` – wird ausgelöst, wenn derselbe Werkzeugaufruf dreimal mit identischer Eingabe wiederholt wird
|
||||
|
||||
---
|
||||
|
||||
## Defaults
|
||||
|
||||
Wenn Sie nichts angeben, beginnt OpenCode mit zulässigen Standardeinstellungen:
|
||||
|
||||
- Die meisten Berechtigungen sind standardmäßig auf `"allow"` eingestellt.
|
||||
- `doom_loop` und `external_directory` sind standardmäßig `"ask"`.
|
||||
- `read` is `"allow"`, but `.env` files are denied by default:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"permission": {
|
||||
"read": {
|
||||
"*": "allow",
|
||||
"*.env": "deny",
|
||||
"*.env.*": "deny",
|
||||
"*.env.example": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Was „Fragen“ bewirkt
|
||||
|
||||
Wenn OpenCode zur Genehmigung auffordert, bietet UI drei Ergebnisse:
|
||||
|
||||
- `once` — approve just this request
|
||||
- `always` – zukünftige Anfragen genehmigen, die den vorgeschlagenen Mustern entsprechen (für den Rest der aktuellen OpenCode-Sitzung)
|
||||
- `reject` – die Anfrage ablehnen
|
||||
|
||||
Der Satz von Mustern, die `always` genehmigen würde, wird vom Tool bereitgestellt (Beispiel: Bash-Genehmigungen setzen normalerweise ein sicheres Befehlspräfix wie `git status*` auf die Whitelist).
|
||||
|
||||
---
|
||||
|
||||
## Agents
|
||||
|
||||
Sie können Berechtigungen pro Agent überschreiben. Agentenberechtigungen werden mit der globalen Konfiguration zusammengeführt und Agentenregeln haben Vorrang. [Learn more](/docs/agents#permissions) über Agentenberechtigungen.
|
||||
|
||||
:::note
|
||||
Ausführlichere Mustervergleichsbeispiele finden Sie oben im Abschnitt [Granular Rules (Object Syntax)](#granular-rules-object-syntax).
|
||||
:::
|
||||
|
||||
```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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Sie können Agentenberechtigungen auch in Markdown konfigurieren:
|
||||
|
||||
```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
|
||||
Verwenden Sie den Mustervergleich für Befehle mit Argumenten. `"grep *"` erlaubt `grep pattern file.txt`, während `"grep"` allein es blockieren würde. Befehle wie `git status` funktionieren für das Standardverhalten, erfordern jedoch eine explizite Erlaubnis (wie `"git status *"`), wenn Argumente übergeben werden.
|
||||
:::
|
||||
385
packages/web/src/content/docs/de/plugins.mdx
Normal file
385
packages/web/src/content/docs/de/plugins.mdx
Normal file
@@ -0,0 +1,385 @@
|
||||
---
|
||||
title: Plugins
|
||||
description: Schreiben Sie Ihre eigenen Plugins, um OpenCode zu erweitern.
|
||||
---
|
||||
|
||||
Mit Plugins können Sie OpenCode erweitern, indem Sie verschiedene Ereignisse einbinden und das Verhalten anpassen. Sie können Plugins erstellen, um neue Funktionen hinzuzufügen, externe Dienste zu integrieren oder das Standardverhalten von OpenCode zu ändern.
|
||||
|
||||
Beispiele finden Sie im von der Community erstellten [plugins](/docs/ecosystem#plugins).
|
||||
|
||||
---
|
||||
|
||||
## Verwenden Sie ein Plugin
|
||||
|
||||
Es gibt zwei Möglichkeiten, Plugins zu laden.
|
||||
|
||||
---
|
||||
|
||||
### Aus lokalen Dateien
|
||||
|
||||
Platzieren Sie JavaScript- oder TypeScript-Dateien im Plugin-Verzeichnis.
|
||||
|
||||
- `.opencode/plugins/` – Plugins auf Projektebene
|
||||
- `~/.config/opencode/plugins/` – Globale Plugins
|
||||
|
||||
Dateien in diesen Verzeichnissen werden beim Start automatisch geladen.
|
||||
|
||||
---
|
||||
|
||||
### Von npm
|
||||
|
||||
Geben Sie npm-Pakete in Ihrer Konfigurationsdatei an.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
|
||||
}
|
||||
```
|
||||
|
||||
Es werden sowohl reguläre als auch bereichsbezogene NPM-Pakete unterstützt.
|
||||
|
||||
Durchsuchen Sie die verfügbaren Plugins im [ecosystem](/docs/ecosystem#plugins).
|
||||
|
||||
---
|
||||
|
||||
### Wie Plugins installiert werden
|
||||
|
||||
**NPM-Plugins** werden beim Start automatisch mit Bun installiert. Pakete und ihre Abhängigkeiten werden in `~/.cache/opencode/node_modules/` zwischengespeichert.
|
||||
|
||||
**Lokale Plugins** werden direkt aus dem Plugin-Verzeichnis geladen. Um externe Pakete zu verwenden, müssen Sie ein `package.json` in Ihrem Konfigurationsverzeichnis erstellen (siehe [Dependencies](#dependencies)) oder das Plugin auf npm und [add it to your config](/docs/config#plugins) veröffentlichen.
|
||||
|
||||
---
|
||||
|
||||
### Auftrag laden
|
||||
|
||||
Plugins werden aus allen Quellen geladen und alle Hooks werden nacheinander ausgeführt. Die Ladereihenfolge lautet:
|
||||
|
||||
1. Globale Konfiguration (`~/.config/opencode/opencode.json`)
|
||||
2. Projektkonfiguration (`opencode.json`)
|
||||
3. Globales Plugin-Verzeichnis (`~/.config/opencode/plugins/`)
|
||||
4. Projekt-Plugin-Verzeichnis (`.opencode/plugins/`)
|
||||
|
||||
Doppelte npm-Pakete mit demselben Namen und derselben Version werden einmal geladen. Allerdings werden ein lokales Plugin und ein NPM-Plugin mit ähnlichen Namen beide separat geladen.
|
||||
|
||||
---
|
||||
|
||||
## Erstellen Sie ein Plugin
|
||||
|
||||
A plugin is a **JavaScript/TypeScript module** that exports one or more plugin
|
||||
Funktionen. Jede Funktion empfängt ein Kontextobjekt und gibt ein Hooks-Objekt zurück.
|
||||
|
||||
---
|
||||
|
||||
### Dependencies
|
||||
|
||||
Lokale Plugins und benutzerdefinierte Tools können externe npm-Pakete verwenden. Fügen Sie Ihrem Konfigurationsverzeichnis ein `package.json` mit den benötigten Abhängigkeiten hinzu.
|
||||
|
||||
```json title=".opencode/package.json"
|
||||
{
|
||||
"dependencies": {
|
||||
"shescape": "^2.1.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
OpenCode führt beim Start `bun install` aus, um diese zu installieren. Ihre Plugins und Tools können sie dann importieren.
|
||||
|
||||
```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)
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Grundstruktur
|
||||
|
||||
```js title=".opencode/plugins/example.js"
|
||||
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
|
||||
console.log("Plugin initialized!")
|
||||
|
||||
return {
|
||||
// Hook implementations go here
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Die Plugin-Funktion erhält:
|
||||
|
||||
- `project`: Die aktuellen Projektinformationen.
|
||||
- `directory`: Das aktuelle Arbeitsverzeichnis.
|
||||
- `worktree`: Der Git-Worktree-Pfad.
|
||||
- `client`: Ein Opencode-SDK-Client für die Interaktion mit AI.
|
||||
- `$`: Buns [shell API](https://bun.com/docs/runtime/shell) zum Ausführen von Befehlen.
|
||||
|
||||
---
|
||||
|
||||
### TypeScript support
|
||||
|
||||
Für TypeScript-Plugins können Sie Typen aus dem Plugin-Paket importieren:
|
||||
|
||||
```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
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Events
|
||||
|
||||
Plugins können Ereignisse abonnieren, wie unten im Abschnitt „Beispiele“ gezeigt. Hier finden Sie eine Liste der verschiedenen verfügbaren Veranstaltungen.
|
||||
|
||||
#### Befehlsereignisse
|
||||
|
||||
- `command.executed`
|
||||
|
||||
#### Dateiereignisse
|
||||
|
||||
- `file.edited`
|
||||
- `file.watcher.updated`
|
||||
|
||||
#### Installationsereignisse
|
||||
|
||||
- `installation.updated`
|
||||
|
||||
#### LSP Ereignisse
|
||||
|
||||
- `lsp.client.diagnostics`
|
||||
- `lsp.updated`
|
||||
|
||||
#### Nachrichtenereignisse
|
||||
|
||||
- `message.part.removed`
|
||||
- `message.part.updated`
|
||||
- `message.removed`
|
||||
- `message.updated`
|
||||
|
||||
#### Berechtigungsereignisse
|
||||
|
||||
- `permission.asked`
|
||||
- `permission.replied`
|
||||
|
||||
#### Serverereignisse
|
||||
|
||||
- `server.connected`
|
||||
|
||||
#### Sitzungsereignisse
|
||||
|
||||
- `session.created`
|
||||
- `session.compacted`
|
||||
- `session.deleted`
|
||||
- `session.diff`
|
||||
- `session.error`
|
||||
- `session.idle`
|
||||
- `session.status`
|
||||
- `session.updated`
|
||||
|
||||
#### Todo-Events
|
||||
|
||||
- `todo.updated`
|
||||
|
||||
#### Shell-Events
|
||||
|
||||
- `shell.env`
|
||||
|
||||
#### Tool-Ereignisse
|
||||
|
||||
- `tool.execute.after`
|
||||
- `tool.execute.before`
|
||||
|
||||
#### TUI Ereignisse
|
||||
|
||||
- `tui.prompt.append`
|
||||
- `tui.command.execute`
|
||||
- `tui.toast.show`
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
Hier sind einige Beispiele für Plugins, mit denen Sie Opencode erweitern können.
|
||||
|
||||
---
|
||||
|
||||
### Senden Sie Benachrichtigungen
|
||||
|
||||
Senden Sie Benachrichtigungen, wenn bestimmte Ereignisse eintreten:
|
||||
|
||||
```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"'`
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wir verwenden `osascript`, um AppleScript unter macOS auszuführen. Hier verwenden wir es zum Versenden von Benachrichtigungen.
|
||||
|
||||
:::note
|
||||
Wenn Sie die OpenCode-Desktop-App verwenden, kann diese automatisch Systembenachrichtigungen senden, wenn eine Antwort bereit ist oder wenn in einer Sitzung ein Fehler auftritt.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### .env protection
|
||||
|
||||
Verhindern Sie, dass Opencode `.env`-Dateien liest:
|
||||
|
||||
```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")
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Umgebungsvariablen einfügen
|
||||
|
||||
Fügen Sie Umgebungsvariablen in alle Shell-Ausführungen ein (AI-Tools und Benutzerterminals):
|
||||
|
||||
```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
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Benutzerdefinierte Werkzeuge
|
||||
|
||||
Plugins können Opencode auch benutzerdefinierte Tools hinzufügen:
|
||||
|
||||
```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})`
|
||||
},
|
||||
}),
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Der `tool`-Helfer erstellt ein benutzerdefiniertes Tool, das Opencode aufrufen kann. Es verwendet eine Zod-Schemafunktion und gibt eine Tooldefinition zurück mit:
|
||||
|
||||
- `description`: Was das Tool macht
|
||||
- `args`: Zod-Schema für die Argumente des Tools
|
||||
- `execute`: Funktion, die ausgeführt wird, wenn das Tool aufgerufen wird
|
||||
|
||||
Ihre benutzerdefinierten Tools stehen neben den integrierten Tools für Opencode zur Verfügung.
|
||||
|
||||
---
|
||||
|
||||
### Logging
|
||||
|
||||
Verwenden Sie `client.app.log()` anstelle von `console.log` für die strukturierte Protokollierung:
|
||||
|
||||
```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" },
|
||||
},
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
Ebenen: `debug`, `info`, `warn`, `error`. Weitere Informationen finden Sie unter [SDK documentation](https://opencode.ai/docs/sdk).
|
||||
|
||||
---
|
||||
|
||||
### Verdichtungshaken
|
||||
|
||||
Passen Sie den Kontext an, der beim Komprimieren einer Sitzung einbezogen wird:
|
||||
|
||||
```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
|
||||
`)
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Der Hook `experimental.session.compacting` wird ausgelöst, bevor der Hook LLM eine Fortsetzungszusammenfassung generiert. Verwenden Sie es, um domänenspezifischen Kontext einzufügen, der der standardmäßigen Komprimierungsaufforderung entgehen würde.
|
||||
|
||||
Sie können die Komprimierungsaufforderung auch vollständig ersetzen, indem Sie `output.prompt` festlegen:
|
||||
|
||||
```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.
|
||||
`
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn `output.prompt` festgelegt ist, ersetzt es die standardmäßige Komprimierungsaufforderung vollständig. Das Array `output.context` wird in diesem Fall ignoriert.
|
||||
1889
packages/web/src/content/docs/de/providers.mdx
Normal file
1889
packages/web/src/content/docs/de/providers.mdx
Normal file
File diff suppressed because it is too large
Load Diff
190
packages/web/src/content/docs/de/rules.mdx
Normal file
190
packages/web/src/content/docs/de/rules.mdx
Normal file
@@ -0,0 +1,190 @@
|
||||
---
|
||||
title: Rules
|
||||
description: Lege eigene Anweisungen fuer opencode fest.
|
||||
---
|
||||
|
||||
Du kannst opencode ueber eine `AGENTS.md`-Datei mit eigenen Anweisungen steuern.
|
||||
Das ist aehnlich zu den Regeln in Cursor und wird direkt in den LLM-Kontext geladen.
|
||||
|
||||
---
|
||||
|
||||
## Initialisieren
|
||||
|
||||
Um eine neue `AGENTS.md` zu erstellen, fuehre in opencode den Befehl `/init` aus.
|
||||
|
||||
:::tip
|
||||
Du solltest die `AGENTS.md` deines Projekts in Git committen.
|
||||
:::
|
||||
|
||||
Der Befehl scannt dein Projekt und erzeugt daraus eine passende `AGENTS.md`.
|
||||
So kann opencode sich in deinem Code besser orientieren.
|
||||
|
||||
Wenn bereits eine `AGENTS.md` existiert, versucht opencode sie zu erweitern.
|
||||
|
||||
---
|
||||
|
||||
## Example
|
||||
|
||||
Du kannst die Datei auch manuell anlegen.
|
||||
Hier ist ein Beispiel, was in einer `AGENTS.md` stehen kann.
|
||||
|
||||
```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`
|
||||
```
|
||||
|
||||
Hier hinterlegst du projektspezifische Regeln, die dein Team gemeinsam nutzt.
|
||||
|
||||
---
|
||||
|
||||
## Typen
|
||||
|
||||
opencode kann `AGENTS.md` aus mehreren Orten lesen.
|
||||
Die Orte haben unterschiedliche Zwecke.
|
||||
|
||||
### Project
|
||||
|
||||
Lege eine `AGENTS.md` im Projekt-Root ab, um projektspezifische Regeln zu definieren.
|
||||
Diese gelten nur in diesem Verzeichnis und seinen Unterordnern.
|
||||
|
||||
### Global
|
||||
|
||||
Du kannst auch globale Regeln in `~/.config/opencode/AGENTS.md` speichern.
|
||||
Diese gelten in allen opencode-Sitzungen.
|
||||
|
||||
Da diese Datei nicht in Git landet und nicht mit dem Team geteilt wird, eignet sie sich fuer persoenliche Regeln.
|
||||
|
||||
### Claude Code Compatibility
|
||||
|
||||
Wenn du von Claude Code kommst, unterstuetzt OpenCode dessen Dateikonventionen als Fallback:
|
||||
|
||||
- **Projektregeln**: `CLAUDE.md` im Projekt (wenn keine `AGENTS.md` existiert)
|
||||
- **Globale Regeln**: `~/.claude/CLAUDE.md` (wenn keine `~/.config/opencode/AGENTS.md` existiert)
|
||||
- **Skills**: `~/.claude/skills/` - siehe [Agent Skills](/docs/skills/) fuer Details
|
||||
|
||||
Um die Claude-Code-Kompatibilitaet zu deaktivieren, setze eine dieser Umgebungsvariablen:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Precedence
|
||||
|
||||
Beim Start sucht opencode in dieser Reihenfolge nach Regeldateien:
|
||||
|
||||
1. **Lokale Dateien** beim Hochlaufen ab dem aktuellen Verzeichnis (`AGENTS.md`, `CLAUDE.md`)
|
||||
2. **Globale Datei** unter `~/.config/opencode/AGENTS.md`
|
||||
3. **Claude-Code-Datei** unter `~/.claude/CLAUDE.md` (falls nicht deaktiviert)
|
||||
|
||||
Pro Kategorie gewinnt die zuerst passende Datei.
|
||||
Wenn sowohl `AGENTS.md` als auch `CLAUDE.md` existieren, wird nur `AGENTS.md` verwendet.
|
||||
|
||||
---
|
||||
|
||||
## Eigene Anweisungen
|
||||
|
||||
Du kannst zusaetzliche Anweisungsdateien in deiner `opencode.json` oder in `~/.config/opencode/opencode.json` angeben.
|
||||
So kann dein Team bestehende Regeln wiederverwenden, statt Inhalte in `AGENTS.md` zu duplizieren.
|
||||
|
||||
Beispiel:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
|
||||
}
|
||||
```
|
||||
|
||||
Du kannst auch Remote-URLs nutzen, um Regeln aus dem Web zu laden.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
|
||||
}
|
||||
```
|
||||
|
||||
Remote-Anweisungen werden mit 5 Sekunden Timeout geladen.
|
||||
|
||||
Alle Anweisungsdateien werden mit deinen `AGENTS.md`-Dateien kombiniert.
|
||||
|
||||
---
|
||||
|
||||
## Externe Dateien referenzieren
|
||||
|
||||
opencode parst Datei-Referenzen in `AGENTS.md` nicht automatisch.
|
||||
Du erreichst aehnliches Verhalten auf zwei Wegen.
|
||||
|
||||
### Mit opencode.json
|
||||
|
||||
Empfohlen ist das `instructions`-Feld in der `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 Anweisungen in AGENTS.md
|
||||
|
||||
Du kannst opencode explizit anweisen, externe Dateien zu lesen.
|
||||
Hier ein praxisnahes Beispiel:
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
Damit kannst du:
|
||||
|
||||
- Modulare, wiederverwendbare Regeldateien erstellen
|
||||
- Regeln projektuebergreifend per Symlink oder Git-Submodule teilen
|
||||
- `AGENTS.md` kurz halten und auf Detailregeln verweisen
|
||||
- Sicherstellen, dass Dateien nur bei Bedarf geladen werden
|
||||
|
||||
:::tip
|
||||
Fuer Monorepos oder gemeinsame Standards ist `opencode.json` mit Glob-Mustern (z. B. `packages/*/AGENTS.md`) oft wartbarer als manuelle Anweisungen.
|
||||
:::
|
||||
393
packages/web/src/content/docs/de/sdk.mdx
Normal file
393
packages/web/src/content/docs/de/sdk.mdx
Normal file
@@ -0,0 +1,393 @@
|
||||
---
|
||||
title: SDK
|
||||
description: Typsicherer JS-Client fuer den opencode-Server.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
|
||||
|
||||
Das opencode JS/TS SDK bietet einen typsicheren Client fuer die Server-API.
|
||||
Damit kannst du Integrationen bauen und opencode programmatisch steuern.
|
||||
|
||||
[Mehr zum Server](/docs/server). Beispiele findest du in den [Community-Projekten](/docs/ecosystem#projects).
|
||||
|
||||
---
|
||||
|
||||
## Install
|
||||
|
||||
Installiere das SDK ueber npm:
|
||||
|
||||
```bash
|
||||
npm install @opencode-ai/sdk
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Client erstellen
|
||||
|
||||
Erstelle eine opencode-Instanz:
|
||||
|
||||
```javascript
|
||||
import { createOpencode } from "@opencode-ai/sdk"
|
||||
|
||||
const { client } = await createOpencode()
|
||||
```
|
||||
|
||||
Das startet Server und Client.
|
||||
|
||||
#### Optionen
|
||||
|
||||
| Option | Type | Description | Default |
|
||||
| ---------- | ------------- | ------------------------------ | ----------- |
|
||||
| `hostname` | `string` | Server hostname | `127.0.0.1` |
|
||||
| `port` | `number` | Server port | `4096` |
|
||||
| `signal` | `AbortSignal` | Abort signal for cancellation | `undefined` |
|
||||
| `timeout` | `number` | Timeout in ms for server start | `5000` |
|
||||
| `config` | `Config` | Configuration object | `{}` |
|
||||
|
||||
---
|
||||
|
||||
## Config
|
||||
|
||||
Du kannst ein Konfigurationsobjekt uebergeben, um das Verhalten anzupassen.
|
||||
`opencode.json` wird weiterhin geladen, kann aber inline ueberschrieben oder erweitert werden:
|
||||
|
||||
```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()
|
||||
```
|
||||
|
||||
## Nur Client
|
||||
|
||||
Wenn opencode bereits laeuft, kannst du nur einen Client erstellen und verbinden:
|
||||
|
||||
```javascript
|
||||
import { createOpencodeClient } from "@opencode-ai/sdk"
|
||||
|
||||
const client = createOpencodeClient({
|
||||
baseUrl: "http://localhost:4096",
|
||||
})
|
||||
```
|
||||
|
||||
#### Options
|
||||
|
||||
| Option | Type | Description | Default |
|
||||
| --------------- | ---------- | -------------------------------- | ----------------------- |
|
||||
| `baseUrl` | `string` | URL of the server | `http://localhost:4096` |
|
||||
| `fetch` | `function` | Custom fetch implementation | `globalThis.fetch` |
|
||||
| `parseAs` | `string` | Response parsing method | `auto` |
|
||||
| `responseStyle` | `string` | Return style: `data` or `fields` | `fields` |
|
||||
| `throwOnError` | `boolean` | Throw errors instead of return | `false` |
|
||||
|
||||
---
|
||||
|
||||
## Typen
|
||||
|
||||
Das SDK bringt TypeScript-Definitionen fuer alle API-Typen mit.
|
||||
Du kannst sie direkt importieren:
|
||||
|
||||
```typescript
|
||||
import type { Session, Message, Part } from "@opencode-ai/sdk"
|
||||
```
|
||||
|
||||
Alle Typen werden aus der OpenAPI-Spezifikation des Servers generiert und sind in der <a href={typesUrl}>Typdatei</a> verfuegbar.
|
||||
|
||||
---
|
||||
|
||||
## Errors
|
||||
|
||||
Das SDK kann Fehler werfen, die du abfangen und behandeln kannst:
|
||||
|
||||
```typescript
|
||||
try {
|
||||
await client.session.get({ path: { id: "invalid-id" } })
|
||||
} catch (error) {
|
||||
console.error("Failed to get session:", (error as Error).message)
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## APIs
|
||||
|
||||
Das SDK stellt alle Server-APIs ueber einen typsicheren Client bereit.
|
||||
|
||||
---
|
||||
|
||||
### Global
|
||||
|
||||
| Method | Description | Response |
|
||||
| ----------------- | ------------------------------- | ------------------------------------ |
|
||||
| `global.health()` | Check server health and version | `{ healthy: true, version: string }` |
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
const health = await client.global.health()
|
||||
console.log(health.data.version)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### App
|
||||
|
||||
| Method | Description | Response |
|
||||
| -------------- | ------------------------- | ------------------------------------------- |
|
||||
| `app.log()` | Write a log entry | `boolean` |
|
||||
| `app.agents()` | List all available agents | <a href={typesUrl}><code>Agent[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```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()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Project
|
||||
|
||||
| Method | Description | Response |
|
||||
| ------------------- | ------------------- | --------------------------------------------- |
|
||||
| `project.list()` | List all projects | <a href={typesUrl}><code>Project[]</code></a> |
|
||||
| `project.current()` | Get current project | <a href={typesUrl}><code>Project</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
// List all projects
|
||||
const projects = await client.project.list()
|
||||
|
||||
// Get current project
|
||||
const currentProject = await client.project.current()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Path
|
||||
|
||||
| Method | Description | Response |
|
||||
| ------------ | ---------------- | ---------------------------------------- |
|
||||
| `path.get()` | Get current path | <a href={typesUrl}><code>Path</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
// Get current path information
|
||||
const pathInfo = await client.path.get()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Config
|
||||
|
||||
| Method | Description | Response |
|
||||
| -------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| `config.get()` | Get config info | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `config.providers()` | List providers and default models | `{ providers: `<a href={typesUrl}><code>Provider[]</code></a>`, default: { [key: string]: string } }` |
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
const config = await client.config.get()
|
||||
|
||||
const { providers, default: defaults } = await client.config.providers()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Sessions
|
||||
|
||||
| Method | Description | Notes |
|
||||
| ---------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `session.list()` | List sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `session.get({ path })` | Get session | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.children({ path })` | List child sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `session.create({ body })` | Create session | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.delete({ path })` | Delete session | Returns `boolean` |
|
||||
| `session.update({ path, body })` | Update session properties | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.init({ path, body })` | Analyze app and create `AGENTS.md` | Returns `boolean` |
|
||||
| `session.abort({ path })` | Abort a running session | Returns `boolean` |
|
||||
| `session.share({ path })` | Share session | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unshare({ path })` | Unshare session | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.summarize({ path, body })` | Summarize session | Returns `boolean` |
|
||||
| `session.messages({ path })` | List messages in a session | Returns `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}[]` |
|
||||
| `session.message({ path })` | Get message details | Returns `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
|
||||
| `session.prompt({ path, body })` | Send prompt message | `body.noReply: true` returns UserMessage (context only). Default returns <a href={typesUrl}><code>AssistantMessage</code></a> with AI response |
|
||||
| `session.command({ path, body })` | Send command to session | Returns `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
|
||||
| `session.shell({ path, body })` | Run a shell command | Returns <a href={typesUrl}><code>AssistantMessage</code></a> |
|
||||
| `session.revert({ path, body })` | Revert a message | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unrevert({ path })` | Restore reverted messages | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `postSessionByIdPermissionsByPermissionId({ path, body })` | Respond to a permission request | Returns `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```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." }],
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Files
|
||||
|
||||
| Method | Description | Response |
|
||||
| ------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
| `find.text({ query })` | Search for text in files | Array of match objects with `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `find.files({ query })` | Find files and directories by name | `string[]` (paths) |
|
||||
| `find.symbols({ query })` | Find workspace symbols | <a href={typesUrl}><code>Symbol[]</code></a> |
|
||||
| `file.read({ query })` | Read a file | `{ type: "raw" \| "patch", content: string }` |
|
||||
| `file.status({ query? })` | Get status for tracked files | <a href={typesUrl}><code>File[]</code></a> |
|
||||
|
||||
`find.files` supports a few optional query fields:
|
||||
|
||||
- `type`: `"file"` or `"directory"`
|
||||
- `directory`: override the project root for the search
|
||||
- `limit`: max results (1–200)
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```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
|
||||
|
||||
| Method | Description | Response |
|
||||
| ------------------------------ | ------------------------- | --------- |
|
||||
| `tui.appendPrompt({ body })` | Append text to the prompt | `boolean` |
|
||||
| `tui.openHelp()` | Open the help dialog | `boolean` |
|
||||
| `tui.openSessions()` | Open the session selector | `boolean` |
|
||||
| `tui.openThemes()` | Open the theme selector | `boolean` |
|
||||
| `tui.openModels()` | Open the model selector | `boolean` |
|
||||
| `tui.submitPrompt()` | Submit the current prompt | `boolean` |
|
||||
| `tui.clearPrompt()` | Clear the prompt | `boolean` |
|
||||
| `tui.executeCommand({ body })` | Execute a command | `boolean` |
|
||||
| `tui.showToast({ body })` | Show toast notification | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```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
|
||||
|
||||
| Method | Description | Response |
|
||||
| ------------------- | ------------------------------ | --------- |
|
||||
| `auth.set({ ... })` | Set authentication credentials | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
await client.auth.set({
|
||||
path: { id: "anthropic" },
|
||||
body: { type: "api", key: "your-api-key" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Events
|
||||
|
||||
| Method | Description | Response |
|
||||
| ------------------- | ------------------------- | ------------------------- |
|
||||
| `event.subscribe()` | Server-sent events stream | Server-sent events stream |
|
||||
|
||||
---
|
||||
|
||||
#### Examples
|
||||
|
||||
```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)
|
||||
}
|
||||
```
|
||||
291
packages/web/src/content/docs/de/server.mdx
Normal file
291
packages/web/src/content/docs/de/server.mdx
Normal file
@@ -0,0 +1,291 @@
|
||||
---
|
||||
title: Server
|
||||
description: Nutze den opencode-Server ueber HTTP.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
|
||||
|
||||
Der Befehl `opencode serve` startet einen headless HTTP-Server.
|
||||
Er stellt einen OpenAPI-Endpunkt bereit, den ein opencode-Client nutzen kann.
|
||||
|
||||
---
|
||||
|
||||
### Nutzung
|
||||
|
||||
```bash
|
||||
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
|
||||
```
|
||||
|
||||
#### Optionen
|
||||
|
||||
| Flag | Description | Default |
|
||||
| --------------- | ----------------------------------- | ---------------- |
|
||||
| `--port` | Port to listen on | `4096` |
|
||||
| `--hostname` | Hostname to listen on | `127.0.0.1` |
|
||||
| `--mdns` | Enable mDNS discovery | `false` |
|
||||
| `--mdns-domain` | Custom domain name for mDNS service | `opencode.local` |
|
||||
| `--cors` | Additional browser origins to allow | `[]` |
|
||||
|
||||
`--cors` kann mehrfach angegeben werden:
|
||||
|
||||
```bash
|
||||
opencode serve --cors http://localhost:5173 --cors https://app.example.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Authentifizierung
|
||||
|
||||
Setze `OPENCODE_SERVER_PASSWORD`, um den Server mit HTTP Basic Auth zu schuetzen.
|
||||
Der Benutzername ist standardmaessig `opencode`, kann aber mit `OPENCODE_SERVER_USERNAME` ueberschrieben werden. Das gilt fuer `opencode serve` und `opencode web`.
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=your-password opencode serve
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Funktionsweise
|
||||
|
||||
Wenn du `opencode` startest, werden TUI und Server gestartet.
|
||||
Die TUI ist dabei der Client, der mit dem Server spricht; dessen OpenAPI-3.1-Endpunkt dient auch zur Generierung des [SDK](/docs/sdk).
|
||||
|
||||
:::tip
|
||||
Nutze den opencode-Server, um opencode programmatisch anzusteuern.
|
||||
:::
|
||||
|
||||
Diese Architektur erlaubt mehrere Clients und programmatische Nutzung.
|
||||
|
||||
Mit `opencode serve` startest du einen eigenstaendigen Server.
|
||||
Laeuft bereits eine TUI, startet `opencode serve` trotzdem eine neue Serverinstanz.
|
||||
|
||||
---
|
||||
|
||||
#### Mit bestehendem Server verbinden
|
||||
|
||||
Beim TUI-Start werden Port und Hostname zufaellig gewaehlt.
|
||||
Alternativ gibst du `--hostname` und `--port` als [Flags](/docs/cli) vor und verbindest dich dann gezielt damit.
|
||||
|
||||
Der Endpunkt [`/tui`](#tui) kann die TUI ueber den Server steuern, etwa zum Vorbelegen oder Abschicken von Prompts.
|
||||
Dieses Muster nutzen auch die OpenCode-[IDE](/docs/ide)-Plugins.
|
||||
|
||||
---
|
||||
|
||||
## Spec
|
||||
|
||||
Der Server veroeffentlicht eine OpenAPI-3.1-Spezifikation unter:
|
||||
|
||||
```
|
||||
http://<hostname>:<port>/doc
|
||||
```
|
||||
|
||||
Zum Beispiel `http://localhost:4096/doc`.
|
||||
Nutze die Spec zum Generieren von Clients, zum Pruefen von Request/Response-Typen oder in einem Swagger-Explorer.
|
||||
|
||||
---
|
||||
|
||||
## APIs
|
||||
|
||||
Der opencode-Server stellt folgende APIs bereit.
|
||||
|
||||
---
|
||||
|
||||
### Global
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ---------------- | ------------------------------ | ------------------------------------ |
|
||||
| `GET` | `/global/health` | Get server health and version | `{ healthy: true, version: string }` |
|
||||
| `GET` | `/global/event` | Get global events (SSE stream) | Event stream |
|
||||
|
||||
---
|
||||
|
||||
### Project
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------------ | ----------------------- | --------------------------------------------- |
|
||||
| `GET` | `/project` | List all projects | <a href={typesUrl}><code>Project[]</code></a> |
|
||||
| `GET` | `/project/current` | Get the current project | <a href={typesUrl}><code>Project</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Path & VCS
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------- | ------------------------------------ | ------------------------------------------- |
|
||||
| `GET` | `/path` | Get the current path | <a href={typesUrl}><code>Path</code></a> |
|
||||
| `GET` | `/vcs` | Get VCS info for the current project | <a href={typesUrl}><code>VcsInfo</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Instance
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------------- | ---------------------------- | --------- |
|
||||
| `POST` | `/instance/dispose` | Dispose the current instance | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Config
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------- | ------------------- | --------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/config` | Get config info | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `PATCH` | `/config` | Update config | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `GET` | `/config/providers` | List providers and default models | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
|
||||
|
||||
---
|
||||
|
||||
### Provider
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | -------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- |
|
||||
| `GET` | `/provider` | List all providers | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
|
||||
| `GET` | `/provider/auth` | Get provider authentication methods | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
|
||||
| `POST` | `/provider/{id}/oauth/authorize` | Authorize a provider using OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
|
||||
| `POST` | `/provider/{id}/oauth/callback` | Handle OAuth callback for a provider | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Sessions
|
||||
|
||||
| Method | Path | Description | Notes |
|
||||
| -------- | ---------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- |
|
||||
| `GET` | `/session` | List all sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `POST` | `/session` | Create a new session | body: `{ parentID?, title? }`, returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/status` | Get session status for all sessions | Returns `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
|
||||
| `GET` | `/session/:id` | Get session details | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id` | Delete a session and all its data | Returns `boolean` |
|
||||
| `PATCH` | `/session/:id` | Update session properties | body: `{ title? }`, returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/children` | Get a session's child sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `GET` | `/session/:id/todo` | Get the todo list for a session | Returns <a href={typesUrl}><code>Todo[]</code></a> |
|
||||
| `POST` | `/session/:id/init` | Analyze app and create `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returns `boolean` |
|
||||
| `POST` | `/session/:id/fork` | Fork an existing session at a message | body: `{ messageID? }`, returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `POST` | `/session/:id/abort` | Abort a running session | Returns `boolean` |
|
||||
| `POST` | `/session/:id/share` | Share a session | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id/share` | Unshare a session | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/diff` | Get the diff for this session | query: `messageID?`, returns <a href={typesUrl}><code>FileDiff[]</code></a> |
|
||||
| `POST` | `/session/:id/summarize` | Summarize the session | body: `{ providerID, modelID }`, returns `boolean` |
|
||||
| `POST` | `/session/:id/revert` | Revert a message | body: `{ messageID, partID? }`, returns `boolean` |
|
||||
| `POST` | `/session/:id/unrevert` | Restore all reverted messages | Returns `boolean` |
|
||||
| `POST` | `/session/:id/permissions/:permissionID` | Respond to a permission request | body: `{ response, remember? }`, returns `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Messages
|
||||
|
||||
| Method | Path | Description | Notes |
|
||||
| ------ | --------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/session/:id/message` | List messages in a session | query: `limit?`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
|
||||
| `POST` | `/session/:id/message` | Send a message and wait for response | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `GET` | `/session/:id/message/:messageID` | Get message details | Returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `POST` | `/session/:id/prompt_async` | Send a message asynchronously (no wait) | body: same as `/session/:id/message`, returns `204 No Content` |
|
||||
| `POST` | `/session/:id/command` | Execute a slash command | body: `{ messageID?, agent?, model?, command, arguments }`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `POST` | `/session/:id/shell` | Run a shell command | body: `{ agent, model?, command }`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
|
||||
---
|
||||
|
||||
### Commands
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ---------- | ----------------- | --------------------------------------------- |
|
||||
| `GET` | `/command` | List all commands | <a href={typesUrl}><code>Command[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Files
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/find?pattern=<pat>` | Search for text in files | Array of match objects with `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `GET` | `/find/file?query=<q>` | Find files and directories by name | `string[]` (paths) |
|
||||
| `GET` | `/find/symbol?query=<q>` | Find workspace symbols | <a href={typesUrl}><code>Symbol[]</code></a> |
|
||||
| `GET` | `/file?path=<path>` | List files and directories | <a href={typesUrl}><code>FileNode[]</code></a> |
|
||||
| `GET` | `/file/content?path=<p>` | Read a file | <a href={typesUrl}><code>FileContent</code></a> |
|
||||
| `GET` | `/file/status` | Get status for tracked files | <a href={typesUrl}><code>File[]</code></a> |
|
||||
|
||||
#### `/find/file` query parameters
|
||||
|
||||
- `query` (required) — search string (fuzzy match)
|
||||
- `type` (optional) — limit results to `"file"` or `"directory"`
|
||||
- `directory` (optional) — override the project root for the search
|
||||
- `limit` (optional) — max results (1–200)
|
||||
- `dirs` (optional) — legacy flag (`"false"` returns only files)
|
||||
|
||||
---
|
||||
|
||||
### Tools (Experimental)
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------------------------------------- | ---------------------------------------- | -------------------------------------------- |
|
||||
| `GET` | `/experimental/tool/ids` | List all tool IDs | <a href={typesUrl}><code>ToolIDs</code></a> |
|
||||
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | List tools with JSON schemas for a model | <a href={typesUrl}><code>ToolList</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### LSP, Formatters & MCP
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------ | -------------------------- | -------------------------------------------------------- |
|
||||
| `GET` | `/lsp` | Get LSP server status | <a href={typesUrl}><code>LSPStatus[]</code></a> |
|
||||
| `GET` | `/formatter` | Get formatter status | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
|
||||
| `GET` | `/mcp` | Get MCP server status | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
|
||||
| `POST` | `/mcp` | Add MCP server dynamically | body: `{ name, config }`, returns MCP status object |
|
||||
|
||||
---
|
||||
|
||||
### Agents
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | -------- | ------------------------- | ------------------------------------------- |
|
||||
| `GET` | `/agent` | List all available agents | <a href={typesUrl}><code>Agent[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Logging
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------ | ------------------------------------------------------------ | --------- |
|
||||
| `POST` | `/log` | Write log entry. Body: `{ service, level, message, extra? }` | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ----------------------- | ------------------------------------------- | ---------------------- |
|
||||
| `POST` | `/tui/append-prompt` | Append text to the prompt | `boolean` |
|
||||
| `POST` | `/tui/open-help` | Open the help dialog | `boolean` |
|
||||
| `POST` | `/tui/open-sessions` | Open the session selector | `boolean` |
|
||||
| `POST` | `/tui/open-themes` | Open the theme selector | `boolean` |
|
||||
| `POST` | `/tui/open-models` | Open the model selector | `boolean` |
|
||||
| `POST` | `/tui/submit-prompt` | Submit the current prompt | `boolean` |
|
||||
| `POST` | `/tui/clear-prompt` | Clear the prompt | `boolean` |
|
||||
| `POST` | `/tui/execute-command` | Execute a command (`{ command }`) | `boolean` |
|
||||
| `POST` | `/tui/show-toast` | Show toast (`{ title?, message, variant }`) | `boolean` |
|
||||
| `GET` | `/tui/control/next` | Wait for the next control request | Control request object |
|
||||
| `POST` | `/tui/control/response` | Respond to a control request (`{ body }`) | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Auth
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ----------- | --------------------------------------------------------------- | --------- |
|
||||
| `PUT` | `/auth/:id` | Set authentication credentials. Body must match provider schema | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Events
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | -------- | ----------------------------------------------------------------------------- | ------------------------- |
|
||||
| `GET` | `/event` | Server-sent events stream. First event is `server.connected`, then bus events | Server-sent events stream |
|
||||
|
||||
---
|
||||
|
||||
### Docs
|
||||
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------ | ------------------------- | --------------------------- |
|
||||
| `GET` | `/doc` | OpenAPI 3.1 specification | HTML page with OpenAPI spec |
|
||||
130
packages/web/src/content/docs/de/share.mdx
Normal file
130
packages/web/src/content/docs/de/share.mdx
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: Share
|
||||
description: Teile OpenCode-Unterhaltungen per oeffentlichem Link.
|
||||
---
|
||||
|
||||
Mit der Share-Funktion erstellst du oeffentliche Links zu OpenCode-Unterhaltungen.
|
||||
So kannst du einfacher mit dem Team zusammenarbeiten oder Hilfe einholen.
|
||||
|
||||
:::note
|
||||
Geteilte Unterhaltungen sind fuer alle mit dem Link oeffentlich zugaenglich.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## How it works
|
||||
|
||||
Wenn du eine Unterhaltung teilst, macht OpenCode Folgendes:
|
||||
|
||||
1. Erstellt eine eindeutige oeffentliche URL fuer deine Sitzung
|
||||
2. Synchronisiert den Verlauf auf unsere Server
|
||||
3. Stellt die Unterhaltung unter `opncd.ai/s/<share-id>` bereit
|
||||
|
||||
---
|
||||
|
||||
## Sharing
|
||||
|
||||
OpenCode hat drei Modi, die das Teilen steuern:
|
||||
|
||||
---
|
||||
|
||||
### Manual (default)
|
||||
|
||||
Standardmaessig nutzt OpenCode den manuellen Modus.
|
||||
Sitzungen werden nicht automatisch geteilt, du kannst sie aber mit `/share` veroeffentlichen:
|
||||
|
||||
```
|
||||
/share
|
||||
```
|
||||
|
||||
Dabei wird eine eindeutige URL erzeugt und in die Zwischenablage kopiert.
|
||||
|
||||
Um den manuellen Modus explizit in der [Konfiguration](/docs/config) zu setzen:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "manual"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Auto-share
|
||||
|
||||
Du kannst automatisches Teilen fuer neue Unterhaltungen aktivieren, indem du in der [Konfiguration](/docs/config) `share` auf `"auto"` setzt:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "auto"
|
||||
}
|
||||
```
|
||||
|
||||
Mit aktiviertem Auto-Share wird jede neue Unterhaltung automatisch geteilt und ein Link erstellt.
|
||||
|
||||
---
|
||||
|
||||
### Disabled
|
||||
|
||||
Du kannst Teilen komplett deaktivieren, indem du in der [Konfiguration](/docs/config) `share` auf `"disabled"` setzt:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "disabled"
|
||||
}
|
||||
```
|
||||
|
||||
Wenn das fuer ein Projekt teamweit gelten soll, lege es in der Projekt-`opencode.json` fest und committe die Datei.
|
||||
|
||||
---
|
||||
|
||||
## Teilen aufheben
|
||||
|
||||
Um das Teilen zu beenden und den oeffentlichen Zugriff zu entfernen:
|
||||
|
||||
```
|
||||
/unshare
|
||||
```
|
||||
|
||||
Dadurch wird der Share-Link entfernt und die zugehoerigen Daten werden geloescht.
|
||||
|
||||
---
|
||||
|
||||
## Privacy
|
||||
|
||||
Beim Teilen solltest du ein paar Punkte beachten.
|
||||
|
||||
---
|
||||
|
||||
### Data retention
|
||||
|
||||
Geteilte Unterhaltungen bleiben veroeffentlicht, bis du sie explizit aufhebst.
|
||||
Das umfasst:
|
||||
|
||||
- Vollstaendigen Unterhaltungsverlauf
|
||||
- Alle Nachrichten und Antworten
|
||||
- Sitzungsmetadaten
|
||||
|
||||
---
|
||||
|
||||
### Recommendations
|
||||
|
||||
- Teile nur Unterhaltungen ohne sensible Informationen.
|
||||
- Pruefe Inhalte vor dem Teilen.
|
||||
- Hebe das Teilen wieder auf, wenn die Zusammenarbeit beendet ist.
|
||||
- Teile keine proprietaeren Codes oder vertraulichen Daten.
|
||||
- Deaktiviere Teilen komplett bei sensiblen Projekten.
|
||||
|
||||
---
|
||||
|
||||
## For enterprises
|
||||
|
||||
In Enterprise-Umgebungen kann die Share-Funktion:
|
||||
|
||||
- **Deaktiviert** werden, um Compliance-Vorgaben einzuhalten
|
||||
- Auf **SSO-authentifizierte** Nutzer eingeschraenkt werden
|
||||
- **Self-hosted** auf eigener Infrastruktur betrieben werden
|
||||
|
||||
[Mehr dazu](/docs/enterprise), wie du opencode in deiner Organisation einsetzt.
|
||||
222
packages/web/src/content/docs/de/skills.mdx
Normal file
222
packages/web/src/content/docs/de/skills.mdx
Normal file
@@ -0,0 +1,222 @@
|
||||
---
|
||||
title: "Agent Skills"
|
||||
description: "Definiere wiederverwendbares Verhalten ueber SKILL.md"
|
||||
---
|
||||
|
||||
Agent Skills erlauben OpenCode, wiederverwendbare Anweisungen aus deinem Repo oder Home-Verzeichnis zu finden.
|
||||
Sie werden bei Bedarf ueber das native `skill`-Tool geladen, wenn ein Agent sie wirklich braucht.
|
||||
|
||||
---
|
||||
|
||||
## Place files
|
||||
|
||||
Erstelle pro Skill-Namen einen Ordner und lege dort eine `SKILL.md` ab.
|
||||
OpenCode sucht in folgenden Pfaden:
|
||||
|
||||
- Project config: `.opencode/skills/<name>/SKILL.md`
|
||||
- Global config: `~/.config/opencode/skills/<name>/SKILL.md`
|
||||
- Project Claude-compatible: `.claude/skills/<name>/SKILL.md`
|
||||
- Global Claude-compatible: `~/.claude/skills/<name>/SKILL.md`
|
||||
- Project agent-compatible: `.agents/skills/<name>/SKILL.md`
|
||||
- Global agent-compatible: `~/.agents/skills/<name>/SKILL.md`
|
||||
|
||||
---
|
||||
|
||||
## Understand discovery
|
||||
|
||||
Bei projektlokalen Pfaden laeuft OpenCode vom aktuellen Verzeichnis nach oben bis zum Git-Worktree.
|
||||
Dabei werden passende `skills/*/SKILL.md` in `.opencode/` sowie passende Dateien unter `.claude/skills/*/SKILL.md` und `.agents/skills/*/SKILL.md` geladen.
|
||||
|
||||
Globale Definitionen kommen zusaetzlich aus `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` und `~/.agents/skills/*/SKILL.md`.
|
||||
|
||||
---
|
||||
|
||||
## Write frontmatter
|
||||
|
||||
Jede `SKILL.md` muss mit YAML-Frontmatter beginnen.
|
||||
Nur diese Felder werden ausgewertet:
|
||||
|
||||
- `name` (required)
|
||||
- `description` (required)
|
||||
- `license` (optional)
|
||||
- `compatibility` (optional)
|
||||
- `metadata` (optional, string-to-string map)
|
||||
|
||||
Unbekannte Frontmatter-Felder werden ignoriert.
|
||||
|
||||
---
|
||||
|
||||
## Validate names
|
||||
|
||||
`name` muss:
|
||||
|
||||
- 1-64 Zeichen lang sein
|
||||
- nur Kleinbuchstaben und Ziffern mit einzelnen Bindestrichen enthalten
|
||||
- nicht mit `-` beginnen oder enden
|
||||
- kein `--` enthalten
|
||||
- zum Verzeichnisnamen passen, in dem `SKILL.md` liegt
|
||||
|
||||
Entsprechender Regex:
|
||||
|
||||
```text
|
||||
^[a-z0-9]+(-[a-z0-9]+)*$
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Follow length rules
|
||||
|
||||
`description` muss 1-1024 Zeichen lang sein.
|
||||
Formuliere sie so konkret, dass Agenten den Skill eindeutig auswaehlen koennen.
|
||||
|
||||
---
|
||||
|
||||
## Use an example
|
||||
|
||||
Erstelle `.opencode/skills/git-release/SKILL.md` zum Beispiel so:
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Recognize tool description
|
||||
|
||||
OpenCode listet verfuegbare Skills in der Beschreibung des `skill`-Tools.
|
||||
Jeder Eintrag enthaelt Namen und Beschreibung:
|
||||
|
||||
```xml
|
||||
<available_skills>
|
||||
<skill>
|
||||
<name>git-release</name>
|
||||
<description>Create consistent releases and changelogs</description>
|
||||
</skill>
|
||||
</available_skills>
|
||||
```
|
||||
|
||||
Der Agent laedt einen Skill per Tool-Aufruf:
|
||||
|
||||
```
|
||||
skill({ name: "git-release" })
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Configure permissions
|
||||
|
||||
Steuere in `opencode.json` per Muster, auf welche Skills Agenten zugreifen duerfen:
|
||||
|
||||
```json
|
||||
{
|
||||
"permission": {
|
||||
"skill": {
|
||||
"*": "allow",
|
||||
"pr-review": "allow",
|
||||
"internal-*": "deny",
|
||||
"experimental-*": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Berechtigung | Verhalten |
|
||||
| ------------ | ---------------------------------------- |
|
||||
| `allow` | Skill wird sofort geladen |
|
||||
| `deny` | Skill ist fuer Agenten versteckt |
|
||||
| `ask` | Vor dem Laden wird nach Freigabe gefragt |
|
||||
|
||||
Muster unterstuetzen Wildcards: `internal-*` passt z. B. auf `internal-docs` oder `internal-tools`.
|
||||
|
||||
---
|
||||
|
||||
## Override per agent
|
||||
|
||||
Du kannst einzelnen Agenten andere Berechtigungen als die globalen Defaults geben.
|
||||
|
||||
**Fuer benutzerdefinierte Agenten** (im Frontmatter):
|
||||
|
||||
```yaml
|
||||
---
|
||||
permission:
|
||||
skill:
|
||||
"documents-*": "allow"
|
||||
---
|
||||
```
|
||||
|
||||
**Fuer eingebaute Agenten** (in `opencode.json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"permission": {
|
||||
"skill": {
|
||||
"internal-*": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Disable the skill tool
|
||||
|
||||
Deaktiviere Skills komplett fuer Agenten, die sie nicht nutzen sollen:
|
||||
|
||||
**Fuer benutzerdefinierte Agenten**:
|
||||
|
||||
```yaml
|
||||
---
|
||||
tools:
|
||||
skill: false
|
||||
---
|
||||
```
|
||||
|
||||
**Fuer eingebaute Agenten**:
|
||||
|
||||
```json
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"tools": {
|
||||
"skill": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Wenn deaktiviert, wird der Abschnitt `<available_skills>` komplett weggelassen.
|
||||
|
||||
---
|
||||
|
||||
## Troubleshoot loading
|
||||
|
||||
Wenn ein Skill nicht auftaucht:
|
||||
|
||||
1. Pruefe, ob `SKILL.md` exakt in Grossbuchstaben geschrieben ist
|
||||
2. Pruefe, ob Frontmatter `name` und `description` enthaelt
|
||||
3. Stelle sicher, dass Skill-Namen ueber alle Orte hinweg eindeutig sind
|
||||
4. Pruefe Berechtigungen - Skills mit `deny` sind fuer Agenten unsichtbar
|
||||
372
packages/web/src/content/docs/de/themes.mdx
Normal file
372
packages/web/src/content/docs/de/themes.mdx
Normal file
@@ -0,0 +1,372 @@
|
||||
---
|
||||
title: Themes
|
||||
description: Waehle ein eingebautes Theme oder erstelle eins.
|
||||
---
|
||||
|
||||
Mit OpenCode kannst du ein eingebautes Theme waehlen, ein an dein Terminal angepasstes Theme nutzen oder ein eigenes Theme definieren.
|
||||
|
||||
Standardmaessig verwendet OpenCode das `opencode`-Theme.
|
||||
|
||||
---
|
||||
|
||||
## Terminal-Anforderungen
|
||||
|
||||
Damit Themes mit voller Farbpalette korrekt angezeigt werden, muss dein Terminal **truecolor** (24-Bit-Farben) unterstuetzen.
|
||||
Die meisten modernen Terminals koennen das bereits, eventuell musst du es aber aktivieren:
|
||||
|
||||
- **Support pruefen**: Fuehre `echo $COLORTERM` aus - erwartet ist `truecolor` oder `24bit`
|
||||
- **Truecolor aktivieren**: Setze in deinem Shell-Profil `COLORTERM=truecolor`
|
||||
- **Terminal-Kompatibilitaet**: Stelle sicher, dass dein Terminal-Emulator 24-Bit-Farben unterstuetzt
|
||||
|
||||
Ohne truecolor werden Farben weniger exakt dargestellt oder auf eine 256-Farben-Naeherung reduziert.
|
||||
|
||||
---
|
||||
|
||||
## Eingebaute Themes
|
||||
|
||||
OpenCode liefert mehrere eingebaute Themes mit.
|
||||
|
||||
| Name | Description |
|
||||
| ---------------------- | ---------------------------------------------------------------------------- |
|
||||
| `system` | Adapts to your terminal’s background color |
|
||||
| `tokyonight` | Based on the [Tokyonight](https://github.com/folke/tokyonight.nvim) theme |
|
||||
| `everforest` | Based on the [Everforest](https://github.com/sainnhe/everforest) theme |
|
||||
| `ayu` | Based on the [Ayu](https://github.com/ayu-theme) dark theme |
|
||||
| `catppuccin` | Based on the [Catppuccin](https://github.com/catppuccin) theme |
|
||||
| `catppuccin-macchiato` | Based on the [Catppuccin](https://github.com/catppuccin) theme |
|
||||
| `gruvbox` | Based on the [Gruvbox](https://github.com/morhetz/gruvbox) theme |
|
||||
| `kanagawa` | Based on the [Kanagawa](https://github.com/rebelot/kanagawa.nvim) theme |
|
||||
| `nord` | Based on the [Nord](https://github.com/nordtheme/nord) theme |
|
||||
| `matrix` | Hacker-style green on black theme |
|
||||
| `one-dark` | Based on the [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark theme |
|
||||
|
||||
Und es kommen laufend weitere dazu.
|
||||
|
||||
---
|
||||
|
||||
## System-Theme
|
||||
|
||||
Das `system`-Theme passt sich automatisch an das Farbschema deines Terminals an.
|
||||
Im Gegensatz zu Themes mit festen Farben gilt beim _system_-Theme:
|
||||
|
||||
- **Generiert Graustufen**: Basierend auf deiner Terminal-Hintergrundfarbe fuer guten Kontrast
|
||||
- **Nutzt ANSI-Farben**: Verwendet Standardfarben (0-15), die dein Terminalschema respektieren
|
||||
- **Behaelt Terminal-Defaults**: Verwendet `none` fuer Text und Hintergruende
|
||||
|
||||
Das System-Theme ist ideal fuer Nutzer, die:
|
||||
|
||||
- OpenCode optisch ans Terminal anpassen wollen
|
||||
- eigene Terminal-Farbschemata nutzen
|
||||
- ein konsistentes Erscheinungsbild in Terminal-Apps bevorzugen
|
||||
|
||||
---
|
||||
|
||||
## Theme verwenden
|
||||
|
||||
Du kannst ein Theme ueber `/theme` auswaehlen oder direkt in der [Konfiguration](/docs/config) setzen.
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": "tokyonight"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Eigene Themes
|
||||
|
||||
OpenCode unterstuetzt ein flexibles JSON-basiertes Theme-System.
|
||||
Damit lassen sich Themes einfach erstellen und anpassen.
|
||||
|
||||
---
|
||||
|
||||
### Hierarchy
|
||||
|
||||
Themes are loaded from multiple directories in the following order where later directories override earlier ones:
|
||||
|
||||
1. **Built-in themes** - These are embedded in the binary
|
||||
2. **User config directory** - Defined in `~/.config/opencode/themes/*.json` or `$XDG_CONFIG_HOME/opencode/themes/*.json`
|
||||
3. **Project root directory** - Defined in the `<project-root>/.opencode/themes/*.json`
|
||||
4. **Current working directory** - Defined in `./.opencode/themes/*.json`
|
||||
|
||||
If multiple directories contain a theme with the same name, the theme from the directory with higher priority will be used.
|
||||
|
||||
---
|
||||
|
||||
### Creating a theme
|
||||
|
||||
To create a custom theme, create a JSON file in one of the theme directories.
|
||||
|
||||
For user-wide themes:
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p ~/.config/opencode/themes
|
||||
vim ~/.config/opencode/themes/my-theme.json
|
||||
```
|
||||
|
||||
And for project-specific themes.
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p .opencode/themes
|
||||
vim .opencode/themes/my-theme.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### JSON format
|
||||
|
||||
Themes use a flexible JSON format with support for:
|
||||
|
||||
- **Hex colors**: `"#ffffff"`
|
||||
- **ANSI colors**: `3` (0-255)
|
||||
- **Color references**: `"primary"` or custom definitions
|
||||
- **Dark/light variants**: `{"dark": "#000", "light": "#fff"}`
|
||||
- **No color**: `"none"` - Uses the terminal's default color or transparent
|
||||
|
||||
---
|
||||
|
||||
### Color definitions
|
||||
|
||||
The `defs` section is optional and it allows you to define reusable colors that can be referenced in the theme.
|
||||
|
||||
---
|
||||
|
||||
### Terminal defaults
|
||||
|
||||
The special value `"none"` can be used for any color to inherit the terminal's default color. This is particularly useful for creating themes that blend seamlessly with your terminal's color scheme:
|
||||
|
||||
- `"text": "none"` - Uses terminal's default foreground color
|
||||
- `"background": "none"` - Uses terminal's default background color
|
||||
|
||||
---
|
||||
|
||||
### Example
|
||||
|
||||
Here's an example of a custom theme:
|
||||
|
||||
```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"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
390
packages/web/src/content/docs/de/tools.mdx
Normal file
390
packages/web/src/content/docs/de/tools.mdx
Normal file
@@ -0,0 +1,390 @@
|
||||
---
|
||||
title: Tools
|
||||
description: Verwalte, welche Tools ein LLM nutzen darf.
|
||||
---
|
||||
|
||||
Tools erlauben dem LLM Aktionen in deiner Codebasis.
|
||||
OpenCode bringt eingebaute Tools mit und laesst sich ueber [Custom Tools](/docs/custom-tools) oder [MCP-Server](/docs/mcp-servers) erweitern.
|
||||
|
||||
Standardmaessig sind alle Tools **aktiviert** und brauchen keine Freigabe.
|
||||
Das Verhalten steuerst du ueber [Berechtigungen](/docs/permissions).
|
||||
|
||||
---
|
||||
|
||||
## Configure
|
||||
|
||||
Nutze das Feld `permission`, um Tool-Verhalten zu steuern.
|
||||
Pro Tool kannst du erlauben, verbieten oder eine Rueckfrage verlangen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny",
|
||||
"bash": "ask",
|
||||
"webfetch": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Mit Wildcards kannst du mehrere Tools auf einmal steuern.
|
||||
Zum Beispiel, um fuer alle Tools eines MCP-Servers eine Freigabe zu verlangen:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"mymcp_*": "ask"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Mehr dazu](/docs/permissions), wie du Berechtigungen konfigurierst.
|
||||
|
||||
---
|
||||
|
||||
## Built-in
|
||||
|
||||
Hier sind alle in OpenCode verfuegbaren eingebauten Tools.
|
||||
|
||||
---
|
||||
|
||||
### bash
|
||||
|
||||
Fuehrt Shell-Befehle in deiner Projektumgebung aus.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"bash": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Damit kann das LLM Terminal-Befehle wie `npm install`, `git status` oder andere Shell-Kommandos ausfuehren.
|
||||
|
||||
---
|
||||
|
||||
### edit
|
||||
|
||||
Bearbeitet bestehende Dateien ueber exakte String-Ersetzungen.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Dieses Tool fuehrt praezise Aenderungen per exakter Textsuche aus.
|
||||
Es ist der zentrale Weg, wie das LLM Code aendert.
|
||||
|
||||
---
|
||||
|
||||
### write
|
||||
|
||||
Erstellt neue Dateien oder ueberschreibt bestehende Dateien.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Damit erlaubst du dem LLM, neue Dateien anzulegen.
|
||||
Bestehende Dateien werden dabei ueberschrieben.
|
||||
|
||||
:::note
|
||||
Das Tool `write` wird ueber die Berechtigung `edit` gesteuert.
|
||||
`edit` gilt fuer alle Datei-Aenderungen (`edit`, `write`, `patch`, `multiedit`).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### read
|
||||
|
||||
Read file contents from your codebase.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"read": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This tool reads files and returns their contents. It supports reading specific line ranges for large files.
|
||||
|
||||
---
|
||||
|
||||
### grep
|
||||
|
||||
Search file contents using regular expressions.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"grep": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Fast content search across your codebase. Supports full regex syntax and file pattern filtering.
|
||||
|
||||
---
|
||||
|
||||
### glob
|
||||
|
||||
Find files by pattern matching.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"glob": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Search for files using glob patterns like `**/*.js` or `src/**/*.ts`. Returns matching file paths sorted by modification time.
|
||||
|
||||
---
|
||||
|
||||
### list
|
||||
|
||||
List files and directories in a given path.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"list": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This tool lists directory contents. It accepts glob patterns to filter results.
|
||||
|
||||
---
|
||||
|
||||
### lsp (experimental)
|
||||
|
||||
Interact with your configured LSP servers to get code intelligence features like definitions, references, hover info, and call hierarchy.
|
||||
|
||||
:::note
|
||||
This tool is only available when `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (or `OPENCODE_EXPERIMENTAL=true`).
|
||||
:::
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"lsp": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Supported operations include `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls`, and `outgoingCalls`.
|
||||
|
||||
To configure which LSP servers are available for your project, see [LSP Servers](/docs/lsp).
|
||||
|
||||
---
|
||||
|
||||
### patch
|
||||
|
||||
Apply patches to files.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This tool applies patch files to your codebase. Useful for applying diffs and patches from various sources.
|
||||
|
||||
:::note
|
||||
The `patch` tool is controlled by the `edit` permission, which covers all file modifications (`edit`, `write`, `patch`, `multiedit`).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### skill
|
||||
|
||||
Load a [skill](/docs/skills) (a `SKILL.md` file) and return its content in the conversation.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"skill": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### todowrite
|
||||
|
||||
Manage todo lists during coding sessions.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"todowrite": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Creates and updates task lists to track progress during complex operations. The LLM uses this to organize multi-step tasks.
|
||||
|
||||
:::note
|
||||
This tool is disabled for subagents by default, but you can enable it manually. [Learn more](/docs/agents/#permissions)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### todoread
|
||||
|
||||
Read existing todo lists.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"todoread": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Reads the current todo list state. Used by the LLM to track what tasks are pending or completed.
|
||||
|
||||
:::note
|
||||
This tool is disabled for subagents by default, but you can enable it manually. [Learn more](/docs/agents/#permissions)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### webfetch
|
||||
|
||||
Fetch web content.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"webfetch": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Allows the LLM to fetch and read web pages. Useful for looking up documentation or researching online resources.
|
||||
|
||||
---
|
||||
|
||||
### websearch
|
||||
|
||||
Search the web for information.
|
||||
|
||||
:::note
|
||||
This tool is only available when using the OpenCode provider or when the `OPENCODE_ENABLE_EXA` environment variable is set to any truthy value (e.g., `true` or `1`).
|
||||
|
||||
To enable when launching OpenCode:
|
||||
|
||||
```bash
|
||||
OPENCODE_ENABLE_EXA=1 opencode
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"websearch": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Performs web searches using Exa AI to find relevant information online. Useful for researching topics, finding current events, or gathering information beyond the training data cutoff.
|
||||
|
||||
No API key is required — the tool connects directly to Exa AI's hosted MCP service without authentication.
|
||||
|
||||
:::tip
|
||||
Use `websearch` when you need to find information (discovery), and `webfetch` when you need to retrieve content from a specific URL (retrieval).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### question
|
||||
|
||||
Ask the user questions during execution.
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"question": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This tool allows the LLM to ask the user questions during a task. It's useful for:
|
||||
|
||||
- Gathering user preferences or requirements
|
||||
- Clarifying ambiguous instructions
|
||||
- Getting decisions on implementation choices
|
||||
- Offering choices about what direction to take
|
||||
|
||||
Each question includes a header, the question text, and a list of options. Users can select from the provided options or type a custom answer. When there are multiple questions, users can navigate between them before submitting all answers.
|
||||
|
||||
---
|
||||
|
||||
## Custom tools
|
||||
|
||||
Mit Custom Tools definierst du eigene Funktionen, die das LLM aufrufen kann.
|
||||
Sie werden in der Konfigurationsdatei definiert und koennen beliebigen Code ausfuehren.
|
||||
|
||||
[Mehr dazu](/docs/custom-tools), wie du Custom Tools erstellst.
|
||||
|
||||
---
|
||||
|
||||
## MCP servers
|
||||
|
||||
MCP-Server (Model Context Protocol) binden externe Tools und Dienste ein.
|
||||
Dazu gehoeren Datenbanken, API-Integrationen und Drittanbieter-Services.
|
||||
|
||||
[Mehr dazu](/docs/mcp-servers), wie du MCP-Server konfigurierst.
|
||||
|
||||
---
|
||||
|
||||
## Internals
|
||||
|
||||
Intern verwenden Tools wie `grep`, `glob` und `list` [ripgrep](https://github.com/BurntSushi/ripgrep).
|
||||
Standardmaessig beachtet ripgrep `.gitignore`, daher werden dort aufgefuehrte Dateien und Ordner nicht durchsucht.
|
||||
|
||||
---
|
||||
|
||||
### Ignore patterns
|
||||
|
||||
Wenn du normalerweise ignorierte Dateien einschliessen willst, lege im Projekt-Root eine `.ignore`-Datei an.
|
||||
Dort kannst du Pfade explizit erlauben.
|
||||
|
||||
```text title=".ignore"
|
||||
!node_modules/
|
||||
!dist/
|
||||
!build/
|
||||
```
|
||||
|
||||
Dieses Beispiel erlaubt ripgrep, in `node_modules/`, `dist/` und `build/` zu suchen, auch wenn sie in `.gitignore` stehen.
|
||||
301
packages/web/src/content/docs/de/troubleshooting.mdx
Normal file
301
packages/web/src/content/docs/de/troubleshooting.mdx
Normal file
@@ -0,0 +1,301 @@
|
||||
---
|
||||
title: Troubleshooting
|
||||
description: Haeufige Probleme und schnelle Loesungen.
|
||||
---
|
||||
|
||||
Wenn OpenCode Probleme macht, starte mit Logs und lokal gespeicherten Daten auf der Festplatte.
|
||||
|
||||
---
|
||||
|
||||
## Logs
|
||||
|
||||
Logdateien werden hier gespeichert:
|
||||
|
||||
- **macOS/Linux**: `~/.local/share/opencode/log/`
|
||||
- **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.local\share\opencode\log`
|
||||
|
||||
Dateinamen enthalten Zeitstempel (z. B. `2025-01-09T123456.log`) und es bleiben die letzten 10 Logs erhalten.
|
||||
|
||||
Mit `--log-level` bekommst du detailliertere Diagnoseinfos, z. B. `opencode --log-level DEBUG`.
|
||||
|
||||
---
|
||||
|
||||
## Storage
|
||||
|
||||
opencode speichert Sitzungs- und App-Daten auf der Festplatte unter:
|
||||
|
||||
- **macOS/Linux**: `~/.local/share/opencode/`
|
||||
- **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
Dieses Verzeichnis enthaelt:
|
||||
|
||||
- `auth.json` - Authentifizierungsdaten wie API-Keys und OAuth-Tokens
|
||||
- `log/` - Anwendungslogs
|
||||
- `project/` - Projektspezifische Daten wie Sitzungen und Nachrichten
|
||||
- In Git-Repositories unter `./<project-slug>/storage/`
|
||||
- Ohne Git unter `./global/storage/`
|
||||
|
||||
---
|
||||
|
||||
## Desktop app
|
||||
|
||||
OpenCode Desktop startet im Hintergrund einen lokalen OpenCode-Server (`opencode-cli`-Sidecar).
|
||||
Viele Probleme kommen von fehlerhaften Plugins, kaputtem Cache oder falschen Server-Einstellungen.
|
||||
|
||||
### Quick checks
|
||||
|
||||
- App komplett beenden und neu starten
|
||||
- Bei Fehlerbildschirm **Restart** klicken und Details kopieren
|
||||
- Nur macOS: `OpenCode`-Menue -> **Reload Webview** (hilft bei leerer/eingefrorener UI)
|
||||
|
||||
---
|
||||
|
||||
### Disable plugins
|
||||
|
||||
If the desktop app is crashing on launch, hanging, or behaving strangely, start by disabling plugins.
|
||||
|
||||
#### Check the global config
|
||||
|
||||
Open your global config file and look for a `plugin` key.
|
||||
|
||||
- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (or `~/.config/opencode/opencode.json`)
|
||||
- **macOS/Linux** (older installs): `~/.local/share/opencode/opencode.jsonc`
|
||||
- **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.config\opencode\opencode.jsonc`
|
||||
|
||||
If you have plugins configured, temporarily disable them by removing the key or setting it to an empty array:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": [],
|
||||
}
|
||||
```
|
||||
|
||||
#### Check plugin directories
|
||||
|
||||
OpenCode can also load local plugins from disk. Temporarily move these out of the way (or rename the folder) and restart the desktop app:
|
||||
|
||||
- **Global plugins**
|
||||
- **macOS/Linux**: `~/.config/opencode/plugins/`
|
||||
- **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.config\opencode\plugins`
|
||||
- **Project plugins** (only if you use per-project config)
|
||||
- `<your-project>/.opencode/plugins/`
|
||||
|
||||
If the app starts working again, re-enable plugins one at a time to find which one is causing the issue.
|
||||
|
||||
---
|
||||
|
||||
### Clear the cache
|
||||
|
||||
If disabling plugins doesn't help (or a plugin install is stuck), clear the cache so OpenCode can rebuild it.
|
||||
|
||||
1. Quit OpenCode Desktop completely.
|
||||
2. Delete the cache directory:
|
||||
|
||||
- **macOS**: Finder -> `Cmd+Shift+G` -> paste `~/.cache/opencode`
|
||||
- **Linux**: delete `~/.cache/opencode` (or run `rm -rf ~/.cache/opencode`)
|
||||
- **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
3. Restart OpenCode Desktop.
|
||||
|
||||
---
|
||||
|
||||
### Fix server connection issues
|
||||
|
||||
OpenCode Desktop can either start its own local server (default) or connect to a server URL you configured.
|
||||
|
||||
If you see a **"Connection Failed"** dialog (or the app never gets past the splash screen), check for a custom server URL.
|
||||
|
||||
#### Clear the desktop default server URL
|
||||
|
||||
From the Home screen, click the server name (with the status dot) to open the Server picker. In the **Default server** section, click **Clear**.
|
||||
|
||||
#### Remove `server.port` / `server.hostname` from your config
|
||||
|
||||
If your `opencode.json(c)` contains a `server` section, temporarily remove it and restart the desktop app.
|
||||
|
||||
#### Check environment variables
|
||||
|
||||
If you have `OPENCODE_PORT` set in your environment, the desktop app will try to use that port for the local server.
|
||||
|
||||
- Unset `OPENCODE_PORT` (or pick a free port) and restart.
|
||||
|
||||
---
|
||||
|
||||
### Linux: Wayland / X11 issues
|
||||
|
||||
On Linux, some Wayland setups can cause blank windows or compositor errors.
|
||||
|
||||
- If you're on Wayland and the app is blank/crashing, try launching with `OC_ALLOW_WAYLAND=1`.
|
||||
- If that makes things worse, remove it and try launching under an X11 session instead.
|
||||
|
||||
---
|
||||
|
||||
### Windows: WebView2 runtime
|
||||
|
||||
On Windows, OpenCode Desktop requires the Microsoft Edge **WebView2 Runtime**. If the app opens to a blank window or won't start, install/update WebView2 and try again.
|
||||
|
||||
---
|
||||
|
||||
### Windows: General performance issues
|
||||
|
||||
If you're experiencing slow performance, file access issues, or terminal problems on Windows, try using [WSL (Windows Subsystem for Linux)](/docs/windows-wsl). WSL provides a Linux environment that works more seamlessly with OpenCode's features.
|
||||
|
||||
---
|
||||
|
||||
### Notifications not showing
|
||||
|
||||
OpenCode Desktop only shows system notifications when:
|
||||
|
||||
- notifications are enabled for OpenCode in your OS settings, and
|
||||
- the app window is not focused.
|
||||
|
||||
---
|
||||
|
||||
### Reset desktop app storage (last resort)
|
||||
|
||||
If the app won't start and you can't clear settings from inside the UI, reset the desktop app's saved state.
|
||||
|
||||
1. Quit OpenCode Desktop.
|
||||
2. Find and delete these files (they live in the OpenCode Desktop app data directory):
|
||||
|
||||
- `opencode.settings.dat` (desktop default server URL)
|
||||
- `opencode.global.dat` and `opencode.workspace.*.dat` (UI state like recent servers/projects)
|
||||
|
||||
To find the directory quickly:
|
||||
|
||||
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (then search for the filenames above)
|
||||
- **Linux**: search under `~/.local/share` for the filenames above
|
||||
- **Windows**: Press `WIN+R` -> `%APPDATA%` (then search for the filenames above)
|
||||
|
||||
---
|
||||
|
||||
## Hilfe bekommen
|
||||
|
||||
Wenn du Probleme mit OpenCode hast:
|
||||
|
||||
1. **Probleme auf GitHub melden**
|
||||
|
||||
Bugs und Feature-Wuensche meldest du am besten im GitHub-Repository:
|
||||
|
||||
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
|
||||
|
||||
Suche vor dem Erstellen nach bestehenden Issues, damit Duplikate vermieden werden.
|
||||
|
||||
2. **Unserem Discord beitreten**
|
||||
|
||||
Fuer schnelle Hilfe und Austausch in der Community:
|
||||
|
||||
[**opencode.ai/discord**](https://opencode.ai/discord)
|
||||
|
||||
---
|
||||
|
||||
## Haeufige Probleme
|
||||
|
||||
Hier sind typische Fehlerbilder und wie du sie loest.
|
||||
|
||||
---
|
||||
|
||||
### OpenCode won't start
|
||||
|
||||
1. Check the logs for error messages
|
||||
2. Try running with `--print-logs` to see output in the terminal
|
||||
3. Ensure you have the latest version with `opencode upgrade`
|
||||
|
||||
---
|
||||
|
||||
### Authentication issues
|
||||
|
||||
1. Try re-authenticating with the `/connect` command in the TUI
|
||||
2. Check that your API keys are valid
|
||||
3. Ensure your network allows connections to the provider's API
|
||||
|
||||
---
|
||||
|
||||
### Model not available
|
||||
|
||||
1. Check that you've authenticated with the provider
|
||||
2. Verify the model name in your config is correct
|
||||
3. Some models may require specific access or subscriptions
|
||||
|
||||
If you encounter `ProviderModelNotFoundError` you are most likely incorrectly
|
||||
referencing a model somewhere.
|
||||
Models should be referenced like so: `<providerId>/<modelId>`
|
||||
|
||||
Examples:
|
||||
|
||||
- `openai/gpt-4.1`
|
||||
- `openrouter/google/gemini-2.5-flash`
|
||||
- `opencode/kimi-k2`
|
||||
|
||||
To figure out what models you have access to, run `opencode models`
|
||||
|
||||
---
|
||||
|
||||
### ProviderInitError
|
||||
|
||||
If you encounter a ProviderInitError, you likely have an invalid or corrupted configuration.
|
||||
|
||||
To resolve this:
|
||||
|
||||
1. First, verify your provider is set up correctly by following the [providers guide](/docs/providers)
|
||||
2. If the issue persists, try clearing your stored configuration:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.local/share/opencode
|
||||
```
|
||||
|
||||
On Windows, press `WIN+R` and delete: `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
3. Re-authenticate with your provider using the `/connect` command in the TUI.
|
||||
|
||||
---
|
||||
|
||||
### AI_APICallError and provider package issues
|
||||
|
||||
If you encounter API call errors, this may be due to outdated provider packages. opencode dynamically installs provider packages (OpenAI, Anthropic, Google, etc.) as needed and caches them locally.
|
||||
|
||||
To resolve provider package issues:
|
||||
|
||||
1. Clear the provider package cache:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.cache/opencode
|
||||
```
|
||||
|
||||
On Windows, press `WIN+R` and delete: `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
2. Restart opencode to reinstall the latest provider packages
|
||||
|
||||
This will force opencode to download the most recent versions of provider packages, which often resolves compatibility issues with model parameters and API changes.
|
||||
|
||||
---
|
||||
|
||||
### Copy/paste not working on Linux
|
||||
|
||||
Linux users need to have one of the following clipboard utilities installed for copy/paste functionality to work:
|
||||
|
||||
**For X11 systems:**
|
||||
|
||||
```bash
|
||||
apt install -y xclip
|
||||
# or
|
||||
apt install -y xsel
|
||||
```
|
||||
|
||||
**For Wayland systems:**
|
||||
|
||||
```bash
|
||||
apt install -y wl-clipboard
|
||||
```
|
||||
|
||||
**For headless environments:**
|
||||
|
||||
```bash
|
||||
apt install -y xvfb
|
||||
# and run:
|
||||
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
|
||||
export DISPLAY=:99.0
|
||||
```
|
||||
|
||||
opencode will detect if you're using Wayland and prefer `wl-clipboard`, otherwise it will try to find clipboard tools in order of: `xclip` and `xsel`.
|
||||
393
packages/web/src/content/docs/de/tui.mdx
Normal file
393
packages/web/src/content/docs/de/tui.mdx
Normal file
@@ -0,0 +1,393 @@
|
||||
---
|
||||
title: TUI
|
||||
description: Arbeite mit OpenCode in der Terminal-Oberflaeche.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
OpenCode bietet eine interaktive Terminaloberflaeche (TUI), um mit einem LLM an deinen Projekten zu arbeiten.
|
||||
|
||||
Ohne weitere Argumente startet OpenCode die TUI im aktuellen Verzeichnis.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Oder du startest sie fuer ein bestimmtes Arbeitsverzeichnis.
|
||||
|
||||
```bash
|
||||
opencode /path/to/project
|
||||
```
|
||||
|
||||
In der TUI kannst du direkt mit einer Nachricht prompten.
|
||||
|
||||
```text
|
||||
Give me a quick summary of the codebase.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Datei-Referenzen
|
||||
|
||||
Mit `@` kannst du Dateien in Nachrichten referenzieren.
|
||||
Dabei wird im aktuellen Verzeichnis eine unscharfe Dateisuche genutzt.
|
||||
|
||||
:::tip
|
||||
Du kannst `@` in Nachrichten fuer Datei-Referenzen verwenden.
|
||||
:::
|
||||
|
||||
```text "@packages/functions/src/api/index.ts"
|
||||
How is auth handled in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Der Dateiinhalt wird automatisch zur Unterhaltung hinzugefuegt.
|
||||
|
||||
---
|
||||
|
||||
## Bash commands
|
||||
|
||||
Beginne eine Nachricht mit `!`, um einen Shell-Befehl auszufuehren.
|
||||
|
||||
```bash frame="none"
|
||||
!ls -la
|
||||
```
|
||||
|
||||
Die Ausgabe landet als Tool-Ergebnis in der Unterhaltung.
|
||||
|
||||
---
|
||||
|
||||
## Commands
|
||||
|
||||
In der OpenCode-TUI kannst du `/` plus Befehlsnamen eingeben, um Aktionen schnell auszufuehren.
|
||||
Zum Beispiel:
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
Viele Befehle haben auch Tastenkombinationen mit `ctrl+x` als Leader-Key.
|
||||
[Mehr dazu](/docs/keybinds).
|
||||
|
||||
Hier sind alle verfuegbaren Slash-Commands:
|
||||
|
||||
---
|
||||
|
||||
### connect
|
||||
|
||||
Add a provider to OpenCode. Allows you to select from available providers and add their API keys.
|
||||
|
||||
```bash frame="none"
|
||||
/connect
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### compact
|
||||
|
||||
Compact the current session. _Alias_: `/summarize`
|
||||
|
||||
```bash frame="none"
|
||||
/compact
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x c`
|
||||
|
||||
---
|
||||
|
||||
### details
|
||||
|
||||
Toggle tool execution details.
|
||||
|
||||
```bash frame="none"
|
||||
/details
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x d`
|
||||
|
||||
---
|
||||
|
||||
### editor
|
||||
|
||||
Open external editor for composing messages. Uses the editor set in your `EDITOR` environment variable. [Learn more](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/editor
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x e`
|
||||
|
||||
---
|
||||
|
||||
### exit
|
||||
|
||||
Exit OpenCode. _Aliases_: `/quit`, `/q`
|
||||
|
||||
```bash frame="none"
|
||||
/exit
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x q`
|
||||
|
||||
---
|
||||
|
||||
### export
|
||||
|
||||
Export current conversation to Markdown and open in your default editor. Uses the editor set in your `EDITOR` environment variable. [Learn more](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/export
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x x`
|
||||
|
||||
---
|
||||
|
||||
### help
|
||||
|
||||
Show the help dialog.
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x h`
|
||||
|
||||
---
|
||||
|
||||
### init
|
||||
|
||||
Create or update `AGENTS.md` file. [Learn more](/docs/rules).
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x i`
|
||||
|
||||
---
|
||||
|
||||
### models
|
||||
|
||||
List available models.
|
||||
|
||||
```bash frame="none"
|
||||
/models
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x m`
|
||||
|
||||
---
|
||||
|
||||
### new
|
||||
|
||||
Start a new session. _Alias_: `/clear`
|
||||
|
||||
```bash frame="none"
|
||||
/new
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x n`
|
||||
|
||||
---
|
||||
|
||||
### redo
|
||||
|
||||
Redo a previously undone message. Only available after using `/undo`.
|
||||
|
||||
:::tip
|
||||
Any file changes will also be restored.
|
||||
:::
|
||||
|
||||
Internally, this uses Git to manage the file changes. So your project **needs to
|
||||
be a Git repository**.
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x r`
|
||||
|
||||
---
|
||||
|
||||
### sessions
|
||||
|
||||
List and switch between sessions. _Aliases_: `/resume`, `/continue`
|
||||
|
||||
```bash frame="none"
|
||||
/sessions
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x l`
|
||||
|
||||
---
|
||||
|
||||
### share
|
||||
|
||||
Share current session. [Learn more](/docs/share).
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x s`
|
||||
|
||||
---
|
||||
|
||||
### themes
|
||||
|
||||
List available themes.
|
||||
|
||||
```bash frame="none"
|
||||
/theme
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x t`
|
||||
|
||||
---
|
||||
|
||||
### thinking
|
||||
|
||||
Toggle the visibility of thinking/reasoning blocks in the conversation. When enabled, you can see the model's reasoning process for models that support extended thinking.
|
||||
|
||||
:::note
|
||||
This command only controls whether thinking blocks are **displayed** - it does not enable or disable the model's reasoning capabilities. To toggle actual reasoning capabilities, use `ctrl+t` to cycle through model variants.
|
||||
:::
|
||||
|
||||
```bash frame="none"
|
||||
/thinking
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### undo
|
||||
|
||||
Undo last message in the conversation. Removes the most recent user message, all subsequent responses, and any file changes.
|
||||
|
||||
:::tip
|
||||
Any file changes made will also be reverted.
|
||||
:::
|
||||
|
||||
Internally, this uses Git to manage the file changes. So your project **needs to
|
||||
be a Git repository**.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
**Keybind:** `ctrl+x u`
|
||||
|
||||
---
|
||||
|
||||
### unshare
|
||||
|
||||
Unshare current session. [Learn more](/docs/share#un-sharing).
|
||||
|
||||
```bash frame="none"
|
||||
/unshare
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Editor setup
|
||||
|
||||
Both the `/editor` and `/export` commands use the editor specified in your `EDITOR` environment variable.
|
||||
|
||||
<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"
|
||||
```
|
||||
|
||||
To make it permanent, add this to your shell profile;
|
||||
`~/.bashrc`, `~/.zshrc`, etc.
|
||||
|
||||
</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
|
||||
```
|
||||
|
||||
To make it permanent, use **System Properties** > **Environment
|
||||
Variables**.
|
||||
|
||||
</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"
|
||||
```
|
||||
|
||||
To make it permanent, add this to your PowerShell profile.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
Popular editor options include:
|
||||
|
||||
- `code` - Visual Studio Code
|
||||
- `cursor` - Cursor
|
||||
- `windsurf` - Windsurf
|
||||
- `nvim` - Neovim editor
|
||||
- `vim` - Vim editor
|
||||
- `nano` - Nano editor
|
||||
- `notepad` - Windows Notepad
|
||||
- `subl` - Sublime Text
|
||||
|
||||
:::note
|
||||
Some editors like VS Code need to be started with the `--wait` flag.
|
||||
:::
|
||||
|
||||
Some editors need command-line arguments to run in blocking mode. The `--wait` flag makes the editor process block until closed.
|
||||
|
||||
---
|
||||
|
||||
## Configure
|
||||
|
||||
You can customize TUI behavior through your OpenCode config file.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
- `scroll_acceleration` - Enable macOS-style scroll acceleration for smooth, natural scrolling. When enabled, scroll speed increases with rapid scrolling gestures and stays precise for slower movements. **This setting takes precedence over `scroll_speed` and overrides it when enabled.**
|
||||
- `scroll_speed` - Controls how fast the TUI scrolls when using scroll commands (minimum: `1`). Defaults to `3`. **Note: This is ignored if `scroll_acceleration.enabled` is set to `true`.**
|
||||
|
||||
---
|
||||
|
||||
## Customization
|
||||
|
||||
You can customize various aspects of the TUI view using the command palette (`ctrl+x h` or `/help`). These settings persist across restarts.
|
||||
|
||||
---
|
||||
|
||||
#### Username display
|
||||
|
||||
Toggle whether your username appears in chat messages. Access this through:
|
||||
|
||||
- Command palette: Search for "username" or "hide username"
|
||||
- The setting persists automatically and will be remembered across TUI sessions
|
||||
142
packages/web/src/content/docs/de/web.mdx
Normal file
142
packages/web/src/content/docs/de/web.mdx
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
title: Web
|
||||
description: Verwenden Sie OpenCode in Ihrem Browser.
|
||||
---
|
||||
|
||||
OpenCode kann als Webanwendung in Ihrem Browser ausgeführt werden und bietet das gleiche leistungsstarke KI-Codierungserlebnis, ohne dass ein Terminal erforderlich ist.
|
||||
|
||||

|
||||
|
||||
## Erste Schritte
|
||||
|
||||
Starten Sie die Weboberfläche, indem Sie Folgendes ausführen:
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
```
|
||||
|
||||
Dadurch wird ein lokaler Server auf `127.0.0.1` mit einem zufällig verfügbaren Port gestartet und OpenCode automatisch in Ihrem Standardbrowser geöffnet.
|
||||
|
||||
:::caution
|
||||
Wenn `OPENCODE_SERVER_PASSWORD` nicht gesetzt ist, ist der Server ungesichert. Dies ist für den lokalen Gebrauch in Ordnung, sollte aber für den Netzwerkzugriff eingestellt werden.
|
||||
:::
|
||||
|
||||
:::tip[Windows Users]
|
||||
Um die beste Erfahrung zu erzielen, führen Sie `opencode web` über [WSL](/docs/windows-wsl) und nicht über PowerShell aus. Dies gewährleistet den ordnungsgemäßen Zugriff auf das Dateisystem und die Terminalintegration.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Sie können den Webserver mithilfe von Befehlszeilen-Flags oder in Ihrer [Konfigurationsdatei](/docs/config) konfigurieren.
|
||||
|
||||
### Port
|
||||
|
||||
Standardmäßig wählt OpenCode einen verfügbaren Port aus. Sie können einen Port angeben:
|
||||
|
||||
```bash
|
||||
opencode web --port 4096
|
||||
```
|
||||
|
||||
### Hostname
|
||||
|
||||
Standardmäßig bindet der Server an `127.0.0.1` (nur localhost). So machen Sie OpenCode in Ihrem Netzwerk zugänglich:
|
||||
|
||||
```bash
|
||||
opencode web --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
Bei Verwendung von `0.0.0.0` zeigt OpenCode sowohl lokale als auch Netzwerkadressen an:
|
||||
|
||||
```
|
||||
Local access: http://localhost:4096
|
||||
Network access: http://192.168.1.100:4096
|
||||
```
|
||||
|
||||
### mDNS-Erkennung
|
||||
|
||||
Aktivieren Sie mDNS, um Ihren Server im lokalen Netzwerk erkennbar zu machen:
|
||||
|
||||
```bash
|
||||
opencode web --mdns
|
||||
```
|
||||
|
||||
Dadurch wird der Hostname automatisch auf `0.0.0.0` gesetzt und der Server als `opencode.local` angekündigt.
|
||||
|
||||
Sie können den mDNS-Domänennamen anpassen, um mehrere Instanzen im selben Netzwerk auszuführen:
|
||||
|
||||
```bash
|
||||
opencode web --mdns --mdns-domain myproject.local
|
||||
```
|
||||
|
||||
### CORS
|
||||
|
||||
So erlauben Sie zusätzliche Domänen für CORS (nützlich für benutzerdefinierte Frontends):
|
||||
|
||||
```bash
|
||||
opencode web --cors https://example.com
|
||||
```
|
||||
|
||||
### Authentifizierung
|
||||
|
||||
Um den Zugriff zu schützen, legen Sie mithilfe der Umgebungsvariablen `OPENCODE_SERVER_PASSWORD` ein Passwort fest:
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=secret opencode web
|
||||
```
|
||||
|
||||
Der Benutzername ist standardmäßig `opencode`, kann aber mit `OPENCODE_SERVER_USERNAME` geändert werden.
|
||||
|
||||
---
|
||||
|
||||
## Verwenden der Weboberfläche
|
||||
|
||||
Nach dem Start bietet die Weboberfläche Zugriff auf Ihre OpenCode-Sitzungen.
|
||||
|
||||
### Sitzungen
|
||||
|
||||
Zeigen Sie Ihre Sitzungen auf der Startseite an und verwalten Sie sie. Sie können aktive Sitzungen sehen und neue starten.
|
||||
|
||||

|
||||
|
||||
### Serverstatus
|
||||
|
||||
Klicken Sie auf „Server anzeigen“, um verbundene Server und deren Status anzuzeigen.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Anschließen eines Terminals
|
||||
|
||||
Sie können eine Terminal-TUI an einen laufenden Webserver anschließen:
|
||||
|
||||
```bash
|
||||
# Start the web server
|
||||
opencode web --port 4096
|
||||
|
||||
# In another terminal, attach the TUI
|
||||
opencode attach http://localhost:4096
|
||||
```
|
||||
|
||||
Dadurch können Sie sowohl die Weboberfläche als auch das Terminal gleichzeitig verwenden und dieselben Sitzungen und denselben Status teilen.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurationsdatei
|
||||
|
||||
Sie können Servereinstellungen auch in Ihrer `opencode.json`-Konfigurationsdatei konfigurieren:
|
||||
|
||||
```json
|
||||
{
|
||||
"server": {
|
||||
"port": 4096,
|
||||
"hostname": "0.0.0.0",
|
||||
"mdns": true,
|
||||
"cors": ["https://example.com"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Befehlszeilenflags haben Vorrang vor Konfigurationsdateieinstellungen.
|
||||
115
packages/web/src/content/docs/de/windows-wsl.mdx
Normal file
115
packages/web/src/content/docs/de/windows-wsl.mdx
Normal file
@@ -0,0 +1,115 @@
|
||||
---
|
||||
title: Windows (WSL)
|
||||
description: Nutze OpenCode unter Windows am besten mit WSL.
|
||||
---
|
||||
|
||||
import { Steps } from "@astrojs/starlight/components"
|
||||
|
||||
OpenCode laeuft zwar direkt unter Windows, die beste Erfahrung bekommst du aber mit [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install).
|
||||
WSL bietet eine Linux-Umgebung, die mit den OpenCode-Features nahtlos funktioniert.
|
||||
|
||||
:::tip[Why WSL?]
|
||||
WSL bietet bessere Dateisystem-Performance, vollstaendige Terminal-Unterstuetzung und hohe Kompatibilitaet mit den Entwicklungswerkzeugen, die OpenCode nutzt.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Install WSL**
|
||||
|
||||
Falls noch nicht geschehen, installiere [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) mit der offiziellen Microsoft-Anleitung.
|
||||
|
||||
2. **Install OpenCode in WSL**
|
||||
|
||||
Wenn WSL eingerichtet ist, oeffne dein WSL-Terminal und installiere OpenCode mit einer der [Installationsmethoden](/docs/).
|
||||
|
||||
```bash
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
```
|
||||
|
||||
3. **Use OpenCode from WSL**
|
||||
|
||||
Wechsle in dein Projektverzeichnis (Windows-Dateien erreichst du ueber `/mnt/c/`, `/mnt/d/` usw.) und starte OpenCode.
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/YourName/project
|
||||
opencode
|
||||
```
|
||||
|
||||
</Steps>
|
||||
|
||||
---
|
||||
|
||||
## Desktop App + WSL Server
|
||||
|
||||
Wenn du die OpenCode-Desktop-App nutzen willst, den Server aber in WSL betreiben moechtest:
|
||||
|
||||
1. **Starte den Server in WSL** mit `--hostname 0.0.0.0`, damit externe Verbindungen moeglich sind:
|
||||
|
||||
```bash
|
||||
opencode serve --hostname 0.0.0.0 --port 4096
|
||||
```
|
||||
|
||||
2. **Verbinde die Desktop-App** mit `http://localhost:4096`
|
||||
|
||||
:::note
|
||||
Wenn `localhost` in deiner Umgebung nicht funktioniert, nutze stattdessen die WSL-IP-Adresse (in WSL: `hostname -I`) und verbinde dich mit `http://<wsl-ip>:4096`.
|
||||
:::
|
||||
|
||||
:::caution
|
||||
Wenn du `--hostname 0.0.0.0` verwendest, setze `OPENCODE_SERVER_PASSWORD`, um den Server zu schuetzen.
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Web Client + WSL
|
||||
|
||||
Fuer die beste Web-Erfahrung unter Windows:
|
||||
|
||||
1. **Fuehre `opencode web` im WSL-Terminal aus**, nicht in PowerShell:
|
||||
|
||||
```bash
|
||||
opencode web --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
2. **Rufe die URL im Windows-Browser auf** unter `http://localhost:<port>` (OpenCode zeigt die URL an)
|
||||
|
||||
Wenn du `opencode web` aus WSL startest, bleiben Dateizugriff und Terminal-Integration sauber.
|
||||
Gleichzeitig ist die Weboberflaeche weiterhin im Windows-Browser erreichbar.
|
||||
|
||||
---
|
||||
|
||||
## Accessing Windows Files
|
||||
|
||||
WSL kann ueber das Verzeichnis `/mnt/` auf alle Windows-Dateien zugreifen:
|
||||
|
||||
- Laufwerk `C:` -> `/mnt/c/`
|
||||
- Laufwerk `D:` -> `/mnt/d/`
|
||||
- usw.
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/YourName/Documents/project
|
||||
opencode
|
||||
```
|
||||
|
||||
:::tip
|
||||
Fuer die beste Performance kannst du dein Repo direkt in das WSL-Dateisystem klonen/kopieren (z. B. nach `~/code/`) und OpenCode dort starten.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Tips
|
||||
|
||||
- Lass OpenCode in WSL laufen, auch wenn das Projekt auf einem Windows-Laufwerk liegt
|
||||
- Nutze die [WSL-Extension](https://code.visualstudio.com/docs/remote/wsl) von VS Code fuer einen integrierten Workflow
|
||||
- OpenCode-Konfiguration und Sitzungen liegen in WSL unter `~/.local/share/opencode/`
|
||||
247
packages/web/src/content/docs/de/zen.mdx
Normal file
247
packages/web/src/content/docs/de/zen.mdx
Normal file
@@ -0,0 +1,247 @@
|
||||
---
|
||||
title: Zen
|
||||
description: Kuratierte Modellliste direkt von OpenCode.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
OpenCode Zen ist eine vom OpenCode-Team getestete und verifizierte Modellliste.
|
||||
|
||||
:::note
|
||||
OpenCode Zen befindet sich aktuell in der Beta.
|
||||
:::
|
||||
|
||||
Zen funktioniert wie jeder andere Provider in OpenCode.
|
||||
Du meldest dich bei OpenCode Zen an, holst dir deinen API-Key und nutzt ihn optional.
|
||||
|
||||
---
|
||||
|
||||
## Background
|
||||
|
||||
Es gibt sehr viele Modelle, aber nur ein Teil davon eignet sich wirklich gut als Coding-Agent.
|
||||
Ausserdem konfigurieren Provider Modelle sehr unterschiedlich, was die Qualitaet stark beeinflusst.
|
||||
|
||||
:::tip
|
||||
Wir haben eine Auswahl aus Modellen und Providern getestet, die gut mit OpenCode funktionieren.
|
||||
:::
|
||||
|
||||
Wenn du Modelle ueber Gateways wie OpenRouter nutzt, ist oft unklar, ob du die beste Ausfuehrung eines Modells bekommst.
|
||||
|
||||
Um das zu verbessern, haben wir:
|
||||
|
||||
1. Eine Auswahl an Modellen getestet und mit den Teams ueber optimale Laufzeit-Setups gesprochen
|
||||
2. Mit Providern zusammengearbeitet, damit diese Modelle korrekt ausgeliefert werden
|
||||
3. Modell/Provider-Kombinationen gebenchmarkt und eine empfehlenswerte Liste erstellt
|
||||
|
||||
OpenCode Zen ist ein AI-Gateway, das dir Zugriff auf genau diese Modelle gibt.
|
||||
|
||||
---
|
||||
|
||||
## How it works
|
||||
|
||||
OpenCode Zen funktioniert wie jeder andere Provider in OpenCode.
|
||||
|
||||
1. Melde dich bei **<a href={console}>OpenCode Zen</a>** an, hinterlege Zahlungsdaten und kopiere deinen API-Key.
|
||||
2. Fuehre in der TUI `/connect` aus, waehle OpenCode Zen und fuege den API-Key ein.
|
||||
3. Starte `/models` in der TUI, um empfohlene Modelle zu sehen.
|
||||
|
||||
Abgerechnet wird pro Anfrage, Guthaben kannst du jederzeit aufladen.
|
||||
|
||||
---
|
||||
|
||||
## Endpoints
|
||||
|
||||
Du kannst unsere Modelle auch ueber die folgenden API-Endpunkte aufrufen.
|
||||
|
||||
| Model | Model ID | Endpoint | AI SDK Package |
|
||||
| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
|
||||
| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.2 Codex | gpt-5.2-codex | `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-codex | `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-codex | `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-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Sonnet 4 | claude-sonnet-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 Free | minimax-m2.1-free | `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 Free | glm-4.7-free | `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 Free | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 Thinking | kimi-k2-thinking | `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 Coder 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
|
||||
Die [Model-ID](/docs/config/#models) in deiner OpenCode-Konfiguration hat das Format `opencode/<model-id>`.
|
||||
Fuer GPT 5.2 Codex verwendest du zum Beispiel `opencode/gpt-5.2-codex`.
|
||||
|
||||
---
|
||||
|
||||
### Models
|
||||
|
||||
Die komplette Liste verfuegbarer Modelle inklusive Metadaten findest du unter:
|
||||
|
||||
```
|
||||
https://opencode.ai/zen/v1/models
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Pricing
|
||||
|
||||
Wir nutzen ein Pay-as-you-go-Modell.
|
||||
Unten siehst du die Preise **pro 1 Mio. Tokens**.
|
||||
|
||||
| Model | Input | Output | Cached Read | Cached Write |
|
||||
| --------------------------------- | ------ | ------ | ----------- | ------------ |
|
||||
| Big Pickle | Free | Free | Free | - |
|
||||
| MiniMax M2.1 Free | Free | Free | Free | - |
|
||||
| MiniMax M2.1 | $0.30 | $1.20 | $0.10 | - |
|
||||
| GLM 4.7 Free | Free | Free | Free | - |
|
||||
| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
|
||||
| GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
|
||||
| Kimi K2.5 Free | Free | Free | Free | - |
|
||||
| Kimi K2.5 | $0.60 | $3.00 | $0.08 | - |
|
||||
| Kimi K2 Thinking | $0.40 | $2.50 | - | - |
|
||||
| Kimi K2 | $0.40 | $2.50 | - | - |
|
||||
| Qwen3 Coder 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 | Free | Free | Free | - |
|
||||
|
||||
In deinem Verlauf siehst du eventuell _Claude Haiku 3.5_.
|
||||
Das ist ein [guenstiges Modell](/docs/config/#models), das fuer Session-Titel verwendet wird.
|
||||
|
||||
:::note
|
||||
Kreditkartengebuehren geben wir zum Selbstkostenpreis weiter (4,4 % + $0.30 pro Transaktion), ohne Aufschlag.
|
||||
:::
|
||||
|
||||
Die kostenlosen Modelle:
|
||||
|
||||
- GLM 4.7 Free ist fuer begrenzte Zeit verfuegbar, um Feedback zu sammeln und das Modell zu verbessern.
|
||||
- Kimi K2.5 Free ist fuer begrenzte Zeit verfuegbar, um Feedback zu sammeln und das Modell zu verbessern.
|
||||
- MiniMax M2.1 Free ist fuer begrenzte Zeit verfuegbar, um Feedback zu sammeln und das Modell zu verbessern.
|
||||
- Big Pickle ist ein Stealth-Modell und ebenfalls zeitlich begrenzt kostenlos verfuegbar.
|
||||
|
||||
Wenn du Fragen hast, <a href={email}>kontaktiere uns</a>.
|
||||
|
||||
---
|
||||
|
||||
### Auto-reload
|
||||
|
||||
Wenn dein Guthaben unter $5 faellt, laedt Zen automatisch $20 nach.
|
||||
|
||||
Du kannst den Betrag anpassen oder Auto-Reload komplett deaktivieren.
|
||||
|
||||
---
|
||||
|
||||
### Monthly limits
|
||||
|
||||
Du kannst monatliche Limits fuer den gesamten Workspace und pro Teammitglied festlegen.
|
||||
|
||||
Wenn du z. B. ein Monatslimit von $20 setzt, verbraucht Zen nicht mehr als $20 pro Monat.
|
||||
Mit aktiviertem Auto-Reload kann die Abrechnung dennoch darueber liegen, falls das Guthaben unter $5 sinkt.
|
||||
|
||||
---
|
||||
|
||||
## Privacy
|
||||
|
||||
Alle Modelle werden in den USA gehostet.
|
||||
Unsere Provider arbeiten grundsaetzlich mit Zero-Retention und nutzen deine Daten nicht zum Training, mit folgenden Ausnahmen:
|
||||
|
||||
- Big Pickle: During its free period, collected data may be used to improve the model.
|
||||
- GLM 4.7 Free: During its free period, collected data may be used to improve the model.
|
||||
- Kimi K2.5 Free: During its free period, collected data may be used to improve the model.
|
||||
- MiniMax M2.1 Free: During its free period, collected data may be used to improve the model.
|
||||
- OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data).
|
||||
- Anthropic APIs: Requests are retained for 30 days in accordance with [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage).
|
||||
|
||||
---
|
||||
|
||||
## For Teams
|
||||
|
||||
Zen eignet sich auch gut fuer Teams.
|
||||
Du kannst Mitglieder einladen, Rollen vergeben und den Modellzugriff fuer dein Team steuern.
|
||||
|
||||
:::note
|
||||
Workspaces sind fuer Teams waehrend der Beta derzeit kostenlos.
|
||||
:::
|
||||
|
||||
Workspace-Verwaltung ist in der Beta kostenlos.
|
||||
Details zur spaeteren Preisgestaltung folgen.
|
||||
|
||||
---
|
||||
|
||||
### Roles
|
||||
|
||||
Du kannst Teammitglieder einladen und Rollen vergeben:
|
||||
|
||||
- **Admin**: Verwalten Modelle, Mitglieder, API-Keys und Abrechnung
|
||||
- **Member**: Verwalten nur eigene API-Keys
|
||||
|
||||
Admins koennen zusaetzlich monatliche Ausgabenlimits pro Mitglied setzen.
|
||||
|
||||
---
|
||||
|
||||
### Model access
|
||||
|
||||
Admins koennen einzelne Modelle fuer den Workspace aktivieren oder deaktivieren.
|
||||
Anfragen an deaktivierte Modelle liefern einen Fehler.
|
||||
|
||||
Das ist hilfreich, wenn bestimmte datenverarbeitende Modelle ausgeschlossen werden sollen.
|
||||
|
||||
---
|
||||
|
||||
### Bring your own key
|
||||
|
||||
Du kannst eigene OpenAI- oder Anthropic-API-Keys verwenden und trotzdem andere Zen-Modelle nutzen.
|
||||
|
||||
Bei eigenen Keys erfolgt die Token-Abrechnung direkt ueber den Provider, nicht ueber Zen.
|
||||
|
||||
For example, your organization might already have a key for OpenAI or Anthropic
|
||||
and you want to use that instead of the one that Zen provides.
|
||||
|
||||
---
|
||||
|
||||
## Goals
|
||||
|
||||
Wir haben OpenCode Zen entwickelt, um:
|
||||
|
||||
1. Die besten Modell/Provider-Kombinationen fuer Coding-Agenten zu **benchmarken**
|
||||
2. Stets **hohe Qualitaet** ohne Downgrades oder versteckte Umleitungen auf billigere Provider zu liefern
|
||||
3. **Preissenkungen** zum Selbstkostenpreis weiterzugeben, mit Aufschlag nur fuer Zahlungsgebuehren
|
||||
4. **Kein Lock-in** zu erzwingen, damit du Zen mit anderen Coding-Agents und OpenCode weiter mit anderen Providern nutzen kannst
|
||||
Reference in New Issue
Block a user