1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
|
---
title: 設定
description: 使用 opencode JSON 設定。
---
您可以使用 JSON 設定檔設定 opencode。
---
## 格式
opencode 支援 **JSON** 和 **JSONC**(帶註解的 JSON)格式。
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
// Theme configuration
"theme": "opencode",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
}
```
---
## 位置
您可以將設定放置在幾個不同的位置,它們有一個不同的優先順序。
:::note
設定檔**合併在一起**,而不是取代。
:::
設定檔被合併在一起,而不是被取代。以下設定位置的設定被合併。僅當鍵值衝突時,後面的設定才會覆寫前面的設定。保留所有設定中的非衝突設定。
例如,如果您的全域設定設定 `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) - 執行時覆寫
這意味著專案設定可以覆寫全域預設值,全域設定可以覆寫遠端組織預設值。
:::note
`.opencode` 和 `~/.config/opencode` 目錄對子目錄使用**複數名稱**:`agents/`、`commands/`、`modes/`、`plugins/`、`skills/`、`tools/` 和 `themes/`。為了向後相容,也支援單數名稱(例如 `agent/`)。
:::
---
### 遠端
組織可以透過 `.well-known/opencode` 端點提供預設設定。當您向支援它的供應商進行身分驗證時,會自動取得該資訊。
首先載入遠端設定,作為基礎層。所有其他設定來源(全域、專案)都可以覆寫這些預設值。
例如,如果您的組織提供預設禁用的 MCP 伺服器:
```json title="Remote config from .well-known/opencode"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
```
您可以在本地設定中啟用特定伺服器:
```json title="opencode.json"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
---
### 全域
將全域 opencode 設定放在 `~/.config/opencode/opencode.json` 中。使用全域設定來實現使用者範圍的偏好設定,例如主題、供應商或按鍵綁定。
全域設定覆寫遠端組織預設值。
---
### 每個專案
在專案根目錄中新增 `opencode.json`。專案設定在標準設定檔中具有最高優先級 - 它覆寫全域設定和遠端設定。
:::tip
將專案特定設定放在專案的根目錄中。
:::
當 opencode 啟動時,它會在當前目錄中尋找設定檔或遍歷到最近的 Git 目錄。
這也可以安全地簽入 Git 並使用與全域模式相同的模式。
---
### 自定義路徑
使用 `OPENCODE_CONFIG` 環境變數指定自定義設定檔路徑。
```bash
export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"
```
自定義設定按優先順序在全域設定和專案設定之間載入。
---
### 自定義目錄
使用 `OPENCODE_CONFIG_DIR` 環境變數指定自定義設定目錄。將在該目錄中搜尋代理、指令、模式和外掛,就像標準 `.opencode` 目錄一樣,並且應該遵循相同的結構。
```bash
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
opencode run "Hello world"
```
自定義目錄在全域設定和 `.opencode` 目錄之後載入,因此它**可以覆寫**它們的設定。
---
## 架構
設定檔具有在 [**`opencode.ai/config.json`**](https://opencode.ai/config.json) 中定義的架構。
您的編輯器應該能夠根據架構進行驗證和自動完成。
---
### TUI
您可以透過 `tui` 選項設定特定於 TUI 的設定。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
}
```
可用選項:
- `scroll_acceleration.enabled` - 啟用 macOS 風格的捲動加速。 **優先於 `scroll_speed`。**
- `scroll_speed` - 自定義捲動速度倍數(預設值:`3`,最小值:`1`)。如果 `scroll_acceleration.enabled` 是 `true`,則忽略。
- `diff_style` - 控制差異顯示。 `"auto"` 適應終端機寬度,`"stacked"` 始終顯示單列。
[在此處了解有關使用 TUI 的更多資訊](/docs/tui)。
---
### 伺服器
您可以透過 `opencode serve` 選項為 `opencode web` 和 `server` 指令設定伺服器設定。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "myproject.local",
"cors": ["http://localhost:5173"]
}
}
```
可用選項:
- `port` - 監聽的連接埠。
- `hostname` - 要監聽的主機名稱。當 `mdns` 啟用且未設定主機名稱時,預設為 `0.0.0.0`。
- `mdns` - 啟用 mDNS 服務探索。這允許網路上的其他設備發現您的 opencode 伺服器。
- `mdnsDomain` - mDNS 服務的自定義網域名稱。預設為 `opencode.local`。對於在同一網路上執行多個實例很有用。
- `cors` - 從基於瀏覽器的客戶端使用 HTTP 伺服器時允許 CORS 的其他來源。值必須是完整來源(通訊協定+主機+可選連接埠),例如 `https://app.example.com`。
[在此處了解有關伺服器的更多資訊](/docs/server)。
---
### 工具
您可以透過 `tools` 選項管理 LLM 可以使用的工具。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": false,
"bash": false
}
}
```
[在此處了解有關工具的更多資訊](/docs/tools)。
---
### 模型
您可以透過 `provider`、`model` 和 `small_model` 選項來設定要在 opencode 設定中使用的供應商和模型。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {},
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5"
}
```
`small_model` 選項為標題生成等輕量級任務設定單獨的模型。預設情況下,如果您的供應商可以提供更便宜的模型,opencode 會嘗試使用更便宜的模型,否則它會退回到您的主模型。
供應商選項可以包括 `timeout` 和 `setCacheKey`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"options": {
"timeout": 600000,
"setCacheKey": true
}
}
}
}
```
- `timeout` - 請求超時以毫秒為單位(預設值:300000)。設定為 `false` 以禁用。
- `setCacheKey` - 確保始終為指定的供應商設定快取金鑰。
您也可以設定 [本地模型](/docs/models#local)。 [了解更多](/docs/models)。
---
#### 特定於供應商的選項
某些供應商支援除通用 `timeout` 和 `apiKey` 設定之外的其他設定選項。
##### Amazon Bedrock
Amazon Bedrock 支援 AWS 特定設定:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"amazon-bedrock": {
"options": {
"region": "us-east-1",
"profile": "my-aws-profile",
"endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
}
}
}
}
```
- `region` - Bedrock 的 AWS 區域(預設為 `AWS_REGION` env var 或 `us-east-1`)
- `profile` - 來自 `~/.aws/credentials` 的 AWS 命名設定檔(預設為 `AWS_PROFILE` env var)
- `endpoint` - VPC 終端節點的自定義終端節點 URL。這是使用 AWS 特定術語的通用 `baseURL` 選項的別名。如果兩者都指定,`endpoint` 優先。
:::note
Bearer Token (`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`) 優先於基於設定檔的身分驗證。詳情請參閱 [認證優先級](/docs/providers#authentication-precedence)。
:::
[了解有關 Amazon Bedrock 設定的更多資訊](/docs/providers#amazon-bedrock)。
---
### 主題
您可以透過 `theme` 選項在 opencode 設定中設定要使用的主題。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"theme": ""
}
```
[在這裡了解更多](/docs/themes)。
---
### 代理
您可以透過 `agent` 選項為特定任務設定專用代理。
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"model": "anthropic/claude-sonnet-4-5",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
// Disable file modification tools for review-only agent
"write": false,
"edit": false,
},
},
},
}
```
您也可以使用 `~/.config/opencode/agents/` 或 `.opencode/agents/` 中的 markdown 檔案定義代理。 [在這裡了解更多](/docs/agents)。
---
### 預設代理
您可以使用 `default_agent` 選項設定預設代理。當沒有明確指定時,這將決定使用哪個代理。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"default_agent": "plan"
}
```
預設代理必須是主代理(而不是子代理)。這可以是內建代理,例如 `"build"` 或 `"plan"`,或者您定義的 [自定義代理](/docs/agents)。如果指定的代理不存在或者是子代理,opencode 將退回到 `"build"` 並發出警告。
此設定適用於所有介面:TUI、CLI (`opencode run`)、桌面應用程式和 GitHub Action。
---
### 分享
您可以透過 `share` 選項設定 [分享](/docs/share) 功能。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "manual"
}
```
這需要:
- `"manual"` - 允許透過指令手動分享(預設)
- `"auto"` - 自動分享新對話
- `"disabled"` - 完全禁用分享
預設情況下,分享設定為手動模式,您需要使用 `/share` 指令明確分享對話。
---
### 指令
您可以透過 `command` 選項為重複任務設定自定義指令。
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-haiku-4-5",
},
"component": {
"template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
"description": "Create a new component",
},
},
}
```
您也可以使用 `~/.config/opencode/commands/` 或 `.opencode/commands/` 中的 Markdown 檔案定義指令。 [在這裡了解更多](/docs/commands)。
---
### 按鍵綁定
您可以透過 `keybinds` 選項自定義您的按鍵綁定。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {}
}
```
[在這裡了解更多](/docs/keybinds)。
---
### 自動更新
opencode 將在啟動時自動下載任何新的更新。您可以使用 `autoupdate` 選項禁用此功能。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"autoupdate": false
}
```
如果您不想更新但希望在新版本可用時收到通知,請將 `autoupdate` 設定為 `"notify"`。
請注意,這僅在未使用 Homebrew 等套件管理器安裝時才有效。
---
### 格式化程式
您可以透過 `formatter` 選項設定程式碼格式化程式。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
},
"custom-prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
}
}
}
```
[在此處了解有關格式化程式的更多資訊](/docs/formatters)。
---
### 權限
預設情況下,opencode **允許所有操作**,無需明確批准。您可以使用 `permission` 選項更改此設定。
例如,要確保 `edit` 和 `bash` 工具需要使用者批准:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
```
[在此處了解有關權限的更多資訊](/docs/permissions)。
---
### 壓縮
您可以透過 `compaction` 選項控制上下文壓縮行為。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"compaction": {
"auto": true,
"prune": true
}
}
```
- `auto` - 當上下文已滿時自動壓縮工作階段(預設值:`true`)。
- `prune` - 刪除舊工具輸出以節省 tokens(預設值:`true`)。
---
### 觀察者 (Watcher)
您可以透過 `watcher` 選項設定檔案觀察器忽略模式。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
```
模式遵循 glob 語法。使用它可以從檔案監視中排除嘈雜的目錄。
---
### MCP 伺服器
您可以透過 `mcp` 選項設定要使用的 MCP 伺服器。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {}
}
```
[在這裡了解更多](/docs/mcp-servers)。
---
### 外掛
[外掛](/docs/plugins) 使用自定義工具、掛鉤和整合擴展 opencode。
將外掛檔案放置在 `.opencode/plugins/` 或 `~/.config/opencode/plugins/` 中。您也可以透過 `plugin` 選項從 npm 載入外掛。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
}
```
[在這裡了解更多](/docs/plugins)。
---
### 指示 (Instructions)
您可以透過 `instructions` 選項設定您正在使用的模型的指示。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
這需要指示檔案的路徑和全域模式陣列。 [了解更多關於規則在這裡](/docs/rules)。
---
### 禁用供應商
您可以透過 `disabled_providers` 選項禁用自動載入的供應商。當您想要阻止載入某些供應商(即使其憑證可用)時,這非常有用。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"disabled_providers": ["openai", "gemini"]
}
```
:::note
`disabled_providers` 優先於 `enabled_providers`。
:::
`disabled_providers` 選項接受供應商 ID 陣列。當供應商被禁用時:
- 即使設定了環境變數也不會載入。
- 即使透過 `/connect` 指令設定 API 金鑰,也不會載入它。
- 供應商的模型不會出現在模型選擇列表中。
---
### 啟用的供應商
您可以透過 `enabled_providers` 選項指定供應商的允許清單。設定後,僅啟用指定的供應商,所有其他供應商將被忽略。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"enabled_providers": ["anthropic", "openai"]
}
```
當您想要限制 opencode 僅使用特定的供應商而不是一一禁用它們時,這非常有用。
:::note
`disabled_providers` 優先於 `enabled_providers`。
:::
如果某個供應商同時出現在 `enabled_providers` 和 `disabled_providers` 中,則 `disabled_providers` 優先考慮向後相容性。
---
### 實驗性的
`experimental` 鍵包含正在積極開發的選項。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"experimental": {}
}
```
:::caution
實驗選項不穩定。它們可能會更改或被刪除,恕不另行通知。
:::
---
## 變數
您可以在設定檔中使用變數替換來引用環境變數和檔案內容。
---
### 環境變數
使用 `{env:VARIABLE_NAME}` 替換環境變數:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "{env:OPENCODE_MODEL}",
"provider": {
"anthropic": {
"models": {},
"options": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
}
}
}
```
如果未設定環境變數,它將被替換為空字串。
---
### 檔案
使用 `{file:path/to/file}` 替換檔案的內容:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["./custom-instructions.md"],
"provider": {
"openai": {
"options": {
"apiKey": "{file:~/.secrets/openai-key}"
}
}
}
}
```
檔案路徑可以是:
- 相對於設定檔目錄
- 或者以 `/` 或 `~` 開頭的絕對路徑
這些對於:
- 將 API 金鑰等敏感數據保存在單獨的檔案中。
- 包含大型指示檔案,而不會弄亂您的設定。
- 跨多個設定檔共享通用設定片段。
|