fix(docs): locale translations for nav elements and headings

This commit is contained in:
Adam
2026-02-11 18:51:27 -06:00
parent 8eea53a41e
commit aea68c386a
484 changed files with 12718 additions and 11212 deletions

View File

@@ -1,31 +1,31 @@
---
title: ACP 支
description: 在任何 ACP 容編輯器中使用 OpenCode。
title: ACP 支
description: 在任何 ACP 容編輯器中使用 OpenCode。
---
OpenCode 支 [Agent Client Protocol](https://agentclientprotocol.com) 或 (ACP),允許您直接在容的編輯器和 IDE 中使用它。
OpenCode 支 [Agent Client Protocol](https://agentclientprotocol.com) 或 (ACP),允許您直接在容的編輯器和 IDE 中使用它。
:::tip
有關支 ACP 的編輯器和工具的列表,請查看[ACP progress report](https://zed.dev/blog/acp-progress-report#available-now)。
有關支 ACP 的編輯器和工具的列表,請查看 [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now)。
:::
ACP 是一種開放協議,用於標準化程式碼編輯器和 AI 碼代理之間的通
ACP 是一種開放協議,用於標準化程式碼編輯器和 AI 程式碼代理之間的通
---
## 配置
## 設定
過 ACP 使用 OpenCode請將編輯器配置為運行 `opencode acp` 令。
過 ACP 使用 OpenCode請將編輯器設定為執行 `opencode acp` 令。
令將 OpenCode 作為 ACP 容的子程啟動,過 stdio 過 JSON-RPC 與您的編輯器進行通
令將 OpenCode 作為 ACP 容的子程啟動,過 stdio 過 JSON-RPC 與您的編輯器進行通
以下是支 ACP 的流行編輯器的例。
以下是支 ACP 的流行編輯器的例。
---
### Zed
添加到您的[Zed](https://zed.dev)配置(`~/.config/zed/settings.json`)
新增到您的 [Zed](https://zed.dev) 設定 (`~/.config/zed/settings.json`)
```json title="~/.config/zed/settings.json"
{
@@ -40,7 +40,7 @@ ACP 是一種開放協議,用於標準化程式碼編輯器和 AI 編碼代理
要打開它,請使用 **命令面板** 中的 `agent: new thread` 操作。
您還可以過編輯`keymap.json`來綁定鍵盤快鍵:
您還可以過編輯 `keymap.json` 來綁定鍵盤快鍵:
```json title="keymap.json"
[
@@ -69,7 +69,7 @@ ACP 是一種開放協議,用於標準化程式碼編輯器和 AI 編碼代理
### JetBrains IDE
根據[文件](https://www.jetbrains.com/help/ai-assistant/acp.html)添加到你的[JetBrains IDE](https://www.jetbrains.com/) acp.json
根據 [文件](https://www.jetbrains.com/help/ai-assistant/acp.html) 新增到你的 [JetBrains IDE](https://www.jetbrains.com/) acp.json
```json title="acp.json"
{
@@ -82,13 +82,13 @@ ACP 是一種開放協議,用於標準化程式碼編輯器和 AI 編碼代理
}
```
要打開它,請在 AI Chat 代理選擇器中使用新的opencode代理。
要打開它,請在 AI Chat 代理選擇器中使用新的opencode代理。
---
### Avante.nvim
添加到您的[Avante.nvim](https://github.com/yetone/avante.nvim)配置
新增到您的 [Avante.nvim](https://github.com/yetone/avante.nvim) 設定
```lua
{
@@ -101,7 +101,7 @@ ACP 是一種開放協議,用於標準化程式碼編輯器和 AI 編碼代理
}
```
如果需要傳遞環境變
如果需要傳遞環境變
```lua {6-8}
{
@@ -121,7 +121,7 @@ ACP 是一種開放協議,用於標準化程式碼編輯器和 AI 編碼代理
### CodeCompanion.nvim
要將 OpenCode 用作 [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim) 中的 ACP 代理,請將以下內容添加到 Neovim 配置中:
要將 OpenCode 用作 [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim) 中的 ACP 代理,請將以下內容新增到 Neovim 設定中:
```lua
require("codecompanion").setup({
@@ -136,21 +136,21 @@ require("codecompanion").setup({
})
```
配置將 CodeCompanion 設為使用 OpenCode 作為聊天的 ACP 代理。
設定將 CodeCompanion 設為使用 OpenCode 作為聊天的 ACP 代理。
如果您需要傳遞環境變(如 `OPENCODE_API_KEY`),請參閱 CodeCompanion.nvim 文中的 [配置適配器:環境變](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) 了解完整詳細信息
如果您需要傳遞環境變(如 `OPENCODE_API_KEY`),請參閱 CodeCompanion.nvim 文中的 [設定適配器:環境變](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) 了解完整詳細資訊
## 支
## 支
OpenCode 過 ACP 的工作方式與在 terminal 中的工作方式相同。支所有功能:
OpenCode 過 ACP 的工作方式與在終端機中的工作方式相同。支所有功能:
:::note
目前不支某些內置斜杠命令,例如 `/undo` 和 `/redo`。
目前不支某些內建斜線指令,例如 `/undo` 和 `/redo`。
:::
- 內工具(文件操作、terminal 命令等)
- 自定義工具和斜杠命
- 在 OpenCode 配置中配置的 MCP 服
- `AGENTS.md` 的項目特定規則
- 自定義格式化程和 linter
- 內工具(檔案操作、終端機指令等)
- 自定義工具和斜線指
- 在 OpenCode 設定中設定的 MCP 服器
- `AGENTS.md` 的專案特定規則
- 自定義格式化程和 linter
- 代理和權限系統

View File

@@ -1,15 +1,15 @@
---
title: Agents
description: 配置和使用專門的代理。
title: 代理
description: 設定和使用專門的代理。
---
代理是專門的AI助手,可以針對特定任務和工作流程進行配置。它們允許您建具有自定義提示、模型和工具訪問權限的專用工具。
代理是專門的 AI 助理,可以針對特定任務和工作流程進行設定。它們允許您建具有自定義提示、模型和工具存取權限的專用工具。
:::tip
使用計代理來分析程式碼並審建議,而無需進行任何程式碼更
使用計代理來分析程式碼並審建議,而無需進行任何程式碼更。
:::
您可以在會話期間在代理之間切換,或使用 `@` 提及來調用它們。
您可以在工作階段期間在代理之間切換,或使用 `@` 提及來呼叫它們。
---
@@ -21,122 +21,121 @@ opencode 中有兩種類型的代理;主要代理和子代理。
### 主要代理
主要代理是與您直接互動的主要助。您可以使用 **Tab** 鍵或您配置的 `switch_agent` 鍵綁定循環瀏覽它們。這些代理處理您的主要對話。工具訪問是通過權限配置的 - 例如,“構建”啟用了所有工具,而“計劃”則受到限制。
主要代理是與您直接互動的主要助。您可以使用 **Tab** 鍵或您設定的 `switch_agent` 鍵綁定循環切換它們。這些代理處理您的主要對話。工具存取是透過權限設定的 - 例如,「Build」啟用了所有工具,而「Plan」則受到限制。
:::tip
您可以在會話期間使用 **Tab** 鍵在主要代理之間切換。
您可以在工作階段期間使用 **Tab** 鍵在主要代理之間切換。
:::
opencode 附帶兩個內的主要代理:**Build** 和 **Plan**。出色地
看看下面這些。
opencode 附帶兩個內的主要代理:**Build** 和 **Plan**。我們將在下面看看這些。
---
### 子代理
子代理是主要代理可以調用​​來執行特定任務的專業助。您可以過在息中**@提及**它們來手動調用它們。
子代理是主要代理可以呼叫來執行特定任務的專業助。您可以過在息中 **@提及** 它們來手動呼叫它們。
opencode 附帶兩個內子代理:**General** 和 **Explore**。我們將在下面看看這個。
opencode 附帶兩個內子代理:**General** 和 **Explore**。我們將在下面看看這個。
---
## 內建
opencode 附帶兩個內主代理和兩個內子代理。
opencode 附帶兩個內主代理和兩個內子代理。
---
### 使用構建
### 使用 Build (構建)
_模式_`primary`
構建是啟用所有工具的**默認**主要代理。這是用於需要完全訪問文件操作和系統令的開發工作的標準代理。
Build 是啟用所有工具的**預設**主要代理。這是用於需要完全存取檔案操作和系統令的開發工作的標準代理。
---
### 使用計劃
### 使用 Plan (計畫)
_模式_`primary`
專為規劃和分析而設計的受限代理。我們使用權限系統為您提供更多控制並防止意外更
默認情況下,以下所有項均設置為`ask`
專為規劃和分析而設計的受限代理。我們使用權限系統為您提供更多控制並防止意外更。
預設情況下,以下所有項均設定為 `ask`
- `file edits`:所有寫入、修補和編輯
- `bash`:所有 bash
- `bash`:所有 bash
當您希望 LLM 分析程式碼、建議更改或創建計劃而不對程式碼庫進行任何實際修改時,此代理非常有用。
當您希望 LLM 分析程式碼、建議變更或建立計畫而不對程式碼庫進行任何實際修改時,此代理非常有用。
---
### 使用一般
### 使用 General (一般)
_模式_`subagent`
用於研究複雜問題和執行多步驟任務的通用代理。具有完整的工具訪問權限(待辦事項除外),因此可以在需要時更改文件。使用它可以並行行多個工作單元。
用於研究複雜問題和執行多步驟任務的通用代理。具有完整的工具存取權限(待辦事項除外),因此可以在需要時變更檔案。使用它可以並行行多個工作單元。
---
### 使用探索
### 使用 Explore (探索)
_模式_`subagent`
用於探索程式碼庫的快速讀代理。無法修改文件。當您需要按模式快速查找文件、搜程式碼中的關鍵字或回答有關程式碼庫的問題時,請使用此功能。
用於探索程式碼庫的快速讀代理。無法修改檔案。當您需要按模式快速尋找檔案、搜程式碼中的關鍵字或回答有關程式碼庫的問題時,請使用此功能。
---
### 使用壓實
### 使用 Compact (壓縮)
_模式_`primary`
隱藏的系統代理,將長上下文壓縮為較小的摘要。它會在需要時自動行,並且無法在 UI 中選擇。
隱藏的系統代理,將長上下文壓縮為較小的摘要。它會在需要時自動行,並且無法在 UI 中選擇。
---
### 使用標題
### 使用 Title (標題)
_模式_`primary`
生成短會話標題的隱藏系統代理。它會自動行,並且無法在 UI 中選擇。
生成短工作階段標題的隱藏系統代理。它會自動行,並且無法在 UI 中選擇。
---
### 使用總結
### 使用 Summarize (摘要)
_模式_`primary`
創建會話摘要的隱藏系統代理。它會自動行,並且無法在 UI 中選擇。
建立工作階段摘要的隱藏系統代理。它會自動行,並且無法在 UI 中選擇。
---
## 用法
1. 對於主要代理,請在會話期間使用 **Tab** 鍵循環瀏覽它們。您可以使用配置的 `switch_agent` 鍵綁定。
1. 對於主要代理,請在工作階段期間使用 **Tab** 鍵循環切換它們。您可以使用設定的 `switch_agent` 鍵綁定。
2. 可以調用子代理:
2. 可以呼叫子代理:
- **自動**由主要代理根據其描述執行專門任務。
- 過在息中**@提及**子代理手動進行。例如
- 過在息中 **@提及** 子代理手動進行。例如
```txt frame="none"
@general help me search for this function
```
3. **會話之間導航**:當子代理建自己的子會話時,您可以使用以下令在父會話和所有子會話之間導航:
- **\<Leader>+Right**(或您配置的 `session_child_cycle` 鍵綁定)向前循環父級 → 子級 1 → 子級 2 → ... → 父級
- **\<Leader>+Left**(或您配置的 `session_child_cycle_reverse` 鍵綁定)向後循環父級 ← 子級 1 ← 子級 2 ← ... ← 父級
3. **工作階段之間導航**:當子代理建自己的子工作階段時,您可以使用以下令在父工作階段和所有子工作階段之間導航:
- **\<Leader>+Right**(或您設定的 `session_child_cycle` 鍵綁定)向前循環父級 → 子級 1 → 子級 2 → ... → 父級
- **\<Leader>+Left**(或您設定的 `session_child_cycle_reverse` 鍵綁定)向後循環父級 ← 子級 1 ← 子級 2 ← ... ← 父級
這使您可以在主要對話和專門的子代理工作之間無縫切換。
---
## 配置
## 設定
您可以自定義內代理或通過配置創建您自己的代理。可以過兩種方式配置代理:
您可以自定義內代理或透過設定建立您自己的代理。可以過兩種方式設定代理:
---
### JSON
在 `opencode.json` 配置文件中配置代理:
在 `opencode.json` 設定檔中設定代理:
```json title="opencode.json"
{
@@ -179,10 +178,10 @@ _模式_`primary`
### Markdown
可以使用 Markdown 文件定義代理。將它們放入:
可以使用 Markdown 檔案定義代理。將它們放入:
- 全`~/.config/opencode/agents/`
- 每個項目`.opencode/agents/`
- 全`~/.config/opencode/agents/`
- 每個專案`.opencode/agents/`
```markdown title="~/.config/opencode/agents/review.md"
---
@@ -206,17 +205,17 @@ You are in code review mode. Focus on:
Provide constructive feedback without making direct changes.
```
Markdown 文件名成為代理名稱。例如,`review.md` 建`review` 代理。
Markdown 名成為代理名稱。例如,`review.md` 建`review` 代理。
---
## 選項
讓我們詳細看看這些配置選項。
讓我們詳細看看這些設定選項。
---
### 描述
### 描述 (Description)
使用 `description` 選項提供代理的作用以及何時使用它的簡要描述。
@@ -230,15 +229,15 @@ Markdown 文件名成為代理名稱。例如,`review.md` 創建`review` 代
}
```
這是一個**必需的**配置選項。
這是一個**必需的**設定選項。
---
### 溫度
### 溫度 (Temperature)
使用 `temperature` 配置控制 LLM 應的隨機性和創造性。
使用 `temperature` 設定控制 LLM 應的隨機性和創造性。
較低的值使應更加集中和確定,而較高的值則增加創造力和可變性。
較低的值使應更加集中和確定,而較高的值則增加創造力和可變性。
```json title="opencode.json"
{
@@ -255,9 +254,9 @@ Markdown 文件名成為代理名稱。例如,`review.md` 創建`review` 代
溫度值的範圍通常為 0.0 到 1.0
- **0.0-0.2**:非常集中且確定的應,非常適合程式碼分析和規劃
- **0.3-0.5**:具有一定創造力的平衡應,適合一般開發任務
- **0.6-1.0**:更有創意和多樣化的反應,有助於頭腦風暴和探索
- **0.0-0.2**:非常集中且確定的應,非常適合程式碼分析和規劃
- **0.3-0.5**:具有一定創造力的平衡應,適合一般開發任務
- **0.6-1.0**:更有創意和多樣化的反應,有助於腦力激盪和探索
```json title="opencode.json"
{
@@ -277,15 +276,15 @@ Markdown 文件名成為代理名稱。例如,`review.md` 創建`review` 代
}
```
如果未指定溫度opencode 將使用特定於型號的默認值;大多數型通常為 0Qwen 型為 0.55。
如果未指定溫度opencode 將使用特定於模型的預設值;大多數型通常為 0Qwen 型為 0.55。
---
### 最大步數
### 最大步數 (Steps)
控制代理在被迫僅使用文本響應之前可以執行的最大代理迭代次數。這允許希望控成本的用戶對代理操作設限制。
控制代理在被迫僅使用文字回應之前可以執行的最大代理迭代次數。這允許希望控成本的使用者對代理操作設限制。
如果未設,代理將繼續迭代,直到模型選擇停止或用戶中斷會話
如果未設,代理將繼續迭代,直到模型選擇停止或使用者中斷工作階段
```json title="opencode.json"
{
@@ -299,17 +298,17 @@ Markdown 文件名成為代理名稱。例如,`review.md` 創建`review` 代
}
```
當達到限制時,代理會收到特殊的系統提示,指示其應其工作摘要和建議的剩餘任務。
當達到限制時,代理會收到特殊的系統提示,指示其應其工作摘要和建議的剩餘任務。
:::caution
舊版 `maxSteps` 字段已棄用。請改用`steps`。
舊版 `maxSteps` 欄位已棄用。請改用 `steps`。
:::
---
### 禁用
### 禁用 (Disable)
為 `true` 以禁用代理。
為 `true` 以禁用代理。
```json title="opencode.json"
{
@@ -323,9 +322,9 @@ Markdown 文件名成為代理名稱。例如,`review.md` 創建`review` 代
---
### 迅速的
### 提示 (Prompt)
使用 `prompt` 配置為此代理指定自定義系統提示文件。提示文件應包含特定於代理目的的說明。
使用 `prompt` 設定為此代理指定自定義系統提示檔案。提示檔案應包含特定於代理目的的說明。
```json title="opencode.json"
{
@@ -337,16 +336,16 @@ Markdown 文件名成為代理名稱。例如,`review.md` 創建`review` 代
}
```
該路徑是相對於配置文件所在位置的。因此,這適用於全 opencode 配置和項目特定配置
該路徑是相對於設定檔所在位置的。因此,這適用於全 opencode 設定和專案特定設定
---
### 模型
### 模型 (Model)
使用 `model` 配置覆蓋此代理的模型。對於使用針對不同任務化的不同模型很有用。例如,更快的規劃模型、更強大的實模型。
使用 `model` 設定覆蓋此代理的模型。對於使用針對不同任務最佳化的不同模型很有用。例如,更快的規劃模型、更強大的實模型。
:::tip
如果您不指定模型,主代理將使用[全局配置的模型](/docs/config#models),而子代理將使用調用子代理的主代理的模型。
如果您不指定模型,主代理將使用 [全域設定的模型](/docs/config#models),而子代理將使用呼叫子代理的主代理的模型。
:::
```json title="opencode.json"
@@ -359,13 +358,13 @@ Markdown 文件名成為代理名稱。例如,`review.md` 創建`review` 代
}
```
opencode 配置中的模型 ID 使用格式`provider/model-id`。例如,如果您使用 [OpenCode Zen](/docs/zen),則您將使用 `opencode/gpt-5.1-codex` 來表示 GPT 5.1 Codex。
opencode 設定中的模型 ID 使用格式 `provider/model-id`。例如,如果您使用 [OpenCode Zen](/docs/zen),則您將使用 `opencode/gpt-5.1-codex` 來表示 GPT 5.1 Codex。
---
### 工具
### 工具 (Tools)
使用 `tools` 配置控制此代理中可用的工具。您可以過將特定工具設置為`true` 或`false` 來啟用或禁用特定工具。
使用 `tools` 設定控制此代理中可用的工具。您可以過將特定工具設定為 `true` 或 `false` 來啟用或禁用特定工具。
```json title="opencode.json" {3-6,9-12}
{
@@ -386,10 +385,10 @@ opencode 配置中的模型 ID 使用格式`provider/model-id`。例如,如果
```
:::note
特定於代理的配置會覆蓋全局配置
特定於代理的設定會覆蓋全域設定
:::
可以使用通配符同時控制多個工具。例如,要禁用 MCP 服器中的所有工具:
可以使用萬用字元同時控制多個工具。例如,要禁用 MCP 服器中的所有工具:
```json title="opencode.json"
{
@@ -406,15 +405,15 @@ opencode 配置中的模型 ID 使用格式`provider/model-id`。例如,如果
}
```
[了解有關工具的更多信息](/docs/tools)。
[了解有關工具的更多資訊](/docs/tools)。
---
### 權限
### 權限 (Permissions)
您可以配置權限來管理代理可以執行的操作。目前,`edit`、`bash` 和`webfetch` 工具的權限可以配置為:
您可以設定權限來管理代理可以執行的操作。目前,`edit`、`bash` 和 `webfetch` 工具的權限可以設定為:
- `"ask"` — 行工具之前提示批准
- `"ask"` — 行工具之前提示批准
- `"allow"` — 未經批准允許所有操作
- `"deny"` — 禁用該工具
@@ -445,7 +444,7 @@ opencode 配置中的模型 ID 使用格式`provider/model-id`。例如,如果
}
```
您還可以在 Markdown 代理中設權限。
您還可以在 Markdown 代理中設權限。
```markdown title="~/.config/opencode/agents/review.md"
---
@@ -464,7 +463,7 @@ permission:
Only analyze code and suggest changes.
```
您可以設特定 bash 令的權限。
您可以設特定 bash 令的權限。
```json title="opencode.json" {7}
{
@@ -482,7 +481,7 @@ Only analyze code and suggest changes.
}
```
這可以採用全模式。
這可以採用全模式。
```json title="opencode.json" {7}
{
@@ -499,8 +498,8 @@ Only analyze code and suggest changes.
}
```
可以使用`*`通配符來管理所有令的權限。
由於最後一個匹配規則優先,因此將 `*` 通配符放在前面,將特定規則放在後面。
可以使用 `*` 萬用字元來管理所有令的權限。
由於最後一個匹配規則優先,因此將 `*` 萬用字元放在前面,將特定規則放在後面。
```json title="opencode.json" {8}
{
@@ -518,13 +517,13 @@ Only analyze code and suggest changes.
}
```
[了解有關權限的更多信息](/docs/permissions)。
[了解有關權限的更多資訊](/docs/permissions)。
---
### 模式
### 模式 (Mode)
使用`mode` 配置控制代理的模式。 `mode` 選項用於確定如何使用代理。
使用 `mode` 設定控制代理的模式。 `mode` 選項用於確定如何使用代理。
```json title="opencode.json"
{
@@ -536,13 +535,13 @@ Only analyze code and suggest changes.
}
```
`mode` 選項可設置為`primary`、`subagent` 或`all`。如果未指定`mode`,則默認為`all`。
`mode` 選項可設定為 `primary`、`subagent` 或 `all`。如果未指定 `mode`,則預設為 `all`。
---
### 隱
### 隱藏 (Hidden)
使用 `@` 從 `hidden: true` 自動完成單隱藏子代理。對於只能由其他代理過任務工具以編程方式調用的內部子代理很有用。
使用 `@` 從 `hidden: true` 自動完成單隱藏子代理。對於只能由其他代理過任務工具以程式化方式呼叫的內部子代理很有用。
```json title="opencode.json"
{
@@ -555,17 +554,17 @@ Only analyze code and suggest changes.
}
```
這僅影響自動完成單中的用戶可見性。如果權限允許,模型仍然可以過任務工具調用隱藏代理。
這僅影響自動完成單中的使用者可見性。如果權限允許,模型仍然可以過任務工具呼叫隱藏代理。
:::note
僅適用於`mode: subagent` 代理。
僅適用於 `mode: subagent` 代理。
:::
---
### 任務權限
### 任務權限 (Task Permissions)
使用 `permission.task` 控制代理可以過任務工具調用哪些子代理。使用 glob 模式進行靈活匹配。
使用 `permission.task` 控制代理可以過任務工具呼叫哪些子代理。使用 glob 模式進行靈活匹配。
```json title="opencode.json"
{
@@ -584,23 +583,23 @@ Only analyze code and suggest changes.
}
```
當設為 `deny` 時,子代理將從任務工具描述中完全刪除,因此模型不會嘗試調用它。
當設為 `deny` 時,子代理將從任務工具描述中完全刪除,因此模型不會嘗試呼叫它。
:::tip
規則按順序評估,**最後匹配的規則獲勝**。在上面的例中,`orchestrator-planner` 匹配`*`(拒絕)和`orchestrator-*`(允許),但由於`orchestrator-*` 位於`*` 之後,因此結果為`allow`。
規則按順序評估,**最後匹配的規則獲勝**。在上面的例中,`orchestrator-planner` 匹配 `*`(拒絕)和 `orchestrator-*`(允許),但由於 `orchestrator-*` 位於 `*` 之後,因此結果為 `allow`。
:::
:::tip
用戶始終可以過 `@` 自動完成單直接調用任何子代理,即使代理的任務權限會拒絕它。
使用者始終可以過 `@` 自動完成單直接呼叫任何子代理,即使代理的任務權限會拒絕它。
:::
---
### 顏色
### 顏色 (Color)
使用 `color` 選項自定義代理在 UI 中的視覺外觀。這會影響代理在介面中的顯示方式。
使用有效的十六進顏色(例如`#FF5733`)或主題顏色:`primary`、`secondary`、`accent`、`success`、`warning`、`error`、`info`。
使用有效的十六進顏色(例如 `#FF5733`)或主題顏色:`primary`、`secondary`、`accent`、`success`、`warning`、`error`、`info`。
```json title="opencode.json"
{
@@ -617,9 +616,9 @@ Only analyze code and suggest changes.
---
### P
### Top P
使用 `top_p` 選項控制應多樣性。控制隨機性的溫度替代方案。
使用 `top_p` 選項控制應多樣性。控制隨機性的溫度替代方案。
```json title="opencode.json"
{
@@ -635,9 +634,9 @@ Only analyze code and suggest changes.
---
### 額外
### 額外選項 (Extra)
您在代理配置中指定的任何其他選項都將作為模型選項**直接**傳遞給供商。這允許您使用特定於供商的功能和參數。
您在代理設定中指定的任何其他選項都將作為模型選項**直接**傳遞給供商。這允許您使用特定於供商的功能和參數。
例如,使用 OpenAI 的推理模型,您可以控制推理工作:
@@ -654,47 +653,47 @@ Only analyze code and suggest changes.
}
```
這些附加選項是特定於型號和提供商的。檢查供商的文以獲取可用參數。
這些附加選項是特定於模型和供應商的。檢查供商的文以獲取可用參數。
:::tip
行 `opencode models` 查看可用模型的列表。
行 `opencode models` 查看可用模型的列表。
:::
---
## 建代理
## 建代理
您可以使用以下命令創建新代理:
您可以使用以下指令建立新代理:
```bash
opencode agent create
```
交互式命令將:
互動式指令將:
1. 詢問代理保存在哪裡;全或特定項目
1. 詢問代理保存在哪裡;全或特定專案
2. 描述代理應該做什麼。
3. 生成適當的系統提示和標識符。
4. 讓您選擇代理可以訪問哪些工具。
5. 最後,使用代理配置創建一個 markdown 文件
4. 讓您選擇代理可以存取哪些工具。
5. 最後,使用代理設定建立一個 markdown 檔案
---
## 使用案例
以下是不同代理的一些常見例。
以下是不同代理的一些常見使用案例。
- **構建代理**:啟用所有工具的完整開發工作
- **規劃代理**:分析規劃,不做改動
- **審查代理**:具有隻讀訪問權限和文工具的程式碼審查
- **調試代理**:專注於啟用 bash 和讀取工具的調查
- **文檔代理**:使用文件操作但不使用系統令的文編寫
- **Build 代理**:啟用所有工具的完整開發工作
- **Plan 代理**:分析規劃,不做改動
- **Review 代理**:具有唯讀存取權限和文工具的程式碼審查
- **Debug 代理**:專注於啟用 bash 和讀取工具的調查
- **Docs 代理**:使用檔案操作但不使用系統令的文編寫
---
##
##
以下是一些您可能會覺得有用的例代理。
以下是一些您可能會覺得有用的例代理。
:::tip
您有想要分享的代理嗎? [提交 PR](https://github.com/anomalyco/opencode)。
@@ -724,7 +723,7 @@ Focus on:
---
### 安全核員
### 安全核員
```markdown title="~/.config/opencode/agents/security-auditor.md"
---

View File

@@ -1,17 +1,17 @@
---
title: 命令介面
description: opencode CLI 選項和令。
title: 命令介面
description: opencode CLI 選項和令。
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
默認情況下OpenCode CLI 在不帶任何參數行時啟動[TUI](/docs/tui)。
預設情況下OpenCode CLI 在不帶任何參數行時啟動 [TUI](/docs/tui)。
```bash
opencode
```
但它也接受本頁記錄的令。這允許您以程方式與 OpenCode 互。
但它也接受本頁記錄的令。這允許您以程式化方式與 OpenCode 互
```bash
opencode run "Explain how closures work in JavaScript"
@@ -27,24 +27,24 @@ opencode run "Explain how closures work in JavaScript"
opencode [project]
```
#### 旗標
#### 旗標 (Flags)
| 旗標 | 簡寫 | 描述 |
| ------------ | ---- | --------------------------------------------------------- |
| `--continue` | `-c` | 繼續上一 |
| `--session` | `-s` | 會話 ID 繼續 |
| `--fork` | | 繼續時分叉會話(與 `--continue` 或 `--session` 一起使用) |
| `--prompt` | | 提示使用 |
| `--model` | `-m` | 以提供者/模型形式使用的模型 |
| `--agent` | | 代理使用 |
| `--port` | | 監聽端口 |
| `--hostname` | | 監聽的主機名 |
| 旗標 | 簡寫 | 說明 |
| ------------ | ---- | ------------------------------------------------------------- |
| `--continue` | `-c` | 繼續上一個工作階段 |
| `--session` | `-s` | 繼續指定的工作階段 ID |
| `--fork` | | 繼續時分岔工作階段(與 `--continue` 或 `--session` 一起使用) |
| `--prompt` | | 使用的提示 |
| `--model` | `-m` | 使用的模型 (provider/model) |
| `--agent` | | 使用的代理 |
| `--port` | | 監聽連接埠 |
| `--hostname` | | 監聽的主機名 |
---
##
##
OpenCode CLI 還具有以下令。
OpenCode CLI 還具有以下令。
---
@@ -60,13 +60,13 @@ opencode agent [command]
### attach
terminal 連接到過 `serve` 或 `web` 令啟動的已行的 OpenCode 後端服器。
終端機連接到過 `serve` 或 `web` 令啟動的已行的 OpenCode 後端服器。
```bash
opencode attach [url]
```
這允許將 TUI 與遠 OpenCode 後端一起使用。例如:
這允許將 TUI 與遠 OpenCode 後端一起使用。例如:
```bash
# Start the backend server for web/mobile access
@@ -78,22 +78,22 @@ opencode attach http://10.20.30.40:4096
#### 旗標
| 旗標 | 簡寫 | 描述 |
| ----------- | ---- | ------------------- |
| `--dir` | | 啟動 TUI 的工作目錄 |
| `--session` | `-s` | 會話 ID 繼續 |
| 旗標 | 簡寫 | 說明 |
| ----------- | ---- | --------------------- |
| `--dir` | | 啟動 TUI 的工作目錄 |
| `--session` | `-s` | 繼續指定的工作階段 ID |
---
#### create
使用自定義配置創建新代理。
使用自定義設定建立新代理。
```bash
opencode agent create
```
令將指導您使用自定義系統提示和工具配置創建新代理。
令將指導您使用自定義系統提示和工具設定建立新代理。
---
@@ -109,7 +109,7 @@ opencode agent list
### auth
用於管理供商的憑和登錄的命令。
用於管理供商的憑和登入的指令。
```bash
opencode auth [command]
@@ -119,19 +119,19 @@ opencode auth [command]
#### login
OpenCode 由 [Models.dev](https://models.dev) 上的供商列表提供支,因此您可以使用 `opencode auth login` 為您想要使用的任何提供商配置 API 鑰。它存儲在`~/.local/share/opencode/auth.json` 中。
OpenCode 由 [Models.dev](https://models.dev) 上的供商列表提供支,因此您可以使用 `opencode auth login` 為您想要使用的任何供應商設定 API 鑰。它儲存在 `~/.local/share/opencode/auth.json` 中。
```bash
opencode auth login
```
當 OpenCode 啟動時,它會從憑據文件加載提供商。如果您的環境中定義了任何鍵或項目中的 `.env` 文件
當 OpenCode 啟動時,它會從憑證檔案載入供應商。如果您的環境中定義了任何金鑰或專案中的 `.env` 檔案
---
#### list
列出憑證文件中存儲的所有經過身驗證的供商。
列出憑證檔案中儲存的所有經過身驗證的供商。
```bash
opencode auth list
@@ -147,7 +147,7 @@ opencode auth ls
#### logout
過從憑據文件中清除供商,將您從提供商中註銷
過從憑證檔案中清除供商,將您從供應商中登出
```bash
opencode auth logout
@@ -157,7 +157,7 @@ opencode auth logout
### github
管理 GitHub 代理以實現儲庫自動化。
管理 GitHub 代理以實現儲庫自動化。
```bash
opencode github [command]
@@ -167,36 +167,36 @@ opencode github [command]
#### install
在您的儲庫中安裝 GitHub 代理。
在您的儲庫中安裝 GitHub 代理。
```bash
opencode github install
```
這將設必要的 GitHub Actions 工作流程並指導您完成配置過程。 [了解更多](/docs/github)。
這將設必要的 GitHub Actions 工作流程並指導您完成設定過程。 [了解更多](/docs/github)。
---
#### run
行 GitHub 代理。這通常用在 GitHub Actions 中。
行 GitHub 代理。這通常用在 GitHub Actions 中。
```bash
opencode github run
```
##### 旗
##### 旗
| 旗 | 描述 |
| 旗 | 說明 |
| --------- | ------------------------------ |
| `--event` | 用於行代理的 GitHub 模擬事件 |
| `--token` | GitHub 個人訪問令牌 |
| `--event` | 用於行代理的 GitHub 模擬事件 |
| `--token` | GitHub 個人存取權杖 |
---
### mcp
管理模型上下文協議服器。
管理模型上下文協議 (MCP) 伺服器。
```bash
opencode mcp [command]
@@ -206,19 +206,19 @@ opencode mcp [command]
#### add
將 MCP 服務器添加到您的配置中。
將 MCP 伺服器新增到您的設定中。
```bash
opencode mcp add
```
令將指導您添加本地或遠 MCP 服器。
令將指導您新增本地或遠 MCP 服器。
---
#### list
列出所有已配置的 MCP 服器及其連狀態。
列出所有已設定的 MCP 服器及其連狀態。
```bash
opencode mcp list
@@ -234,15 +234,15 @@ opencode mcp ls
#### auth
使用啟用 OAuth 的 MCP 服器進行身驗證。
使用啟用 OAuth 的 MCP 服器進行身驗證。
```bash
opencode mcp auth [name]
```
如果您不提供服器名稱,系統將提示您從可用的支 OAuth 的服器中進行選擇。
如果您不提供服器名稱,系統將提示您從可用的支 OAuth 的服器中進行選擇。
您還可以列出支 OAuth 的服器及其身驗證狀態。
您還可以列出支 OAuth 的服器及其身驗證狀態。
```bash
opencode mcp auth list
@@ -258,7 +258,7 @@ opencode mcp auth ls
#### logout
刪除 MCP 服器的 OAuth 憑
刪除 MCP 服器的 OAuth 憑
```bash
opencode mcp logout [name]
@@ -268,7 +268,7 @@ opencode mcp logout [name]
#### debug
調試 MCP 服器的 OAuth 連問題。
除錯 MCP 服器的 OAuth 連問題。
```bash
opencode mcp debug <name>
@@ -278,30 +278,30 @@ opencode mcp debug <name>
### models
列出已配置提供商的所有可用模型。
列出已設定供應商的所有可用模型。
```bash
opencode models [provider]
```
令以 `provider/model` 格式顯示您配置的提供商中可用的所有模型。
令以 `provider/model` 格式顯示您設定的供應商中可用的所有模型。
這對於確定[你的配置](/docs/config/) 中使用的確切模型名稱很有用。
這對於確定 [你的設定](/docs/config/) 中使用的確切模型名稱很有用。
您可以選擇傳遞供商 ID 以按該供商篩選模型。
您可以選擇傳遞供商 ID 以按該供商篩選模型。
```bash
opencode models anthropic
```
#### 旗
#### 旗
| 旗 | 描述 |
| 旗 | 說明 |
| ----------- | ---------------------------------------- |
| `--refresh` | 從 models.dev 刷新模型緩存 |
| `--verbose` | 使用更詳細的模型輸出(包括成本等元數據 |
| `--refresh` | 從 models.dev 刷新模型快取 |
| `--verbose` | 使用更詳細的模型輸出(包括成本等元資料 |
使用`--refresh`標來更新緩存的模型列表。當新模型已添加到提供商並且您希望在 OpenCode 中查看它們時,這非常有用。
使用 `--refresh`標來更新快取的模型列表。當新模型已新增到供應商並且您希望在 OpenCode 中查看它們時,這非常有用。
```bash
opencode models --refresh
@@ -311,19 +311,19 @@ opencode models --refresh
### run
過直接傳遞提示以非互模式行 opencode。
過直接傳遞提示以非互模式行 opencode。
```bash
opencode run [message..]
```
這對於腳本編寫、自動化,或者當您想要快速得到答案而不啟動完整的 TUI 時非常有用。例如
這對於撰寫指令碼、自動化,或者當您想要快速得到答案而不啟動完整的 TUI 時非常有用。例如
```bash "opencode run"
opencode run Explain the use of context in Go
```
您還可以附加到正在行的 `opencode serve` 實例,以避免每次行時 MCP 服器冷啟動時間:
您還可以附加到正在行的 `opencode serve` 實例,以避免每次行時 MCP 服器冷啟動時間:
```bash
# Start a headless server in one terminal
@@ -333,49 +333,49 @@ opencode serve
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
```
#### 旗
#### 旗
| 旗 | 短 | 描述 |
| 旗 | 短 | 說明 |
| ------------ | ---- | --------------------------------------------------------------- |
| `--command` | | 要行的令,使用息作為參數 |
| `--continue` | `-c` | 繼續上一 |
| `--session` | `-s` | 會話 ID 繼續 |
| `--fork` | | 繼續時分叉會話(與 `--continue` 或 `--session` 一起使用) |
| `--share` | | 分享會議 |
| `--model` | `-m` | 以提供者/模型形式使用的模型 |
| `--agent` | | 代理使用 |
| `--file` | `-f` | 要附加到息的文件 |
| `--format` | | 格式:默認(格式化)或 json原始 JSON 事件 |
| `--title` | | 會話標題(如果未提供值,則使用截斷的提示) |
| `--attach` | | 連接到正在行的 opencode 服例如http://localhost:4096 |
| `--port` | | 本地服務器的端口(默認為隨機端口) |
| `--command` | | 要行的令,使用息作為參數 |
| `--continue` | `-c` | 繼續上一個工作階段 |
| `--session` | `-s` | 繼續指定的工作階段 ID |
| `--fork` | | 繼續時分岔工作階段(與 `--continue` 或 `--session` 一起使用) |
| `--share` | | 分享工作階段 |
| `--model` | `-m` | 使用的模型 (provider/model) |
| `--agent` | | 使用的代理 |
| `--file` | `-f` | 要附加到息的檔案 |
| `--format` | | 格式:預設 (formatted) 或 json (原始 JSON 事件) |
| `--title` | | 工作階段標題(如果未提供值,則使用截斷的提示) |
| `--attach` | | 連接到正在行的 opencode 服器例如http://localhost:4096 |
| `--port` | | 本地伺服器的連接埠(預設為隨機連接埠) |
---
### serve
啟動無 opencode 服器以進行 API 訪問。查看[服務器文](/docs/server) 以獲取完整的 HTTP 接口
啟動無介面 opencode 服器以進行 API 存取。查看 [伺服器文](/docs/server) 以獲取完整的 HTTP 介面
```bash
opencode serve
```
這將啟動一個 HTTP 服器,該服器提供對 opencode 功能的 API 訪問,而無需 TUI 接口。設置`OPENCODE_SERVER_PASSWORD`以啟用HTTP基本身驗證(用戶名默認為`opencode`)。
這將啟動一個 HTTP 服器,該服器提供對 opencode 功能的 API 存取,而無需 TUI 介面。設定 `OPENCODE_SERVER_PASSWORD` 以啟用 HTTP 基本身驗證(使用者名稱預設為 `opencode`)。
#### 旗
#### 旗
| 旗 | 描述 |
| ------------ | ------------------------ |
| `--port` | 監聽端口 |
| `--hostname` | 監聽的主機名 |
| `--mdns` | 啟用 mDNS 發現 |
| `--cors` | 允許 CORS 的其他瀏覽器源 |
| 旗 | 說明 |
| ------------ | -------------------------- |
| `--port` | 監聽連接埠 |
| `--hostname` | 監聽的主機名 |
| `--mdns` | 啟用 mDNS 探索 |
| `--cors` | 允許 CORS 的其他瀏覽器源 |
---
### session
管理 opencode 會話
管理 opencode 工作階段
```bash
opencode session [command]
@@ -385,61 +385,61 @@ opencode session [command]
#### list
列出所有 opencode 會話
列出所有 opencode 工作階段
```bash
opencode session list
```
##### 旗
##### 旗
| 旗 | 短 | 描述 |
| 旗 | 短 | 說明 |
| ------------- | ---- | ------------------------------ |
| `--max-count` | `-n` | 限制為最近 N 個會話 |
| `--max-count` | `-n` | 限制為最近 N 個工作階段 |
| `--format` | | 輸出格式table 或 json(table) |
---
### stats
顯示 opencode 會話的令牌使用情況和成本統計信息
顯示 opencode 工作階段的 Tokens 使用情況和成本統計資訊
```bash
opencode stats
```
#### 旗
#### 旗
| 旗 | 描述 |
| 旗 | 說明 |
| ----------- | -------------------------------------------------------- |
| `--days` | 顯示過去 N 天(所有時間)的統計數據 |
| `--tools` | 顯示的工具數量(全部) |
| `--models` | 顯示模型使用情況細分(默認隱藏)。傳遞一個數字來顯示前 N |
| `--project` | 按項目過濾(所有項目,空字串:當前項目) |
| `--models` | 顯示模型使用情況細分(預設隱藏)。傳遞一個數字來顯示前 N |
| `--project` | 按專案過濾(所有專案,空字串:當前專案) |
---
### export
會話數據導出為 JSON。
工作階段數據導出為 JSON。
```bash
opencode export [sessionID]
```
如果您不提供會話 ID系統將提示您從可用會話中進行選擇。
如果您不提供工作階段 ID系統將提示您從可用工作階段中進行選擇。
---
### import
從 JSON 文件或 opencode 享 URL 導入會話數據。
從 JSON 檔案或 opencode 享 URL 匯入工作階段數據。
```bash
opencode import <file>
```
以從本地文件或 opencode 享 URL 入。
您以從本地檔案或 opencode 享 URL 入。
```bash
opencode import session.json
@@ -450,59 +450,59 @@ opencode import https://opncd.ai/s/abc123
### web
使用 Web 介面啟動無 opencode 服器。
使用 Web 介面啟動無介面 opencode 服器。
```bash
opencode web
```
這將啟動 HTTP 服器並打開 Web 瀏覽器以過 Web 介面訪問 opencode。設`OPENCODE_SERVER_PASSWORD`以啟用HTTP基本身驗證(用戶名默認為`opencode`)。
這將啟動 HTTP 服器並打開網頁瀏覽器以過 Web 介面存取 opencode。設`OPENCODE_SERVER_PASSWORD` 以啟用 HTTP 基本身驗證(使用者名稱預設為 `opencode`)。
#### 旗
#### 旗
| 旗 | 描述 |
| ------------ | ------------------------ |
| `--port` | 監聽端口 |
| `--hostname` | 監聽的主機名 |
| `--mdns` | 啟用 mDNS 發現 |
| `--cors` | 允許 CORS 的其他瀏覽器源 |
| 旗 | 說明 |
| ------------ | -------------------------- |
| `--port` | 監聽連接埠 |
| `--hostname` | 監聽的主機名 |
| `--mdns` | 啟用 mDNS 探索 |
| `--cors` | 允許 CORS 的其他瀏覽器源 |
---
### acp
啟動 ACPAgent Client Protocol)服務器。
啟動 ACP (Agent Client Protocol) 伺服器。
```bash
opencode acp
```
令啟動一個 ACP 服器,該服器使用 nd-JSON 過 stdin/stdout 進行通
令啟動一個 ACP 服器,該服器使用 nd-JSON 過 stdin/stdout 進行通
#### 旗
#### 旗
| 旗 | 描述 |
| ------------ | ------------ |
| `--cwd` | 工作目錄 |
| `--port` | 監聽端口 |
| `--hostname` | 監聽的主機名 |
| 旗 | 說明 |
| ------------ | -------------- |
| `--cwd` | 工作目錄 |
| `--port` | 監聽連接埠 |
| `--hostname` | 監聽的主機名 |
---
### uninstall
卸載 opencode 並刪除所有相關文件
解除安裝 opencode 並刪除所有相關檔案
```bash
opencode uninstall
```
#### 旗
#### 旗
| 旗 | 短 | 描述 |
| 旗 | 短 | 說明 |
| --------------- | ---- | -------------------------------- |
| `--keep-config` | `-c` | 保留配置文件 |
| `--keep-data` | `-d` | 保留會話數據和快照 |
| `--keep-config` | `-c` | 保留設定檔 |
| `--keep-data` | `-d` | 保留工作階段數據和快照 |
| `--dry-run` | | 顯示在不刪除的情況下將刪除的內容 |
| `--force` | `-f` | 跳過確認提示 |
@@ -528,76 +528,76 @@ opencode upgrade
opencode upgrade v0.1.48
```
#### 旗
#### 旗
| 旗標 | 簡寫 | 描述 |
| 旗標 | 簡寫 | 說明 |
| ---------- | ---- | ------------------------------------------ |
| `--method` | `-m` | 使用的安裝方法curl、npm、pnpm、bun、brew |
---
## 全球旗幟
## 全域旗標
opencode CLI 採用以下全局標誌
opencode CLI 採用以下全域旗標
| 旗 | 短 | 描述 |
| -------------- | ---- | ---------------------------------- |
| `--help` | `-h` | 顯示幫助 |
| `--version` | `-v` | 印版本號 |
| `--print-logs` | | 將日誌打印到 stderr |
| `--log-level` | | 日誌級別(調試、信息、警告、錯誤 |
| 旗 | 短 | 說明 |
| -------------- | ---- | ------------------------------------ |
| `--help` | `-h` | 顯示說明 |
| `--version` | `-v` | 印版本號 |
| `--print-logs` | | 將記錄列印到 stderr |
| `--log-level` | | 記錄等級debug, info, warn, error |
---
## 環境變
## 環境變
可以使用環境變量配置 opencode。
可以使用環境變數設定 opencode。
| 變 | 類型 | 描述 |
| ------------------------------------- | ------- | ---------------------------------------- |
| `OPENCODE_AUTO_SHARE` | boolean | 自動共享會話 |
| `OPENCODE_GIT_BASH_PATH` | string | Windows 上 Git Bash 可執行文件的路徑 |
| `OPENCODE_CONFIG` | string | 配置文件路徑 |
| `OPENCODE_CONFIG_DIR` | string | 配置目錄的路徑 |
| `OPENCODE_CONFIG_CONTENT` | string | 內聯 json 配置內容 |
| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | 禁用自動更新檢查 |
| `OPENCODE_DISABLE_PRUNE` | boolean | 禁用舊數據的修剪 |
| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolean | 禁用自動 terminal 標題更新 |
| `OPENCODE_PERMISSION` | string | 內聯 json 權限配置 |
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolean | 禁用默認插件 |
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolean | 禁用自動 LSP 服器下載 |
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | 啟用實驗模型 |
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | 禁用自動上下文壓縮 |
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | 禁止從`.claude`讀取(提示+技巧) |
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | 禁用讀取`~/.claude/CLAUDE.md` |
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | 禁用載`.claude/skills` |
| `OPENCODE_DISABLE_MODELS_FETCH` | boolean | 禁用從遠源獲取模型 |
| `OPENCODE_FAKE_VCS` | string | 用於測試目的的假 VCS 提供商 |
| `OPENCODE_DISABLE_FILETIME_CHECK` | boolean | 禁用文件時間檢查以進行優化 |
| `OPENCODE_CLIENT` | string | 客戶端標識符(默認為`cli` |
| `OPENCODE_ENABLE_EXA` | boolean | 啟用 Exa 網絡搜索工具 |
| `OPENCODE_SERVER_PASSWORD` | string | 為 `serve`/`web` 啟用基本身驗證 |
| `OPENCODE_SERVER_USERNAME` | string | 覆蓋基本身驗證用戶名(默認`opencode` |
| `OPENCODE_MODELS_URL` | string | 用於獲取模型配置的自定義 URL |
| 變 | 類型 | 說明 |
| ------------------------------------- | ------- | --------------------------------------------- |
| `OPENCODE_AUTO_SHARE` | boolean | 自動分享工作階段 |
| `OPENCODE_GIT_BASH_PATH` | string | Windows 上 Git Bash 可執行檔案的路徑 |
| `OPENCODE_CONFIG` | string | 設定檔路徑 |
| `OPENCODE_CONFIG_DIR` | string | 設定目錄的路徑 |
| `OPENCODE_CONFIG_CONTENT` | string | 內聯 json 設定內容 |
| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | 禁用自動更新檢查 |
| `OPENCODE_DISABLE_PRUNE` | boolean | 禁用舊數據的修剪 |
| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolean | 禁用自動終端機標題更新 |
| `OPENCODE_PERMISSION` | string | 內聯 json 權限設定 |
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolean | 禁用預設外掛 |
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolean | 禁用自動 LSP 服器下載 |
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | 啟用實驗模型 |
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | 禁用自動上下文壓縮 |
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | 禁止從 `.claude` 讀取(提示+技巧) |
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | 禁用讀取 `~/.claude/CLAUDE.md` |
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | 禁用載`.claude/skills` |
| `OPENCODE_DISABLE_MODELS_FETCH` | boolean | 禁用從遠端來源獲取模型 |
| `OPENCODE_FAKE_VCS` | string | 用於測試目的的假 VCS 供應商 |
| `OPENCODE_DISABLE_FILETIME_CHECK` | boolean | 禁用檔案時間檢查以進行最佳化 |
| `OPENCODE_CLIENT` | string | 客戶端標識符(預設為 `cli` |
| `OPENCODE_ENABLE_EXA` | boolean | 啟用 Exa 網路搜尋工具 |
| `OPENCODE_SERVER_PASSWORD` | string | 為 `serve`/`web` 啟用基本身驗證 |
| `OPENCODE_SERVER_USERNAME` | string | 覆蓋基本身驗證使用者名稱(預設 `opencode` |
| `OPENCODE_MODELS_URL` | string | 用於獲取模型設定的自定義 URL |
---
### 實驗性的
這些環境變啟用可能會更改或刪除的實驗性功能。
這些環境變啟用可能會更改或刪除的實驗性功能。
| 變 | 類型 | 描述 |
| 變 | 類型 | 說明 |
| ----------------------------------------------- | ------- | ----------------------------------- |
| `OPENCODE_EXPERIMENTAL` | boolean | 啟用所有實驗性功能 |
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolean | 啟用圖標發現 |
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolean | 在 TUI 中禁用選擇時復制 |
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | number | bash 令的默認超時(以毫秒為單位) |
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | number | LLM 應的最大輸出令牌 |
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolean | 為整個目錄啟用文件觀察器 |
| `OPENCODE_EXPERIMENTAL_OXFMT` | boolean | 啟用 oxfmt 格式化程 |
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolean | 啟用圖示探索 |
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolean | 在 TUI 中禁用選擇時複製 |
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | number | bash 令的預設超時(以毫秒為單位) |
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | number | LLM 應的最大輸出 tokens |
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolean | 為整個目錄啟用檔案觀察器 |
| `OPENCODE_EXPERIMENTAL_OXFMT` | boolean | 啟用 oxfmt 格式化程 |
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolean | 啟用實驗性 LSP 工具 |
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolean | 禁用文件觀察器 |
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolean | 禁用檔案觀察器 |
| `OPENCODE_EXPERIMENTAL_EXA` | boolean | 啟用實驗性 Exa 功能 |
| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolean | 啟用實驗性 LSP 類型檢查 |
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolean | 啟用實驗性 Markdown 功能 |
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolean | 啟用計模式 |
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolean | 啟用計模式 |

View File

@@ -1,23 +1,23 @@
---
title:
description: 為重複任務建自定義令。
title:
description: 為重複任務建自定義令。
---
自定義令允許您指定在 TUI 中執行該令時要行的提示。
自定義令允許您指定在 TUI 中執行該令時要行的提示。
```bash frame="none"
/my-command
```
除了`/init`、`/undo`、`/redo`、`/share`、`/help` 等內置命令之外,還有自定義令。 [了解更多](/docs/tui#commands)。
除了 `/init`、`/undo`、`/redo`、`/share`、`/help` 等內建指令之外,還有自定義令。 [了解更多](/docs/tui#commands)。
---
## 創建命令文件
## 建立指令檔案
在`commands/`目錄中建markdown文件來定義自定義令。
`commands/` 目錄中建markdown 檔案來定義自定義令。
建`.opencode/commands/test.md`
`.opencode/commands/test.md`
```md title=".opencode/commands/test.md"
---
@@ -30,9 +30,9 @@ Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
frontmatter 定義令屬性。內容成為模板
frontmatter 定義令屬性。內容成為範本
通過鍵入 `/` 後跟令名稱來使用該令。
透過輸入 `/` 後跟令名稱來使用該令。
```bash frame="none"
"/test"
@@ -40,15 +40,15 @@ frontmatter 定義命令屬性。內容成為模板。
---
## 配置
## 設定
您可以過 opencode 配置或通過在 `commands/` 目錄中建 markdown 文件來添加自定義令。
可以過 opencode 設定或透過在 `commands/` 目錄中建 markdown 檔案來新增自定義令。
---
### JSON
在 opencode [配置](/docs/config) 中使用 `command` 選項:
在 opencode [設定](/docs/config) 中使用 `command` 選項:
```json title="opencode.jsonc" {4-12}
{
@@ -67,7 +67,7 @@ frontmatter 定義命令屬性。內容成為模板。
}
```
現在您可以在 TUI 中行此令:
現在您可以在 TUI 中行此令:
```bash frame="none"
/test
@@ -77,10 +77,10 @@ frontmatter 定義命令屬性。內容成為模板。
### Markdown
可以使用 Markdown 文件定義令。將它們放入:
可以使用 Markdown 檔案定義令。將它們放入:
- 全`~/.config/opencode/commands/`
- 每個項目`.opencode/commands/`
- 全`~/.config/opencode/commands/`
- 每個專案`.opencode/commands/`
```markdown title="~/.config/opencode/commands/test.md"
---
@@ -93,8 +93,7 @@ Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
Markdown 文件名成為令名。例如,`test.md` 讓
你運行:
Markdown 名成為令名。例如,`test.md` 讓您執行:
```bash frame="none"
/test
@@ -102,15 +101,15 @@ Markdown 文件名成為命令名。例如,`test.md` 讓
---
## 提示配置
## 提示設定
自定義令的提示支幾個特殊的佔位符和語法。
自定義令的提示支幾個特殊的預留位置和語法。
---
### 參數
### 參數 (Arguments)
使用 `$ARGUMENTS` 佔位符將參數傳遞給令。
使用 `$ARGUMENTS` 預留位置將參數傳遞給令。
```md title=".opencode/commands/component.md"
---
@@ -121,7 +120,7 @@ Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.
```
使用參數運行命令:
使用參數執行指令:
```bash frame="none"
/component Button
@@ -129,7 +128,7 @@ Include proper typing and basic structure.
`$ARGUMENTS` 將替換為 `Button`。
可以使用位置參數訪問各個參數:
可以使用位置參數存取各個參數:
- `$1` - 第一個參數
- `$2` - 第二個參數
@@ -147,7 +146,7 @@ Create a file named $1 in the directory $2
with the following content: $3
```
運行命令:
執行指令:
```bash frame="none"
/create-file config.json src "{ \"key\": \"value\" }"
@@ -155,17 +154,17 @@ with the following content: $3
這取代了:
- `$1` 與`config.json`
- `$2` 與`src`
- `$3` 與`{ "key": "value" }`
- `$1` 與 `config.json`
- `$2` 與 `src`
- `$3` 與 `{ "key": "value" }`
---
### Shell 輸出
使用 _!`command`_ 將 [bash令](/docs/tui#bash-commands) 輸出注入到提示中。
使用 _!`command`_ 將 [bash令](/docs/tui#bash-commands) 輸出注入到提示中。
例如,要建分析測試覆蓋率的自定義令:
例如,要建分析測試覆蓋率的自定義令:
```md title=".opencode/commands/analyze-coverage.md"
---
@@ -178,7 +177,7 @@ Here are the current test results:
Based on these results, suggest improvements to increase coverage.
```
或者查看最近的更
或者查看最近的更:
```md title=".opencode/commands/review-changes.md"
---
@@ -191,13 +190,13 @@ Recent git commits:
Review these changes and suggest any improvements.
```
令在項目的根目錄中行,其輸出成為提示的一部分。
令在專案的根目錄中行,其輸出成為提示的一部分。
---
### 文件參考
### 檔案參考
使用 `@` 後跟文件名將文件包含在令中。
使用 `@` 後跟檔名將檔案包含在令中。
```md title=".opencode/commands/review-component.md"
---
@@ -208,19 +207,19 @@ Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.
```
文件內容會自動包含在提示中。
檔案內容會自動包含在提示中。
---
## 選項
讓我們詳細看看配置選項。
讓我們詳細看看設定選項。
---
### 模板
### 範本 (Template)
`template` 選項定義執行令時將發送到 LLM 的提示。
`template` 選項定義執行令時將發送到 LLM 的提示。
```json title="opencode.json"
{
@@ -232,13 +231,13 @@ Check for performance issues and suggest improvements.
}
```
這是一個**必需的**配置選項。
這是一個**必需的**設定選項。
---
### 描述
### 描述 (Description)
使用 `description` 選項提供令功能的簡要描述。
使用 `description` 選項提供令功能的簡要描述。
```json title="opencode.json"
{
@@ -250,15 +249,15 @@ Check for performance issues and suggest improvements.
}
```
當您鍵入命令時,這將在 TUI 中顯示為描述。
當您輸入指令時,這將在 TUI 中顯示為描述。
---
### 代理
### 代理 (Agent)
使用`agent` 配置可選擇指定哪個[代理](/docs/agents) 應執行此令。
如果這是 [子代理](/docs/agents/#subagents) 該命令將默認觸發子代理調用
要禁用此行為,請將`subtask` 設置為`false`。
使用 `agent` 設定可選擇指定哪個 [代理](/docs/agents) 應執行此令。
如果這是 [子代理](/docs/agents/#subagents),該指令將預設觸發子代理呼叫
要禁用此行為,請將 `subtask` 設定為 `false`。
```json title="opencode.json"
{
@@ -270,15 +269,15 @@ Check for performance issues and suggest improvements.
}
```
這是一個**可選**配置選項。如果未指定,則默認為您當前的代理。
這是一個**可選**設定選項。如果未指定,則預設為您當前的代理。
---
### 子任務
### 子任務 (Subtask)
使用`subtask` 布值強制令觸發[子代理](/docs/agents/#subagents) 調用
如果您希望令不污染您的主要上下文並且將**強制**代理充當子代理,那麼這非常有用,
即使`mode` 在[代理](/docs/agents) 配置上設置為`primary`。
使用 `subtask` 布值強制令觸發 [子代理](/docs/agents/#subagents) 呼叫
如果您希望令不污染您的主要上下文並且將**強制**代理充當子代理,那麼這非常有用,
即使 `mode` 在 [代理](/docs/agents) 設定上設定為 `primary`。
```json title="opencode.json"
{
@@ -290,13 +289,13 @@ Check for performance issues and suggest improvements.
}
```
這是一個**可選**配置選項。
這是一個**可選**設定選項。
---
### 模型
### 模型 (Model)
使用 `model` 配置覆蓋此命令的默認模型。
使用 `model` 設定覆寫此指令的預設模型。
```json title="opencode.json"
{
@@ -308,16 +307,16 @@ Check for performance issues and suggest improvements.
}
```
這是一個**可選**配置選項。
這是一個**可選**設定選項。
---
## 內建
### 內建
opencode包含`/init`、`/undo`、`/redo`、`/share`、`/help`等內置命令; [了解更多](/docs/tui#commands)。
opencode 包含 `/init`、`/undo`、`/redo`、`/share`、`/help` 等內建指令; [了解更多](/docs/tui#commands)。
:::note
自定義令可以覆蓋內置命令。
自定義令可以覆寫內建指令。
:::
如果您定義同名的自定義令,它將覆蓋內置命令。
如果您定義同名的自定義令,它將覆寫內建指令。

View File

@@ -1,15 +1,15 @@
---
title: 配置
description: 使用 opencode JSON 配置
title: 設定
description: 使用 opencode JSON 設定
---
您可以使用 JSON 配置文件配置 opencode。
您可以使用 JSON 設定檔設定 opencode。
---
## 格式
opencode 支 **JSON** 和 **JSONC**(帶註的 JSON格式。
opencode 支 **JSON** 和 **JSONC**(帶註的 JSON格式。
```jsonc title="opencode.jsonc"
{
@@ -23,47 +23,46 @@ opencode 支持 **JSON** 和 **JSONC**(帶註釋的 JSON格式。
---
## 地點
## 位置
您可以將配置放置在幾個不同的位置,它們有一個
不同的優先順序。
您可以將設定放置在幾個不同的位置,它們有一個不同的優先順序。
:::note
配置文件**合併在一起**,而不是替換
設定檔**合併在一起**,而不是取代
:::
配置文件被合併在一起,而不是被替換。以下配置位置的設被合併。僅當密鑰衝突時,後面的配置才會覆前面的配置。保留所有配置中的非衝突設
設定檔被合併在一起,而不是被取代。以下設定位置的設被合併。僅當鍵值衝突時,後面的設定才會覆前面的設定。保留所有設定中的非衝突設
例如,如果您的全局配置設置`theme: "opencode"``autoupdate: true`,並且您的項目配置設置`model: "anthropic/claude-sonnet-4-5"`,則最終配置將包括所有三個設
例如,如果您的全域設定設定 `theme: "opencode"``autoupdate: true`,並且您的專案設定設定 `model: "anthropic/claude-sonnet-4-5"`,則最終設定將包括所有三個設
---
### 優先順序
配置源按以下順序載(後面的源覆前面的源):
設定來源按以下順序載(後面的源覆前面的源):
1. **遠程配置**(來自`.well-known/opencode`-組織默認
2. **全局配置** (`~/.config/opencode/opencode.json`) - 用戶首選項
3. **自定義配置** (`OPENCODE_CONFIG` env var) - 自定義覆
4. **項目配置**項目中的`opencode.json`- 項目特定的設
5. **`.opencode` 目錄** - 代理、令、插件
6. **內聯配置** (`OPENCODE_CONFIG_CONTENT` env var) - 行時覆
1. **遠端設定**(來自 `.well-known/opencode`- 組織預設
2. **全域設定** (`~/.config/opencode/opencode.json`) - 使用者偏好設定
3. **自定義設定** (`OPENCODE_CONFIG` env var) - 自定義覆
4. **專案設定**專案中的 `opencode.json`- 專案特定的設
5. **`.opencode` 目錄** - 代理、令、外掛
6. **內聯設定** (`OPENCODE_CONFIG_CONTENT` env var) - 行時覆
這意味著項目配置可以覆蓋全局默認值,全局配置可以覆蓋遠程組織默認值。
這意味著專案設定可以覆寫全域預設值,全域設定可以覆寫遠端組織預設值。
:::note
`.opencode` 和`~/.config/opencode` 目錄對子目錄使用**複數名稱**`agents/`、`commands/`、`modes/`、`plugins/`、`skills/`、`tools/` 和`themes/`。為了向後容,還支持單數名稱(例如`agent/`)。
`.opencode` 和 `~/.config/opencode` 目錄對子目錄使用**複數名稱**`agents/`、`commands/`、`modes/`、`plugins/`、`skills/`、`tools/` 和 `themes/`。為了向後容,也支援單數名稱(例如 `agent/`)。
:::
---
### 遠
### 遠
組織可以過 `.well-known/opencode` 端點提供默認配置。當您向支它的供商進行身驗證時,會自動獲取該信息
組織可以過 `.well-known/opencode` 端點提供預設設定。當您向支它的供商進行身驗證時,會自動取得該資訊
首先加載遠程配置,作為基礎層。所有其他配置源(全局、項目)都可以覆這些默認值。
首先載入遠端設定,作為基礎層。所有其他設定來源(全域、專案)都可以覆這些預設值。
例如,如果您的組織提供默認禁用的 MCP 服器:
例如,如果您的組織提供預設禁用的 MCP 服器:
```json title="Remote config from .well-known/opencode"
{
@@ -77,7 +76,7 @@ opencode 支持 **JSON** 和 **JSONC**(帶註釋的 JSON格式。
}
```
您可以在本地配置中啟用特定服器:
您可以在本地設定中啟用特定服器:
```json title="opencode.json"
{
@@ -93,60 +92,57 @@ opencode 支持 **JSON** 和 **JSONC**(帶註釋的 JSON格式。
---
### 全球的
### 全
將全 opencode 配置放在 `~/.config/opencode/opencode.json` 中。使用全局配置來實現用戶範圍的首選項,例如主題、供商或按鍵綁定。
將全 opencode 設定放在 `~/.config/opencode/opencode.json` 中。使用全域設定來實現使用者範圍的偏好設定,例如主題、供商或按鍵綁定。
局配置覆蓋遠程組織默認值。
域設定覆寫遠端組織預設值。
---
### 每個項目
### 每個專案
項目根目錄中添加`opencode.json`。項目配置在標準配置文件中具有最高優先級 - 它覆蓋全局配置和遠程配置
專案根目錄中新增 `opencode.json`。專案設定在標準設定檔中具有最高優先級 - 它覆寫全域設定和遠端設定
:::tip
項目特定配置放在項目的根目錄中。
專案特定設定放在專案的根目錄中。
:::
當 opencode 啟動時,它會在當前目錄中查找配置文件或遍歷到最近的 Git 目錄。
當 opencode 啟動時,它會在當前目錄中尋找設定檔或遍歷到最近的 Git 目錄。
這也可以安全地簽入 Git 並使用與全模式相同的模式。
這也可以安全地簽入 Git 並使用與全模式相同的模式。
---
### 自定義路徑
使用 `OPENCODE_CONFIG` 環境變指定自定義配置文件路徑。
使用 `OPENCODE_CONFIG` 環境變指定自定義設定檔路徑。
```bash
export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"
```
自定義配置按優先順序在全局配置和項目配置之間加載
自定義設定按優先順序在全域設定和專案設定之間載入
---
### 自定義目錄
使用`OPENCODE_CONFIG_DIR`指定自定義配置目錄
環境變量。將在該目錄中搜索代理、命令、
模式和插件就像標準`.opencode`目錄一樣,並且應該
遵循相同的結構。
使用 `OPENCODE_CONFIG_DIR` 環境變數指定自定義設定目錄。將在該目錄中搜尋代理、指令、模式和外掛,就像標準 `.opencode` 目錄一樣,並且應該遵循相同的結構。
```bash
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
opencode run "Hello world"
```
自定義目錄在全局配置和`.opencode`目錄之後載,因此它**可以覆**它們的設
自定義目錄在全域設定和 `.opencode` 目錄之後載,因此它**可以覆**它們的設
---
## 模式
## 架構
配置文件具有在 [**`opencode.ai/config.json`**](https://opencode.ai/config.json) 中定義的架構。
設定檔具有在 [**`opencode.ai/config.json`**](https://opencode.ai/config.json) 中定義的架構。
您的編輯器應該能夠根據架構進行驗證和自動完成。
@@ -154,7 +150,7 @@ opencode run "Hello world"
### TUI
您可以過 `tui` 選項配置特定於 TUI 的設
您可以過 `tui` 選項設定特定於 TUI 的設
```json title="opencode.json"
{
@@ -171,17 +167,17 @@ opencode run "Hello world"
可用選項:
- `scroll_acceleration.enabled` - 啟用 macOS 風格的動加速。 **優先於`scroll_speed`。 **
- `scroll_speed` - 自定義動速度倍增(默認值:`3`,最小值:`1`)。如果`scroll_acceleration.enabled` 是`true`,則忽略。
- `diff_style` - 控制差異渲染。 `"auto"` 適應terminal寬度,`"stacked"` 始終顯示單列。
- `scroll_acceleration.enabled` - 啟用 macOS 風格的動加速。 **優先於 `scroll_speed`。**
- `scroll_speed` - 自定義動速度倍數(預設值:`3`,最小值:`1`)。如果 `scroll_acceleration.enabled` 是 `true`,則忽略。
- `diff_style` - 控制差異顯示。 `"auto"` 適應終端機寬度,`"stacked"` 始終顯示單列。
[在此處了解有關使用 TUI 的更多信息](/docs/tui)。
[在此處了解有關使用 TUI 的更多資訊](/docs/tui)。
---
### 伺服器
您可以通過`opencode serve` 選項為`opencode web` 和`server` 命令配置服務器設
您可以透過 `opencode serve` 選項為 `opencode web` 和 `server` 指令設定伺服器設
```json title="opencode.json"
{
@@ -198,19 +194,19 @@ opencode run "Hello world"
可用選項:
- `port` - 監聽的端口
- `hostname` - 要監聽的主機名。當`mdns`啟用且未設主機名時,默認為`0.0.0.0`。
- `mdns` - 啟用 mDNS 服務發現。這允許網上的其他設備發現您的 opencode 服器。
- `mdnsDomain` - mDNS 服務的自定義域名。默認為`opencode.local`。對於在同一網絡上運行多個實例很有用。
- `cors` - 從基於瀏覽器的客戶端使用 HTTP 服器時允許 CORS 的其他來源。值必須是完整來源(方案+主機+可選端口),例如`https://app.example.com`。
- `port` - 監聽的連接埠
- `hostname` - 要監聽的主機名。當 `mdns` 啟用且未設主機名時,預設為 `0.0.0.0`。
- `mdns` - 啟用 mDNS 服務探索。這允許網上的其他設備發現您的 opencode 服器。
- `mdnsDomain` - mDNS 服務的自定義域名稱。預設為 `opencode.local`。對於在同一網路上執行多個實例很有用。
- `cors` - 從基於瀏覽器的客戶端使用 HTTP 服器時允許 CORS 的其他來源。值必須是完整來源(通訊協定+主機+可選連接埠),例如 `https://app.example.com`。
[在此處了解有關服器的更多信息](/docs/server)。
[在此處了解有關服器的更多資訊](/docs/server)。
---
### 工具
您可以過 `tools` 選項管理LLM可以使用的工具。
您可以過 `tools` 選項管理 LLM 可以使用的工具。
```json title="opencode.json"
{
@@ -222,13 +218,13 @@ opencode run "Hello world"
}
```
[在此處了解有關工具的更多信息](/docs/tools)。
[在此處了解有關工具的更多資訊](/docs/tools)。
---
### 型
###
您可以過 `provider`、`model` 和 `small_model` 選項來配置要在 opencode 配置中使用的供商和模型。
您可以過 `provider`、`model` 和 `small_model` 選項來設定要在 opencode 設定中使用的供商和模型。
```json title="opencode.json"
{
@@ -239,9 +235,9 @@ opencode run "Hello world"
}
```
`small_model` 選項為標題生成等輕量級任務配置單獨的模型。默認情況下,如果您的供商可以提供更便宜的模型opencode 會嘗試使用更便宜的模型,否則它會退到您的主模型。
`small_model` 選項為標題生成等輕量級任務設定單獨的模型。預設情況下,如果您的供商可以提供更便宜的模型opencode 會嘗試使用更便宜的模型,否則它會退到您的主模型。
提供者選項可以包括`timeout``setCacheKey`
供應商選項可以包括 `timeout``setCacheKey`
```json title="opencode.json"
{
@@ -257,20 +253,20 @@ opencode run "Hello world"
}
```
- `timeout` - 請求超時以毫秒為單位(默認300000。設為 `false` 以禁用。
- `setCacheKey` - 確保始終為指定的提供者設置緩存密鑰。
- `timeout` - 請求超時以毫秒為單位(預設300000。設為 `false` 以禁用。
- `setCacheKey` - 確保始終為指定的供應商設定快取金鑰。
可以配置[本地模型](/docs/models#local)。 [了解更多](/docs/models)。
可以設定 [本地模型](/docs/models#local)。 [了解更多](/docs/models)。
---
#### 特定於供商的選項
#### 特定於供商的選項
某些供商支除通用`timeout` 和`apiKey` 設之外的其他配置選項。
某些供商支除通用 `timeout` 和 `apiKey` 設之外的其他設定選項。
##### 亞馬遜基岩
##### Amazon Bedrock
Amazon Bedrock 支 AWS 特定配置
Amazon Bedrock 支 AWS 特定設定
```json title="opencode.json"
{
@@ -287,21 +283,21 @@ Amazon Bedrock 支持 AWS 特定配置:
}
```
- `region` - Bedrock 的 AWS 區域(默認為 `AWS_REGION` env var 或 `us-east-1`
- `profile` - 來自 `~/.aws/credentials` 的 AWS 命名配置文件(默認為 `AWS_PROFILE` env var
- `endpoint` - VPC terminal節點的自定義terminal節點 URL。這是使用 AWS 特定術語的通用 `baseURL` 選項的別名。如果兩者都指定,`endpoint` 優先。
- `region` - Bedrock 的 AWS 區域(預設為 `AWS_REGION` env var 或 `us-east-1`
- `profile` - 來自 `~/.aws/credentials` 的 AWS 命名設定檔(預設為 `AWS_PROFILE` env var
- `endpoint` - VPC 終端節點的自定義終端節點 URL。這是使用 AWS 特定術語的通用 `baseURL` 選項的別名。如果兩者都指定,`endpoint` 優先。
:::note
承載令牌(`AWS_BEARER_TOKEN_BEDROCK` 或`/connect`優先於基於配置文件的身驗證。詳情請參閱[認證優先級](/docs/providers#authentication-precedence)。
Bearer Token (`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`) 優先於基於設定檔的身驗證。詳情請參閱 [認證優先級](/docs/providers#authentication-precedence)。
:::
[了解有關 Amazon Bedrock 配置的更多信息](/docs/providers#amazon-bedrock)。
[了解有關 Amazon Bedrock 設定的更多資訊](/docs/providers#amazon-bedrock)。
---
### 主題
您可以過 `theme` 選項在 opencode 配置中配置要使用的主題。
您可以過 `theme` 選項在 opencode 設定中設定要使用的主題。
```json title="opencode.json"
{
@@ -314,9 +310,9 @@ Amazon Bedrock 支持 AWS 特定配置:
---
### Agents
### 代理
您可以過 `agent` 選項為特定任務配置專用代理。
您可以過 `agent` 選項為特定任務設定專用代理。
```jsonc title="opencode.jsonc"
{
@@ -336,13 +332,13 @@ Amazon Bedrock 支持 AWS 特定配置:
}
```
可以使用 `~/.config/opencode/agents/` 或 `.opencode/agents/` 中的 markdown 文件定義代理。 [在這裡了解更多](/docs/agents)。
可以使用 `~/.config/opencode/agents/` 或 `.opencode/agents/` 中的 markdown 檔案定義代理。 [在這裡了解更多](/docs/agents)。
---
### 默認代理
### 預設代理
您可以使用 `default_agent` 選項設置默認代理。當沒有明確指定時,這將定使用哪個代理。
您可以使用 `default_agent` 選項設定預設代理。當沒有明確指定時,這將定使用哪個代理。
```json title="opencode.json"
{
@@ -351,15 +347,15 @@ Amazon Bedrock 支持 AWS 特定配置:
}
```
默認代理必須是主代理(而不是子代理)。這可以是內代理,例如`"build"``"plan"`,或者您定義的[定制代理](/docs/agents)。如果指定的代理不存在或者是子代理opencode 將退到 `"build"` 並發出警告。
預設代理必須是主代理(而不是子代理)。這可以是內代理,例如 `"build"``"plan"`,或者您定義的 [自定義代理](/docs/agents)。如果指定的代理不存在或者是子代理opencode 將退到 `"build"` 並發出警告。
此設適用於所有介面TUI、CLI (`opencode run`)、桌面應用程式和 GitHub Action。
此設適用於所有介面TUI、CLI (`opencode run`)、桌面應用程式和 GitHub Action。
---
### 分享
您可以通過`share`選項配置[分享](/docs/share)功能。
您可以透過 `share` 選項設定 [分享](/docs/share) 功能。
```json title="opencode.json"
{
@@ -370,17 +366,17 @@ Amazon Bedrock 支持 AWS 特定配置:
這需要:
- `"manual"` - 允許通過命令手動享(默認
- `"manual"` - 允許透過指令手動享(預設
- `"auto"` - 自動分享新對話
- `"disabled"` - 完全禁用
- `"disabled"` - 完全禁用
默認情況下,享設為手動模式,您需要使用 `/share` 命令顯式共享對話。
預設情況下,享設為手動模式,您需要使用 `/share` 指令明確分享對話。
---
###
###
您可以通過`command`選項為重複任務配置自定義令。
您可以透過 `command` 選項為重複任務設定自定義令。
```jsonc title="opencode.jsonc"
{
@@ -400,13 +396,13 @@ Amazon Bedrock 支持 AWS 特定配置:
}
```
可以使用 `~/.config/opencode/commands/` 或 `.opencode/commands/` 中的 Markdown 文件定義令。 [在這裡了解更多](/docs/commands)。
可以使用 `~/.config/opencode/commands/` 或 `.opencode/commands/` 中的 Markdown 檔案定義令。 [在這裡了解更多](/docs/commands)。
---
### 按鍵綁定
您可以過 `keybinds` 選項自定義您的按鍵綁定。
您可以過 `keybinds` 選項自定義您的按鍵綁定。
```json title="opencode.json"
{
@@ -430,14 +426,14 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
}
```
如果您不想更新但希望在新版本可用時收到通知,請將`autoupdate` 設置為`"notify"`。
請注意,這僅在未使用 Homebrew 等管理器安裝時才有效。
如果您不想更新但希望在新版本可用時收到通知,請將 `autoupdate` 設定為 `"notify"`。
請注意,這僅在未使用 Homebrew 等套件管理器安裝時才有效。
---
### 格式化程
### 格式化程
您可以通過`formatter`選項配置程式碼格式化程
您可以透過 `formatter` 選項設定程式碼格式化程
```json title="opencode.json"
{
@@ -457,15 +453,15 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
}
```
[在此處了解有關格式化程的更多信息](/docs/formatters)。
[在此處了解有關格式化程的更多資訊](/docs/formatters)。
---
### 權限
默認情況下opencode **允許所有操作**,無需明確批准。您可以使用`permission` 選項更改此設
預設情況下opencode **允許所有操作**,無需明確批准。您可以使用 `permission` 選項更改此設
例如,要確保 `edit` 和 `bash` 工具需要用戶批准:
例如,要確保 `edit` 和 `bash` 工具需要使用者批准:
```json title="opencode.json"
{
@@ -477,13 +473,13 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
}
```
[在此處了解有關權限的更多信息](/docs/permissions)。
[在此處了解有關權限的更多資訊](/docs/permissions)。
---
### 壓
### 壓
您可以過 `compaction` 選項控制上下文壓縮行為。
您可以過 `compaction` 選項控制上下文壓縮行為。
```json title="opencode.json"
{
@@ -495,14 +491,14 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
}
```
- `auto` - 當上下文已滿時自動壓縮會話(默認值:`true`)。
- `prune` - 刪除舊工具輸出以保存令牌(默認值:`true`)。
- `auto` - 當上下文已滿時自動壓縮工作階段(預設值:`true`)。
- `prune` - 刪除舊工具輸出以節省 tokens預設值:`true`)。
---
### 守望者
### 觀察者 (Watcher)
您可以通過`watcher`選項配置文件觀察器忽略模式。
您可以透過 `watcher` 選項設定檔案觀察器忽略模式。
```json title="opencode.json"
{
@@ -513,13 +509,13 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
}
```
模式遵循 glob 語法。使用它可以從文件監視中排除嘈雜的目錄。
模式遵循 glob 語法。使用它可以從檔案監視中排除嘈雜的目錄。
---
### MCP服
### MCP服器
您可以過 `mcp` 選項配置要使用的 MCP 服器。
您可以過 `mcp` 選項設定要使用的 MCP 服器。
```json title="opencode.json"
{
@@ -532,11 +528,11 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
---
### 插件
### 外掛
[插件](/docs/plugins) 使用自定義工具、掛鉤和集成擴展 opencode。
[外掛](/docs/plugins) 使用自定義工具、掛鉤和整合擴展 opencode。
插件文件放置在`.opencode/plugins/` 或`~/.config/opencode/plugins/` 中。您可以過 `plugin` 選項從 npm 加載插件
外掛檔案放置在 `.opencode/plugins/` 或 `~/.config/opencode/plugins/` 中。您可以過 `plugin` 選項從 npm 載入外掛
```json title="opencode.json"
{
@@ -549,9 +545,9 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
---
### 指示
### 指示 (Instructions)
您可以過 `instructions` 選項配置您正在使用的型號的說明
您可以過 `instructions` 選項設定您正在使用的模型的指示
```json title="opencode.json"
{
@@ -560,14 +556,13 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
}
```
這需要指令文件的路徑和全模式數組。 [了解更多
關於規則在這裡](/docs/rules)。
這需要指示檔案的路徑和全模式陣列。 [了解更多關於規則在這裡](/docs/rules)。
---
### 殘疾服務提供者
### 禁用供應商
您可以過 `disabled_providers` 選項禁用自動加載的提供商。當您想要阻止加載某些提供商(即使其憑可用)時,這非常有用。
您可以過 `disabled_providers` 選項禁用自動載入的供應商。當您想要阻止載入某些供應商(即使其憑可用)時,這非常有用。
```json title="opencode.json"
{
@@ -577,20 +572,20 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
```
:::note
`disabled_providers` 優先於`enabled_providers`。
`disabled_providers` 優先於 `enabled_providers`。
:::
`disabled_providers` 選項接受提供者 ID 數組。當提供者被禁用時:
`disabled_providers` 選項接受供應商 ID 陣列。當供應商被禁用時:
- 即使設了環境變也不會載。
- 即使過 `/connect` 命令配置 API 鑰,也不會載它。
- 提供商的型號不會出現在型選擇列表中。
- 即使設了環境變也不會載
- 即使過 `/connect` 指令設定 API 鑰,也不會載它。
- 供應商的模型不會出現在型選擇列表中。
---
### 啟用的供商
### 啟用的供
您可以過 `enabled_providers` 選項指定供商的允許列表。設後,僅啟用指定的供商,所有其他供商將被忽略。
您可以過 `enabled_providers` 選項指定供商的允許清單。設後,僅啟用指定的供商,所有其他供商將被忽略。
```json title="opencode.json"
{
@@ -599,13 +594,13 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
}
```
當您想要限制 opencode 僅使用特定的供商而不是一一禁用它們時,這非常有用。
當您想要限制 opencode 僅使用特定的供商而不是一一禁用它們時,這非常有用。
:::note
`disabled_providers` 優先於`enabled_providers`。
`disabled_providers` 優先於 `enabled_providers`。
:::
如果某個供商同時出現在`enabled_providers` 和`disabled_providers` 中,則`disabled_providers` 優先考慮向後容性。
如果某個供商同時出現在 `enabled_providers` 和 `disabled_providers` 中,則 `disabled_providers` 優先考慮向後容性。
---
@@ -626,15 +621,15 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
---
## 變
## 變
您可以在配置文件中使用變替換來引用環境變量和文件內容。
您可以在設定檔中使用變替換來引用環境變數和檔案內容。
---
### 環境變
### 環境變
使用`{env:VARIABLE_NAME}`替換環境變
使用 `{env:VARIABLE_NAME}` 替換環境變
```json title="opencode.json"
{
@@ -651,13 +646,13 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
}
```
如果未設環境變,它將被替換為空字串。
如果未設環境變,它將被替換為空字串。
---
### 文件
### 檔案
使用 `{file:path/to/file}` 替換文件的內容:
使用 `{file:path/to/file}` 替換檔案的內容:
```json title="opencode.json"
{
@@ -673,13 +668,13 @@ opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoup
}
```
文件路徑可以是:
檔案路徑可以是:
- 相對於配置文件目錄
- 相對於設定檔目錄
- 或者以 `/` 或 `~` 開頭的絕對路徑
這些對於:
- 將 API 鑰等敏感數據保存在單獨的文件中。
- 包含大型指令文件,而不會弄亂您的配置
- 跨多個配置文件共享通用配置片段。
- 將 API 鑰等敏感數據保存在單獨的檔案中。
- 包含大型指示檔案,而不會弄亂您的設定
- 跨多個設定檔共享通用設定片段。

View File

@@ -1,30 +1,30 @@
---
title: 定制工具
description: 建LLM可以在opencode中調用的工具。
title: 自定義工具
description: 建LLM 可以在 opencode 中呼叫的工具。
---
自定義工具是您建的函LLM 可以在對話期間調用。它們與 opencode 的 [內工具](/docs/tools) 一起工作,例如 `read`、`write` 和 `bash`。
自定義工具是您建的函LLM 可以在對話期間呼叫。它們與 opencode 的 [內工具](/docs/tools) 一起工作,例如 `read`、`write` 和 `bash`。
---
## 建工具
## 建工具
工具定義為 **TypeScript** 或 **JavaScript** 文件。但是,工具定義可以調用用 **任何語言** 編寫的腳本 - TypeScript 或 JavaScript 僅用於工具定義本身。
工具定義為 **TypeScript** 或 **JavaScript** 檔案。但是,工具定義可以呼叫用 **任何語言** 編寫的指令碼 - TypeScript 或 JavaScript 僅用於工具定義本身。
---
### 地點
### 位置
它們可以定義為:
- 過將它們放在項目的 `.opencode/tools/` 目錄中來本地進行。
- 或者在全範圍內,將它們放置在 `~/.config/opencode/tools/` 中。
- 過將它們放在專案的 `.opencode/tools/` 目錄中來本地進行。
- 或者在全範圍內,將它們放置在 `~/.config/opencode/tools/` 中。
---
### 結構
建工具的最簡單方法是使用 `tool()` 助程,它提供類型安全和驗證。
工具的最簡單方法是使用 `tool()` 助程,它提供類型安全和驗證。
```ts title=".opencode/tools/database.ts" {1}
import { tool } from "@opencode-ai/plugin"
@@ -41,13 +41,13 @@ export default tool({
})
```
**文件名**成為**工具名稱**。以上建了一個 `database` 工具。
**名**成為**工具名稱**。以上建了一個 `database` 工具。
---
#### 每個文件多個工具
#### 每個檔案多個工具
可以從單個文件導出多個工具。每個出都會成為**一個單獨的工具**,名稱為**`<filename>_<exportname>`**
可以從單個檔案匯出多個工具。每個出都會成為**一個單獨的工具**,名稱為 **`<filename>_<exportname>`**
```ts title=".opencode/tools/math.ts"
import { tool } from "@opencode-ai/plugin"
@@ -75,13 +75,13 @@ export const multiply = tool({
})
```
這將建兩個工具:`math_add` 和`math_multiply`。
這將建兩個工具:`math_add` 和 `math_multiply`。
---
### 論據
### 參數 (Arguments)
您可以使用`tool.schema`(即[佐德](https://zod.dev))來定義參數類型。
您可以使用 `tool.schema`(即 [Zod](https://zod.dev))來定義參數類型。
```ts "tool.schema"
args: {
@@ -89,7 +89,7 @@ args: {
}
```
可以直接導入[佐德](https://zod.dev)並返回一個普通對象
可以直接匯入 [Zod](https://zod.dev) 並返回一個一般物件
```ts {6}
import { z } from "zod"
@@ -108,9 +108,9 @@ export default {
---
### 情境
### 上下文 (Context)
工具接收有關當前會話的上下文:
工具接收有關當前工作階段的上下文:
```ts title=".opencode/tools/project.ts" {8}
import { tool } from "@opencode-ai/plugin"
@@ -126,18 +126,18 @@ export default tool({
})
```
使用 `context.directory` 作為會話工作目錄。
使用 `context.directory` 作為工作階段工作目錄。
使用 `context.worktree` 作為 git 工作樹根。
---
##
##
### 用Python編寫一個工具
### 用 Python 編寫一個工具
您可以用任何您想要的語言編寫工具。下面是一個使用 Python 將兩個數字相加的例。
您可以用任何您想要的語言編寫工具。下面是一個使用 Python 將兩個數字相加的例。
首先,將該工具建為 Python 腳本
首先,將該工具建為 Python 指令碼
```python title=".opencode/tools/add.py"
import sys
@@ -147,7 +147,7 @@ b = int(sys.argv[2])
print(a + b)
```
然後創建調用它的工具定義:
然後建立呼叫它的工具定義:
```ts title=".opencode/tools/python-add.ts" {10}
import { tool } from "@opencode-ai/plugin"
@@ -167,4 +167,4 @@ export default tool({
})
```
這裡我們使用 [`Bun.$`](https://bun.com/docs/runtime/shell) 用程序來運行 Python 腳本
這裡我們使用 [`Bun.$`](https://bun.com/docs/runtime/shell) 用程式來執行 Python 指令碼

View File

@@ -1,52 +1,52 @@
---
title: 生態系統
description: 使用 opencode 構建的項目和集成
description: 使用 opencode 構建的專案和整合
---
基於 opencode 的社區項目集合。
基於 opencode 的社群專案集合。
:::note
想要將您的 opencode 相關項目添加到此列表中嗎?提交 PR。
想要將您的 opencode 相關專案添加到此列表中嗎?提交 PR。
:::
可以查看[awesome-opencode](https://github.com/awesome-opencode/awesome-opencode)[opencode.cafe](https://opencode.cafe),這是一個聚合生態系統和社的社
可以查看 [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode)[opencode.cafe](https://opencode.cafe),這是一個聚合生態系統和社的社
---
## 插件
## 外掛
| 名稱 | 描述 |
| --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | 使用 git 同步和時預覽在隔離的 Daytona 沙箱中自動行 opencode 會話 |
| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | 自動注入 Helicone 會話標頭以進行請求分組 |
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | 使用查找工具將 TypeScript/Svelte 類型自動注入到文件讀取中 |
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | 使用您的 ChatGPT Plus/Pro 訂閱而不是 API 積分 |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | 使用您現有的 Gemini 計而不是 API 計費 |
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | 使用 Antigravity 的免費模型代替 API 計費 |
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | 具有淺克隆和自動分配端口的多分支開發容器隔離 |
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth 插件,支 Google 搜和更強大的 API 處理 |
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | 過修剪過時的工具輸出來化代幣使用 |
| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | 為具有 Google 接地風格的受支持提供商添加本機網絡搜索支持 |
| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | 使 AI 代理能夠在 PTY 中運行後台進程,並向其發送互式輸入。 |
| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | 非互式 shell 令說明 - 防止依賴 TTY 的操作掛起 |
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | 使用 Wakatime 跟踪 opencode 使用情況 |
| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | 清理 LLM 生成的 Markdown 表格 |
| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 使用 Morph Fast Apply API 和惰性編輯標記將程式碼編輯速度提高 10 倍 |
| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | 後台代理、預構建的 LSP/AST/MCP 工具、精選代理、容 Claude Code |
| [opencode-notificator](https://github.com/panta82/opencode-notificator) | opencode 會話的桌面通知和聲音警報 |
| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | 針對權限、完成和錯誤事件的桌面通知和聲音警報 |
| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | 基於 opencode 上下文的 AI 支的自動 Zellij 會話命名 |
| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | 允許 opencode 代理過技能發現和注入按需延遲加載提示 |
| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | 使用超級內存跨會話持久內存 |
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | 具有視覺註釋和私人/離線享的互式計審查 |
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | 將opencode/令擴展為具有精細流程控制的強大編排系統 |
| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | 使用帶有 cron 語法的 launchd (Mac) 或 systemd (Linux) 安排重複作業 |
| [micode](https://github.com/vtemian/micode) | 結構化頭腦風暴 → 計 → 實具有會議連續性的工作流程 |
| [octto](https://github.com/vtemian/octto) | 用於過多問題形式進行 AI 頭腦風暴的交互式瀏覽器 UI |
| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | 具有步委託和上下文持久性的 Claude Code 風格後台代理 |
| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | opencode 的本機操作系統通知 了解任務何時完成 |
| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | 捆綁的多代理編排工具 16 個組件,一次安裝 |
| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | opencode 的零摩擦 git 工作樹 |
| 名稱 | 描述 |
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | 使用 git 同步和時預覽在隔離的 Daytona 沙箱中自動行 opencode 工作階段 |
| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | 自動注入 Helicone 工作階段標頭以進行請求分組 |
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | 使用搜尋工具將 TypeScript/Svelte 類型自動注入到檔案讀取中 |
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | 使用您的 ChatGPT Plus/Pro 訂閱而不是 API 額度 |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | 使用您現有的 Gemini 計而不是 API 計費 |
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | 使用 Antigravity 的免費模型代替 API 計費 |
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | 具有淺層複製和自動分配連接埠的多分支開發容器隔離 |
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth 外掛,支 Google 搜和更強大的 API 處理 |
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | 過修剪過時的工具輸出來最佳化代幣使用 |
| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | 為具有 Google Grounding 風格的受支援供應商添加原生網路搜尋支援 |
| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | 使 AI 代理能夠在 PTY 中執行背景處理程序,並向其發送互式輸入。 |
| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | 非互式 shell 令說明 - 防止依賴 TTY 的操作卡住 |
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | 使用 Wakatime 追蹤 opencode 使用情況 |
| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | 清理 LLM 生成的 Markdown 表格 |
| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 使用 Morph Fast Apply API 和惰性編輯標記將程式碼編輯速度提高 10 倍 |
| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | 背景代理、預先建置的 LSP/AST/MCP 工具、精選代理、容 Claude Code |
| [opencode-notificator](https://github.com/panta82/opencode-notificator) | opencode 工作階段的桌面通知和聲音警報 |
| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | 針對權限、完成和錯誤事件的桌面通知和聲音警報 |
| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | 基於 opencode 上下文的 AI 支的自動 Zellij 工作階段命名 |
| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | 允許 opencode 代理過技能發現和注入按需延遲載入提示 |
| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | 使用超級記憶體跨工作階段持久記憶體 |
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | 具有視覺註釋和私人/離線享的互式計審查 |
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | 將 opencode/令擴展為具有精細流程控制的強大編排系統 |
| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | 使用帶有 cron 語法的 launchd (Mac) 或 systemd (Linux) 安排重複作業 |
| [micode](https://github.com/vtemian/micode) | 結構化腦力激盪 → 計 → 實具有會議連續性的工作流程 |
| [octto](https://github.com/vtemian/octto) | 用於過多問題形式進行 AI 腦力激盪的互動式瀏覽器 UI |
| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | 具有非同步委託和上下文持久性的 Claude Code 風格背景代理 |
| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | opencode 的原生作業系統通知 了解任務何時完成 |
| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | 捆綁的多代理編排工具 16 個組件,一次安裝 |
| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | opencode 的零摩擦 git 工作樹 |
---
@@ -54,23 +54,23 @@ description: 使用 opencode 構建的項目和集成。
| 名稱 | 描述 |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------- |
| [kimaki](https://github.com/remorses/kimaki) | 用於控制 opencode 會話的 Discord 機器人,基於 SDK 構建 |
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Neovim 插件,用於編輯器感知提示,基於 API 構建 |
| [portal](https://github.com/hosenur/portal) | 過 Tailscale/VPN 實現 opencode 的動優先 Web UI |
| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | 用於構建 opencode 插件的模板 |
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Neovim opencode 前端 - 基於 terminal 的 AI 碼代理 |
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Vercel AI SDK 供商,用於過 @opencode-ai/sdk 使用 opencode |
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | opencode 的 Web/桌面應用程式和 VS Code 擴 |
| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | 在 Obsidian 的 UI 中嵌入 opencode 的 Obsidian 插件 |
| [OpenWork](https://github.com/different-ai/openwork) | Claude Cowork 的開源替代方案,由 opencode 提供支 |
| [ocx](https://github.com/kdcokenny/ocx) | opencode 擴管理器具有可移植、隔離的配置文件。 |
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | opencode 的桌面、Web、動和遠客戶端應用程式 |
| [kimaki](https://github.com/remorses/kimaki) | 用於控制 opencode 工作階段的 Discord 機器人,基於 SDK 構建 |
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Neovim 外掛,用於編輯器感知提示,基於 API 構建 |
| [portal](https://github.com/hosenur/portal) | 過 Tailscale/VPN 實現 opencode 的動優先 Web UI |
| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | 用於構建 opencode 外掛的範本 |
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Neovim opencode 前端 - 基於終端機的 AI 程式碼代理 |
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Vercel AI SDK 供商,用於過 @opencode-ai/sdk 使用 opencode |
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | opencode 的 Web/桌面應用程式和 VS Code 擴充功能 |
| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | 在 Obsidian 的 UI 中嵌入 opencode 的 Obsidian 外掛 |
| [OpenWork](https://github.com/different-ai/openwork) | Claude Cowork 的開源替代方案,由 opencode 提供支 |
| [ocx](https://github.com/kdcokenny/ocx) | opencode 擴充功能管理器具有可攜式、隔離的設定檔。 |
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | opencode 的桌面、Web、動和遠客戶端應用程式 |
---
## Agents
## 代理
| 名稱 | 描述 |
| ----------------------------------------------------------------- | ---------------------------------------- |
| [Agentic](https://github.com/Cluster444/agentic) | 用於結構化開發的模塊化AI代理和命令 |
| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | 用於增強工作流程的配置、提示、代理和插件 |
| [Agentic](https://github.com/Cluster444/agentic) | 用於結構化開發的模組化 AI 代理和指令 |
| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | 用於增強工作流程的設定、提示、代理和外掛 |

View File

@@ -1,36 +1,35 @@
---
title: 企業
title: 企業
description: 在您的組織中安全地使用 opencode。
---
import config from "../../../../config.mjs"
export const email = `mailto:${config.email}`
opencode Enterprise 適用於希望確保其程式碼和數據永遠不會離開其基礎設施的組織。它可以過使用與 SSO 和內部 AI 網關集成的集中式配置來實現此目的。
opencode Enterprise 適用於希望確保其程式碼和資料永遠不會離開其基礎架構的組織。它可以過使用與 SSO 和內部 AI 閘道整合的集中式設定來實現此目的。
:::note
opencode 不儲您的任何程式碼或上下文數據
opencode 不儲您的任何程式碼或上下文資料
:::
要開始使用 opencode Enterprise
1. 與您的團隊進行內部試
2. **<a href={email}>聯我們</a>**討論定價和實選項。
1. 與您的團隊進行內部試
2. **<a href={email}>聯我們</a>**討論定價和實選項。
---
## 審判
## 試用
opencode 是開源的,不儲您的任何程式碼或上下文數據,因此您的開發人員只需 [開始](/docs/) 並進行試用。
opencode 是開源的,不儲您的任何程式碼或上下文資料,因此您的開發人員只需 [開始使用](/docs/) 並進行試用。
---
### 數據處理
### 資料處理
**opencode 不會儲您的程式碼或上下文數據。 ** 所有處理都在本地進行或過直接 API 調用您的 AI 供商。
**opencode 不會儲您的程式碼或上下文資料。** 所有處理都在本地進行或過直接 API 呼叫您的 AI 供商。
這意味著只要您使用您信任的供商或內部提供商
AI網關您可以安全使用opencode。
這意味著只要您使用您信任的供商或內部 AI 閘道,您就可以安全使用 opencode。
這裡唯一需要注意的是可選的 `/share` 功能。
@@ -38,9 +37,9 @@ AI網關您可以安全使用opencode。
#### 分享對話
如果用戶啟用 `/share` 功能,對話和與之關聯的數據將被發送到我們用於在 opencode.ai 上託管這些享頁面的服務。
如果使用者啟用 `/share` 功能,對話和與之關聯的資料將被發送到我們用於在 opencode.ai 上託管這些享頁面的服務。
數據當前過我們的 CDN 邊緣網提供服務,並緩存在用戶附近的邊緣。
資料當前過我們的 CDN 邊緣網提供服務,並快取在使用者附近的邊緣。
我們建議您在試用時禁用此功能。
@@ -51,120 +50,118 @@ AI網關您可以安全使用opencode。
}
```
[了解更多關於分享的信息](/docs/share)。
[了解更多關於分享的資訊](/docs/share)。
---
### 程式碼所有權
**您擁有 opencode 生成的所有程式碼。 ** 沒有許可限製或所有權聲明。
**您擁有 opencode 生成的所有程式碼。** 沒有授權限制或所有權聲明。
---
## 定價
我們對 opencode Enterprise 使用單機模型。如果您有自己的 LLM 網關,我們不會對使用的令牌收取費用。有關定價和實選項的更多詳細信息,請**<a href={email}>聯我們</a>**。
我們對 opencode Enterprise 使用按席位計費模式。如果您有自己的 LLM 閘道,我們不會對使用的 Tokens 收取費用。有關定價和實選項的更多詳細資訊,請**<a href={email}>聯我們</a>**。
---
## 部署
完成試用並準備好使用 opencode 後,請訪問:
您的組織,您可以**<a href={email}>聯我們</a>**進行討論
定價和實選項。
您的組織,您可以**<a href={email}>聯我們</a>**進行討論
定價和實選項。
---
### 中央配置
### 中央設定
我們可以將 opencode 設為為您的整個組織使用單一的中央配置
我們可以將 opencode 設為為您的整個組織使用單一的中央設定
這種集中式配置可以與您的 SSO 提供商集成,並確保所有用戶僅訪問您的內部 AI 網關
這種集中式設定可以與您的 SSO 供應商整合,並確保所有使用者僅存取您的內部 AI 閘道
---
### 單點登錄集成
### 單一登入整合
過中央配置opencode 可以與您組織的 SSO 提供商集成以進行身份​​驗證。
過中央設定opencode 可以與您組織的 SSO 供應商整合以進行身驗證。
這使得 opencode 能夠過現有的身管理系統取內部 AI 網關的憑
這使得 opencode 能夠過現有的身管理系統取內部 AI 閘道的憑
---
### 內部AI網關
### 內部 AI 閘道
過中央配置opencode 還可以配置為僅使用您的內部 AI 網關
過中央設定opencode 還可以設定為僅使用您的內部 AI 閘道
您還可以禁用所有其他 AI 供商,確保所有請求都通過組織准的基礎設施
您還可以禁用所有其他 AI 供商,確保所有請求都通過組織准的基礎架構
---
### 自託管
### 自託管
雖然我們建議禁用享頁面以確保您的數據永遠不會離開
您的組織,我們還可以幫助您在您的基礎設施上自行託管它們。
雖然我們建議禁用享頁面以確保您的資料永遠不會離開您的組織,我們還可以幫助您在您的基礎架構上自行託管它們。
目前這已在我們的路線圖上。如果您有興趣,**<a href={email}>讓我們知道</a>**。
---
## 常問題
## 常問題
<details>
<summary>什麼是 opencode Enterprise </summary>
opencode Enterprise 適用於希望確保其程式碼和數據永遠不會離開其基礎設施的組織。它可以過使用與 SSO 和內部 AI 網關集成的集中式配置來實現此目的。
opencode Enterprise 適用於希望確保其程式碼和資料永遠不會離開其基礎架構的組織。它可以過使用與 SSO 和內部 AI 閘道整合的集中式設定來實現此目的。
</details>
<details>
<summary>如何開始使用 opencode Enterprise </summary>
只需與您的團隊進行內部試用即可。 opencode 默認情況下不儲您的程式碼或上下文數據,因此可以輕鬆上手。
只需與您的團隊進行內部試用即可。 opencode 預設情況下不儲您的程式碼或上下文資料,因此可以輕鬆上手。
然後**<a href={email}>聯我們</a>**討論定價和實選項。
然後**<a href={email}>聯我們</a>**討論定價和實選項。
</details>
<details>
<summary>企業定價如何運作? </summary>
我們提供按席位企業定價。如果您有自己的 LLM 網關,我們不會對使用的令牌收取費用。如需了解更多詳情,請**<a href={email}>聯我們</a>**,獲取根據您組織的需求定制的報價。
我們提供按席位企業定價。如果您有自己的 LLM 閘道,我們不會對使用的 Tokens 收取費用。如需了解更多詳情,請**<a href={email}>聯我們</a>**,獲取根據您組織的需求客製化的報價。
</details>
<details>
<summary>opencode Enterprise 保證我的數據安全嗎? </summary>
<summary>opencode Enterprise 保證我的資料安全嗎? </summary>
是的。 opencode 不儲您的程式碼或上下文數據。所有處理都在本地進行或過直接 API 調用您的 AI 供商。過中央配置和 SSO 集成,您的數據在組織的基礎架構中保持安全。
是的。 opencode 不儲您的程式碼或上下文資料。所有處理都在本地進行或過直接 API 呼叫您的 AI 供商。過中央設定和 SSO 整合,您的資料在組織的基礎架構中保持安全。
</details>
<details>
<summary>我們可以使用自己的私有 NPM 註冊表嗎? </summary>
<summary>我們可以使用自己的私有 NPM Registry 嗎? </summary>
opencode 過 Bun 的本機 `.npmrc` 文件支持來支私有 npm 註冊表。如果您的組織使用私有註冊表,例如 JFrog Artifactory、Nexus 或類似的註冊表,請確保開發人員在行 opencode 之前經過身驗證。
opencode 過 Bun 的原生 `.npmrc` 檔案支援來支私有 npm Registry。如果您的組織使用私有 Registry,例如 JFrog Artifactory、Nexus 或類似的 Registry,請確保開發人員在行 opencode 之前經過身驗證。
要使用您的私有註冊表設置身份驗證:
要使用您的私有 Registry 設定身分驗證:
```bash
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
```
這將建帶有身驗證詳細信息的`~/.npmrc`。 opencode 會自動
拿起這個。
這將建帶有身驗證詳細資訊的 `~/.npmrc`。 opencode 會自動讀取這個。
:::caution
行 opencode 之前,您必須登私有註冊表
行 opencode 之前,您必須登私有 Registry
:::
或者,您可以手動配置 `.npmrc` 文件
或者,您可以手動設定 `.npmrc` 檔案
```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}
```
開發人員必須在行 opencode 之前登私有註冊表,以確保可以從企業註冊表安裝軟件包
開發人員必須在行 opencode 之前登私有 Registry以確保可以從企業 Registry 安裝套件
</details>

View File

@@ -1,62 +1,62 @@
---
title: 格式化程
description: opencode 使用特定於語言的格式化程
title: 格式化程
description: opencode 使用特定於語言的格式化程
---
使用特定於語言的格式化程編寫或編輯文件opencode 會自動格式化文件。這可確保生成的程式碼遵循項目的程式碼風格。
使用特定於語言的格式化程編寫或編輯檔案opencode 會自動格式化檔案。這可確保生成的程式碼遵循專案的程式碼風格。
---
## 內建
opencode 附帶了多個適用於流行語言和框架的內格式化程。下面是格式化程、支持的文件擴展名以及所需的令或配置選項的列表。
opencode 附帶了多個適用於流行語言和框架的內格式化程。下面是格式化程、支援的檔案副檔名以及所需的令或設定選項的列表。
| 格式化程 | 擴展 | 要求 |
| -------------------- | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| gofmt | .go | `gofmt` 令可用 |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` 令可用 |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, 和 [更多](https://prettier.io/docs/en/index.html) | `prettier` 中有 `package.json` 依賴 |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, 和 [更多](https://biomejs.dev/) | `biome.json(c)` 配置文件 |
| zig | .zig, .zon | `zig` 令可用 |
| clang-format | .c, .cpp, .h, .hpp, .ino, 和 [更多](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` 配置文件 |
| ktlint | .kt, .kts | `ktlint` 令可用 |
| ruff | .py, .pyi | `ruff` 令可用并配置完成 |
| rustfmt | .rs | `rustfmt` 令可用 |
| cargofmt | .rs | `cargo fmt` 令可用 |
| uv | .py, .pyi | `uv` 令可用 |
| rubocop | .rb, .rake, .gemspec, .ru | `rubocop` 令可用 |
| standardrb | .rb, .rake, .gemspec, .ru | `standardrb` 令可用 |
| htmlbeautifier | .erb, .html.erb | `htmlbeautifier` 令可用 |
| air | .R | `air` 令可用 |
| dart | .dart | `dart` 令可用 |
| ocamlformat | .ml, .mli | `ocamlformat` 令可用,且存在 `.ocamlformat` 配置文件 |
| terraform | .tf, .tfvars | `terraform` 令可用 |
| gleam | .gleam | `gleam` 令可用 |
| nixfmt | .nix | `nixfmt` 令可用 |
| shfmt | .sh, .bash | `shfmt` 令可用 |
| pint | .php | `laravel/pint` 中有 `composer.json` 依賴 |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | `oxfmt` 中有 `package.json` 依賴且啟用[實驗環境變旗標](/docs/cli/#experimental) |
| ormolu | .hs | `ormolu` 令可用 |
| 格式化程 | 副檔名 | 要求 |
| -------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| gofmt | .go | `gofmt` 令可用 |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` 令可用 |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, 和 [更多](https://prettier.io/docs/en/index.html) | `prettier` 中有 `package.json` 相依套件 |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, 和 [更多](https://biomejs.dev/) | `biome.json(c)` 設定檔 |
| zig | .zig, .zon | `zig` 令可用 |
| clang-format | .c, .cpp, .h, .hpp, .ino, 和 [更多](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` 設定檔 |
| ktlint | .kt, .kts | `ktlint` 令可用 |
| ruff | .py, .pyi | `ruff` 令可用並設定完成 |
| rustfmt | .rs | `rustfmt` 令可用 |
| cargofmt | .rs | `cargo fmt` 令可用 |
| uv | .py, .pyi | `uv` 令可用 |
| rubocop | .rb, .rake, .gemspec, .ru | `rubocop` 令可用 |
| standardrb | .rb, .rake, .gemspec, .ru | `standardrb` 令可用 |
| htmlbeautifier | .erb, .html.erb | `htmlbeautifier` 令可用 |
| air | .R | `air` 令可用 |
| dart | .dart | `dart` 令可用 |
| ocamlformat | .ml, .mli | `ocamlformat` 令可用,且存在 `.ocamlformat` 設定檔 |
| terraform | .tf, .tfvars | `terraform` 令可用 |
| gleam | .gleam | `gleam` 令可用 |
| nixfmt | .nix | `nixfmt` 令可用 |
| shfmt | .sh, .bash | `shfmt` 令可用 |
| pint | .php | `laravel/pint` 中有 `composer.json` 相依套件 |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | `oxfmt` 中有 `package.json` 相依套件且啟用[實驗環境變旗標](/docs/cli/#experimental) |
| ormolu | .hs | `ormolu` 令可用 |
因此,如果您的項目的`prettier`中有`package.json`opencode將自動使用它。
因此,如果您的專案的 `package.json` 中有 `prettier`opencode 將自動使用它。
---
## 它是如何運作的
當 opencode 寫入或編輯文件時,它:
當 opencode 寫入或編輯檔案時,它:
1. 根據所有啟用的格式化程檢查文件擴展名。
2. 對文件運行適當的格式化程序命令。
3. 自動用格式更
1. 根據所有啟用的格式化程檢查檔案副檔名。
2. 對檔案執行適當的格式化程式指令。
3. 自動用格式更。
此過程在後台進行,確保無需任何手動步驟即可維護您的程式碼樣式。
此過程在背景進行,確保無需任何手動步驟即可維護您的程式碼樣式。
---
## 配置
## 設定
您可以過 opencode 配置中的 `formatter` 部分自定義格式化程
您可以過 opencode 設定中的 `formatter` 部分自定義格式化程
```json title="opencode.json"
{
@@ -65,22 +65,22 @@ opencode 附帶了多個適用於流行語言和框架的內置格式化程序
}
```
每個格式化程序配置支持以下內容:
每個格式化程式設定支援以下內容:
| 物業 | 類型 | 描述 |
| ------------- | -------- | ---------------------------------- |
| `disabled` | 布 | 將其設為 `true` 以禁用格式化程 |
| `command` | 字串[] | 格式化行的令 |
| `environment` | 對象 | 行格式化程時要設的環境變 |
| `extensions` | 字串[] | 此格式化程應處理的文件擴展名 |
| 屬性 | 類型 | 描述 |
| ------------- | ------ | ---------------------------------- |
| `disabled` | 布林值 | 將其設為 `true` 以禁用格式化程 |
| `command` | 字串[] | 格式化行的令 |
| `environment` | 物件 | 行格式化程時要設的環境變 |
| `extensions` | 字串[] | 此格式化程應處理的檔案副檔名 |
讓我們看一些例子。
---
### 禁用格式化程
### 禁用格式化程
要全禁用**所有**格式化程,請將`formatter`設置為`false`
要全禁用**所有**格式化程,請將 `formatter` 設定為 `false`
```json title="opencode.json" {3}
{
@@ -89,7 +89,7 @@ opencode 附帶了多個適用於流行語言和框架的內置格式化程序
}
```
要禁用**特定**格式化程,請將`disabled`設置為`true`
要禁用**特定**格式化程,請將 `disabled` 設定為 `true`
```json title="opencode.json" {5}
{
@@ -104,9 +104,9 @@ opencode 附帶了多個適用於流行語言和框架的內置格式化程序
---
### 自定義格式化程
### 自定義格式化程
您可以覆蓋內置格式化程序或通過指定令、環境變量和文件擴展名添加新格式化程
您可以覆寫內建格式化程式或透過指定令、環境變數和檔案副檔名新增新格式化程
```json title="opencode.json" {4-14}
{
@@ -127,4 +127,4 @@ opencode 附帶了多個適用於流行語言和框架的內置格式化程序
}
```
令中的 **`$FILE` 佔位符** 將替換為正在格式化的文件的路徑。
令中的 **`$FILE` 預留位置** 將替換為正在格式化的檔案的路徑。

View File

@@ -1,43 +1,43 @@
---
title: GitHub
description: 在 GitHub 問題和拉取請求中使用 opencode。
description: 在 GitHub Issues 和拉取請求中使用 opencode。
---
opencode 與您的 GitHub 工作流程集成。在評論中提及`/opencode` 或`/oc`opencode 將在您的 GitHub Actions 運行器中執行任務。
opencode 與您的 GitHub 工作流程整合。在評論中提及 `/opencode` 或 `/oc`opencode 將在您的 GitHub Actions Runner 中執行任務。
---
## 特徵
## 功能
- **分類問題**:要求 opencode 調查問題並向您解釋。
- **修復和實**:要求 opencode 修復問題或實功能。它將在一個新分支中工作並提交包含所有更的 PR。
- **安全**opencode 在 GitHub 的運行器中運行。
- **修復和實**:要求 opencode 修復問題或實功能。它將在一個新分支中工作並提交包含所有更的 PR。
- **安全**opencode 在 GitHub 的 Runner 中執行。
---
## 安裝
在 GitHub 儲庫中的項目中運行以下令:
在 GitHub 儲庫中的專案中執行以下令:
```bash
opencode github install
```
這將引導您完成安裝 GitHub 應用程式、建工作流程和設置機密
這將引導您完成安裝 GitHub 應用程式、建工作流程和設定 Secrets
---
### 手動設
### 手動設
或者您可以手動設
或者您可以手動設
1. Error 500 (Server Error)!!1500.Thats an error.There was an error. Please try again later.Thats all we know.
1. **安裝 GitHub 應用程式**
前往[**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent)。確保它已安裝在目標儲庫上。
前往 [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent)。確保它已安裝在目標儲庫上。
2. **添加工作流程**
2. **新增工作流程**
將以下工作流程文件添加到存儲庫中的 `.github/workflows/opencode.yml` 中。確保在`model`中設適當的`env`和所需的API鑰。
將以下工作流程檔案新增到儲存庫中的 `.github/workflows/opencode.yml` 中。確保在 `env` 中設適當的 `model` 和所需的 API鑰。
```yml title=".github/workflows/opencode.yml" {24,26}
name: opencode
@@ -73,21 +73,21 @@ opencode github install
# github_token: xxxx
```
3. Error 500 (Server Error)!!1500.Thats an error.There was an error. Please try again later.Thats all we know.
3. **設定 Secrets**
在您的組織或項目的**設置**中,展開左側的**秘密和變量**,然後選擇**操作**。並添加所需的 API 鑰。
在您的組織或專案的 **Settings** 中,展開左側的 **Secrets and variables**,然後選擇 **Actions**。並新增所需的 API 鑰。
---
## 配置
## 設定
- `model`:與 opencode 一起使用的模型。採用`provider/model` 格式。這是**必需的**。
- `agent`: The agent to use.必須是一級代理。如果未找到,則從配置回退到 `default_agent` 或 `"build"`。
- `share`:是否共享opencode會話。對於公共存儲庫,默認為 **true**。
- `prompt`:可選的自定義提示以覆蓋默認行為。使用它來自定義 opencode 處理請求的方式。
- `token`:可選的 GitHub 訪問令牌,用於執行建評論、提交更和打開拉取請求等操作。默認情況下opencode 使用來自 opencode GitHub 應用程式的安裝訪問令牌,因此提交、評論和拉取請求顯示為來自應用程式。
- `model`:與 opencode 一起使用的模型。採用 `provider/model` 格式。這是**必需的**。
- `agent`: 使用的代理。必須是主要代理。如果未找到,則從設定退回到 `default_agent` 或 `"build"`。
- `share`:是否分享 opencode 工作階段。對於公共儲存庫,預設為 **true**。
- `prompt`:可選的自定義提示以覆寫預設行為。使用它來自定義 opencode 處理請求的方式。
- `token`:可選的 GitHub 存取權杖,用於執行建評論、提交更和打開拉取請求等操作。預設情況下opencode 使用來自 opencode GitHub 應用程式的安裝存取權杖,因此提交、評論和拉取請求顯示為來自應用程式。
或者,您可以使用 GitHub Action 運行程序的[內置`GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token),而無需安裝 opencode GitHub 應用程式。只需確保在您的工作流程中授予所需的權限:
或者,您可以使用 GitHub Action Runner 的 [內建 `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token),而無需安裝 opencode GitHub 應用程式。只需確保在您的工作流程中授予所需的權限:
```yaml
permissions:
@@ -97,26 +97,26 @@ opencode github install
issues: write
```
Error 500 (Server Error)!!1500.Thats an error.There was an error. Please try again later.Thats all we know.
**注意**:使用 `GITHUB_TOKEN` 時opencode 執行的操作(如提交和評論)將不會觸發其他工作流程。
---
## 支持的活動
## 支援的事件
opencode 可以由以下 GitHub 事件觸發:
| 事件類型 | 觸發 | 詳情 |
| ----------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------- |
| `issue_comment` | 對問題或 PR 發表評論 | Mention `/opencode` or `/oc` in your comment. opencode 讀取上下文並可以建分支、打開 PR 或回复。 |
| `pull_request_review_comment` | 對 PR 中的特定程式碼行進行評論 | 在檢查程式碼時提及`/opencode` 或`/oc`。 opencode receives file path, line numbers, and diff context. |
| `issues` | 問題已打開或已編輯 | 建或修改問題時自動觸發 opencode。需要 `prompt` 輸入。 |
| `pull_request` | PR 已開啟或已更新 | Automatically trigger opencode when PRs are opened, synchronized, or reopened.對於自動評論很有用。 |
| `schedule` | 基於 Cron 的計劃 | 按計劃運行 opencode。需要 `prompt` 輸入。輸出進入日誌和 PR沒有可評論的問題 |
| `workflow_dispatch` | 從 GitHub UI 手動觸發 | 通過“操作”選項卡按需觸發 opencode。需要 `prompt` 輸入。輸出進入日誌和 PR。 |
| 事件類型 | 觸發條件 | 詳情 |
| ----------------------------- | ------------------------------ | --------------------------------------------------------------------------------------- |
| `issue_comment` | 對問題或 PR 發表評論 | 在評論中提及 `/opencode` `/oc` opencode 讀取上下文並可以建分支、打開 PR 或回覆。 |
| `pull_request_review_comment` | 對 PR 中的特定程式碼行進行評論 | 在檢查程式碼時提及 `/opencode` 或 `/oc`。 opencode 接收檔案路徑、行號和 diff 上下文。 |
| `issues` | 問題已打開或已編輯 | 建或修改問題時自動觸發 opencode。需要 `prompt` 輸入。 |
| `pull_request` | PR 已開啟或已更新 | 當 PR 被開啟、同步或重新開啟時自動觸發 opencode。對於自動評論很有用。 |
| `schedule` | 基於 Cron 的排程 | 按排程執行 opencode。需要 `prompt` 輸入。輸出進入日誌和 PR沒有可評論的問題。 |
| `workflow_dispatch` | 從 GitHub UI 手動觸發 | 透過「Actions」標籤按需觸發 opencode。需要 `prompt` 輸入。輸出進入日誌和 PR。 |
### 時間表示
### 排程範
計劃運行 opencode 以執行自動化任務:
排程執行 opencode 以執行自動化任務:
```yaml title=".github/workflows/opencode-scheduled.yml"
name: Scheduled OpenCode Task
@@ -150,13 +150,13 @@ jobs:
If you find issues worth addressing, open an issue to track them.
```
For scheduled events, the `prompt` input is **required** since there's no comment to extract instructions from.計劃工作流在沒有用戶上下文的情況下行以進行權限檢查,因此如果您希望 opencode 建分支或 PR工作流必須授予 `contents: write` 和 `pull-requests: write`。
對於排程事件,`prompt` 輸入是**必需的**,因為沒有註釋可從中提取指令。排程工作流在沒有使用者上下文的情況下行以進行權限檢查,因此如果您希望 opencode 建分支或 PR工作流必須授予 `contents: write` 和 `pull-requests: write`。
---
### 拉取請求
### 拉取請求
打開或更新 PR 時自動審
打開或更新 PR 時自動審
```yaml title=".github/workflows/opencode-review.yml"
name: opencode-review
@@ -191,13 +191,13 @@ jobs:
- Suggest improvements
```
對於 `pull_request` 事件,如果未提供 `prompt`opencode 將默認審核拉取請求。
對於 `pull_request` 事件,如果未提供 `prompt`opencode 將預設審閱拉取請求。
---
### 問題分類
### 問題分類
自動分類新問題。此例過濾超過 30 天的帳以減少垃圾郵件
自動分類新問題。此例過濾超過 30 天的帳以減少垃圾訊息
```yaml title=".github/workflows/opencode-triage.yml"
name: Issue Triage
@@ -246,13 +246,13 @@ jobs:
Otherwise, do not comment.
```
對於 `issues` 事件,`prompt` 輸入是**必需的**,因為沒有註釋可從中提取指令。
對於 `issues` 事件,`prompt` 輸入是**必需的**,因為沒有評論可從中提取指令。
---
## 自定義提示
蓋默認提示,為您的工作流程自定義 opencode 的行為。
寫預設提示,為您的工作流程自定義 opencode 的行為。
```yaml title=".github/workflows/opencode.yml"
- uses: anomalyco/opencode/github@latest
@@ -265,35 +265,35 @@ jobs:
- Suggest improvements
```
這對於執行與您的項目相關的特定審標準、編碼標或重點領域非常有用。
這對於執行與您的專案相關的特定審標準、編碼標或重點領域非常有用。
---
##
##
以下是如何在 GitHub 中使用 opencode 的一些例。
以下是如何在 GitHub 中使用 opencode 的一些例。
- **解釋一個問題**
在 GitHub 問題中添加此評論。
在 GitHub Issue 中添加此評論。
```
/opencode explain this issue
```
opencode 將閱讀整個線程,包括所有評論,並回並提供清晰的解釋。
opencode 將閱讀整個討論串,包括所有評論,並回並提供清晰的解釋。
- **解決問題**
在 GitHub 問題中,說:
在 GitHub Issue 中,說:
```
/opencode fix this
```
opencode 將建一個新分支,實施更改,並使用更打開 PR。
opencode 將建一個新分支,實作變更,並使用更打開 PR。
- **審 PR 並進行更**
- **審 PR 並進行更**
在 GitHub PR 上留下以下評論。
@@ -301,21 +301,21 @@ jobs:
Delete the attachment from S3 when the note is removed /oc
```
Error 500 (Server Error)!!1500.Thats an error.There was an error. Please try again later.Thats all we know.
opencode 將實作請求的變更並將其推送到分支。
- **查看特定程式碼行**
直接在 PR 的“文件”選項卡中的程式碼行上留下評論。 opencode 自動檢測文件、行號和差異上下文以提供精確的應。
直接在 PR 的「Files」標籤中的程式碼行上留下評論。 opencode 自動檢測檔案、行號和 diff 上下文以提供精確的應。
```
[Comment on specific lines in Files tab]
/oc add error handling here
```
Error 500 (Server Error)!!1500.Thats an error.There was an error. Please try again later.Thats all we know.
- 正在審的確切文件
opencode 將查看:
- 正在審的確切檔案
- 具體程式碼行
- 周圍的 diff 上下文
- 行號信息
- 行號資訊
這允許更有針對性的請求,而無需手動指定文件路徑或行號。
這允許更有針對性的請求,而無需手動指定檔案路徑或行號。

View File

@@ -3,32 +3,32 @@ title: GitLab
description: 在 GitLab 問題和合併請求中使用 opencode。
---
opencode 過 GitLab CI/CD 管或與 GitLab Duo 與您的 GitLab 工作流程集成
opencode 過 GitLab CI/CD 管或與 GitLab Duo 與您的 GitLab 工作流程整合
在這兩種情況下opencode 都將在您的 GitLab 運行器上運行。
在這兩種情況下opencode 都將在您的 GitLab Runner 上執行。
---
## GitLab
## GitLab
opencode 在常規 GitLab 管中工作。您可以將其構建為管作為 [CI組件](https://docs.gitlab.com/ee/ci/components/)
opencode 在常規 GitLab 管中工作。您可以將其構建為管作為 [CI 組件](https://docs.gitlab.com/ee/ci/components/)
在這裡,我們使用社區創建的 opencode CI/CD 組件 — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode)。
在這裡,我們使用社群建立的 opencode CI/CD 組件 — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode)。
---
### 特徵
### 功能
- **每個作業使用自定義配置**:使用自定義配置目錄配置 opencode例如 `./config/#custom-directory` 以啟用或禁用每個 opencode 調用的功能。
- Error 500 (Server Error)!!1500.Thats an error.There was an error. Please try again later.Thats all we know.
- **靈活**CI 組件支多種輸入來自定義其行為
- **每個作業使用自定義設定**:使用自定義設定目錄設定 opencode例如 `./config/#custom-directory` 以啟用或禁用每個 opencode 呼叫的功能。
- **無狀態**opencode 的狀態(訊息歷史記錄等)儲存在合併請求評論線程中,使其完全無狀態。
- **靈活**CI 組件支多種輸入來自定義其行為
---
### 設定
1. 將 opencode 身驗證 JSON 作為文件類型 CI 環境變量存儲在 **設置** > **CI/CD** > **變量** 下。確保將它們標記為“屏蔽和隱藏”
2. 將以下內容添加到您的 `.gitlab-ci.yml` 文件中。
1. 將 opencode 身驗證 JSON 作為檔案類型 CI 環境變數儲存在 **Settings** > **CI/CD** > **Variables** 下。確保將它們標記為「Masked and hidden」
2. 將以下內容新增到您的 `.gitlab-ci.yml` 檔案中。
```yaml title=".gitlab-ci.yml"
include:
@@ -40,40 +40,40 @@ opencode 在常規 GitLab 管道中工作。您可以將其構建為管道作為
message: "Your prompt here"
```
有關此組件的更多輸入和例[查看文](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode)。
有關此組件的更多輸入和使用案例[查看文](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode)。
---
## 亞搏體育app二人組
## GitLab Duo
opencode 與您的 GitLab 工作流程集成
在評論中提及`@opencode`opencode 將在您的 GitLab CI 管中執行任務。
opencode 與您的 GitLab 工作流程整合
在評論中提及 `@opencode`opencode 將在您的 GitLab CI 管中執行任務。
---
### 特徵
### 功能
- **分類問題**:要求 opencode 調查問題並向您解釋。
- **修復和實**:要求 opencode 修復問題或實功能。
它將建一個新分支並提出包含更的合併請求。
- **安全**opencode 在您的 GitLab 運行器上運行。
- **修復和實**:要求 opencode 修復問題或實功能。
它將建一個新分支並提出包含更的合併請求。
- **安全**opencode 在您的 GitLab Runner 上執行。
---
### 設定
opencode 在您的 GitLab CI/CD 管道中運行,您需要進行以下設
opencode 在您的 GitLab CI/CD 管線中執行,您需要進行以下設
:::tip
查看[**GitLab 文**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) 以獲取最新說明。
查看 [**GitLab 文**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) 以獲取最新說明。
:::
1. 配置您的 GitLab 環境
2. 設 CI/CD
3. 取 AI 模型供商 API
4. 建服務帳
5. 配置 CI/CD 變
6. 建一個流配置文件,這是一個例:
1. 設定您的 GitLab 環境
2. 設 CI/CD
3. 取 AI 模型供商 API
4. 建服務帳
5. 設定 CI/CD 變
6. 建一個流程設定檔,這是一個例:
<details>
@@ -152,16 +152,16 @@ opencode 在您的 GitLab CI/CD 管道中運行,您需要進行以下設置:
</details>
詳細說明可以參考[GitLab CLI 代理文](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/)。
詳細說明可以參考 [GitLab CLI 代理文](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/)。
---
###
###
以下是如何在 GitLab 中使用 opencode 的一些例。
以下是如何在 GitLab 中使用 opencode 的一些例。
:::tip
您可以配置使用與 `@opencode` 不同的觸發短語。
您可以設定使用與 `@opencode` 不同的觸發短語。
:::
- **解釋一個問題**
@@ -172,7 +172,7 @@ opencode 在您的 GitLab CI/CD 管道中運行,您需要進行以下設置:
@opencode explain this issue
```
opencode 將閱讀該問題並回並提供清晰的解釋。
opencode 將閱讀該問題並回並提供清晰的解釋。
- **解決問題**
@@ -182,9 +182,9 @@ opencode 在您的 GitLab CI/CD 管道中運行,您需要進行以下設置:
@opencode fix this
```
opencode 將建一個新分支,實施更改,並打開包含更的合併請求。
opencode 將建一個新分支,實作變更,並打開包含更的合併請求。
- **審合併請求**
- **審合併請求**
對 GitLab 合併請求留下以下評論。
@@ -192,4 +192,4 @@ opencode 在您的 GitLab CI/CD 管道中運行,您需要進行以下設置:
@opencode review this merge request
```
opencode 將審合併請求並提供饋。
opencode 將審合併請求並提供饋。

View File

@@ -1,48 +1,48 @@
---
title: IDE
description: VS Code、Cursor 和其他 IDE 的 OpenCode 擴
description: VS Code、Cursor 和其他 IDE 的 OpenCode 擴充功能
---
OpenCode 與 VS Code、Cursor 或任何支持 terminal 的 IDE 集成。只需在 terminal 中運行 `opencode` 即可開始。
OpenCode 與 VS Code、Cursor 或任何支援終端機的 IDE 整合。只需在終端機中執行 `opencode` 即可開始。
---
## 用法
- **快速啟動**:使用 `Cmd+Esc` (Mac) 或 `Ctrl+Esc` (Windows/Linux) 在拆分 terminal 視圖中打開 OpenCode或者聚焦現有 terminal 會話(如果已有 terminal 會話正在行)。
- **新會話**:使用 `Cmd+Shift+Esc` (Mac) 或 `Ctrl+Shift+Esc` (Windows/Linux) 啟動新的 OpenCode terminal 會話,即使該會話已打開。您還可以單擊 UI 中的 OpenCode 按鈕。
- **上下文感知**:自動與 OpenCode 享您當前的選擇或選項卡
- **文件引用快捷方式**:使用`Cmd+Option+K` (Mac) 或`Alt+Ctrl+K` (Linux/Windows) 插入文件引用。例如,`@File#L37-42`。
- **快速啟動**:使用 `Cmd+Esc` (Mac) 或 `Ctrl+Esc` (Windows/Linux) 在分割終端機視圖中打開 OpenCode或者聚焦現有終端機工作階段(如果已有終端機工作階段正在行)。
- **新工作階段**:使用 `Cmd+Shift+Esc` (Mac) 或 `Ctrl+Shift+Esc` (Windows/Linux) 啟動新的 OpenCode 終端機工作階段,即使該工作階段已打開。您還可以單擊 UI 中的 OpenCode 按鈕。
- **上下文感知**:自動與 OpenCode 享您當前的選擇或分頁
- **檔案引用快速鍵**:使用 `Cmd+Option+K` (Mac) 或 `Alt+Ctrl+K` (Linux/Windows) 插入檔案引用。例如,`@File#L37-42`。
---
## 安裝
要在 VS Code 和 Cursor、Windsurf、VSCodium 等流行分支上安裝 OpenCode
要在 VS Code 和 Cursor、Windsurf、VSCodium 等流行 Fork 上安裝 OpenCode
1. 打開 VS Code
2. 打開集成 terminal
3. 行 `opencode` - 擴會自動安裝
2. 打開整合終端機
3. 行 `opencode` - 擴充功能會自動安裝
另一方面,如果您想在從 TUI 行 `/editor` 或 `/export` 時使用自己的 IDE則需要設 `export EDITOR="code --wait"`。 [了解更多](/docs/tui/#editor-setup)。
另一方面,如果您想在從 TUI 行 `/editor` 或 `/export` 時使用自己的 IDE則需要設 `export EDITOR="code --wait"`。 [了解更多](/docs/tui/#editor-setup)。
---
### 手動安裝
在擴展市場中搜 **OpenCode**,然後單擊 **安裝**。
在擴充功能市集中搜 **OpenCode**,然後單擊 **安裝**。
---
### 故障排除
### 疑難排解
如果擴無法自動安裝:
如果擴充功能無法自動安裝:
- 確保您在集成 terminal 中運行`opencode`。
- 確保您在整合終端機中執行 `opencode`。
- 確認您的 IDE 的 CLI 已安裝:
- 對於 VS Code`code`
- 對於 Cursor`cursor`
- 對於 Windsurf`windsurf`
- 對於 VSCodium`codium`
- 如果沒有,請行 `Cmd+Shift+P` (Mac) 或 `Ctrl+Shift+P` (Windows/Linux) 並蒐索“Shell Command: Install 'code' command in PATH(或適用於您的 IDE 的等效令)
- 確保 VS Code 有權安裝擴
- 對於 VS Code`code`
- 對於 Cursor`cursor`
- 對於 Windsurf`windsurf`
- 對於 VSCodium`codium`
- 如果沒有,請行 `Cmd+Shift+P` (Mac) 或 `Ctrl+Shift+P` (Windows/Linux) 並搜尋「Shell Command: Install 'code' command in PATH(或適用於您的 IDE 的等效令)
- 確保 VS Code 有權安裝擴充功能

View File

@@ -1,15 +1,15 @@
---
title: 簡介
description: 開始使用 opencode。
description: 開始使用 OpenCode。
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
import config from "../../../../config.mjs"
export const console = config.console
[**OpenCode**](/) 是一個開源 AI 碼代理。它可用作基於 terminal 的介面、桌面應用程式或 IDE 擴
[**OpenCode**](/) 是一個開源 AI 程式碼代理。它可用作基於終端機的介面、桌面應用程式或 IDE 擴充功能
![具有 opencode 主題的 OpenCode TUI](../../../assets/lander/screenshot.png)
![具有 OpenCode 主題的 OpenCode TUI](../../../assets/lander/screenshot.png)
讓我們開始吧。
@@ -17,27 +17,27 @@ export const console = config.console
#### 先決條件
要在 terminal 中使用 OpenCode您需要
要在終端機中使用 OpenCode您需要
1. 現代 terminal 模擬器,例如:
1. 現代終端機模擬器,例如:
- [WezTerm](https://wezterm.org),跨平台
- [Alacritty](https://alacritty.org),跨平台
- [Ghostty](https://ghostty.org)Linux 和 macOS
- [Kitty](https://sw.kovidgoyal.net/kitty/)Linux 和 macOS
2. 您想要使用的 LLM 供商的 API 鑰。
2. 您想要使用的 LLM 供商的 API 鑰。
---
## 安裝
安裝 OpenCode 最簡單的方法是過安裝腳本
安裝 OpenCode 最簡單的方法是過安裝指令碼
```bash
curl -fsSL https://opencode.ai/install | bash
```
可以使用以下令安裝
可以使用以下令安裝:
- **使用 Node.js**
@@ -89,17 +89,17 @@ curl -fsSL https://opencode.ai/install | bash
#### Windows
:::tip[Recommended: Use WSL]
為了在 Windows 上獲得最佳體驗,我們建議使用[適用於 Linux 的 Windows 子系統 (WSL)](/docs/windows-wsl)。它提供了更好的能並與 OpenCode 的功能完全容。
:::tip[建議:使用 WSL]
為了在 Windows 上獲得最佳體驗,我們建議使用[適用於 Linux 的 Windows 子系統 (WSL)](/docs/windows-wsl)。它提供了更好的能並與 OpenCode 的功能完全容。
:::
- **使用Chocolatey**
- **使用 Chocolatey**
```bash
choco install opencode
```
- **使用Scoop**
- **使用 Scoop**
```bash
scoop install opencode
@@ -111,7 +111,7 @@ curl -fsSL https://opencode.ai/install | bash
npm install -g opencode-ai
```
- **使用Mise**
- **使用 Mise**
```bash
mise use -g github:anomalyco/opencode
@@ -123,29 +123,28 @@ curl -fsSL https://opencode.ai/install | bash
docker run -it --rm ghcr.io/anomalyco/opencode
```
目前正在支使用 Bun 在 Windows 上安裝 OpenCode。
目前正在支使用 Bun 在 Windows 上安裝 OpenCode。
您還可以從[Releases](https://github.com/anomalyco/opencode/releases) 獲取二進製文件
您還可以從 [Releases](https://github.com/anomalyco/opencode/releases) 獲取二進位檔案
---
## 配置
## 設定
借助 OpenCode您可以通過配置 API 鑰來使用任何 LLM 供商。
借助 OpenCode您可以透過設定 API 鑰來使用任何 LLM 供商。
如果您不熟悉使用 LLM 供商,我們建議使用[OpenCode Zen](/docs/zen)。
這是經過 OpenCode 測試和驗證的精選模型列表
團隊。
如果您不熟悉使用 LLM 供商,我們建議使用 [OpenCode Zen](/docs/zen)。
這是經過 OpenCode 團隊測試和驗證的精選模型列表
1. 在 TUI 中行 `/connect` 令,選擇 opencode然後前往 [opencode.ai/auth](https://opencode.ai/auth)。
1. 在 TUI 中行 `/connect` 令,選擇 opencode然後前往 [opencode.ai/auth](https://opencode.ai/auth)。
```txt
/connect
```
2. 登錄,添加您的帳單詳細信息,然後復制您的 API 鑰。
2. 登入,新增您的帳單詳細資訊,然後複製您的 API 鑰。
3. 貼您的 API 鑰。
3. 貼您的 API 鑰。
```txt
┌ API key
@@ -154,50 +153,45 @@ curl -fsSL https://opencode.ai/install | bash
└ enter
```
或者,您可以選擇其他供商之一。 [了解更多](/docs/providers#directory)。
或者,您可以選擇其他供商之一。[了解更多](/docs/providers#directory)。
---
## 初始化
現在您已經配置了提供商,您可以導航到一個項目
你想繼續工作。
現在您已經設定了供應商,您可以導航到一個您想繼續工作的專案。
```bash
cd /path/to/project
```
行 OpenCode。
行 OpenCode。
```bash
opencode
```
接下來,通過運行以下令來初始化項目的 OpenCode。
接下來,透過執行以下令來初始化專案的 OpenCode。
```bash frame="none"
/init
```
這將使 OpenCode 分析您的項目並在以下位置創建 `AGENTS.md` 文件
項目根。
這將使 OpenCode 分析您的專案並在專案根目錄下建立 `AGENTS.md` 檔案。
:::tip
您應該將項目的 `AGENTS.md` 文件提交到 Git。
您應該將專案的 `AGENTS.md` 檔案提交到 Git。
:::
這有助於 OpenCode 理解項目結構和編碼模式
用過的。
這有助於 OpenCode 理解專案結構和使用的編碼模式
---
## 用法
您現在已準備好使用 OpenCode 來處理您的項目。請隨意詢問
任何事物!
您現在已準備好使用 OpenCode 來處理您的專案。請隨意詢問任何事物!
如果您不熟悉使用 AI 碼代理,以下是一些可能會有所幫助的示例
幫助。
如果您不熟悉使用 AI 程式碼代理,以下是一些可能會有所幫助的範例。
---
@@ -206,7 +200,7 @@ opencode
您可以用 OpenCode 向您解釋程式碼庫。
:::tip
使用`@`鍵模糊搜索工程中的文件
使用`@`鍵模糊搜尋專案中的檔案
:::
```txt frame="none" "@packages/functions/src/api/index.ts"
@@ -217,14 +211,13 @@ How is authentication handled in @packages/functions/src/api/index.ts
---
### 添加功能
### 新增功能
您可以用 OpenCode 向您的項目添加新功能。不過我們首先建議要求它制定一個計
您可以用 OpenCode 向您的專案新增新功能。不過我們首先建議要求它制定一個計
1. **制定計**
1. **制定計**
OpenCode 有一個*計模式*,該模式禁用其進行更改和
相反,建議*如何*實現該功能。
OpenCode 有一個*計模式*,該模式禁用其進行變更,而是建議*如何*實作該功能。
使用 **Tab** 鍵切換到它。您會在右下角看到一個指示符。
@@ -240,17 +233,15 @@ How is authentication handled in @packages/functions/src/api/index.ts
From this screen, the user can undelete a note or permanently delete it.
```
您需要為 OpenCode 提供足夠的詳細信息以了解您想要的內容。有幫助
就像與團隊中的初級開發人員交談一樣與它交談。
您需要為 OpenCode 提供足夠的詳細資訊以了解您想要的內容。有幫助,就像與團隊中的初級開發人員交談一樣與它交談。
:::tip
為 OpenCode 提供大量上下文和例,以幫助其理解您的內容
想。
為 OpenCode 提供大量上下文和例,以幫助其理解您的想法。
:::
2. **迭代計**
2. **迭代計**
一旦它為您提供了計,您可以提供饋或添加更多詳細信息
一旦它為您提供了計,您可以提供饋或新增更多詳細資訊
```txt frame="none"
We'd like to design this new screen using a design I've used before.
@@ -258,16 +249,14 @@ How is authentication handled in @packages/functions/src/api/index.ts
```
:::tip
像拖放到 terminal 中以將其添加到提示中。
像拖放到終端機中以將其新增到提示中。
:::
OpenCode 可以掃描您提供的任何像並將其添加到提示中。可以
通過將圖像拖放到 terminal 中來完成此操作。
OpenCode 可以掃描您提供的任何像並將其新增到提示中。可以透過將影像拖放到終端機中來完成此操作。
3. **建功能**
3. **建功能**
一旦您對計感到滿意,請切換回*建模式*
再次按 **Tab** 鍵。
一旦您對計感到滿意,請切換回*建模式*,再次按 **Tab** 鍵。
```bash frame="none"
<TAB>
@@ -283,8 +272,7 @@ How is authentication handled in @packages/functions/src/api/index.ts
### 做出改變
對於更直接的更,您可以要求 OpenCode 直接構建它
無需先審查計劃。
對於更直接的更,您可以要求 OpenCode 直接建置它,無需先審閱計畫。
```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
@@ -292,28 +280,25 @@ handled in the /notes route in @packages/functions/src/notes.ts and implement
the same logic in @packages/functions/src/settings.ts
```
您需要確保提供大量詳細信息,以便 OpenCode 做出正確的決定
變化。
您需要確保提供大量詳細資訊,以便 OpenCode 做出正確的變更。
---
### 撤消更改
### 撤銷變更
假設您要求 OpenCode 進行一些更
假設您要求 OpenCode 進行一些更。
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
但你意識到這不是你想要的。您**可以撤**更改
使用 `/undo` 命令。
但你意識到這不是你想要的。您**可以撤**變更,使用 `/undo` 指令。
```bash frame="none"
/undo
```
OpenCode 現在將復您所做的更改並顯示您的原始消息
再次。
OpenCode 現在將復您所做的變更並再次顯示您的原始訊息。
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
@@ -322,10 +307,10 @@ Can you refactor the function in @packages/functions/src/api/index.ts?
從這裡您可以調整提示並要求 OpenCode 重試。
:::tip
您可以多次行 `/undo` 以撤多項更
您可以多次行 `/undo` 以撤多項更。
:::
或者您**可以使用 `/redo` 令重做**更
或者您**可以使用 `/redo` 令重做**更。
```bash frame="none"
/redo
@@ -335,25 +320,24 @@ Can you refactor the function in @packages/functions/src/api/index.ts?
## 分享
您與 OpenCode 的對話可以[與您的
團隊](/docs/share)。
您與 OpenCode 的對話可以[與您的團隊分享](/docs/share)。
```bash frame="none"
/share
```
這將創建當前對話的連結並將其複製到剪貼
這將建立目前對話的連結並將其複製到剪貼簿
:::note
默認情況下不享對話。
預設情況下不享對話。
:::
這是帶有 OpenCode 的[例對話](https://opencode.ai/s/4XP1fce5)。
這是帶有 OpenCode 的[例對話](https://opencode.ai/s/4XP1fce5)。
---
## 定制
## 自訂
就是這樣!您現在已經是使用 OpenCode 的專家了。
要使其成為您自己的,我們建議 [選擇一個主題](/docs/themes)、[自定義按鍵綁定](/docs/keybinds)、[配置程式碼格式化程](/docs/formatters)、[建自定義令](/docs/commands) 或使用 [OpenCode 配置](/docs/config)。
要使其成為您自己的,我們建議 [選擇一個主題](/docs/themes)、[自按鍵綁定](/docs/keybinds)、[設定程式碼格式化程](/docs/formatters)、[建自定義令](/docs/commands) 或使用 [OpenCode 設定](/docs/config)。

View File

@@ -3,7 +3,7 @@ title: 按鍵綁定
description: 自定義您的按鍵綁定。
---
opencode 有一個按鍵綁定列表,您可以過 opencode 配置進行自定義。
opencode 有一個按鍵綁定列表,您可以過 opencode 設定進行自定義。
```json title="opencode.json"
{
@@ -105,19 +105,19 @@ opencode 有一個按鍵綁定列表,您可以通過 opencode 配置進行自
---
## 領袖鑰匙
## Leader 鍵
opencode 對大多數按鍵綁定使用 `leader` 鍵。這可以避免terminal 中的衝突。
opencode 對大多數按鍵綁定使用 `leader` 鍵。這可以避免終端機中的衝突。
默認情況下,`ctrl+x` 是鍵,大多數操作要求您先按鍵,然後再按快鍵。例如,要開始新會話,請先按`ctrl+x`,然後按`n`。
預設情況下,`ctrl+x` 是 Leader 鍵,大多數操作要求您先按 Leader 鍵,然後再按快鍵。例如,要開始新工作階段,請先按 `ctrl+x`,然後按 `n`。
您不需要為鍵綁定使用鍵,但我們建議您這樣做。
您不需要為鍵綁定使用 Leader 鍵,但我們建議您這樣做。
---
## 禁用按鍵綁定
您可以過將鍵添加到您的配置中並使用值none來禁用鍵綁定。
您可以過將鍵添加到您的設定中並使用值none來禁用鍵綁定。
```json title="opencode.json"
{
@@ -130,41 +130,41 @@ opencode 對大多數按鍵綁定使用 `leader` 鍵。這可以避免terminal
---
## 桌面提示快捷方式
## 桌面提示快速鍵
opencode 桌面應用程式提示輸入支常見的 Readline/Emacs 風格的文編輯快捷方式。這些是內的,目前無法通過`opencode.json`進行配置
opencode 桌面應用程式提示輸入支常見的 Readline/Emacs 風格的文編輯快速鍵。這些是內的,目前無法透過 `opencode.json` 進行設定
| 快捷方式 | 動 |
| 快速鍵 | 動 |
| -------- | ------------------------- |
| `ctrl+a` | 移至當前行開頭 |
| `ctrl+e` | 移至當前行尾 |
| `ctrl+b` | 將標向後移動一個字 |
| `ctrl+f` | 將標向前移動一個字 |
| `alt+b` | 將標向後移動一個字 |
| `alt+f` | 將標向前移動一個字 |
| `ctrl+d` | 刪除標下的字 |
| `ctrl+k` | 殺到行尾 |
| `ctrl+u` | 至行首 |
| `ctrl+w` | 刪除前一個單 |
| `alt+d` | 殺死下一個 |
| `ctrl+t` | 轉置字符 |
| `ctrl+g` | 取消彈出窗/中止運行響應 |
| `ctrl+b` | 將標向後移動一個字 |
| `ctrl+f` | 將標向前移動一個字 |
| `alt+b` | 將標向後移動一個字 |
| `alt+f` | 將標向前移動一個字 |
| `ctrl+d` | 刪除標下的字 |
| `ctrl+k` | 刪除至行尾 |
| `ctrl+u` | 刪除至行首 |
| `ctrl+w` | 刪除前一個單 |
| `alt+d` | 刪除下一個單字 |
| `ctrl+t` | 調換字元 |
| `ctrl+g` | 取消彈出窗/中止執行回應 |
---
## Shift+Enter
默認情況下,某些terminal不發送帶有 Enter 的修飾鍵。您可能需要將terminal配置為發送 `Shift+Enter` 作為轉義序列。
預設情況下,某些終端機不發送帶有 Enter 的輔助鍵。您可能需要將終端機設定為發送 `Shift+Enter` 作為跳脫序列。
### Windows terminal
### Windows Terminal
打開您的`settings.json`
打開您的 `settings.json`
```
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
```
將其添加到根級 `actions` 數組
將其添加到根級 `actions` 陣列
```json
"actions": [
@@ -178,7 +178,7 @@ opencode 桌面應用程式提示輸入支持常見的 Readline/Emacs 風格的
]
```
將其添加到根級 `keybindings` 數組
將其添加到根級 `keybindings` 陣列
```json
"keybindings": [
@@ -189,4 +189,4 @@ opencode 桌面應用程式提示輸入支持常見的 Readline/Emacs 風格的
]
```
保存文件並重新啟動 Windows terminal或打開新選項卡
儲存檔案並重新啟動 Windows Terminal 或打開新分頁

View File

@@ -1,71 +1,71 @@
---
title: LSP服
description: opencode 與您的 LSP 服務器集成
title: LSP服器
description: opencode 與您的 LSP 伺服器整合
---
opencode 與您的語言服器協 (LSP) 集成,以幫助 LLM 與您的程式碼庫互。它使用診斷向LLM提供饋。
opencode 與您的語言服器協 (LSP) 整合,以幫助 LLM 與您的程式碼庫互。它使用診斷向 LLM 提供饋。
---
## 內建
opencode 附帶了多種適用於流行語言的內 LSP 服器:
opencode 附帶了多種適用於流行語言的內 LSP 服器:
| LSP服務器 | 擴展 | 要求 |
| ------------------- | ------------------------------------------------------------------- | ------------------------------------------------ |
| 天文 | .astro | Astro 項目自動安裝 |
| bash | .sh、.bash、.zsh、.ksh | 自動安裝 bash-語言-服務器 |
| 叮叮 | .c、.cpp、.cc、.cxx、.c++、.h、.hpp、.hh、.hxx、.h++ | 自動安裝 C/C++ 項目 |
| 夏普 | .cs | `.NET SDK` 已安裝 |
| Clojure-lsp | 語言.clj、.cljs、.cljc、.edn | `clojure-lsp` 令可用 |
| 飛鏢 | .dart | `dart` 令可用 |
| 給定 | .ts、.tsx、.js、.jsx、.mjs | `deno` 令可用(自動檢測 deno.json/deno.jsonc |
| 長生不老藥-LS | .ex、.exs | `elixir` 令可用 |
| 埃斯林特 | .ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts、.vue | `eslint` 項目中的依賴項 |
| 銳利 | .fs、.fsi、.fsx、.fsscript | `.NET SDK` 已安裝 |
| 微光 | .gleam | `gleam` 令可用 |
| 伙計們 | .go | `go` 令可用 |
| HLS | .hs、.lhs | `haskell-language-server-wrapper` 令可用 |
| jdtls | .java | `Java SDK (version 21+)` 已安裝 |
| kotlin-ls | .kt、.kts | Kotlin 項目的自動安裝 |
| lua-ls | .lua | 自動安裝 Lua 項目 |
| 尼克斯 | .nix | `nixd` 令可用 |
| ocaml-lsp | .ml、.mli | `ocamllsp` 令可用 |
| ocx林特 | .ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts、.vue、.astro、.svelte | `oxlint` 項目中的依賴項 |
| php intelephense | php .php | PHP 項目的自動安裝 |
| 棱鏡 | .prisma | `prisma` 令可用 |
| 皮賴特 | .py, .pyi | `pyright` 依賴項已安裝 |
| ruby-lsprubocop | .rb、.rake、.gemspec、.ru | `ruby` 和 `gem` 令可用 |
| 生鏽 | .rs | `rust-analyzer` 令可用 |
| 源套件-lsp | .swift、.objc、.objcpp | `swift` 已安裝(`xcode` 在 macOS 上) |
| 苗條 | .svelte | Svelte 項目的自動安裝 |
| 地形 | .tf、.tfvars | 從 GitHub 版本自動安裝 |
| 微霧 | .typ、.typc | 從 GitHub 版本自動安裝 |
| 打字稿 | .ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts | `typescript` 項目中的依賴項 |
| 視圖 | .vue | Vue 項目自動安裝 |
| yaml-ls | .yaml、.yml | 自動安裝 Red Hat yaml-language-server |
| 中立 | .zig、.zon | `zig` 令可用 |
| LSP 伺服器 | 副檔名 | 要求 |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------ |
| astro | .astro | Astro 專案自動安裝 |
| bash | .sh、.bash、.zsh、.ksh | 自動安裝 bash-language-server |
| clangd | .c、.cpp、.cc、.cxx、.c++、.h、.hpp、.hh、.hxx、.h++ | 自動安裝 C/C++ 專案 |
| csharp | .cs | `.NET SDK` 已安裝 |
| clojure-lsp | .clj、.cljs、.cljc、.edn | `clojure-lsp` 令可用 |
| dart | .dart | `dart` 令可用 |
| deno | .ts、.tsx、.js、.jsx、.mjs | `deno` 令可用(自動檢測 deno.json/deno.jsonc |
| elixir-ls | .ex、.exs | `elixir` 令可用 |
| eslint | .ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts、.vue | `eslint` 專案中的相依套件 |
| fsharp | .fs、.fsi、.fsx、.fsscript | `.NET SDK` 已安裝 |
| gleam | .gleam | `gleam` 令可用 |
| gopls | .go | `go` 令可用 |
| hls | .hs、.lhs | `haskell-language-server-wrapper` 令可用 |
| jdtls | .java | `Java SDK (version 21+)` 已安裝 |
| kotlin-ls | .kt、.kts | Kotlin 專案的自動安裝 |
| lua-ls | .lua | 自動安裝 Lua 專案 |
| nil | .nix | `nixd` 令可用 |
| ocaml-lsp | .ml、.mli | `ocamllsp` 令可用 |
| oxlint | .ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts、.vue、.astro、.svelte | `oxlint` 專案中的相依套件 |
| php intelephense | .php | PHP 專案的自動安裝 |
| prisma | .prisma | `prisma` 令可用 |
| pyright | .py, .pyi | `pyright` 相依套件已安裝 |
| ruby-lsp (rubocop) | .rb、.rake、.gemspec、.ru | `ruby` 和 `gem` 令可用 |
| rust-analyzer | .rs | `rust-analyzer` 令可用 |
| sourcekit-lsp | .swift、.objc、.objcpp | `swift` 已安裝(`xcode` 在 macOS 上) |
| svelte | .svelte | Svelte 專案的自動安裝 |
| terraform-ls | .tf、.tfvars | 從 GitHub Releases 自動安裝 |
| tinymist | .typ、.typc | 從 GitHub Releases 自動安裝 |
| typescript | .ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts | `typescript` 專案中的相依套件 |
| vue | .vue | Vue 專案自動安裝 |
| yaml-ls | .yaml、.yml | 自動安裝 Red Hat yaml-language-server |
| zls | .zig、.zon | `zig` 令可用 |
當檢測到上述文件擴展名之一且滿足要求時LSP 服器將自動啟用。
當檢測到上述檔案副檔名之一且滿足要求時LSP 服器將自動啟用。
:::note
您可以過將`OPENCODE_DISABLE_LSP_DOWNLOAD` 環境變量設置為`true` 來禁用自動LSP 服器下載。
您可以過將 `OPENCODE_DISABLE_LSP_DOWNLOAD` 環境變數設定為 `true` 來禁用自動 LSP 服器下載。
:::
---
## 它是如何運作的
當 opencode 打開一個文件時,它:
當 opencode 打開一個檔案時,它:
1. 根據所有啟用的 LSP 服器檢查文件擴展名。
2. 如果尚未行,則啟動相應的 LSP 服器。
1. 根據所有啟用的 LSP 服器檢查檔案副檔名。
2. 如果尚未行,則啟動相應的 LSP 服器。
---
## 配置
## 設定
您可以過 opencode 配置中的 `lsp` 部分自定義 LSP 服器。
您可以過 opencode 設定中的 `lsp` 部分自定義 LSP 服器。
```json title="opencode.json"
{
@@ -74,23 +74,23 @@ opencode 附帶了多種適用於流行語言的內置 LSP 服務器:
}
```
每個LSP服器支以下功能:
每個 LSP服器支以下功能:
| 物業 | 類型 | 描述 |
| ---------------- | -------- | --------------------------------- |
| `disabled` | 布 | 將其設置為`true` 以禁用LSP 服器 |
| `command` | 字串[] | 啟動LSP服器的令 |
| `extensions` | 字串[] | 此 LSP 服器應處理的文件擴展名 |
| `env` | 對象 | 啟動服器時設的環境變 |
| `initialization` | 對象 | 發送到LSP服器的初始化選項 |
| 屬性 | 類型 | 描述 |
| ---------------- | ------ | ----------------------------------- |
| `disabled` | 布林值 | 將其設定為 `true` 以禁用 LSP 服器 |
| `command` | 字串[] | 啟動 LSP服器的令 |
| `extensions` | 字串[] | 此 LSP 服器應處理的檔案副檔名 |
| `env` | 物件 | 啟動服器時設的環境變 |
| `initialization` | 物件 | 發送到 LSP服器的初始化選項 |
讓我們看一些例子。
---
### 環境變
### 環境變
啟動LSP服器時使用`env`屬性設環境變
啟動 LSP服器時使用 `env` 屬性設環境變
```json title="opencode.json" {5-7}
{
@@ -109,7 +109,7 @@ opencode 附帶了多種適用於流行語言的內置 LSP 服務器:
### 初始化選項
使用`initialization` 屬性將初始化選項傳遞給LSP 服器。這些是在 LSP `initialize` 請求期間發送的服器特定設
使用 `initialization` 屬性將初始化選項傳遞給 LSP 服器。這些是在 LSP `initialize` 請求期間發送的服器特定設
```json title="opencode.json" {5-9}
{
@@ -127,14 +127,14 @@ opencode 附帶了多種適用於流行語言的內置 LSP 服務器:
```
:::note
初始化選項因 LSP 服器而異。檢查 LSP 服器的文以獲取可用選項。
初始化選項因 LSP 服器而異。檢查 LSP 服器的文以獲取可用選項。
:::
---
### 禁用LSP服
### 禁用 LSP服器
要全禁用**所有** LSP 服器,請將`lsp` 設置為`false`
要全禁用**所有** LSP 服器,請將 `lsp` 設定為 `false`
```json title="opencode.json" {3}
{
@@ -143,7 +143,7 @@ opencode 附帶了多種適用於流行語言的內置 LSP 服務器:
}
```
要禁用**特定** LSP 服器,請將`disabled` 設置為`true`
要禁用**特定** LSP 服器,請將 `disabled` 設定為 `true`
```json title="opencode.json" {5}
{
@@ -158,9 +158,9 @@ opencode 附帶了多種適用於流行語言的內置 LSP 服務器:
---
### 自定義 LSP 服
### 自定義 LSP 服器
您可以過指定令和文件擴展名來添加自定義 LSP 服器:
您可以過指定令和檔案副檔名來添加自定義 LSP 服器:
```json title="opencode.json" {4-7}
{
@@ -176,13 +176,13 @@ opencode 附帶了多種適用於流行語言的內置 LSP 服務器:
---
## 附加信息
## 附加資訊
### PHP 英特爾芬斯
### PHP Intelephense
PHP Intelephense 通過許可證密鑰提供高級功能。您可以過將(僅)鑰放入位於以下位置的文本文件中來提供許可證密鑰:
PHP Intelephense 透過授權金鑰提供高級功能。您可以過將(僅)鑰放入位於以下位置的文字檔案中來提供授權金鑰:
- 在 macOS/Linux 上:`$HOME/intelephense/license.txt`
- 在 Windows 上:`%USERPROFILE%/intelephense/license.txt`
文件應僅包含許可證密鑰,不包含其他內容。
檔案應僅包含授權金鑰,不包含其他內容。

View File

@@ -1,29 +1,29 @@
---
title: MCP服
description: 添加本地和遠 MCP 工具。
title: MCP服器
description: 添加本地和遠 MCP 工具。
---
您可以使用模型上下文協議”或 MCP 將外部工具添加到 opencode。 opencode 支本地和遠程服務器。
您可以使用模型上下文協定」或 MCP 將外部工具添加到 opencode。 opencode 支本地和遠端伺服器。
添加後MCP 工具將自動與內工具一起供LLM使用。
添加後MCP 工具將自動與內工具一起供 LLM 使用。
---
#### 注意事項
當您使用 MCP 服器時,它會添加到上下文中。如果您有很多工具,這會很快增加。因此,我們建議您謹慎選擇使用哪些 MCP 服器。
當您使用 MCP 服器時,它會添加到上下文中。如果您有很多工具,這會很快增加。因此,我們建議您謹慎選擇使用哪些 MCP 服器。
:::tip
MCP 服器會添加到您的上下文中,因此您需要小心啟用哪些服器。
MCP 服器會添加到您的上下文中,因此您需要小心啟用哪些服器。
:::
某些 MCP 服器(例如 GitHub MCP 服器)往往會添加大量令牌,並且很容易超出上下文限制。
某些 MCP 服器(例如 GitHub MCP 服器)往往會添加大量 tokens,並且很容易超出上下文限制。
---
## 使能夠
## 啟用
您可以在`mcp` 下的[opencode配置](https://opencode.ai/docs/config/) 中定義MCP 服器。為每個 MCP 添加唯一的名稱。當提示 LLM 時,您可以過名稱引用該 MCP。
您可以在 `mcp` 下的 [opencode 設定](https://opencode.ai/docs/config/) 中定義 MCP 服器。為每個 MCP 添加唯一的名稱。當提示 LLM 時,您可以過名稱引用該 MCP。
```jsonc title="opencode.jsonc" {6}
{
@@ -40,15 +40,15 @@ MCP 服務器會添加到您的上下文中,因此您需要小心啟用哪些
}
```
您還可以過將`enabled` 設置為`false` 來禁用服器。如果您想暫時禁用服器而不將其從配置中刪除,這非常有用。
您還可以過將 `enabled` 設定為 `false` 來禁用服器。如果您想暫時禁用服器而不將其從設定中刪除,這非常有用。
---
### 覆蓋遠程默認
### 覆寫遠端預設
組織可以過其 `.well-known/opencode` 端點提供默認 MCP 服器。這些服器可能默認被禁用,允許用戶選擇他們需要的服器。
組織可以過其 `.well-known/opencode` 端點提供預設 MCP 服器。這些服器可能預設被禁用,允許使用者選擇他們需要的服器。
要從組織的遠程配置啟用特定服器,請使用 `enabled: true` 將其添加到本地配置
要從組織的遠端設定啟用特定服器,請使用 `enabled: true` 將其添加到本地設定
```json title="opencode.json"
{
@@ -63,13 +63,13 @@ MCP 服務器會添加到您的上下文中,因此您需要小心啟用哪些
}
```
您的本地配置值會覆蓋遠程默認值。有關更多詳細信息,請參閱[配置優先級](/docs/config#precedence-order)。
您的本地設定值會覆寫遠端預設值。有關更多詳細資訊,請參閱 [設定優先級](/docs/config#precedence-order)。
---
## 當地的
## 本地
使用`type` 將本地MCP 服器添加到MCP 對像中的`"local"`。
使用 `type` 將本地 MCP 服器添加到 MCP 物件中的 `"local"`。
```jsonc title="opencode.jsonc" {15}
{
@@ -88,9 +88,9 @@ MCP 服務器會添加到您的上下文中,因此您需要小心啟用哪些
}
```
令是本地 MCP 服器的啟動方式。您還可以傳入環境變列表。
令是本地 MCP 服器的啟動方式。您還可以傳入環境變列表。
例如,以下是添加測試 [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP 服器的方法。
例如,以下是添加測試 [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP 服器的方法。
```jsonc title="opencode.jsonc"
{
@@ -114,21 +114,21 @@ use the mcp_everything tool to add the number 3 and 4
#### 選項
以下是配置本地 MCP 服器的所有選項。
以下是設定本地 MCP 服器的所有選項。
| 選項 | 類型 | 必填 | 描述 |
| ------------- | ------ | ---- | ------------------------------------------------------------------ |
| `type` | 字串 | 是 | MCP 服器連接類型,必須是`"local"`。 |
| `command` | 數組 | 是 | 行 MCP 服器的令和參數。 |
| `environment` | 對象 | | 運行服務器時設的環境變。 |
| `enabled` | 布 | | 在啟動時啟用或禁用 MCP 服器。 |
| `timeout` | 數量 | | 從 MCP 服器獲取工具的超時(以毫秒為單位)。默認為 50005 秒)。 |
| `type` | 字串 | 是 | MCP 服器連接類型,必須是 `"local"`。 |
| `command` | 陣列 | 是 | 行 MCP 服器的令和參數。 |
| `environment` | 物件 | | 執行伺服器時設的環境變。 |
| `enabled` | 布林值 | | 在啟動時啟用或禁用 MCP 服器。 |
| `timeout` | 數量 | | 從 MCP 服器獲取工具的超時(以毫秒為單位)。預設為 50005 秒)。 |
---
## 偏僻的
## 遠端
過將`type` 設置為`"remote"` 添加遠MCP 服器。
過將 `type` 設定為 `"remote"` 添加遠MCP 服器。
```json title="opencode.json"
{
@@ -146,7 +146,7 @@ use the mcp_everything tool to add the number 3 and 4
}
```
`url` 是遠 MCP 服器的 URL使用 `headers` 選項您可以傳入標頭列表。
`url` 是遠 MCP 服器的 URL使用 `headers` 選項您可以傳入標頭列表。
---
@@ -154,28 +154,28 @@ use the mcp_everything tool to add the number 3 and 4
| 選項 | 類型 | 必填 | 描述 |
| --------- | ------ | ---- | ------------------------------------------------------------------ |
| `type` | 字串 | 是 | MCP 服器連接類型,必須是`"remote"`。 |
| `url` | 字串 | 是 | 遠 MCP 服器的 URL。 |
| `enabled` | 布 | | 在啟動時啟用或禁用 MCP 服器。 |
| `headers` | 對象 | | 隨請求一起發送的標頭。 |
| `oauth` | 對象 | | OAuth 身驗證配置。請參閱下面的[開放認證](#oauth) 部分。 |
| `timeout` | 數量 | | 從 MCP 服器獲取工具的超時(以毫秒為單位)。默認為 50005 秒)。 |
| `type` | 字串 | 是 | MCP 服器連接類型,必須是 `"remote"`。 |
| `url` | 字串 | 是 | 遠 MCP 服器的 URL。 |
| `enabled` | 布林值 | | 在啟動時啟用或禁用 MCP 服器。 |
| `headers` | 物件 | | 隨請求一起發送的標頭。 |
| `oauth` | 物件 | | OAuth 身驗證設定。請參閱下面的 [OAuth](#oauth) 部分。 |
| `timeout` | 數量 | | 從 MCP 服器獲取工具的超時(以毫秒為單位)。預設為 50005 秒)。 |
---
## 開放認證
## OAuth
opencode 自動處理遠 MCP 服器的 OAuth 身驗證。當服器需要身驗證時opencode 將:
opencode 自動處理遠 MCP 服器的 OAuth 身驗證。當服器需要身驗證時opencode 將:
1. 檢測 401 應並啟動 OAuth 流程
2. 如果服器支,請使用**動態客戶端註冊 (RFC 7591)**
3. 安全地存儲令牌以供將來的請求
1. 檢測 401 應並啟動 OAuth 流程
2. 如果服器支,請使用**動態客戶端註冊 (RFC 7591)**
3. 安全地儲存權杖以供將來的請求
---
### 自動
### 自動
對於大多數支 OAuth 的 MCP 服器,不需要特殊配置。只需配置遠程服務器:
對於大多數支 OAuth 的 MCP 服器,不需要特殊設定。只需設定遠端伺服器:
```json title="opencode.json"
{
@@ -189,13 +189,13 @@ opencode 自動處理遠程 MCP 服務器的 OAuth 身份驗證。當服務器
}
```
如果服器需要身驗證opencode 將在您第一次嘗試使用它時提示您進行身驗證。如果沒有,您可以使用 `opencode mcp auth <server-name>`[手動觸發流](#authenticating)。
如果服器需要身驗證opencode 將在您第一次嘗試使用它時提示您進行身驗證。如果沒有,您可以使用 `opencode mcp auth <server-name>` [手動觸發流](#authenticating)。
---
### 預登記
### 預先註冊
如果您有來自 MCP 服務器提供商的客戶端憑,則可以配置它們:
如果您有來自 MCP 伺服器供應商的客戶端憑,則可以設定它們:
```json title="opencode.json" {7-11}
{
@@ -216,35 +216,35 @@ opencode 自動處理遠程 MCP 服務器的 OAuth 身份驗證。當服務器
---
### 正在驗證
### 進行身分驗證
您可以手動觸發身驗證或管理憑
您可以手動觸發身驗證或管理憑
使用特定 MCP 服器進行身驗證:
使用特定 MCP 服器進行身驗證:
```bash
opencode mcp auth my-oauth-server
```
列出所有 MCP 服器及其身驗證狀態:
列出所有 MCP 服器及其身驗證狀態:
```bash
opencode mcp list
```
刪除儲的憑
刪除儲的憑
```bash
opencode mcp logout my-oauth-server
```
`mcp auth` 令將打開您的瀏覽器進行授權。授權後opencode 會將令牌安全地存儲在`~/.local/share/opencode/mcp-auth.json` 中。
`mcp auth` 令將打開您的瀏覽器進行授權。授權後opencode 會將權杖安全地儲存在 `~/.local/share/opencode/mcp-auth.json` 中。
---
#### 禁用 OAuth
如果要禁用服器的自動 OAuth例如對於使用 API 鑰的服器),請將 `oauth` 設為 `false`
如果要禁用服器的自動 OAuth例如對於使用 API 鑰的服器),請將 `oauth` 設為 `false`
```json title="opencode.json" {7}
{
@@ -268,14 +268,14 @@ opencode mcp logout my-oauth-server
| 選項 | 類型 | 描述 |
| -------------- | --------------- | --------------------------------------------------- |
| `oauth` | Object \| false | OAuth 配置對象,或 `false` 以禁用 OAuth 自動檢測。 |
| `oauth` | Object \| false | OAuth 設定物件,或 `false` 以禁用 OAuth 自動檢測。 |
| `clientId` | String | OAuth 客戶端 ID。如果未提供將嘗試動態客戶端註冊。 |
| `clientSecret` | String | OAuth 客戶端密鑰(如果授權服器需要)。 |
| `clientSecret` | String | OAuth 客戶端密鑰(如果授權服器需要)。 |
| `scope` | String | 授權期間請求的 OAuth 範圍。 |
#### 偵錯
如果遠 MCP 服器無法進行身驗證,您可以過以下方式診斷問題:
如果遠 MCP 服器無法進行身驗證,您可以過以下方式診斷問題:
```bash
# View auth status for all OAuth-capable servers
@@ -285,19 +285,19 @@ opencode mcp auth list
opencode mcp debug my-oauth-server
```
`mcp debug` 令顯示當前身驗證狀態、測試 HTTP 連接並嘗試 OAuth 發現流程。
`mcp debug` 令顯示當前身驗證狀態、測試 HTTP 連接並嘗試 OAuth 發現流程。
---
## 管理
您的 MCP 可作為 opencode 中的工具以及內工具使用。因此,您可以像任何其他工具一樣過 opencode 配置來管理它們。
您的 MCP 可作為 opencode 中的工具以及內工具使用。因此,您可以像任何其他工具一樣過 opencode 設定來管理它們。
---
### 全球的
### 全
這意味著您可以全啟用或禁用它們。
這意味著您可以全啟用或禁用它們。
```json title="opencode.json" {14}
{
@@ -318,7 +318,7 @@ opencode mcp debug my-oauth-server
}
```
我們可以使用 glob 模式來禁用所有匹配的 MCP。
我們可以使用 glob 模式來禁用所有匹配的 MCP。
```json title="opencode.json" {14}
{
@@ -343,12 +343,12 @@ opencode mcp debug my-oauth-server
---
### 每個代理
### 每個代理
如果您有大量 MCP 服器,您可能只想為每個代理啟用它們並全禁用它們。為此:
如果您有大量 MCP 服器,您可能只想為每個代理啟用它們並全禁用它們。為此:
1. 全局禁用它作為工具。
2. 在您的[代理配置](/docs/agents#tools) 中啟用MCP 服器作為工具。
2. 在您的 [代理設定](/docs/agents#tools) 中,啟用 MCP 服器作為工具。
```json title="opencode.json" {11, 14-18}
{
@@ -375,16 +375,16 @@ opencode mcp debug my-oauth-server
---
#### 全局模式
#### Glob 模式
glob 模式使用簡單的正則表達式 globbing 模式:
glob 模式使用簡單的正規表示式 globbing 模式:
- `*` 匹配零個或多個任意字(例如,`"my-mcp*"` 匹配 `my-mcp_search`、`my-mcp_list` 等)
- `?` 恰好匹配一個字
- 所有其他字均按字面意思匹配
- `*` 匹配零個或多個任意字(例如,`"my-mcp*"` 匹配 `my-mcp_search`、`my-mcp_list` 等)
- `?` 恰好匹配一個字
- 所有其他字均按字面意思匹配
:::note
MCP 服器工具以服器名稱作為前綴進行註冊,因此要禁用服器的所有工具,只需使用:
MCP 服器工具以服器名稱作為前綴進行註冊,因此要禁用服器的所有工具,只需使用:
```
"mymcpservername_*": false
@@ -394,15 +394,15 @@ MCP 服務器工具以服務器名稱作為前綴進行註冊,因此要禁用
---
##
##
以下是一些常見 MCP 服器的例。如果您想記錄其他服器,您可以提交 PR。
以下是一些常見 MCP 服器的例。如果您想記錄其他服器,您可以提交 PR。
---
### 哨兵
### Sentry
添加 [哨兵 MCP 服器](https://mcp.sentry.dev) 以與您的 Sentry 項目和問題進行互。
添加 [Sentry MCP 服器](https://mcp.sentry.dev) 以與您的 Sentry 專案和問題進行互
```json title="opencode.json" {4-8}
{
@@ -417,15 +417,15 @@ MCP 服務器工具以服務器名稱作為前綴進行註冊,因此要禁用
}
```
添加配置使用Sentry進行身驗證:
添加設定後,使用 Sentry 進行身驗證:
```bash
opencode mcp auth sentry
```
這將打開一個瀏覽器窗以完成 OAuth 流程並將 opencode 連接到您的 Sentry 帳
這將打開一個瀏覽器窗以完成 OAuth 流程並將 opencode 連接到您的 Sentry 帳
通過身驗證後,您可以在提示中使用 Sentry 工具來查詢問題、項目和錯誤數據
通過身驗證後,您可以在提示中使用 Sentry 工具來查詢問題、專案和錯誤資料
```txt "use sentry"
Show me the latest unresolved issues in my project. use sentry
@@ -433,9 +433,9 @@ Show me the latest unresolved issues in my project. use sentry
---
### 背景7
### Context7
添加[Context7 MCP 服器](https://github.com/upstash/context7) 以搜索文檔
添加 [Context7 MCP 服器](https://github.com/upstash/context7) 以搜尋文件
```json title="opencode.json" {4-7}
{
@@ -449,7 +449,7 @@ Show me the latest unresolved issues in my project. use sentry
}
```
如果您註冊了免費帳,則可以使用 API 鑰並獲得更高的速率限制。
如果您註冊了免費帳,則可以使用 API 鑰並獲得更高的速率限制。
```json title="opencode.json" {7-9}
{
@@ -466,15 +466,15 @@ Show me the latest unresolved issues in my project. use sentry
}
```
這裡我們假設您設了 `CONTEXT7_API_KEY` 環境變
這裡我們假設您設了 `CONTEXT7_API_KEY` 環境變
將 `use context7` 添加到提示中以使用 Context7 MCP 服器。
將 `use context7` 添加到提示中以使用 Context7 MCP 服器。
```txt "use context7"
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
```
或者,您可以將類似的內容添加到您的[代理.md](/docs/rules/)。
或者,您可以將類似的內容添加到您的 [AGENTS.md](/docs/rules/)。
```md title="AGENTS.md"
When you need to search docs, use `context7` tools.
@@ -484,7 +484,7 @@ When you need to search docs, use `context7` tools.
### Vercel 的 Grep
添加 [Vercel 的 Grep](https://grep.app) MCP 服器以搜 GitHub 上的程式碼片段。
添加 [Vercel 的 Grep](https://grep.app) MCP 服器以搜 GitHub 上的程式碼片段。
```json title="opencode.json" {4-7}
{
@@ -498,13 +498,13 @@ When you need to search docs, use `context7` tools.
}
```
由於我們將 MCP 服器命名為 `gh_grep`,因此您可以將 `use the gh_grep tool` 添加到提示中以使代理使用它。
由於我們將 MCP 服器命名為 `gh_grep`,因此您可以將 `use the gh_grep tool` 添加到提示中以使代理使用它。
```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
```
或者,您可以將類似的內容添加到您的[代理.md](/docs/rules/)。
或者,您可以將類似的內容添加到您的 [AGENTS.md](/docs/rules/)。
```md title="AGENTS.md"
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.

View File

@@ -1,23 +1,23 @@
---
title: 型
description: 配置LLM提供者和模型。
title:
description: 配置 LLM 供應商和模型。
---
OpenCode 使用[AI SDK](https://ai-sdk.dev/) 和[Models.dev](https://models.dev) 來支**75+ LLM 供商**,並且它支持運行本地模型。
OpenCode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.dev) 來支**75+ LLM 供商**,並且它支援執行本地模型。
---
## 供應商
默認情況下會預加載大多數流行的供商。如果您已過 `/connect` 令添加了供商的憑,那麼它們將在您啟動 OpenCode 時可用。
預設情況下會預先載入大多數流行的供商。如果您已過 `/connect` 令添加了供商的憑,那麼它們將在您啟動 OpenCode 時可用。
了解有關[提供者](/docs/providers) 的更多信息
了解有關 [供應商](/docs/providers) 的更多資訊
---
## 選擇型
## 選擇
配置完供商後,您可以過輸入以下內容來選擇您想要的型
配置完供商後,您可以過輸入以下內容來選擇您想要的型:
```bash frame="none"
/models
@@ -25,15 +25,15 @@ OpenCode 使用[AI SDK](https://ai-sdk.dev/) 和[Models.dev](https://models.dev)
---
## 推薦型
## 推薦
那裡有很多型,每週都會有新型問世。
那裡有很多型,每週都會有新型問世。
:::tip
考慮使用我們推薦的模型之一。
:::
然而,既擅長生成程式碼又擅長工具調用的只有少數。
然而,既擅長生成程式碼又擅長工具呼叫的只有少數。
以下是與 OpenCode 配合良好的幾個模型,排名不分先後。 (這不是詳盡的列表,也不一定是最新的):
@@ -46,9 +46,9 @@ OpenCode 使用[AI SDK](https://ai-sdk.dev/) 和[Models.dev](https://models.dev)
---
## 設置默認
## 設定預設
要將其中之一設置為默認模型,您可以在您的
要將其中之一設定為預設模型,您可以在您的
OpenCode 配置。
```json title="opencode.json" {3}
@@ -58,15 +58,15 @@ OpenCode 配置。
}
```
這裡完整的 ID 是`provider_id/model_id`。例如,如果您使用 [OpenCode Zen](/docs/zen),則您將使用 `opencode/gpt-5.1-codex` 來表示 GPT 5.1 Codex。
這裡完整的 ID 是 `provider_id/model_id`。例如,如果您使用 [OpenCode Zen](/docs/zen),則您將使用 `opencode/gpt-5.1-codex` 來表示 GPT 5.1 Codex。
如果您配置了[定制提供商](/docs/providers#custom),則`provider_id` 是配置中`provider` 部分的密鑰`model_id` 是`provider.models` 中的密鑰
如果您配置了 [自定義供應商](/docs/providers#custom),則 `provider_id` 是配置中 `provider` 部分的`model_id` 是 `provider.models` 中的
---
## 配置模型
您可以過 config.json 全局配置模型的選項。
您可以過 config.json 全局配置模型的選項。
```jsonc title="opencode.jsonc" {7-12,19-24}
{
@@ -100,12 +100,12 @@ OpenCode 配置。
}
```
在這裡,我們為兩個內模型配置全局設`gpt-5`過 `openai` 提供商訪問時)和 `claude-sonnet-4-20250514`過 `anthropic` 提供商訪問時)。
置提供商和型號名稱可以在[Models.dev](https://models.dev) 上找到。
在這裡,我們為兩個內模型配置全局設`gpt-5`過 `openai` 供應商存取時)和 `claude-sonnet-4-20250514`過 `anthropic` 供應商存取時)。
建供應商和模型名稱可以在 [Models.dev](https://models.dev) 上找到。
您還可以為您正在使用的任何代理配置這些選項。代理配置會覆此處的所有全局選項。 [了解更多](/docs/agents/#additional)。
您還可以為您正在使用的任何代理配置這些選項。代理配置會覆此處的所有全局選項。 [了解更多](/docs/agents/#additional)。
您還可以定義擴展內變體的自定義變體。變體允許您為同一模型配置不同的設,而無需建重複的目:
您還可以定義擴展內變體的自定義變體。變體允許您為同一模型配置不同的設,而無需建重複的目:
```jsonc title="opencode.jsonc" {6-21}
{
@@ -137,40 +137,40 @@ OpenCode 配置。
## 變體
許多型號支持具有不同配置的多種變體。OpenCode 附帶了流行供商的內置默認變體。
許多模型支援具有不同配置的多種變體。OpenCode 附帶了流行供商的內建預設變體。
### 內變體
### 內變體
OpenCode 附帶了許多提供商的默認變體:
OpenCode 附帶了許多供應商的預設變體:
**Anthropic**
- `high` - 高思預算(默認
- `max` - 最大思預算
- `high` - 高思預算(預設
- `max` - 最大思預算
**OpenAI**
因型而異,但大致如下:
型而異,但大致如下:
- `none` - 沒有推理
- `minimal` - 最少的推理工作
- `low` - 推理工作量低
- `medium` - 中等推理努力
- `medium` - 中等推理工作量
- `high` - 高推理能力
- `xhigh` - 極高的推理能力
**Google**:
- `low` - 降低工作量/代幣預算
- `high` - 更高的努力/代幣預算
- `low` - 降低工作量/Tokens 預算
- `high` - 更高的工作量/Tokens 預算
:::tip
該列表並不全面。許多其他供商也有內置的默認值。
該列表並不全面。許多其他供商也有內建的預設值。
:::
### 定制變體
### 自定義變體
您可以覆現有變體或添加您自己的變體:
您可以覆現有變體或添加您自己的變體:
```jsonc title="opencode.jsonc" {7-18}
{
@@ -201,11 +201,11 @@ OpenCode 附帶了許多提供商的默認變體:
---
## 載模型
## 載模型
當 OpenCode 啟動時,它會按以下優先順序檢查模型:
1. `--model` 或 `-m` 命令行標誌。格式與配置文件中的相同:`provider_id/model_id`。
1. `--model` 或 `-m` 命令列旗標。格式與設定檔中的相同:`provider_id/model_id`。
2. OpenCode 配置中的模型列表。
@@ -216,8 +216,8 @@ OpenCode 附帶了許多提供商的默認變體:
}
```
這裡的格式是`provider/model`。
這裡的格式是 `provider/model`。
3. 最後使用的型
3. 最後使用的型。
4. 第一個模型使用內部優先
4. 第一個模型使用內部優先順序

View File

@@ -1,62 +1,62 @@
---
title: 模式
description: 不同的模式適用於不同的例。
description: 不同的模式適用於不同的使用案例。
---
:::caution
現在過 opencode 配置中的 `agent` 選項配置模式。這
現在過 opencode 設定中的 `agent` 選項配置模式。這
`mode` 選項現已棄用。 [了解更多](/docs/agents)。
:::
opencode 中的模式允許您自定義不同例的行為、工具和提示。
opencode 中的模式允許您自定義不同使用案例的行為、工具和提示。
它具有兩種內模式:**構建**和**計劃**。您可以定制
這些或過 opencode 配置配置您自己的。
它具有兩種內模式:**建置 (Build)**和**計畫 (Plan)**。您可以自定義
這些或過 opencode 設定配置您自己的。
您可以在會話期間在模式之間切換或在配置文件中配置它們。
您可以在工作階段期間在模式之間切換或在設定檔中配置它們。
---
## 內建
opencode 有兩種內模式。
opencode 有兩種內模式。
---
### 建
### 建置 (Build)
建是啟用所有工具的**默認**模式。這是開發工作的標準模式,您需要完全訪問文件操作和系統令。
是啟用所有工具的**預設**模式。這是開發工作的標準模式,您需要完全存取檔案操作和系統令。
---
### 計
### 計畫 (Plan)
專為規劃和分析而設計的受限模式。在計模式下,默認情況下禁用以下工具:
專為規劃和分析而設計的受限模式。在計模式下,預設情況下禁用以下工具:
- `write` - 無法創建新文件
- `edit` - 無法修改現有文件,位於 `.opencode/plans/*.md` 的用於詳細說明計本身的文件除外
- `patch` - 無法應用補丁
- `bash` - 無法執行 shell
- `write` - 無法建立新檔案
- `edit` - 無法修改現有檔案,位於 `.opencode/plans/*.md` 的用於詳細說明計本身的檔案除外
- `patch` - 無法套用 Patch
- `bash` - 無法執行 shell
當您希望 AI 分析程式碼、建議更改或創建計劃而不對程式碼庫進行任何實際修改時,此模式非常有用。
當您希望 AI 分析程式碼、建議變更或建立計畫而不對程式碼庫進行任何實際修改時,此模式非常有用。
---
##
##
您可以在會話期間使用 _Tab_ 鍵在模式之間切換。或者您配置的 `switch_mode` 鍵綁定。
您可以在工作階段期間使用 _Tab_ 鍵在模式之間切換。或者您配置的 `switch_mode` 鍵綁定。
另請參閱:[格式化程](/docs/formatters) 有關程式碼格式配置的信息
另請參閱:[格式化程](/docs/formatters) 有關程式碼格式配置的資訊
---
## 配置
## 設定
您可以自定義內模式或過配置建自己的模式。可以過兩種方式配置模式:
您可以自定義內模式或過配置建自己的模式。可以過兩種方式配置模式:
### JSON 配置
在 `opencode.json` 配置文件中配置模式:
在 `opencode.json` 設定檔中配置模式:
```json title="opencode.json"
{
@@ -85,10 +85,10 @@ opencode 有兩種內置模式。
### Markdown 配置
您還可以使用 Markdown 文件定義模式。將它們放入:
您還可以使用 Markdown 檔案定義模式。將它們放入:
- 全`~/.config/opencode/modes/`
- 項目`.opencode/modes/`
- 全`~/.config/opencode/modes/`
- 專案`.opencode/modes/`
```markdown title="~/.config/opencode/modes/review.md"
---
@@ -110,15 +110,15 @@ You are in code review mode. Focus on:
Provide constructive feedback without making direct changes.
```
Markdown 文件名成為模式名稱(例如,`review.md` 建`review` 模式)。
Markdown 名成為模式名稱(例如,`review.md` 建`review` 模式)。
讓我們詳細看看這些配置選項。
---
### 模型
### 模型 (Model)
使用`model` 配置覆此模式的默認模型。對於使用針對不同任務化的不同模型很有用。例如,更快的規劃模型、更強大的實模型。
使用 `model` 配置覆此模式的預設模型。對於使用針對不同任務最佳化的不同模型很有用。例如,更快的規劃模型、更強大的實模型。
```json title="opencode.json"
{
@@ -132,9 +132,9 @@ Markdown 文件名成為模式名稱(例如,`review.md` 創建`review` 模
---
### 溫度
### 溫度 (Temperature)
使用 `temperature` 配置控制 AI 應的隨機性和創造性。較低的值使應更加集中和確定,而較高的值則增加創造力和可變性。
使用 `temperature` 配置控制 AI 應的隨機性和創造性。較低的值使應更加集中和確定,而較高的值則增加創造力和可變性。
```json title="opencode.json"
{
@@ -151,9 +151,9 @@ Markdown 文件名成為模式名稱(例如,`review.md` 創建`review` 模
溫度值的範圍通常為 0.0 到 1.0
- **0.0-0.2**:非常集中且確定的應,非常適合程式碼分析和規劃
- **0.3-0.5**:具有一定創造力的平衡應,適合一般開發任務
- **0.6-1.0**:更有創意和多樣化的反應,有助於頭腦風暴和探索
- **0.0-0.2**:非常集中且確定的應,非常適合程式碼分析和規劃
- **0.3-0.5**:具有一定創造力的平衡應,適合一般開發任務
- **0.6-1.0**:更有創意和多樣化的反應,有助於腦力激盪和探索
```json title="opencode.json"
{
@@ -173,13 +173,13 @@ Markdown 文件名成為模式名稱(例如,`review.md` 創建`review` 模
}
```
如果未指定溫度opencode 將使用特定於模型的默認值(大多數模型通常為 0Qwen 模型為 0.55)。
如果未指定溫度opencode 將使用特定於模型的預設值(大多數模型通常為 0Qwen 模型為 0.55)。
---
### 迅速的
### 提示 (Prompt)
使用 `prompt` 配置為此模式指定自定義系統提示文件。提示文件應包含特定於該模式用途的指令。
使用 `prompt` 配置為此模式指定自定義系統提示檔案。提示檔案應包含特定於該模式用途的指令。
```json title="opencode.json"
{
@@ -191,14 +191,14 @@ Markdown 文件名成為模式名稱(例如,`review.md` 創建`review` 模
}
```
該路徑是相對於配置文件所在位置的。所以這適用於
opencode 配置和項目特定配置。
該路徑是相對於設定檔所在位置的。所以這適用於
opencode 配置和專案特定配置。
---
### 工具
### 工具 (Tools)
使用 `tools` 配置控制在此模式下可用的工具。您可以過將特定工具設置為`true` 或`false` 來啟用或禁用特定工具。
使用 `tools` 配置控制在此模式下可用的工具。您可以過將特定工具設定為 `true` 或 `false` 來啟用或禁用特定工具。
```json
{
@@ -217,33 +217,33 @@ Markdown 文件名成為模式名稱(例如,`review.md` 創建`review` 模
}
```
如果未指定任何工具,則默認啟用所有工具。
如果未指定任何工具,則預設啟用所有工具。
---
#### 可用工具
這裡是所有可以過模式配置控制的工具。
這裡是所有可以過模式配置控制的工具。
| 工具 | 描述 |
| ----------- | ---------------- |
| `bash` | 執行 shell 令 |
| `edit` | 修改現有文件 |
| `write` | 創建新文件 |
| `read` | 讀取文件內容 |
| `grep` | 搜索文件內容 |
| `glob` | 按模式查找文件 |
| `bash` | 執行 shell 令 |
| `edit` | 修改現有檔案 |
| `write` | 建立新檔案 |
| `read` | 讀取檔案內容 |
| `grep` | 搜尋檔案內容 |
| `glob` | 按模式尋找檔案 |
| `list` | 列出目錄內容 |
| `patch` | 對文件應用補丁 |
| `todowrite` | 管理待辦事項列表 |
| `todoread` | 閱讀待辦事項列表 |
| `webfetch` | 取網頁內容 |
| `patch` | 對檔案套用 Patch |
| `todowrite` | 管理待辦事項清單 |
| `todoread` | 閱讀待辦事項清單 |
| `webfetch` | 取網頁內容 |
---
## 自定義模式
您可以過將自定義模式添加到配置來建自己的自定義模式。以下是使用這兩種方法的例:
您可以過將自定義模式添加到配置來建自己的自定義模式。以下是使用這兩種方法的例:
### 使用 JSON 配置
@@ -266,9 +266,9 @@ Markdown 文件名成為模式名稱(例如,`review.md` 創建`review` 模
}
```
### 使用 Markdown 文件
### 使用 Markdown 檔案
在`.opencode/modes/`中為項目特定模式創建模式文件,在`~/.config/opencode/modes/`中為全模式創建模式文件
`.opencode/modes/` 中為專案特定模式建立模式檔案,在 `~/.config/opencode/modes/` 中為全模式建立模式檔案
```markdown title=".opencode/modes/debug.md"
---
@@ -320,12 +320,12 @@ Priorities:
### 使用案例
以下是不同模式的一些常見例。
以下是不同模式的一些常見使用案例。
- **建模式**:啟用所有工具的完整開發工作
- **計模式**:分析和計,無需更
- **審閱模式**:使用只讀訪問權限和文工具進行程式碼審閱
- **調試模式**:專注於啟用 bash 和讀取工具的調查
- **文模式**:使用文件操作但不使用系統令的文編寫
- **建模式**:啟用所有工具的完整開發工作
- **計模式**:分析和計,無需
- **審閱模式**:使用唯讀存取權限和文工具進行程式碼審閱
- **除錯模式**:專注於啟用 bash 和讀取工具的調查
- **文模式**:使用檔案操作但不使用系統令的文編寫
您可能還會發現不同的模型適用於不同的例。
您可能還會發現不同的模型適用於不同的使用案例。

View File

@@ -1,15 +1,15 @@
---
title: 網
description: 配置代理和自定義證
title: 網
description: 配置代理伺服器和自定義證。
---
opencode 支企業網環境的標準代理環境變和自定義證
opencode 支企業網環境的標準代理環境變和自定義證。
---
## 代理
## 代理伺服器
opencode 尊重標準代理環境變
opencode 遵循標準代理環境變
```bash
# HTTPS proxy (recommended)
@@ -23,30 +23,30 @@ export NO_PROXY=localhost,127.0.0.1
```
:::caution
TUI 與本地 HTTP 服器通。您必須繞過此連接的代理以防止路由循環
TUI 與本地 HTTP 服器通。您必須繞過此連接的代理以防止路由迴圈
:::
您可以使用[CLI 標](/docs/cli#run)配置服務器的端口和主機名。
您可以使用 [CLI 標](/docs/cli#run) 配置伺服器的連接埠和主機名
---
###
### 身分驗
如果您的代理需要基本身驗證,請在 URL 中包含憑
如果您的代理需要基本身驗證,請在 URL 中包含憑
```bash
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
```
:::caution
避免對密碼進行硬編碼。使用環境變或安全憑證儲。
避免對密碼進行寫死。使用環境變或安全憑證儲存區
:::
對於需要高級身驗證(例如 NTLM 或 Kerberos的代理請考慮使用支您的身驗證方法的 LLM 網關
對於需要高級身驗證(例如 NTLM 或 Kerberos的代理請考慮使用支您的身驗證方法的 LLM 閘道
---
## 定制證書
## 自定義憑證
如果您的企業使用自定義 CA 進行 HTTPS 連接,請配置 opencode 以信任它們。
@@ -54,4 +54,4 @@ export HTTPS_PROXY=http://username:password@proxy.example.com:8080
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
```
這適用於代理連接和直接 API 訪問
這適用於代理連接和直接 API 存取

View File

@@ -1,19 +1,19 @@
---
title: 權限
description: 控制哪些操作需要批准才能行。
description: 控制哪些操作需要批准才能行。
---
opencode 使用`permission` 配置來決定給定的操作是否應自動行、提示您或被阻止。
opencode 使用 `permission` 配置來決定給定的操作是否應自動行、提示您或被阻止。
從 `v1.1.1` 開始,舊版 `tools` 布配置已被棄用,並已合併到 `permission` 中。仍支舊的 `tools` 配置以實現向後容性。
從 `v1.1.1` 開始,舊版 `tools` 布配置已被棄用,並已合併到 `permission` 中。仍支舊的 `tools` 配置以實現向後容性。
---
## 行動
## 操作
每個權限規則解析為以下之一:
- `"allow"` — 未經批准
- `"allow"` — 未經批准
- `"ask"` — 提示批准
- `"deny"` — 阻止該操作
@@ -21,7 +21,7 @@ opencode 使用`permission` 配置來決定給定的操作是否應自動運行
## 配置
您可以全局設權限(使用`*`),並覆特定工具。
您可以全局設權限(使用 `*`),並覆特定工具。
```json title="opencode.json"
{
@@ -34,7 +34,7 @@ opencode 使用`permission` 配置來決定給定的操作是否應自動運行
}
```
您還可以一次設所有權限:
您還可以一次設所有權限:
```json title="opencode.json"
{
@@ -45,9 +45,9 @@ opencode 使用`permission` 配置來決定給定的操作是否應自動運行
---
## 粒度規則(對象語法)
## 精細規則(物件語法)
對於大多數權限,您可以使用對像根據工具輸入應用不同的操作。
對於大多數權限,您可以使用物件根據工具輸入應用不同的操作。
```json title="opencode.json"
{
@@ -68,17 +68,17 @@ opencode 使用`permission` 配置來決定給定的操作是否應自動運行
}
```
規則過模式匹配進行評估,**最後匹配的規則獲勝**。常見的模式是將包羅萬象的 `"*"` 規則放在前面,然後再放置更具體的規則。
規則過模式匹配進行評估,**最後匹配的規則獲勝**。常見的模式是將通用的 `"*"` 規則放在前面,然後再放置更具體的規則。
### 通配符
權限模式使用簡單的通配符匹配:
- `*` 匹配零個或多個任意字
- `?` 恰好匹配一個字
- 所有其他字均按字面意思匹配
- `*` 匹配零個或多個任意字
- `?` 恰好匹配一個字
- 所有其他字均按字面意思匹配
### 主目錄
### 主目錄展
您可以在模式開頭使用 `~` 或 `$HOME` 來引用您的主目錄。這對於 [`external_directory`](#external-directories) 規則特別有用。
@@ -88,11 +88,11 @@ opencode 使用`permission` 配置來決定給定的操作是否應自動運行
### 外部目錄
使用 `external_directory` 允許工具調用觸及啟動 opencode 的工作目錄之外的路徑。這適用於任何採用路徑作為輸入的工具(例如`read`、`edit`、`list`、`glob`、`grep` 和許多`bash` 令)。
使用 `external_directory` 允許工具呼叫存取啟動 opencode 的工作目錄之外的路徑。這適用於任何採用路徑作為輸入的工具(例如 `read`、`edit`、`list`、`glob`、`grep` 和許多 `bash` 令)。
擴展(如`~/...`)僅影響模式的編寫方式。它不會使外部路徑成為當前工作空間的一部分,因此仍必須過 `external_directory` 允許工作目錄之外的路徑。
目錄展開(如 `~/...`)僅影響模式的編寫方式。它不會使外部路徑成為當前工作空間的一部分,因此仍必須過 `external_directory` 允許工作目錄之外的路徑。
例如,這允許訪問 `~/projects/personal/` 下的所有內容:
例如,這允許存取 `~/projects/personal/` 下的所有內容:
```json title="opencode.json"
{
@@ -105,7 +105,7 @@ opencode 使用`permission` 配置來決定給定的操作是否應自動運行
}
```
此處允許的任何目錄都會繼承與當前工作空間相同的默認值。自[`read` 默認為 `allow`](#defaults) 起,也允許讀取`external_directory` 下的目,除非被覆。當工具應限制在這些路徑中時添加顯式規則,例如在保留讀取的同時阻止編輯:
此處允許的任何目錄都會繼承與當前工作空間相同的預設值。自 [`read` 預設為 `allow`](#defaults) 起,也允許讀取 `external_directory` 下的目,除非被覆。當工具應限制在這些路徑中時添加顯式規則,例如在保留讀取的同時阻止編輯:
```json title="opencode.json"
{
@@ -121,7 +121,7 @@ opencode 使用`permission` 配置來決定給定的操作是否應自動運行
}
```
將列表重點放在受信任的路徑上,並根據其他工具的需要分層額外的允許或拒絕規則(例如 `bash`)。
將列表重點放在受信任的路徑上,並根據其他工具的需要疊加額外的允許或拒絕規則(例如 `bash`)。
---
@@ -129,30 +129,30 @@ opencode 使用`permission` 配置來決定給定的操作是否應自動運行
opencode 權限由工具名稱和一些安全防護措施決定:
- `read` — 讀取文件(與文件路徑匹配)
- `edit` — 所有文件修改(涵蓋`edit`、`write`、`patch`、`multiedit`
- `glob` — 文件通配符(匹配通配符模式)
- `grep` — 內容搜(匹配正則表達式模式)
- `list` — 列出目錄中的文件(與目錄路徑匹配)
- `bash` — 行 shell 令(匹配 `git status --porcelain` 等解析令)
- `read` — 讀取檔案(與檔案路徑匹配)
- `edit` — 所有檔案修改(涵蓋 `edit`、`write`、`patch`、`multiedit`
- `glob` — 檔案通配符(匹配通配符模式)
- `grep` — 內容搜(匹配正規表示式模式)
- `list` — 列出目錄中的檔案(與目錄路徑匹配)
- `bash` — 行 shell 令(匹配 `git status --porcelain` 等解析令)
- `task` — 啟動子代理(與子代理類型匹配)
- `skill` — 載技能(與技能名稱匹配)
- `lsp` — 行 LSP 查詢(當前非粒度
- `todoread`、`todowrite` — 讀取/更新待辦事項列表
- `skill` — 載技能(與技能名稱匹配)
- `lsp` — 行 LSP 查詢(當前非精細
- `todoread`、`todowrite` — 讀取/更新待辦事項清單
- `webfetch` — 獲取 URL與 URL 匹配)
- `websearch`、`codesearch` — 網頁/程式碼搜(與查詢匹配)
- `external_directory` — 當工具觸及項目工作目錄之外的路徑時觸發
- `doom_loop` — 當相同的工具調用使用相同的輸入重複 3 次時觸發
- `websearch`、`codesearch` — 網頁/程式碼搜(與查詢匹配)
- `external_directory` — 當工具存取專案工作目錄之外的路徑時觸發
- `doom_loop` — 當相同的工具呼叫使用相同的輸入重複 3 次時觸發
---
## 預設值
如果您不指定任何內容opencode 將從許可的默認值開始:
如果您不指定任何內容opencode 將從許可的預設值開始:
- 大多數權限默認為`"allow"`。
- `doom_loop` 和`external_directory` 默認為`"ask"`。
- `read` 是 `"allow"`,但 `.env` 文件默認被拒絕:
- 大多數權限預設為 `"allow"`。
- `doom_loop` 和 `external_directory` 預設為 `"ask"`。
- `read` 是 `"allow"`,但 `.env` 檔案預設被拒絕:
```json title="opencode.json"
{
@@ -169,24 +169,24 @@ opencode 權限由工具名稱和一些安全防護措施決定:
---
## “問”的作用是什麼
## 「問」(Ask) 的作用是什麼
當 opencode 提示批准時UI 會提供三種結果:
- `once` — 僅批准此請求
- `always` — 批准與建議模式匹配的未來請求(對於當前 opencode 會話的其餘部分)
- `always` — 批准與建議模式匹配的未來請求(對於當前 opencode 工作階段的其餘部分)
- `reject` — 拒絕請求
`always` 將批准的模式集由該工具提供例如bash 批准通常將安全令前綴(如 `git status*`)列入白名單)。
`always` 將批准的模式集由該工具提供例如bash 批准通常將安全令前綴(如 `git status*`)列入白名單)。
---
## Agents
## 代理
您可以覆每個代理的權限。代理權限與全局配置合併,代理規則優先。 [了解更多](/docs/agents#permissions) 關於代理權限。
您可以覆每個代理的權限。代理權限與全局配置合併,代理規則優先。 [了解更多](/docs/agents#permissions) 關於代理權限。
:::note
有關更詳細的模式匹配例,請參閱上面的 [粒度規則(對象語法)](#granular-rules-object-syntax) 部分。
有關更詳細的模式匹配例,請參閱上面的 [精細規則(物件語法)](#granular-rules-object-syntax) 部分。
:::
```json title="opencode.json"
@@ -233,5 +233,5 @@ Only analyze code and suggest changes.
```
:::tip
對帶有參數的令使用模式匹配。 `"grep *"` 允許`grep pattern file.txt`,而`"grep"` 單獨會阻止它。像 `git status` 這樣的令適用於默認行為,但在傳遞參數時需要顯式許可(如 `"git status *"`)。
對帶有參數的令使用模式匹配。 `"grep *"` 允許 `grep pattern file.txt`,而 `"grep"` 單獨會阻止它。像 `git status` 這樣的令適用於預設行為,但在傳遞參數時需要顯式許可(如 `"git status *"`)。
:::

View File

@@ -1,34 +1,34 @@
---
title: 插件
description: 編寫您自己的插件來擴展 opencode。
title: 外掛
description: 編寫您自己的外掛來擴展 opencode。
---
插件允許您過掛鉤各種事件和自定義行為來擴展 opencode。您可以創建插件來添加新功能、與外部服務集成或修改 opencode 的默認行為。
外掛允許您過掛鉤各種事件和自定義行為來擴展 opencode。您可以建立外掛來新增新功能、與外部服務整合或修改 opencode 的預設行為。
例如,查看社區創建的[插件](/docs/ecosystem#plugins)。
例如,查看社群建立的[外掛](/docs/ecosystem#plugins)。
---
## 使用插件
## 使用外掛
有兩種加載插件的方法。
有兩種載入外掛的方法。
---
### 從本地文件
### 從本地檔案
將 JavaScript 或 TypeScript 文件放置在插件目錄中。
將 JavaScript 或 TypeScript 檔案放置在外掛目錄中。
- `.opencode/plugins/` - 項目級插件
- `~/.config/opencode/plugins/` - 全局插件
- `.opencode/plugins/` - 專案級外掛
- `~/.config/opencode/plugins/` - 全域外掛
這些目錄中的文件會在啟動時自動載。
這些目錄中的檔案會在啟動時自動載
---
### 來自 npm
配置文件中指定 npm
設定檔中指定 npm 套件
```json title="opencode.json"
{
@@ -37,43 +37,43 @@ description: 編寫您自己的插件來擴展 opencode。
}
```
常規和範圍 npm
常規和範圍 npm 套件
瀏覽[生態系統](/docs/ecosystem#plugins)中的可用插件
瀏覽[生態系統](/docs/ecosystem#plugins)中的可用外掛
---
### 插件是如何安裝的
### 外掛是如何安裝的
**npm 插件** 在啟動時使用 Bun 自動安裝。包及其依賴項緩存在`~/.cache/opencode/node_modules/`中。
**npm 外掛** 在啟動時使用 Bun 自動安裝。套件及其相依套件快取在 `~/.cache/opencode/node_modules/` 中。
**本地插件**直接從插件目錄加載。要使用外部,您必須在配置目錄中建`package.json`(請參閱[依賴關係](#dependencies)),或將插件發佈到npm和[將其添加到您的配置中](/docs/config#plugins)。
**本地外掛**直接從外掛目錄載入。要使用外部套件,您必須在設定目錄中建`package.json`(請參閱[相依性](#dependencies)),或將外掛發佈到 npm 和[將其添加到您的設定中](/docs/config#plugins)。
---
### 載順序
### 載順序
插件從所有源加載,所有掛鉤按順序行。載順序為:
外掛從所有來源載入,所有掛鉤按順序行。載順序為:
1. 全局配置 (`~/.config/opencode/opencode.json`)
2. 項目配置`opencode.json`
3. 全局插件目錄 (`~/.config/opencode/plugins/`)
4. 項目插件目錄(`.opencode/plugins/`)
1. 全域設定 (`~/.config/opencode/opencode.json`)
2. 專案設定`opencode.json`
3. 全域外掛目錄 (`~/.config/opencode/plugins/`)
4. 專案外掛目錄(`.opencode/plugins/`)
具有相同名稱和版本的重複 npm 包將被加載一次。但是,本地插件和名稱相似的 npm 插件都是分開載的。
具有相同名稱和版本的重複 npm 套件將被載入一次。但是,本地外掛和名稱相似的 npm 外掛都是分開載的。
---
## 創建一個插件
## 建立一個外掛
插件是一個 **JavaScript/TypeScript 模**,它出一個或多個插件
功能。每個函接收一個上下文對象並返回一個鉤子對象
外掛是一個 **JavaScript/TypeScript 模**,它出一個或多個外掛
函式。每個函接收一個上下文物件並返回一個掛鉤物件
---
### 依賴關係
### 相依性
本地插件和自定義工具可以使用外部 npm 。將 `package.json` 添加到您的配置目錄,其中包含您需要的依賴項
本地外掛和自定義工具可以使用外部 npm 套件。將 `package.json` 添加到您的設定目錄,其中包含您需要的相依套件
```json title=".opencode/package.json"
{
@@ -83,7 +83,7 @@ description: 編寫您自己的插件來擴展 opencode。
}
```
opencode 在啟動時行 `bun install` 來安裝這些。然後您的插件和工具就可以入它們。
opencode 在啟動時行 `bun install` 來安裝這些。然後您的外掛和工具就可以入它們。
```ts title=".opencode/plugins/my-plugin.ts"
import { escape } from "shescape"
@@ -113,19 +113,19 @@ export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
}
```
插件函數接收:
外掛函式接收:
- `project`:當前項目信息
- `project`:當前專案資訊
- `directory`:當前工作目錄。
- `worktree`git 工作樹路徑。
- `client`:用於與 AI 交互的opencode SDK 客戶端。
- `$`Bun[shell API](https://bun.com/docs/runtime/shell)用於執行令。
- `client`:用於與 AI 互動的 opencode SDK 客戶端。
- `$`Bun[shell API](https://bun.com/docs/runtime/shell) 用於執行令。
---
### TypeScript 支
### TypeScript 支
對於 TypeScript 插件,您可以從插件包中導入類型:
對於 TypeScript 外掛,您可以從外掛套件中匯入類型:
```ts title="my-plugin.ts" {1}
import type { Plugin } from "@opencode-ai/plugin"
@@ -139,29 +139,29 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
---
### 活動
### 事件
插件可以訂閱事件,如下面的例部分所示。以下是可用的不同事件的列表。
外掛可以訂閱事件,如下面的例部分所示。以下是可用的不同事件的列表。
#### 令事件
#### 令事件
- `command.executed`
#### 文件事件
#### 檔案事件
- `file.edited`
- `file.watcher.updated`
#### 安裝活動
#### 安裝事件
- `installation.updated`
#### LSP活動
#### LSP 事件
- `lsp.client.diagnostics`
- `lsp.updated`
#### 息事件
#### 息事件
- `message.part.removed`
- `message.part.updated`
@@ -173,11 +173,11 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
- `permission.asked`
- `permission.replied`
#### 服器事件
#### 服器事件
- `server.connected`
#### 會議活動
#### 工作階段事件
- `session.created`
- `session.compacted`
@@ -188,11 +188,11 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
- `session.status`
- `session.updated`
#### 都都活動
#### Todo 事件
- `todo.updated`
#### 殼牌活動
#### Shell 事件
- `shell.env`
@@ -201,7 +201,7 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
- `tool.execute.after`
- `tool.execute.before`
#### TUI 活動
#### TUI 事件
- `tui.prompt.append`
- `tui.command.execute`
@@ -209,9 +209,9 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
---
##
##
以下是一些可用於擴展 opencode 的插件示例。
以下是一些可用於擴展 opencode 的外掛範例。
---
@@ -232,17 +232,17 @@ export const NotificationPlugin = async ({ project, client, $, directory, worktr
}
```
我們使用 `osascript` 在 macOS 上行 AppleScript。這裡我們用它來發送通知。
我們使用 `osascript` 在 macOS 上行 AppleScript。這裡我們用它來發送通知。
:::note
如果您使用 opencode 桌面應用程式,它可以在應準備就緒或會話出錯時自動發送系統通知。
如果您使用 opencode 桌面應用程式,它可以在應準備就緒或工作階段出錯時自動發送系統通知。
:::
---
### .env 保護
阻止 opencode 讀取 `.env` 文件
阻止 opencode 讀取 `.env` 檔案
```javascript title=".opencode/plugins/env-protection.js"
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
@@ -258,9 +258,9 @@ export const EnvProtection = async ({ project, client, $, directory, worktree })
---
### 注入環境變
### 注入環境變
將環境變注入所有 shell 執行AI 工具和用戶 terminal
將環境變注入所有 shell 執行AI 工具和使用者終端機
```javascript title=".opencode/plugins/inject-env.js"
export const InjectEnvPlugin = async () => {
@@ -275,9 +275,9 @@ export const InjectEnvPlugin = async () => {
---
### 定制工具
### 自定義工具
插件還可以向 opencode 添加自定義工具:
外掛還可以向 opencode 添加自定義工具:
```ts title=".opencode/plugins/custom-tools.ts"
import { type Plugin, tool } from "@opencode-ai/plugin"
@@ -300,19 +300,19 @@ export const CustomToolsPlugin: Plugin = async (ctx) => {
}
```
`tool` 幫助器創建一個 opencode 可以調用的自定義工具。它採用 Zod 模式函並返回一個工具定義:
`tool` 輔助程式建立一個 opencode 可以呼叫的自定義工具。它採用 Zod 模式函並返回一個工具定義:
- `description`:該工具的作用
- `args`:工具參數的 Zod 模式
- `execute`調用工具時行的函
- `execute`呼叫工具時行的函
您的自定義工具將可與內工具一起用於opencode。
您的自定義工具將可與內工具一起用於 opencode。
---
### 記錄
使用 `client.app.log()` 而不是 `console.log` 進行結構化日誌記錄:
使用 `client.app.log()` 而不是 `console.log` 進行結構化記錄:
```ts title=".opencode/plugins/my-plugin.ts"
export const MyPlugin = async ({ client }) => {
@@ -327,13 +327,13 @@ export const MyPlugin = async ({ client }) => {
}
```
`debug`、`info`、`warn`、`error`。詳情請參閱[SDK 文件](https://opencode.ai/docs/sdk)。
級:`debug`、`info`、`warn`、`error`。詳情請參閱 [SDK 文件](https://opencode.ai/docs/sdk)。
---
### 壓
### 壓縮掛
自定義壓縮會話時包含的上下文:
自定義壓縮工作階段時包含的上下文:
```ts title=".opencode/plugins/compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
@@ -343,7 +343,7 @@ export const CompactionPlugin: Plugin = async (ctx) => {
"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
@@ -355,9 +355,9 @@ Include any state that should persist across compaction:
}
```
`experimental.session.compacting` 鉤在 LLM 生成延續摘要之前觸發。使用它來注入默認壓縮提示會錯過的特定於域的上下文。
`experimental.session.compacting` 鉤在 LLM 生成延續摘要之前觸發。使用它來注入預設壓縮提示會錯過的特定於域的上下文。
您還可以過設`output.prompt`來完全替換壓縮提示:
您還可以過設`output.prompt` 來完全替換壓縮提示:
```ts title=".opencode/plugins/custom-compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
@@ -382,4 +382,4 @@ Format as a structured prompt that a new agent can use to resume work.
}
```
當設`output.prompt`時,它完全取代默認的壓縮提示。在這種情況下,`output.context` 數組將被忽略。
當設`output.prompt` 時,它完全取代預設的壓縮提示。在這種情況下,`output.context` 陣列將被忽略。

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +1,29 @@
---
title: 規則
description: 設opencode的自定義指令。
description: 設opencode 的自定義指令。
---
您可以通過創建 `AGENTS.md` 文件來提供 opencode 的自定義指令。這和Cursor的規則類似。它包含將包含在 LLM 上下文中的說明,以便為您的特定項目自定義其行為。
您可以透過建立 `AGENTS.md` 檔案來提供 opencode 的自定義指令。這和 Cursor 的規則類似。它包含將包含在 LLM 上下文中的說明,以便為您的特定專案自定義其行為。
---
## 初始化
建新的`AGENTS.md`文件您可以在opencode中運行`/init`令。
要建新的 `AGENTS.md` 檔案,您可以在 opencode 中執行 `/init`令。
:::tip
您應該將項目的 `AGENTS.md` 文件提交到 Git。
您應該將專案的 `AGENTS.md` 檔案提交到 Git。
:::
這將掃描您的項目及其所有內容,以了解該項目的內容並生成一個 `AGENTS.md` 文件。這有助於 opencode 更好地導航項目
這將掃描您的專案及其所有內容,以了解該專案的內容並生成一個 `AGENTS.md` 檔案。這有助於 opencode 更好地導覽專案
如果您有現有的 `AGENTS.md` 文件,這將嘗試添加到其中。
如果您有現有的 `AGENTS.md` 檔案,這將嘗試添加到其中。
---
## 例
##
您也可以手動創建此文件。以下是您可以放入 `AGENTS.md` 文件中的一些內容的例。
您也可以手動建立此檔案。以下是您可以放入 `AGENTS.md` 檔案中的一些內容的例。
```markdown title="AGENTS.md"
# SST v3 Monorepo Project
@@ -48,33 +48,33 @@ This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for
- Import shared modules using workspace names: `@my-app/core/example`
```
我們在此處添加特定於項目的說明,這將在您的團隊中共享。
我們在此處添加特定於專案的說明,這將在您的團隊中共享。
---
## 類型
opencode 還支從多個位置讀取 `AGENTS.md` 文件。這有不同的目的。
opencode 還支從多個位置讀取 `AGENTS.md` 檔案。這有不同的目的。
### 專案
將 `AGENTS.md` 放置在項目根目錄中以獲取特定於項目的規則。這些僅適用於您在此目錄或其子目錄中工作時。
將 `AGENTS.md` 放置在專案根目錄中以獲取特定於專案的規則。這些僅適用於您在此目錄或其子目錄中工作時。
### 全球的
### 全
您還可以在 `~/.config/opencode/AGENTS.md` 文件中包含全規則。這適用於所有opencode會話
您還可以在 `~/.config/opencode/AGENTS.md` 檔案中包含全規則。這適用於所有 opencode 工作階段
由於這未提交給 Git 或與您的團隊共享,因此我們建議使用它來指定 LLM 應遵循的任何個人規則。
### 克勞德程式碼兼容性
### Claude Code 相容性
對於從 Claude Code 遷移的用戶opencode 支 Claude Code 的文件約定作為後備
對於從 Claude Code 遷移的使用者opencode 支 Claude Code 的檔案慣例作為備援
- **項目規則**項目目錄中的`CLAUDE.md`(如果`AGENTS.md`不存在則使用)
- **全規則**`~/.claude/CLAUDE.md`(如果不存在`~/.config/opencode/AGENTS.md`則使用)
- **技能**`~/.claude/skills/` — 詳情請參閱[代理技](/docs/skills/)
- **專案規則**專案目錄中的 `CLAUDE.md`(如果 `AGENTS.md` 不存在則使用)
- **全規則**`~/.claude/CLAUDE.md`(如果不存在 `~/.config/opencode/AGENTS.md` 則使用)
- **技能**`~/.claude/skills/` — 詳情請參閱 [代理技](/docs/skills/)
要禁用 Claude Code 容性,請設以下環境變之一:
要禁用 Claude Code 容性,請設以下環境變之一:
```bash
export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
@@ -84,23 +84,23 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
---
## 優先
## 優先順序
當 opencode 啟動時,它會按以下順序找規則文件
當 opencode 啟動時,它會按以下順序找規則檔案
1. **本地文件**,從當前目錄向上遍歷(`AGENTS.md`,`CLAUDE.md`)
2. **全局文件** `~/.config/opencode/AGENTS.md`
3. **克勞德程式碼文件**位於`~/.claude/CLAUDE.md`(除非禁用)
1. **本地檔案**,從當前目錄向上遍歷 (`AGENTS.md`,`CLAUDE.md`)
2. **全域檔案** `~/.config/opencode/AGENTS.md`
3. **Claude Code 檔案** 位於 `~/.claude/CLAUDE.md`(除非禁用)
第一個匹配的文件在每個類別中獲勝。例如,如果您同時擁有`AGENTS.md` 和`CLAUDE.md`,則僅使用`AGENTS.md`。同樣,`~/.config/opencode/AGENTS.md` 優先於`~/.claude/CLAUDE.md`。
第一個匹配的檔案在每個類別中獲勝。例如,如果您同時擁有 `AGENTS.md` 和 `CLAUDE.md`,則僅使用 `AGENTS.md`。同樣,`~/.config/opencode/AGENTS.md` 優先於 `~/.claude/CLAUDE.md`。
---
## 定制說明
## 自定義指令
您可以在 `opencode.json` 或全 `~/.config/opencode/opencode.json` 中指定自定義指令文件。這允許您和您的團隊重用現有規則,而不必將它們複製到 AGENTS.md。
您可以在 `opencode.json` 或全 `~/.config/opencode/opencode.json` 中指定自定義指令檔案。這允許您和您的團隊重複使用現有規則,而不必將它們複製到 AGENTS.md。
例:
```json title="opencode.json"
{
@@ -109,7 +109,7 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
}
```
您還可以使用遠 URL 從 Web 加載說明
您還可以使用遠 URL 從 Web 載入指令
```json title="opencode.json"
{
@@ -118,19 +118,19 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
}
```
指令的獲取有 5 秒的超時時間。
指令的獲取有 5 秒的超時時間。
所有說明文件均與您的`AGENTS.md` 文件合併。
所有指令檔案均與您的 `AGENTS.md` 檔案合併。
---
## 引用外部文件
## 引用外部檔案
雖然 opencode 不會自動解析 `AGENTS.md` 中的文件引用,但您可以過兩種方式實現類似的功能:
雖然 opencode 不會自動解析 `AGENTS.md` 中的檔案引用,但您可以過兩種方式實現類似的功能:
### 使用 opencode.json
推薦的方法是在`instructions`中使用`opencode.json`字段
推薦的方法是在 `instructions` 中使用 `opencode.json` 欄位
```json title="opencode.json"
{
@@ -141,7 +141,7 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
### AGENTS.md 中的手動說明
您可以過在 `AGENTS.md` 中提供明確的指令來教 opencode 讀取外部文件。這是一個實際的例
您可以過在 `AGENTS.md` 中提供明確的指令來教 opencode 讀取外部檔案。這是一個實際的例:
```markdown title="AGENTS.md"
# TypeScript Project Rules
@@ -170,11 +170,11 @@ Read the following file immediately as it's relevant to all workflows: @rules/ge
這種方法允許您:
- 創建模塊化、可重用的規則文件
- 過符號連結或 git 子模塊在項目之間共享規則
- 建立模組化、可重複使用的規則檔案
- 過符號連結或 git 子模組在專案之間共享規則
- 保持 AGENTS.md 簡潔,同時參考詳細指南
- 確保 opencode 僅在特定任務需要時加載文件
- 確保 opencode 僅在特定任務需要時載入檔案
:::tip
對於 monorepos 或具有共享標準的項目,使用 `opencode.json` 和 glob 模式(如 `packages/*/AGENTS.md`)比手動指令更易於維護。
對於 Monorepos 或具有共享標準的專案,使用 `opencode.json` 和 glob 模式(如 `packages/*/AGENTS.md`)比手動指令更易於維護。
:::

View File

@@ -1,15 +1,15 @@
---
title: 軟件開發工具包
description: opencode 服器的類型安全 JS 客戶端。
title: SDK
description: opencode 服器的類型安全 JS 客戶端。
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
opencode JS/TS SDK 提供類型安全的客戶端用於與服務器交互
使用它以程方式構建集成和控制opencode。
opencode JS/TS SDK 提供類型安全的客戶端用於與伺服器互動
使用它以程式化方式構建整合和控制 opencode。
[了解更多](/docs/server) 關於服器如何工作。例如,查看社構建的[專案](/docs/ecosystem#projects)。
[了解更多](/docs/server) 關於服器如何工作。例如,查看社構建的[專案](/docs/ecosystem#projects)。
---
@@ -23,9 +23,9 @@ npm install @opencode-ai/sdk
---
## 建客戶端
## 建客戶端
建 opencode 的實例:
opencode 的實例:
```javascript
import { createOpencode } from "@opencode-ai/sdk"
@@ -33,23 +33,23 @@ import { createOpencode } from "@opencode-ai/sdk"
const { client } = await createOpencode()
```
這會同時啟動服器和客戶端
這會同時啟動服器和客戶端
#### 選項
| 選項 | 類型 | 描述 | 默認 |
| 選項 | 類型 | 描述 | 預設 |
| ---------- | ------------- | ------------------------------ | ----------- |
| `hostname` | `string` | 服器主機名 | `127.0.0.1` |
| `port` | `number` | 服務器端口 | `4096` |
| `signal` | `AbortSignal` | 取消的中止號 | `undefined` |
| `timeout` | `number` | 服器啟動超時(以毫秒為單位) | `5000` |
| `config` | `Config` | 配置對象 | `{}` |
| `hostname` | `string` | 服器主機名 | `127.0.0.1` |
| `port` | `number` | 伺服器連接埠 | `4096` |
| `signal` | `AbortSignal` | 取消的中止號 | `undefined` |
| `timeout` | `number` | 服器啟動超時(以毫秒為單位) | `5000` |
| `config` | `Config` | 設定物件 | `{}` |
---
## 配置
您可以傳遞配置對象來自定義行為。該實例仍然會選擇您的`opencode.json`,但您可以覆或添加內聯配置
您可以傳遞設定物件來自定義行為。該實例仍然會選擇您的 `opencode.json`,但您可以覆或添加內聯設定
```javascript
import { createOpencode } from "@opencode-ai/sdk"
@@ -67,9 +67,9 @@ console.log(`Server running at ${opencode.server.url}`)
opencode.server.close()
```
## 僅限客戶
## 僅限客戶
如果您已經有一個正在行的 opencode 實例,您可以建一個客戶端實例來連接到它:
如果您已經有一個正在行的 opencode 實例,您可以建一個客戶端實例來連接到它:
```javascript
import { createOpencodeClient } from "@opencode-ai/sdk"
@@ -81,11 +81,11 @@ const client = createOpencodeClient({
#### 選項
| 選項 | 類型 | 描述 | 默認 |
| 選項 | 類型 | 描述 | 預設 |
| --------------- | ---------- | ---------------------------- | ----------------------- |
| `baseUrl` | `string` | 服器的 URL | `http://localhost:4096` |
| `fetch` | `function` | 自定義獲取實現 | `globalThis.fetch` |
| `parseAs` | `string` | 應解析方法 | `auto` |
| `baseUrl` | `string` | 服器的 URL | `http://localhost:4096` |
| `fetch` | `function` | 自定義 fetch 實作 | `globalThis.fetch` |
| `parseAs` | `string` | 應解析方法 | `auto` |
| `responseStyle` | `string` | 返回樣式:`data` 或 `fields` | `fields` |
| `throwOnError` | `boolean` | 拋出錯誤而不是返回 | `false` |
@@ -93,19 +93,19 @@ const client = createOpencodeClient({
## 類型
SDK 包含所有 API 類型的 TypeScript 定義。直接入它們:
SDK 包含所有 API 類型的 TypeScript 定義。直接入它們:
```typescript
import type { Session, Message, Part } from "@opencode-ai/sdk"
```
所有類型均根據服器的 OpenAPI 規範生成,並可在 <a href={typesUrl}>types 文件</a>中找到。
所有類型均根據服器的 OpenAPI 規範生成,並可在 <a href={typesUrl}>types 檔案</a>中找到。
---
## 錯誤
SDK 可能會拋出錯誤,您可以捕並處理這些錯誤:
SDK 可能會拋出錯誤,您可以捕並處理這些錯誤:
```typescript
try {
@@ -117,21 +117,21 @@ try {
---
## 蜜蜂
## API
SDK 過類型安全的客戶端公開所有服器 API。
SDK 過類型安全的客戶端公開所有服器 API。
---
### 全球的
### 全
| 方法 | 描述 | 回應 |
| ----------------- | ------------------------ | ------------------------------------ |
| `global.health()` | 檢查服器健康狀和版本 | `{ healthy: true, version: string }` |
| `global.health()` | 檢查服器健康狀和版本 | `{ healthy: true, version: string }` |
---
####
####
```javascript
const health = await client.global.health()
@@ -142,14 +142,14 @@ console.log(health.data.version)
### 應用程式
| 方法 | 描述 | 回應 |
| -------------- | ------------------ | ------------------------------------------ |
| `app.log()` | 寫入日誌目 | `boolean` |
| `app.agents()` | 列出所有可用的代理 | <a href={typesUrl}><code>代理[]</code></a> |
| 方法 | 描述 | 回應 |
| -------------- | ------------------ | ------------------------------------------- |
| `app.log()` | 寫入日誌目 | `boolean` |
| `app.agents()` | 列出所有可用的代理 | <a href={typesUrl}><code>Agent[]</code></a> |
---
####
####
```javascript
// Write a log entry
@@ -169,14 +169,14 @@ const agents = await client.app.agents()
### 專案
| 方法 | 描述 | 回應 |
| ------------------- | ------------ | ------------------------------------------ |
| `project.list()` | 列出所有項目 | <a href={typesUrl}><code>項目[]</code></a> |
| `project.current()` | 獲取當前項目 | <a href={typesUrl}><code>項目</code></a> |
| 方法 | 描述 | 回應 |
| ------------------- | ------------ | --------------------------------------------- |
| `project.list()` | 列出所有專案 | <a href={typesUrl}><code>Project[]</code></a> |
| `project.current()` | 獲取當前專案 | <a href={typesUrl}><code>Project</code></a> |
---
####
####
```javascript
// List all projects
@@ -188,15 +188,15 @@ const currentProject = await client.project.current()
---
###
### 路
| 方法 | 描述 | 回應 |
| ------------ | ------------ | ---------------------------------------- |
| `path.get()` | 獲取當前路徑 | <a href={typesUrl}><code>路徑</code></a> |
| `path.get()` | 獲取當前路徑 | <a href={typesUrl}><code>Path</code></a> |
---
####
####
```javascript
// Get current path information
@@ -209,12 +209,12 @@ const pathInfo = await client.path.get()
| 方法 | 描述 | 回應 |
| -------------------- | -------------------- | ----------------------------------------------------------------------------------------------------- |
| `config.get()` | 獲取配置信息 | <a href={typesUrl}><code>配置</code></a> |
| `config.providers()` | 列出提供商和默認模型 | `{ providers: `<a href={typesUrl}><code>Provider[]</code></a>`, default: { [key: string]: string } }` |
| `config.get()` | 獲取設定資訊 | <a href={typesUrl}><code>Config</code></a> |
| `config.providers()` | 列出供應商和預設模型 | `{ providers: `<a href={typesUrl}><code>Provider[]</code></a>`, default: { [key: string]: string } }` |
---
####
####
```javascript
const config = await client.config.get()
@@ -224,33 +224,33 @@ const { providers, default: defaults } = await client.config.providers()
---
### 會議
### 工作階段
| 方法 | 描述 | 筆記 |
| ---------------------------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `session.list()` | 列出會話 | 返回 <a href={typesUrl}><code>Session[]</code></a> |
| `session.get({ path })` | 獲取會話 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.children({ path })` | 列出子會話 | 返回 <a href={typesUrl}><code>Session[]</code></a> |
| `session.create({ body })` | 創建會話 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.delete({ path })` | 刪除會話 | 返回 `boolean` |
| `session.update({ path, body })` | 更新會話屬性 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.init({ path, body })` | 分析應用程式並建`AGENTS.md` | 返回 `boolean` |
| `session.abort({ path })` | 中止正在行的會話 | 返回 `boolean` |
| `session.share({ path })` | 分享 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.unshare({ path })` | 取消共享會話 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.summarize({ path, body })` | 會議總結 | 返回 `boolean` |
| `session.messages({ path })` | 列出會話中的消息 | 返回 `{ info: `<a href={typesUrl}><code>消息</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}[]` |
| `session.message({ path })` | 獲取息詳情 | 返回 `{ info: `<a href={typesUrl}><code>消息</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.prompt({ path, body })` | 發送提示信息 | `body.noReply: true` 返回 UserMessage僅上下文默認返回帶有 AI 應的 <a href={typesUrl}><code>AssistantMessage</code></a> |
| `session.command({ path, body })` | 向會話發送命令 | 返回 `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.shell({ path, body })` | 行 shell 命令 | 返回 <a href={typesUrl}><code>AssistantMessage</code></a> |
| `session.revert({ path, body })` | 回复消息 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.unrevert({ path })` | 恢復已恢復的消息 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `postSessionByIdPermissionsByPermissionId({ path, body })` | 回權限請求 | 返回 `boolean` |
| 方法 | 描述 | 備註 |
| ---------------------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| `session.list()` | 列出工作階段 | 返回 <a href={typesUrl}><code>Session[]</code></a> |
| `session.get({ path })` | 獲取工作階段 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.children({ path })` | 列出子工作階段 | 返回 <a href={typesUrl}><code>Session[]</code></a> |
| `session.create({ body })` | 建立工作階段 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.delete({ path })` | 刪除工作階段 | 返回 `boolean` |
| `session.update({ path, body })` | 更新工作階段屬性 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.init({ path, body })` | 分析應用程式並建`AGENTS.md` | 返回 `boolean` |
| `session.abort({ path })` | 中止正在行的工作階段 | 返回 `boolean` |
| `session.share({ path })` | 分享工作階段 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.unshare({ path })` | 取消分享工作階段 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.summarize({ path, body })` | 工作階段摘要 | 返回 `boolean` |
| `session.messages({ path })` | 列出工作階段中的訊息 | 返回 `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}[]` |
| `session.message({ path })` | 獲取息詳情 | 返回 `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.prompt({ path, body })` | 發送提示訊息 | `body.noReply: true` 返回 UserMessage僅上下文預設返回帶有 AI 應的 <a href={typesUrl}><code>AssistantMessage</code></a> |
| `session.command({ path, body })` | 向工作階段發送指令 | 返回 `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.shell({ path, body })` | 行 shell 指令 | 返回 <a href={typesUrl}><code>AssistantMessage</code></a> |
| `session.revert({ path, body })` | 還原訊息 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `session.unrevert({ path })` | 恢復已還原的訊息 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `postSessionByIdPermissionsByPermissionId({ path, body })` | 回權限請求 | 返回 `boolean` |
---
####
####
```javascript
// Create and manage sessions
@@ -281,25 +281,25 @@ await client.session.prompt({
---
### 文件
### 檔案
| 方法 | 描述 | 回應 |
| ------------------------- | -------------------- | ----------------------------------------------------------------------------------- |
| `find.text({ query })` | 搜索文件中的文 | 具有 `path`, `lines`, `line_number`, `absolute_offset`, `submatches` 的匹配對象陣列 |
| `find.files({ query })` | 按名稱查找文件和目錄 | `string[]`(路徑) |
| `find.symbols({ query })` | 找工作區符號 | <a href={typesUrl}><code>Symbol[]</code></a> |
| `file.read({ query })` | 讀取文件 | `{ type: "raw" \| "patch", content: string }` |
| `file.status({ query? })` | 獲取跟蹤文件的狀態 | <a href={typesUrl}><code>File[]</code></a> |
| `find.text({ query })` | 搜尋檔案中的文 | 具有 `path`, `lines`, `line_number`, `absolute_offset`, `submatches` 的匹配物件陣列 |
| `find.files({ query })` | 按名稱尋找檔案和目錄 | `string[]`(路徑) |
| `find.symbols({ query })` | 找工作區符號 | <a href={typesUrl}><code>Symbol[]</code></a> |
| `file.read({ query })` | 讀取檔案 | `{ type: "raw" \| "patch", content: string }` |
| `file.status({ query? })` | 獲取追蹤檔案的狀態 | <a href={typesUrl}><code>File[]</code></a> |
`find.files` 支一些可選的查詢字段
`find.files` 支一些可選的查詢欄位
- `type``"file"``"directory"`
- `directory`:覆蓋搜索的項目根目錄
- `type``"file"``"directory"`
- `directory`:覆寫搜尋的專案根目錄
- `limit`:最大結果 (1200)
---
####
####
```javascript
// Search and read files
@@ -324,21 +324,21 @@ const content = await client.file.read({
### TUI
| 方法 | 描述 | 回應 |
| ------------------------------ | ---------------- | --------- |
| `tui.appendPrompt({ body })` | 將文附加到提示 | `boolean` |
| `tui.openHelp()` | 打開幫助對話框 | `boolean` |
| `tui.openSessions()` | 打開會話選擇器 | `boolean` |
| `tui.openThemes()` | 打開主題選擇器 | `boolean` |
| `tui.openModels()` | 打開模型選擇器 | `boolean` |
| `tui.submitPrompt()` | 提交當前提示 | `boolean` |
| `tui.clearPrompt()` | 清除提示 | `boolean` |
| `tui.executeCommand({ body })` | 執行命令 | `boolean` |
| `tui.showToast({ body })` | 顯示 toast 通知 | `boolean` |
| 方法 | 描述 | 回應 |
| ------------------------------ | ------------------ | --------- |
| `tui.appendPrompt({ body })` | 將文附加到提示 | `boolean` |
| `tui.openHelp()` | 打開說明對話方塊 | `boolean` |
| `tui.openSessions()` | 打開工作階段選擇器 | `boolean` |
| `tui.openThemes()` | 打開主題選擇器 | `boolean` |
| `tui.openModels()` | 打開模型選擇器 | `boolean` |
| `tui.submitPrompt()` | 提交當前提示 | `boolean` |
| `tui.clearPrompt()` | 清除提示 | `boolean` |
| `tui.executeCommand({ body })` | 執行指令 | `boolean` |
| `tui.showToast({ body })` | 顯示 Toast 通知 | `boolean` |
---
####
####
```javascript
// Control TUI interface
@@ -357,11 +357,11 @@ await client.tui.showToast({
| 方法 | 描述 | 回應 |
| ------------------- | ---------------- | --------- |
| `auth.set({ ... })` | 設置身份驗證憑 | `boolean` |
| `auth.set({ ... })` | 設定身分驗證憑 | `boolean` |
---
####
####
```javascript
await client.auth.set({
@@ -372,15 +372,15 @@ await client.auth.set({
---
### 活動
### 事件
| 方法 | 描述 | 回應 |
| ------------------- | ------------------ | ------------------ |
| `event.subscribe()` | 服器發送的事件流 | 服器發送的事件流 |
| 方法 | 描述 | 回應 |
| ------------------- | -------------------- | -------------------- |
| `event.subscribe()` | 服器發送的事件流 | 服器發送的事件流 |
---
####
####
```javascript
// Listen to real-time events

View File

@@ -1,12 +1,12 @@
---
title: 伺服器
description: 過 HTTP 與 opencode 服務器交互
description: 過 HTTP 與 opencode 伺服器互動
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
`opencode serve` 命令運行一個無 HTTP 服器,該服器公開opencode客戶端可以使用的 OpenAPI 端點。
`opencode serve` 指令執行一個無介面 HTTP 服器,該服器公開 opencode 客戶端可以使用的 OpenAPI 端點。
---
@@ -18,13 +18,13 @@ opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
#### 選項
| 旗 | 描述 | 默認 |
| --------------- | --------------------- | ---------------- |
| `--port` | 監聽端口 | `4096` |
| `--hostname` | 監聽的主機名 | `127.0.0.1` |
| `--mdns` | 啟用 mDNS 發現 | `false` |
| `--mdns-domain` | mDNS 服務的自定義域名 | `opencode.local` |
| `--cors` | 允許的其他瀏覽器來源 | `[]` |
| 旗 | 描述 | 預設 |
| --------------- | ------------------------- | ---------------- |
| `--port` | 監聽連接埠 | `4096` |
| `--hostname` | 監聽的主機名 | `127.0.0.1` |
| `--mdns` | 啟用 mDNS 探索 | `false` |
| `--mdns-domain` | mDNS 服務的自定義域名 | `opencode.local` |
| `--cors` | 允許的其他瀏覽器來源 | `[]` |
`--cors` 可以多次傳遞:
@@ -34,9 +34,9 @@ opencode serve --cors http://localhost:5173 --cors https://app.example.com
---
### 驗證
### 身分驗證
`OPENCODE_SERVER_PASSWORD`以使用HTTP基本身驗證保護服務器。用戶名默認為`opencode`,或設`OPENCODE_SERVER_USERNAME`來覆蓋它。這適用於`opencode serve` 和`opencode web`。
`OPENCODE_SERVER_PASSWORD` 以使用 HTTP 基本身驗證保護伺服器。使用者名稱預設為 `opencode`,或設`OPENCODE_SERVER_USERNAME` 來覆蓋它。這適用於 `opencode serve` 和 `opencode web`。
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve
@@ -46,71 +46,71 @@ OPENCODE_SERVER_PASSWORD=your-password opencode serve
### 它是如何運作的
當您行 `opencode` 時,它會啟動 TUI 和服器。 TUI 是哪裡
與服器對話的客戶端。服器公開 OpenAPI 3.1 規範
端點。該端點還用於生成[軟開發工具包](/docs/sdk)。
當您行 `opencode` 時,它會啟動 TUI 和服器。 TUI 是
服器對話的客戶端。服器公開 OpenAPI 3.1 規範
端點。該端點還用於生成 [軟開發套件](/docs/sdk)。
:::tip
使用 opencode 服務器以編程方式與 opencode 進行互。
使用 opencode 伺服器以程式化方式與 opencode 進行互
:::
此架構讓 opencode 支多個客戶端,並允許您以程方式與 opencode 進行互。
此架構讓 opencode 支多個客戶端,並允許您以程式化方式與 opencode 進行互
您可以行 `opencode serve` 來啟動獨立服器。如果您有
opencode TUI 行,`opencode serve` 將啟動一個新服器。
您可以行 `opencode serve` 來啟動獨立服器。如果您有
opencode TUI 行,`opencode serve` 將啟動一個新服器。
---
#### 連接到現有服
#### 連接到現有服器
當您啟動 TUI 時,它會隨機分配端口和主機名。您可以改為傳入`--hostname` 和`--port` [旗](/docs/cli)。然後使用它連接到其服器。
當您啟動 TUI 時,它會隨機分配連接埠和主機名。您可以改為傳入 `--hostname` 和 `--port` [旗](/docs/cli)。然後使用它連接到其服器。
[`/tui`](#tui) 端點可用於通過服務器驅動 TUI。例如您可以預填充或行提示。此設由 opencode [集成開發環境](/docs/ide) 插件使用。
[`/tui`](#tui) 端點可用於透過伺服器驅動 TUI。例如您可以預填充或行提示。此設由 opencode [IDE](/docs/ide) 外掛使用。
---
## 規格
器發布了 OpenAPI 3.1 規範,可以在以下位置查看:
服器發布了 OpenAPI 3.1 規範,可以在以下位置查看:
```
http://<hostname>:<port>/doc
```
例如,`http://localhost:4096/doc`。使用規範生成客戶端或檢查請求和應類型。或者在 Swagger 瀏覽器中查看它。
例如,`http://localhost:4096/doc`。使用規範生成客戶端或檢查請求和應類型。或者在 Swagger 瀏覽器中查看它。
---
## 蜜蜂
## API
opencode 服器公開以下 API。
opencode 服器公開以下 API。
---
### 全球的
### 全
| 方法 | 路徑 | 描述 | 回應 |
| ----- | ---------------- | ------------------------ | ------------------------------------ |
| `GET` | `/global/health` | 獲取服務器運行狀況和版本 | `{ healthy: true, version: string }` |
| `GET` | `/global/event` | 獲取全事件SSE 流) | 事件流 |
| `GET` | `/global/health` | 獲取伺服器健康狀態和版本 | `{ healthy: true, version: string }` |
| `GET` | `/global/event` | 獲取全事件SSE 流) | 事件流 |
---
### 專案
| 方法 | 路徑 | 描述 | 回應 |
| ----- | ------------------ | ------------ | ------------------------------------------ |
| `GET` | `/project` | 列出所有項目 | <a href={typesUrl}><code>項目[]</code></a> |
| `GET` | `/project/current` | 獲取當前項目 | <a href={typesUrl}><code>項目</code></a> |
| 方法 | 路徑 | 描述 | 回應 |
| ----- | ------------------ | ------------ | --------------------------------------------- |
| `GET` | `/project` | 列出所有專案 | <a href={typesUrl}><code>Project[]</code></a> |
| `GET` | `/project/current` | 獲取當前專案 | <a href={typesUrl}><code>Project</code></a> |
---
### 路徑和VCS
### 路徑和 VCS
| 方法 | 路徑 | 描述 | 回應 |
| ----- | ------- | ----------------------- | ------------------------------------------- |
| `GET` | `/path` | 獲取當前路徑 | <a href={typesUrl}><code>路徑</code></a> |
| `GET` | `/vcs` | 獲取當前項目的 VCS 信息 | <a href={typesUrl}><code>VcsInfo</code></a> |
| `GET` | `/path` | 獲取當前路徑 | <a href={typesUrl}><code>Path</code></a> |
| `GET` | `/vcs` | 獲取當前專案的 VCS 資訊 | <a href={typesUrl}><code>VcsInfo</code></a> |
---
@@ -124,89 +124,89 @@ opencode 服務器公開以下 API。
### 配置
| 方法 | 路徑 | 描述 | 回應 |
| ------- | ------------------- | -------------------- | -------------------------------------------------------------------------------------- |
| `GET` | `/config` | 獲取配置信息 | <a href={typesUrl}><code>配置</code></a> |
| `PATCH` | `/config` | 更新配置 | <a href={typesUrl}><code>配置</code></a> |
| `GET` | `/config/providers` | 列出提供商和默認模型 | `{ providers: `<a href={typesUrl}>提供商[]</a>`, default: { [key: string]: string } }` |
| 方法 | 路徑 | 描述 | 回應 |
| ------- | ------------------- | -------------------- | ---------------------------------------------------------------------------------------- |
| `GET` | `/config` | 獲取設定資訊 | <a href={typesUrl}><code>Config</code></a> |
| `PATCH` | `/config` | 更新設定 | <a href={typesUrl}><code>Config</code></a> |
| `GET` | `/config/providers` | 列出供應商和預設模型 | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
---
### 提供者
### 供應商
| 方法 | 路徑 | 描述 | 回應 |
| ------ | -------------------------------- | ----------------------- | --------------------------------------------------------------------------------- |
| `GET` | `/provider` | 列出所有供商 | `{ all: `<a href={typesUrl}>提供商[]</a>`, default: {...}, connected: string[] }` |
| `GET` | `/provider/auth` | 獲取供商身驗證方法 | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | 使用 OAuth 授權供商 | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` | 處理供商的 OAuth 回調 | `boolean` |
| 方法 | 路徑 | 描述 | 回應 |
| ------ | -------------------------------- | ----------------------- | ----------------------------------------------------------------------------------- |
| `GET` | `/provider` | 列出所有供商 | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
| `GET` | `/provider/auth` | 獲取供商身驗證方法 | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | 使用 OAuth 授權供商 | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` | 處理供商的 OAuth 回調 | `boolean` |
---
### 會議
### 工作階段
| 方法 | 路徑 | 描述 | 筆記 |
| -------- | ---------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------- |
| `GET` | `/session` | 列出所有會話 | 返回 <a href={typesUrl}><code>Session[]</code></a> |
| `POST` | `/session` | 創建新會話 | 正文:`{ parentID?, title? }`,返回 <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/status` | 獲取所有會話的會話狀態 | 返回 `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
| `GET` | `/session/:id` | 獲取會話詳細信息 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id` | 刪除會話及其所有數據 | 返回 `boolean` |
| `PATCH` | `/session/:id` | 更新會話屬性 | 正文:`{ title? }`,返回 <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/children` | 獲取會話的子會話 | 返回 <a href={typesUrl}><code>Session[]</code></a> |
| `GET` | `/session/:id/todo` | 獲取會話的待辦事項列表 | 返回 <a href={typesUrl}><code>Todo[]</code></a> |
| `POST` | `/session/:id/init` | 分析應用程式並建`AGENTS.md` | 主體:`{ messageID, providerID, modelID }`,返回`boolean` |
| `POST` | `/session/:id/fork` | 在息中分現有會話 | 正文:`{ messageID? }`,返回 <a href={typesUrl}><code>Session</code></a> |
| `POST` | `/session/:id/abort` | 中止正在行的會話 | 返回 `boolean` |
| `POST` | `/session/:id/share` | 分享會議 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id/share` | 取消共享會話 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/diff` | 獲取本次會話的差異 | 查詢:`messageID?`,返回 <a href={typesUrl}><code>FileDiff[]</code></a> |
| `POST` | `/session/:id/summarize` | 會議總結 | 主體:`{ providerID, modelID }`,返回`boolean` |
| `POST` | `/session/:id/revert` | 回复消息 | 主體:`{ messageID, partID? }`,返回`boolean` |
| `POST` | `/session/:id/unrevert` | 恢復所有已恢復的消息 | 返回 `boolean` |
| `POST` | `/session/:id/permissions/:permissionID` | 回權限請求 | 主體:`{ response, remember? }`,返回`boolean` |
| 方法 | 路徑 | 描述 | 備註 |
| -------- | ---------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------- |
| `GET` | `/session` | 列出所有工作階段 | 返回 <a href={typesUrl}><code>Session[]</code></a> |
| `POST` | `/session` | 建立新工作階段 | 正文:`{ parentID?, title? }`,返回 <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/status` | 獲取所有工作階段的狀態 | 返回 `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
| `GET` | `/session/:id` | 獲取工作階段詳細資訊 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id` | 刪除工作階段及其所有數據 | 返回 `boolean` |
| `PATCH` | `/session/:id` | 更新工作階段屬性 | 正文:`{ title? }`,返回 <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/children` | 獲取工作階段的子工作階段 | 返回 <a href={typesUrl}><code>Session[]</code></a> |
| `GET` | `/session/:id/todo` | 獲取工作階段的待辦事項清單 | 返回 <a href={typesUrl}><code>Todo[]</code></a> |
| `POST` | `/session/:id/init` | 分析應用程式並建`AGENTS.md` | 主體:`{ messageID, providerID, modelID }`,返回`boolean` |
| `POST` | `/session/:id/fork` | 在息中分現有工作階段 | 正文:`{ messageID? }`,返回 <a href={typesUrl}><code>Session</code></a> |
| `POST` | `/session/:id/abort` | 中止正在行的工作階段 | 返回 `boolean` |
| `POST` | `/session/:id/share` | 分享工作階段 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id/share` | 取消分享工作階段 | 返回 <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/diff` | 獲取本次工作階段的差異 | 查詢:`messageID?`,返回 <a href={typesUrl}><code>FileDiff[]</code></a> |
| `POST` | `/session/:id/summarize` | 工作階段摘要 | 主體:`{ providerID, modelID }`,返回`boolean` |
| `POST` | `/session/:id/revert` | 還原訊息 | 主體:`{ messageID, partID? }`,返回`boolean` |
| `POST` | `/session/:id/unrevert` | 恢復所有已還原的訊息 | 返回 `boolean` |
| `POST` | `/session/:id/permissions/:permissionID` | 回權限請求 | 主體:`{ response, remember? }`,返回`boolean` |
---
### 留言
### 訊息
| 方法 | 路徑 | 描述 | 筆記 |
| ------ | --------------------------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GET` | `/session/:id/message` | 列出會話中的消息 | 查詢:`limit?`,返回`{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
| `POST` | `/session/:id/message` | 發送息並等待回 | 主體:`{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`,返回`{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>部分[]</a>`}` |
| `GET` | `/session/:id/message/:messageID` | 獲取息詳情 | 返回`{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>部分[]</a>`}` |
| `POST` | `/session/:id/prompt_async` | 步發送息(無需等待) | body與`/session/:id/message`相同,返回`204 No Content` |
| `POST` | `/session/:id/command` | 執行斜杠命令 | 主體:`{ messageID?, agent?, model?, command, arguments }`,返回`{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>部分[]</a>`}` |
| `POST` | `/session/:id/shell` | 行 shell 命令 | 主體:`{ agent, model?, command }`,返回`{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>部分[]</a>`}` |
| 方法 | 路徑 | 描述 | 備註 |
| ------ | --------------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GET` | `/session/:id/message` | 列出工作階段中的訊息 | 查詢:`limit?`,返回`{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
| `POST` | `/session/:id/message` | 發送息並等待回 | 主體:`{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`,返回`{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `GET` | `/session/:id/message/:messageID` | 獲取息詳情 | 返回`{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/prompt_async` | 非同步發送息(無需等待) | body與`/session/:id/message`相同,返回`204 No Content` |
| `POST` | `/session/:id/command` | 執行斜線指令 | 主體:`{ messageID?, agent?, model?, command, arguments }`,返回`{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/shell` | 行 shell 指令 | 主體:`{ agent, model?, command }`,返回`{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
---
###
###
| 方法 | 路徑 | 描述 | 回應 |
| ----- | ---------- | ------------ | --------------------------------------------- |
| `GET` | `/command` | 列出所有令 | <a href={typesUrl}><code>Command[]</code></a> |
| `GET` | `/command` | 列出所有令 | <a href={typesUrl}><code>Command[]</code></a> |
---
### 文件
### 檔案
| 方法 | 路徑 | 描述 | 回應 |
| ----- | ------------------------ | -------------------- | ----------------------------------------------------------------------------------- |
| `GET` | `/find?pattern=<pat>` | 搜索文件中的文 | 具有 `path`, `lines`, `line_number`, `absolute_offset`, `submatches` 的匹配對象陣列 |
| `GET` | `/find/file?query=<q>` | 按名稱查找文件和目錄 | `string[]`(路徑) |
| `GET` | `/find/symbol?query=<q>` | 找工作區符號 | <a href={typesUrl}><code>Symbol[]</code></a> |
| `GET` | `/file?path=<path>` | 列出文件和目錄 | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` | 讀取文件 | <a href={typesUrl}><code>FileContent</code></a> |
| `GET` | `/file/status` | 獲取跟蹤文件的狀態 | <a href={typesUrl}><code>File[]</code></a> |
| `GET` | `/find?pattern=<pat>` | 搜尋檔案中的文 | 具有 `path`, `lines`, `line_number`, `absolute_offset`, `submatches` 的匹配物件陣列 |
| `GET` | `/find/file?query=<q>` | 按名稱尋找檔案和目錄 | `string[]`(路徑) |
| `GET` | `/find/symbol?query=<q>` | 找工作區符號 | <a href={typesUrl}><code>Symbol[]</code></a> |
| `GET` | `/file?path=<path>` | 列出檔案和目錄 | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` | 讀取檔案 | <a href={typesUrl}><code>FileContent</code></a> |
| `GET` | `/file/status` | 獲取追蹤檔案的狀態 | <a href={typesUrl}><code>File[]</code></a> |
#### `/find/file`查詢參數
#### `/find/file` 查詢參數
- `query`(必需)- 搜索字符串(模糊匹配)
- `type`(可選)- 將結果限制為`"file"` 或`"directory"`
- `directory` (可選) — 覆蓋搜索的項目根目錄
- `query`(必需)- 搜尋字串(模糊匹配)
- `type`(可選)- 將結果限制為 `"file"` 或 `"directory"`
- `directory` (可選) — 覆寫搜尋的專案根目錄
- `limit`(可選)— 最大結果 (1200)
- `dirs`(可選)- 舊標`"false"` 僅返回文件
- `dirs`(可選)- 舊標(`"false"` 僅返回檔案
---
@@ -215,26 +215,26 @@ opencode 服務器公開以下 API。
| 方法 | 路徑 | 描述 | 回應 |
| ----- | ------------------------------------------- | ---------------------------- | -------------------------------------------- |
| `GET` | `/experimental/tool/ids` | 列出所有工具 ID | <a href={typesUrl}><code>ToolID</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | 列出具有模型 JSON 架構的工具 | <a href={typesUrl}><code>工具列表</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | 列出具有模型 JSON 架構的工具 | <a href={typesUrl}><code>ToolList</code></a> |
---
### LSP、格式化程和 MCP
### LSP、格式化程和 MCP
| 方法 | 路徑 | 描述 | 回應 |
| ------ | ------------ | ------------------- | -------------------------------------------------------- |
| `GET` | `/lsp` | 獲取LSP服器狀態 | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| `GET` | `/formatter` | 獲取格式化程狀態 | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| `GET` | `/mcp` | 獲取 MCP 服器狀態 | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | 動態添加MCP服務器 | body: `{ name, config }`, 返回 MCP 狀態對象 |
| `GET` | `/lsp` | 獲取 LSP服器狀態 | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| `GET` | `/formatter` | 獲取格式化程狀態 | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| `GET` | `/mcp` | 獲取 MCP 服器狀態 | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | 動態添加 MCP 伺服器 | body: `{ name, config }`, 返回 MCP 狀態物件 |
---
### Agents
### 代理
| 方法 | 路徑 | 描述 | 回應 |
| ----- | -------- | ------------------ | ------------------------------------------ |
| `GET` | `/agent` | 列出所有可用的代理 | <a href={typesUrl}><code>代理[]</code></a> |
| 方法 | 路徑 | 描述 | 回應 |
| ----- | -------- | ------------------ | ------------------------------------------- |
| `GET` | `/agent` | 列出所有可用的代理 | <a href={typesUrl}><code>Agent[]</code></a> |
---
@@ -242,25 +242,25 @@ opencode 服務器公開以下 API。
| 方法 | 路徑 | 描述 | 回應 |
| ------ | ------ | --------------------------------------------------------- | --------- |
| `POST` | `/log` | 寫入日誌目。正文:`{ service, level, message, extra? }` | `boolean` |
| `POST` | `/log` | 寫入日誌目。正文:`{ service, level, message, extra? }` | `boolean` |
---
### TUI
| 方法 | 路徑 | 描述 | 回應 |
| ------ | ----------------------- | ----------------------------------------- | ------------ |
| `POST` | `/tui/append-prompt` | 將文附加到提示 | `boolean` |
| `POST` | `/tui/open-help` | 打開幫助對話框 | `boolean` |
| `POST` | `/tui/open-sessions` | 打開會話選擇器 | `boolean` |
| `POST` | `/tui/open-themes` | 打開主題選擇器 | `boolean` |
| `POST` | `/tui/open-models` | 打開模型選擇器 | `boolean` |
| `POST` | `/tui/submit-prompt` | 提交當前提示 | `boolean` |
| `POST` | `/tui/clear-prompt` | 清除提示 | `boolean` |
| `POST` | `/tui/execute-command` | 執行命令(`{ command }`) | `boolean` |
| `POST` | `/tui/show-toast` | 顯示祝酒 (`{ title?, message, variant }`) | `boolean` |
| `GET` | `/tui/control/next` | 等待下一個控制請求 | 控制請求對象 |
| `POST` | `/tui/control/response` | 應控制請求 (`{ body }`) | `boolean` |
| 方法 | 路徑 | 描述 | 回應 |
| ------ | ----------------------- | ------------------------------------------- | ------------ |
| `POST` | `/tui/append-prompt` | 將文附加到提示 | `boolean` |
| `POST` | `/tui/open-help` | 打開說明對話方塊 | `boolean` |
| `POST` | `/tui/open-sessions` | 打開工作階段選擇器 | `boolean` |
| `POST` | `/tui/open-themes` | 打開主題選擇器 | `boolean` |
| `POST` | `/tui/open-models` | 打開模型選擇器 | `boolean` |
| `POST` | `/tui/submit-prompt` | 提交當前提示 | `boolean` |
| `POST` | `/tui/clear-prompt` | 清除提示 | `boolean` |
| `POST` | `/tui/execute-command` | 執行指令 (`{ command }`) | `boolean` |
| `POST` | `/tui/show-toast` | 顯示 Toast (`{ title?, message, variant }`) | `boolean` |
| `GET` | `/tui/control/next` | 等待下一個控制請求 | 控制請求物件 |
| `POST` | `/tui/control/response` | 應控制請求 (`{ body }`) | `boolean` |
---
@@ -268,15 +268,15 @@ opencode 服務器公開以下 API。
| 方法 | 路徑 | 描述 | 回應 |
| ----- | ----------- | ------------------------------------------ | --------- |
| `PUT` | `/auth/:id` | 設置身份驗證憑。正文必須與提供者架構匹配 | `boolean` |
| `PUT` | `/auth/:id` | 設定身分驗證憑。正文必須與供應商架構匹配 | `boolean` |
---
### 活動
### 事件
| 方法 | 路徑 | 描述 | 回應 |
| ----- | -------- | ------------------------------------------------------------------ | ------------------ |
| `GET` | `/event` | 服器發送的事件流。第一個活動是`server.connected`,然後是巴士活動 | 服器發送的事件流 |
| 方法 | 路徑 | 描述 | 回應 |
| ----- | -------- | --------------------------------------------------------------------------- | -------------------- |
| `GET` | `/event` | 服器發送的事件流。第一個活動是 `server.connected`,然後是事件匯流排事件 | 服器發送的事件流 |
---

View File

@@ -3,10 +3,10 @@ title: 分享
description: 分享您的 opencode 對話。
---
opencode 的共享功能允許您建 opencode 對話的公共連結,以便您可以與團隊成員協作或從其他人那裡獲得幫助。
opencode 的共享功能允許您建 opencode 對話的公共連結,以便您可以與團隊成員協作或從其他人那裡獲得幫助。
:::note
任何知道連結的人都可以公開訪問共享對話。
任何知道連結的人都可以公開存取共享對話。
:::
---
@@ -15,29 +15,29 @@ opencode 的共享功能允許您創建 opencode 對話的公共連結,以便
當您共享對話時opencode
1. 為您的會話創建唯一的公共 URL
2. 將您的對話歷史記錄同步到我們的服
3. 過可共享連結進行對話 — `opncd.ai/s/<share-id>`
1. 為您的工作階段建立唯一的公共 URL
2. 將您的對話歷史記錄同步到我們的服器
3. 過可共享連結進行對話 — `opncd.ai/s/<share-id>`
---
## 分享
## 模式
opencode 支三種控制對話共享方式的共享模式:
opencode 支三種控制對話共享方式的共享模式:
---
### 手動(默認
### 手動(預設
opencode默認使用手動共享模式。會話不會自動共享,但您可以使用 `/share` 令手動共享它們:
opencode 預設使用手動共享模式。工作階段不會自動共享,但您可以使用 `/share` 令手動共享它們:
```
/share
```
這將生成一個唯一的 URL並將其複製到您的剪貼
這將生成一個唯一的 URL並將其複製到您的剪貼簿
要在 [配置文件](/docs/config) 中顯式設置手動模式:
要在 [設定檔](/docs/config) 中明確設定手動模式:
```json title="opencode.json"
{
@@ -50,7 +50,7 @@ opencode默認使用手動共享模式。會話不會自動共享但您可以
### 自動分享
您可以通過將[配置文件](/docs/config)中的`share`選項設置為`"auto"`來為所有新對話啟用自動共享:
您可以在 [設定檔](/docs/config) 中將 `share` 選項設定為 `"auto"` 來為所有新對話啟用自動共享:
```json title="opencode.json"
{
@@ -63,9 +63,9 @@ opencode默認使用手動共享模式。會話不會自動共享但您可以
---
### 殘疾人
### 已禁用
您可以通過將[配置文件](/docs/config)中的`share`選項設置為`"disabled"`來完全禁用共享:
您可以在 [設定檔](/docs/config) 中將 `share` 選項設定為 `"disabled"` 來完全禁用共享:
```json title="opencode.json"
{
@@ -74,13 +74,13 @@ opencode默認使用手動共享模式。會話不會自動共享但您可以
}
```
要在整個團隊中針對給定項目強制執行此操作,請將其添加到項目中的 `opencode.json` 並簽入 Git。
要在整個團隊中針對給定專案強制執行此操作,請將其添加到專案中的 `opencode.json` 並簽入 Git。
---
## 取消共享
要停止共享對話並將其從公共訪問中刪除:
要停止共享對話並將其從公共存取中刪除:
```
/unshare
@@ -96,24 +96,24 @@ opencode默認使用手動共享模式。會話不會自動共享但您可以
---
### 數據保留
### 資料保留
共享對話仍然可以訪問,直到您明確取消共享。這
共享對話仍然可以存取,直到您明確取消共享。這
包括:
- 完整的對話歷史記錄
- 所有息和回
- 會話元數據
- 所有息和回
- 工作階段元數據
---
### 建議
- 僅共享不包含敏感信息的對話。
- 僅共享不包含敏感資訊的對話。
- 分享之前查看對話內容。
- 協作完成後取消共享對話。
- 避免與專有程式碼或機密數據共享對話。
- 對於敏感項目,完全禁用共享。
- 對於敏感專案,完全禁用共享。
---
@@ -122,7 +122,7 @@ opencode默認使用手動共享模式。會話不會自動共享但您可以
對於企業部署,共享功能可以是:
- **出於安全合規性完全禁用**
- **僅限**僅過 SSO 進行身驗證的用戶
- **在您自己的基礎設施上自行託管**
- **僅限**僅過 SSO 進行身驗證的使用者
- **在您自己的基礎架構上自行託管**
[了解更多](/docs/enterprise) 關於在您的組織中使用opencode。
[了解更多](/docs/enterprise) 關於在您的組織中使用 opencode。

View File

@@ -1,62 +1,62 @@
---
title: 代理技巧》
description: “通過 SKILL.md 定義定義可重用行為
title: 代理技
description: 過 SKILL.md 定義定義可重複使用行為
---
代理技能讓 opencode 從您的儲庫或主目錄中發現可重用的指令。
技能通過本機 `skill` 工具按需載 - 代理可以查看可用技能並可以在需要時載完整內容。
代理技能讓 opencode 從您的儲庫或主目錄中發現可重複使用的指令。
技能透過原生 `skill` 工具按需載 - 代理可以查看可用技能並可以在需要時載完整內容。
---
## 放置文件
## 放置檔案
每個技能名稱創建一個文件夾,並在其中放入`SKILL.md`。
opencode 搜這些位置:
每個技能名稱建立一個資料夾,並在其中放入 `SKILL.md`。
opencode 搜這些位置:
- 項目配置`.opencode/skills/<name>/SKILL.md`
- 全局配置`~/.config/opencode/skills/<name>/SKILL.md`
- 克勞德項目兼容:`.claude/skills/<name>/SKILL.md`
- 全球克勞德兼容:`~/.claude/skills/<name>/SKILL.md`
- 項目代理容:`.agents/skills/<name>/SKILL.md`
- 全代理容:`~/.agents/skills/<name>/SKILL.md`
- 專案設定`.opencode/skills/<name>/SKILL.md`
- 全域設定`~/.config/opencode/skills/<name>/SKILL.md`
- Claude 專案相容:`.claude/skills/<name>/SKILL.md`
- 全域 Claude 相容:`~/.claude/skills/<name>/SKILL.md`
- 專案代理容:`.agents/skills/<name>/SKILL.md`
- 全代理容:`~/.agents/skills/<name>/SKILL.md`
---
## 了解發現
對於項目本地路徑opencode 將從當前工作目錄開始,直到到達 git 工作樹。
載 `skills/*/SKILL.md` 中任何匹配的 `.opencode/` 以及一路上任何匹配的 `.claude/skills/*/SKILL.md` 或 `.agents/skills/*/SKILL.md`。
對於專案本地路徑opencode 將從當前工作目錄開始,直到到達 git 工作樹。
它載 `skills/*/SKILL.md` 中任何匹配的 `.opencode/` 以及一路上任何匹配的 `.claude/skills/*/SKILL.md` 或 `.agents/skills/*/SKILL.md`。
定義也從`~/.config/opencode/skills/*/SKILL.md`、`~/.claude/skills/*/SKILL.md` 和`~/.agents/skills/*/SKILL.md` 載。
定義也從 `~/.config/opencode/skills/*/SKILL.md`、`~/.claude/skills/*/SKILL.md` 和 `~/.agents/skills/*/SKILL.md` 載
---
## 寫前言
## 撰寫 Frontmatter
每個`SKILL.md` 必須以 YAML frontmatter 開頭。
僅識別這些字段
每個 `SKILL.md` 必須以 YAML frontmatter 開頭。
僅識別這些欄位
- `name`(必填)
- `description`(必填)
- `license`(可選)
- `compatibility`(可選)
- `metadata`(可選,字串到字符串映射
- `metadata`(可選,字串到字串對應
未知的 frontmatter 字段將被忽略。
未知的 frontmatter 欄位將被忽略。
---
## 驗證
## 驗證名
`name` 必須:
- 長度為 164 個字
- 為小寫字母數字並帶有單個連字分隔符
- 長度為 164 個字
- 為小寫字母數字並帶有單個連字分隔符
- 不以 `-` 開頭或結尾
- 不包含連續`--`
- 匹配包含`SKILL.md`的目錄名
- 不包含連續 `--`
- 匹配包含 `SKILL.md` 的目錄名
等效的正則表達式:
等效的正規表示式:
```text
^[a-z0-9]+(-[a-z0-9]+)*$
@@ -66,14 +66,14 @@ opencode 搜索這些位置:
## 遵循長度規則
`description` 必須是 1-1024 個字
`description` 必須是 1-1024 個字
保持足夠具體,以便代理能夠正確選擇。
---
## 使用一個例
## 使用一個
像這樣建`.opencode/skills/git-release/SKILL.md`
像這樣建`.opencode/skills/git-release/SKILL.md`
```markdown
---
@@ -102,8 +102,8 @@ Ask clarifying questions if the target versioning scheme is unclear.
## 識別工具說明
opencode 在`skill` 工具描述中列出了可用的技能。
每個目都包含技能名稱和描述:
opencode 在 `skill` 工具描述中列出了可用的技能。
每個目都包含技能名稱和描述:
```xml
<available_skills>
@@ -114,7 +114,7 @@ opencode 在`skill` 工具描述中列出了可用的技能。
</available_skills>
```
代理通過調用工具來載技能:
代理透過呼叫工具來載技能:
```
skill({ name: "git-release" })
@@ -124,7 +124,7 @@ skill({ name: "git-release" })
## 配置權限
使用 `opencode.json` 中基於模式的權限控制客服人員可以訪問哪些技能:
使用 `opencode.json` 中基於模式的權限控制代理可以存取哪些技能:
```json
{
@@ -141,17 +141,17 @@ skill({ name: "git-release" })
| 許可 | 行為 |
| ------- | -------------------------- |
| `allow` | 技能立即載 |
| `deny` | 技能對特工隱藏,訪問被拒絕 |
| `ask` | 載前提示用戶批准 |
| `allow` | 技能立即載 |
| `deny` | 技能對代理隱藏,存取被拒絕 |
| `ask` | 載前提示使用者批准 |
模式支通配符:`internal-*` 匹配`internal-docs`、`internal-tools` 等。
模式支通配符:`internal-*` 匹配 `internal-docs`、`internal-tools` 等。
---
## 覆每個代理
## 覆每個代理
為特定代理授予與全局默認權限不同的權限。
為特定代理授予與全域預設權限不同的權限。
**對於自定義代理**(在代理前言中):
@@ -163,7 +163,7 @@ permission:
---
```
**對於內代理**(在 `opencode.json` 中):
**對於內代理**(在 `opencode.json` 中):
```json
{
@@ -183,9 +183,9 @@ permission:
## 禁用技能工具
完全禁用不應該使用技能的特工
完全禁用不應該使用技能的代理
**對於定制代理**
**對於自定義代理**
```yaml
---
@@ -194,7 +194,7 @@ tools:
---
```
**對於內代理**
**對於內代理**
```json
{
@@ -212,7 +212,7 @@ tools:
---
## 解決載問題
## 解決載問題
如果某項技能沒有顯示:

View File

@@ -1,43 +1,43 @@
---
title: 主題
description: 選擇內主題或定義您自己的主題。
description: 選擇內主題或定義您自己的主題。
---
使用 opencode您可以從多個內主題之一中進行選擇,使用適合您的terminal主題的主題,或者定義您自己的自定義主題。
使用 opencode您可以從多個內主題之一中進行選擇,使用適合您的終端機主題的主題,或者定義您自己的自定義主題。
默認情況下opencode 使用我們自己的 `opencode` 主題。
預設情況下opencode 使用我們自己的 `opencode` 主題。
---
## terminal要求
## 終端機要求
為了使主題能夠正確顯示完整的調色,您的terminal必須支**真彩色**24 位顏色)。大多數現代terminal默認支持此功能,但您可能需要啟用它:
為了使主題能夠正確顯示完整的調色,您的終端機必須支**真彩色**24 位顏色)。大多數現代終端機預設支援此功能,但您可能需要啟用它:
- **檢查支**運行`echo $COLORTERM` - 它應該輸出`truecolor``24bit`
- **啟用真彩色**:在 shell 配置文件中設環境變 `COLORTERM=truecolor`
- **terminal兼容性**:確保您的terminal模擬器支 24 位顏色(大多數現代terminal,​​如 iTerm2、Alacritty、Kitty、Windows terminal和最新版本的 GNOME terminal都支
- **檢查支**執行 `echo $COLORTERM` - 它應該輸出 `truecolor``24bit`
- **啟用真彩色**:在 shell 設定檔中設環境變 `COLORTERM=truecolor`
- **終端機相容性**:確保您的終端機模擬器支 24 位顏色(大多數現代終端機,​​如 iTerm2、Alacritty、Kitty、Windows Terminal 和最新版本的 GNOME Terminal 都支
如果沒有真彩色支,主題的顏色精度可能會降低或回到最接近的 256 色近似值。
如果沒有真彩色支,主題的顏色精度可能會降低或回退到最接近的 256 色近似值。
---
## 內主題
## 內主題
opencode 附帶了幾個內主題。
opencode 附帶了幾個內主題。
| 名稱 | 描述 |
| ---------------------- | ----------------------------------------------------------------- |
| `system` | 適應您terminal的背景顏色 |
| `tokyonight` | 基於[tokyonight](https://github.com/folke/tokyonight.nvim)主題 |
| `everforest` | 基於[everforest](https://github.com/sainnhe/everforest)主題 |
| `ayu` | 基於[ayu](https://github.com/ayu-theme)深色主題 |
| `catppuccin` | 基於[catppuccin](https://github.com/catppuccin)主題 |
| `catppuccin-macchiato` | 基於[catppuccin](https://github.com/catppuccin)主題 |
| `gruvbox` | 基於[gruvbox](https://github.com/morhetz/gruvbox)主題 |
| `kanagawa` | 基於[kanagawa](https://github.com/rebelot/kanagawa.nvim)主題 |
| `nord` | 基於[Nord](https://github.com/nordtheme/nord)主題 |
| `matrix` | 客風格黑底綠主題 |
| `one-dark` | 基於[One Dark](https://github.com/Th3Whit3Wolf/one-nvim) 深色主題 |
| 名稱 | 描述 |
| ---------------------- | ------------------------------------------------------------------ |
| `system` | 適應您終端機的背景顏色 |
| `tokyonight` | 基於 [Tokyo Night](https://github.com/folke/tokyonight.nvim) 主題 |
| `everforest` | 基於 [Everforest](https://github.com/sainnhe/everforest) 主題 |
| `ayu` | 基於 [Ayu](https://github.com/ayu-theme) 深色主題 |
| `catppuccin` | 基於 [Catppuccin](https://github.com/catppuccin) 主題 |
| `catppuccin-macchiato` | 基於 [Catppuccin](https://github.com/catppuccin) 主題 |
| `gruvbox` | 基於 [Gruvbox](https://github.com/morhetz/gruvbox) 主題 |
| `kanagawa` | 基於 [Kanagawa](https://github.com/rebelot/kanagawa.nvim) 主題 |
| `nord` | 基於 [Nord](https://github.com/nordtheme/nord) 主題 |
| `matrix` | 客風格黑底綠主題 |
| `one-dark` | 基於 [One Dark](https://github.com/Th3Whit3Wolf/one-nvim) 深色主題 |
此外,我們還在不斷添加新主題。
@@ -45,23 +45,23 @@ opencode 附帶了幾個內置主題。
## 系統主題
`system` 主題旨在自動適應您terminal的配色方案。與使用固定顏色的傳統主題不同_system_ 主題:
`system` 主題旨在自動適應您終端機的配色方案。與使用固定顏色的傳統主題不同_system_ 主題:
- **生成灰**:根據terminal的背景顏色建自定義灰,確保最佳對比度。
- **使用 ANSI 顏色**:利用標準 ANSI 顏色 (0-15) 進行語法突出顯示和 UI 元素,尊重terminal的調色
- **保留terminal默認設置**:使用 `none` 作為文和背景顏色,以保持terminal的本機外觀。
- **生成灰**:根據終端機的背景顏色建自定義灰,確保最佳對比度。
- **使用 ANSI 顏色**:利用標準 ANSI 顏色 (0-15) 進行語法高亮顯示和 UI 元素,尊重終端機的調色
- **保留終端機預設設定**:使用 `none` 作為文和背景顏色,以保持終端機的原生外觀。
系統主題適合以下用戶
系統主題適合以下使用者
- 希望 opencode 與其terminal的外觀相匹配
- 使用自定義terminal配色方案
- 希望所有terminal應用程式具有一致的外觀
- 希望 opencode 與其終端機的外觀相匹配
- 使用自定義終端機配色方案
- 希望所有終端機應用程式具有一致的外觀
---
## 使用主題
您可以過使用 `/theme` 令調出主題選擇來選擇主題。或者您可以在[配置](/docs/config) 中指定它。
您可以過使用 `/theme` 令調出主題選擇來選擇主題。或者您可以在 [設定](/docs/config) 中指定它。
```json title="opencode.json" {3}
{
@@ -74,35 +74,35 @@ opencode 附帶了幾個內置主題。
## 自定義主題
opencode 支靈活的基於 JSON 的主題系統,允許用戶輕鬆創建和自定義主題。
opencode 支靈活的基於 JSON 的主題系統,允許使用者輕鬆建立和自定義主題。
---
### 等級制度
### 階層
主題按以下順序從多個目錄載,其中後面的目錄覆前面的目錄:
主題按以下順序從多個目錄載,其中後面的目錄覆前面的目錄:
1. **內主題** - 這些主題嵌入在二進製文件
2. **用戶配置目錄** - 在`~/.config/opencode/themes/*.json` 或`$XDG_CONFIG_HOME/opencode/themes/*.json` 中定義
3. **項目根目錄** - 定義在`<project-root>/.opencode/themes/*.json`
4. **當前工作目錄** - 在`./.opencode/themes/*.json`中定義
1. **內主題** - 這些主題嵌入在二進位檔案
2. **使用者設定目錄** - 在 `~/.config/opencode/themes/*.json` 或 `$XDG_CONFIG_HOME/opencode/themes/*.json` 中定義
3. **專案根目錄** - 定義在 `<project-root>/.opencode/themes/*.json`
4. **當前工作目錄** - 在 `./.opencode/themes/*.json` 中定義
如果多個目錄包含同名主題,則將使用優先較高的目錄中的主題。
如果多個目錄包含同名主題,則將使用優先順序較高的目錄中的主題。
---
### 建主題
### 建主題
建自定義主題,請在主題目錄之一中建一個 JSON 文件
要建自定義主題,請在主題目錄之一中建一個 JSON 檔案
對於用戶範圍的主題:
對於使用者範圍的主題:
```bash no-frame
mkdir -p ~/.config/opencode/themes
vim ~/.config/opencode/themes/my-theme.json
```
以及針對特定項目的主題。
以及針對特定專案的主題。
```bash no-frame
mkdir -p .opencode/themes
@@ -111,36 +111,36 @@ vim .opencode/themes/my-theme.json
---
### JSON格式
### JSON 格式
主題使用靈活的 JSON 格式,支
主題使用靈活的 JSON 格式,支
- **十六進顏色**`"#ffffff"`
- **十六進顏色**`"#ffffff"`
- **ANSI 顏色**`3` (0-255)
- **顏色參考**`"primary"` 或自定義定義
- **深色/淺色版本**`{"dark": "#000", "light": "#fff"}`
- **無顏色**`"none"` - 使用terminal的默認顏色或透明
- **無顏色**`"none"` - 使用終端機的預設顏色或透明
---
### 顏色定義
`defs` 部分是可選的,它允許您定義可在主題中引用的可重用顏色。
`defs` 部分是可選的,它允許您定義可在主題中引用的可重複使用顏色。
---
### terminal默認
### 終端機預設
特殊值`"none"`可用於任何顏色以繼承terminal的默認顏色。這對於創建與terminal配色方案無縫融合的主題特別有用:
特殊值 `"none"` 可用於任何顏色以繼承終端機的預設顏色。這對於建立與終端機配色方案無縫融合的主題特別有用:
- `"text": "none"` - 使用terminal的默認前景色
- `"background": "none"` - 使用terminal的默認背景顏色
- `"text": "none"` - 使用終端機的預設前景色
- `"background": "none"` - 使用終端機的預設背景顏色
---
### 例
###
以下是自定義主題的例:
以下是自定義主題的例:
```json title="my-theme.json"
{

View File

@@ -1,17 +1,17 @@
---
title: 工具
description: 管理LLM可以使用的工具。
description: 管理 LLM 可以使用的工具。
---
工具允許 LLM 在您的程式碼庫中執行操作。 opencode 附帶了一組內工具,但您可以使用[定制工具](/docs/custom-tools) 或[MCP服器](/docs/mcp-servers) 對其進行擴展。
工具允許 LLM 在您的程式碼庫中執行操作。 opencode 附帶了一組內工具,但您可以使用 [自定義工具](/docs/custom-tools) 或 [MCP服器](/docs/mcp-servers) 對其進行擴展。
默認情況下,所有工具都是**啟用**並且不需要行權限。您可以通過[權限](/docs/permissions)控制工具行為。
預設情況下,所有工具都是**啟用**並且不需要行權限。您可以透過 [權限](/docs/permissions) 控制工具行為。
---
## 配置
使用 `permission` 字段控制工具行為。您可以允許、拒絕或要求批准每個工具。
使用 `permission` 欄位控制工具行為。您可以允許、拒絕或要求批准每個工具。
```json title="opencode.json"
{
@@ -24,7 +24,7 @@ description: 管理LLM可以使用的工具。
}
```
您還可以使用通配符同時控制多個工具。例如,要求 MCP 服器批准所有工具:
您還可以使用通配符同時控制多個工具。例如,要求 MCP 服器批准所有工具:
```json title="opencode.json"
{
@@ -41,13 +41,13 @@ description: 管理LLM可以使用的工具。
## 內建
以下是 opencode 中可用的所有內工具。
以下是 opencode 中可用的所有內工具。
---
### bash
項目環境中執行 shell 令。
專案環境中執行 shell 令。
```json title="opencode.json" {4}
{
@@ -58,13 +58,13 @@ description: 管理LLM可以使用的工具。
}
```
該工具允許LLM行 `npm install`、`git status` 等terminal 命令或任何其他 shell 令。
該工具允許 LLM行 `npm install`、`git status` 等終端機指令或任何其他 shell 令。
---
### edit
使用精確的字串替換修改現有文件
使用精確的字串替換修改現有檔案
```json title="opencode.json" {4}
{
@@ -75,13 +75,13 @@ description: 管理LLM可以使用的工具。
}
```
該工具過替換精確的文匹配來對文件執行精確編輯。這是LLM修改程式碼的主要方式。
該工具過替換精確的文匹配來對檔案執行精確編輯。這是 LLM 修改程式碼的主要方式。
---
### write
創建新文件或覆蓋現有文件
建立新檔案或覆蓋現有檔案
```json title="opencode.json" {4}
{
@@ -92,17 +92,17 @@ description: 管理LLM可以使用的工具。
}
```
使用它允許LLM創建新文件。如果現有文件已經存在,它將覆蓋它們。
使用它允許 LLM 建立新檔案。如果現有檔案已經存在,它將覆蓋它們。
:::note
`write`工具由`edit`權限控制,該權限涵蓋所有文件修改(`edit`、`write`、`patch`、`multiedit`)。
`write` 工具由 `edit` 權限控制,該權限涵蓋所有檔案修改(`edit`、`write`、`patch`、`multiedit`)。
:::
---
### read
從程式碼庫中讀取文件內容。
從程式碼庫中讀取檔案內容。
```json title="opencode.json" {4}
{
@@ -113,13 +113,13 @@ description: 管理LLM可以使用的工具。
}
```
該工具讀取文件並返回其內容。它支讀取大文件的特定行範圍。
該工具讀取檔案並返回其內容。它支讀取大檔案的特定行範圍。
---
### grep
使用正則表達式搜索文件內容。
使用正規表示式搜尋檔案內容。
```json title="opencode.json" {4}
{
@@ -130,13 +130,13 @@ description: 管理LLM可以使用的工具。
}
```
在您的程式碼庫中快速進行內容搜。支完整的正則表達式語法和文件模式過濾。
在您的程式碼庫中快速進行內容搜。支完整的正規表示式語法和檔案模式過濾。
---
### glob
過模式匹配查找文件
過模式匹配尋找檔案
```json title="opencode.json" {4}
{
@@ -147,13 +147,13 @@ description: 管理LLM可以使用的工具。
}
```
使用`**/*.js` 或`src/**/*.ts` 等全模式搜索文件。返回按修改時間排序的匹配文件路徑。
使用 `**/*.js` 或 `src/**/*.ts` 等全模式搜尋檔案。返回按修改時間排序的匹配檔案路徑。
---
### list
列出給定路徑中的文件和目錄。
列出給定路徑中的檔案和目錄。
```json title="opencode.json" {4}
{
@@ -164,16 +164,16 @@ description: 管理LLM可以使用的工具。
}
```
該工具列出目錄內容。它接受全模式來過濾結果。
該工具列出目錄內容。它接受全模式來過濾結果。
---
### lsp實驗性
與您配置的 LSP 服務器交互,以獲得程式碼智功能,例如定義、引用、懸停信息和調用層次結構
與您配置的 LSP 伺服器互動,以獲得程式碼智功能,例如定義、引用、游標懸停資訊和呼叫階層
:::note
該工具僅在`OPENCODE_EXPERIMENTAL_LSP_TOOL=true`(或`OPENCODE_EXPERIMENTAL=true`)時可用。
該工具僅在 `OPENCODE_EXPERIMENTAL_LSP_TOOL=true`(或 `OPENCODE_EXPERIMENTAL=true`)時可用。
:::
```json title="opencode.json" {4}
@@ -185,15 +185,15 @@ description: 管理LLM可以使用的工具。
}
```
的操作包括`goToDefinition`、`findReferences`、`hover`、`documentSymbol`、`workspaceSymbol`、`goToImplementation`、`prepareCallHierarchy`、`incomingCalls` 和`outgoingCalls`。
的操作包括 `goToDefinition`、`findReferences`、`hover`、`documentSymbol`、`workspaceSymbol`、`goToImplementation`、`prepareCallHierarchy`、`incomingCalls` 和 `outgoingCalls`。
要配置哪些 LSP 服器可用於您的項目,請參閱[LSP服器](/docs/lsp)。
要配置哪些 LSP 服器可用於您的專案,請參閱 [LSP服器](/docs/lsp)。
---
### patch
文件應用補丁
檔案套用 Patch
```json title="opencode.json" {4}
{
@@ -204,17 +204,17 @@ description: 管理LLM可以使用的工具。
}
```
該工具將補丁文件應用到您的程式碼庫。對於用來自各種來源的差異和補丁很有用。
該工具將 Patch 檔案套用到您的程式碼庫。對於用來自各種來源的差異和 Patch 很有用。
:::note
`patch`工具由`edit`權限控制,該權限涵蓋所有文件修改(`edit`、`write`、`patch`、`multiedit`)。
`patch` 工具由 `edit` 權限控制,該權限涵蓋所有檔案修改(`edit`、`write`、`patch`、`multiedit`)。
:::
---
### skill
載[技能](/docs/skills)`SKILL.md` 文件)並在對話中返回其內容。
[技能](/docs/skills)`SKILL.md` 檔案)並在對話中返回其內容。
```json title="opencode.json" {4}
{
@@ -229,7 +229,7 @@ description: 管理LLM可以使用的工具。
### todowrite
在編碼會話期間管理待辦事項列表
在編碼工作階段期間管理待辦事項清單
```json title="opencode.json" {4}
{
@@ -240,17 +240,17 @@ description: 管理LLM可以使用的工具。
}
```
建和更新任務列表以跟踪複雜操作期間的進度。LLM使用它來組織多步驟任務。
和更新任務列表以追蹤複雜操作期間的進度。LLM 使用它來組織多步驟任務。
:::note
默認情況下,子代理禁用此工具,但您可以手動啟用它。 [了解更多](/docs/agents/#permissions)
預設情況下,子代理禁用此工具,但您可以手動啟用它。 [了解更多](/docs/agents/#permissions)
:::
---
### todoread
閱讀現有的待辦事項列表
閱讀現有的待辦事項清單
```json title="opencode.json" {4}
{
@@ -261,10 +261,10 @@ description: 管理LLM可以使用的工具。
}
```
讀取當前待辦事項列表狀態。LLM用來跟踪哪些任務待處理或已完成。
讀取當前待辦事項清單狀態。LLM 用來追蹤哪些任務待處理或已完成。
:::note
默認情況下,子代理禁用此工具,但您可以手動啟用它。 [了解更多](/docs/agents/#permissions)
預設情況下,子代理禁用此工具,但您可以手動啟用它。 [了解更多](/docs/agents/#permissions)
:::
---
@@ -282,16 +282,16 @@ description: 管理LLM可以使用的工具。
}
```
允許LLM獲取和閱讀網頁。對於找文或研究線資源很有用。
允許 LLM 獲取和閱讀網頁。對於找文或研究線資源很有用。
---
### websearch
在網上搜索信息
在網上搜尋資訊
:::note
僅當使用 opencode 供商或 `OPENCODE_ENABLE_EXA` 環境變量設置為任何真值(例如 `true` 或 `1`)時,此工具才可用。
僅當使用 opencode 供商或 `OPENCODE_ENABLE_EXA` 環境變數設定為任何真值(例如 `true` 或 `1`)時,此工具才可用。
要在啟動 opencode 時啟用:
@@ -310,19 +310,19 @@ OPENCODE_ENABLE_EXA=1 opencode
}
```
使用 Exa AI 執行網絡搜索以在線查找相關信息。對於研究主題、找時事或收集超出訓練數據截止範圍的信息很有用。
使用 Exa AI 執行網路搜尋以線上尋找相關資訊。對於研究主題、找時事或收集超出訓練數據截止範圍的資訊很有用。
不需要 API 鑰 - 該工具無需身驗證即可直接連接到 Exa AI 的託管 MCP 服務。
不需要 API 鑰 - 該工具無需身驗證即可直接連接到 Exa AI 的託管 MCP 服務。
:::tip
當您需要查找信息(發現)時,請使用 `websearch`;當您需要從特定 URL 檢索內容(檢索)時,請使用 `webfetch`。
當您需要尋找資訊(發現)時,請使用 `websearch`;當您需要從特定 URL 檢索內容(檢索)時,請使用 `webfetch`。
:::
---
### question
在執行過程中詢問用戶問題。
在執行過程中詢問使用者問題。
```json title="opencode.json" {4}
{
@@ -333,42 +333,42 @@ OPENCODE_ENABLE_EXA=1 opencode
}
```
該工具允許LLM在任務期間詢問用戶問題。它適用於:
該工具允許 LLM 在任務期間詢問使用者問題。它適用於:
- 收集用戶偏好或要求
- 收集使用者偏好或要求
- 澄清不明確的指令
- 就實選擇做出決策
- 就實選擇做出決策
- 提供選擇方向
每個問題都包含標題、問題文和選項列表。用戶可以從提供的選項中進行選擇或輸入自定義答案。當存在多個問題時,用戶可以在提交所有答案之前在這些問題之間導航。
每個問題都包含標題、問題文和選項列表。使用者可以從提供的選項中進行選擇或輸入自定義答案。當存在多個問題時,使用者可以在提交所有答案之前在這些問題之間導航。
---
## 定制工具
## 自定義工具
自定義工具可讓您定義LLM可以調用的自己的函。這些是在您的配置文件中定義的並且可以執行任意程式碼。
自定義工具可讓您定義 LLM 可以呼叫的自己的函。這些是在您的設定檔中定義的並且可以執行任意程式碼。
[了解更多](/docs/custom-tools) 關於建自定義工具。
[了解更多](/docs/custom-tools) 關於建自定義工具。
---
## MCP服
## MCP服器
MCP模型上下文協議)服務器允許您集成外部工具和服務。這包括數據庫訪問、API 集成和第三方服務。
MCP模型上下文協定)伺服器允許您整合外部工具和服務。這包括資料庫存取、API 整合和第三方服務。
[了解更多](/docs/mcp-servers) 關於配置 MCP 服器。
[了解更多](/docs/mcp-servers) 關於配置 MCP 服器。
---
## 內部結構
在內部,`grep`、`glob` 和`list` 等工具在底層使用[ripgrep](https://github.com/BurntSushi/ripgrep)。默認情況下ripgrep 遵循 `.gitignore` 模式,這意味著 `.gitignore` 中列出的文件和目錄將從搜和列表中排除。
在內部,`grep`、`glob` 和 `list` 等工具在底層使用 [ripgrep](https://github.com/BurntSushi/ripgrep)。預設情況下ripgrep 遵循 `.gitignore` 模式,這意味著 `.gitignore` 中列出的檔案和目錄將從搜和列表中排除。
---
### 忽略模式
要包含通常會被忽略的文件,請在項目根目錄中建一個 `.ignore` 文件。該文件可以明確允許某些路徑。
要包含通常會被忽略的檔案,請在專案根目錄中建一個 `.ignore` 檔案。該檔案可以明確允許某些路徑。
```text title=".ignore"
!node_modules/
@@ -376,4 +376,4 @@ MCP模型上下文協議服務器允許您集成外部工具和服務。
!build/
```
例如,此 `.ignore` 文件允許 ripgrep 在 `node_modules/`、`dist/` 和 `build/` 目錄中搜,即使它們列在 `.gitignore` 中。
例如,此 `.ignore` 檔案允許 ripgrep 在 `node_modules/`、`dist/` 和 `build/` 目錄中搜,即使它們列在 `.gitignore` 中。

View File

@@ -1,67 +1,67 @@
---
title: 故障排除
title: 疑難排解
description: 常見問題以及如何解決它們。
---
調試 opencode 問題,請首先檢查其儲在磁上的日誌和本地數據。
除錯 opencode 問題,請首先檢查其儲在磁上的日誌和本地數據。
---
## 紀錄
## 日誌
日誌文件寫入:
日誌檔案寫入:
- **macOS/Linux**`~/.local/share/opencode/log/`
- **Windows**:按`WIN+R`並粘貼`%USERPROFILE%\.local\share\opencode\log`
- **Windows**:按 `WIN+R` 並貼上 `%USERPROFILE%\.local\share\opencode\log`
日誌文件以時間戳命名(例如`2025-01-09T123456.log`),並保留最近的 10 個日誌文件
日誌檔案以時間戳命名(例如 `2025-01-09T123456.log`),並保留最近的 10 個日誌檔案
您可以使用 `--log-level` 命令選項設日誌級以獲取更詳細的調試信息。例如,`opencode --log-level DEBUG`。
您可以使用 `--log-level` 命令選項設日誌級以獲取更詳細的除錯資訊。例如,`opencode --log-level DEBUG`。
---
##
## 儲
opencode 將會話數據和其他應用程式數據儲在磁上:
opencode 將工作階段數據和其他應用程式數據儲在磁上:
- **macOS/Linux**`~/.local/share/opencode/`
- **Windows**:按`WIN+R`並粘貼`%USERPROFILE%\.local\share\opencode`
- **Windows**:按 `WIN+R` 並貼上 `%USERPROFILE%\.local\share\opencode`
該目錄包含:
- `auth.json` - 身驗證數據,例如 API 鑰、OAuth 令牌
- `auth.json` - 身驗證數據,例如 API 鑰、OAuth 令牌
- `log/` - 應用程式日誌
- `project/` - 項目特定數據,例如會話和消息數據
- 如果項目位於 Git 儲庫中,則它儲在 `./<project-slug>/storage/` 中
- 如果不是 Git 儲庫,則儲在 `./global/storage/` 中
- `project/` - 專案特定數據,例如工作階段和訊息數據
- 如果專案位於 Git 儲庫中,則它儲在 `./<project-slug>/storage/` 中
- 如果不是 Git 儲庫,則儲在 `./global/storage/` 中
---
## 桌面應用程式
opencode Desktop 在後台運行本地 opencode 服器(`opencode-cli` sidecar。大多數問題是由行為不當的插件、損壞的緩存或錯誤的服器設引起的。
opencode Desktop 在背景執行本地 opencode 服器(`opencode-cli` sidecar。大多數問題是由行為不當的外掛、損壞的快取或錯誤的服器設引起的。
### 快速檢查
- 完全退出並重新啟動應用程式。
- 如果應用程式顯示錯誤幕,請單擊**重新啟動**並複錯誤詳細信息
- 僅限 macOS`OpenCode` 單 -> **重新載 Webview**(如果 UI 為空白/凍結,則有幫助)。
- 如果應用程式顯示錯誤幕,請單擊**重新啟動**並複錯誤詳細資訊
- 僅限 macOS`OpenCode` 單 -> **重新載 Webview**(如果 UI 為空白/凍結,則有幫助)。
---
### 禁用插件
### 禁用外掛
如果桌面應用程式在啟動時崩潰、掛起或行為異常,請首先禁用插件
如果桌面應用程式在啟動時崩潰、卡住或行為異常,請首先禁用外掛
#### 檢查全配置
#### 檢查全配置
打開全局配置文件並查找 `plugin` 密鑰
打開全域設定檔並查找 `plugin`
- **macOS/Linux**`~/.config/opencode/opencode.jsonc`(或`~/.config/opencode/opencode.json`
- **macOS/Linux**`~/.config/opencode/opencode.jsonc`(或 `~/.config/opencode/opencode.json`
- **macOS/Linux**(較舊的安裝):`~/.local/share/opencode/opencode.jsonc`
- **Windows**:按`WIN+R`並粘貼`%USERPROFILE%\.config\opencode\opencode.jsonc`
- **Windows**:按 `WIN+R` 並貼上 `%USERPROFILE%\.config\opencode\opencode.jsonc`
如果您配置了插件,請過刪除密鑰或將其設為空數組來暫時禁用它們:
如果您配置了外掛,請過刪除或將其設為空陣列來暫時禁用它們:
```jsonc
{
@@ -70,75 +70,75 @@ opencode Desktop 在後台運行本地 opencode 服務器(`opencode-cli` sidec
}
```
#### 檢查插件目錄
#### 檢查外掛目錄
opencode 還可以從磁盤加載本地插件。暫時將它們移開(或重命名文件夾)並重新啟動桌面應用程式:
opencode 還可以從磁碟載入本地外掛。暫時將它們移開(或重命名資料夾)並重新啟動桌面應用程式:
- **全局插件**
- **全域外掛**
- **macOS/Linux**`~/.config/opencode/plugins/`
- **Windows**:按`WIN+R`並粘貼`%USERPROFILE%\.config\opencode\plugins`
- **項目插件**(僅當您使用每個項目配置時)
- **Windows**:按 `WIN+R` 並貼上 `%USERPROFILE%\.config\opencode\plugins`
- **專案外掛**(僅當您使用每個專案配置時)
- `<your-project>/.opencode/plugins/`
如果應用程式再次開始工作,請一次重新啟用一個插件,以找出導致問題的插件
如果應用程式再次開始工作,請一次重新啟用一個外掛,以找出導致問題的外掛
---
### 清除緩存
### 清除快取
如果禁用插件沒有幫助(或者插件安裝被卡住),請清除緩存,以便 opencode 可以重建它。
如果禁用外掛沒有幫助(或者外掛安裝被卡住),請清除快取,以便 opencode 可以重建它。
1. 完全退出 opencode Desktop。
2. 刪除緩存目錄:
2. 刪除快取目錄:
- **macOS**Finder -> `Cmd+Shift+G` -> 貼`~/.cache/opencode`
- **Linux**:刪除`~/.cache/opencode`(或運行`rm -rf ~/.cache/opencode`
- **Windows**:按`WIN+R`並粘貼`%USERPROFILE%\.cache\opencode`
- **macOS**Finder -> `Cmd+Shift+G` -> 貼`~/.cache/opencode`
- **Linux**:刪除 `~/.cache/opencode`(或執行 `rm -rf ~/.cache/opencode`
- **Windows**:按 `WIN+R` 並貼上 `%USERPROFILE%\.cache\opencode`
3. 重新啟動 opencode 桌面。
---
### 修復服器連接問題
### 修復服器連接問題
opencode Desktop 可以啟動自己的本地服務器(默認)或連接到您配置的服器 URL。
opencode Desktop 可以啟動自己的本地伺服器(預設)或連接到您配置的服器 URL。
如果您看到 **連接失敗** 對話(或者應用程式永遠無法通過啟動幕),請檢查自定義服器 URL。
如果您看到 **連接失敗** 對話方塊(或者應用程式永遠無法通過啟動幕),請檢查自定義服器 URL。
#### 清除桌面默認服務器 URL
#### 清除桌面預設伺服器 URL
在主幕中,單擊服器名稱(帶有狀態點)以打開服器選取器。在**默認服務器**部分中,單擊**清除**
在主幕中,單擊服器名稱(帶有狀態點)以打開服器選取器。在**預設伺服器**部分中,單擊**清除**
#### 從您的配置中刪除`server.port` / `server.hostname`
#### 從您的配置中刪除 `server.port` / `server.hostname`
如果您的 `opencode.json(c)` 包含 `server` 部分,請將其暫時刪除並重新啟動桌面應用程式。
#### 檢查環境變
#### 檢查環境變
如果您在環境中設了 `OPENCODE_PORT`,桌面應用程式將嘗試將該端口用於本地服器。
如果您在環境中設了 `OPENCODE_PORT`,桌面應用程式將嘗試將該連接埠用於本地服器。
- 取消設`OPENCODE_PORT`(或選擇一個空閒端口)並重新啟動。
- 取消設`OPENCODE_PORT`(或選擇一個空閒連接埠)並重新啟動。
---
### LinuxWayland / X11 問題
在 Linux 上,某些 Wayland 設可能會導致空白窗或合成器錯誤。
在 Linux 上,某些 Wayland 設可能會導致空白窗或合成器錯誤。
- 如果您在 Wayland 上且應用程式空白/崩潰,請嘗試使用 `OC_ALLOW_WAYLAND=1` 啟動。
- 如果這讓事情變得更糟,請將其刪除並嘗試在 X11 會話下啟動。
- 如果這讓事情變得更糟,請將其刪除並嘗試在 X11 工作階段下啟動。
---
### WindowsWebView2 行時
### WindowsWebView2 行時
在 Windows 上opencode Desktop 需要 Microsoft Edge **WebView2 行時**。如果應用程式打開為空白窗或無法啟動,請安裝/更新 WebView2然後重試。
在 Windows 上opencode Desktop 需要 Microsoft Edge **WebView2 行時**。如果應用程式打開為空白窗或無法啟動,請安裝/更新 WebView2然後重試。
---
### Windows一般性能問題
如果您在 Windows 上遇到性能緩慢、文件訪問問題或terminal問題,請嘗試使用[WSL適用於 Linux 的 Windows 子系統)](/docs/windows-wsl)。 WSL 提供了一個可以與 opencode 功能更加無縫協作的 Linux 環境。
如果您在 Windows 上遇到性能緩慢、檔案存取問題或終端機問題,請嘗試使用 [WSL適用於 Linux 的 Windows 子系統)](/docs/windows-wsl)。 WSL 提供了一個可以與 opencode 功能更加無縫協作的 Linux 環境。
---
@@ -146,26 +146,26 @@ opencode Desktop 可以啟動自己的本地服務器(默認)或連接到您
opencode Desktop 僅在以下情況下顯示系統通知:
- 在您的作系統設中啟用 opencode 通知,並且
- 應用程式窗未聚焦。
- 在您的作系統設中啟用 opencode 通知,並且
- 應用程式窗未聚焦。
---
### 重置桌面應用程式儲(最後手段)
### 重置桌面應用程式儲(最後手段)
如果應用程式無法啟動並且您無法從 UI 內部清除設,請重置桌面應用程式的保存狀態。
如果應用程式無法啟動並且您無法從 UI 內部清除設,請重置桌面應用程式的保存狀態。
1. 退出 opencode Desktop。
2. 查找並刪除這些文件(它們位於 opencode Desktop 應用程式數據目錄中):
2. 查找並刪除這些檔案(它們位於 opencode Desktop 應用程式資料目錄中):
- `opencode.settings.dat`(桌面默認服務器 URL
- `opencode.global.dat` 和 `opencode.workspace.*.dat`UI 狀態,如最近的服務器/項目
- `opencode.settings.dat`(桌面預設伺服器 URL
- `opencode.global.dat` 和 `opencode.workspace.*.dat`UI 狀態,如最近的伺服器/專案
快速找到目錄:
- **macOS**Finder -> `Cmd+Shift+G` -> `~/Library/Application Support`(然後搜上面的文件名)
- **Linux**:在 `~/.local/share` 下搜上述文件
- **Windows**:按`WIN+R` -> `%APPDATA%`(然後搜上面的文件名)
- **macOS**Finder -> `Cmd+Shift+G` -> `~/Library/Application Support`(然後搜上面的名)
- **Linux**:在 `~/.local/share` 下搜上述
- **Windows**:按 `WIN+R` -> `%APPDATA%`(然後搜上面的名)
---
@@ -175,15 +175,15 @@ opencode Desktop 僅在以下情況下顯示系統通知:
1. **在 GitHub 上報告問題**
報告錯誤或請求功能的最佳方式是過我們的 GitHub 儲庫:
報告錯誤或請求功能的最佳方式是過我們的 GitHub 儲庫:
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
建新問題之前,請搜現有問題以查看您的問題是否已被報告。
在建新問題之前,請搜現有問題以查看您的問題是否已被報告。
2. **加入我們的不和諧**
2. **加入我們的 Discord**
如需時幫助和社討論,請加入我們的 Discord 服器:
如需時幫助和社討論,請加入我們的 Discord 服器:
[**opencode.ai/discord**](https://opencode.ai/discord)
@@ -197,48 +197,48 @@ opencode Desktop 僅在以下情況下顯示系統通知:
### opencode 無法啟動
1. 檢查日誌中是否有錯誤
2. 嘗試使用 `--print-logs` 行以查看terminal 中的輸出
3. 確保您擁有最新版本`opencode upgrade`
1. 檢查日誌中是否有錯誤
2. 嘗試使用 `--print-logs` 行以查看終端機中的輸出
3. 確保您擁有最新版本 `opencode upgrade`
---
### 身驗證問題
### 身驗證問題
1. 嘗試使用 TUI 中的 `/connect` 令重新進行身驗證
2. 檢查您的 API 鑰是否有效
3. 確保您的網允許連接到供商的 API
1. 嘗試使用 TUI 中的 `/connect` 令重新進行身驗證
2. 檢查您的 API 鑰是否有效
3. 確保您的網允許連接到供商的 API
---
### 型不可用
### 型不可用
1. 檢查您是否已通過供商的身驗證
2. 驗證配置中的型名稱是否正確
3. 某些型可能需要特定的訪問權限或訂閱
1. 檢查您是否已通過供商的身驗證
2. 驗證配置中的型名稱是否正確
3. 某些型可能需要特定的存取權限或訂閱
如果您遇到`ProviderModelNotFoundError`,您很可能是錯誤的
如果您遇到 `ProviderModelNotFoundError`,您很可能是錯誤的
在某處引用模型。
模型應該像這樣引用:`<providerId>/<modelId>`
例:
例:
- `openai/gpt-4.1`
- `openrouter/google/gemini-2.5-flash`
- `opencode/kimi-k2`
要了解您可以訪問哪些模型,請運行`opencode models`
要了解您可以存取哪些模型,請執行 `opencode models`
---
### 提供者初始化錯誤
### 供應商初始化錯誤
如果遇到 ProviderInitError您的配置可能無效或損壞。
要解決這個問題:
1. 首先,按照 [供應商指南](/docs/providers) 驗證您的供商是否已正確設
2. 如果問題仍然存在,請嘗試清除儲的配置:
1. 首先,按照 [供應商指南](/docs/providers) 驗證您的供商是否已正確設
2. 如果問題仍然存在,請嘗試清除儲的配置:
```bash
rm -rf ~/.local/share/opencode
@@ -246,17 +246,17 @@ opencode Desktop 僅在以下情況下顯示系統通知:
在 Windows 上,按 `WIN+R` 並刪除:`%USERPROFILE%\.local\share\opencode`
3. 使用 TUI 中的 `/connect` 令向您的供商重新進行身驗證。
3. 使用 TUI 中的 `/connect` 令向您的供商重新進行身驗證。
---
### AI_APICallError 和供商套件問題
### AI_APICallError 和供商套件問題
如果您遇到 API 調用錯誤,這可能是由於過時的供商套件造成的。 opencode 根據需要動態安裝供商套件OpenAI、Anthropic、Google 等)並將其緩存在本地。
如果您遇到 API 呼叫錯誤,這可能是由於過時的供商套件造成的。 opencode 根據需要動態安裝供商套件OpenAI、Anthropic、Google 等)並將其快取在本地。
要解決供商套件問題:
要解決供商套件問題:
1. 清除供商套件緩存
1. 清除供商套件快取
```bash
rm -rf ~/.cache/opencode
@@ -264,15 +264,15 @@ opencode Desktop 僅在以下情況下顯示系統通知:
在 Windows 上,按 `WIN+R` 並刪除:`%USERPROFILE%\.cache\opencode`
2. 重新啟動 opencode 以重新安裝最新的供商套件
2. 重新啟動 opencode 以重新安裝最新的供商套件
這將強制 opencode 下載最新版本的供商套件,這通常可以解決模型參數和 API 更改的容性問題。
這將強制 opencode 下載最新版本的供商套件,這通常可以解決模型參數和 API 更改的容性問題。
---
### 複製/貼在 Linux 上不起作用
### 複製/貼在 Linux 上不起作用
Linux 用戶需要安裝以下剪貼板實用程之一才能使用複制/粘貼功能:
Linux 使用者需要安裝以下剪貼簿公用程之一才能使用複製/貼上功能:
**對於 X11 系統:**
@@ -288,7 +288,7 @@ apt install -y xsel
apt install -y wl-clipboard
```
**對於無環境:**
**對於無介面環境:**
```bash
apt install -y xvfb
@@ -297,4 +297,4 @@ Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
export DISPLAY=:99.0
```
opencode 將檢測您是否使用 Wayland 並更喜歡 `wl-clipboard`,否則它將嘗試按 `xclip` 和 `xsel` 的順序找剪貼工具。
opencode 將檢測您是否使用 Wayland 並更喜歡 `wl-clipboard`,否則它將嘗試按 `xclip` 和 `xsel` 的順序找剪貼簿工具。

View File

@@ -1,13 +1,13 @@
---
title: TUI
description: 使用 OpenCode terminal 用戶介面。
description: 使用 OpenCode 終端機使用者介面。
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
OpenCode 提供了一個交互式 terminal 介面或 TUI供您與 LLM 一起處理項目
OpenCode 提供了一個互動式終端機介面或 TUI供您與 LLM 一起處理專案
行 OpenCode 會啟動當前目錄的 TUI。
行 OpenCode 會啟動當前目錄的 TUI。
```bash
opencode
@@ -19,7 +19,7 @@ opencode
opencode /path/to/project
```
進入 TUI 後,您可以通過消息進行提示。
進入 TUI 後,您可以透過訊息進行提示。
```text
Give me a quick summary of the codebase.
@@ -27,51 +27,51 @@ Give me a quick summary of the codebase.
---
## 文件參考
## 檔案參考
您可以使用 `@` 在息中引用文件。這會在當前工作目錄中進行模糊文件搜索
您可以使用 `@` 在息中引用檔案。這會在當前工作目錄中進行模糊檔案搜尋
:::tip
您還可以使用 `@` 來引用息中的文件
您還可以使用 `@` 來引用息中的檔案
:::
```text "@packages/functions/src/api/index.ts"
How is auth handled in @packages/functions/src/api/index.ts?
```
文件的內容會自動添加到對話中。
檔案的內容會自動添加到對話中。
---
## Bash
## Bash
以 `!` 開始一條息以行 shell 令。
以 `!` 開始一條息以行 shell 令。
```bash frame="none"
!ls -la
```
令的輸出將作為工具結果添加到對話中。
令的輸出將作為工具結果添加到對話中。
---
##
##
使用 OpenCode TUI 時,您可以入 `/` 後跟令名稱來快速執行操作。例如:
使用 OpenCode TUI 時,您可以入 `/` 後跟令名稱來快速執行操作。例如:
```bash frame="none"
/help
```
Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x` is the default leader key. [了解更多](/docs/keybinds)。
大多數指令也有使用 `ctrl+x` 作為 Leader 鍵的按鍵綁定,其中 `ctrl+x` 是預設的 Leader 鍵。 [了解更多](/docs/keybinds)。
以下是所有可用的斜杠命令:
以下是所有可用的斜線指令:
---
### connect
供商添加到 OpenCode。允許您從可用的供商中進行選擇並添加其 API 鑰。
將供商添加到 OpenCode。允許您從可用的供商中進行選擇並添加其 API 鑰。
```bash frame="none"
/connect
@@ -81,7 +81,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### compact
壓縮當前會話。 _別名_`/summarize`
壓縮當前工作階段。 _別名_`/summarize`
```bash frame="none"
/compact
@@ -93,7 +93,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### details
切換工具執行詳細信息
切換工具執行詳細資訊
```bash frame="none"
/details
@@ -105,7 +105,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### editor
打開外部編輯器來撰寫息。使用 `EDITOR` 環境變中設的編輯器。 [了解更多](#editor-setup)。
打開外部編輯器來撰寫息。使用 `EDITOR` 環境變中設的編輯器。 [了解更多](#editor-setup)。
```bash frame="none"
/editor
@@ -129,7 +129,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### export
將當前對話導出到 Markdown 並在默認編輯器中打開。使用 `EDITOR` 環境變中設的編輯器。 [了解更多](#editor-setup)。
將當前對話導出到 Markdown 並在預設編輯器中打開。使用 `EDITOR` 環境變中設的編輯器。 [了解更多](#editor-setup)。
```bash frame="none"
/export
@@ -141,7 +141,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### help
顯示幫助對話框
顯示說明對話方塊
```bash frame="none"
/help
@@ -153,7 +153,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### init
建或更新`AGENTS.md` 文件。 [了解更多](/docs/rules)。
或更新 `AGENTS.md` 檔案。 [了解更多](/docs/rules)。
```bash frame="none"
/init
@@ -165,7 +165,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### models
列出可用型
列出可用型。
```bash frame="none"
/models
@@ -177,7 +177,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### new
開始新的會話。 _別名_`/clear`
開始新的工作階段。 _別名_`/clear`
```bash frame="none"
/new
@@ -189,14 +189,14 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### redo
重做之前撤消的消息。僅在使用`/undo`後可用。
重做之前撤銷的訊息。僅在使用 `/undo` 後可用。
:::tip
任何文件更改也將被恢復。
任何檔案變更也將被恢復。
:::
在內部,這使用 Git 來管理文件更改。所以你的項目**需要
是一個 Git 儲庫**。
在內部,這使用 Git 來管理檔案變更。所以你的專案**需要
是一個 Git 儲庫**。
```bash frame="none"
/redo
@@ -208,7 +208,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### sessions
列出會話並在會話之間切換。 _別名_`/resume`、`/continue`
列出工作階段並在工作階段之間切換。 _別名_`/resume`、`/continue`
```bash frame="none"
/sessions
@@ -220,7 +220,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### share
享當前會話。 [了解更多](/docs/share)。
享當前工作階段。 [了解更多](/docs/share)。
```bash frame="none"
/share
@@ -244,10 +244,10 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### thinking
切換對話中思/推理塊的可見性。啟用後,您可以看到支擴展思的模型的推理過程。
切換對話中思/推理塊的可見性。啟用後,您可以看到支擴展思的模型的推理過程。
:::note
令僅控制是否**顯示** - 它不啟用或禁用模型的推理功能。要切換實際推理功能,請使用 `ctrl+t` 循環切換模型變體。
令僅控制是否**顯示** - 它不啟用或禁用模型的推理功能。要切換實際推理功能,請使用 `ctrl+t` 循環切換模型變體。
:::
```bash frame="none"
@@ -258,14 +258,14 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### undo
對話中的最後一條息。刪除最近的用戶消息、所有後續應以及任何文件更改
對話中的最後一條息。刪除最近的使用者訊息、所有後續應以及任何檔案變更
:::tip
所做的任何文件更改也將被恢復。
所做的任何檔案變更也將被恢復。
:::
在內部,這使用 Git 來管理文件更改。所以你的項目**需要
是一個 Git 儲庫**。
在內部,這使用 Git 來管理檔案變更。所以你的專案**需要
是一個 Git 儲庫**。
```bash frame="none"
/undo
@@ -277,7 +277,7 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### unshare
取消享當前會話。 [了解更多](/docs/share#un-sharing)。
取消享當前工作階段。 [了解更多](/docs/share#un-sharing)。
```bash frame="none"
/unshare
@@ -285,9 +285,9 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
---
## 編輯器設
## 編輯器設
`/editor` 和`/export` 令都使用`EDITOR` 環境變中指定的編輯器。
`/editor` 和 `/export` 令都使用 `EDITOR` 環境變中指定的編輯器。
<Tabs>
<TabItem label="Linux/macOS">
@@ -346,16 +346,16 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
- `subl` - Sublime Text
:::note
某些編輯器(例如 VS Code需要以 `--wait` 標啟動。
某些編輯器(例如 VS Code需要以 `--wait` 標啟動。
:::
某些編輯器需要命令參數才能在阻止模式下行。 `--wait` 標使編輯器進程阻塞直到關閉。
某些編輯器需要命令參數才能在阻止模式下行。 `--wait` 標使編輯器處理程序阻塞直到關閉。
---
## 配置
您可以過 OpenCode 配置文件自定義 TUI 行為。
您可以過 OpenCode 設定檔自定義 TUI 行為。
```json title="opencode.json"
{
@@ -371,20 +371,20 @@ Most commands also have keybind using `ctrl+x` as the leader key, where `ctrl+x`
### 選項
- `scroll_acceleration` - 啟用 macOS 風格的動加速,實現平滑、自然的動。啟用後,動速度會隨著快速動手勢而增加,並在較慢的移動時保持精確。 **此設優先於`scroll_speed`,並在啟用時覆它。 **
- `scroll_speed` - 控制使用滾動命令時 TUI 動的速度(最小值:`1`)。默認為`3`。 **注意:如果`scroll_acceleration.enabled` 設置為`true`,則忽略此設置。 **
- `scroll_acceleration` - 啟用 macOS 風格的動加速,實現平滑、自然的動。啟用後,動速度會隨著快速動手勢而增加,並在較慢的移動時保持精確。 **此設優先於 `scroll_speed`,並在啟用時覆它。**
- `scroll_speed` - 控制使用捲動指令時 TUI 動的速度(最小值:`1`)。預設為 `3`。 **注意:如果 `scroll_acceleration.enabled` 設定為 `true`,則忽略此設定。**
---
## 定制化
## 自定義
您可以使用命令選項板(`ctrl+x h` 或`/help`)自定義 TUI 視圖的各個方面。這些設在重新啟動後仍然存在。
您可以使用指令面板(`ctrl+x h` 或 `/help`)自定義 TUI 視圖的各個方面。這些設在重新啟動後仍然存在。
---
#### 用戶名顯示
#### 使用者名稱顯示
切換您的用戶名是否出現在聊天息中。過以下方式訪問
切換您的使用者名稱是否出現在聊天息中。過以下方式存取
- 令面板:搜索“用戶名”或“隱藏用戶名”
- 該設會自動保留並在 TUI 會話中被記住
- 令面板:搜尋「使用者名稱」或「隱藏使用者名稱」
- 該設會自動保留並在 TUI 工作階段中被記住

View File

@@ -1,70 +1,70 @@
---
title: 網絡
title: Web
description: 在瀏覽器中使用 opencode。
---
opencode 可以在瀏覽器中作為 Web 應用程式行,無需terminal即可提供同樣強大的 AI 碼體驗。
opencode 可以在瀏覽器中作為 Web 應用程式行,無需終端機即可提供同樣強大的 AI 程式碼體驗。
![opencode Web - 新會話](../../../assets/web/web-homepage-new-session.png)
![opencode Web - 新工作階段](../../../assets/web/web-homepage-new-session.png)
## 入門
通過運行以下令啟動 Web 介面:
透過執行以下令啟動 Web 介面:
```bash
opencode web
```
這將在 `127.0.0.1` 上啟動一個具有隨機可用端口的本地服器,並自動在默認瀏覽器中打開 opencode。
這將在 `127.0.0.1` 上啟動一個具有隨機可用連接埠的本地服器,並自動在預設瀏覽器中打開 opencode。
:::caution
如果未設`OPENCODE_SERVER_PASSWORD`,服器將不安全。這對於本地使用來說很好,但應該針對網絡訪問進行設
如果未設`OPENCODE_SERVER_PASSWORD`服器將不安全。這對於本地使用來說很好,但應該針對網路存取進行設
:::
:::tip[Windows 用戶]
為了獲得最佳體驗,請從 [WSL](/docs/windows-wsl) 而不是 PowerShell 行 `opencode web`。這確保了正確的檔案系統訪問和terminal集成
:::tip[Windows 使用者]
為了獲得最佳體驗,請從 [WSL](/docs/windows-wsl) 而不是 PowerShell 行 `opencode web`。這確保了正確的檔案系統存取和終端機整合
:::
---
## 配置
您可以使用命令行標誌或在 [配置文件](/docs/config) 中配置 Web 服器。
您可以使用命令列旗標或在 [設定檔](/docs/config) 中配置 Web 服器。
### 港口
### 連接埠
默認情況下opencode 選擇一個可用端口。您可以指定一個端口
預設情況下opencode 選擇一個可用連接埠。您可以指定一個連接埠
```bash
opencode web --port 4096
```
### 主機名
### 主機名
默認情況下,服器綁定到`127.0.0.1`(僅限本地主機)。要使 opencode 在您的網上可訪問
預設情況下,服器綁定到 `127.0.0.1`(僅限 localhost)。要使 opencode 在您的網上可存取
```bash
opencode web --hostname 0.0.0.0
```
當使用`0.0.0.0`時opencode將顯示本地址和網絡地址:
當使用 `0.0.0.0` opencode 將顯示本地址和網路位址:
```
Local access: http://localhost:4096
Network access: http://192.168.1.100:4096
```
### mDNS 發現
### mDNS 探索
啟用 mDNS 以使您的服器在本地網上可發現
啟用 mDNS 以使您的服器在本地網上可探索
```bash
opencode web --mdns
```
這會自動將主機名設置為 `0.0.0.0` 並將服務器通告為 `opencode.local`。
這會自動將主機名稱設定為 `0.0.0.0` 並將伺服器廣播為 `opencode.local`。
您可以自定義 mDNS 域名以在同一網絡上運行多個實例:
您可以自定義 mDNS 域名以在同一網路上執行多個實例:
```bash
opencode web --mdns --mdns-domain myproject.local
@@ -78,39 +78,39 @@ opencode web --mdns --mdns-domain myproject.local
opencode web --cors https://example.com
```
### 驗證
### 身分驗證
要保護訪問,請使用 `OPENCODE_SERVER_PASSWORD` 環境變量設置密碼:
要保護存取,請使用 `OPENCODE_SERVER_PASSWORD` 環境變數設定密碼:
```bash
OPENCODE_SERVER_PASSWORD=secret opencode web
```
用戶名默認為`opencode`,但可以使用`OPENCODE_SERVER_USERNAME` 進行更改。
使用者名稱預設為 `opencode`,但可以使用 `OPENCODE_SERVER_USERNAME` 進行更改。
---
## 使用網絡介面
## 使用 Web 介面
啟動後Web 介面將提供對 opencode 會話的訪問
啟動後Web 介面將提供對 opencode 工作階段的存取
### 會議
### 工作階段
從主頁查看和管理您的會話。您可以查看活動會話並開始新會話
從主頁查看和管理您的工作階段。您可以查看活動工作階段並開始新工作階段
![opencode Web - 活動會話](../../../assets/web/web-homepage-active-session.png)
![opencode Web - 活動工作階段](../../../assets/web/web-homepage-active-session.png)
### 服器狀態
### 服器狀態
單擊查看服務器”可查看連接的服器及其狀態。
單擊查看伺服器」可查看連接的服器及其狀態。
![opencode Web - 查看服器](../../../assets/web/web-homepage-see-servers.png)
![opencode Web - 查看服器](../../../assets/web/web-homepage-see-servers.png)
---
## 連接terminal
## 連接終端機
您可以將terminal TUI 連接到正在行的 Web 服器:
您可以將終端機 TUI 連接到正在行的 Web 服器:
```bash
# Start the web server
@@ -120,13 +120,13 @@ opencode web --port 4096
opencode attach http://localhost:4096
```
這允許您同時使用 Web 介面和terminal,共享相同的會話和狀態。
這允許您同時使用 Web 介面和終端機,共享相同的工作階段和狀態。
---
## 配置文件
## 設定檔
您還可以在 `opencode.json` 配置文件中配置服器設
您還可以在 `opencode.json` 設定檔中配置服器設
```json
{
@@ -139,4 +139,4 @@ opencode attach http://localhost:4096
}
```
命令行標誌優先於配置文件設置
命令列旗標優先於設定檔設定

View File

@@ -1,5 +1,5 @@
---
title:
title: Zen
description: opencode 提供的精選模型列表。
---
@@ -13,56 +13,56 @@ OpenCode Zen 是 opencode 團隊提供的經過測試和驗證的模型列表。
OpenCode Zen 目前處於測試階段。
:::
Zen 的工作方式與 opencode 中的任何其他供商一樣。您登 OpenCode Zen 並獲取
您的 API 鑰。它是**完全可選的**,您不需要使用它即可使用
Zen 的工作方式與 opencode 中的任何其他供商一樣。您登 OpenCode Zen 並獲取
您的 API 鑰。它是**完全可選的**,您不需要使用它即可使用
opencode。
---
## 背景
市面上有很多型,但其中只有少數幾個
這些模型可以很好地用作碼代理。此外,大多數供商都
市面上有很多型,但其中只有少數幾個
這些模型可以很好地用作程式碼代理。此外,大多數供商都
配置非常不同;所以你會得到截然不同的性能和質量。
:::tip
我們測試了一組精選的與 opencode 配合良好的模型和供商。
我們測試了一組精選的與 opencode 配合良好的模型和供商。
:::
因此,如果您過 OpenRouter 之類的東西使用模型,那麼您永遠無法
因此,如果您過 OpenRouter 之類的東西使用模型,那麼您永遠無法
確定您是否獲得了您想要的模型的最佳版本。
為了解決這個問題,我們做了幾件事:
1. 我們測試了一組選定的模型,並與他們的團隊討論瞭如何
最好行它們。
2. 然後我們與一些供商合作以確保這些服務得到服務
最好行它們。
2. 然後我們與一些供商合作以確保這些服務得到服務
正確。
3. 最後,我們對模型/供商的組合進行了基準測試並提出了
3. 最後,我們對模型/供商的組合進行了基準測試並提出了
並附上一份我們覺得不錯的推薦清單。
OpenCode Zen 是一個 AI 網關,可讓您訪問這些模型。
OpenCode Zen 是一個 AI 閘道,可讓您存取這些模型。
---
## 它是如何運作的
OpenCode Zen 的工作方式與 opencode 中的任何其他供商一樣。
OpenCode Zen 的工作方式與 opencode 中的任何其他供商一樣。
1. 您登 **<a href={console}>OpenCode Zen</a>**,添加您的帳單
詳細信息,然後復制您的 API 鑰。
2. 您在 TUI 中行 `/connect` 令,選擇 OpenCode Zen然後貼您的 API 鑰。
3. 在 TUI 中行 `/models` 以查看我們推薦的型列表。
1. 您登 **<a href={console}>OpenCode Zen</a>**,添加您的帳單
詳細資訊,然後複製您的 API 鑰。
2. 您在 TUI 中行 `/connect` 令,選擇 OpenCode Zen然後貼您的 API 鑰。
3. 在 TUI 中行 `/models` 以查看我們推薦的型列表。
您需要按請求付費,並且可以將積分添加到您的帳戶中。
您需要按請求付費,並且可以將點數添加到您的帳戶中。
---
## 端點
您還可以過以下 API 端點訪問我們的模型。
您還可以過以下 API 端點存取我們的模型。
| 型 | 型 ID | 端點 | AI SDK 套件 |
| 型 | 型 ID | 端點 | AI SDK 套件 |
| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
| 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` |
@@ -94,13 +94,13 @@ OpenCode Zen 的工作方式與 opencode 中的任何其他提供商一樣。
| 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` |
opencode 配置中的 [型編號](/docs/config/#models)
使用格式`opencode/<model-id>`。例如,對於 GPT 5.2 Codex您將
在您的配置中使用`opencode/gpt-5.2-codex`。
opencode 配置中的 [型編號](/docs/config/#models)
使用格式 `opencode/<model-id>`。例如,對於 GPT 5.2 Codex您將
在您的配置中使用 `opencode/gpt-5.2-codex`。
---
### 型
###
您可以從以下位置獲取可用模型及其元數據的完整列表:
@@ -112,9 +112,9 @@ https://opencode.ai/zen/v1/models
## 定價
我們支持即用即付模式。以下是**每 100 萬代幣的價格**。
我們支援按用量付費模式。以下是**每 100 萬 Tokens 的價格**。
| 型 | 輸入 | 輸出 | 緩存讀取 | 緩存寫入 |
| 型 | 輸入 | 輸出 | 快取讀取 | 快取寫入 |
| --------------------------------- | ------ | ------ | -------- | -------- |
| Big Pickle | Free | Free | Free | - |
| MiniMax M2.1 Free | Free | Free | Free | - |
@@ -150,7 +150,7 @@ https://opencode.ai/zen/v1/models
| GPT 5 Codex | $1.07 | $8.50 | $0.107 | - |
| GPT 5 Nano | Free | Free | Free | - |
您可能會在使用歷史記錄中意到*Claude Haiku 3.5*。這是一個[低成本模](/docs/config/#models),用於生成會話標題。
您可能會在使用歷史記錄中意到 _Claude Haiku 3.5_。這是一個 [低成本模](/docs/config/#models),用於生成工作階段標題。
:::note
信用卡費用按成本轉嫁4.4% + 每筆交易 0.30 美元);除此之外我們不收取任何費用。
@@ -158,57 +158,57 @@ https://opencode.ai/zen/v1/models
免費模型:
- GLM 4.7 免費版在 opencode 上限時提供。團隊正在利用這段時間收集饋並改進模型。
- Kimi K2.5 Free 在 opencode 上限時提供。團隊正在利用這段時間收集饋並改進模型。
- MiniMax M2.1 免費版在 opencode 上限時提供。團隊正在利用這段時間收集饋並改進模型。
- Big Pickle 是一個秘密模型,在 opencode 上限時免費。團隊正在利用這段時間收集饋並改進模型。
- GLM 4.7 免費版在 opencode 上限時提供。團隊正在利用這段時間收集饋並改進模型。
- Kimi K2.5 Free 在 opencode 上限時提供。團隊正在利用這段時間收集饋並改進模型。
- MiniMax M2.1 免費版在 opencode 上限時提供。團隊正在利用這段時間收集饋並改進模型。
- Big Pickle 是一個秘密模型,在 opencode 上限時免費。團隊正在利用這段時間收集饋並改進模型。
如果您有任何疑問,請<a href={email}>聯我們</a>。
如果您有任何疑問,請<a href={email}>聯我們</a>。
---
### 自動重新
### 自動重新載
如果您的餘額低於 5 美元Zen 將自動值 20 美元。
如果您的餘額低於 5 美元Zen 將自動值 20 美元。
您可以更改自動值金額。您還可以完全禁用自動重新載。
您可以更改自動值金額。您還可以完全禁用自動重新載
---
### 每月限額
您還可以為整個工作區和每個工作區設每月使用限制
您還可以為整個工作區和每個工作區設每月使用限制
你的團隊的成員。
例如,假設您將每月使用限額設為 20 美元Zen 將不會使用
一個月超過20美元。但如果你啟用了自動重新Zen 可能會結束
例如,假設您將每月使用限額設為 20 美元Zen 將不會使用
一個月超過 20 美元。但如果你啟用了自動重新載Zen 可能會結束
如果您的餘額低於 5 美元,則向您收取超過 20 美元的費用。
---
## 隱私
我們所有的模型都在美國託管。我們的供商遵循零保留政策,不會將您的數據用於模型訓練,但以下情況除外:
我們所有的模型都在美國託管。我們的供商遵循零保留政策,不會將您的數據用於模型訓練,但以下情況除外:
- Big Pickle在免費期間收集的數據可用於改進模型。
- GLM 4.7 免費:在免費期間,收集的數據可用於改進模型。
- Kimi K2.5 免費:在免費期間,收集的數據可用於改進模型。
- MiniMax M2.1 免費:在免費期間,收集的數據可用於改進模型。
- OpenAI API根據[OpenAI 的數據政策](https://platform.openai.com/docs/guides/your-data),請求將保留 30 天。
- Anthropic API根據[Anthropic 的數據政策](https://docs.anthropic.com/en/docs/claude-code/data-usage),請求將保留 30 天。
- OpenAI API根據 [OpenAI 的數據政策](https://platform.openai.com/docs/guides/your-data),請求將保留 30 天。
- Anthropic API根據 [Anthropic 的數據政策](https://docs.anthropic.com/en/docs/claude-code/data-usage),請求將保留 30 天。
---
## 對於團隊
Zen 對團隊也很有效。您可以邀請隊友、分配角色、策劃
Zen 對團隊也很有效。您可以邀請隊友、分配角色、精選
您的團隊使用的模型等等。
:::note
作為測試版的一部分,工作空間目前對團隊免費。
作為測試版的一部分,工作目前對團隊免費。
:::
作為測試版的一部分,管理工作空間目前對團隊免費。我們將會
作為測試版的一部分,管理工作目前對團隊免費。我們將會
很快就會分享更多有關定價的細節。
---
@@ -217,14 +217,14 @@ Zen 對團隊也很有效。您可以邀請隊友、分配角色、策劃
您可以邀請團隊成員到您的工作區並分配角色:
- **管理員**管理模型、成員、API 鑰和計費
- **成員**:僅管理自己的 API
- **管理員**管理模型、成員、API 鑰和計費
- **成員**:僅管理自己的 API
管理員還可以為每個成員設每月支出限額,以控成本。
管理員還可以為每個成員設每月支出限額,以控成本。
---
### 模型訪問
### 模型存取
管理員可以啟用或禁用工作區的特定模型。對禁用模型發出的請求將返回錯誤。
@@ -233,22 +233,22 @@ Zen 對團隊也很有效。您可以邀請隊友、分配角色、策劃
---
### 帶上你自己的鑰
### 帶上你自己的
您可以使用自己的 OpenAI 或 Anthropic API 鑰,同時仍然訪問 Zen 中的其他模型。
您可以使用自己的 OpenAI 或 Anthropic API 鑰,同時仍然存取 Zen 中的其他模型。
當您使用自己的鑰時,令牌將由提供商直接計費,而不是由 Zen。
當您使用自己的鑰時,Tokens 將由供應商直接計費,而不是由 Zen。
例如,您的組織可能已經擁有 OpenAI 或 Anthropic 的
例如,您的組織可能已經擁有 OpenAI 或 Anthropic 的
你想使用它而不是 Zen 提供的。
---
## 目標
我們建 OpenCode Zen 的目的是:
我們建 OpenCode Zen 的目的是:
1. **對標**編碼代理的最佳模型/供商。
2. 可以使用**最高質**選項,而不是降低性能或轉向更便宜的供商。
3. 過按成本價銷售來傳遞任何**價格下跌**;所以唯一的加價就是支付我們的加工費。
4. 過允許您將其與任何其他編碼代理一起使用,**無鎖定**。並且始終允許您將任何其他供商與 opencode 一起使用。
1. **設定基準**編碼代理的最佳模型/供商。
2. 可以使用**最高質**選項,而不是降低性能或轉向更便宜的供商。
3. 過按成本價銷售來傳遞任何**價格下跌**;所以唯一的加價就是支付我們的處理費。
4. 過允許您將其與任何其他編碼代理一起使用,**無鎖定**。並且始終允許您將任何其他供商與 opencode 一起使用。