wip(docs): i18n (#12681)

This commit is contained in:
Adam
2026-02-09 11:34:35 -06:00
committed by GitHub
parent f74c0339cc
commit dc53086c1e
642 changed files with 192745 additions and 509 deletions

View File

@@ -0,0 +1,67 @@
---
title: Migrating to 1.0
description: What's new in OpenCode 1.0.
---
OpenCode 1.0은 TUI의 완전한 재쓰기입니다.
우리는 zig+solidjs에서 작성된 사내 프레임 워크 (OpenTUI)에 성능과 기능 문제가있는 go+bubbletea 기반 TUI에서 이동했습니다.
새로운 TUI는 같은 오픈 코드 서버에 연결하기 때문에 오래된 것 같이 작동합니다.
---
## 업그레이드
현재 이전을 사용하는 경우 현재 1.0로 autoupgraded 할 수 없습니다.
버전. 그러나 OpenCode의 이전 버전은 항상 최신을 잡아.
수동으로 업그레이드하려면 실행
```bash
$ opencode upgrade 1.0.0
```
0.x로 다운 그레이드, 실행
```bash
$ opencode upgrade 0.15.31
```
---
## UX 변경
세션 역사는 더 많은 압축, 편집 및 bash 도구의 전체 세부 사항을 보여주는.
우리는 거의 모든 것을 통해 흐르는 명령 줄을 추가했습니다. ctrl+p를 눌러 모든 컨텍스트에서 가져 와서 할 수있는 모든 것을 볼 수 있습니다.
유용한 정보로 세션 사이드바(Toggled)를 추가했습니다.
우리는 우리가 실제로 사용되었던 어떤 기능을 제거했습니다. 뭔가 중요하지 않은 경우 문제가 열리고 신속하게 추가됩니다.
---
## 파손 변화
## Keybinds 이름 변경
- message revert -> 메시지 undo
- switch agent -> 에이전트 사이클
- switch agent reverse -> 에이전트 cycle reverse
- switch mode -> 에이전트 cycle
- switch mode reverse -> 에이전트 cycle reverse
## Keybinds 제거
- 메시지 layout toggle
- 메시지
- 메시지
- 파일 diff toggle
- 파일 search
- 파일 닫기
- 파일 list
- 앱 help
- 프로젝트 init
- 툴 details
- 사고 blocks

View File

@@ -0,0 +1,156 @@
---
title: ACP Support
description: Use OpenCode in any ACP-compatible editor.
---
OpenCode는 [Agent Client Protocol](https://agentclientprotocol.com) 또는 (ACP)을 지원하며, 호환 편집기 및 IDE에서 직접 사용할 수 있습니다.
:::tip
ACP를 지원하는 편집기 및 도구 목록의 경우 [ACP 진행 보고서](https://zed.dev/blog/acp-progress-report#available-now)를 확인하십시오.
:::
ACP는 코드 편집기와 AI 코딩 에이전트 간의 통신을 표준화하는 개방형 프로토콜입니다.
---
## 구성
ACP를 통해 OpenCode를 사용하려면 `opencode acp` 명령을 실행하려면 편집기를 구성하십시오.
명령은 OpenCode를 실행하여 JSON-RPC를 통해 편집기와 통신하는 ACP 호환 하위 프로세스로 시작합니다.
아래는 ACP를 지원하는 인기있는 편집기의 예입니다.
---
# # # # # Zed를
[Zed] (https://zed.dev) 구성 (`~/.config/zed/settings.json`)에 추가 :
```json title="~/.config/zed/settings.json"
{
"agent_servers": {
"OpenCode": {
"command": "opencode",
"args": ["acp"]
}
}
}
```
그것을 열려면 **Command Palette **에서 `agent: new thread` 동작을 사용하십시오.
`keymap.json`를 편집하여 키보드 단축키도 결합할 수 있습니다.
```json title="keymap.json"
[
{
"bindings": {
"cmd-alt-o": [
"agent::NewExternalAgentThread",
{
"agent": {
"custom": {
"name": "OpenCode",
"command": {
"command": "opencode",
"args": ["acp"]
}
}
}
}
]
}
}
]
```
---
# # # # JetBrains IDEs의 특징
[JetBrains IDE]에 추가하십시오 (https://www.jetbrains.com/) [documentation]에 따라 acp.json (https://www.jetbrains.com/help/ai-assistant/acp.html):
```json title="acp.json"
{
"agent_servers": {
"OpenCode": {
"command": "/absolute/path/bin/opencode",
"args": ["acp"]
}
}
}
```
그것을 열려면 AI Chat Agent selector의 새로운 'OpenCode' 에이전트를 사용하십시오.
---
# # # # Avante.nvim의
[Avante.nvim] (https://github.com/yetone/avante.nvim) 구성에 추가하십시오:
```lua
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" }
}
}
}
```
환경 변수를 전달해야 하는 경우:
```lua {6-8}
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" },
env = {
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
}
}
}
}
```
---
# # # # CodeCompanion.nvim의
OpenCode를 [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim)에서 ACP 에이전트로 사용하려면 Neovim config에 다음을 추가하십시오.
```lua
require("codecompanion").setup({
interactions = {
chat = {
adapter = {
name = "opencode",
model = "claude-sonnet-4",
},
},
},
})
```
이 구성은 CodeCompanion을 설정하여 채팅을 위한 ACP 에이전트로 OpenCode를 사용합니다.
환경 변수 (`OPENCODE_API_KEY`와 같은)를 전달해야하는 경우, CodeCompanion.nvim 문서에서 [Configuring Adapters: Environment variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key)를 참조하십시오.
## 지원
OpenCode는 터미널에서 같은 ACP를 통해 작동합니다. 모든 기능은 지원됩니다:
:::note
`/undo` 및 `/redo`와 같은 일부 내장 슬래시 명령은 현재 지원되지 않습니다.
:::
- 내장 도구 (파일 작업, 터미널 명령 등)
- 사용자 정의 도구 및 슬래시 명령
- OpenCode config에서 설정된 MCP 서버
- `AGENTS.md`의 프로젝트 별 규칙
- 사용자 정의 포맷 및 라이터
- 에이전트 및 권한 시스템

View File

@@ -0,0 +1,747 @@
---
title: Agents
description: Configure and use specialized agents.
---
에이전트는 특정 작업과 워크플로우를 구성할 수 있는 AI 보조를 전문으로 합니다. 사용자 정의 프롬프트, 모델 및 도구 액세스와 초점을 맞춘 도구를 만들 수 있습니다.
:::tip
코드를 분석하고 코드 변경없이 제안을 검토 할 계획 에이전트를 사용합니다.
:::
세션 중에 에이전트를 전환하거나 `@` 언급으로 호출 할 수 있습니다.
---
## 유형
OpenCode의 두 가지 유형이 있습니다; 기본 에이전트와 시약.
---
### 1 차적인 대리인
1 차적인 대리인은 당신이 직접 상호 작용하는 주요 조수입니다. **Tab** 키 또는 설정된 `switch_agent` keybind를 사용하여 주기 할 수 있습니다. 이 대리인은 당신의 주요 대화를 취급합니다. 도구 액세스는 권한을 통해 구성된다 — 예를 들어, 빌드는 계획이 제한되는 동안 모든 도구를 사용할 수 있습니다.
:::tip
세션 중에 기본 에이전트를 전환하는 **Tab** 키를 사용할 수 있습니다.
:::
OpenCode는 두 개의 내장 기본 에이전트, **Build** 및 **Plan**와 함께 제공됩니다. 우리는
아래에서 보기.
---
## # 시약
Subagents는 기본 에이전트가 특정 작업을 위해 호출 할 수있는 전문 보조입니다. 또한 수동으로 그들을 호출 할 수 있습니다 ** @ 언급 ** 메시지에서 그들.
OpenCode는 두 개의 내장 하위 시약, ** 일반 ** 및 ** 익스플로러 **. 아래에서 볼 수 있습니다.
---
## 내장
OpenCode는 기본 에이전트와 두 개의 내장 하위 시약으로 제공됩니다.
---
### 사용 빌드
모드 : `primary`
Build는 **default** 모든 도구가 활성화된 기본 에이전트입니다. 이것은 당신이 파일 가동 및 체계 명령에 가득 차있는 접근을 필요로 하는 발달 일을 위한 표준 대리인입니다.
---
### 사용 계획
모드 : `primary`
계획 및 분석을 위해 설계된 제한된 대리인. 우리는 더 많은 통제를 주고 무인화한 변화를 방지하기 위하여 허가 체계를 이용합니다.
기본적으로, 뒤에 오는 전부는 `ask`로 놓입니다:
- `file edits`: 모든 쓰기, 패치 및 편집
- `bash`: 모든 bash 명령
이 에이전트는 코드를 분석 할 LLM을 원할 때 유용합니다, 변경을 제안하거나 코드베이스에 실제 수정없이 계획을 만들 수 있습니다.
---
### 사용 일반
모드 : `subagent`
복잡한 질문을 연구하고 다중 단계 작업을 실행하기위한 범용 에이전트. 전체 도구 액세스 (todo 제외), 그래서 필요할 때 파일 변경을 만들 수 있습니다. 평행한에 있는 일의 다수 단위를 달리기 위하여 이것을 사용하십시오.
---
### 사용 탐구
모드 : `subagent`
Codebases를 탐구하는 빠르고, 읽기 전용 에이전트. 파일을 수정할 수 없습니다. 이 작업을 사용하면 패턴, 키워드 검색 코드, 또는 codebase에 대한 질문에 신속하게 파일을 찾을 수 있습니다.
---
### 사용 컴팩트
모드 : `primary`
더 작은 요약으로 긴 맥락을 압축하는 숨겨진 시스템 에이전트. 필요한 경우 자동으로 실행되며 UI에서 선택할 수 없습니다.
---
### 사용 제목
모드 : `primary`
짧은 세션 타이틀을 생성하는 숨겨진 시스템 에이전트. 그것은 자동으로 실행하고 UI에서 선택할 수 없습니다.
---
### 사용 요약
모드 : `primary`
세션 summaries를 만드는 숨겨진 시스템 에이전트. 그것은 자동으로 실행하고 UI에서 선택할 수 없습니다.
---
## 사용법
1. 1 차적인 대리인을 위해, **Tab ** 열쇠를 사용하여 세션 도중 주기. 구성 된 `switch_agent` keybind도 사용할 수 있습니다.
2. 시약은 invoked 일 수 있습니다:
-**Automatically** 그들의 설명에 근거를 둔 특화된 업무를 위한 1 차적인 대리인에 의하여.
- 메시지에 대한 하위 시약**. 예를 들어.
```txt frame="none"
@general help me search for this function
```
3. ** 세션 간의 편차 **: 하위 시약은 자신의 자녀 세션을 만들 때, 부모 세션과 모든 어린이 세션을 사용하여 탐색 할 수 있습니다.
- **\<Leader>+Right** (또는 부모 → Child1 → Child2 →를 통해 전달하기 위해 설정된 `session_child_cycle` keybind)
- **\<Leader>+Left** (또는 `session_child_cycle_reverse` keybind) 부모를 통해 돌아 가기 위해 ← child1 ← child2 ← ... ← 부모
이로 인해 주요 대화와 특이한 시약 작업을 원활하게 전환할 수 있습니다.
---
## 구성
내장 에이전트를 사용자 정의하거나 구성을 통해 자신의 만들 수 있습니다. 에이전트는 두 가지 방법으로 구성 될 수 있습니다:
---
### JSON 태그
`opencode.json` config 파일에 에이전트 구성:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"mode": "primary",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "{file:./prompts/build.txt}",
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"mode": "primary",
"model": "anthropic/claude-haiku-4-20250514",
"tools": {
"write": false,
"edit": false,
"bash": false
}
},
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"mode": "subagent",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
"write": false,
"edit": false
}
}
}
}
```
---
### 마크다운
Markdown 파일을 사용하여 에이전트를 정의 할 수 있습니다. 그들에 게:
- 글로벌: `~/.config/opencode/agents/`
- 프로젝트: `.opencode/agents/`
```markdown title="~/.config/opencode/agents/review.md"
---
description: Reviews code for quality and best practices
mode: subagent
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
write: false
edit: false
bash: false
---
You are in code review mode. Focus on:
- Code quality and best practices
- Potential bugs and edge cases
- Performance implications
- Security considerations
Provide constructive feedback without making direct changes.
```
markdown 파일 이름은 대리인 이름입니다. 예를 들어, `review.md`는 `review` 대리인을 만듭니다.
---
## 옵션
이 구성 옵션을 자세히 살펴봅시다.
---
### 묘사
`description` 옵션을 사용하여 에이전트가 작동하고 사용할 때의 간단한 설명을 제공합니다.
```json title="opencode.json"
{
"agent": {
"review": {
"description": "Reviews code for best practices and potential issues"
}
}
}
```
** config 옵션이 필요합니다.
---
### 온도
`temperature` config와 LLM의 응답의 임의성과 창의성을 제어합니다.
더 낮은 값은 더 집중하고 세심한 응답을 만듭니다. 더 높은 값은 창의력과 가변성을 증가하면서.
```json title="opencode.json"
{
"agent": {
"plan": {
"temperature": 0.1
},
"creative": {
"temperature": 0.8
}
}
}
```
온도 값은 일반적으로 0.0에서 1.0에 배열합니다:
- **0.0-0.2**: 매우 집중하고 신중한 응답, 코드 분석 및 계획에 이상
-**0.3-0.5**: 일부 창의력과 균형 잡힌 응답, 일반 개발 작업에 좋은
- **0.6-1.0**: 더 창조적이고 다양한 응답, 뇌하수 및 탐험에 유용한
```json title="opencode.json"
{
"agent": {
"analyze": {
"temperature": 0.1,
"prompt": "{file:./prompts/analysis.txt}"
},
"build": {
"temperature": 0.3
},
"brainstorm": {
"temperature": 0.7,
"prompt": "{file:./prompts/creative.txt}"
}
}
}
```
온도가 지정되지 않은 경우, OpenCode는 모델 별 기본을 사용합니다. 일반적으로 대부분의 모델의 경우 0, Qwen 모델의 경우 0.55.
---
## 최대 단계
대리인의 최대 수를 통제하는 대리인은 원본과 반응하기 전에 실행할 수 있습니다. 이 사용자는 에이전트 행동에 제한을 설정하는 비용을 제어 할 수 있습니다.
이 설정되지 않은 경우, 에이전트는 모델이 중지하거나 사용자가 세션을 중단하도록 선택할 때까지 계속됩니다.
```json title="opencode.json"
{
"agent": {
"quick-thinker": {
"description": "Fast reasoning with limited iterations",
"prompt": "You are a quick thinker. Solve problems with minimal steps.",
"steps": 5
}
}
}
```
제한이 도달되면, 에이전트는 특별한 시스템을 신속하게 작업의 요약과 권장되는 나머지 작업에 응답하도록 지시합니다.
:::caution
레거시 `maxSteps` 필드는 deprecated. 대신 `steps`를 사용하십시오.
:::
---
# # # # 비활성화
`true`로 에이전트를 비활성화합니다.
```json title="opencode.json"
{
"agent": {
"review": {
"disable": true
}
}
}
```
---
# # # # 프롬프트
`prompt` config를 가진 이 대리인을 위한 주문 체계 신속한 파일을 지정하십시오. 신속한 파일은 에이전트의 목적에 따라 지시를 포함해야합니다.
```json title="opencode.json"
{
"agent": {
"review": {
"prompt": "{file:./prompts/code-review.txt}"
}
}
}
```
이 경로는 config 파일이 있는 곳에 관계됩니다. 그래서 이것은 글로벌 OpenCode 구성과 프로젝트 특정 구성 모두를 위해 작동합니다.
---
### 모형
`model` config를 사용하여이 에이전트에 대한 모델을 삭제합니다. 다른 작업에 최적화 된 다른 모델을 사용하는 데 유용합니다. 예를 들어, 계획을위한 빠른 모델, 구현을위한 더 많은 모델.
:::tip
모델을 지정하지 않는 경우, 기본 에이전트는 [model globallyconfig](/docs/config#models)를 사용하며, subagents는 subagent를 호출하는 1차 에이전트의 모델을 사용합니다.
:::
```json title="opencode.json"
{
"agent": {
"plan": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
```
OpenCode config의 모델 ID는 `provider/model-id` 형식을 사용합니다. 예를 들어, [OpenCode Zen](/docs/zen)을 사용한다면, GPT 5.1 Codex에 `opencode/gpt-5.1-codex`를 사용할 수 있습니다.
---
## 도구
`tools` config로 이 에이전트에서 사용할 수있는 제어. `true` 또는 `false`로 설정하여 특정 도구를 활성화하거나 비활성화 할 수 있습니다.
```json title="opencode.json" {3-6,9-12}
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": true,
"bash": true
},
"agent": {
"plan": {
"tools": {
"write": false,
"bash": false
}
}
}
}
```
:::note
에이전트 별 구성 overrides 글로벌 구성.
:::
한 번에 여러 도구를 제어 할 와일드 카드를 사용할 수 있습니다. 예를 들어, MCP 서버에서 모든 도구를 비활성화하려면:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"readonly": {
"tools": {
"mymcp_*": false,
"write": false,
"edit": false
}
}
}
}
```
[공구에 대해 더 알아보기](/docs/tools).
---
## # 권한
에이전트가 수행 할 수있는 작업을 관리 할 수있는 권한을 구성 할 수 있습니다. 현재 `edit`, `bash` 및 `webfetch` 도구에 대한 권한은 다음과 같습니다.
- `"ask"` - 도구 실행하기 전에 승인을위한 Prompt
- `"allow"` - 승인없이 모든 작업을 허용
- `"deny"` - 도구 비활성화
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
}
}
```
당신은 에이전트 당이 허가를 override 할 수 있습니다.
```json title="opencode.json" {3-5,8-10}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
},
"agent": {
"build": {
"permission": {
"edit": "ask"
}
}
}
}
```
Markdown 에이전트에서 권한을 설정할 수 있습니다.
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash:
"*": ask
"git diff": allow
"git log*": allow
"grep *": allow
webfetch: deny
---
Only analyze code and suggest changes.
```
특정 bash 명령에 대한 권한을 설정할 수 있습니다.
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git push": "ask",
"grep *": "allow"
}
}
}
}
}
```
이것은 glob 본을 가지고 갈 수 있습니다.
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git *": "ask"
}
}
}
}
}
```
또한 `*` 와일드 카드를 사용하여 모든 명령에 대한 권한을 관리 할 수 있습니다.
마지막 일치 규칙이 우선적으로 걸리기 때문에, `*` 와일드카드를 첫번째로 두고 특정 규칙을 후에 두십시오.
```json title="opencode.json" {8}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git status *": "allow"
}
}
}
}
}
```
[허가에 대해 더 알아보기](/docs/permissions).
---
### 형태
`mode` config로 에이전트 모드를 제어합니다. `mode` 선택권은 대리인이 사용될 수 있는 방법을 결정하기 위하여 이용됩니다.
```json title="opencode.json"
{
"agent": {
"review": {
"mode": "subagent"
}
}
}
```
`mode` 선택권은 `primary`, `subagent`, 또는 `all`에 놓일 수 있습니다. `mode`가 지정되지 않은 경우 `all`로 기본값입니다.
---
## #숨겨진
`@` 자동 완성 메뉴에서 시약을 숨깁니다. 작업 도구를 통해 다른 에이전트에 의해 invoked programmatically 있어야하는 내부 시약에 유용합니다.
```json title="opencode.json"
{
"agent": {
"internal-helper": {
"mode": "subagent",
"hidden": true
}
}
}
```
자동 완성 메뉴의 사용자 가시에만 영향을 미칩니다. 숨겨진 에이전트는 여전히 작업 도구를 통해 모델에 의해 호출 될 수 있습니다 권한 허용.
:::note
`mode: subagent` 대리인에서만 적용합니다.
:::
---
## 작업 권한
에이전트가 `permission.task`와 작업 도구를 통해 호출 할 수있는 제어. 유연한 일치를 위한 glob 본을 사용합니다.
```json title="opencode.json"
{
"agent": {
"orchestrator": {
"mode": "primary",
"permission": {
"task": {
"*": "deny",
"orchestrator-*": "allow",
"code-reviewer": "ask"
}
}
}
}
}
```
`deny`로 설정할 때, Subagent는 작업 도구 설명에서 완전히 제거됩니다. 그래서 모델은 그것을 호출하려고하지 않습니다.
:::tip
규칙은 순서로 평가되고, **마지막 일치 규칙은**를 이깁니다. 위의 예에서 `orchestrator-planner`는 `*` (deny)와 `orchestrator-*` (allow) 모두 일치하지만 `orchestrator-*`가 `*` 후 제공되므로 결과는 `allow`입니다.
:::
:::tip
사용자는 `@` 자동 완성 메뉴를 통해 직접 어떤 subagent를 호출 할 수 있습니다. 에이전트의 작업 허가가 거부 할 경우에도.
:::
---
### 색깔
`color` 옵션과 UI에서 에이전트의 시각적 외관을 사용자 정의합니다. 이것은 어떻게 에이전트가 인터페이스에 나타납니다.
유효한 hex 색깔을 사용하십시오 (예를들면, `#FF5733`) 또는 주제 색깔: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
```json title="opencode.json"
{
"agent": {
"creative": {
"color": "#ff6b6b"
},
"code-reviewer": {
"color": "accent"
}
}
}
```
---
### 정상 P
`top_p` 선택권을 가진 응답 다양성을 통제하십시오. 무작위 통제를 위한 온도에 대안.
```json title="opencode.json"
{
"agent": {
"brainstorm": {
"top_p": 0.9
}
}
}
```
가치는 0.0에서 1.0에 배열합니다. 더 낮은 가치는 더 집중되고, 더 높은 가치는 더 다양합니다.
---
### 추가
에이전트 구성에 지정하는 다른 옵션은 ** 직접 통과 ** 모델 옵션으로 공급자. 이 공급자 별 기능 및 매개 변수를 사용할 수 있습니다.
예를 들어, OpenAI의 이유 모델과 함께, 당신은 이유를 제어 할 수 있습니다 노력:
```json title="opencode.json" {6,7}
{
"agent": {
"deep-thinker": {
"description": "Agent that uses high reasoning effort for complex problems",
"model": "openai/gpt-5",
"reasoningEffort": "high",
"textVerbosity": "low"
}
}
}
```
이 추가 옵션은 모델과 공급자 별입니다. 공급자의 문서 확인 가능 매개 변수.
:::tip
`opencode models`를 실행하여 사용 가능한 모델 목록을 볼 수 있습니다.
:::
---
## 에이전트 만들기
다음 명령을 사용하여 새로운 에이전트를 만들 수 있습니다:
```bash
opencode agent create
```
이 대화 형 명령은:
1. 대리인을 저장하는 곳에게; 세계적인 프로젝트 별.
2. 대리인이 해야 하는 무슨의 묘사.
3. 적절한 시스템 프롬프트 및 식별자를 생성한다.
4. 당신은 대리인이 접근할 수 있는 어떤 공구를 선정하자.
5. 마지막으로, 대리인 윤곽을 가진 markdown 파일을 창조하십시오.
---
## 사용 사례
다른 대리인을 위한 몇몇 일반적인 사용 사례는 여기 있습니다.
- **빌딩 에이전트**: 모든 도구와 함께 전체 개발 작업
- ** 플랜 에이전트**: 변화없이 분석 및 계획
- **리뷰 에이전트**: Code review with read-only access plus 문서 도구
- ** 디버그 에이전트**: bash 및 읽기 도구와 함께 조사에 집중
- **Docs 대리인 **: 파일 작업과 문서 작성하지만 시스템 명령 없음
---
## 예제
여기에 유용 할 수있는 몇 가지 예 에이전트가 있습니다.
:::tip
당신은 공유하고 싶은 대리인이 있습니까? [PR](https://github.com/anomalyco/opencode).
:::
---
### 문서 에이전트
```markdown title="~/.config/opencode/agents/docs-writer.md"
---
description: Writes and maintains project documentation
mode: subagent
tools:
bash: false
---
You are a technical writer. Create clear, comprehensive documentation.
Focus on:
- Clear explanations
- Proper structure
- Code examples
- User-friendly language
```
---
## 보안 감사
```markdown title="~/.config/opencode/agents/security-auditor.md"
---
description: Performs security audits and identifies vulnerabilities
mode: subagent
tools:
write: false
edit: false
---
You are a security expert. Focus on identifying potential security issues.
Look for:
- Input validation vulnerabilities
- Authentication and authorization flaws
- Data exposure risks
- Dependency vulnerabilities
- Configuration security issues
```

View File

@@ -0,0 +1,601 @@
---
title: CLI
description: OpenCode CLI options and commands.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
기본적으로 OpenCode CLI는 어떤 인수 없이 실행할 때 [TUI](/docs/tui)를 시작합니다.
```bash
opencode
```
그러나이 페이지에서 문서로 명령을받습니다. OpenCode programmatically와 상호 작용할 수 있습니다.
```bash
opencode run "Explain how closures work in JavaScript"
```
---
### 튜이
OpenCode 터미널 사용자 인터페이스를 시작합니다.
```bash
opencode [project]
```
#### 플래그
| 간선 | 간선 | Description |
| ------------ | ----- | ------------------------------------------ |
| `--continue` | `-c` | 마지막 세션 |
| `--session` | `-s` | 세션 ID|
| `--prompt` | | | 사용 허가 |
| `--model` | `-m` | `-m`의 형태로 사용 가능 |
| `--agent` | | 에이전트 |
| `--port` |||꾸라 안내|
| `--hostname` | | 들러 주세요 |
---
## 명령
OpenCode CLI에는 다음과 같은 명령이 있습니다.
---
## 대리인
OpenCode에 대한 에이전트 관리.
```bash
opencode agent [command]
```
---
### 첨부
`serve` 또는 `web` 명령을 통해 이미 실행되는 OpenCode 백엔드 서버에 터미널을 첨부합니다.
```bash
opencode attach [url]
```
리모트 OpenCode 백엔드를 사용하여 TUI를 사용할 수 있습니다. 예를 들면:
```bash
# Start the backend server for web/mobile access
opencode web --port 4096 --hostname 0.0.0.0
# In another terminal, attach the TUI to the running backend
opencode attach http://10.20.30.40:4096
```
#### 플래그
| 간선 | 간선 | Description |
| ----------- | ----- | --------------------------------- |
| `--dir` | | TUI를 시작하는 작업 디렉토리 |
| `--session` | `-s` | 세션 ID|
---
#### 생성
사용자 정의 구성으로 새로운 에이전트를 만듭니다.
```bash
opencode agent create
```
이 명령은 사용자 정의 시스템 프롬프트 및 도구 구성으로 새로운 에이전트를 만들기 위해 안내합니다.
---
#### 리스트
모든 사용 가능한 에이전트 목록.
```bash
opencode agent list
```
---
## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
credentials 및 로그인을 관리하는 명령.
```bash
opencode auth [command]
```
---
#### 로그인
OpenCode는 [Models.dev](https://models.dev)의 공급자 목록에 의해 구동되므로 `opencode auth login`를 사용하여 사용하려는 모든 공급자의 API 키를 구성할 수 있습니다. 이것은 `~/.local/share/opencode/auth.json`에서 저장됩니다.
```bash
opencode auth login
```
OpenCode가 시작하면 credentials 파일에서 공급자를로드합니다. 그리고 프로젝트에 있는 환경 또는 `.env` 파일에서 정의된 키가 있다면.
---
#### 리스트
credentials 파일에 저장 한 모든 인증 된 제공 업체를 나열합니다.
```bash
opencode auth list
```
또는 짧은 버전.
```bash
opencode auth ls
```
---
### 로그아웃
credentials 파일에서 삭제하여 공급자에서 로그.
```bash
opencode auth logout
```
---
# # # # github에
저장소 자동화를 위한 GitHub 에이전트 관리.
```bash
opencode github [command]
```
---
### 설치
저장소에 GitHub 에이전트를 설치합니다.
```bash
opencode github install
```
필요한 GitHub Actions 워크플로우를 설정하고 구성 프로세스를 통해 안내합니다. [더 알아보기](/docs/github).
---
#### 실행
GitHub 에이전트를 실행합니다. 이것은 일반적으로 GitHub Actions에서 사용됩니다.
```bash
opencode github run
```
##### 플래그
| 플래그 | 설명 |
| --------- | -------------------------------------- |
| `--event` | GitHub 모의 이벤트 |
| `--token` | GitHub 개인 액세스 토큰 |
---
# # # # mcp를
Model Context Protocol 서버 관리
```bash
opencode mcp [command]
```
---
#### 추가
MCP 서버를 구성에 추가합니다.
```bash
opencode mcp add
```
이 명령은 로컬 또는 원격 MCP 서버를 추가하여 안내합니다.
---
#### 리스트
모든 구성 MCP 서버와 연결 상태를 나열합니다.
```bash
opencode mcp list
```
또는 짧은 버전을 사용합니다.
```bash
opencode mcp ls
```
---
# # # # # # # 오
OAuth-enabled MCP 서버 인증
```bash
opencode mcp auth [name]
```
서버 이름을 제공하지 않으면 OAuth-capable 서버에서 선택할 수 있습니다.
OAuth-capable 서버와 인증 상태를 나열할 수 있습니다.
```bash
opencode mcp auth list
```
또는 짧은 버전을 사용합니다.
```bash
opencode mcp auth ls
```
---
### 로그아웃
MCP 서버의 OAuth 자격 제거.
```bash
opencode mcp logout [name]
```
---
### 디버그
MCP 서버의 OAuth 연결 문제.
```bash
opencode mcp debug <name>
```
---
## 모델
구성 공급자에서 모든 가능한 모델을 나열합니다.
```bash
opencode models [provider]
```
이 명령은 `provider/model` 형식으로 구성된 제공 업체에서 사용할 수있는 모든 모델을 표시합니다.
이것은 [your config](/docs/config/)에서 사용하는 정확한 모델 이름을 파악하는 데 유용합니다.
선택적으로 공급자 ID를 필터 모델로 전달할 수 있습니다.
```bash
opencode models anthropic
```
#### 플래그
| 플래그 | 설명 |
| ----------- | ------------------------------------------------------------ |
| `--refresh` | 모델 캐시를 모델에서 새로 고침 |
| `--verbose` | 더 많은 verbose 모델 출력 사용(비용과 같은 메타데이터 포함) |
`--refresh` 플래그를 사용하여 캐시 모델 목록을 업데이트합니다. 이것은 새로운 모델이 공급자에 추가되었을 때 유용합니다. OpenCode에서 그들을보고 싶습니다.
```bash
opencode models --refresh
```
---
### 실행
직접 프롬프트를 통과하여 비동기 모드에서 opencode를 실행합니다.
```bash
opencode run [message..]
```
이것은 스크립트, 자동화 또는 전체 TUI를 실행하지 않고 빠른 응답을 원할 때 유용합니다. 예를 들어.
```bash "opencode run"
opencode run Explain the use of context in Go
```
`opencode serve` 인스턴스를 실행하여 MCP 서버 콜드 부팅 시간을 각 실행할 수 있습니다.
```bash
# Start a headless server in one terminal
opencode serve
# In another terminal, run commands that attach to it
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
```
#### 플래그
| 간선 | 간선 | Description |
| ------------ | ----- | ------------------------------------------------------------------ |
| `--command` | 실행중인 명령, args의 메시지 사용 |
| `--continue` | `-c` | 마지막 세션 |
| `--session` | `-s` | 세션 ID|
| `--share` | 세션 공유 |
| `--model` | `-m` | `-m`의 형태로 사용 가능 |
| `--agent` | | 에이전트 |
| `--file` | `-f` | 메시지 첨부 파일|
| `--format` | 체재: 기본(formatted) 또는 json(raw JSON 이벤트) |
| `--title` | | 세션의 제목(제공되지 않은 경우 truncated prompt 사용) |
| `--attach` | | 운영 개시 서버(예: http://localhost:4096) |
| `--port` | | 현지 서버 포트|
---
## 서비스
API 액세스를 위한 headless OpenCode 서버를 시작합니다. 완전한 HTTP 인터페이스를 위해 [server docs](/docs/server)를 체크하십시오.
```bash
opencode serve
```
TUI 인터페이스없이 API 액세스를 제공하는 HTTP 서버를 시작합니다. `OPENCODE_SERVER_PASSWORD`를 설정하여 HTTP 기본 auth (`opencode`에 기본적으로 이름을 지정합니다).
#### 플래그
| 플래그 | 설명 |
| ------------ | ------------------------------------------ |
| `--port` | 즐거운 항구 |
| `--hostname` | 듣고 싶은 이름 |
| `--mdns` | 엔터블 mDNS 검색 |
| `--cors` | CORS를 허용하는 추가 브라우저 기원 |
---
### 세션
OpenCode 세션 관리.
```bash
opencode session [command]
```
---
#### 리스트
모든 OpenCode 세션 목록.
```bash
opencode session list
```
##### 플래그
| 간선 | 간선 | Description |
| ------------- | ----- | ------------------------------------ |
| `--max-count` | `-n` | 최근 세션에 제한 |
| `--format` | 산출 체재: 테이블 또는 json (테이블) |
---
### 통계
OpenCode 세션에 대한 토큰 사용 및 비용 통계를 표시합니다.
```bash
opencode stats
```
#### 플래그
| 플래그 | 설명 |
| ----------- | --------------------------------------------------------------------------- |
| `--days` | 지난 N일간의 통계를 보여 주세요(모든 시간) |
| `--tools` | 쇼의 도구 수 |
| `--models` | 모델 사용 내역(기본적으로 숨겨져 있음) 상단 N을 표시할 수 있는 번호|
| `--project` | 프로젝트별 필터링(모든 프로젝트, 빈 문자열: 현재 프로젝트) |
---
### 수출
JSON으로 세션 데이터를 내보내기.
```bash
opencode export [sessionID]
```
세션 ID를 제공하지 않는 경우 사용 가능한 세션에서 선택할 수 있습니다.
---
### 가져오기
JSON 파일 또는 OpenCode 공유 URL에서 세션 데이터를 가져옵니다.
```bash
opencode import <file>
```
로컬 파일 또는 OpenCode 공유 URL에서 가져올 수 있습니다.
```bash
opencode import session.json
opencode import https://opncd.ai/s/abc123
```
---
# # # # 웹
웹 인터페이스로 headless OpenCode 서버를 시작합니다.
```bash
opencode web
```
HTTP 서버를 시작하고 웹 인터페이스를 통해 OpenCode에 액세스하는 웹 브라우저를 엽니 다. `OPENCODE_SERVER_PASSWORD`를 설정하여 HTTP 기본 auth (`opencode`에 기본적으로 이름을 지정합니다).
#### 플래그
| 플래그 | 설명 |
| ------------ | ------------------------------------------ |
| `--port` | 즐거운 항구 |
| `--hostname` | 듣고 싶은 이름 |
| `--mdns` | 엔터블 mDNS 검색 |
| `--cors` | CORS를 허용하는 추가 브라우저 기원 |
---
# # # # 아프
ACP(Agent Client Protocol) 서버를 시작합니다.
```bash
opencode acp
```
이 명령은 nd-JSON을 사용하여 stdin/stdout을 통해 통신하는 ACP 서버를 시작합니다.
#### 플래그
| 플래그 | 설명 |
| ------------ | --------------------- |
| `--cwd` | 작업 디렉토리 |
| `--port` | 즐거운 항구 |
| `--hostname` | 듣고 싶은 이름 |
---
## 제거
OpenCode 제거하고 관련 파일을 제거합니다.
```bash
opencode uninstall
```
#### 플래그
| 간선 | 간선 | Description |
| --------------- | ----- | ------------------------------------------- |
| `--keep-config` | `-c` | 구성 파일 유지 |
| `--keep-data` | `-d` | 세션 데이터 및 스냅샷 유지 |
| `--dry-run` | | 제거하지 않고 제거하는 것
| `--force` | `-f`|확인 프롬프트|
---
### 업그레이드
업데이트 opencode 최신 버전 또는 특정 버전.
```bash
opencode upgrade [target]
```
최신 버전으로 업그레이드하십시오.
```bash
opencode upgrade
```
특정 버전으로 업그레이드하십시오.
```bash
opencode upgrade v0.1.48
```
#### 플래그
| 간선 | 간선 | Description |
| ---------- | ----- | ----------------------------------------------------------------- |
| `--method` | `-m` | 사용중인 설치 방법; 컬, npm, pnpm, bun, brew |
---
## 글로벌 플래그
opencode CLI는 다음의 글로벌 플래그를 사용합니다.
| 간선 | 간선 | Description |
| -------------- | ----- | ------------------------------------ |
| `--help` | `-h` | 디스플레이 도움말 |
| `--version` | `-v` | 인쇄판 번호 |
| `--print-logs` | | 스터디로 로그인 |
| `--log-level` | 로그 레벨(DEBUG, INFO, WARN, ERROR) |
---
## 환경 변수
OpenCode는 환경 변수를 사용하여 구성할 수 있습니다.
| 변하기 쉬운 | 유형 | 묘사 |
| ------------------------------------- | ------- | ------------------------------------------------- |
| `OPENCODE_AUTO_SHARE` | 불린 | 자동 공유 세션 |
| `OPENCODE_GIT_BASH_PATH` | string | Windows에서 실행되는 Git Bash 경로 |
| `OPENCODE_CONFIG` | string | 설정파일 경로 |
| `OPENCODE_CONFIG_DIR` | string | 구성 디렉토리 경로 |
| `OPENCODE_CONFIG_CONTENT` | 문자열 | 인라인 json 구성 내용 |
| `OPENCODE_DISABLE_AUTOUPDATE` | 불린 | 자동 업데이트 체크 아웃 |
| `OPENCODE_DISABLE_PRUNE` | boolean | 오래된 자료의 무능 |
| `OPENCODE_DISABLE_TERMINAL_TITLE` | 불린 | 자동 단말 제목 업데이트 |
| `OPENCODE_PERMISSION` | 문자열 | 인라인 json 권한 설정 |
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | 불린 | 기본 플러그인 비활성화 |
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | 불린 | 자동 LSP 서버 다운로드 |
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | 불린 | 실험 모델|
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | 자동 컨텍스트 컴팩트 |
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | `.claude`(prompt + Skill)의 읽을 수 있음 |
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | 불린 | `~/.claude/CLAUDE.md`를 읽을 수 있습니다 |
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | 불린 | `.claude/skills` 적재 가능 |
| `OPENCODE_DISABLE_MODELS_FETCH` | boolean | 리모트 소스에서 모델에 익숙하지 않은 모델 |
| `OPENCODE_FAKE_VCS` | string | 시험용 VCS 제공업체 |
| `OPENCODE_DISABLE_FILETIME_CHECK` | boolean | 최적화를 위한 파일 시간 검사 |
| `OPENCODE_CLIENT` | string | 클라이언트 식별자(`cli`와 동일) |
| `OPENCODE_ENABLE_EXA` | 불린 | 엑다 웹 검색 도구 |
| `OPENCODE_SERVER_PASSWORD` | string | `serve`/`web`에 대한 기본 요점 |
| `OPENCODE_SERVER_USERNAME` | string | 기본 사용자 이름(기본 `opencode`) |
| `OPENCODE_MODELS_URL` | string | 모델 구성의 맞춤 URL |
---
### 실험
이 환경변수는 변화하거나 제거될 수 있는 실험적인 특징을 가능하게 합니다.
| 변하기 쉬운 | 유형 | 묘사 |
| ----------------------------------------------- | ------- | --------------------------------------- |
| `OPENCODE_EXPERIMENTAL` | 불린 | 모든 실험적인 특징 |
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolean | 아이콘 검색 |
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | 불린 | TUI의 선택 해제
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | 번호 | ms에서 bash 명령의 기본 시간 |
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | 번호 | LLM 응답을 위한 최대 출력 토큰 |
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolean | 전체 디디터용 파일워커 |
| `OPENCODE_EXPERIMENTAL_OXFMT` | 불린 | 엔블 oxfmt 형식 |
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | 불린 | 실험적인 LSP 도구 |
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolean | 사용 가능한 파일워커 |
| `OPENCODE_EXPERIMENTAL_EXA` | boolean | 실험용 Exa 기능 |
| `OPENCODE_EXPERIMENTAL_LSP_TY` | 불린 | 실험적인 LSP형 검사 |
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolean | 실험용 마운팅 기능 |
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | 불린 | 플랜 모드 |

View File

@@ -0,0 +1,323 @@
---
title: Commands
description: Create custom commands for repetitive tasks.
---
사용자 지정 명령은 TUI에서 실행될 때 실행할 때 실행해야 합니다.
```bash frame="none"
/my-command
```
사용자 정의 명령은 `/init`, `/undo`, `/redo`, `/share`, `/share`, `/help`와 같은 내장된 명령 이외에 있습니다. [더 알아보기](/docs/tui#commands).
---
## 명령 파일 생성
사용자 지정 명령을 정의하려면 `commands/` 디렉토리의 Markdown 파일을 만듭니다.
`.opencode/commands/test.md` 만들기:
```md title=".opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
frontmatter 명령 속성을 정의합니다. 콘텐츠는 템플릿이 됩니다.
명령명에 따라 `/`를 입력하여 명령을 사용하십시오.
```bash frame="none"
"/test"
```
---
## 구성
OpenCode config를 통해 사용자 지정 명령을 추가하거나 `commands/` 디렉토리에 있는 Markdown 파일을 만들 수 있습니다.
---
### JSON 태그
OpenCode [config](/docs/config)에서 `command` 옵션을 사용하십시오:
```json title="opencode.jsonc" {4-12}
{
"$schema": "https://opencode.ai/config.json",
"command": {
// This becomes the name of the command
"test": {
// This is the prompt that will be sent to the LLM
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
// This is shown as the description in the TUI
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
이제 TUI에서이 명령을 실행할 수 있습니다.
```bash frame="none"
/test
```
---
### 마크다운
Markdown 파일을 사용하여 명령을 정의할 수 있습니다. 그들에 게:
- 글로벌: `~/.config/opencode/commands/`
- 프로젝트: `.opencode/commands/`
```markdown title="~/.config/opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
markdown 파일 이름은 명령 이름입니다. 예를 들어, `test.md` lets
당신은 실행:
```bash frame="none"
/test
```
---
## Prompt 구성
사용자 정의 명령에 대한 프롬프트는 몇 가지 특별한 placeholders 및 구문을 지원합니다.
---
# # # # 가격
`$ARGUMENTS` placeholder를 사용하여 명령을 전달합니다.
```md title=".opencode/commands/component.md"
---
description: Create a new component
---
Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.
```
인수로 명령을 실행:
```bash frame="none"
/component Button
```
그리고 `$ARGUMENTS`는 `Button`로 대체될 것입니다.
위치 매개 변수를 사용하여 개별 인수에 액세스 할 수 있습니다.
- `$1` - 첫 번째 인수
- `$2` - 두 번째 인수
- `$3` - 세 번째 인수
- 그래서 ...
예를 들면:
```md title=".opencode/commands/create-file.md"
---
description: Create a new file with content
---
Create a file named $1 in the directory $2
with the following content: $3
```
명령을 실행:
```bash frame="none"
/create-file config.json src "{ \"key\": \"value\" }"
```
이 교체:
- `$1`TK1ZZ와 `$1`
- `$2`TK1ZZ와 `$2`
- `$3`TK1ZZ와 `$3`
---
### 포탄 산출
사용 !`command` 는 [bash command](/docs/tui#bash-commands)를 프롬프트로 출력합니다.
예를 들어, 테스트 범위를 분석하는 사용자 정의 명령을 만들려면:
```md title=".opencode/commands/analyze-coverage.md"
---
description: Analyze test coverage
---
Here are the current test results:
!`npm test`
Based on these results, suggest improvements to increase coverage.
```
또는 최근 변경 사항 :
```md title=".opencode/commands/review-changes.md"
---
description: Review recent changes
---
Recent git commits:
!`git log --oneline -10`
Review these changes and suggest any improvements.
```
명령은 프로젝트의 루트 디렉토리에서 실행하고 출력은 프롬프트의 일부가됩니다.
---
## 파일 참조
파일명에 따라 `@`를 사용하여 명령에 파일이 포함되어 있습니다.
```md title=".opencode/commands/review-component.md"
---
description: Review component
---
Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.
```
파일 콘텐츠는 자동으로 프롬프트에 포함되어 있습니다.
---
## 옵션
구성 옵션을 자세히 살펴봅시다.
---
### 템플릿
`template` 옵션은 명령이 실행될 때 LLM에 전송될 프롬프트를 정의합니다.
```json title="opencode.json"
{
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
}
}
}
```
** config 옵션이 필요합니다.
---
### 묘사
`description` 옵션을 사용하여 명령의 간단한 설명을 제공합니다.
```json title="opencode.json"
{
"command": {
"test": {
"description": "Run tests with coverage"
}
}
}
```
명령에 입력할 때 TUI의 설명으로 표시됩니다.
---
## 에이전트
`agent` config를 선택적으로 지정합니다. [agent](/docs/agents)는 이 명령을 실행해야 합니다.
이 경우 [subagent](/docs/agents/#subagents) 명령은 기본으로 시약을 트리거합니다.
이 행동을 비활성화하려면 `subtask`를 `false`로 설정하십시오.
```json title="opencode.json"
{
"command": {
"review": {
"agent": "plan"
}
}
}
```
** 옵션** 설정 옵션입니다. 지정된 경우, 현재 에이전트에 기본값.
---
# # # 서브스크랩
`subtask` boolean을 사용하여 명령을 강제로 [subagent](/docs/agents/#subagents) 호출합니다.
이것은 당신이 명령을 원하지 않는 경우 유용합니다 당신의 기본 컨텍스트를 pollute하고 ** 에이전트는 시약으로 행동하는,
`mode`가 [시약](/docs/시약) 구성에 `primary`로 설정되는 경우에도.
```json title="opencode.json"
{
"command": {
"analyze": {
"subtask": true
}
}
}
```
** 옵션** 설정 옵션입니다.
---
### 모형
`model` config를 사용하여 이 명령의 기본 모델을 무시합니다.
```json title="opencode.json"
{
"command": {
"analyze": {
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
** 옵션** 설정 옵션입니다.
---
## 내장
opencode는 `/init`, `/undo`, `/redo`, `/share`, `/help`, `/help`와 같은 몇몇 붙박이 명령을 포함합니다; [learn more] (./tui#commands).
:::note
사용자 지정 명령은 내장 명령을 무시할 수 있습니다.
:::
같은 이름으로 사용자 정의 명령을 정의하면 내장 명령을 무시합니다.

View File

@@ -0,0 +1,685 @@
---
title: Config
description: Using the OpenCode JSON config.
---
JSON config 파일을 사용하여 OpenCode를 구성할 수 있습니다.
---
## 형식
OpenCode는 **JSON** 및 **JSONC** (JSON with Comments) 형식을 지원합니다.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
// Theme configuration
"theme": "opencode",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
}
```
---
## 위치
다른 위치의 몇 개에 구성을 배치 할 수 있으며 그들은
precedence의 다른 순서.
:::note
구성 파일은 ** 함께, 대체되지 않습니다.
:::
구성 파일은 함께 결합되어 대체되지 않습니다. 다음 구성 위치에서 설정이 결합됩니다. 나중에 configs override 이전 하나만 충돌 키. 모든 구성에서 설정이 보존됩니다.
예를 들어, 글로벌 구성 세트 `theme: "opencode"` 및 `autoupdate: true` 및 프로젝트 구성 세트 `model: "anthropic/claude-sonnet-4-5"`를 설정하면 최종 구성은 모든 세 가지 설정을 포함합니다.
---
### 임신 순서
Config 소스는 이 순서에서 적재됩니다 (더 많은 소스는 더 이른 것 삭제합니다):
1. ** 원격 설정** (`.well-known/opencode`에서) - 조직 기본
2.**Global config** (`~/.config/opencode/opencode.json`) - 사용자 선호도
3. ** 사용자 정의 설정** (`OPENCODE_CONFIG` env var) - 사용자 정의 overrides
4. ** 프로젝트 별 설정** (`opencode.json`) - 프로젝트 별 설정
5. **`.opencode` 디렉토리 ** - 에이전트, 명령, 플러그인
6. ** 인라인 설정** (`OPENCODE_CONFIG_CONTENT` env var) - 런타임 오버라이드
이것은 프로젝트 구성은 글로벌 디폴트를 override 할 수 있으며, 글로벌 구성은 원격 조직 디폴트를 override 할 수 있습니다.
:::note
`.opencode`와 `~/.config/opencode` 감독 사용 **plural 이름** 하위 디렉토리에 대 한: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/`, 그리고 `themes/`. Singular 이름 (예를들면, `agent/`)는 또한 뒤쪽 겸용성을 위해 지원됩니다.
:::
---
### 리모트
조직은 `.well-known/opencode` 엔드포인트를 통해 기본 구성을 제공 할 수 있습니다. 이것은 당신이 그것을 지원하는 공급자로 정통할 때 자동적으로 fetched.
원격 설정은 기본 레이어로 제공된 첫 번째입니다. 다른 구성 소스 (글로벌, 프로젝트)는 이러한 기본값을 무시할 수 있습니다.
예를 들어, 조직이 기본으로 비활성화 된 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
}
}
}
```
---
## 글로벌
`~/.config/opencode/opencode.json`에서 글로벌 OpenCode 구성을 배치합니다. 테마, 공급자, keybinds와 같은 사용자 전체 선호도에 대한 글로벌 구성을 사용합니다.
글로벌 구성 overrides 원격 조직 기본.
---
## 프로젝트 당
프로젝트 루트에 `opencode.json`를 추가합니다. Project config는 표준 구성 파일 중 가장 높은 우선순위가 있습니다. 이는 글로벌 및 원격 구성 모두 overrides합니다.
:::tip
프로젝트의 루트에 특정 설정.
:::
OpenCode가 시작될 때, 현재 디렉토리의 설정 파일이나 가장 가까운 Git 디렉토리로 이동합니다.
이것은 Git로 검사되고 글로벌 하나로 동일한 schema를 사용합니다.
---
### 사용자 정의 경로
`OPENCODE_CONFIG` 환경 변수를 사용하여 사용자 정의 구성 파일 경로 지정.
```bash
export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"
```
Custom config는 precedence 순서에 있는 세계적인 프로젝트 구성 사이에서 적재됩니다.
---
## 사용자 정의 디렉토리
`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)에서 정의된 스키마가 있습니다.
당신의 편집자는 schema에 근거를 둔 검증하고 자동 완성될 수 있어야 합니다.
---
# # # # TUI # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
`tui` 옵션을 통해 TUI-specific 설정을 구성할 수 있습니다.
```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`인 경우에 Ignored.
- `diff_style` - 제어 디프 렌더링. `"auto"`는 맨끝 폭에, `"stacked"` 항상 단 하나 란을 보여줍니다 적응시킵니다.
[TUI를 사용하여 더 자세히 알아보기](/docs/tui).
---
## 서버
`opencode serve` 및 `opencode web` 명령에 대한 서버 설정을 구성할 수 있습니다.
```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`가 활성화되고 hostname이 설정되지 않으면 `0.0.0.0`로 기본값이 됩니다.
- `mdns` - 사용 가능한 mDNS 서비스 발견. 이 네트워크에서 다른 장치가 OpenCode 서버를 발견 할 수 있습니다.
- `mdnsDomain` - mDNS 서비스에 대한 사용자 정의 도메인 이름. 기본 `opencode.local`. 동일한 네트워크에서 여러 인스턴스를 실행하는 데 유용합니다.
- `cors` - 브라우저 기반 클라이언트에서 HTTP 서버를 사용할 때 CORS를 허용하는 추가 기원. 가치는 가득 차있는 근원이어야 합니다 (scheme + 주인 + 선택적인 항구), 예를들면 `https://app.example.com`.
[서버에 대해 자세히 알아보기](/docs/server).
---
## 도구
LLM은 `tools` 옵션을 통해 사용할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": false,
"bash": false
}
}
```
[이 도구에 대해 자세히 알아보기](/docs/tools).
---
## 모델
`provider`, `model` 및 `small_model` 옵션을 통해 OpenCode config에서 사용하려는 공급자와 모델을 구성할 수 있습니다.
```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는 당신의 공급자에게서 1개가 유효하다면 더 싼 모형을 이용하는 것을 시도합니다, 그렇지 않으면 당신의 주요 모형에 돌려보냅니다.
공급자 선택권은 `timeout`와 `setCacheKey`를 포함할 수 있습니다:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"options": {
"timeout": 600000,
"setCacheKey": true
}
}
}
}
```
- `timeout` - 밀리 초 (과태: 300000)에서 타임 아웃 요청. `false`로 분리할 수 있습니다.
- `setCacheKey` - 캐시 키가 항상 지정된 공급자를 위해 설정됩니다.
[local model](/docs/models#local)을 구성할 수 있습니다. [더 알아보기](/docs/models).
---
### 공급자 특정 선택권
몇몇 공급자는 일반적인 `timeout` 및 `apiKey` 조정을 넘어서 추가 윤곽 선택권을 지원합니다.
##### 아마존 베드록
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는 `~/.aws/credentials` (`AWS_PROFILE` env var에 과태)에서 단면도 지명했습니다
- `endpoint` - VPC 엔드 포인트에 대한 사용자 정의 엔드 포인트 URL. 이것은 AWS 별 용어를 사용하여 일반적인 `baseURL` 옵션에 대한 별명입니다. 둘 다 지정되는 경우에, `endpoint`는 전진합니다.
:::note
Bearer 토큰 (`AWS_BEARER_TOKEN_BEDROCK` 또는 `/connect`)은 프로파일 기반 인증을 통해 우선 순위를 부여합니다. 자세한 내용은 [authentication precedence](/docs/providers#authentication-precedence)를 참조하십시오.
:::
[Amazon-bedrock에 대해 자세히 알아보기](/docs/providers#amazon-bedrock).
---
## 테마
`theme` 옵션을 통해 OpenCode config에서 사용하려는 테마를 구성할 수 있습니다.
```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/시약).
---
### 과태 대리인
`default_agent` 옵션을 사용하여 기본 에이전트를 설정할 수 있습니다. 아무도 명시적으로 지정되지 않을 때 에이전트가 사용되는 결정.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"default_agent": "plan"
}
```
기본 대리인은 1 차적인 대리인이어야 합니다 (미약 아닙니다). 이것은 `"build"` 또는 `"plan"`, 또는 정의된 [custom 대리인] (./agents) 같이 붙박이 대리인일 수 있습니다. 지정된 에이전트가 존재하지 않는 경우, OpenCode는 경고로 `"build"`로 돌아갑니다.
이 설정은 모든 인터페이스에서 적용됩니다: TUI, CLI (`opencode run`), 데스크탑 앱 및 GitHub Action.
---
## 공유
`share` 옵션을 통해 [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` 옵션을 통해 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` - 토큰을 저장하기 위해 오래된 도구 출력을 제거 (기본: `true`).
---
### 시계
`watcher` 옵션을 통해 파일워커가 패턴을 무시할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
```
패턴은 glob 구문을 따릅니다. 이 파일을 보시려면 noisy 디렉토리를 제외하십시오.
---
### MCP 서버
`mcp` 옵션을 통해 사용하려는 MCP 서버를 구성할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {}
}
```
[더 이상](/docs/mcp-servers).
---
### 플러그인
[Plugins](/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` 옵션을 통해 사용할 모델에 대한 지침을 구성할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
이 경로와 glob 패턴의 배열을 사용하여 명령 파일. [더 알아보기
여기 규칙에 관하여] (./rules).
---
## Disabled 공급자
`disabled_providers` 옵션을 통해 자동으로 로드된 공급자를 비활성화할 수 있습니다. 이것은 당신이 그들의 credentials가 유효하다하더라도 적재되는에서 특정 공급자를 방지할 때 유용합니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"disabled_providers": ["openai", "gemini"]
}
```
:::note
`disabled_providers`는 `enabled_providers`에 우선권을 가지고 있습니다.
:::
`disabled_providers` 옵션은 공급자 ID의 배열을 허용합니다. 공급자가 비활성화되면:
- 환경 변수가 설정된 경우에도 로드되지 않습니다.
- API 키가 `/connect` 명령을 통해 구성되는 경우에도로드되지 않습니다.
- 공급자의 모델은 모델 선택 목록에 표시되지 않습니다.
---
### Enabled 공급자
`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
실험 옵션은 안정되지 않습니다. 그들은 예고없이 변경하거나 제거 할 수 있습니다.
:::
---
## 변수
config 파일에서 참조 환경 변수 및 파일 내용에 대한 변수 대변을 사용할 수 있습니다.
---
# # # # # Env 바
`{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}"
}
}
}
}
```
파일 경로는:
- config 파일 디렉토리에 관계
- 또는 `/` 또는 `~`로 시작하는 절대 경로
이것들은 유용하다:
- 별도의 파일에서 API 키와 같은 민감한 데이터를 유지.
- config를 cluttering하지 않고 큰 명령어 파일을 포함합니다.
- 여러 구성 파일에서 공통 구성 스니펫 공유.

View File

@@ -0,0 +1,170 @@
---
title: Custom Tools
description: Create tools the LLM can call in opencode.
---
사용자 정의 도구는 LLM이 대화 중에 호출 할 수있는 기능을 만듭니다. 그들은 `read`, `write` 및 `bash`와 같은 opencode의 [붙박이 도구] (./tools)와 함께 작동합니다.
---
## 도구 만들기
도구는 **TypeScript** 또는 **JavaScript** 파일로 정의됩니다. 그러나 도구 정의는 ** 어떤 언어로 작성된 스크립트를 호출 할 수 있습니다 ** - TypeScript 또는 JavaScript는 도구 정의 자체에서만 사용됩니다.
---
## 위치
그들은 정의 할 수 있습니다:
- 프로젝트의 `.opencode/tools/` 디렉토리에 배치하여 로컬.
- 또는 전 세계적으로 `~/.config/opencode/tools/`에 배치하여.
---
## 구조
도구를 만드는 가장 쉬운 방법은 `tool()` helper를 사용하여 유형 안전 및 검증을 제공합니다.
```ts title=".opencode/tools/database.ts" {1}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Query the project database",
args: {
query: tool.schema.string().describe("SQL query to execute"),
},
async execute(args) {
// Your database logic here
return `Executed query: ${args.query}`
},
})
```
**파일 이름**는 **tool name**가 됩니다. 위는 `database` 공구를 만듭니다.
---
### 파일 당 다수 공구
단일 파일에서 여러 도구를 수출할 수 있습니다. 각 수출은 ** 별도의 도구 ** 이름 ** `<filename>_<exportname>`**:
```ts title=".opencode/tools/math.ts"
import { tool } from "@opencode-ai/plugin"
export const add = tool({
description: "Add two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a + args.b
},
})
export const multiply = tool({
description: "Multiply two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a * args.b
},
})
```
이것은 2개의 공구를 만듭니다: `math_add`와 `math_multiply`.
---
# # # # 가격
`tool.schema`를 사용할 수 있습니다, 그냥 [Zod](https://zod.dev), 인수 유형을 정의합니다.
```ts "tool.schema"
args: {
query: tool.schema.string().describe("SQL query to execute")
}
```
[Zod](https://zod.dev)를 직접 가져오고 일반 객체를 반환할 수 있습니다.
```ts {6}
import { z } from "zod"
export default {
description: "Tool description",
args: {
param: z.string().describe("Parameter description"),
},
async execute(args, context) {
// Tool implementation
return "result"
},
}
```
---
### 텍스트
도구는 현재 세션에 대한 컨텍스트를받습니다.
```ts title=".opencode/tools/project.ts" {8}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Get project information",
args: {},
async execute(args, context) {
// Access context information
const { agent, sessionID, messageID, directory, worktree } = context
return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
},
})
```
세션 작업 디렉토리에 `context.directory`를 사용합니다.
git worktree 루트에 `context.worktree`를 사용합니다.
---
## 예제
### Python 도구 작성
원하는 모든 언어로 도구를 쓸 수 있습니다. 여기에 Python을 사용하여 두 개의 숫자를 추가하는 예입니다.
먼저 Python 스크립트로 도구를 만듭니다.
```python title=".opencode/tools/add.py"
import sys
a = int(sys.argv[1])
b = int(sys.argv[2])
print(a + b)
```
그런 다음 도구 정의를 만듭니다.
```ts title=".opencode/tools/python-add.ts" {10}
import { tool } from "@opencode-ai/plugin"
import path from "path"
export default tool({
description: "Add two numbers using Python",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args, context) {
const script = path.join(context.worktree, ".opencode/tools/add.py")
const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
return result.trim()
},
})
```
여기에 우리는 [`Bun.$`](https://bun.com/docs/runtime/shell) 유틸리티를 사용하여 파이썬 스크립트를 실행합니다.

View File

@@ -0,0 +1,76 @@
---
title: Ecosystem
description: Projects and integrations built with OpenCode.
---
OpenCode에 내장 된 커뮤니티 프로젝트의 컬렉션.
:::note
이 목록에 OpenCode 관련 프로젝트를 추가하시겠습니까? PR 제출
:::
[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 sync와 live preview를 가진 고립된 Daytona 샌드박스의 OpenCode 세션을 자동으로 실행 |
| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | 자주 사용되는 Helicone session headers for request grouping |
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | Auto-inject TypeScript/Svelte 타입의 파일 검색 도구|
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | API 크레딧 대신 ChatGPT Plus/Pro 구독 사용 |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | API 결제 대신 기존 Gemini 플랜 사용 |
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | API 결제 대신 Antigravity의 무료 모델 사용 |
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | 얕은 clones와 자동 할당된 포트가 있는 Multi-branch devcontainer 고립 |
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth Plugin, 구글 검색 지원, 더 강력한 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) | PTY에서 배경 프로세스를 실행하기 위한 AI Agent를 사용해서 대화형 입력을 보냅니다. ·
| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | 비동기 포탄 명령에 대한 지침 - 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) | LLMs에서 생산한 Markdown 테이블 정리 |
| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 10x 빠른 코드 편집 및 Morph Fast Apply API 및 게으른 편집 마커 |
| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | 배경 에이전트, 사전 제작된 LSP/AST/MCP 도구, 큐레이터 에이전트, 클로드 코드 호환 |
| [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) | 오픈코드 컨텍스트를 기반으로 하는 AI-powered automatic Zellij session naming |
| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | 기술검출 및 주사를 요구하는 OpenCode Agent를 게으른 로드 프롬프트 허용 |
| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | Supermemory를 사용하여 세션 전반에 걸쳐 지속되는 메모리 |
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | (영어) 상호 작용하는 계획은 시각적인 주석 및 개인/오프라인 공유를 검토합니다 |
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | granular flow control과 강력한 오케스트라 시스템 확장
| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | cron 구문을 가진 발사된 (Mac) 또는 체계화된 (Linux)를 사용하여 작업 재발견 |
| [micode](https://github.com/vtemian/micode) | Structured Brainstorm → Plan → 세션 연속성으로 워크플로우 구현 |
| [octto](https://github.com/vtemian/octto) | 멀티 퀘스트 양식으로 AI Brainstorming을 위한 인터랙티브 브라우저 UI |
| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agent) | 동기화 위임 및 컨텍스트의 코드 스타일 배경 에이전트 |
| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | OpenCode의 Native OS 알림 작업이 완료되면 알 수 있습니다 |
| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | 멀티 시약 오케스트라 묶음 하네스 16개 부품, 하나 설치 |
| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | 오픈코드를 위한 Zero-friction git worktree |
---
## 프로젝트
| 이름 | 설명 |
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
| [kimaki](https://github.com/remorses/kimaki) | SDK 내장 OpenCode 세션을 제어하는 Discord bot |
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | API에 내장된 편집기웨어 프롬프롬프 플러그인 |
| [portal](https://github.com/hosenur/portal) | Tailscale/VPN에 OpenCode를 위한 모바일 최초의 웹 UI |
| [opencode 플러그인 템플릿](https://github.com/zenobi-us/opencode-plugin-template/) | OpenCode 플러그인 구축 템플릿 |
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | 오픈코드를 위한 Neovim frontend - 터미널 기반 AI 코딩 에이전트 |
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | @opencode-ai/sdk를 통해 OpenCode를 사용하는 Vercel AI SDK 제공 |
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | 웹 / 데스크탑 앱 및 VS Code Extension for OpenCode |
| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | Obsidian 플러그인 Obsidian의 UI에서 OpenCode를 포함
| 【영업】(https://github.com/different-ai/openwork) | OpenCode에 의해 구동 Claude Cowork에 대한 오픈 소스 대안 |
| [ocx](https://github.com/kdcokenny/ocx) | 휴대용, 절연 프로파일을 갖춘 OpenCode 확장 관리자. |
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | OpenCode를 위한 데스크탑, 웹, 모바일 및 원격 클라이언트 앱 |
---
# # 에이전트
| 이름 | 설명 |
| ----------------------------------------------------------------- | ------------------------------------------------------------ |
| [Agentic](https://github.com/Cluster444/agentic) | 구조 개발용 모듈형 AI 에이전트 및 명령 |
| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | 향상된 워크플로우를 위한 컨피그, 프롬프트, 에이전트 및 플러그인 |

View File

@@ -0,0 +1,170 @@
---
title: Enterprise
description: Using OpenCode securely in your organization.
---
import config from "../../../../config.mjs"
export const email = `mailto:${config.email}`
OpenCode Enterprise는 코드와 데이터가 인프라를 결코 나타낸다는 것을 보증하는 단체입니다. SSO 및 내부 AI 게이트웨이와 통합하는 중앙화 된 구성을 사용하여 이것을 할 수 있습니다.
:::note
OpenCode는 코드 또는 컨텍스트 데이터를 저장하지 않습니다.
:::
OpenCode Enterprise로 시작하려면:
1. 시험은 당신의 팀과 내부적으로 합니다.
2. **<a href={email}> 연락처</a>** 가격 및 구현 옵션을 논의합니다.
---
## 시험
OpenCode는 오픈 소스이며 코드를 저장하지 않거나 컨텍스트 데이터, 그래서 개발자는 단순히 [get start](/docs/) 그리고 재판을 수행 할 수 있습니다.
---
## 데이터 처리
**OpenCode는 코드 또는 컨텍스트 데이터를 저장하지 않습니다. ** 모든 처리는 로컬 또는 직접 API 호출을 통해 AI 공급자.
이것은 당신이 신뢰하는 공급자, 또는 내부를 사용하고 있는 경우에
AI 게이트웨이, OpenCode를 안전하게 사용할 수 있습니다.
여기에서 유일한 caveat는 선택적인 `/share` 특징입니다.
---
### 공유 대화
사용자가 `/share` 기능을 활성화하면 대화와 관련된 데이터가 opencode.ai에서 이러한 공유 페이지를 호스팅하는 데 사용됩니다.
데이터는 현재 CDN의 가장자리 네트워크를 통해 제공되며 사용자가 가까운 가장자리에 캐시됩니다.
우리는 당신이 당신의 재판을 위해 이것을 비활성화하는 것을 추천합니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled"
}
```
[공유에 대해 더 알아보기](/docs/share).
---
### 코드 소유권
**OpenCode에 의해 생성 된 모든 코드를 소유합니다. ** 제한 또는 소유권 주장이 없습니다.
---
## 가격
OpenCode Enterprise의 per-seat 모델을 사용합니다. LLM 게이트웨이를 가지고 있다면 토큰을 사용할 수 없습니다. 가격 및 구현 옵션에 대한 자세한 내용은 **<a href={email}>contact us</a>**.
---
## 배포
시험이 완료되면 OpenCode를 사용해야합니다.
조직, 당신은 할 수 있습니다 **<a href={email}>contact us</a>** 토론하기
가격 및 구현 옵션.
---
### 중앙 Config
OpenCode를 설정하여 전체 조직의 단일 중앙 구성을 사용할 수 있습니다.
이 중앙 집중식 구성은 SSO 공급자와 통합할 수 있으며 내부 AI 게이트웨이 만 모든 사용자 액세스를 보장합니다.
---
### SSO 통합
중앙 구성을 통해 OpenCode는 인증 기관의 SSO 공급자와 통합 할 수 있습니다.
OpenCode는 기존 ID 관리 시스템을 통해 내부 AI 게이트웨이에 대한 자격 증명을 얻을 수 있습니다.
---
## 내부 AI 게이트웨이
중앙 설정으로, OpenCode는 내부 AI 게이트웨이만 사용할 수 있습니다.
또한 다른 모든 AI 제공 업체를 비활성화 할 수 있습니다, 모든 요청은 조직의 승인 된 인프라를 통해 이동합니다.
---
## 셀프 호스팅
공유 페이지를 비활성화하는 것이 좋습니다.
당신의 조직, 우리는 또한 당신의 인프라에 자기 호스팅을 도울 수 있습니다.
이것은 현재 우리의 로드맵에 있습니다. 관심이 있다면, **<a href={email}>는</a>**를 알려줍니다.
---
## 자주 묻는 질문
<details>
<summary>What is OpenCode Enterprise?</summary>
OpenCode Enterprise는 코드와 데이터가 인프라를 결코 나타낸다는 것을 보증하는 단체입니다. SSO 및 내부 AI 게이트웨이와 통합하는 중앙화 된 구성을 사용하여 이것을 할 수 있습니다.
</details>
<details>
<summary>How do I get started with OpenCode Enterprise?</summary>
단순히 팀과 내부 평가판을 시작합니다. 기본값으로 OpenCode는 코드를 저장하지 않거나 context data, 시작하기 쉬운 만들기.
그런 다음 **<a href={email}>contact us</a>**는 가격과 구현 옵션을 논의합니다.
</details>
<details>
<summary>How does enterprise pricing work?</summary>
우리는 per-seat 기업 가격을 제안합니다. LLM 게이트웨이를 가지고 있다면 토큰을 사용할 수 없습니다. 더 자세한 내용은 **<a href={email}>contact us</a>** 를 통해 조직의 요구에 따라 맞춤형 견적을 제공합니다.
</details>
<details>
<summary>Is my data secure with OpenCode Enterprise?</summary>
예. OpenCode는 코드 또는 컨텍스트 데이터를 저장하지 않습니다. 모든 처리는 로컬 또는 직접 API 호출을 통해 AI 공급자. 중앙 설정 및 SSO 통합으로 데이터는 조직의 인프라 내에서 안전하게 유지됩니다.
</details>
<details>
<summary>Can we use our own private NPM registry?</summary>
OpenCode는 Bun's native `.npmrc` 파일 지원을 통해 개인 npm 등록을 지원합니다. 조직이 JFrog Artifactory, Nexus 또는 이와 같은 개인 레지스트리를 사용한다면, 개발자가 OpenCode를 실행하기 전에 인증됩니다.
개인 레지스트리로 인증을 설정하려면:
```bash
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
```
`~/.npmrc`를 인증 세부 사항으로 만듭니다. OpenCode는 자동으로
지금 구매하세요.
:::caution
OpenCode를 실행하기 전에 개인 레지스트리에 로그인해야합니다.
:::
또는 `.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를 실행하기 전에 개인 레지스트리에 로그인해야하며 패키지를 설치할 수 있습니다.
</details>

View File

@@ -0,0 +1,130 @@
---
title: Formatters
description: OpenCode uses language specific formatters.
---
OpenCode는 언어 별 형식을 사용하여 작성 또는 편집 한 후 자동으로 파일을 포맷합니다. 이 생성 된 코드는 프로젝트의 코드 스타일을 따릅니다.
---
## 내장
OpenCode는 인기있는 언어 및 프레임 워크에 대한 몇 가지 내장 형식자와 함께 제공됩니다. 아래는 formatters, 지원된 파일 확장 및 명령 또는 구성 옵션의 목록입니다.
| 형식 | 연장 | 요구 사항 |
| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| gofmt | .go | `gofmt` 명령 가능 |
| 믹스 | .ex, .ex, .eex, .heex, .leex, .neex, .sface | `mix` 명령 가능 |
인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션
| 바이오메 | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, [기타](https://biomejs.dev/) | `biome.json(c)` 구성 파일 |
| 지그 | .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` 명령 가능 |
| 화물fmt | .rs | `cargo fmt` 명령 가능 |
| uv | .py, .pyi | `uv` 명령 가능 |
| rubocop | .rb, .rake, .gemspec, .ru | `rubocop` 명령 사용 가능 |
| 표준 | .rb, .rake, .gemspec, .ru | `standardrb` 명령 사용 가능 |
| htmlbeautifier | .erb, .html.erb | `htmlbeautifier` 명령 가능 |
| 공기 | .R | `air` 명령 가능 |
| 다트 | 다트 | `dart` 명령 |
| ocamlformat | .ml, .mli | `ocamlformat` 명령 가능·`.ocamlformat` 설정 파일 |
| 지형 | .tf, .tfvars | `terraform` 명령 가능 |
| gleam | .gleam | `gleam` 명령 가능 |
| nixfmt | .nix | `nixfmt` 명령 가능 |
| shfmt | .sh, .bash | `shfmt` 명령 가능 |
| 핀 | .php | `laravel/pint` 의존도 `composer.json` |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | `oxfmt` Dependency in `package.json`, [experimental env 변수 플래그](/docs/cli/#experimental) |
| ormolu | .hs | `ormolu` 명령 가능 |
그래서 프로젝트가 `prettier`를 `package.json`에 가지고 있다면, OpenCode는 자동으로 그것을 사용합니다.
---
## 어떻게 작동합니까?
OpenCode가 파일을 작성하거나 편집할 때:
1. 모든 활성화된 formatters에 대한 파일 확장을 확인합니다.
2. 파일에 적절한 형식의 명령을 실행합니다.
3. 형식 변경을 자동으로 적용합니다.
이 과정은 배경에서 발생합니다. 코드 스타일은 수동 단계없이 유지됩니다.
---
## 구성
OpenCode config의 `formatter` 섹션을 통해 형식기를 사용자 정의 할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}
```
각 formatter 윤곽은 다음을 지원합니다:
| 재산 | 유형 | 묘사 |
| ------------- | -------- | ------------------------------------------------------- |
| `disabled` | 불린 | 이 세트를 `true`로 포맷터 비활성화 |
| `command` | 문자열[] | 형식을 실행하는 명령 |
| `environment` | 객체 | 형식의 실행시 설정하는 환경 변수 |
| `extensions` | string[] | 이 형식의 파일 확장자 취급 |
몇 가지 예제를 살펴 보자.
---
## Disabling 형식자
`false`에 `formatter`를 세계로 바꾸기 위하여 **all** formatters:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}
```
** 특정** 형식, `disabled`를 `true`로 설정:
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}
```
---
### 사용자 정의 형식
내장 형식자를 무시하거나 명령, 환경 변수 및 파일 확장을 지정하여 새로운 것을 추가 할 수 있습니다.
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
},
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}
```
명령의 **`$FILE` placeholder**는 형식의 파일 경로로 대체됩니다.

View File

@@ -0,0 +1,321 @@
---
title: GitHub
description: Use OpenCode in GitHub issues and pull-requests.
---
OpenCode는 GitHub 워크플로우와 통합됩니다. Mention `/opencode` 또는 `/oc` 당신의 의견에, 그리고 OpenCode는 당신의 GitHub 활동 주자 안에 작업을 실행할 것입니다.
---
## 특징
- **문제**: OpenCode가 문제점을 보고 당신을 설명합니다.
- **Fix 및 구현 **: 이슈를 수정하거나 기능을 구현하려면 OpenCode에 문의하십시오. 그리고 새로운 지점에서 일하고 모든 변경으로 PR을 제출합니다.
-**Secure**: OpenCode는 GitHub의 런너 내부에서 실행됩니다.
---
## 설치
GitHub 저장소에서 다음과 같은 명령을 실행:
```bash
opencode github install
```
GitHub 앱을 설치하고 워크플로를 만들고 비밀을 설정할 수 있습니다.
---
## 수동 설정
또는 수동으로 설정할 수 있습니다.
1. ** GitHub 앱 설치 **
[**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent)에 머리가 붙습니다. 대상 저장소에 설치되어 있는지 확인하십시오.
2. ** 워크플로우 추가 **
저장소에 `.github/workflows/opencode.yml`에 다음 작업 흐름 파일을 추가합니다. 적절한 `model`를 설정하고 `env`의 API 키가 필요합니다.
```yml title=".github/workflows/opencode.yml" {24,26}
name: opencode
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
opencode:
if: |
contains(github.event.comment.body, '/oc') ||
contains(github.event.comment.body, '/opencode')
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
# share: true
# github_token: xxxx
```
3. ** 비밀의 API 키 저장 **
조직 또는 프로젝트 ** 설정**, 확장 ** 축소 및 변수 ** 왼쪽 및 선택 **Actions**. 그리고 필요한 API 키를 추가합니다.
---
## 구성
- `model`: OpenCode를 사용하는 모형. `provider/model`의 형식을 가져 가라. **필수**입니다.
- `agent`: 사용을 위한 대리인. 1 차적인 대리인이어야 합니다. `default_agent`로 돌아와서 config 또는 `"build"`에서 찾을 수 없습니다.
- `share`: OpenCode 세션을 공유하는 것. Defaults to **true** for public 저장소.
- `prompt` : 기본 동작을 무시하기 위해 옵션 사용자 정의 프롬프트. OpenCode 프로세스 요청을 사용자 정의하기 위해 이것을 사용합니다.
- `token`: 코멘트를 생성, 커밋 변경 및 오프닝 풀 요청과 같은 작업을 수행하기위한 옵션 GitHub 액세스 토큰. 기본적으로 OpenCode는 OpenCode GitHub App에서 설치 액세스 토큰을 사용하므로 커밋, 코멘트 및 풀 요청은 앱에서 오는 것과 같이 나타납니다.
대안으로, GitHub Action runner의 [붙박이 `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github token)을 사용하여 OpenCode GitHub 앱을 설치하지 않고 사용할 수 있습니다. 워크플로우에서 필요한 권한을 부여하는 것을 확인하십시오.
```yaml
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
```
또한 [개인 액세스 토큰](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT)를 사용할 수 있습니다.
---
## 지원된 사건
OpenCode는 다음 GitHub 이벤트에 의해 트리거 될 수 있습니다:
| 이벤트 타입 | Triggered by | 상세 |
| ----------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `issue_comment` | 발행 또는 PR에 대한 의견 | 멘션 `/opencode` 또는 `/oc` 당신의 의견. OpenCode는 컨텍스트를 읽고, 지점을 만들 수 있습니다, 열린 PR, 또는 대답. ·
| `pull_request_review_comment` | PR의 특정 코드 라인에 대한 의견 | Mention `/opencode` 또는 `/oc` 코드 검토 중. OpenCode는 파일 경로, 줄 번호 및 diff 컨텍스트를 수신합니다. ·
| `issues` | 이슈가 열리고 편집되었습니다 | 이슈가 생성되거나 수정될 때 자동으로 OpenCode를 트리거합니다. `prompt` 입력이 필요합니다. |
| `pull_request` | PR 오픈 또는 업데이트 | PR이 열릴 때 자동 트리거 OpenCode 자동 리뷰에 대한 유용한 정보 |
| `schedule` | 크론 기반 일정 | 일정에 오픈코드를 실행합니다. `prompt` 입력을 요구합니다. 출력 로그 및 PR에 간다 (댓글이 없습니다). |
| `workflow_dispatch` | GitHub UI에서 수동 트리거 | 액션 탭을 통해 까다로운 Trigger OpenCode. `prompt` 입력을 요구합니다. 출력 로그 및 PR에 간다. |
### 일정 예
자동화된 작업을 수행하는 일정에 OpenCode를 실행:
```yaml title=".github/workflows/opencode-scheduled.yml"
name: Scheduled OpenCode Task
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 9am UTC
jobs:
opencode:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review the codebase for any TODO comments and create a summary.
If you find issues worth addressing, open an issue to track them.
```
예정된 이벤트의 경우, `prompt` 입력은 **필요 ** 이후의 지시를 추출할 수 없습니다. 사용자 컨텍스트 없이 실행되는 워크플로우는 권한 확인을 위해, 워크플로우는 `contents: write`와 `pull-requests: write`를 부여해야 하며, OpenCode가 지점이나 PR을 만들게 됩니다.
---
## Pull 요청 예제
자동 검토 PR 때 그들은 열려있거나 업데이트 :
```yaml title=".github/workflows/opencode-review.yml"
name: opencode-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: read
issues: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
model: anthropic/claude-sonnet-4-20250514
use_github_token: true
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
`pull_request` 이벤트의 경우 `prompt`가 제공되지 않은 경우, 풀 요청을 검토하는 OpenCode 기본값.
---
### 문제 부족 예제
자동으로 새로운 문제를 삼는다. 이 예제는 스팸을 줄이기 위해 30 일 이상 계정 필터 :
```yaml title=".github/workflows/opencode-triage.yml"
name: Issue Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Check account age
id: check
uses: actions/github-script@v7
with:
script: |
const user = await github.rest.users.getByUsername({
username: context.payload.issue.user.login
});
const created = new Date(user.data.created_at);
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
return days >= 30;
result-encoding: string
- uses: actions/checkout@v6
if: steps.check.outputs.result == 'true'
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
if: steps.check.outputs.result == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review this issue. If there's a clear fix or relevant docs:
- Provide documentation links
- Add error handling guidance for code examples
Otherwise, do not comment.
```
`issues` 사건을 위해, `prompt` 입력은 ** 필요 ** 거기에서 지시를 추출하는 코멘트가 없습니다.
---
## 사용자 정의 프롬프트
OpenCode의 작업 흐름을 사용자 정의하는 기본 프롬프트를 부여합니다.
```yaml title=".github/workflows/opencode.yml"
- uses: anomalyco/opencode/github@latest
with:
model: anthropic/claude-sonnet-4-5
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
이것은 특정한 검토 기준, 기호화 기준, 또는 당신의 프로젝트에 관련된 초점 지역을 enforcing를 위해 유용합니다.
---
## 예제
GitHub에서 OpenCode를 사용할 수있는 몇 가지 예입니다.
- **문제 설명**
GitHub 문제에서 이 의견 추가.
```
/opencode explain this issue
```
OpenCode는 모든 코멘트를 포함하여 전체 스레드를 읽고, 명확한 설명과 대답.
- **문제**
GitHub 문제에서:
```
/opencode fix this
```
OpenCode는 새로운 지점을 만들 것이며 변경 사항을 실행하고 PR을 변경합니다.
-**Review PR 및 변경 사항**
GitHub PR에 다음 댓글을 남겨주세요.
```
Delete the attachment from S3 when the note is removed /oc
```
OpenCode는 요청한 변경을 구현하고 동일한 PR에 커밋합니다.
- ** 특정 코드 라인**
PR의 "Files" 탭의 코드 라인에 직접 댓글을 남겨주세요. OpenCode는 파일, 줄 번호 및 diff 컨텍스트를 자동으로 감지하여 정확한 응답을 제공합니다.
```
[Comment on specific lines in Files tab]
/oc add error handling here
```
특정 라인에 대한 의견이 있을 때, OpenCode는 다음과 같습니다.
- 검토되는 정확한 파일
- 코드의 특정 라인
- 주변 diff 컨텍스트
- 라인 번호 정보
파일 경로 또는 라인 번호를 수동으로 지정하지 않고 더 많은 대상 요청을 허용합니다.

View File

@@ -0,0 +1,195 @@
---
title: GitLab
description: Use OpenCode in GitLab issues and merge requests.
---
OpenCode는 GitLab CI/CD 파이프라인 또는 GitLab Duo를 통해 GitLab 워크플로우와 통합됩니다.
두 경우, OpenCode는 GitLab runners에서 실행됩니다.
---
#GitLab CI 소개
OpenCode는 일반 GitLab 파이프라인에서 작동합니다. [CI 구성품](https://docs.gitlab.com/ee/ci/components/)로 파이프라인에 구축할 수 있습니다.
여기에서 우리는 OpenCode에 대한 커뮤니티 생성 CI / CD 구성품을 사용하고 있습니다. [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
---
### 특징
- **일당 사용자 지정 구성 사용**: 사용자 정의 구성 디렉토리와 OpenCode 구성, 예를 들어 `./config/#custom-directory`는 OpenCode invocation 당 활성화하거나 비활성화 할 수 있습니다.
- ** 최소 설정**: CI 구성 요소는 OpenCode를 배경으로 설정하면 OpenCode 구성과 초기 프롬프트를 만들 필요가 있습니다.
- **Flexible**: CI 구성 요소는 여러 입력을 지원합니다.
---
## 설정
1. OpenCode 인증 JSON을 **Settings** > **CI/CD** > **Variables**에서 파일 유형 CI 환경 변수로 저장하십시오. "Masked and hidden"로 표시하십시오.
2. `.gitlab-ci.yml` 파일에 뒤에 추가하십시오.
```yaml title=".gitlab-ci.yml"
include:
- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
inputs:
config_dir: ${CI_PROJECT_DIR}/opencode-config
auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
command: optional-custom-command
message: "Your prompt here"
```
더 많은 입력 및 사용 사례 [docs를 체크 아웃] (https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) 이 구성 요소에 대한.
---
## GitLab 듀오
OpenCode는 GitLab 워크플로우와 통합됩니다.
코멘트에 Mention `@opencode`, OpenCode는 GitLab CI 파이프라인 내에서 작업을 실행합니다.
---
### 특징
- **문제**: OpenCode가 문제점을 보고 당신을 설명합니다.
- **Fix 및 구현 **: 이슈를 수정하거나 기능을 구현하려면 OpenCode에 문의하십시오.
새로운 지점을 만들고 변화를 병합 요청을 제기합니다.
- **Secure**: OpenCode는 GitLab runners에서 실행됩니다.
---
## 설정
OpenCode는 GitLab CI/CD 파이프라인에서 실행되며, 여기서 설정해야 할 일은 다음과 같습니다.
:::tip
[**GitLab docs**](https://docs.gitlab.com/user/duo agent platform/agent assistant/) 를 체크 아웃하십시오.
:::
1. GitLab 환경 설정
2. CI/CD 설치
3. AI 모형 공급자 API 열쇠를 얻으십시오
4. 서비스 계정 만들기
5. CI/CD 변수 구성
6. Flow config 파일을 만들려면 다음과 같습니다.
<details>
<summary>Flow configuration</summary>
```yaml
image: node:22-slim
commands:
- echo "Installing opencode"
- npm install --global opencode-ai
- echo "Installing glab"
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
- apt-get install --yes glab
- echo "Configuring glab"
- echo $GITLAB_HOST
- echo "Creating OpenCode auth configuration"
- mkdir --parents ~/.local/share/opencode
- |
cat > ~/.local/share/opencode/auth.json << EOF
{
"anthropic": {
"type": "api",
"key": "$ANTHROPIC_API_KEY"
}
}
EOF
- echo "Configuring git"
- git config --global user.email "opencode@gitlab.com"
- git config --global user.name "OpenCode"
- echo "Testing glab"
- glab issue list
- echo "Running OpenCode"
- |
opencode run "
You are an AI assistant helping with GitLab operations.
Context: $AI_FLOW_CONTEXT
Task: $AI_FLOW_INPUT
Event: $AI_FLOW_EVENT
Please execute the requested task using the available GitLab tools.
Be thorough in your analysis and provide clear explanations.
<important>
Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
</important>
"
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
- echo "Checking for git changes and pushing if any exist"
- |
if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
echo "Git changes detected, adding and pushing..."
git add .
if git diff --cached --quiet; then
echo "No staged changes to commit"
else
echo "Committing changes to branch: $CI_WORKLOAD_REF"
git commit --message "Codex changes"
echo "Pushing changes up to $CI_WORKLOAD_REF"
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
echo "Changes successfully pushed"
fi
else
echo "No git changes detected, skipping push"
fi
variables:
- ANTHROPIC_API_KEY
- GITLAB_TOKEN_OPENCODE
- GITLAB_HOST
```
</details>
자세한 지침에 대한 [GitLab CLI Agent docs](https://docs.gitlab.com/user/duo agent platform/agent assistant/)를 참조할 수 있습니다.
---
### 예제
다음은 GitLab에서 OpenCode를 사용할 수있는 몇 가지 예입니다.
:::tip
`@opencode`보다 다른 트리거 구문을 사용할 수 있습니다.
:::
- **문제 설명**
GitLab 문제에서이 코멘트를 추가하십시오.
```
@opencode explain this issue
```
OpenCode는 문제와 대답을 명확하게 설명합니다.
- **문제**
GitLab 문제에서, 말한다:
```
@opencode fix this
```
OpenCode는 새로운 지점을 만들 것이며 변경 사항을 구현하고 변경 사항을 병합 요청을 엽니다.
- **Review 병합 요청**
GitLab 병합 요청에 대한 다음 의견을 남겨주세요.
```
@opencode review this merge request
```
OpenCode는 병합 요청을 검토하고 피드백을 제공합니다.

View File

@@ -0,0 +1,48 @@
---
title: IDE
description: The OpenCode extension for VS Code, Cursor, and other IDEs
---
OpenCode는 VS Code, Cursor, 또는 터미널을 지원하는 IDE와 통합합니다. 시작하려면 터미널에서 `opencode`를 실행하십시오.
---
## 사용법
-**Quick Launch**: `Cmd+Esc` (Mac) 또는 `Ctrl+Esc` (Windows/Linux)를 사용하여 균열 단자 전망에 OpenCode를 열거나 기존 터미널 세션을 이미 실행하면 됩니다.
-**New Session**: `Cmd+Shift+Esc` (Mac) 또는 `Ctrl+Shift+Esc` (Windows/Linux)를 사용하여 새로운 OpenCode 터미널 세션을 시작하려면 이미 열리면 됩니다. UI에서 OpenCode 버튼을 클릭합니다.
-**Context Awareness**: OpenCode로 현재 선택 또는 탭을 자동으로 공유합니다.
- ** 파일 참조 단축키 ** : 파일 참조를 삽입하려면 `Cmd+Option+K` (Mac) 또는 `Alt+Ctrl+K` (Linux / Windows)를 사용하십시오. 예를 들어, `@File#L37-42`.
---
## 설치
VS Code에 OpenCode를 설치하고 Cursor, Windsurf, VSCodium과 같은 인기있는 포크 :
1. VS 코드 열기
2. 통합 맨끝을 여십시오
3. 실행 `opencode` - 확장 자동으로 설치
당신이 TUI에서 `/editor` 또는 `/export`를 실행할 때 다른 한편에, 당신은 `export EDITOR="code --wait"`를 설정할 필요가 있을 것입니다. [Learn more](/docs/tui/#editor-setup).
---
## 수동 설치
확장 마켓 플레이스에서 **OpenCode**를 검색하고 **Install**를 클릭합니다.
---
### 문제 해결
확장이 자동으로 설치되지 않는 경우:
- 통합 터미널에서 `opencode`를 실행하는 것을 보장합니다.
- IDE용 CLI가 설치됩니다.
- VS 코드 : `code` 명령
- 커서: `cursor` 명령
- 윈드 서핑을 위해: `windsurf` 명령
- VSCodium의 경우: `codium` 명령
- 만약 `Cmd+Shift+P` (Mac) 또는 `Ctrl+Shift+P` (Windows/Linux)를 실행하고 "Shell Command: PATH"에서 'code' 명령을 설치하십시오 (또는 IDE에 해당)
- Ensure VS Code는 확장을 설치하는 권한이 있습니다.

View File

@@ -0,0 +1,359 @@
---
title: Intro
description: Get started with OpenCode.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
import config from "../../../../config.mjs"
export const console = config.console
[**OpenCode**](/)는 오픈 소스 AI 코딩 에이전트입니다. 터미널 기반 인터페이스, 데스크탑 앱 또는 IDE 확장으로 사용할 수 있습니다.
![OpenCode TUI with the opencode theme](../../../assets/lander/screenshot.png)
시작합시다.
---
### # 필수품
당신의 맨끝에 있는 OpenCode를 사용하려면, 당신은 필요로 할 것입니다:
1. 현대 맨끝 에뮬레이터는 좋아합니다:
- [WezTerm](https://wezterm.org), 크로스 플랫폼
- [Alacritty](https://alacritty.org), 크로스 플랫폼
- [Ghostty] (https://ghostty.org), 리눅스 및 macOS
- [Kitty](https://sw.kovidgoyal.net/kitty/), 리눅스 및 macOS
2. 사용하려는 LLM 공급자를 위한 API 열쇠.
---
## 설치
OpenCode를 설치하는 가장 쉬운 방법은 설치 스크립트를 통해 입니다.
```bash
curl -fsSL https://opencode.ai/install | bash
```
다음 명령으로 설치할 수도 있습니다:
- ** Node.js** 사용
<Tabs>
<TabItem label="npm">
```bash
npm install -g opencode-ai
```
</TabItem>
<TabItem label="Bun">
```bash
bun install -g opencode-ai
```
</TabItem>
<TabItem label="pnpm">
```bash
pnpm install -g opencode-ai
```
</TabItem>
<TabItem label="Yarn">
```bash
yarn global add opencode-ai
```
</TabItem>
</Tabs>
- ** macOS 및 Linux에서 홈 Brew 사용 **
```bash
brew install anomalyco/tap/opencode
```
> 최신 릴리스를 위해 OpenCode 탭을 사용하는 것이 좋습니다. 공식 `brew install opencode` 공식은 Homebrew 팀에 의해 유지되고 더 자주 업데이트됩니다.
- **Ar Linux에서 Paru를 사용 **
```bash
paru -S opencode-bin
```
#### 윈도우
:::tip[추천: WSL 사용]
Windows에서 최고의 경험을 위해 [Windows Subsystem for Linux (WSL)](/docs/windows-wsl)를 사용하는 것이 좋습니다. OpenCode의 기능으로 더 나은 성능과 전체 호환성을 제공합니다.
:::
- ** 초콜릿 **
```bash
choco install opencode
```
- ** Scoop를 사용 **
```bash
scoop install opencode
```
- ** NPM **
```bash
npm install -g opencode-ai
```
- **매거진**
```bash
mise use -g github:anomalyco/opencode
```
- ** Docker 사용**
```bash
docker run -it --rm ghcr.io/anomalyco/opencode
```
Bun을 사용하여 Windows에서 OpenCode 설치 지원은 현재 진행 중입니다.
[Releases](https://github.com/anomalyco/opencode/releases)에서 이진을 할 수도 있습니다.
---
## 구성
OpenCode를 사용하면 API 키를 구성하여 LLM 공급자를 사용할 수 있습니다.
LLM 공급자를 사용하는 새로운 경우, [OpenCode Zen](/docs/zen)를 사용하는 것이 좋습니다.
OpenCode에 의해 테스트 및 확인 된 모델의 큐레이터 목록입니다.
팀.
1. TUI에서 `/connect` 명령을 실행하고, opencode를 선택하고, [opencode.ai/auth](https://opencode.ai/auth)에 머리를 선택합니다.
```txt
/connect
```
2. 로그인, 청구 세부 정보를 추가하고 API 키를 복사하십시오.
3. API 키를 붙여.
```txt
┌ API key
└ enter
```
또는 다른 공급자 중 하나를 선택할 수 있습니다. [더 알아보기](/docs/providers#directory).
---
## 초기화
이제 공급자를 구성했습니다. 프로젝트로 이동할 수 있습니다.
일하고 싶습니다.
```bash
cd /path/to/project
```
OpenCode를 실행합니다.
```bash
opencode
```
다음, 다음 명령을 실행하여 프로젝트의 OpenCode를 초기화합니다.
```bash frame="none"
/init
```
OpenCode를 사용하여 프로젝트를 분석하고 `AGENTS.md` 파일을 만들 수 있습니다.
프로젝트 루트.
:::tip
프로젝트의 `AGENTS.md` 파일을 Git에 투입해야 합니다.
:::
이 도움말 OpenCode는 프로젝트 구조와 코딩 패턴을 이해
사용.
---
## 사용법
OpenCode를 사용하여 프로젝트에 작업할 준비가 되어 있습니다. 자주 묻는 질문
모두!
AI 코딩 에이전트를 사용하는 새로운 경우, 여기에 할 수있는 몇 가지 예입니다
도움.
---
## 질문
Codebase를 설명하기 위해 OpenCode를 요청할 수 있습니다.
:::tip
`@` 키를 사용하여 프로젝트에서 파일을 검색합니다.
:::
```txt frame="none" "@packages/functions/src/api/index.ts"
How is authentication handled in @packages/functions/src/api/index.ts
```
이것은 당신이 작동하지 않은 코드베이스의 일부가 있다면 도움이된다.
---
### 추가 기능
프로젝트에 새로운 기능을 추가하려면 OpenCode를 요청할 수 있습니다. 우리는 먼저 계획을 만들 것을 묻는 것이 좋습니다.
1. **플랜을 선택 **
OpenCode는 Plan mode 로 변경할 수 있는 능력을 비활성화하고
대신 제안 how 그것은 기능을 구현할 것입니다.
**Tab** 키를 사용하여 전환합니다. 오른쪽 하단에 있는 이 지표를 볼 수 있습니다.
```bash frame="none" title="Switch to Plan mode"
<TAB>
```
이제 우리가해야 할 일을 설명합니다.
```txt frame="none"
When a user deletes a note, we'd like to flag it as deleted in the database.
Then create a screen that shows all the recently deleted notes.
From this screen, the user can undelete a note or permanently delete it.
```
당신이 원하는 것을 이해하기 위해 OpenCode를 충분히 세부 정보를 제공하려는. 그것은 도움
팀의 주니어 개발자에게 이야기하고 싶습니다.
:::tip
OpenCode를 많은 컨텍스트와 예제를 제공하여 당신이 무엇을 이해하는 데 도움이
이름 \*
:::
2. **플랜에 대해서 **
플랜을 제공하면 피드백을 제공하거나 자세한 내용을 추가 할 수 있습니다.
```txt frame="none"
We'd like to design this new screen using a design I've used before.
[Image #1] Take a look at this image and use it as a reference.
```
:::tip
단말에 이미지를 드래그하고 드롭하여 프롬프트에 추가합니다.
:::
OpenCode는 어떤 이미지를 스캔할 수 있습니다. 당신은 할 수
이 작업을 수행하고 끝으로 이미지를 삭제합니다.
3. ** 기능 구축 **
플랜으로 편안하게 느끼면 Build mode by
**Tab** 키를 다시 입력합니다.
```bash frame="none"
<TAB>
```
그리고 변경을 요청합니다.
```bash frame="none"
Sounds good! Go ahead and make the changes.
```
---
### 변경
더 똑바른 변화를 위해, 당신은 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
handled in the /notes route in @packages/functions/src/notes.ts and implement
the same logic in @packages/functions/src/settings.ts
```
좋은 양의 세부 사항을 제공 하려면 OpenCode가 올바른
이름 \*
---
### Undo 변경
OpenCode를 호출하면 변경 사항을 만들 수 있습니다.
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
그러나 당신이 원하는 것은 아닙니다. ** 변경할 수 없습니다 **
`/undo` 명령을 사용하여.
```bash frame="none"
/undo
```
OpenCode는 이제 당신이 만든 변경을 반전하고 원래 메시지를 표시
다시.
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
여기에서 당신은 신속하고 다시 시도 OpenCode를 요청할 수 있습니다.
:::tip
`/undo`를 여러 번 실행할 수 있습니다.
:::
또는 \*\* `/redo` 명령을 사용하여 변경할 수 있습니다.
```bash frame="none"
/redo
```
---
## 공유
OpenCode와 나눈 대화는 [팀과 공유](/docs/share)할 수 있습니다.
```bash frame="none"
/share
```
현재 대화에 대한 링크를 만들고 클립보드에 복사합니다.
:::note
대화는 기본적으로 공유되지 않습니다.
:::
여기 [example 대화](https://opencode.ai/s/4XP1fce5) 는 OpenCode 입니다.
---
## 사용자 정의
그리고 그게 다야! 이제 OpenCode를 사용하여 프로입니다.
자신의 것을 만들기 위해, 우리는 [themes](/docs/themes), [keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands), 또는 [OpenCode config](/docs/config)와 함께 연주하는 것을 추천합니다.

View File

@@ -0,0 +1,192 @@
---
title: Keybinds
description: Customize your keybinds.
---
OpenCode는 OpenCode config를 통해 사용자 정의 할 수있는 keybinds 목록을 가지고 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"leader": "ctrl+x",
"app_exit": "ctrl+c,ctrl+d,<leader>q",
"editor_open": "<leader>e",
"theme_list": "<leader>t",
"sidebar_toggle": "<leader>b",
"scrollbar_toggle": "none",
"username_toggle": "none",
"status_view": "<leader>s",
"tool_details": "none",
"session_export": "<leader>x",
"session_new": "<leader>n",
"session_list": "<leader>l",
"session_timeline": "<leader>g",
"session_fork": "none",
"session_rename": "none",
"session_share": "none",
"session_unshare": "none",
"session_interrupt": "escape",
"session_compact": "<leader>c",
"session_child_cycle": "<leader>right",
"session_child_cycle_reverse": "<leader>left",
"session_parent": "<leader>up",
"messages_page_up": "pageup,ctrl+alt+b",
"messages_page_down": "pagedown,ctrl+alt+f",
"messages_line_up": "ctrl+alt+y",
"messages_line_down": "ctrl+alt+e",
"messages_half_page_up": "ctrl+alt+u",
"messages_half_page_down": "ctrl+alt+d",
"messages_first": "ctrl+g,home",
"messages_last": "ctrl+alt+g,end",
"messages_next": "none",
"messages_previous": "none",
"messages_copy": "<leader>y",
"messages_undo": "<leader>u",
"messages_redo": "<leader>r",
"messages_last_user": "none",
"messages_toggle_conceal": "<leader>h",
"model_list": "<leader>m",
"model_cycle_recent": "f2",
"model_cycle_recent_reverse": "shift+f2",
"model_cycle_favorite": "none",
"model_cycle_favorite_reverse": "none",
"variant_cycle": "ctrl+t",
"command_list": "ctrl+p",
"agent_list": "<leader>a",
"agent_cycle": "tab",
"agent_cycle_reverse": "shift+tab",
"input_clear": "ctrl+c",
"input_paste": "ctrl+v",
"input_submit": "return",
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
"input_move_left": "left,ctrl+b",
"input_move_right": "right,ctrl+f",
"input_move_up": "up",
"input_move_down": "down",
"input_select_left": "shift+left",
"input_select_right": "shift+right",
"input_select_up": "shift+up",
"input_select_down": "shift+down",
"input_line_home": "ctrl+a",
"input_line_end": "ctrl+e",
"input_select_line_home": "ctrl+shift+a",
"input_select_line_end": "ctrl+shift+e",
"input_visual_line_home": "alt+a",
"input_visual_line_end": "alt+e",
"input_select_visual_line_home": "alt+shift+a",
"input_select_visual_line_end": "alt+shift+e",
"input_buffer_home": "home",
"input_buffer_end": "end",
"input_select_buffer_home": "shift+home",
"input_select_buffer_end": "shift+end",
"input_delete_line": "ctrl+shift+d",
"input_delete_to_line_end": "ctrl+k",
"input_delete_to_line_start": "ctrl+u",
"input_backspace": "backspace,shift+backspace",
"input_delete": "ctrl+d,delete,shift+delete",
"input_undo": "ctrl+-,super+z",
"input_redo": "ctrl+.,super+shift+z",
"input_word_forward": "alt+f,alt+right,ctrl+right",
"input_word_backward": "alt+b,alt+left,ctrl+left",
"input_select_word_forward": "alt+shift+f,alt+shift+right",
"input_select_word_backward": "alt+shift+b,alt+shift+left",
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
"history_previous": "up",
"history_next": "down",
"terminal_suspend": "ctrl+z",
"terminal_title_toggle": "none",
"tips_toggle": "<leader>h",
"display_thinking": "none"
}
}
```
---
## 리더 키
OpenCode는 대부분의 keybinds에 대한 `leader` 키를 사용합니다. 이것은 당신의 맨끝에 있는 충돌을 피합니다.
기본적으로 `ctrl+x`는 리더 키이며 대부분의 작업은 리더 키를 먼저 누르고 단축키를 누릅니다. 예를 들어, 새 세션을 시작하려면 먼저 `ctrl+x`를 누르고 `n`를 누릅니다.
당신은 당신의 keybinds를 위한 지도자 열쇠를 사용할 필요가 없습니다 그러나 우리는 이렇게 추천합니다.
---
## 비활성화 keybind
"none"의 값으로 구성에 키를 추가하여 keybind를 비활성화 할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"session_compact": "none"
}
}
```
---
## 데스크탑 프롬프트 단축키
OpenCode 데스크톱 앱 프롬프트 입력은 텍스트 편집을 위한 일반적인 Readline/Emacs-style 단축키를 지원합니다. 이들은 내장되어 있으며 현재 `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` | 팝오버를 취소 / 응답 취소 |
---
## 시프트+ 이름 *
몇몇 맨끝은 기본적으로 입력한 modifier 열쇠를 보내지 않습니다. `Shift+Enter`를 탈출 순서로 보낼 터미널을 구성해야 할 수 있습니다.
### 윈도우 터미널
`settings.json`를 엽니다:
```
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
```
루트 레벨 `actions` 배열에 이것을 추가하십시오:
```json
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
루트 레벨 `keybindings` 배열에 이것을 추가하십시오:
```json
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
파일을 저장하고 Windows 터미널을 다시 시작하거나 새 탭을 엽니 다.

View File

@@ -0,0 +1,188 @@
---
title: LSP Servers
description: OpenCode integrates with your LSP servers.
---
OpenCode는 언어 서버 프로토콜 (LSP)과 통합하여 LLM은 코드베이스와 상호 작용합니다. 그것은 LLM에 피드백을 제공하기 위해 진단을 사용합니다.
---
## 내장
OpenCode는 인기있는 언어로 여러 내장 LSP 서버와 함께 제공됩니다.
| 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` 명령 |
| 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 | 루아 사업용 자동설치 |
| nixd | .nix | `nixd` 명령 가능 |
| ocaml-lsp | .ml, .mli | `ocamllsp` 명령 가능 |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ct, .vue, .astro, .svelte | 프로젝트의 `oxlint` 신뢰성 |
| PHP intelephense | .php | PHP 프로젝트 자동 설치 |
| 프리즘 | .prisma | `prisma` 명령 가능 |
| pyright | .py, .pyi | `pyright` 의존성 설치 |
| 루비-lsp(rubocop) | .rb, .rake, .gemspec, .ru | `ruby` 및 `gem` 명령 사용 가능 |
| 녹 | .rs | `rust-analyzer` 명령 가능 |
| sourcekit-lsp | .swift, .objc, .objcpp | `swift` 설치 (MacOS의 `xcode`) |
| svelte | .svelte | Svelte 프로젝트 자동 설치 |
| 지형 | .tf, .tfvars | GitHub 릴리스의 자동 설치 |
| 작문 | .typ, .typc | GitHub 릴리스의 자동 설치 |
인가정보 | .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 서버는 위의 파일 확장자 중 하나가 감지되고 요구 사항은 자동으로 활성화됩니다.
:::note
`OPENCODE_DISABLE_LSP_DOWNLOAD` 환경 변수를 `true`로 설정하여 자동 LSP 서버 다운로드를 비활성화 할 수 있습니다.
:::
---
## 그것이 작동하는 방법
opencode가 파일을 열 때, 그것은:
1. 모든 활성화된 LSP 서버에 대한 파일 확장을 확인합니다.
2. 이미 실행되지 않은 경우 적절한 LSP 서버를 시작합니다.
---
## 구성
오픈코드 설정에서 `lsp` 섹션을 통해 LSP 서버를 사용자 정의할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}
```
각 LSP 서버는 다음을 지원합니다:
| 재산 | 유형 | 묘사 |
| ---------------- | -------- | ------------------------------------------------- |
| `disabled` | 불린 | LSP 서버를 비활성화하려면 `true`로 설정 |
| `command` | 문자열[] | LSP 서버를 시작하는 명령 |
| `extensions` | string[] | 이 LSP 서버 확장 |
| `env` | 객체 | 서버 시작시 설정할 환경 변수 |
| `initialization` | 객체 | LSP 서버에 보내는 초기화 옵션 |
몇 가지 예제를 살펴 보자.
---
## 환경 변수
`env` 속성을 사용하여 LSP 서버를 시작할 때 환경 변수를 설정하십시오.
```json title="opencode.json" {5-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}
```
---
### 초기화 옵션
`initialization` 속성을 사용하여 초기화 옵션을 LSP 서버에 전달합니다. 이들은 LSP `initialize` 요청에 보내진 서버 별 설정입니다.
```json title="opencode.json" {5-9}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
```
:::note
초기화 옵션은 LSP 서버가 다릅니다. LSP 서버의 사용 가능한 옵션을 확인하세요.
:::
---
### LSP 서버를 해제
전 세계적으로 ** 모든** LSP 서버를 비활성화하려면 `lsp`를 `false`로 설정하십시오.
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}
```
** 특정** LSP 서버를 비활성화하려면 `disabled`를 `true`로 설정하십시오.
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
```
---
## 사용자 정의 LSP 서버
명령 및 파일 확장명을 지정하여 사용자 정의 LSP 서버를 추가할 수 있습니다.
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
```
---
## 추가 정보
### PHP 인텔
PHP를 Intelephense는 라이센스 키를 통해 프리미엄 기능을 제공합니다. 텍스트 파일에서 키 (만)를 배치하여 라이센스 키를 제공 할 수 있습니다.
- macOS/리눅스에서: `$HOME/intelephense/licence.txt`
- Windows에서: `%USERPROFILE%/intelephense/licence.txt`
파일에는 추가 내용이 없습니다.

View File

@@ -0,0 +1,511 @@
---
title: MCP servers
description: Add local and remote MCP tools.
---
Model Context Protocol , 또는 MCP를 사용하여 OpenCode에 외부 도구를 추가할 수 있습니다. OpenCode는 로컬 및 원격 서버를 모두 지원합니다.
추가되면 MCP 도구는 내장 도구와 함께 LLM에 자동으로 사용할 수 있습니다.
---
#### 동굴
MCP 서버를 사용할 때 상황에 추가합니다. 도구가 많이 있으면 신속하게 추가 할 수 있습니다. 그래서 우리는 당신이 사용하는 MCP 서버와 주의를 기울여야 합니다.
:::tip
MCP 서버는 귀하의 컨텍스트에 추가하므로, 활성화할 수 있는 것을 주의해야 합니다.
:::
GitHub MCP 서버와 같은 특정 MCP 서버는 많은 토큰을 추가하고 컨텍스트 제한을 쉽게 초과 할 수 있습니다.
---
## 사용 가능
`mcp`에서 MCP 서버를 정의할 수 있습니다. 각 MCP를 고유 이름으로 추가합니다. LLM을 프롬프트할 때 MCP를 참조할 수 있습니다.
```jsonc title="opencode.jsonc" {6}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"name-of-mcp-server": {
// ...
"enabled": true,
},
"name-of-other-mcp-server": {
// ...
},
},
}
```
`enabled`를 `false`로 설정하여 서버를 비활성화 할 수 있습니다. config에서 제거하지 않고 서버를 일시적으로 비활성화하려는 경우 유용합니다.
---
### 원격 디폴트 overriding
조직은 `.well-known/opencode` 엔드포인트를 통해 기본 MCP 서버를 제공 할 수 있습니다. 이 서버는 기본적으로 비활성화 될 수 있으며 사용자가 필요한 것들에 대해 선택 할 수 있습니다.
조직의 원격 설정에서 특정 서버를 활성화하려면 `enabled: true`로 로컬 구성에 추가하십시오.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
로컬 설정 값은 원격 기본값을 무시합니다. 자세한 내용은 [config precedence](/docs/config#precedence-order)를 참조하십시오.
---
## 지역
MCP 객체 내에서 `type`를 `"local"`로 사용하는 로컬 MCP 서버를 추가하십시오.
```jsonc title="opencode.jsonc" {15}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp-server": {
"type": "local",
// Or ["bun", "x", "my-mcp-command"]
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true,
"environment": {
"MY_ENV_VAR": "my_env_var_value",
},
},
},
}
```
명령은 로컬 MCP 서버가 시작되는 방법입니다. 또한 환경 변수 목록에서 전달할 수 있습니다.
예를 들어, 테스트 [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP 서버를 추가할 수 있는 방법입니다.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp_everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
},
},
}
```
그리고 `use the mcp_everything tool`를 내 프롬프트에 추가할 수 있습니다.
```txt "mcp_everything"
use the mcp_everything tool to add the number 3 and 4
```
---
#### 옵션
로컬 MCP 서버를 구성하는 모든 옵션이 있습니다.
| 옵션 | 유형 |필수 | 설명 |
| ------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `type` | 문자열 | Y | MCP 서버 연결 유형은 `"local"`. |
| `command` | Array | Y | MCP 서버를 실행하는 명령과 인수. |
| `environment` | 개체 | | 서버 실행시 설정하는 환경 변수
| `enabled` | Boolean | | 시동에서 MCP 서버 사용 가능 |
| `timeout` | Number | | MCP 서버에서 태핑툴을 위한 타임아웃 기본 5000 (5 초). |
---
## 리모트
`type`를 `"remote"`로 설정하여 원격 MCP 서버를 추가하십시오.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"enabled": true,
"headers": {
"Authorization": "Bearer MY_API_KEY"
}
}
}
}
```
`url`는 원격 MCP 서버의 URL이며 `headers` 옵션으로 헤더 목록에서 전달할 수 있습니다.
---
#### 옵션
| 옵션 | 유형 |필수 | 설명 |
| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `type` | 문자열 | Y | MCP 서버 연결 유형은 `"remote"`. |
| `url` | 문자열 | Y | 원격 MCP 서버의 URL. |
| `enabled` | Boolean | | 시동에서 MCP 서버 사용 가능 |
| `headers` | 개체 | | 헤드러는 요청으로 보내드립니다. |
| `oauth` | 개체 | | OAuth 인증 구성 [OAuth](#oauth) 아래의 섹션을 참조하십시오. |
| `timeout` | Number | | MCP 서버에서 태핑툴을 위한 타임아웃 기본 5000 (5 초). |
---
## 오아우트
OpenCode는 원격 MCP 서버에 대한 OAuth 인증을 자동으로 처리합니다. 서버가 인증이 필요할 때, OpenCode는:
1. 401 응답을 검출하고 OAuth 흐름을 시작
2. **Dynamic Client 등록 (RFC 7591) ** 서버에서 지원되는 경우
3. 미래의 요청에 대해 안전하게 보관 토큰
---
## 자동
대부분의 OAuth-enabled MCP 서버를 위해, 특별한 윤곽은 필요하지 않습니다. 원격 서버를 구성:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp"
}
}
}
```
서버가 인증이 필요한 경우, OpenCode는 먼저 사용하려고 할 때 인증됩니다. 그렇지 않다면, `opencode mcp auth <server-name>`를 사용하여 [manually 방아쇠](#authenticating)을 유발할 수 있습니다.
---
### 사전등록
MCP 서버 공급자의 클라이언트 자격이있는 경우, 구성 할 수 있습니다.
```json title="opencode.json" {7-11}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {
"clientId": "{env:MY_MCP_CLIENT_ID}",
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
"scope": "tools:read tools:execute"
}
}
}
}
```
---
### 인증
인증 또는 자격 증명을 수동으로 트리거 할 수 있습니다.
특정 MCP 서버와 인증:
```bash
opencode mcp auth my-oauth-server
```
모든 MCP 서버를 나열하고 auth 상태:
```bash
opencode mcp list
```
저장된 자격 제거:
```bash
opencode mcp logout my-oauth-server
```
`mcp auth` 명령은 사용자의 브라우저를 엽니다. `~/.local/share/opencode/mcp-auth.json`에서 토큰을 안전하게 저장합니다.
---
### # OAuth를 해제
서버의 자동 OAuth를 비활성화하려는 경우 (예를 들어, 대신 API 키를 사용하는 서버), `oauth`를 `false`로 설정:
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-api-key-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}"
}
}
}
}
```
---
#### OAuth 옵션
| 옵션 | 유형 | 설명 |
| -------------- | --------------- | -------------------------------------------------------------------------------- |
| `oauth` | 개체 \| false | OAuth config object, 또는 `false`를 비활성화하는 OAuth 자동검출. ·
| `clientId` | 문자열 | OAuth 클라이언트 ID. 제공되지 않은 경우, 동적 클라이언트 등록 시도됩니다. ·
| `clientSecret` | String | OAuth 클라이언트 비밀, 허가서 서버가 필요한 경우. |
| `scope` | String | OAuth 범위는 인증 중입니다. |
# # # # # # 디버깅
원격 MCP 서버가 인증에 실패하면 다음과 같은 문제를 진단 할 수 있습니다.
```bash
# View auth status for all OAuth-capable servers
opencode mcp auth list
# Debug connection and OAuth flow for a specific server
opencode mcp debug my-oauth-server
```
`mcp debug` 명령은 현재 auth 상태를 보여 주며 HTTP 연결을 테스트하고 OAuth 발견 흐름을 시도합니다.
---
## 관리
MCP는 OpenCode의 도구로 사용할 수 있으며 내장 도구와 함께 사용할 수 있습니다. 다른 도구와 같이 OpenCode config를 통해 관리할 수 있습니다.
---
## 글로벌
이것은 당신이 활성화하거나 전 세계적으로 비활성화 할 수 있다는 것을 의미합니다.
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp-foo": false
}
}
```
우리는 또한 모든 일치 MCPs를 비활성화하는 glob 패턴을 사용할 수 있습니다.
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp*": false
}
}
```
여기에 우리는 모든 MCP를 비활성화하는 glob 패턴 `my-mcp*`를 사용합니다.
---
## 대리인 당 ##
MCP 서버의 많은 수를 가지고 있다면 에이전트 당만 활성화하고 전 세계적으로 비활성화 할 수 있습니다. 이 작업을 수행:
1. 글로벌 도구로 사용 가능.
2. [agent config](/docs/agents#tools)에서 MCP 서버를 도구로 사용할 수 있습니다.
```json title="opencode.json" {11, 14-18}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp": {
"type": "local",
"command": ["bun", "x", "my-mcp-command"],
"enabled": true
}
},
"tools": {
"my-mcp*": false
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true
}
}
}
}
```
---
### 글로브 패턴
glob 패턴은 간단한 regex globbing 패턴을 사용합니다 :
- `*`는 어떤 특성 (예를들면, `"my-mcp*"` 경기 `my-mcp_search`, `my-mcp_list`, 등)의 0개 이상 일치합니다.
- `?`는 정확히 하나의 문자 일치
- 다른 모든 문자 일치 말 그대로
:::note
MCP 서버 도구는 서버 이름으로 prefix로 등록되므로 서버의 모든 도구를 간단하게 사용할 수 있습니다.
```
"mymcpservername_*": false
```
:::
---
## 예제
다음은 일반적인 MCP 서버의 예입니다. 다른 서버에 문서를 작성하려면 PR을 제출할 수 있습니다.
---
# # # # 센트리
[Sentry MCP 서버](https://mcp.sentry.dev)를 추가하여 센트리 프로젝트와 문제와 상호 작용합니다.
```json title="opencode.json" {4-8}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
}
}
}
```
구성을 추가 한 후, Sentry로 인증:
```bash
opencode mcp auth sentry
```
브라우저 창을 열어 OAuth 흐름을 완료하고 OpenCode를 Sentry 계정에 연결하십시오.
일단 인증되면, 당신은 쿼리 문제, 프로젝트, 오류 데이터에 대한 프린트 도구를 사용할 수 있습니다.
```txt "use sentry"
Show me the latest unresolved issues in my project. use sentry
```
---
### 콘텍스트7
[Context7 MCP 서버](https://github.com/upstash/context7)을 추가하여 문서를 검색합니다.
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}
```
무료 계정으로 가입한 경우 API 키를 사용하여 더 높은 속도 제한을 얻을 수 있습니다.
```json title="opencode.json" {7-9}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
}
}
}
}
```
여기에서 우리는 당신이 `CONTEXT7_API_KEY` 환경 변수 세트가 있다는 것을 assuming입니다.
Context7 MCP 서버를 사용하여 `use context7`를 신속하게 추가하십시오.
```txt "use context7"
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
```
대안으로, 당신은이 같은 뭔가를 추가 할 수 있습니다 [AGENTS.md](/docs/rules/).
```md title="AGENTS.md"
When you need to search docs, use `context7` tools.
```
---
## Grep by Vercel에 의해
[Grep by Vercel](https://grep.app) MCP 서버를 추가하여 GitHub에서 코드 스니펫을 검색합니다.
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gh_grep": {
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}
```
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
```
대안으로, 당신은이 같은 뭔가를 추가 할 수 있습니다 [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

@@ -0,0 +1,223 @@
---
title: Models
description: Configuring an LLM provider and model.
---
OpenCode는 [AI SDK](https://ai-sdk.dev/) 및 [Models.dev](https://models.dev)를 사용하여 **75+ LLM 제공 업체**를 지원하며 로컬 모델을 실행합니다.
---
## 공급자
가장 인기 있는 공급자는 기본적으로 preloaded. `/connect` 명령을 통해 공급자를위한 자격 증명을 추가하면 OpenCode를 시작할 때 사용할 수 있습니다.
자세히 알아보기 [providers](/docs/providers).
---
## 모델 선택
공급자를 구성하면 입력하여 원하는 모델을 선택할 수 있습니다.
```bash frame="none"
/models
```
---
## 추천 모델
거기에 많은 모델이 있습니다, 새로운 모델이 매주 온다.
:::tip
우리가 추천하는 모델 중 하나를 사용하여 고려하십시오.
:::
그러나 코드와 도구 호출 모두에서 좋은 그들 중 몇 가지가있다.
다음은 OpenCode와 잘 작동하는 몇 가지 모델입니다. 특히 주문이 없습니다. (이것은 철저한 목록이 아니며 반드시 날짜까지입니다) :
- GPT의 5.2
- GPT 5.1 코덱
- 클로드 오푸스 4.5
- 클로드 Sonnet 4.5
- 소형 M2.1
- Gemini 3 프로
---
## 기본값 설정
기본 모델로 설정하려면 `model` 키를 설정할 수 있습니다.
OpenCode 설정.
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"model": "lmstudio/google/gemma-3n-e4b"
}
```
전체 ID는 `provider_id/model_id`입니다. 예를 들어, [OpenCode Zen](/docs/zen)을 사용한다면, GPT 5.1 Codex에 `opencode/gpt-5.1-codex`를 사용할 수 있습니다.
[custom Provider](/docs/providers#custom)를 구성하면 `provider_id`는 구성의 `provider` 부분에서 키이며 `model_id`는 `provider.models`에서 키입니다.
---
## 모델 구성
config를 통해 모델의 옵션을 구성할 수 있습니다.
```jsonc title="opencode.jsonc" {7-12,19-24}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"options": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
"include": ["reasoning.encrypted_content"],
},
},
},
},
"anthropic": {
"models": {
"claude-sonnet-4-5-20250929": {
"options": {
"thinking": {
"type": "enabled",
"budgetTokens": 16000,
},
},
},
},
},
},
}
```
여기에 우리는 두 개의 내장 모델에 대한 글로벌 설정을 구성 : `gpt-5`를 통해 액세스 할 때 `openai` 공급자 및 `claude-sonnet-4-20250514`는 `anthropic` 공급자를 통해 액세스 할 때.
내장 공급자 및 모델 이름은 [Models.dev](https://models.dev)에서 찾을 수 있습니다.
사용중인 에이전트에 이러한 옵션을 구성할 수 있습니다. 에이전트 구성은 여기에 모든 글로벌 옵션을 overrides. [더 알아보기](/docs/agents/#additional).
내장 된 것을 확장하는 사용자 정의 변형을 정의 할 수 있습니다. Variants는 중복 항목 생성 없이 동일한 모델을 위한 다른 설정을 구성할 수 있습니다:
```jsonc title="opencode.jsonc" {6-21}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"opencode": {
"models": {
"gpt-5": {
"variants": {
"high": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
"low": {
"reasoningEffort": "low",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
},
},
},
},
},
}
```
---
## 참배
다른 윤곽을 가진 많은 모형 지원 다수 변종. OpenCode는 인기있는 공급자를위한 기본 변형으로 배송됩니다.
## 내장 변형
OpenCode는 많은 공급자를 위한 과태 변종으로 발송합니다:
**Anthropic**:
- `high` - 높은 생각 예산 (과태)
- `max` - 최대 생각 예산
** OpenAI **:
모델에 따라 다릅니다.
- `none` - 이유 없음
- `minimal` - 미니멀 이유 노력
- `low` - 낮은 이유 노력
- `medium` - 중간 이유 노력
- `high` - 높은 이유 노력
- `xhigh` - 추가 높은 이유 노력
** 구글 **:
- `low` - 더 낮은 노력/토큰 예산
- `high` - 더 높은 노력 / 토큰 예산
:::tip
이 목록은 포괄적이지 않습니다. 다른 많은 공급자는 기본적으로 내장되어 있습니다.
:::
### 사용자 정의 변형
기존의 변형을 과도하게 할 수 있거나 자신에게 추가 할 수 있습니다.
```jsonc title="opencode.jsonc" {7-18}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"variants": {
"thinking": {
"reasoningEffort": "high",
"textVerbosity": "low",
},
"fast": {
"disabled": true,
},
},
},
},
},
},
}
```
## 사이클 변형
keybind `variant_cycle`를 사용하여 변형 사이 신속하게 전환합니다. [더 알아보기](/docs/keybinds).
---
## 로딩 모델
OpenCode가 시작될 때, 다음의 우선순위 순서에 있는 모형을 검사합니다:
1. `--model` 또는 `-m` 명령 선 깃발. 형식은 구성 파일과 동일합니다. `provider_id/model_id`.
2. OpenCode config의 모델 목록.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-20250514"
}
```
여기에 형식은 `provider/model`입니다.
3. 마지막 사용된 모형.
4. 내부 우선 순위를 사용하는 첫 번째 모델.

View File

@@ -0,0 +1,331 @@
---
title: Modes
description: Different modes for different use cases.
---
:::caution
모드는 오픈 코드 설정에서 `agent` 옵션을 통해 구성되어 있습니다. 더 보기
`mode` 옵션이 이제 비활성화되었습니다. [더 알아보기](/docs/시약).
:::
opencode의 모드는 다른 사용 사례에 대한 행동, 도구 및 프롬프트를 사용자 정의 할 수 있습니다.
그것은 두 개의 내장 모드와 함께 제공됩니다 : ** 빌드 ** 및 ** 계획 **. 사용자 정의 할 수 있습니다.
opencode config를 통해 자체를 구성합니다.
세션 중에 모드를 전환하거나 구성 파일에서 구성할 수 있습니다.
---
## 내장
opencode는 2개의 붙박이 형태로 옵니다.
---
### 빌드
빌드는 **default** 모드로 모든 도구가 활성화됩니다. 이것은 파일 운영 및 시스템 명령에 대한 전체 액세스가 필요한 개발 작업을위한 표준 모드입니다.
---
## 계획
계획 및 분석을 위해 설계된 제한 모드. 계획 모드에서 다음 도구는 기본적으로 비활성화됩니다:
- `write` - 새로운 파일을 만들 수 없습니다
- `edit` - `.opencode/plans/*.md`에 위치한 파일을 제외하고 기존 파일을 수정할 수 없습니다.
- `patch` - 패치 적용
- `bash` - 포탄 명령을 실행할 수 없습니다
이 모드는 코드를 분석하기 위해 AI를 원할 때 유용합니다. 변경 사항을 제안하거나 코드베이스에 실제 수정없이 계획을 만들 수 있습니다.
---
## 전환
Tab 키를 사용하여 세션 중에 모드를 전환할 수 있습니다. 또는 당신의 형성된 `switch_mode` keybind.
참조 : [Formatters](/docs/formatters) 코드 형식 설정에 대한 정보.
---
## 구성
내장 모드를 사용자 정의하거나 구성을 통해 자신의 만들 수 있습니다. 형태는 2가지 방법으로 형성될 수 있습니다:
### JSON 구성
`opencode.json` 설정 파일에서 모드 구성:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mode": {
"build": {
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "{file:./prompts/build.txt}",
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"model": "anthropic/claude-haiku-4-20250514",
"tools": {
"write": false,
"edit": false,
"bash": false
}
}
}
}
```
### Markdown 구성
Markdown 파일을 사용하여 모드를 정의할 수 있습니다. 그들에 게:
- 글로벌: `~/.config/opencode/modes/`
- 프로젝트: `.opencode/modes/`
```markdown title="~/.config/opencode/modes/review.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
write: false
edit: false
bash: false
---
You are in code review mode. Focus on:
- Code quality and best practices
- Potential bugs and edge cases
- Performance implications
- Security considerations
Provide constructive feedback without making direct changes.
```
Markdown 파일 이름은 모드 이름 (예 : `review.md`는 `review` 모드를 만듭니다)이됩니다.
이 구성 옵션을 자세히 살펴봅시다.
---
### 모형
`model` config를 사용하여 이 모드의 기본 모델을 무시합니다. 다른 작업에 최적화 된 다른 모델을 사용하는 데 유용합니다. 예를 들어, 계획을위한 빠른 모델, 구현을위한 더 많은 모델.
```json title="opencode.json"
{
"mode": {
"plan": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
```
---
### 온도
`temperature` config와 AI의 응답의 임의성과 창의성을 제어합니다. 더 낮은 값은 더 집중하고 세심한 응답을 만듭니다. 더 높은 값은 창의력과 가변성을 증가하면서.
```json title="opencode.json"
{
"mode": {
"plan": {
"temperature": 0.1
},
"creative": {
"temperature": 0.8
}
}
}
```
온도 값은 일반적으로 0.0에서 1.0에 배열합니다:
- **0.0-0.2**: 매우 집중하고 신중한 응답, 코드 분석 및 계획에 이상
-**0.3-0.5**: 일부 창의력과 균형 잡힌 응답, 일반 개발 작업에 좋은
- **0.6-1.0**: 더 창조적이고 다양한 응답, 뇌하수 및 탐험에 유용한
```json title="opencode.json"
{
"mode": {
"analyze": {
"temperature": 0.1,
"prompt": "{file:./prompts/analysis.txt}"
},
"build": {
"temperature": 0.3
},
"brainstorm": {
"temperature": 0.7,
"prompt": "{file:./prompts/creative.txt}"
}
}
}
```
온도가 지정되지 않은 경우, opencode는 모델별 기본 (일반적으로 0 대부분의 모델에 대한, 0.55 Qwen 모델)을 사용합니다.
---
# # # # 프롬프트
`prompt` config를 가진 이 형태를 위한 주문 체계 신속한 파일을 지정하십시오. 신속한 파일은 모드의 목적에 특정한 지시를 포함해야 합니다.
```json title="opencode.json"
{
"mode": {
"review": {
"prompt": "{file:./prompts/code-review.txt}"
}
}
}
```
이 경로는 config 파일이 있는 곳에 관계됩니다. 그래서이 작품
글로벌 opencode config 및 프로젝트 특정 구성 모두.
---
## 도구
이 모드에서는 `tools` config를 사용할 수 있습니다. `true` 또는 `false`로 설정하여 특정 도구를 활성화하거나 비활성화 할 수 있습니다.
```json
{
"mode": {
"readonly": {
"tools": {
"write": false,
"edit": false,
"bash": false,
"read": true,
"grep": true,
"glob": true
}
}
}
}
```
도구가 지정되지 않은 경우, 모든 도구는 기본적으로 활성화됩니다.
---
### 유효한 공구
여기에 모든 도구는 모드 구성을 통해 제어 할 수 있습니다.
| 도구 | 설명 |
| ----------- | ----------------------- |
| `bash` | 쉘 명령 실행 |
| `edit` | 기존 파일 수정 |
| `write` | 새 파일 만들기 |
| `read` | 읽는 파일 내용 |
| `grep` | 파일 검색 |
| `glob` | 패턴으로 찾기 |
| `list` | 디렉토리 내용 보기 |
| `patch` | 파일에 패치 적용 |
| `todowrite` | 도도 목록 관리 |
| `todoread` | 읽는 도 목록 |
| `webfetch` | 사이트 맵 |
---
## 사용자 정의 모드
구성에 추가하여 사용자 정의 모드를 만들 수 있습니다. 여기에는 두 가지 접근법이 있습니다.
### JSON 구성 사용
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"mode": {
"docs": {
"prompt": "{file:./prompts/documentation.txt}",
"tools": {
"write": true,
"edit": true,
"bash": false,
"read": true,
"grep": true,
"glob": true
}
}
}
}
```
### markdown 파일 사용
프로젝트 별 모드 또는 `~/.config/opencode/modes/`의 모드 파일을 만들 수 있습니다.
```markdown title=".opencode/modes/debug.md"
---
temperature: 0.1
tools:
bash: true
read: true
grep: true
write: false
edit: false
---
You are in debug mode. Your primary goal is to help investigate and diagnose issues.
Focus on:
- Understanding the problem through careful analysis
- Using bash commands to inspect system state
- Reading relevant files and logs
- Searching for patterns and anomalies
- Providing clear explanations of findings
Do not make any changes to files. Only investigate and report.
```
```markdown title="~/.config/opencode/modes/refactor.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.2
tools:
edit: true
read: true
grep: true
glob: true
---
You are in refactoring mode. Focus on improving code quality without changing functionality.
Priorities:
- Improve code readability and maintainability
- Apply consistent naming conventions
- Reduce code duplication
- Optimize performance where appropriate
- Ensure all tests continue to pass
```
---
### 사용 사례
다음은 다른 모드에 대한 일반적인 사용 사례입니다.
- **빌딩 모드**: 모든 도구와 함께 전체 개발 작업
- **플랜 모드**: 변화없이 분석 및 계획
-**Review 모드**: Code review with read-only access plus 문서 도구
- ** 디버그 모드**: bash 및 읽기 도구와 함께 조사에 집중
- **Docs 모드**: 파일 작업과 문서 작성하지만 시스템 명령 없음
다른 모델을 찾을 수 있습니다 다른 사용 케이스에 대 한 좋은.

View File

@@ -0,0 +1,57 @@
---
title: Network
description: Configure proxies and custom certificates.
---
OpenCode는 엔터프라이즈 네트워크 환경을 위한 표준 프록시 환경 변수 및 사용자 지정 인증서를 지원합니다.
---
## 프록시
OpenCode는 표준 프록시 환경 변수를 존중합니다.
```bash
# HTTPS proxy (recommended)
export HTTPS_PROXY=https://proxy.example.com:8080
# HTTP proxy (if HTTPS not available)
export HTTP_PROXY=http://proxy.example.com:8080
# Bypass proxy for local server (required)
export NO_PROXY=localhost,127.0.0.1
```
:::caution
TUI는 로컬 HTTP 서버와 통신합니다. routing 루프를 방지하기 위해이 연결에 대한 프록시를 우회해야합니다.
:::
[CLI 플래그](/docs/cli#run)을 사용하여 서버 포트와 호스트명을 구성할 수 있습니다.
---
### 인증
프록시가 기본 인증을 필요로 하는 경우 URL에서 자격 증명이 포함되어 있습니다.
```bash
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
```
:::caution
암호를 해독하지 마십시오. 환경 변수를 사용하거나 자격 증명 스토리지를 확보하십시오.
:::
NTLM 또는 Kerberos와 같은 고급 인증을 요구하는 프록시는 인증 방법을 지원하는 LLM Gateway를 사용하여 고려합니다.
---
## 사용자 정의 인증서
엔터프라이즈가 HTTPS 연결을 위해 사용자 정의 CA를 사용한다면, OpenCode를 사용하여 신뢰합니다.
```bash
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
```
프록시 연결과 직접 API 액세스를 위한 이 작업.

View File

@@ -0,0 +1,237 @@
---
title: Permissions
description: Control which actions require approval to run.
---
OpenCode는 주어진 동작이 자동으로 실행되는지 결정하기 위해 `permission` config를 사용하거나 차단합니다.
`v1.1.1`의 것과 같이, 유산 `tools` 불린 구성은 deprecated이고 `permission`로 합병되었습니다. 오래된 `tools` config는 여전히 뒤쪽 호환성을 위해 지원됩니다.
---
## 활동
각 권한 규칙은 다음과 같습니다:
- `"allow"` - 승인없이 실행
- `"ask"` - 승인을위한 신속한
- `"deny"` - 동작 차단
---
## 구성
글로벌 권한(`*` 포함) 및 특정 도구를 부여할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}
```
한 번에 모든 권한을 설정할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": "allow"
}
```
---
## 과립 규칙 (Object Syntax)
대부분의 권한을 위해 도구 입력을 기반으로 다른 작업을 적용 할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"npm *": "allow",
"rm *": "deny",
"grep *": "allow"
},
"edit": {
"*": "deny",
"packages/web/src/content/docs/*.mdx": "allow"
}
}
}
```
규칙은 패턴 일치에 의해 평가됩니다, ** 마지막 일치 규칙 우승 **. 일반적인 패턴은 catch-all `"*"` 규칙을 먼저 넣는 것입니다, 그리고 그 후에 더 구체적인 규칙.
## 와일드카드
Permission 본 사용 간단한 wildcard 일치:
- `*`는 어떤 성격든지의 0개 이상 일치합니다
- `?`는 정확히 하나의 문자 일치
- 다른 모든 문자 일치 말 그대로
## 홈 디렉토리 확장
`~` 또는 `$HOME`를 사용할 수 있습니다 패턴의 시작에 홈 디렉토리를 참조. 이것은 특히 유용합니다 [`external_directory`] (#external-directories) 규칙.
- `~/projects/*` -> `/Users/username/projects/*`
- `$HOME/projects/*` -> `/Users/username/projects/*`
- `~` -> `/Users/username`
## 외부 감독
`external_directory`를 사용하여 도구가 OpenCode가 시작된 작업 디렉토리 밖에 터치 경로가 호출되도록합니다. 이것은 입력 (예 : `read`, `edit`, `list`, `glob`, `glob`, `grep` 및 많은 `bash` 명령)로 경로를 수행하는 모든 도구에 적용됩니다.
홈 확장 (`~/...`와 같은) 패턴이 작성된 방법에 영향을 미칩니다. 그것은 현재의 작업 공간의 외부 경로 부분을 만들지 않습니다, 그래서 작업 디렉토리 외부 경로는 여전히 `external_directory`를 통해 허용해야합니다.
예를 들어, 이것은 `~/projects/personal/`의 모든 것에 액세스 할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
}
}
}
```
여기에 허용되는 모든 디렉토리는 현재 작업 공간과 동일한 기본값을 상속합니다. [`read` defaults to `allow`](#defaults)는 `external_directory`에서 `external_directory`의 항목에 대해 읽을 수 있습니다. 도구가 이러한 경로에 제한 될 때 명시적 규칙을 추가하십시오.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}
```
신뢰할 수있는 경로에 초점을 맞춘 목록을 유지하고 다른 도구 (예 : `bash`)에 필요한대로 추가 허용하거나 deny 규칙을 층을 설정합니다.
---
## 사용 가능한 권한
OpenCode 권한은 도구 이름에 의해 키 입력되며, 두 개의 안전 가드 :
- `read` - 파일 읽기 (파일 경로의 매칭)
- `edit` - 모든 파일 수정 (covers `edit`, `write`, `patch`, `multiedit`)
- `glob` - 파일 globbing (glob 패턴 매칭)
- `grep` - 콘텐츠 검색 ( regex 패턴 매칭)
- `list` - 디렉토리의 목록 파일 (폴더 경로 매칭)
- `bash` - 쉘 명령 실행 (`git status --porcelain`와 같은 팟 명령)
- `task` - 시약 출시 (미시 시약 유형)
- `skill` - 기술을 로딩 (기술 이름을 매칭)
- `lsp` - LSP 쿼리 실행 (현재 비 과립)
- `todoread`, `todowrite` - 토도 목록의 읽기 / 업데이트
- `webfetch` - URL을 fetching ( URL을 매칭)
- `websearch`, `codesearch` - 웹 / 코드 검색 (문자 쿼리)
- `external_directory` - 프로젝트 작업 디렉토리 외부의 도구 접촉 경로 때 트리거
- `doom_loop` - 동일한 도구 호출이 동일한 입력으로 3 번 반복 할 때 트리거
---
## 기본
아무것도 지정하지 않는 경우, OpenCode는 permissive 기본값에서 시작합니다.
- `"allow"`에 기본 권한.
- `doom_loop` 및 `external_directory` 기본적으로 `"ask"`.
- `read`는 `"allow"`이고, 그러나 `.env` 파일은 기본적으로 denied:
```json title="opencode.json"
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}
```
---
## "Ask"는 무엇입니까?
OpenCode가 승인되면 UI는 세 가지 결과를 제공합니다.
- `once` - 이 요청을 승인
- `always` - 제안 된 패턴과 일치하는 미래 요청 (현재 OpenCode 세션의 나머지)
- `reject` - 요청을 거부
`always`는 도구 (예를 들면, bash 승인 일반적으로 `git status*`와 같은 안전한 명령 접두사)에 의해 approve가 제공 될 패턴의 집합.
---
# # 에이전트
에이전트 당 권한이 부여 될 수 있습니다. 에이전트 권한은 글로벌 구성과 합병되며, 에이전트 규칙은 우선합니다. [Learn more](/docs/agents#permissions) 약 에이전트 권한.
:::note
[Granular Rules (Object Syntax)](#granular-rules-object-syntax))에 대한 자세한 패턴 매칭 예제를 참조하십시오.
:::
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "deny",
"git push *": "deny",
"grep *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "ask",
"git push *": "deny",
"grep *": "allow"
}
}
}
}
}
```
Markdown의 에이전트 권한을 구성할 수 있습니다.
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Only analyze code and suggest changes.
```
:::tip
인자와 명령에 대한 패턴 매칭을 사용합니다. `"grep *"`는 `grep pattern file.txt`를 허용하고, `"grep"`는 혼자 그것을 막을 것입니다. `git status`와 같은 명령은 기본 동작을 위해 작동하지만, 인수가 전달될 때 명시된 권한 (`"git status *"`와 같은)이 필요합니다.
:::

View File

@@ -0,0 +1,385 @@
---
title: Plugins
description: Write your own plugins to extend OpenCode.
---
플러그인은 다양한 이벤트와 사용자 정의 행동으로 후킹하여 OpenCode를 확장 할 수 있습니다. 플러그인을 만들 수 있습니다 새로운 기능을 추가, 외부 서비스와 통합, 또는 OpenCode의 기본 동작을 수정.
예를 들어, 커뮤니티에 의해 생성 된 [plugins](/docs/ecosystem#plugins)를 확인하십시오.
---
## 플러그인 사용
플러그인을로드하는 두 가지 방법이 있습니다.
---
## 현지 파일에서
플러그인 디렉토리에 JavaScript 또는 TypeScript 파일을 배치합니다.
- `.opencode/plugins/` - 프로젝트 레벨 플러그인
- `~/.config/opencode/plugins/` - 글로벌 플러그인
이 디렉토리의 파일은 자동으로 시작에로드됩니다.
---
### 부터 npm
config 파일에 npm 패키지를 지정합니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
}
```
일반 및 범위의 npm 패키지 모두 지원됩니다.
[ecosystem](/docs/ecosystem#plugins)에서 사용할 수 있는 플러그인을 찾아보세요.
---
## 플러그인이 설치되는 방법
**npm 플러그인**는 시작시 Bun을 사용하여 자동으로 설치됩니다. 패키지와 그들의 의존성은 `~/.cache/opencode/node_modules/`에서 캐시됩니다.
**Local 플러그인 ** 플러그인 디렉토리에서 직접로드됩니다. 외부 패키지를 사용하려면 구성 디렉토리 내 `package.json`를 작성해야 합니다 ([Dependencies](#dependencies)), 또는 플러그인을 npm에 게시하고 [config에 추가](/docs/config#plugins).
---
## 짐 순서
플러그인은 모든 소스에서로드되며 모든 후크는 순서대로 실행됩니다. 짐 순서는:
1. 글로벌 구성 (`~/.config/opencode/opencode.json`)
2. 프로젝트 구성 (`opencode.json`)
3. 글로벌 플러그인 디렉토리 (`~/.config/opencode/plugins/`)
4. 프로젝트 플러그인 디렉토리 (`.opencode/plugins/`)
동일한 이름과 버전을 가진 중복 npm 포장은 한 번 적재됩니다. 하지만, 로컬 플러그인과 같은 이름과 npm 플러그인은 모두 별도로로드됩니다.
---
## 플러그인 만들기
플러그인은 **JavaScript/TypeScript 모듈**입니다.
기능. 각 함수는 context 객체를 수신하고 Hooks 객체를 반환합니다.
---
### 종점
로컬 플러그인 및 사용자 정의 도구는 외부 npm 패키지를 사용할 수 있습니다. `package.json`를 config 디렉토리에 추가하면 필요한 의존도가 있습니다.
```json title=".opencode/package.json"
{
"dependencies": {
"shescape": "^2.1.0"
}
}
```
OpenCode는 `bun install`를 시작합니다. 플러그인 및 도구가 가져올 수 있습니다.
```ts title=".opencode/plugins/my-plugin.ts"
import { escape } from "shescape"
export const MyPlugin = async (ctx) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "bash") {
output.args.command = escape(output.args.command)
}
},
}
}
```
---
### 기본 구조
```js title=".opencode/plugins/example.js"
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
console.log("Plugin initialized!")
return {
// Hook implementations go here
}
}
```
플러그인 기능 수신:
- `project`: 현재 프로젝트 정보.
- `directory`: 현재 작업 디렉토리.
- `worktree`: git worktree 경로.
- `client`: AI와 상호 작용을 위한 opencode SDK 클라이언트.
- `$`: Bun's [shell API](https://bun.com/docs/runtime/shell) 명령어를 실행합니다.
---
### TypeScript 지원
TypeScript 플러그인의 경우 플러그인 패키지에서 유형을 가져올 수 있습니다.
```ts title="my-plugin.ts" {1}
import type { Plugin } from "@opencode-ai/plugin"
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
return {
// Type-safe hook implementations
}
}
```
---
## 이벤트
플러그인은 예제 섹션에서 아래에서 볼 때 이벤트에 가입 할 수 있습니다. 여기에 다른 이벤트의 목록입니다.
### 명령어 이벤트
- `command.executed`
### 파일 이벤트
- `file.edited`
- `file.watcher.updated`
### 설치 이벤트
- `installation.updated`
### LSP 이벤트
- `lsp.client.diagnostics`
- `lsp.updated`
### 메시지 이벤트
- `message.part.removed`
- `message.part.updated`
- `message.removed`
- `message.updated`
#### 권한 이벤트
- `permission.asked`
- `permission.replied`
### 서버 이벤트
- `server.connected`
### 세션 이벤트
- `session.created`
- `session.compacted`
- `session.deleted`
- `session.diff`
- `session.error`
- `session.idle`
- `session.status`
- `session.updated`
### Todo 이벤트
- `todo.updated`
#### 포탄 사건
- `shell.env`
# # # # # 도구 이벤트
- `tool.execute.after`
- `tool.execute.before`
#### TUI 이벤트
- `tui.prompt.append`
- `tui.command.execute`
- `tui.toast.show`
---
## 예제
opencode를 확장하기 위해 사용할 수있는 플러그인의 몇 가지 예입니다.
---
## 알림 보내기
특정 이벤트가 발생할 때 알림을 전송:
```js title=".opencode/plugins/notification.js"
export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
return {
event: async ({ event }) => {
// Send notification on session completion
if (event.type === "session.idle") {
await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
}
},
}
}
```
macOS에서 AppleScript를 실행하려면 `osascript`를 사용하고 있습니다. 여기에 우리는 그것을 사용하여 알림을 보낼 수 있습니다.
:::note
OpenCode 데스크톱 앱을 사용하는 경우 응답이 준비되어 있거나 세션 오류가 있을 때 시스템 알림을 자동으로 보낼 수 있습니다.
:::
---
### .env 보호
읽기 `.env` 파일에서 opencode를 방지하십시오:
```javascript title=".opencode/plugins/env-protection.js"
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "read" && output.args.filePath.includes(".env")) {
throw new Error("Do not read .env files")
}
},
}
}
```
---
### Inject 환경 변수
환경 변수를 모든 쉘 실행 (AI 도구 및 사용자 터미널)로 주사하십시오.
```javascript title=".opencode/plugins/inject-env.js"
export const InjectEnvPlugin = async () => {
return {
"shell.env": async (input, output) => {
output.env.MY_API_KEY = "secret"
output.env.PROJECT_ROOT = input.cwd
},
}
}
```
---
### 사용자 정의 도구
플러그인은 Opencode에 사용자 정의 도구를 추가 할 수 있습니다 :
```ts title=".opencode/plugins/custom-tools.ts"
import { type Plugin, tool } from "@opencode-ai/plugin"
export const CustomToolsPlugin: Plugin = async (ctx) => {
return {
tool: {
mytool: tool({
description: "This is a custom tool",
args: {
foo: tool.schema.string(),
},
async execute(args, context) {
const { directory, worktree } = context
return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
},
}),
},
}
}
```
`tool` helper는 opencode가 호출 할 수있는 사용자 정의 도구를 만듭니다. Zod schema 기능을 가지고 도구 정의를 반환:
- `description`: 도구는 무엇을
- `args`: 도구의 인수에 대한 Zod 스키마
- `execute`: 도구가 호출될 때 실행되는 기능
사용자 정의 도구는 내장 도구와 함께 Opencode를 사용할 수 있습니다.
---
### 로깅
구조화된 로깅을 위한 `console.log` 대신에 `client.app.log()`를 사용하십시오:
```ts title=".opencode/plugins/my-plugin.ts"
export const MyPlugin = async ({ client }) => {
await client.app.log({
body: {
service: "my-plugin",
level: "info",
message: "Plugin initialized",
extra: { foo: "bar" },
},
})
}
```
레벨: `debug`, `info`, `warn`, `error`. [SDK 문서](https://opencode.ai/docs/sdk)를 참고하세요.
---
## Compaction 걸이
세션이 압축 될 때 포함 된 컨텍스트를 사용자 지정:
```ts title=".opencode/plugins/compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Inject additional context into the compaction prompt
output.context.push(`
## Custom Context
Include any state that should persist across compaction:
- Current task status
- Important decisions made
- Files being actively worked on
`)
},
}
}
```
LLM의 앞에 `experimental.session.compacting` 걸이 불은 오염 요약을 생성합니다. 기본 압축 프롬프트가 놓을 수 있도록 도메인 별 컨텍스트를 주입합니다.
당신은 또한 `output.prompt`를 조정해서 조밀함을 전적으로 대체할 수 있습니다:
```ts title=".opencode/plugins/custom-compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CustomCompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Replace the entire compaction prompt
output.prompt = `
You are generating a continuation prompt for a multi-agent swarm session.
Summarize:
1. The current task and its status
2. Which files are being modified and by whom
3. Any blockers or dependencies between agents
4. The next steps to complete the work
Format as a structured prompt that a new agent can use to resume work.
`
},
}
}
```
`output.prompt`가 설정되면 완전히 기본 압축 프롬프트를 대체합니다. `output.context` 배열은 이 경우에 무시됩니다.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,180 @@
---
title: Rules
description: Set custom instructions for opencode.
---
`AGENTS.md` 파일을 만들 수 있도록 오픈 코드에 사용자 정의 지침을 제공 할 수 있습니다. Cursor의 규칙과 유사합니다. LLM의 컨텍스트에 포함된 지침을 통해 특정 프로젝트에 대한 행동을 사용자 정의합니다.
---
## 초기화
새로운 `AGENTS.md` 파일을 만들려면 `/init` 명령을 opencode에서 실행할 수 있습니다.
:::tip
프로젝트의 `AGENTS.md` 파일을 Git에 투입해야 합니다.
:::
프로젝트가 무엇인지 이해하고 `AGENTS.md` 파일을 생성합니다. 이 도움말 opencode는 프로젝트를 더 잘 탐색합니다.
기존 `AGENTS.md` 파일이있는 경우이 추가하려고합니다.
---
## 예
이 파일을 수동으로 만들 수도 있습니다. 다음은 `AGENTS.md` 파일에 넣을 수있는 것들의 예입니다.
```markdown title="AGENTS.md"
# SST v3 Monorepo Project
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
## Project Structure
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
- `sst.config.ts` - Main SST configuration with dynamic imports
## Code Standards
- Use TypeScript with strict mode enabled
- Shared code goes in `packages/core/` with proper exports configuration
- Functions go in `packages/functions/`
- Infrastructure should be split into logical files in `infra/`
## Monorepo Conventions
- Import shared modules using workspace names: `@my-app/core/example`
```
우리는 여기에 프로젝트 별 지침을 추가하고 이것은 팀을 통해 공유됩니다.
---
## 유형
opencode는 또한 다수 위치에서 `AGENTS.md` 파일을 읽습니다. 그리고 이것은 다른 목적을 봉사합니다.
## 프로젝트
프로젝트 별 규칙에 대한 프로젝트 루트에 `AGENTS.md`를 배치합니다. 이 디렉토리 또는 하위 디렉토리에서 작업 할 때만 적용됩니다.
## 글로벌
또한 `~/.config/opencode/AGENTS.md` 파일에서 글로벌 규칙을 가질 수 있습니다. 이 모든 opencode 세션에서 적용됩니다.
이것은 Git에 전념하지 않거나 팀과 공유하지 않기 때문에 LLM이 따르는 모든 개인 규칙을 지정하는 것이 좋습니다.
### Claude 코드 호환성
Claude Code에서 마이그레이션하는 경우, OpenCode는 Claude Code의 파일 컨벤션을 fallbacks로 지원합니다.
- ** 규칙 ** : 프로젝트 디렉토리에 `CLAUDE.md` (`AGENTS.md`가 존재하지 않는 경우 사용)
- ** 글로벌 규칙**: `~/.claude/CLAUDE.md` (`~/.config/opencode/AGENTS.md`가 존재하지 않는 경우 사용)
-**Skills**: `~/.claude/skills/` — [Agent Skills](/docs/skills/)를 참조하십시오.
Claude Code 호환성을 비활성화하려면 이러한 환경 변수 중 하나를 설정하십시오.
```bash
export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
```
---
## 전신
opencode가 시작될 때, 이 순서에 있는 규칙 파일을 찾습니다:
1. **Local 파일 ** 현재 디렉토리에서 추적 (`AGENTS.md`, `CLAUDE.md`)
2. ** 글로벌 파일 ** `~/.config/opencode/AGENTS.md`
3. **Claude 코드 파일 ** `~/.claude/CLAUDE.md`에서 (무효한)
첫 번째 일치 파일은 각 범주에서 승리합니다. 예를 들어, `AGENTS.md`와 `CLAUDE.md` 모두가있는 경우 `AGENTS.md` 만 사용됩니다. 유사하게, `~/.config/opencode/AGENTS.md`는 `~/.claude/CLAUDE.md`에 전진합니다.
---
## 사용자 정의 지침
`opencode.json` 또는 글로벌 `~/.config/opencode/opencode.json`에서 사용자 지정 명령 파일을 지정할 수 있습니다. AGENTS.md에 복제하지 않고 기존 규칙을 재사용 할 수 있습니다.
예:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
웹에서 지침을로드하는 원격 URL도 사용할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
}
```
원격 지침은 5 초 타임 아웃으로 fetched.
모든 명령 파일은 `AGENTS.md` 파일과 결합됩니다.
---
## 외부 파일을 Referencing
opencode가 `AGENTS.md`에 있는 자동적으로 파스 파일 참조를 하지 않는 동안, 당신은 두 가지 방법으로 유사한 기능을 달성할 수 있습니다:
## opencode.json 사용
`opencode.json`의 `instructions` 필드를 사용하는 것이 좋습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
}
```
## # AGENTS.md의 수동 지침
`AGENTS.md`에 명시된 지침을 제공함으로써 외부 파일을 읽을 수 있습니다. 여기에 실용적인 예:
```markdown title="AGENTS.md"
# TypeScript Project Rules
## External File Loading
CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
Instructions:
- Do NOT preemptively load all references - use lazy loading based on actual need
- When loaded, treat content as mandatory instructions that override defaults
- Follow references recursively when needed
## Development Guidelines
For TypeScript code style and best practices: @docs/typescript-guidelines.md
For React component architecture and hooks patterns: @docs/react-patterns.md
For REST API design and error handling: @docs/api-standards.md
For testing strategies and coverage requirements: @test/testing-guidelines.md
## General Guidelines
Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
```
이 접근법은 다음과 같습니다:
- 모듈, 재사용 가능한 규칙 파일 생성
- symlinks 또는 git submodules를 통해 프로젝트 전반에 걸쳐 규칙 공유
- 상세한 가이드를 참조하면서 AGENTS.md concise 유지
- 특정 작업에 필요한 경우에만 opencode 로드 파일 유지
:::tip
공유 표준을 가진 monorepos 또는 프로젝트를 위해, glob 본을 가진 `opencode.json`를 사용하여 (`packages/*/AGENTS.md` 같이)는 수동 지시 보다는 더 유지가능합니다.
:::

View File

@@ -0,0 +1,391 @@
---
title: SDK
description: Type-safe JS client for opencode server.
---
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 programmatically를 구축하는 데 사용됩니다.
[Learn more](/docs/server) 서버가 어떻게 작동하나요? 예를 들어, 커뮤니티에 의해 구축 된 [projects](/docs/ecosystem#projects)를 확인하십시오.
---
## 설치
npm에서 SDK 설치:
```bash
npm install @opencode-ai/sdk
```
---
## 클라이언트 만들기
opencode의 인스턴스 만들기:
```javascript
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` | 구성 객체 | `{}` |
---
## 콘피그
구성 객체를 전달할 수 있습니다. 인스턴스는 여전히 `opencode.json`를 선택하지만 구성 인라인을 추가 할 수 있습니다.
```javascript
import { createOpencode } from "@opencode-ai/sdk"
const opencode = await createOpencode({
hostname: "127.0.0.1",
port: 4096,
config: {
model: "anthropic/claude-3-5-sonnet-20241022",
},
})
console.log(`Server running at ${opencode.server.url}`)
opencode.server.close()
```
## 클라이언트만
opencode의 실행 인스턴스가 이미 있다면 클라이언트 인스턴스를 만들 수 있습니다.
```javascript
import { createOpencodeClient } from "@opencode-ai/sdk"
const client = createOpencodeClient({
baseUrl: "http://localhost:4096",
})
```
#### 옵션
| 옵션 | 유형 | 설명 | 기본 |
| --------------- | ---------- | --------------------------------- | ----------------------- |
| `baseUrl` | `string` | 서버의 URL | `http://localhost:4096` |
| `fetch` | `function` | 사용자 정의 fetch 구현 | `globalThis.fetch` |
| `parseAs` | `string` | 응답 파싱 방법 | `auto` |
| `responseStyle` | `string` | 반품 스타일: `data` 또는 `fields` | `fields` |
| `throwOnError` | `boolean` | 반품 시 오류 | `false` |
---
## 유형
SDK에는 모든 API 유형의 TypeScript 정의가 포함되어 있습니다. 직접 가져 오기 :
```typescript
import type { Session, Message, Part } from "@opencode-ai/sdk"
```
모든 유형은 서버의 OpenAPI 사양에서 생성되며 <a href={typesUrl}>types 파일</a>에서 사용할 수 있습니다.
---
## 오류
SDK는 잡을 수 있는 오류를 던질 수 있습니다:
```typescript
try {
await client.session.get({ path: { id: "invalid-id" } })
} catch (error) {
console.error("Failed to get session:", (error as Error).message)
}
```
---
## API
SDK는 type-safe 클라이언트를 통해 모든 서버 API를 노출합니다.
---
## 글로벌
| 방법 | 설명 | 응답 |
| ----------------- | ---------------------- | ------------------------------------ |
| `global.health()` | 서버 건강 및 버전 확인 | `{ healthy: true, version: string }` |
---
#### 예제
```javascript
const health = await client.global.health()
console.log(health.data.version)
```
---
### 앱
| 방법 | 설명 | 응답 |
| -------------- | ------------------------- | ----------------------------------------------- |
| `app.log()` | 로그 항목 작성 | `boolean` |
| `app.agents()` | 이용 가능한 모든 에이전트 | <a href={typesUrl}><code> 에이전트[]</code></a> |
---
#### 예제
```javascript
// Write a log entry
await client.app.log({
body: {
service: "my-app",
level: "info",
message: "Operation completed",
},
})
// List available agents
const agents = await client.app.agents()
```
---
## 프로젝트
| 방법 | 설명 | 응답 |
| ------------------- | ----------------------- | --------------------------------------------- |
| `project.list()` | 모든 프로젝트 보기 | <a href={typesUrl}><code>Project[]</code></a> |
| `project.current()` | 현재 프로젝트 가져 오기 | <a href={typesUrl}><code>Project</code></a> |
---
#### 예제
```javascript
// List all projects
const projects = await client.project.list()
// Get current project
const currentProject = await client.project.current()
```
---
### 경로
| 방법 | 설명 | 응답 |
| ------------ | ------------------- | ---------------------------------------- |
| `path.get()` | 현재 경로 가져 오기 | <a href={typesUrl}><code>Path</code></a> |
---
#### 예제
```javascript
// Get current path information
const pathInfo = await client.path.get()
```
---
# # # # 콘피그
| 방법 | 설명 | 응답 |
| -------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------- |
| `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()
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 })` | Analyze 앱을 만들고 `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 (콘텍스트 전용). 과태 반환 <a href={typesUrl}><code>AssistantMessage</code></a> 에 AI 응답 |
| `session.command({ path, body })` | 세션으로 명령을 전송 | `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.shell({ path, body })` | 쉘 명령을 실행 | <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
const session = await client.session.create({
body: { title: "My session" },
})
const sessions = await client.session.list()
// Send a prompt message
const result = await client.session.prompt({
path: { id: session.id },
body: {
model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
parts: [{ type: "text", text: "Hello!" }],
},
})
// Inject context without triggering AI response (useful for plugins)
await client.session.prompt({
path: { id: session.id },
body: {
noReply: true,
parts: [{ type: "text", text: "You are a helpful assistant." }],
},
})
```
---
## 파일
| 방법 | 설명 | 응답 |
| ------------------------- | ---------------------------- | -------------------------------------------------------------------------------------- |
| `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> 파일[]</code></a> |
`find.files`는 몇몇 선택적인 조회 분야를 지원합니다:
- `type`: `"file"` 또는 `"directory"`
- `directory`: 검색에 대한 프로젝트 루트를 override
- `limit`: 최대 결과 (1-200)
---
#### 예제
```javascript
// Search and read files
const textResults = await client.find.text({
query: { pattern: "function.*opencode" },
})
const files = await client.find.files({
query: { query: "*.ts", type: "file" },
})
const directories = await client.find.files({
query: { query: "packages", type: "directory", limit: 20 },
})
const content = await client.file.read({
query: { path: "src/index.ts" },
})
```
---
# # # # TUI
| 방법 | 설명 | 응답 |
| ------------------------------ | ------------------------ | --------- |
| `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 })` | 쇼 토스트 알림 | `boolean` |
---
#### 예제
```javascript
// Control TUI interface
await client.tui.appendPrompt({
body: { text: "Add this to prompt" },
})
await client.tui.showToast({
body: { message: "Task completed", variant: "success" },
})
```
---
# # # # # 가을
| 방법 | 설명 | 응답 |
| ------------------- | -------------- | --------- |
| `auth.set({ ... })` | 인증 자격 증명 | `boolean` |
---
#### 예제
```javascript
await client.auth.set({
path: { id: "anthropic" },
body: { type: "api", key: "your-api-key" },
})
```
---
## 이벤트
| 방법 | 설명 | 응답 |
| ------------------- | ----------------------- | ----------------------- |
| `event.subscribe()` | 서버-sent 이벤트 스트림 | 서버-sent 이벤트 스트림 |
---
#### 예제
```javascript
// Listen to real-time events
const events = await client.event.subscribe()
for await (const event of events.stream) {
console.log("Event:", event.type, event.properties)
}
```

View File

@@ -0,0 +1,287 @@
---
title: Server
description: Interact with opencode server over HTTP.
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
`opencode serve` 명령은 opencode 클라이언트가 사용할 수 있는 OpenAPI 엔드포인트를 노출하는 headless HTTP 서버를 실행합니다.
---
### 사용법
```bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
```
#### 옵션
| 플래그 | 설명 | 기본 |
| --------------- | ------------------------------------------ | ---------------- | ------ |
| `--port` | 시포트 | `4096` |
| `--hostname` | 듣고 싶은 이름 | `127.0.0.1` |
| `--mdns` | 보이지 않는 mDNS 발견 | `false` |
| `--mdns-domain` | mDNS 서비스에 대한 사용자 정의 도메인 이름 | `opencode.local` |
| `--cors` | `[]` | `[]` | 한국어 |
`--cors`는 다수 시간을 통과될 수 있습니다:
```bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com
```
---
### 인증
`OPENCODE_SERVER_PASSWORD`를 설정하여 서버를 HTTP Basic auth로 보호합니다. `opencode` 또는 `OPENCODE_SERVER_USERNAME`를 오버라이드로 설정하는 사용자의 기본값. 이것은 `opencode serve`와 `opencode web` 둘 다에 적용합니다.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve
```
---
### 어떻게 작동합니까?
`opencode`를 실행하면 TUI와 서버를 시작합니다. TUI는 어디에 있습니까?
서버와 대화하는 클라이언트. 서버는 OpenAPI 3.1 spec을 노출
끝점. 이 엔드포인트는 [SDK](/docs/sdk)을 생성하는 데도 사용됩니다.
:::tip
opencode 서버를 사용하여 opencode programmatically와 상호 작용합니다.
:::
이 아키텍처는 opencode 지원 여러 클라이언트를 허용하고 opencode programmatically와 상호 작용 할 수 있습니다.
독립 서버를 시작하려면 `opencode serve`를 실행할 수 있습니다. 당신이 있는 경우에
오픈 코드 TUI 실행, `opencode serve` 새로운 서버를 시작합니다.
---
#### 기존 서버에 연결
TUI를 시작하면 무작위로 포트와 호스트 이름을 할당합니다. 대신 `--hostname`와 `--port` [flags](/docs/cli)에서 전달할 수 있습니다. 그런 다음 서버에 연결하십시오.
[`/tui`](#tui) 엔드포인트는 서버를 통해 TUI를 구동하는 데 사용될 수 있습니다. 예를 들어 미리 작성하거나 프롬프트를 실행할 수 있습니다. 이 설정은 OpenCode [IDE](/docs/ide) 플러그인에 의해 사용됩니다.
---
## 사양
서버는 OpenAPI 3.1 spec을 게시합니다.
```
http://<hostname>:<port>/doc
```
예를 들어, `http://localhost:4096/doc`. 클라이언트를 생성하거나 요청 및 응답 유형을 검사하는 spec를 사용하십시오. 또는 Swagger 탐험가에서 볼 수 있습니다.
---
## API
opencode 서버는 다음과 같은 API를 노출합니다.
---
## 글로벌
| 방법 | 경로 | 설명 | 응답 |
| ----- | ---------------- | ------------------------- | ------------------------------------ |
| `GET` | `/global/health` | 서버 건강 및 버전 | `{ healthy: true, version: string }` |
| `GET` | `/global/event` | 글로벌 이벤트(SSE 스트림) | 이벤트 스트림 |
---
## 프로젝트
| 방법 | 경로 | 설명 | 응답 |
| ----- | ------------------ | ----------------------- | --------------------------------------------- |
| `GET` | `/project` | 모든 프로젝트 보기 | <a href={typesUrl}><code>Project[]</code></a> |
| `GET` | `/project/current` | 현재 프로젝트 가져 오기 | <a href={typesUrl}><code>프로젝트</code></a> |
---
### 경로 & VCS
| 방법 | 경로 | 설명 | 응답 |
| ----- | ------- | ----------------------------- | ------------------------------------------- |
| `GET` | `/path` | 현재 경로 받기 | <a href={typesUrl}><code>Path</code></a> |
| `GET` | `/vcs` | 현재 프로젝트의 VCS 정보 받기 | <a href={typesUrl}><code>VcsInfo</code></a> |
---
### 인스턴스
| 방법 | 경로 | 설명 | 응답 |
| ------ | ------------------- | -------------------- | --------- |
| `POST` | `/instance/dispose` | 현재 인스턴스를 해제 | `boolean` |
---
### 콘피그
| 방법 | 경로 | 설명 | 응답 |
| ------- | ------------------- | -------------------------- | ---------------------------------------------------------------------------------------- |
| `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}> 사이트 맵</a>`, default: { [key: string]: string } }` |
---
## 공급자
| 방법 | 경로 | 설명 | 응답 |
| ------ | -------------------------------- | --------------------------- | ----------------------------------------------------------------------------------- |
| `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` | `/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}>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` | 비동기적으로 메시지 보내기 | 몸: `/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` | 쉘 명령 실행 | 체: `{ 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` | `/find?pattern=<pat>` | 파일의 텍스트 검색 | `path`, `lines`, `line_number`, `absolute_offset`, `submatches`와 일치하는 개체의 배열 |
| `GET` | `/find/file?query=<q>` | `string[]` | `string[]` | `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> 파일[]</code></a> |
#### `/find/file` 쿼리 매개 변수
- `query` (required) - 검색 문자열 (fuzzy 일치)
- `type` (선택 사항) - `"file"` 또는 `"directory"`에 제한 결과
- `directory` (선택 사항) - 검색에 대한 프로젝트 루트를 무시
- (선택) `limit` - 최대 결과 (1-200)
- `dirs` (옵션) - 레거시 플래그 (`"false"`는 파일만 반환)
---
## 도구 (실험)
| 방법 | 경로 | 설명 | 응답 |
| ----- | ------------------------------------------- | ----------------------- | --------------------------------------------- |
| `GET` | `/experimental/tool/ids` | 모든 도구 ID | <a href={typesUrl}><code>도구</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | 모델용 JSON 스키마 목록 | <a href={typesUrl}><code>도구 목록</code></a> |
---
### 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 서버가 동적 | 본체: `{ name, config }`, MCP 상태 객체를 반환 |
---
## 에이전트
| 방법 | 경로 | 설명 | 응답 |
| ----- | -------- | ------------------------- | ----------------------------------------------- |
| `GET` | `/agent` | 이용 가능한 모든 에이전트 | <a href={typesUrl}><code> 에이전트[]</code></a> |
---
### 로깅
| 방법 | 경로 | 설명 | 응답 |
| ------ | ------ | ----------------------------------------------------- | --------- |
| `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` |
---
### 인증
| 방법 | 경로 | 설명 | 응답 |
| ----- | ----------- | --------------------------------------------------- | --------- |
| `PUT` | `/auth/:id` | 인증 자격 증명 몸은 공급자 스키마를 일치해야 합니다 | `boolean` |
---
## 이벤트
| 방법 | 경로 | 설명 | 응답 |
| ----- | -------- | ------------------------------------------------------------------------------- | ------------------------ |
| `GET` | `/event` | 서버 침묵 이벤트 스트림. 첫 번째 이벤트는 `server.connected`, 그 후 버스 이벤트 | Server-sent event stream |
---
### 문서
| 방법 | 경로 | 설명 | 응답 |
| ----- | ------ | ---------------- | ------------------------ |
| `GET` | `/doc` | OpenAPI 3.1 사양 | HTML 페이지 OpenAPI 사양 |

View File

@@ -0,0 +1,128 @@
---
title: Share
description: Share your OpenCode conversations.
---
OpenCode의 공유 기능은 OpenCode 대화에 대한 공개 링크를 만들 수 있으므로 Teammates와 협업하거나 다른 곳에서 도움을받을 수 있습니다.
:::note
공유 대화는 링크를 통해 누구나 쉽게 접근할 수 있습니다.
:::
---
## 어떻게 작동합니까?
대화를 공유할 때, OpenCode:
1. 세션에 대한 독특한 공개 URL 만들기
2. 우리의 서버에 대화 기록 동기화
3. 공유 가능한 링크를 통해 접근 할 수있는 대화 만들기 — `opncd.ai/s/<share-id>`
---
## 공유
OpenCode는 대화가 공유되는 방법을 제어하는 세 가지 공유 모드를 지원합니다.
---
## 수동 (과태)
기본적으로 OpenCode는 수동 공유 모드를 사용합니다. 세션은 자동으로 공유되지 않지만 `/share` 명령을 사용하여 수동으로 공유 할 수 있습니다.
```
/share
```
클립보드에 복사할 수 있는 독특한 URL을 생성합니다.
[config 파일](/docs/config)에서 수동 모드를 명시적으로 설정하려면:
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "manual"
}
```
---
## 자동차 공유
`share` 옵션을 설정하여 모든 새로운 대화에 대한 자동 공유를 활성화 할 수 있습니다 `"auto"` 당신의 [config 파일](/docs/config):
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "auto"
}
```
자동 공유 활성화로 모든 새로운 대화는 자동으로 공유되고 링크가 생성됩니다.
---
# # # # 비활성화
`share` 옵션을 설정하여 완전히 공유할 수 있습니다. `"disabled"`에 [config file](/docs/config):
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "disabled"
}
```
주어진 프로젝트를 위해 팀 전반에 걸쳐 이것을 시행하려면 프로젝트에 `opencode.json`에 추가하고 Git로 확인하십시오.
---
## 비 쉐링
대화를 중지하고 공공 액세스에서 제거 :
```
/unshare
```
이 공유 링크를 제거하고 대화와 관련된 데이터를 삭제합니다.
---
## 개인 정보
대화를 나누면 마음이 유지되는 몇 가지가 있습니다.
---
## 데이터 보유
공유 대화는 명시적으로 그들을 공유 할 때까지 접근 할 수 있습니다. 이름 *
다음:
- 전체 대화 기록
- 모든 메시지 및 응답
- 세션 메타데이터
---
### 추천
- 민감한 정보를 포함하지 않는 대화 만 공유합니다.
- 공유하기 전에 대화 내용을 검토하십시오.
- 협업이 완료되면 Unshare 대화.
- 독점 코드 또는 기밀 데이터와 대화를 공유하지 마십시오.
- 민감한 프로젝트를 위해, 완전히 공유할 수 있습니다.
---
## 기업용
기업 배포를 위해, 공유 기능은:
- ** 보안 준수를 위해 완전히 비활성화 **
- **SSO를 통해 인증된 사용자에 대한 제한 **
- ** 자체 인프라 **
[Learn more](/docs/enterprise) 귀하의 조직에서 opencode를 사용하여.

View File

@@ -0,0 +1,222 @@
---
title: "Agent Skills"
description: "Define reusable behavior via SKILL.md definitions"
---
Agent Skill let OpenCode discover reusable instruction from your repo 또는 홈 디렉토리.
Skills are loaded on-demand via native `skill` tool-agents see available skills and can loaded full content when needed.
---
## 파일 장소
기술 이름 당 하나의 폴더를 만들고 내부 `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`
---
## 발견의 이해
Project-local paths의 경우, OpenCode는 git worktree에 도달 할 때까지 현재 작업 디렉토리에서 걷습니다.
그것은 `.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로 시작해야 합니다.
이 필드는 인식됩니다:
- `name` (필수)
- `description` (필수)
- (선택) `license`
- (선택) `compatibility`
- `metadata` (선택 사항, 문자열에 문자열 맵)
알려진 frontmatter 필드는 무시됩니다.
---
## 유효 이름
`name`는 해야 합니다:
- 164자
- 단 하나 hyphen 분리기를 가진 더 낮은 케이스 alphanumeric가 있으십시오
- `-`로 시작 또는 끝 아닙니다
- 연속 `--` 포함하지
- `SKILL.md`를 포함하는 디렉토리 이름을 일치
동등한 regex:
```text
^[a-z0-9]+(-[a-z0-9]+)*$
```
---
## 길이 규칙을 따르십시오
`description`는 1-1024 특성이어야 합니다.
제대로 선택하기 위해 에이전트에 대해 충분히 유지하십시오.
---
## 예제 사용
이처럼 `.opencode/skills/git-release/SKILL.md` 만들기:
```markdown
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
audience: maintainers
workflow: github
---
## What I do
- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command
## When to use me
Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.
```
---
## 인식 도구 설명
OpenCode는 `skill` 도구 설명에서 사용할 수있는 기술을 나열합니다.
각 항목에는 기술 이름 및 설명이 포함됩니다.
```xml
<available_skills>
<skill>
<name>git-release</name>
<description>Create consistent releases and changelogs</description>
</skill>
</available_skills>
```
에이전트는 도구를 호출하여 기술을로드 :
```
skill({ name: "git-release" })
```
---
## 권한 구성
기술 에이전트가 `opencode.json`의 패턴 기반 권한을 사용하여 액세스 할 수있는 제어 :
```json
{
"permission": {
"skill": {
"*": "allow",
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask"
}
}
}
```
| 허가 | 행동 | 행동 |
| ---------- | ----------------------------------------- |
| `allow` | 기술 로드 즉시 |
| `deny` | 에이전트에서 숨겨진 기술, 액세스 거부 |
| `ask` | 사용자가 적재하기 전에 승인되었습니다 |
패턴 지원 와일드 카드: `internal-*` 경기 `internal-docs`, `internal-tools`, 등.
---
## 에이전트 당 override
글로벌 디폴트보다 특정 에이전트 다른 권한을 부여합니다.
**사용자 지정 에이전트 ** ( 에이전트 frontmatter):
```yaml
---
permission:
skill:
"documents-*": "allow"
---
```
** 내장 에이전트 ** (`opencode.json`에서):
```json
{
"agent": {
"plan": {
"permission": {
"skill": {
"internal-*": "allow"
}
}
}
}
}
```
---
## 기술 도구 비활성화
그들을 사용하지 않는 대리인을위한 완전히 비활성화 된 기술 :
**사용자 지정 에이전트**:
```yaml
---
tools:
skill: false
---
```
** 내장 에이전트 **:
```json
{
"agent": {
"plan": {
"tools": {
"skill": false
}
}
}
}
```
비활성화 할 때, `<available_skills>` 섹션은 완전히 부유합니다.
---
## 문제 해결 선적
기술이 나타나지 않는 경우:
1. `SKILL.md`는 모든 모자에서 spelled
2. `name`와 `description`를 포함하는 검사
3. 기술 이름은 모든 위치에서 독특합니다.
4. `deny`를 가진 허가를 검사하십시오 대리인에서 숨겨집니다

View File

@@ -0,0 +1,369 @@
---
title: Themes
description: Select a built-in theme or define your own.
---
OpenCode를 사용하면 여러 내장 테마 중 하나에서 선택할 수 있으며 터미널 테마에 적응하는 테마를 사용하거나 사용자 정의 테마를 정의 할 수 있습니다.
기본적으로 OpenCode는 자체 `opencode` 테마를 사용합니다.
---
## 끝 필요조건
자신의 풀 컬러 팔레트로 올바르게 표시하려면 터미널을 지원해야합니다 ** truecolor** (24 비트 색상). 대부분의 현대 맨끝은 기본적으로 이것을 지원합니다, 그러나 당신은 그것을 가능하게 할 필요가 있을지도 모릅니다:
-**체크 지원**: `echo $COLORTERM` - 그것은 `truecolor` 또는 `24bit`를 출력해야 합니다
- ** truecolor 사용 가능**: 쉘 프로파일에서 환경 변수 `COLORTERM=truecolor`를 설정
- **Terminal 호환성 **: 터미널 에뮬레이터 지원 24 비트 색상 (iTerm2, Alacritty, Kitty, Windows Terminal 및 GNOME Terminal의 최신 버전)
truecolor 지원 없이, 테마는 감소된 색깔 정확도로 나타날지도 모릅니다 또는 가장 가까운 256 색깔 대류로 뒤떨어질지도 모릅니다.
---
## 내장 테마
OpenCode는 여러 내장 테마와 함께 제공됩니다.
| 이름 | 설명 |
| ---------------------- | ---------------------------------------------------------------------------- |
| `system` | 단말기의 배경 색상에 적응 |
| `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` | 가나가와현에 기반을 두고 있습니다(https://github.com/rebelot/kanagawa.nvim) 테마 |
| `nord` | [Nord](https://github.com/nordtheme/nord) 테마에 근거|
| `matrix` | 블랙 테마의 해커 스타일 그린 |
| `one-dark` | [Atom One]을 기반으로 합니다(https://github.com/Th3Whit3Wolf/one-nvim) 다크 테마 |
그리고 더, 우리는 끊임없이 새로운 테마를 추가하고 있습니다.
---
## 시스템 테마
`system` 테마는 맨끝의 색깔 계획에 자동적으로 적응시키기 위하여 디자인됩니다. 고정 색상을 사용하는 전통적인 테마와 달리, system 테마:
- ** 회색 가늠자 **: 터미널의 배경 색상을 기반으로 사용자 정의 회색 가늠자를 만들고 최적의 대조를 보장합니다.
- ** ANSI 색상 사용 ** : 터미널의 색상 팔레트를 존중하는 구문 강조 및 UI 요소에 대한 표준 ANSI 색상 (0-15).
- ** 터미널 기본 사항**: `none` 텍스트 및 배경 색상을 사용하여 터미널의 네이티브 외관을 유지합니다.
시스템 테마는 사용자를위한 것입니다 :
- OpenCode가 터미널의 외관과 일치해야 합니다.
- 사용자 정의 터미널 색상 구성
- 모든 터미널 응용 분야의 일관된 모습
---
## 테마 사용
테마를 `/theme` 명령어로 선택하여 테마를 선택할 수 있습니다. 또는 [config](/docs/config)에서 지정할 수 있습니다.
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"theme": "tokyonight"
}
```
---
## 사용자 정의 테마
OpenCode는 사용자가 쉽게 테마를 만들 수 있도록 유연한 JSON 기반 테마 시스템을 지원합니다.
---
# # # # # Hierarchy의
테마는 다음과 같은 순서에서 여러 디렉토리에서로드됩니다. 나중에 감독은 이전 것을 무시합니다.
1.**Built-in themes** - 이것은 바이너리에 내장되어 있습니다.
2. **사용자 설정 디렉토리 ** - `~/.config/opencode/themes/*.json` 또는 `$XDG_CONFIG_HOME/opencode/themes/*.json`에서 정의
3. ** 루트 디렉토리 ** - `<project-root>/.opencode/themes/*.json`에서 정의
4. **현재 작업 디렉토리 ** - `./.opencode/themes/*.json`에서 정의
여러 디렉토리가 같은 이름을 가진 테마를 포함한다면, 더 높은 우선 순위를 가진 디렉토리의 테마가 사용됩니다.
---
### 테마 만들기
사용자 정의 테마를 만들려면 테마 디렉토리 중 하나에서 JSON 파일을 만듭니다.
사용자 넓은 테마:
```bash no-frame
mkdir -p ~/.config/opencode/themes
vim ~/.config/opencode/themes/my-theme.json
```
프로젝트 별 테마.
```bash no-frame
mkdir -p .opencode/themes
vim .opencode/themes/my-theme.json
```
---
### JSON 형식
테마는 유연한 JSON 형식을 사용하여 지원:
-**Hex 색상**: `"#ffffff"`
- ** ANSI 색상**: `3` (0-255)
- ** 색상 참조 ** : `"primary"` 또는 사용자 정의 정의
- ** 어두운 / 조명 변형 ** : `{"dark": "#000", "light": "#fff"}`
- ** 색상 없음 ** : `"none"` - 터미널의 기본 색상 또는 투명 사용
---
### 색상 정의
`defs` 단면도는 선택적이고 당신은 주제에서 참조될 수 있는 재사용할 수 있는 색깔을 정의할 수 있습니다.
---
## 터미널 기본값
특별한 가치 `"none"`는 맨끝의 기본 색깔을 상속하기 위하여 어떤 색깔든지를 위해 사용될 수 있습니다. 이것은 특히 당신의 맨끝의 색깔 계획과 이음새가 없는 혼합 테마 창조를 위해 유용합니다:
- `"text": "none"` - 터미널의 기본 전경 색상 사용
- `"background": "none"` - 터미널의 기본 배경 색상 사용
---
### 예제
사용자 정의 테마의 예입니다 :
```json title="my-theme.json"
{
"$schema": "https://opencode.ai/theme.json",
"defs": {
"nord0": "#2E3440",
"nord1": "#3B4252",
"nord2": "#434C5E",
"nord3": "#4C566A",
"nord4": "#D8DEE9",
"nord5": "#E5E9F0",
"nord6": "#ECEFF4",
"nord7": "#8FBCBB",
"nord8": "#88C0D0",
"nord9": "#81A1C1",
"nord10": "#5E81AC",
"nord11": "#BF616A",
"nord12": "#D08770",
"nord13": "#EBCB8B",
"nord14": "#A3BE8C",
"nord15": "#B48EAD"
},
"theme": {
"primary": {
"dark": "nord8",
"light": "nord10"
},
"secondary": {
"dark": "nord9",
"light": "nord9"
},
"accent": {
"dark": "nord7",
"light": "nord7"
},
"error": {
"dark": "nord11",
"light": "nord11"
},
"warning": {
"dark": "nord12",
"light": "nord12"
},
"success": {
"dark": "nord14",
"light": "nord14"
},
"info": {
"dark": "nord8",
"light": "nord10"
},
"text": {
"dark": "nord4",
"light": "nord0"
},
"textMuted": {
"dark": "nord3",
"light": "nord1"
},
"background": {
"dark": "nord0",
"light": "nord6"
},
"backgroundPanel": {
"dark": "nord1",
"light": "nord5"
},
"backgroundElement": {
"dark": "nord1",
"light": "nord4"
},
"border": {
"dark": "nord2",
"light": "nord3"
},
"borderActive": {
"dark": "nord3",
"light": "nord2"
},
"borderSubtle": {
"dark": "nord2",
"light": "nord3"
},
"diffAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffContext": {
"dark": "nord3",
"light": "nord3"
},
"diffHunkHeader": {
"dark": "nord3",
"light": "nord3"
},
"diffHighlightAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffHighlightRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffAddedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffContextBg": {
"dark": "nord1",
"light": "nord5"
},
"diffLineNumber": {
"dark": "nord2",
"light": "nord4"
},
"diffAddedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"markdownText": {
"dark": "nord4",
"light": "nord0"
},
"markdownHeading": {
"dark": "nord8",
"light": "nord10"
},
"markdownLink": {
"dark": "nord9",
"light": "nord9"
},
"markdownLinkText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCode": {
"dark": "nord14",
"light": "nord14"
},
"markdownBlockQuote": {
"dark": "nord3",
"light": "nord3"
},
"markdownEmph": {
"dark": "nord12",
"light": "nord12"
},
"markdownStrong": {
"dark": "nord13",
"light": "nord13"
},
"markdownHorizontalRule": {
"dark": "nord3",
"light": "nord3"
},
"markdownListItem": {
"dark": "nord8",
"light": "nord10"
},
"markdownListEnumeration": {
"dark": "nord7",
"light": "nord7"
},
"markdownImage": {
"dark": "nord9",
"light": "nord9"
},
"markdownImageText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCodeBlock": {
"dark": "nord4",
"light": "nord0"
},
"syntaxComment": {
"dark": "nord3",
"light": "nord3"
},
"syntaxKeyword": {
"dark": "nord9",
"light": "nord9"
},
"syntaxFunction": {
"dark": "nord8",
"light": "nord8"
},
"syntaxVariable": {
"dark": "nord7",
"light": "nord7"
},
"syntaxString": {
"dark": "nord14",
"light": "nord14"
},
"syntaxNumber": {
"dark": "nord15",
"light": "nord15"
},
"syntaxType": {
"dark": "nord7",
"light": "nord7"
},
"syntaxOperator": {
"dark": "nord9",
"light": "nord9"
},
"syntaxPunctuation": {
"dark": "nord4",
"light": "nord0"
}
}
}
```

View File

@@ -0,0 +1,379 @@
---
title: Tools
description: Manage the tools an LLM can use.
---
도구는 LLM을 사용하여 코드베이스에서 작업을 수행 할 수 있습니다. OpenCode는 내장 도구 세트로 제공되지만, [custom tools](/docs/custom-tools) 또는 [MCP 서버](/docs/mcp-servers)로 확장할 수 있습니다.
기본적으로 모든 도구는**enabled**이며, 실행할 권한이 없습니다. [permissions](/docs/permissions)를 통해 공구 동작을 제어할 수 있습니다.
---
## 구성
`permission` 필드를 사용하여 도구 동작을 제어합니다. 각 도구에 대한 승인이 필요할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}
```
한 번에 여러 도구를 제어 할 와일드 카드를 사용할 수 있습니다. 예를 들어, MCP 서버의 모든 도구에 대한 승인을 요구합니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}
```
[Learn more](/docs/permissions) configuring 권한에 대해.
---
## 내장
다음은 OpenCode에서 사용할 수있는 모든 내장 도구입니다.
---
# # # # # # bash
프로젝트 환경에서 쉘 명령을 실행합니다.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}
```
이 도구는 `npm install`, `git status` 또는 다른 쉘 명령과 같은 터미널 명령을 실행하는 LLM을 허용합니다.
---
### 편집
정확한 문자열 교체를 사용하여 기존 파일을 수정합니다.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
이 도구는 정확한 텍스트 일치를 대체하여 파일에 정확한 편집을 수행합니다. LLM은 코드를 modify하는 1 차적인 방법입니다.
---
### 쓰기
새로운 파일을 만들거나 기존의 것을 덮어쓰기.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
LLM을 사용하여 새 파일을 만듭니다. 이미 존재하는 경우 기존 파일을 덮어쓰겠습니다.
:::note
`write` 공구는 모든 파일 수정 (`edit`, `write`, `patch`, `multiedit`)를 포함하는 `edit` 허가에 의해 통제됩니다.
:::
---
### 읽기
codebase에서 파일 내용을 읽으십시오.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}
```
이 도구는 파일을 읽고 내용을 반환합니다. 큰 파일에 대한 특정 라인 범위를 읽을 수 있습니다.
---
# # # # 그라프
정규 표현식을 사용하여 파일 내용을 검색합니다.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}
```
Codebase에서 빠른 콘텐츠 검색. 전체 regex 문법 및 파일 패턴 필터링 지원.
---
# # # # glob
패턴 매칭으로 파일 찾기.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}
```
`**/*.js` 또는 `src/**/*.ts`와 같은 glob 패턴을 사용하여 파일 검색. 수정 시간에 의해 정렬 된 파일 경로 반환.
---
### 리스트
주어진 경로의 파일 및 디렉토리 목록.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}
```
이 도구는 디렉토리 내용을 나열합니다. 그것은 glob 패턴을 필터 결과에 받아들입니다.
---
### lsp (실험)
정의, 참고, hover info 및 호출 hierarchy와 같은 코드 인텔리전스 기능을 얻기 위해 구성 된 LSP 서버와 인터랙트.
:::note
이 도구는 `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (또는 `OPENCODE_EXPERIMENTAL=true`) 때만 유효합니다.
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}
```
지원된 가동은 `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` 및 `outgoingCalls`를 포함합니다.
LSP 서버가 프로젝트에 사용할 수 있는 구성하려면 [LSP Servers](/docs/lsp)를 참조하십시오.
---
## 패치
파일에 패치를 적용합니다.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
이 도구는 코드베이스에 패치 파일을 적용합니다. 다양한 소스에서 diffs 및 Patch를 적용하는 데 유용합니다.
:::note
`patch` 공구는 모든 파일 수정 (`edit`, `write`, `patch`, `multiedit`)를 포함하는 `edit` 허가에 의해 통제됩니다.
:::
---
### 기술
[skill](/docs/skills) (`SKILL.md` 파일)을로드하고 대화의 내용을 반환합니다.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}
```
---
## todowrite에
코딩 세션 중에 todo 목록을 관리합니다.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}
```
복잡한 작업 중에 진행 상황을 추적하기 위해 작업 목록을 만들고 업데이트합니다. LLM은 멀티 단계 작업을 구성하기 위해 이것을 사용합니다.
:::note
이 도구는 기본으로 시약을 비활성화하지만 수동으로 활성화 할 수 있습니다. [더 알아보기](/docs/agents/#permissions)
:::
---
# # # # todoread
기존의 todo 목록 읽기.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}
```
현재 todo 목록 상태를 읽습니다. 작업이 종료되거나 완료되는 것을 추적하기 위해 LLM에 의해 사용됩니다.
:::note
이 도구는 기본으로 시약을 비활성화하지만 수동으로 활성화 할 수 있습니다. [더 알아보기](/docs/agents/#permissions)
:::
---
# # # # 웹 사이트
Fetch 웹 콘텐츠.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}
```
LLM을 fetch 및 웹 페이지를 읽을 수 있습니다. 온라인 리소스를 찾는 데 도움이 되는 문서 또는 연구
---
# # # # 웹 검색
웹 검색
:::note
이 도구는 OpenCode 제공 업체 또는 `OPENCODE_ENABLE_EXA` 환경 변수가 모든 진실 값 (예 : `true` 또는 `1`)로 설정할 때만 사용할 수 있습니다.
OpenCode를 실행할 때 활성화:
```bash
OPENCODE_ENABLE_EXA=1 opencode
```
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
}
```
Exa AI를 사용하여 웹 검색을 수행하여 관련 정보를 온라인으로 찾으십시오. 연구 주제에 유용한, 현재 이벤트를 찾는, 또는 훈련 데이터 차단을 넘어 정보를 수집.
API 키가 필요하지 않습니다 - 도구는 인증없이 Exa AI의 호스팅 MCP 서비스에 직접 연결됩니다.
:::tip
`websearch`를 사용하면 특정 URL (retrieval)에서 콘텐츠를 검색해야합니다.
:::
---
### 질문
실행 중에 사용자의 질문 요청.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}
```
이 도구는 작업 중에 LLM을 요청할 수 있습니다. 그것은 유용합니다:
- 사용자 선호도 또는 요구 사항 변경
- 주위 지침
- 구현 선택에 대한 결정
- 어떤 방향에 대한 선택 제공
각 질문에는 헤더, 질문 텍스트 및 옵션 목록이 포함되어 있습니다. 사용자는 제공된 선택권에서 선택하거나 주문 대답을 타자를 수 있습니다. 여러 질문이 있을 때, 사용자는 모든 답변을 제출하기 전에 그들 사이에서 탐색 할 수 있습니다.
---
## 사용자 정의 도구
사용자 정의 도구는 LLM이 호출 할 수있는 자신의 기능을 정의 할 수 있습니다. config 파일에 정의되어 arbitrary 코드를 실행할 수 있습니다.
[Learn more](/docs/custom-tools) 사용자 정의 도구 만들기.
---
## MCP 서버
MCP(Model Context Protocol) 서버는 외부 도구와 서비스를 통합할 수 있습니다. 이 데이터베이스 액세스, API 통합 및 타사 서비스가 포함되어 있습니다.
MCP 서버 구성에 대한 [Learn more](/docs/mcp-servers).
---
## 내부
내부, 도구 `grep`, `glob`, 그리고 `list` 사용 [ripgrep](https://github.com/BurntSushi/ripgrep) 후드 아래에. 기본적으로 ripgrep은 `.gitignore` 패턴을 존중하며 `.gitignore`에 나열된 파일 및 디렉토리를 검색 및 목록에서 제외됩니다.
---
# # # # Ignore 패턴
일반적으로 무시되는 파일을 포함하려면 프로젝트 루트에 `.ignore` 파일을 만듭니다. 이 파일은 명시적으로 특정 경로를 허용 할 수 있습니다.
```text title=".ignore"
!node_modules/
!dist/
!build/
```
예를 들어,이 `.ignore` 파일은 `node_modules/`, `dist/` 및 `build/` 디렉토리 내에서 검색 할 수 있습니다. `.gitignore`.

View File

@@ -0,0 +1,300 @@
---
title: Troubleshooting
description: Common issues and how to resolve them.
---
OpenCode와 문제를 디버그하려면 로그와 로컬 데이터를 확인하여 디스크에 저장합니다.
---
## 로그인
로그 파일은 다음과 같습니다:
-**macOS/리눅스**: `~/.local/share/opencode/log/`
- **Windows**: 압박 `WIN+R`와 풀 `%USERPROFILE%\.local\share\opencode\log`
로그 파일은 타임스탬프 (예 : `2025-01-09T123456.log`)과 가장 최근 10 로그 파일이 보관됩니다.
자세한 디버그 정보를 얻기 위해 `--log-level` 명령줄 옵션을 사용하여 로그 레벨을 설정할 수 있습니다. 예를 들면, `opencode --log-level DEBUG`.
---
## 저장
opencode 저장 세션 데이터 및 디스크에 다른 응용 데이터:
-**macOS/리눅스**: `~/.local/share/opencode/`
- **Windows**: 압박 `WIN+R`와 풀 `%USERPROFILE%\.local\share\opencode`
이 디렉토리는 다음과 같습니다:
- `auth.json` - API 키, OAuth 토큰과 같은 인증 데이터
- `log/` - 응용 프로그램 로그
- `project/` - 세션 및 메시지 데이터와 같은 프로젝트별 데이터
- 프로젝트가 Git repo 안에 있는 경우에, 그것은 `./<project-slug>/storage/`에서 저장됩니다
- Git repo가 아닌 경우 `./global/storage/`에 저장됩니다.
---
## 데스크탑 앱
OpenCode 데스크톱은 배경에서 로컬 OpenCode 서버 (`opencode-cli` sidecar)를 실행합니다. 대부분의 문제는 misbehaving 플러그인, 손상된 캐시, 또는 나쁜 서버 설정에 의해 발생합니다.
## 빠른 체크
- 완전히 종료하고 앱을 다시 시작.
- 앱이 오류 화면을 보여 주면 ** Restart**를 클릭하고 오류 세부 정보를 복사합니다.
- macOS만: `OpenCode` 메뉴 -> **웹뷰 **(UI가 공백/frozen인 경우).
---
## Disable 플러그인
데스크톱 앱이 출시, 거는, 또는 이상한 것에서 충돌하면 플러그인을 비활성화하여 시작합니다.
### 글로벌 설정 확인
글로벌 설정 파일을 열고 `plugin` 키를 찾습니다.
-**macOS/리눅스**: `~/.config/opencode/opencode.jsonc` (또는 `~/.config/opencode/opencode.json`)
-**macOS/Linux** (외부 설치): `~/.local/share/opencode/opencode.jsonc`
- **Windows**: 압박 `WIN+R`와 풀 `%USERPROFILE%\.config\opencode\opencode.jsonc`
구성 된 플러그인이있는 경우, 일시적으로 키를 제거하거나 빈 배열로 설정하여 비활성화하십시오.
```jsonc
{
"$schema": "https://opencode.ai/config.json",
"plugin": [],
}
```
### 플러그인 디렉터리 확인
OpenCode는 디스크에서 로컬 플러그인을로드 할 수 있습니다. Temporarily 이동 이러한 방법 (또는 폴더 이름을 변경) 및 데스크톱 응용 프로그램을 다시 시작:
- **글로벌 플러그인**
-**macOS/리눅스**: `~/.config/opencode/plugins/`
- **Windows**: 압박 `WIN+R`와 풀 `%USERPROFILE%\.config\opencode\plugins`
- **프로젝트 플러그인** (프로젝트 설정만 사용)
- `<your-project>/.opencode/plugins/`
앱이 다시 일하는 경우, 재 활성화 플러그인은 한 번에 문제가 발생할 수 있습니다.
---
# # # # 캐시 삭제
플러그인을 비활성화하는 경우 도움이되지 않습니다 (또는 플러그인 설치가 붙어있다), 캐시를 삭제 그래서 OpenCode는 그것을 재구성 할 수 있습니다.
1. Quit OpenCode 데스크톱 완전히.
2. 캐시 디렉토리 삭제:
-**macOS**: 찾기 -> `Cmd+Shift+G` -> 붙여넣기 `~/.cache/opencode`
- **Linux**: `~/.cache/opencode` 삭제 (또는 `rm -rf ~/.cache/opencode` 실행)
- **Windows**: 압박 `WIN+R`와 풀 `%USERPROFILE%\.cache\opencode`
3. Restart OpenCode 데스크탑.
---
## 수정 서버 연결 문제
OpenCode 데스크톱은 자체 로컬 서버(과태)를 시작하거나 구성된 서버 URL에 연결할 수 있습니다.
**"Connection Failed"** 대화 상자 (또는 앱이 스패시 화면을 지나지 않습니다), 사용자 정의 서버 URL을 확인합니다.
### 바탕 화면 기본 서버 URL 삭제
Home 화면에서 Server Picker를 열려면 서버 이름(상태 점)을 클릭하십시오. **기본 서버** 섹션에서 **Clear**를 클릭합니다.
####는 `server.port`/`server.hostname`를 당신의 설정에서 제거합니다
`opencode.json(c)`가 `server` 섹션을 포함하면 일시적으로 제거하고 데스크톱 앱을 다시 시작합니다.
### 환경 변수 확인
`OPENCODE_PORT`가 있는 경우, 데스크탑 앱은 로컬 서버의 포트를 사용하려고 합니다.
- `OPENCODE_PORT` (또는 무료 포트를 선택) 및 재시작.
---
## Linux: 웨이랜드 / X11 문제
Linux에서 일부 Wayland 설정은 공백 창이나 compositor 오류를 일으킬 수 있습니다.
- If you're on Wayland and the app is blank/crashing, `OC_ALLOW_WAYLAND=1`로 출시하려고합니다.
- 더 나쁜 것을 만드는 경우, 제거하고 X11 세션에서 실행하려고합니다.
---
## Windows: WebView2 실행 시간
Windows에서 OpenCode 데스크톱은 Microsoft Edge ** WebView2 실행 시간 **를 요구합니다. 앱이 공백 창에 열거나 시작하지 않을 경우, install/update WebView2를 설치하고 다시 시도하십시오.
---
## Windows: 일반 성능 문제
느린 성능, 파일 액세스 문제 또는 Windows의 터미널 문제를 경험하는 경우 [WSL (Windows Subsystem for Linux)](/docs/windows-wsl)를 사용하여 시도하십시오. WSL은 OpenCode의 기능으로 더 원활하게 작동하는 Linux 환경을 제공합니다.
---
## 알림 표시되지 않음
OpenCode 데스크톱은 시스템 알림을 보여줍니다 :
- OS 설정에서 OpenCode에 대한 알림이 활성화되고,
- 앱 창이 집중되지 않습니다.
---
## 재설정 데스크톱 앱 스토리지 (마지막 리조트)
앱이 시작되지 않은 경우 UI 내부에서 설정을 취소할 수 없습니다. 데스크탑 앱의 저장된 상태를 재설정하십시오.
1. Quit OpenCode 데스크탑.
2. 이 파일을 찾아 삭제 (OpenCode 데스크톱 앱 데이터 디렉토리에서 라이브):
- `opencode.settings.dat` (데스크톱 기본 서버 URL)
- `opencode.global.dat` 및 `opencode.workspace.*.dat` (최근 서버/프로젝트와 같은 UI 국가)
빠른 디렉토리를 찾을 수:
-**macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (위의 파일명 검색)
- **리눅스 **: 위의 파일명에 대한 `~/.local/share`의 밑에 검색
- **Windows**: `WIN+R` -> `%APPDATA%`를 눌러 (위의 파일 이름을 검색)
---
## 도움 받기
OpenCode와 문제가 발생하면:
1. ** GitHub의 문제 해결 **
버그 또는 요청 기능을보고하는 가장 좋은 방법은 GitHub 저장소를 통해 다음과 같습니다.
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
새로운 문제를 만들기 전에, 당신의 문제가 이미보고 된 경우 기존 문제를 검색.
2. ** 우리의 Discord **
실시간 도움말 및 커뮤니티 토론을 위해 Discord 서버에 가입하십시오.
[**opencode.ai/discord**](https://opencode.ai/discord)
---
## 일반적인 문제
몇 가지 일반적인 문제와 해결 방법.
---
## OpenCode가 시작되지 않습니다.
1. 오류 메시지에 대한 로그 확인
2. 맨끝에 있는 산출을 보기 위하여 `--print-logs`로 달리기를 시도하십시오
3. 당신은 `opencode upgrade`를 가진 최신 버전이 있는 것을 지킵니다
---
### 인증 문제
1. TUI에서 `/connect` 명령으로 다시 입력 시도
2. API 키가 유효하다는 것을 확인
3. 네트워크가 공급자의 API에 연결을 허용
---
# # # # 모델 사용할 수 없습니다
1. 공급자와 정통한 확인
2. config의 모델명을 수정한다.
3. 몇몇 모형은 특정한 접근 또는 구독을 요구할지도 모릅니다
만약 당신이 `ProviderModelNotFoundError`에 직면 하는 경우 가장 가능성이 잘못
모델 어딘가를 나타냅니다.
모형은 이렇게 참고되어야 합니다: `<providerId>/<modelId>`
예제:
- `openai/gpt-4.1`
- `openrouter/google/gemini-2.5-flash`
- `opencode/kimi-k2`
당신이 액세스 할 수있는 모델을 파악하려면, `opencode models`를 실행
---
## 공급자InitError
ProviderInitError가 발생하면 잘못된 구성이나 손상된 구성이 있습니다.
해결하기:
1. 첫째로, 당신의 공급자는 [providers guide] (./providers)를 따르기 위하여 제대로 설치됩니다
2. 문제가 발생하면 저장된 구성을 삭제하십시오.
```bash
rm -rf ~/.local/share/opencode
```
Windows에서, `WIN+R`를 누르고 삭제하십시오: `%USERPROFILE%\.local\share\opencode`
3. TUI의 `/connect` 명령을 사용하여 공급자와 재해.
---
### AI APICallError와 공급자 포장 문제점
API 호출 오류가 발생하면, 이 공급 업체 패키지로 인해 발생할 수 있습니다. opencode 동적 설치 공급자 패키지 (OpenAI, Anthropic, Google 등) 필요 하 고 로컬로 캐시.
공급자 패키지 문제를 해결하려면:
1. 공급자 포장 캐시를 지우십시오:
```bash
rm -rf ~/.cache/opencode
```
Windows에서, `WIN+R`를 누르고 삭제하십시오: `%USERPROFILE%\.cache\opencode`
2. 최신 공급자 포장을 재설치하는 Restart opencode
이것은 종종 모델 매개 변수와 API 변경과 호환성 문제를 해결하는 공급자 패키지의 가장 최근 버전을 다운로드하기 위해 opencode를 강제합니다.
---
# # # # 복사 / Linux에서 작동하지 않음
Linux 사용자는 다음과 같은 클립 보드 유틸리티 중 하나가 복사 / 붙여 넣기 기능에 설치해야합니다.
** X11 시스템:**
```bash
apt install -y xclip
# or
apt install -y xsel
```
**웨이랜드 시스템:**
```bash
apt install -y wl-clipboard
```
** 헤드리스 환경에 대한:**
```bash
apt install -y xvfb
# and run:
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
export DISPLAY=:99.0
```
opencode는 당신이 Wayland를 사용하고 `wl-clipboard`를 선호하는 경우에 검출할 것입니다, 그렇지 않으면의 순서에 있는 클립보드 공구를 찾아낼 것입니다: `xclip`와 `xsel`.

View File

@@ -0,0 +1,390 @@
---
title: TUI
description: Using the OpenCode terminal user interface.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
OpenCode는 LLM과 함께 프로젝트를 위해 대화형 터미널 인터페이스 또는 TUI를 제공합니다.
OpenCode는 현재 디렉토리에 TUI를 시작합니다.
```bash
opencode
```
또는 특정 작업 디렉토리에 대해 시작할 수 있습니다.
```bash
opencode /path/to/project
```
TUI에 있다면 메시지가 표시됩니다.
```text
Give me a quick summary of the codebase.
```
---
## 파일 참조
`@`를 사용하여 메시지에 파일을 참조 할 수 있습니다. 이것은 현재 작업 디렉토리에서 fuzzy 파일 검색입니다.
:::tip
`@`를 사용하여 메시지의 참조 파일을 사용할 수 있습니다.
:::
```text "@packages/functions/src/api/index.ts"
How is auth handled in @packages/functions/src/api/index.ts?
```
파일의 내용이 자동으로 대화에 추가됩니다.
---
## Bash 명령
`!`를 사용하여 쉘 명령을 실행합니다.
```bash frame="none"
!ls -la
```
명령의 출력은 도구 결과로 대화에 추가됩니다.
---
## 명령
OpenCode TUI를 사용할 때, `/`를 입력하여 명령 이름을 따라 작업을 신속하게 실행할 수 있습니다. 예를 들면:
```bash frame="none"
/help
```
대부분의 명령은 `ctrl+x`를 `ctrl+x`가 기본 리더 키입니다. [더 알아보기](/docs/keybinds).
여기에 모든 가능한 슬래시 명령이 있습니다.
---
### 연결
OpenCode에 대한 공급자를 추가합니다. 사용 가능한 공급자에서 선택하고 API 키를 추가 할 수 있습니다.
```bash frame="none"
/connect
```
---
### 콤팩트
현재 세션을 압축합니다. 앨리스 : `/summarize`
```bash frame="none"
/compact
```
** Keybind:** `ctrl+x c`
---
### 세부사항
토글 툴 실행 세부 사항.
```bash frame="none"
/details
```
** Keybind:** `ctrl+x d`
---
### 편집기
메시지를 작성하기 위한 외부 편집기를 엽니다. `EDITOR` 환경에서 설정된 편집기를 사용합니다. [더 알아보기](#editor-setup).
```bash frame="none"
/editor
```
** Keybind:** `ctrl+x e`
---
### 출구
OpenCode를 종료합니다. Aliases : `/quit`, `/q`
```bash frame="none"
/exit
```
** Keybind:** `ctrl+x q`
---
### 수출
Markdown에 대한 현재 대화를 내보내고 기본 편집기에서 열립니다. `EDITOR` 환경에서 설정된 편집기를 사용합니다. [더 알아보기](#editor-setup).
```bash frame="none"
/export
```
** Keybind:** `ctrl+x x`
---
### 도움
도움말 대화 상자를 표시합니다.
```bash frame="none"
/help
```
** Keybind:** `ctrl+x h`
---
# # # # # # # 인
`AGENTS.md` 파일을 만들거나 업데이트하십시오. [더 알아보기](/docs/rules).
```bash frame="none"
/init
```
** Keybind:** `ctrl+x i`
---
## 모델
사용 가능한 모델 목록.
```bash frame="none"
/models
```
** Keybind:** `ctrl+x m`
---
## 새로운
새로운 세션을 시작합니다. 앨리스 : `/clear`
```bash frame="none"
/new
```
** Keybind:** `ctrl+x n`
---
# # # # # 재도
이전 undone 메시지 Redo. `/undo`를 사용하는 후에만 유효한.
:::tip
모든 파일 변경도 복원됩니다.
:::
내부적으로 Git을 사용하여 파일 변경을 관리합니다. 그래서 프로젝트 **
Git 저장소**입니다.
```bash frame="none"
/redo
```
** Keybind:** `ctrl+x r`
---
## 세션
세션 간 목록 및 전환. Aliases : `/resume`, `/continue`
```bash frame="none"
/sessions
```
** Keybind:** `ctrl+x l`
---
## 공유
현재 세션 공유. [더 알아보기](/docs/share).
```bash frame="none"
/share
```
** Keybind:** `ctrl+x s`
---
## 테마
사용할 수 있는 테마 목록.
```bash frame="none"
/theme
```
** Keybind:** `ctrl+x t`
---
### 생각
대화의 사고/거주 블록의 가시성을 토합니다. 사용할 때, 확장 된 생각을 지원하는 모델의 이유 프로세스를 볼 수 있습니다.
:::note
이 명령은 생각 블록이 ** 표시되었는지 여부 만 제어 ** - 모델의 소싱 기능을 활성화하거나 비활성화하지 않습니다. toggle 실제적인 reasoning 기능에, 모형 변종을 통해서 주기 위하여 `ctrl+t`를 이용합니다.
:::
```bash frame="none"
/thinking
```
---
# # # # # 취소
대화에서 마지막 메시지. 가장 최근의 사용자 메시지, 모든 후속 응답 및 모든 파일 변경 제거.
:::tip
어떤 파일 변경도 복제됩니다.
:::
내부적으로 Git을 사용하여 파일 변경을 관리합니다. 그래서 프로젝트 **
Git 저장소**입니다.
```bash frame="none"
/undo
```
** Keybind:** `ctrl+x u`
---
# # # # 공유
Unshare 현재 세션. [더 알아보기](/docs/share#un-sharing).
```bash frame="none"
/unshare
```
---
## 에디터 설정
`/editor`와 `/export` 명령 모두는 `EDITOR` 환경변수에서 지정된 편집기를 사용합니다.
<Tabs>
<TabItem label="Linux/macOS">
```bash
# Example for nano or vim
export EDITOR=nano
export EDITOR=vim
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
export EDITOR="code --wait"
```
영원한 만들기 위하여, 당신의 포탄 단면도에 이것을 추가하십시오;
`~/.bashrc`, `~/.zshrc`, 등.
</TabItem>
<TabItem label="Windows (CMD)">
```bash
set EDITOR=notepad
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
set EDITOR=code --wait
```
영구적으로, use **System Properties** > ** 환경
변수**.
</TabItem>
<TabItem label="Windows (PowerShell)">
```powershell
$env:EDITOR = "notepad"
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
$env:EDITOR = "code --wait"
```
영구적으로 만들려면 PowerShell 프로파일에 추가하십시오.
</TabItem>
</Tabs>
인기있는 편집기 옵션은 다음과 같습니다 :
- `code` - Visual Studio 코드
- `cursor` - 커서
- `windsurf` - 윈드 서핑
- `nvim` - Neovim 편집기
- `vim` - Vim 편집기
- `nano` - 나노 편집기
- `notepad` - 윈도우 노트패드
- `subl` - 승화 텍스트
:::note
VS Code와 같은 일부 편집기는 `--wait` 플래그와 함께 시작해야합니다.
:::
일부 편집기는 명령줄 인수가 차단 모드에서 실행되어야 합니다. `--wait` 플래그는 닫힐 때까지 편집기 프로세스 블록을 만듭니다.
---
## 구성
OpenCode config 파일을 통해 TUI 동작을 사용자 정의할 수 있습니다.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
}
}
}
```
### 옵션
- `scroll_acceleration` - 부드러운 자연 스크롤을위한 macOS 스타일 스크롤 가속 가능. 사용할 때, 스크롤 속도는 빠른 스크롤 제스처로 증가하고 느린 움직임을 위해 정확한 유지. **이 설정은 `scroll_speed`를 통해 우선 순위를 부여하고 활성화 할 때. **
- `scroll_speed` - 스크롤 명령 (최소 : `1`)을 사용하여 TUI 스크롤을 빠르게 제어합니다. 기본 `3`. ** 참고: `scroll_acceleration.enabled`가 `true`로 설정되면 무시됩니다.**
---
## 사용자 정의
명령 팔레트 (`ctrl+x h` 또는 `/help`)를 사용하여 TUI보기의 다양한 측면을 사용자 정의 할 수 있습니다. 재시작에 따른 설정 persist.
---
#### 사용자 이름 전시
사용자 이름이 채팅 메시지에 나타나는지 여부를 수정합니다. 이것을 통해 접근:
- 명령 팔레트 : "username" 또는 "hide 사용자" 검색
- 자동 설정은 TUI 세션을 통해 기억됩니다.

View File

@@ -0,0 +1,142 @@
---
title: Web
description: Using OpenCode in your browser.
---
OpenCode는 브라우저에서 웹 응용 프로그램을 실행할 수 있으며 터미널을 필요로하지 않고 동일한 강력한 AI 코딩 경험을 제공합니다.
![OpenCode Web - 새로운 세션](../../../assets/web/web-homepage-new-session.png)
## 시작하기
실행하여 웹 인터페이스를 시작:
```bash
opencode web
```
`127.0.0.1`의 로컬 서버를 랜덤 사용 가능한 포트로 시작하고 기본 브라우저에서 OpenCode를 자동으로 엽니다.
:::caution
`OPENCODE_SERVER_PASSWORD`가 설정되지 않은 경우 서버가 중단되지 않습니다. 이것은 로컬 사용을위한 괜찮지만 네트워크 액세스를 설정해야합니다.
:::
:::tip[Windows 사용자]
최고의 경험을 위해서는 PowerShell보다 `opencode web`를 실행하십시오. 적절한 파일 시스템 액세스 및 터미널 통합을 보장합니다.
:::
---
## 구성
명령줄 플래그 또는 [config file](/docs/config)에서 웹 서버를 구성할 수 있습니다.
## 포트
기본적으로 OpenCode는 사용할 수 있는 포트를 선택합니다. 포트를 지정할 수 있습니다:
```bash
opencode web --port 4096
```
## 호스트 이름
기본적으로 서버는 `127.0.0.1` (localhost only)에 바인딩합니다. 네트워크에서 OpenCode를 사용할 수 있도록:
```bash
opencode web --hostname 0.0.0.0
```
`0.0.0.0`를 사용할 때, OpenCode는 로컬 및 네트워크 주소를 모두 표시합니다.
```
Local access: http://localhost:4096
Network access: http://192.168.1.100:4096
```
### mDNS 발견
로컬 네트워크에서 서버를 발견할 수 있는 mDNS:
```bash
opencode web --mdns
```
이 자동으로 `0.0.0.0`에 hostname을 설정하고 `opencode.local`로 서버를 광고합니다.
동일한 네트워크에서 여러 인스턴스를 실행하려면 mDNS 도메인 이름을 지정할 수 있습니다.
```bash
opencode web --mdns --mdns-domain myproject.local
```
# # # # # # CORS
CORS에 대한 추가 도메인을 허용하려면 (사용자 정의 frontends에 적합) :
```bash
opencode web --cors https://example.com
```
### 인증
액세스를 보호하려면 `OPENCODE_SERVER_PASSWORD` 환경 변수를 사용하여 암호를 설정하십시오.
```bash
OPENCODE_SERVER_PASSWORD=secret opencode web
```
`opencode`에 대한 사용자의 기본값은 `OPENCODE_SERVER_USERNAME`로 변경할 수 있습니다.
---
## 웹 인터페이스 사용
시작되면 웹 인터페이스는 OpenCode 세션에 액세스 할 수 있습니다.
## 세션
홈페이지에서 세션을 보고 관리합니다. 활성 세션을 볼 수 있으며 새로운 것을 시작합니다.
![OpenCode Web - Active Session](../../../assets/web/web-homepage-active-session.png)
## 서버 상태
"See Servers"를 클릭하여 연결된 서버와 상태를 볼 수 있습니다.
![OpenCode Web - Servers 참조](../../../assets/web/web-homepage-see-servers.png)
---
## 터미널 부착
실행 웹 서버에 터미널 TUI를 연결할 수 있습니다.
```bash
# Start the web server
opencode web --port 4096
# In another terminal, attach the TUI
opencode attach http://localhost:4096
```
웹 인터페이스와 터미널을 동시에 사용할 수 있도록, 같은 세션과 상태를 공유합니다.
---
## Config 파일
`opencode.json` config 파일에서 서버 설정을 구성할 수 있습니다:
```json
{
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"cors": ["https://example.com"]
}
}
```
Command line flags는 config 파일 설정에 대한 precedence를 가져옵니다.

View File

@@ -0,0 +1,119 @@
---
title: Windows (WSL)
description: WSL로 Windows에서 OpenCode를 더 편하게 사용하세요.
---
import { Steps } from "@astrojs/starlight/components"
OpenCode는 Windows에서 직접 실행할 수 있지만, 가장 좋은 사용 경험을 위해 [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) 사용을 권장합니다. WSL은 OpenCode 기능과 자연스럽게 동작하는 Linux 환경을 제공합니다.
:::tip[왜 WSL인가요?]
WSL은 더 나은 파일 시스템 성능, 완전한 터미널 지원, 그리고 OpenCode가 의존하는 개발 도구와의 호환성을 제공합니다.
:::
---
## 설정
<Steps>
1. **WSL 설치하기**
아직 설치하지 않았다면 Microsoft 공식 가이드를 따라 [WSL을 설치](https://learn.microsoft.com/en-us/windows/wsl/install)하세요.
2. **WSL에 OpenCode 설치하기**
WSL 설정이 끝나면 WSL 터미널을 열고 [설치 방법](/docs/) 중 하나로 OpenCode를 설치하세요.
```bash
curl -fsSL https://opencode.ai/install | bash
```
3. **WSL에서 OpenCode 실행하기**
프로젝트 디렉터리로 이동한 뒤(OpenCode에서 Windows 파일은 `/mnt/c/`, `/mnt/d/` 등으로 접근) OpenCode를 실행하세요.
```bash
cd /mnt/c/Users/YourName/project
opencode
```
</Steps>
---
## 데스크톱 앱 + WSL 서버
OpenCode 데스크톱 앱을 쓰면서 서버는 WSL에서 실행하고 싶다면 다음처럼 진행하세요.
1. **WSL에서 서버 시작하기**
외부 연결을 허용하려면 `--hostname 0.0.0.0` 옵션을 사용하세요.
```bash
opencode serve --hostname 0.0.0.0 --port 4096
```
2. **데스크톱 앱 연결하기**
`http://localhost:4096`로 연결하세요.
:::note
환경에 따라 `localhost`가 동작하지 않으면 WSL의 IP 주소를 사용하세요(WSL에서 `hostname -I` 실행). 이후 `http://<wsl-ip>:4096`로 접속하면 됩니다.
:::
:::caution
`--hostname 0.0.0.0`을 사용할 때는 `OPENCODE_SERVER_PASSWORD`를 설정해 서버를 보호하세요.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
```
:::
---
## 웹 클라이언트 + WSL
Windows에서 웹 사용 경험을 가장 좋게 하려면:
1. **PowerShell 대신 WSL 터미널에서 `opencode web` 실행하기**
```bash
opencode web --hostname 0.0.0.0
```
2. **Windows 브라우저에서 접속하기**
`http://localhost:<port>`로 접속하세요(OpenCode가 URL을 출력합니다).
WSL에서 `opencode web`를 실행하면 올바른 파일 시스템 접근과 터미널 통합을 유지하면서도 Windows 브라우저에서 바로 사용할 수 있습니다.
---
## Windows 파일 접근
WSL에서는 `/mnt/` 디렉터리를 통해 Windows 파일 전체에 접근할 수 있습니다.
- `C:` drive → `/mnt/c/`
- `D:` drive → `/mnt/d/`
- 다른 드라이브도 같은 방식입니다
예시:
```bash
cd /mnt/c/Users/YourName/Documents/project
opencode
```
:::tip
가장 매끄러운 경험을 원한다면 저장소를 WSL 파일시스템(예: `~/code/`)으로 복제하거나 복사한 뒤 그 위치에서 OpenCode를 실행해 보세요.
:::
---
## 팁
- Windows 드라이브에 있는 프로젝트라도 OpenCode는 WSL에서 실행하면 파일 접근이 더 자연스럽습니다
- 통합된 개발 워크플로를 위해 OpenCode와 함께 VS Code의 [WSL 확장](https://code.visualstudio.com/docs/remote/wsl)을 사용해 보세요
- OpenCode 설정과 세션은 WSL 환경의 `~/.local/share/opencode/`에 저장됩니다

View File

@@ -0,0 +1,254 @@
---
title: Zen
description: Curated list of models provided by OpenCode.
---
import config from "../../../../config.mjs"
export const console = config.console
export const email = `mailto:${config.email}`
OpenCode Zen은 OpenCode 팀에서 제공하는 테스트 및 검증된 모델 목록입니다.
:::note
OpenCode Zen은 현재 베타입니다.
:::
Zen은 OpenCode의 다른 공급자와 같이 작동합니다. OpenCode Zen에 로그인하고
API 키. 그것은 ** 완전 옵션 ** 당신은 사용할 필요가 없습니다
OpenCode입니다.
---
## 배경
거기에 모델의 큰 수는 있지만 몇 가지의
이 모형은 뿐 아니라 기호화 대리인 작동합니다. 또한, 대부분의 공급자는
아주 다르게 형성하십시오; 그래서 당신은 아주 다른 성과 및 질을 얻습니다.
:::tip
OpenCode와 잘 작동하는 모델 및 공급자의 선택 그룹을 테스트했습니다.
:::
OpenRouter와 같은 무언가를 통해 모델을 사용하고 있다면 결코 할 수 없습니다.
당신이 원하는 모델의 최고의 버전을 얻는 경우.
이것을 해결하기 위해, 우리는 몇 가지 일을했다 :
1. 우리는 모형의 선택 그룹을 시험하고 그들의 팀에 대략 이야기했습니다
가장 좋은 것.
2. 우리는 그(것)들이 봉사한 것을 확인하기 위하여 몇몇 공급자와 일했습니다
견적 요청
3. 마지막으로, 우리는 model/provider의 조합을 벤치마크하고 올랐습니다
우리가 좋은 권고를 느끼는 목록으로.
OpenCode Zen은 이 모델에 액세스 할 수있는 AI 게이트웨이입니다.
---
## 어떻게 작동합니까?
OpenCode Zen은 OpenCode의 다른 공급자와 같습니다.
1. 로그인 **<a href={console}>OpenCode Zen</a>**, 청구 추가
세부 사항 및 API 키 복사.
2. TUI에서 `/connect` 명령을 실행하고 OpenCode Zen을 선택하고 API 키를 붙여 넣으십시오.
3. TUI의 `/models`를 실행하여 우리가 추천하는 모델 목록을 볼 수 있습니다.
요청에 따라 청구되며 계정에 크레딧을 추가 할 수 있습니다.
---
## 엔드포인트
다음 API 엔드포인트를 통해 모델에 액세스할 수 있습니다.
| 모델명 | 모델명 | 엔드포인트 | AI SDK Package |
| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | 일본
| GPT 5.2 코덱 | gpt-5.2 코덱 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | 후쿠오카현
| GPT 5.1 코덱 | gpt-5.1-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 코덱 맥스 | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 코덱 미니 | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | 일본
| GPT 5 코덱 | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 나노 | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| 클로드손넷 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| 클로드 아들넷 4 | 클로드슨넷-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| 클로드 하이쿠 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| 클로드 하이쿠 3.5 | claude-3-5-haiku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| 클로드 오푸스 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| 클로드 오푸스 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| 클로드 오푸스 4.1 | 클로드오푸스-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| 젬니 3 프로 | 젬니 3 프로 | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
| 젬니 3 플래시 | 젬니 3 플래시 | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
| 미니 맥스 M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| 미니 맥스 M2.1 무료 | 미니max-m2.1-무료 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | 일본
| GLM 4.7 무료 | glm-4.7-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | 일본
| 김이 K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| 김이 K2.5 무료 | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| 김이 K2 생각 | kimi-k2-thinking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| 김이 K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Qwen3 코더 480B | Qwen3- 코더 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| 빅클래스 | 빅클래스 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
OpenCode config에서 [model id](/docs/config/#models)
형식 `opencode/<model-id>`를 사용합니다. 예를 들어, GPT 5.2 Codex의 경우,
설정에서 `opencode/gpt-5.2-codex`를 사용합니다.
---
## 모델
사용할 수 있는 모델과 메타데이터의 전체 목록은 다음과 같습니다:
```
https://opencode.ai/zen/v1/models
```
---
## 가격
우리는 pay-as-you-go 모델을 지원합니다. 아래는 1M 토큰 ** 당 가격입니다.
| 모델 | 입력 | 출력 | 통번역 | 통번역
| --------------------------------- | ------ | ------ | ----------- | ------------ |
| 빅클래스 | 무료 | | 무료 | | | |
| MiniMax M2.1 무료 | | 무료 | | | |
| 최소 M2.1 | 0.30 | $1.20 | 0.10 | - |
| GLM 4.7 무료 | | 무료 | | | | |
인포메이션 인포메이션 인포메이션 인포메이션 인포메이션
| GLM 4.6 | $0.60 | $2.20 | 0.10 | - |
| 김이 K2.5 무료 | | | 무료 | | | | |
| 김이 K2.5 | $0.60 | $3.00 | $0.08 | - |
| 김이 K2 생각 | $ 0.40 | $2.50 | - | - |
| 김이 K2 | 0.40 | $2.50 | - | - |
| Qwen3 코더 480B | $0.45 | $1.50 | - | - |
| 클로드손넷 4.5(≤ 200K 토큰) | $3.00 | $15.00 | $0.30 | $3.75 |
| 클로드손넷 4.5(> 200K 토큰) | $6.00 | $22.50 | $0.60 | $7.50 |
| 클로드 소네넷 4(≤ 200K 토큰) | $3.00 | $15.00 | $0.30 | $3.75 |
| 클로드 소네넷 4(> 200K 토큰) | $6.00 | $22.50 | $0.60 | $7.50 |
| 클레어 하이쿠 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
| 클레어 하이쿠 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
| 클로드 오푸스 4.6 (≤ 200K 토큰) | $5.00 | $25.00 | $0.50 | $6.25 |
| 클로드 오푸스 4.6 (> 200K 토큰) | $10.00 | $37.50 | $1.00 | $12.50 |
| 클로드 오푸스 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
인포메이션 인포메이션 인포메이션 인포메이션 인포메이션
| 젬니 3 프로 (≤ 200K 토큰) | $2.00 | $12.00 | $0.20 | - |
| 젬니 3 프로 (> 200K 토큰) | $4.00 | $18.00 | $0.40 | - |
인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션
인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 인포메이션 센터
| GPT 5.2 코덱 | $1.75 | $14.00 | $0.175 | - |
인포메이션 인포메이션 인포메이션 인포메이션 인포메이션
| GPT 5.1 코덱 | $1.07 | $8.50 | $0.107 | - |
| GPT 5.1 Codex Max | $10.00 | $0.125 | - |
| GPT 5.1 코덱 미니 | $0.25 | $2.00 | $0.025 | - |
| GPT 5 인| $1.07 | $8.50 | $0.107 | - |
| GPT 5 코드 | $1.07 | $8.50 | $0.107 | - |
| GPT 5 나노 | 무료 | | 무료 | | | |
You might notice Claude Haiku 3.5 사용 역사. 이것은 세션의 제목을 생성하는 데 사용되는 [low cost model](/docs/config/#models)입니다.
:::note
신용 카드 수수료는 비용 (4.4% + 거래 당 $0.30)에 따라 전달됩니다. 우리는 그 이상을 청구하지 않습니다.
:::
무료 모델:
- GLM의 4.7 제한된 시간에 OpenCode에서 무료로 사용할 수 있습니다. 팀은 피드백을 수집하고 모델을 개선하기 위해이 시간을 사용합니다.
- 김이 K2.5 제한된 시간에 OpenCode에서 무료로 사용할 수 있습니다. 팀은 피드백을 수집하고 모델을 개선하기 위해이 시간을 사용합니다.
- 미니 맥스 M2.1 제한된 시간에 OpenCode에서 무료로 사용할 수 있습니다. 팀은 피드백을 수집하고 모델을 개선하기 위해이 시간을 사용합니다.
- Big Pickle은 제한된 시간 동안 OpenCode에서 무료 훔친 모델입니다. 팀은 피드백을 수집하고 모델을 개선하기 위해이 시간을 사용합니다.
<a href={email}>Contact us</a> if you have any questions.
---
### 자동 로드
잔액이 $ 5 미만인 경우 Zen은 $ 20를 자동으로 다시로드합니다.
자동로드 금액을 변경할 수 있습니다. 또한 완전히 자동 부하를 비활성화 할 수 있습니다.
---
## 월간 제한
또한 전체 작업 공간에 대한 월간 사용 제한을 설정할 수 있습니다.
당신의 팀의 일원.
예를 들어, 매달 사용 제한을 $20로 설정하면 Zen은 사용하지 않습니다.
한 달에 $ 20 이상. 그러나 자동 로드가 활성화되면 Zen이 종료 될 수 있습니다.
잔액이 $5 미만인 경우 $20 이상 충전.
---
## 개인 정보
우리의 모든 모델은 미국에서 호스팅됩니다. 우리의 공급자는 제로 보유 정책을 따르고 모형 훈련을 위한 당신의 자료를 이용하지 않습니다, 뒤에 오는 예외로:
- Big Pickle : 무료 기간 동안 수집 된 데이터는 모델을 개선하기 위해 사용될 수있다.
- GLM 4.7 무료 : 무료 기간 동안 수집 된 데이터는 모델을 개선하기 위해 사용될 수있다.
- Kimi K2.5 무료 : 무료 기간 동안 수집 된 데이터는 모델을 개선하기 위해 사용될 수있다.
- MiniMax M2.1 무료 : 무료 기간 동안 수집 된 데이터는 모델을 개선하기 위해 사용될 수있다.
- OpenAI APIs: 요청은 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data)에 따라 30일 동안 유지됩니다.
- Anthropic APIs : 요청은 [Anthropic's Data Policies] (https://docs.anthropic.com/en/docs/claude-code/data-usage)에 따라 30 일 동안 유지됩니다.
---
## 팀
Zen은 팀을 위해 잘 작동합니다. 팀메이트를 초대 할 수 있습니다, 역할 할당, curate
당신의 팀 용도 및 더 많은 모델을.
:::note
Workspaces는 현재 베타의 일부로 팀에 무료로 제공됩니다.
:::
작업 공간 관리는 현재 베타의 일부로 팀에 무료로 제공됩니다. 우리는
가격을 곧 공유하십시오.
---
## 역할
작업 공간에 팀메이트를 초대하고 역할 할당 할 수 있습니다.
- **Admin**: 모델, 회원, API 키 및 청구
- **회원**: 자신의 API 키만 관리
Admins는 또한 통제의 밑에 비용을 지키는 각 일원을 위한 매달 지출 한계를 놓을 수 있습니다.
---
## 모델 접근
관리자는 작업 공간에 특정 모델을 활성화하거나 비활성화 할 수 있습니다. 장애인 모델에 요청은 오류를 반환합니다.
이것은 당신이 모델의 사용을 비활성화하려는 경우 유용합니다
데이터 수집
---
## 자신의 열쇠를 가져옵니다
OpenAI 또는 Anthropic API 키를 사용하여 Zen에서 다른 모델에 액세스 할 수 있습니다.
자신의 키를 사용할 때, 토큰은 Zen에 의해 공급자에 의해 직접 청구됩니다.
예를 들어, 조직은 이미 OpenAI 또는 Anthropic에 대한 열쇠가있을 수 있습니다.
Zen이 제공하는 것을 대신 사용하고 싶습니다.
---
## 목표
OpenCode Zen을 생성했습니다.
1. **Benchmark ** 코딩 에이전트에 대한 최고의 모델 / 프로바이더.
2. ** 고품질 ** 옵션에 액세스하고 더 싼 공급자에 고급 성능 또는 노선을 내리지 마십시오.
3. 비용에 판매해서 ** 가격 하락 **를 따라 통과하십시오; 그래서 단지 감적은 우리의 가공 비용을 커버하는 것입니다.
4. 잠금 해제 ** 다른 코딩 에이전트와 함께 사용할 수 있도록. 그리고 항상 OpenCode와 다른 모든 공급자를 사용할 수 있습니다.