mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-10 02:39:56 +00:00
chore(docs): i18n sync (#15417)
This commit is contained in:
@@ -14,10 +14,11 @@ OpenCode는 **JSON**과 **JSONC**(주석이 포함된 JSON) 형식을 모두 지
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
// Theme configuration
|
||||
"theme": "opencode",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"autoupdate": true,
|
||||
"server": {
|
||||
"port": 4096,
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
@@ -33,7 +34,7 @@ config 파일은 **교체되지 않고 병합**됩니다.
|
||||
|
||||
config 파일은 서로 대체되는 방식이 아니라 병합됩니다. 아래 config 위치의 설정이 결합되며, 충돌하는 key에 대해서만 나중에 로드된 config가 앞선 값을 override합니다. 충돌하지 않는 설정은 모두 유지됩니다.
|
||||
|
||||
예를 들어, 전역 config에 `theme: "opencode"`와 `autoupdate: true`가 있고 프로젝트 config에 `model: "anthropic/claude-sonnet-4-5"`가 있으면 최종 config에는 이 세 설정이 모두 포함됩니다.
|
||||
예를 들어, 전역 config에 `autoupdate: true`가 있고 프로젝트 config에 `model: "anthropic/claude-sonnet-4-5"`가 있으면 최종 config에는 이 설정이 모두 포함됩니다.
|
||||
|
||||
---
|
||||
|
||||
@@ -94,7 +95,9 @@ Remote config는 가장 먼저 로드되어 기본 레이어 역할을 합니다
|
||||
|
||||
### Global
|
||||
|
||||
전역 OpenCode config는 `~/.config/opencode/opencode.json`에 두세요. theme, provider, keybind 같은 사용자 전체 기본 설정은 전역 config로 관리하세요.
|
||||
전역 OpenCode config는 `~/.config/opencode/opencode.json`에 두세요. provider, model, permissions 같은 사용자 전체 기본 설정은 전역 config로 관리하세요.
|
||||
|
||||
TUI 관련 설정은 `~/.config/opencode/tui.json`을 사용하세요.
|
||||
|
||||
전역 config는 조직의 Remote 기본값을 override합니다.
|
||||
|
||||
@@ -104,6 +107,8 @@ Remote config는 가장 먼저 로드되어 기본 레이어 역할을 합니다
|
||||
|
||||
프로젝트 루트에 `opencode.json`을 추가하세요. 프로젝트 config는 표준 config 파일 중 우선순위가 가장 높아 전역 및 Remote config를 모두 override합니다.
|
||||
|
||||
프로젝트별 TUI 설정은 `tui.json`을 함께 추가하세요.
|
||||
|
||||
:::tip
|
||||
프로젝트별 config는 프로젝트 루트에 두세요.
|
||||
:::
|
||||
@@ -142,7 +147,9 @@ custom 디렉토리는 전역 config와 `.opencode` 디렉토리 뒤에 로드
|
||||
|
||||
## Schema
|
||||
|
||||
config 파일의 schema는 [**`opencode.ai/config.json`**](https://opencode.ai/config.json)에 정의되어 있습니다.
|
||||
server/runtime config schema는 [**`opencode.ai/config.json`**](https://opencode.ai/config.json)에 정의되어 있습니다.
|
||||
|
||||
TUI config는 [**`opencode.ai/tui.json`**](https://opencode.ai/tui.json)을 사용합니다.
|
||||
|
||||
편집기에서 이 schema를 기반으로 validation과 autocomplete를 사용할 수 있습니다.
|
||||
|
||||
@@ -150,28 +157,24 @@ config 파일의 schema는 [**`opencode.ai/config.json`**](https://opencode.ai/c
|
||||
|
||||
### TUI
|
||||
|
||||
`tui` 옵션으로 TUI 관련 설정을 구성할 수 있습니다.
|
||||
TUI 관련 설정에는 전용 `tui.json` (또는 `tui.jsonc`) 파일을 사용하세요.
|
||||
|
||||
```json title="opencode.json"
|
||||
```json title="tui.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
},
|
||||
"diff_style": "auto"
|
||||
}
|
||||
"$schema": "https://opencode.ai/tui.json",
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
},
|
||||
"diff_style": "auto"
|
||||
}
|
||||
```
|
||||
|
||||
사용 가능한 옵션:
|
||||
`OPENCODE_TUI_CONFIG`를 사용하여 사용자 지정 TUI 설정 파일을 가리킬 수 있습니다.
|
||||
|
||||
- `scroll_acceleration.enabled` - macOS 스타일 스크롤 가속을 활성화합니다. **`scroll_speed`보다 우선합니다.**
|
||||
- `scroll_speed` - 사용자 정의 스크롤 속도 배수(기본: `3`, 최소: `1`). `scroll_acceleration.enabled`가 `true`이면 무시됩니다.
|
||||
- `diff_style` - diff 렌더링 방식을 제어합니다. `"auto"`는 터미널 너비에 맞춰 조정되고, `"stacked"`는 항상 단일 컬럼으로 표시합니다.
|
||||
`opencode.json`의 기존 `theme`, `keybinds`, `tui` 키는 더 이상 사용되지 않으며(deprecated) 가능한 경우 자동으로 마이그레이션됩니다.
|
||||
|
||||
[TUI에 대해 더 알아보기](/docs/tui).
|
||||
[TUI 구성에 대해 더 알아보기](/docs/tui#configure).
|
||||
|
||||
---
|
||||
|
||||
@@ -297,12 +300,12 @@ Bearer token(`AWS_BEARER_TOKEN_BEDROCK` 또는 `/connect`)은 profile 기반 인
|
||||
|
||||
### Themes
|
||||
|
||||
`theme` 옵션으로 OpenCode config에서 사용할 theme를 설정할 수 있습니다.
|
||||
`tui.json`에서 UI 테마를 설정하세요.
|
||||
|
||||
```json title="opencode.json"
|
||||
```json title="tui.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": ""
|
||||
"$schema": "https://opencode.ai/tui.json",
|
||||
"theme": "tokyonight"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -402,11 +405,11 @@ Bearer token(`AWS_BEARER_TOKEN_BEDROCK` 또는 `/connect`)은 profile 기반 인
|
||||
|
||||
### Keybinds
|
||||
|
||||
`keybinds` 옵션으로 keybind를 커스터마이즈할 수 있습니다.
|
||||
`tui.json`에서 단축키를 사용자 지정하세요.
|
||||
|
||||
```json title="opencode.json"
|
||||
```json title="tui.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"$schema": "https://opencode.ai/tui.json",
|
||||
"keybinds": {}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -79,6 +79,32 @@ export const multiply = tool({
|
||||
|
||||
---
|
||||
|
||||
#### 기본 도구와 이름 충돌
|
||||
|
||||
커스텀 도구는 도구 이름으로 식별됩니다. 커스텀 도구가 기본 도구와 같은 이름을 사용하면 커스텀 도구가 우선순위를 갖습니다.
|
||||
|
||||
예를 들어, 이 파일은 기본 `bash` 도구를 대체합니다:
|
||||
|
||||
```ts title=".opencode/tools/bash.ts"
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Restricted bash wrapper",
|
||||
args: {
|
||||
command: tool.schema.string(),
|
||||
},
|
||||
async execute(args) {
|
||||
return `blocked: ${args.command}`
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
:::note
|
||||
의도적으로 기본 도구를 대체하려는 경우가 아니라면 고유한 이름을 사용하는 것이 좋습니다. 도구를 오버라이드하지 않고 비활성화만 하려면 [permissions](/docs/permissions)를 사용하세요.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### 인자
|
||||
|
||||
인자 타입은 `tool.schema`로 정의할 수 있습니다. `tool.schema`는 [Zod](https://zod.dev) 기반입니다.
|
||||
|
||||
@@ -3,11 +3,11 @@ title: 키바인드
|
||||
description: 키바인드를 커스터마이즈하세요.
|
||||
---
|
||||
|
||||
OpenCode에는 OpenCode config를 통해 커스터마이즈할 수 있는 keybinds 목록이 있습니다.
|
||||
OpenCode에는 `tui.json`을 통해 커스터마이즈할 수 있는 키바인드 목록이 있습니다.
|
||||
|
||||
```json title="opencode.json"
|
||||
```json title="tui.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"$schema": "https://opencode.ai/tui.json",
|
||||
"keybinds": {
|
||||
"leader": "ctrl+x",
|
||||
"app_exit": "ctrl+c,ctrl+d,<leader>q",
|
||||
@@ -117,11 +117,11 @@ keybinds에 리더 키를 꼭 사용할 필요는 없지만, 사용하는 것을
|
||||
|
||||
## 키바인드 비활성화
|
||||
|
||||
config에 해당 키를 값 `"none"`으로 추가하면 keybind를 비활성화할 수 있습니다.
|
||||
`tui.json`에 해당 키를 값 `"none"`으로 추가하면 키바인드를 비활성화할 수 있습니다.
|
||||
|
||||
```json title="opencode.json"
|
||||
```json title="tui.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"$schema": "https://opencode.ai/tui.json",
|
||||
"keybinds": {
|
||||
"session_compact": "none"
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ title: 플러그인
|
||||
description: OpenCode를 확장하기 위해 자신만의 플러그인을 작성하세요.
|
||||
---
|
||||
|
||||
플러그인은 다양한 이벤트와 사용자 정의 행동으로 후킹하여 opencode를 확장 할 수 있습니다. 플러그인을 만들 수 있습니다 새로운 기능을 추가, 외부 서비스와 통합, 또는 opencode의 기본 동작을 수정.
|
||||
플러그인은 다양한 이벤트와 사용자 정의 행동으로 후킹하여 opencode를 확장 할 수 있습니다. 플러그인을 사용하여 새로운 기능을 추가하거나, 외부 서비스와 통합하거나, opencode의 기본 동작을 수정할 수 있습니다.
|
||||
|
||||
예를 들어, 커뮤니티에 의해 생성 된 [plugins](/docs/ecosystem#plugins)를 확인하십시오.
|
||||
|
||||
@@ -11,18 +11,18 @@ description: OpenCode를 확장하기 위해 자신만의 플러그인을 작성
|
||||
|
||||
## 플러그인 사용
|
||||
|
||||
플러그인을로드하는 두 가지 방법이 있습니다.
|
||||
플러그인을 로드하는 두 가지 방법이 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 로컬 파일에서
|
||||
### 로컬 파일에서
|
||||
|
||||
플러그인 디렉토리에 JavaScript 또는 TypeScript 파일을 배치합니다.
|
||||
|
||||
- `.opencode/plugins/` - 프로젝트 레벨 플러그인
|
||||
- `~/.config/opencode/plugins/` - 글로벌 플러그인
|
||||
|
||||
이 디렉토리의 파일은 자동으로 시작에로드됩니다.
|
||||
이 디렉토리의 파일은 시작 시 자동으로 로드됩니다.
|
||||
|
||||
---
|
||||
|
||||
@@ -37,43 +37,42 @@ config 파일에 npm 패키지를 지정합니다.
|
||||
}
|
||||
```
|
||||
|
||||
일반 및 범위의 npm 패키지 모두 지원됩니다.
|
||||
일반 패키지 및 스코프 npm 패키지 모두 지원됩니다.
|
||||
|
||||
[ecosystem](/docs/ecosystem#plugins)에서 사용할 수 있는 플러그인을 찾아보세요.
|
||||
|
||||
---
|
||||
|
||||
## 플러그인이 설치되는 방법
|
||||
### 플러그인이 설치되는 방법
|
||||
|
||||
**npm 플러그인**은 시작시 Bun을 사용하여 자동으로 설치됩니다. 패키지와 그들의 의존성은 `~/.cache/opencode/node_modules/`에서 캐시됩니다.
|
||||
**npm 플러그인**은 시작시 Bun을 사용하여 자동으로 설치됩니다. 패키지와 그 의존성은 `~/.cache/opencode/node_modules/`에 캐시됩니다.
|
||||
|
||||
**로컬 플러그인**은 플러그인 디렉토리에서 직접로드됩니다. 외부 패키지를 사용하려면 구성 디렉토리 내 `package.json`를 작성해야 합니다 ([Dependencies](#dependencies)), 또는 플러그인을 npm에 게시하고 [config에 추가](/docs/config#plugins).
|
||||
**로컬 플러그인**은 플러그인 디렉토리에서 직접 로드됩니다. 외부 패키지를 사용하려면 구성 디렉토리 내에 `package.json`을 작성해야 하거나([의존성](#의존성) 참조), 플러그인을 npm에 게시하고 [config에 추가](/docs/config#plugins)해야 합니다.
|
||||
|
||||
---
|
||||
|
||||
## 로드 순서
|
||||
### 로드 순서
|
||||
|
||||
플러그인은 모든 소스에서로드되며 모든 후크는 순서대로 실행됩니다. 로드 순서는 다음과 같습니다:
|
||||
플러그인은 모든 소스에서 로드되며 모든 후크는 순서대로 실행됩니다. 로드 순서는 다음과 같습니다:
|
||||
|
||||
1. 글로벌 구성 (`~/.config/opencode/opencode.json`)
|
||||
2. 프로젝트 구성 (`opencode.json`)
|
||||
3. 글로벌 플러그인 디렉토리 (`~/.config/opencode/plugins/`)
|
||||
4. 프로젝트 플러그인 디렉토리 (`.opencode/plugins/`)
|
||||
|
||||
중복 npm 패키지는 한 번만 로드됩니다. 하지만, 로컬 플러그인과 같은 이름과 npm 플러그인은 모두 별도로로드됩니다.
|
||||
중복된 이름과 버전의 npm 패키지는 한 번만 로드됩니다. 하지만 로컬 플러그인과 npm 플러그인의 이름이 비슷하더라도 둘 다 별도로 로드됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 플러그인 만들기
|
||||
|
||||
플러그인은 **JavaScript/TypeScript 모듈**입니다.
|
||||
기능. 각 함수는 context 객체를 수신하고 Hooks 객체를 반환합니다.
|
||||
플러그인은 하나 이상의 플러그인 함수를 내보내는 **JavaScript/TypeScript 모듈**입니다. 각 함수는 context 객체를 수신하고 hooks 객체를 반환합니다.
|
||||
|
||||
---
|
||||
|
||||
### 의존성
|
||||
|
||||
로컬 플러그인 및 사용자 정의 도구는 외부 npm 패키지를 사용할 수 있습니다. `package.json`를 config 디렉토리에 추가하면 필요한 의존도가 있습니다.
|
||||
로컬 플러그인 및 사용자 정의 도구는 외부 npm 패키지를 사용할 수 있습니다. config 디렉토리에 `package.json`을 추가하고 필요한 의존성을 명시하십시오.
|
||||
|
||||
```json title=".opencode/package.json"
|
||||
{
|
||||
@@ -83,7 +82,7 @@ config 파일에 npm 패키지를 지정합니다.
|
||||
}
|
||||
```
|
||||
|
||||
opencode는 `bun install`를 시작합니다. 플러그인 및 도구가 가져올 수 있습니다.
|
||||
opencode는 시작 시 `bun install`을 실행하여 이를 설치합니다. 이후 플러그인 및 도구에서 가져올 수 있습니다.
|
||||
|
||||
```ts title=".opencode/plugins/my-plugin.ts"
|
||||
import { escape } from "shescape"
|
||||
@@ -113,19 +112,19 @@ export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
|
||||
}
|
||||
```
|
||||
|
||||
플러그인 기능 수신:
|
||||
플러그인 함수가 받는 인자:
|
||||
|
||||
- `project`: 현재 프로젝트 정보.
|
||||
- `directory`: 현재 작업 디렉토리.
|
||||
- `worktree`: git worktree 경로.
|
||||
- `client`: AI와 상호 작용을 위한 opencode SDK 클라이언트.
|
||||
- `$`: Bun's [shell API](https://bun.com/docs/runtime/shell) 명령어를 실행합니다.
|
||||
- `$`: 명령어를 실행하기 위한 Bun의 [shell API](https://bun.com/docs/runtime/shell).
|
||||
|
||||
---
|
||||
|
||||
### TypeScript 지원
|
||||
|
||||
TypeScript 플러그인의 경우 플러그인 패키지에서 유형을 가져올 수 있습니다.
|
||||
TypeScript 플러그인의 경우 플러그인 패키지에서 타입을 가져올 수 있습니다.
|
||||
|
||||
```ts title="my-plugin.ts" {1}
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
@@ -139,29 +138,29 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
|
||||
|
||||
---
|
||||
|
||||
## 이벤트
|
||||
### 이벤트
|
||||
|
||||
플러그인은 예제 섹션에서 아래에서 볼 때 이벤트에 가입 할 수 있습니다. 여기에 다른 이벤트의 목록입니다.
|
||||
플러그인은 아래 예제 섹션에서 볼 수 있듯이 이벤트를 구독할 수 있습니다. 사용 가능한 이벤트 목록은 다음과 같습니다.
|
||||
|
||||
### 명령어 이벤트
|
||||
#### 명령어 이벤트
|
||||
|
||||
- `command.executed`
|
||||
|
||||
### 파일 이벤트
|
||||
#### 파일 이벤트
|
||||
|
||||
- `file.edited`
|
||||
- `file.watcher.updated`
|
||||
|
||||
### 설치 이벤트
|
||||
#### 설치 이벤트
|
||||
|
||||
- `installation.updated`
|
||||
|
||||
### LSP 이벤트
|
||||
#### LSP 이벤트
|
||||
|
||||
- `lsp.client.diagnostics`
|
||||
- `lsp.updated`
|
||||
|
||||
### 메시지 이벤트
|
||||
#### 메시지 이벤트
|
||||
|
||||
- `message.part.removed`
|
||||
- `message.part.updated`
|
||||
@@ -173,11 +172,11 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
|
||||
- `permission.asked`
|
||||
- `permission.replied`
|
||||
|
||||
### 서버 이벤트
|
||||
#### 서버 이벤트
|
||||
|
||||
- `server.connected`
|
||||
|
||||
### 세션 이벤트
|
||||
#### 세션 이벤트
|
||||
|
||||
- `session.created`
|
||||
- `session.compacted`
|
||||
@@ -188,7 +187,7 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
|
||||
- `session.status`
|
||||
- `session.updated`
|
||||
|
||||
### Todo 이벤트
|
||||
#### Todo 이벤트
|
||||
|
||||
- `todo.updated`
|
||||
|
||||
@@ -196,7 +195,7 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
|
||||
|
||||
- `shell.env`
|
||||
|
||||
##### 도구 이벤트
|
||||
#### 도구 이벤트
|
||||
|
||||
- `tool.execute.after`
|
||||
- `tool.execute.before`
|
||||
@@ -211,11 +210,11 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree
|
||||
|
||||
## 예제
|
||||
|
||||
opencode를 확장하기 위해 사용할 수있는 플러그인의 몇 가지 예입니다.
|
||||
opencode를 확장하기 위해 사용할 수 있는 플러그인 예제입니다.
|
||||
|
||||
---
|
||||
|
||||
## 알림 보내기
|
||||
### 알림 보내기
|
||||
|
||||
특정 이벤트가 발생할 때 알림을 전송:
|
||||
|
||||
@@ -232,7 +231,7 @@ export const NotificationPlugin = async ({ project, client, $, directory, worktr
|
||||
}
|
||||
```
|
||||
|
||||
macOS에서 AppleScript를 실행하려면 `osascript`를 사용하고 있습니다. 여기에 우리는 그것을 사용하여 알림을 보낼 수 있습니다.
|
||||
macOS에서 AppleScript를 실행하기 위해 `osascript`를 사용하고 있습니다. 여기서는 알림을 보내는 데 사용합니다.
|
||||
|
||||
:::note
|
||||
opencode 데스크톱 앱을 사용하는 경우 응답이 준비되어 있거나 세션 오류가 있을 때 시스템 알림을 자동으로 보낼 수 있습니다.
|
||||
@@ -242,7 +241,7 @@ opencode 데스크톱 앱을 사용하는 경우 응답이 준비되어 있거
|
||||
|
||||
### .env 보호
|
||||
|
||||
읽기 `.env` 파일에서 opencode를 방지하십시오:
|
||||
opencode가 `.env` 파일을 읽지 못하도록 방지:
|
||||
|
||||
```javascript title=".opencode/plugins/env-protection.js"
|
||||
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
|
||||
@@ -260,7 +259,7 @@ export const EnvProtection = async ({ project, client, $, directory, worktree })
|
||||
|
||||
### Inject 환경 변수
|
||||
|
||||
환경 변수를 모든 shell 실행 (AI 도구 및 사용자 terminal)로 주사하십시오.
|
||||
모든 shell 실행(AI 도구 및 사용자 terminal)에 환경 변수 주입:
|
||||
|
||||
```javascript title=".opencode/plugins/inject-env.js"
|
||||
export const InjectEnvPlugin = async () => {
|
||||
@@ -277,7 +276,7 @@ export const InjectEnvPlugin = async () => {
|
||||
|
||||
### 사용자 정의 도구
|
||||
|
||||
플러그인은 opencode에 사용자 정의 도구를 추가 할 수 있습니다 :
|
||||
플러그인은 opencode에 사용자 정의 도구를 추가할 수 있습니다:
|
||||
|
||||
```ts title=".opencode/plugins/custom-tools.ts"
|
||||
import { type Plugin, tool } from "@opencode-ai/plugin"
|
||||
@@ -300,13 +299,17 @@ export const CustomToolsPlugin: Plugin = async (ctx) => {
|
||||
}
|
||||
```
|
||||
|
||||
`tool` helper는 opencode가 호출 할 수있는 사용자 정의 도구를 만듭니다. Zod schema 기능을 가지고 도구 정의를 반환:
|
||||
`tool` helper는 opencode가 호출할 수 있는 사용자 정의 도구를 만듭니다. Zod 스키마 함수를 받고 다음을 포함하는 도구 정의를 반환합니다:
|
||||
|
||||
- `description`: 도구는 무엇을
|
||||
- `description`: 도구가 하는 일
|
||||
- `args`: 도구의 인수에 대한 Zod 스키마
|
||||
- `execute`: 도구가 호출될 때 실행되는 기능
|
||||
- `execute`: 도구가 호출될 때 실행되는 함수
|
||||
|
||||
사용자 정의 도구는 내장 도구와 함께 opencode를 사용할 수 있습니다.
|
||||
사용자 정의 도구는 내장 도구와 함께 opencode에서 사용할 수 있습니다.
|
||||
|
||||
:::note
|
||||
플러그인 도구가 내장 도구와 같은 이름을 사용하면 플러그인 도구가 우선순위를 갖습니다.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
@@ -331,9 +334,9 @@ export const MyPlugin = async ({ client }) => {
|
||||
|
||||
---
|
||||
|
||||
## Compaction 훅
|
||||
### Compaction 훅
|
||||
|
||||
세션이 압축 될 때 포함 된 컨텍스트를 사용자 지정:
|
||||
세션이 압축될 때 포함되는 컨텍스트를 사용자 지정할 수 있습니다:
|
||||
|
||||
```ts title=".opencode/plugins/compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
@@ -355,9 +358,9 @@ Include any state that should persist across compaction:
|
||||
}
|
||||
```
|
||||
|
||||
LLM이 압축 요약을 생성하기 전에 `experimental.session.compacting` 훅이 실행됩니다. 기본 압축 프롬프트를 대체할 수 있도록 도메인 별 컨텍스트를 주입합니다.
|
||||
`experimental.session.compacting` 훅은 LLM이 연속 요약을 생성하기 전에 실행됩니다. 기본 압축 프롬프트가 놓칠 수 있는 도메인별 컨텍스트를 주입하는 데 사용하세요.
|
||||
|
||||
당신은 또한 `output.prompt`를 조정해서 조밀함을 전적으로 대체할 수 있습니다:
|
||||
또한 `output.prompt`를 설정하여 압축 프롬프트를 완전히 대체할 수도 있습니다:
|
||||
|
||||
```ts title=".opencode/plugins/custom-compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
@@ -382,4 +385,4 @@ Format as a structured prompt that a new agent can use to resume work.
|
||||
}
|
||||
```
|
||||
|
||||
`output.prompt`가 설정되면 완전히 기본 압축 프롬프트를 대체합니다. `output.context` 배열은 이 경우에 무시됩니다.
|
||||
`output.prompt`가 설정되면 기본 압축 프롬프트를 완전히 대체합니다. 이 경우 `output.context` 배열은 무시됩니다.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -117,13 +117,85 @@ try {
|
||||
|
||||
---
|
||||
|
||||
## 구조화된 출력
|
||||
|
||||
JSON 스키마와 함께 `format`을 지정하여 모델에서 구조화된 JSON 출력을 요청할 수 있습니다. 모델은 `StructuredOutput` 도구를 사용하여 스키마와 일치하는 검증된 JSON을 반환합니다.
|
||||
|
||||
### 기본 사용법
|
||||
|
||||
```typescript
|
||||
const result = await client.session.prompt({
|
||||
path: { id: sessionId },
|
||||
body: {
|
||||
parts: [{ type: "text", text: "Research Anthropic and provide company info" }],
|
||||
format: {
|
||||
type: "json_schema",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
company: { type: "string", description: "Company name" },
|
||||
founded: { type: "number", description: "Year founded" },
|
||||
products: {
|
||||
type: "array",
|
||||
items: { type: "string" },
|
||||
description: "Main products",
|
||||
},
|
||||
},
|
||||
required: ["company", "founded"],
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
// Access the structured output
|
||||
console.log(result.data.info.structured_output)
|
||||
// { company: "Anthropic", founded: 2021, products: ["Claude", "Claude API"] }
|
||||
```
|
||||
|
||||
### 출력 형식 유형
|
||||
|
||||
| 유형 | 설명 |
|
||||
| ------------- | ------------------------------------------------- |
|
||||
| `text` | 기본값. 표준 텍스트 응답 (구조화된 출력 없음) |
|
||||
| `json_schema` | 제공된 스키마와 일치하는 검증된 JSON을 반환합니다 |
|
||||
|
||||
### JSON 스키마 형식
|
||||
|
||||
`type: 'json_schema'`를 사용할 때 다음을 제공하십시오:
|
||||
|
||||
| 필드 | 유형 | 설명 |
|
||||
| ------------ | --------------- | ------------------------------------------- |
|
||||
| `type` | `'json_schema'` | 필수. JSON 스키마 모드를 지정합니다 |
|
||||
| `schema` | `object` | 필수. 출력 구조를 정의하는 JSON 스키마 객체 |
|
||||
| `retryCount` | `number` | 선택 사항. 검증 재시도 횟수 (기본값: 2) |
|
||||
|
||||
### 오류 처리
|
||||
|
||||
모델이 모든 재시도 후에도 유효한 구조화된 출력을 생성하지 못하면 응답에 `StructuredOutputError`가 포함됩니다:
|
||||
|
||||
```typescript
|
||||
if (result.data.info.error?.name === "StructuredOutputError") {
|
||||
console.error("Failed to produce structured output:", result.data.info.error.message)
|
||||
console.error("Attempts:", result.data.info.error.retries)
|
||||
}
|
||||
```
|
||||
|
||||
### 모범 사례
|
||||
|
||||
1. **명확한 설명 제공**: 모델이 추출할 데이터를 이해하는 데 도움이 되도록 스키마 속성에 명확한 설명을 제공하십시오.
|
||||
2. **`required` 사용**: 필수 필드를 지정하려면 `required`를 사용하십시오.
|
||||
3. **스키마를 집중적으로 유지**: 복잡한 중첩 스키마는 모델이 올바르게 채우기 더 어려울 수 있습니다.
|
||||
4. **적절한 `retryCount` 설정**: 복잡한 스키마의 경우 늘리고 단순한 스키마의 경우 줄이십시오.
|
||||
|
||||
---
|
||||
|
||||
## API
|
||||
|
||||
SDK는 type-safe 클라이언트를 통해 모든 서버 API를 노출합니다.
|
||||
|
||||
---
|
||||
|
||||
## 글로벌
|
||||
### 글로벌
|
||||
|
||||
| 메서드 | 설명 | 응답 |
|
||||
| ----------------- | ---------------------- | ------------------------------------ |
|
||||
@@ -142,10 +214,10 @@ console.log(health.data.version)
|
||||
|
||||
### 앱
|
||||
|
||||
| 방법 | 설명 | 응답 |
|
||||
| -------------- | ------------------------- | ----------------------------------------------- |
|
||||
| `app.log()` | 로그 항목 작성 | `boolean` |
|
||||
| `app.agents()` | 이용 가능한 모든 에이전트 | <a href={typesUrl}><code> 에이전트[]</code></a> |
|
||||
| 방법 | 설명 | 응답 |
|
||||
| -------------- | ------------------------- | ------------------------------------------- |
|
||||
| `app.log()` | 로그 항목 작성 | `boolean` |
|
||||
| `app.agents()` | 이용 가능한 모든 에이전트 | <a href={typesUrl}><code>Agent[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
@@ -167,7 +239,7 @@ const agents = await client.app.agents()
|
||||
|
||||
---
|
||||
|
||||
## 프로젝트
|
||||
### 프로젝트
|
||||
|
||||
| 방법 | 설명 | 응답 |
|
||||
| ------------------- | ----------------------- | --------------------------------------------- |
|
||||
@@ -205,7 +277,7 @@ const pathInfo = await client.path.get()
|
||||
|
||||
---
|
||||
|
||||
#### 구성
|
||||
### 구성
|
||||
|
||||
| 방법 | 설명 | 응답 |
|
||||
| -------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
@@ -224,29 +296,29 @@ const { providers, default: defaults } = await client.config.providers()
|
||||
|
||||
---
|
||||
|
||||
## 세션
|
||||
### 세션
|
||||
|
||||
| 메서드 | 설명 | 비고 |
|
||||
| ---------------------------------------------------------- | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `session.list()` | 세션 일람 | <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `session.get({ path })` | 세션 가져 오기 | <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.children({ path })` | 하위 세션 목록 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.create({ body })` | 세션 만들기 | 리턴 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.delete({ path })` | 세션 삭제 | `boolean` 반품 |
|
||||
| `session.update({ path, body })` | 업데이트 세션 속성 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.init({ path, body })` | 앱 초기화 및 `AGENTS.md` 분석 | `boolean`를 반환 |
|
||||
| `session.abort({ path })` | 운영 중인 세션 | 반품 `boolean` |
|
||||
| `session.share({ path })` | 공유 세션 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unshare({ path })` | 공유 세션 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.summarize({ path, body })` | 세션 요약 | 반품 `boolean` |
|
||||
| `session.messages({ path })` | 세션의 메시지 목록 | `{ info: `<a href={typesUrl}><code>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 })` | prompt 메시지 보내기 | `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 })` | shell 명령을 실행 | <a href={typesUrl}><code>AssistantMessage</code></a> |
|
||||
| `session.revert({ path, body })` | 메시지 다시 변환 | <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unrevert({ path })` | 메시지 되돌리기 취소 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `postSessionByIdPermissionsByPermissionId({ path, body })` | 허가 요청 대응 | 반품 `boolean` |
|
||||
| 메서드 | 설명 | 비고 |
|
||||
| ---------------------------------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `session.list()` | 세션 일람 | <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `session.get({ path })` | 세션 가져 오기 | <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.children({ path })` | 하위 세션 목록 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.create({ body })` | 세션 만들기 | 리턴 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.delete({ path })` | 세션 삭제 | `boolean` 반품 |
|
||||
| `session.update({ path, body })` | 업데이트 세션 속성 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.init({ path, body })` | 앱 초기화 및 `AGENTS.md` 분석 | `boolean`를 반환 |
|
||||
| `session.abort({ path })` | 운영 중인 세션 | 반품 `boolean` |
|
||||
| `session.share({ path })` | 공유 세션 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unshare({ path })` | 공유 세션 취소 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.summarize({ path, body })` | 세션 요약 | 반품 `boolean` |
|
||||
| `session.messages({ path })` | 세션의 메시지 목록 | `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part</code></a>`}[]` |
|
||||
| `session.message({ path })` | 메시지 상세정보 | 반품 `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
|
||||
| `session.prompt({ path, body })` | prompt 메시지 보내기 | `body.noReply: true`는 UserMessage(컨텍스트 전용)를 반환합니다. 기본값은 AI 응답과 함께 <a href={typesUrl}><code>AssistantMessage</code></a>를 반환합니다. [구조화된 출력](#구조화된-출력)을 위한 `body.outputFormat`을 지원합니다 |
|
||||
| `session.command({ path, body })` | 세션으로 명령을 전송 | `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
|
||||
| `session.shell({ path, body })` | shell 명령을 실행 | <a href={typesUrl}><code>AssistantMessage</code></a> |
|
||||
| `session.revert({ path, body })` | 메시지 다시 변환 | <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unrevert({ path })` | 메시지 되돌리기 취소 | 반품 <a href={typesUrl}><code>Session</code></a> |
|
||||
| `postSessionByIdPermissionsByPermissionId({ path, body })` | 허가 요청 대응 | 반품 `boolean` |
|
||||
|
||||
---
|
||||
|
||||
@@ -281,7 +353,7 @@ await client.session.prompt({
|
||||
|
||||
---
|
||||
|
||||
## 파일
|
||||
### 파일
|
||||
|
||||
| 방법 | 설명 | 응답 |
|
||||
| ------------------------- | ---------------------------- | -------------------------------------------------------------------------------------- |
|
||||
@@ -322,7 +394,7 @@ const content = await client.file.read({
|
||||
|
||||
---
|
||||
|
||||
#### TUI
|
||||
### TUI
|
||||
|
||||
| 방법 | 설명 | 응답 |
|
||||
| ------------------------------ | ------------------------ | --------- |
|
||||
@@ -353,7 +425,7 @@ await client.tui.showToast({
|
||||
|
||||
---
|
||||
|
||||
##### 인증
|
||||
### 인증
|
||||
|
||||
| 방법 | 설명 | 응답 |
|
||||
| ------------------- | -------------- | --------- |
|
||||
@@ -372,7 +444,7 @@ await client.auth.set({
|
||||
|
||||
---
|
||||
|
||||
## 이벤트
|
||||
### 이벤트
|
||||
|
||||
| 방법 | 설명 | 응답 |
|
||||
| ------------------- | ----------------------- | ----------------------- |
|
||||
|
||||
@@ -3,28 +3,27 @@ title: 테마
|
||||
description: 내장 테마를 선택하거나 자신만의 테마를 정의하세요.
|
||||
---
|
||||
|
||||
opencode를 사용하면 여러 내장 테마 중 하나에서 선택할 수 있으며 terminal 테마에 적응하는 테마를 사용하거나 사용자 정의 테마를 정의 할 수 있습니다.
|
||||
OpenCode를 사용하면 여러 내장 테마 중 하나에서 선택할 수 있으며 terminal 테마에 적응하는 테마를 사용하거나 사용자 정의 테마를 정의 할 수 있습니다.
|
||||
|
||||
기본적으로 opencode는 자체 `opencode` 테마를 사용합니다.
|
||||
기본적으로 OpenCode는 자체 `opencode` 테마를 사용합니다.
|
||||
|
||||
---
|
||||
|
||||
## 터미널 요구 사항
|
||||
|
||||
자신의 풀 컬러 팔레트로 올바르게 표시하려면 terminal을 지원해야합니다 ** truecolor** (24 비트 색상). 대부분의 현대 terminal은 기본적으로 이것을 지원합니다, 그러나 당신은 그것을 가능하게 할 필요가 있을지도 모릅니다:
|
||||
테마가 전체 색상 팔레트로 올바르게 표시되려면 터미널이 **truecolor** (24비트 색상)를 지원해야 합니다. 대부분의 최신 터미널은 기본적으로 이를 지원하지만, 활성화해야 할 수도 있습니다:
|
||||
|
||||
-**체크 지원**: `echo $COLORTERM` - 그것은 `truecolor` 또는 `24bit`를 출력해야 합니다
|
||||
- **지원 확인**: `echo $COLORTERM` 실행 - `truecolor` 또는 `24bit`가 출력되어야 합니다.
|
||||
- **truecolor 활성화**: 셸 프로필에서 환경 변수 `COLORTERM=truecolor`를 설정하십시오.
|
||||
- **터미널 호환성**: 터미널 에뮬레이터가 24비트 색상을 지원하는지 확인하십시오 (iTerm2, Alacritty, Kitty, Windows Terminal 및 최신 버전의 GNOME Terminal 등 대부분의 최신 터미널이 지원함).
|
||||
|
||||
- ** truecolor 사용 가능**: shell 프로파일에서 환경 변수 `COLORTERM=truecolor`를 설정
|
||||
- **Terminal 호환성 **: terminal 에뮬레이터 지원 24 비트 색상 (iTerm2, Alacritty, Kitty, Windows Terminal 및 GNOME Terminal의 최신 버전)
|
||||
|
||||
truecolor 지원 없이, 테마는 감소된 색깔 정확도로 나타날지도 모릅니다 또는 가장 가까운 256 색깔 대류로 뒤떨어질지도 모릅니다.
|
||||
truecolor 지원이 없으면 테마가 감소된 색상 정확도로 표시되거나 가장 가까운 256색 근사치로 대체될 수 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 내장 테마
|
||||
|
||||
opencode는 여러 내장 테마와 함께 제공됩니다.
|
||||
OpenCode는 여러 내장 테마와 함께 제공됩니다.
|
||||
|
||||
| 이름 | 설명 |
|
||||
| ---------------------- | ------------------------------------------------------------------- |
|
||||
@@ -46,27 +45,27 @@ opencode는 여러 내장 테마와 함께 제공됩니다.
|
||||
|
||||
## 시스템 테마
|
||||
|
||||
`system` 테마는 terminal의 색깔 계획에 자동적으로 적응시키기 위하여 디자인됩니다. 고정 색상을 사용하는 전통적인 테마와 달리, system 테마:
|
||||
`system` 테마는 터미널의 색상 스키마에 자동으로 적응하도록 설계되었습니다. 고정 색상을 사용하는 기존 테마와 달리, system 테마는:
|
||||
|
||||
- **그레이스케일**: terminal의 배경 색상을 기반으로 사용자 정의 회색 가늠자를 만들고 최적의 대조를 보장합니다.
|
||||
- ** ANSI 색상 사용 ** : terminal의 색상 팔레트를 존중하는 구문 강조 및 UI 요소에 대한 표준 ANSI 색상 (0-15).
|
||||
- ** terminal 기본 사항**: `none` 텍스트 및 배경 색상을 사용하여 terminal의 네이티브 외관을 유지합니다.
|
||||
- **그레이스케일 생성**: 터미널의 배경 색상을 기반으로 사용자 정의 그레이스케일을 생성하여 최적의 대비를 보장합니다.
|
||||
- **ANSI 색상 사용**: 구문 강조 및 UI 요소에 표준 ANSI 색상(0-15)을 활용하여 터미널의 색상 팔레트를 존중합니다.
|
||||
- **터미널 기본값 유지**: 텍스트 및 배경 색상에 `none`을 사용하여 터미널의 기본 모양을 유지합니다.
|
||||
|
||||
시스템 테마는 사용자를위한 것입니다 :
|
||||
시스템 테마는 다음과 같은 사용자에게 적합합니다:
|
||||
|
||||
- opencode가 terminal의 외관과 일치해야 합니다.
|
||||
- 사용자 정의 terminal 색상 구성
|
||||
- 모든 terminal 응용 분야의 일관된 모습
|
||||
- OpenCode가 터미널의 모양과 일치하기를 원하는 경우
|
||||
- 사용자 정의 터미널 색상 스키마를 사용하는 경우
|
||||
- 모든 터미널 애플리케이션에서 일관된 모양을 선호하는 경우
|
||||
|
||||
---
|
||||
|
||||
## 테마 사용
|
||||
|
||||
테마를 `/theme` 명령어로 선택하여 테마를 선택할 수 있습니다. 또는 [config](/docs/config)에서 지정할 수 있습니다.
|
||||
`/theme` 명령어로 테마 선택기를 불러와 테마를 선택할 수 있습니다. 또는 `tui.json`에서 지정할 수 있습니다.
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
```json title="tui.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"$schema": "https://opencode.ai/tui.json",
|
||||
"theme": "tokyonight"
|
||||
}
|
||||
```
|
||||
@@ -75,32 +74,35 @@ opencode는 여러 내장 테마와 함께 제공됩니다.
|
||||
|
||||
## 사용자 정의 테마
|
||||
|
||||
opencode는 사용자가 쉽게 테마를 만들 수 있도록 유연한 JSON 기반 테마 시스템을 지원합니다.
|
||||
OpenCode는 사용자가 쉽게 테마를 만들고 사용자 정의할 수 있도록 유연한 JSON 기반 테마 시스템을 지원합니다.
|
||||
|
||||
---
|
||||
|
||||
##### 계층 구조
|
||||
### 계층 구조
|
||||
|
||||
테마는 다음과 같은 순서에서 여러 디렉토리에서로드됩니다. 나중에 감독은 이전 것을 무시합니다.
|
||||
테마는 다음 순서대로 여러 디렉토리에서 로드되며, 나중 디렉토리가 이전 디렉토리를 덮어씁니다:
|
||||
|
||||
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`에서 정의
|
||||
1. **내장 테마 (Built-in themes)** - 바이너리에 내장되어 있습니다.
|
||||
2. **사용자 설정 디렉토리 (User config directory)** - `~/.config/opencode/themes/*.json` 또는 `$XDG_CONFIG_HOME/opencode/themes/*.json`에 정의됩니다.
|
||||
3. **프로젝트 루트 디렉토리 (Project root directory)** - `<project-root>/.opencode/themes/*.json`에 정의됩니다.
|
||||
4. **현재 작업 디렉토리 (Current working directory)** - `./.opencode/themes/*.json`에 정의됩니다.
|
||||
|
||||
여러 디렉토리가 같은 이름을 가진 테마를 포함한다면, 더 높은 우선 순위를 가진 디렉토리의 테마가 사용됩니다.
|
||||
여러 디렉토리에 같은 이름의 테마가 있는 경우, 더 높은 우선 순위를 가진 디렉토리의 테마가 사용됩니다.
|
||||
|
||||
---
|
||||
|
||||
### 테마 만들기
|
||||
|
||||
사용자 정의 테마를 만들려면 테마 디렉토리 중 하나에서 JSON 파일을 만듭니다.
|
||||
사용자 정의 테마를 만들려면 테마 디렉토리 중 하나에 JSON 파일을 만듭니다.
|
||||
|
||||
사용자 넓은 테마:
|
||||
사용자 전역 테마:
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p ~/.config/opencode/themes
|
||||
vim ~/.config/opencode/themes/my-theme.json
|
||||
```
|
||||
|
||||
프로젝트 별 테마.
|
||||
프로젝트별 테마:
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p .opencode/themes
|
||||
@@ -111,35 +113,34 @@ vim .opencode/themes/my-theme.json
|
||||
|
||||
### JSON 형식
|
||||
|
||||
테마는 유연한 JSON 형식을 사용하여 지원:
|
||||
테마는 다음을 지원하는 유연한 JSON 형식을 사용합니다:
|
||||
|
||||
-**Hex 색상**: `"#ffffff"`
|
||||
|
||||
- ** ANSI 색상**: `3` (0-255)
|
||||
- ** 색상 참조 ** : `"primary"` 또는 사용자 정의 정의
|
||||
- ** 어두운 / 조명 변형 ** : `{"dark": "#000", "light": "#fff"}`
|
||||
- ** 색상 없음 ** : `"none"` - terminal의 기본 색상 또는 투명 사용
|
||||
- **Hex 색상**: `"#ffffff"`
|
||||
- **ANSI 색상**: `3` (0-255)
|
||||
- **색상 참조**: `"primary"` 또는 사용자 정의 정의
|
||||
- **다크/라이트 변형**: `{"dark": "#000", "light": "#fff"}`
|
||||
- **색상 없음**: `"none"` - 터미널의 기본 색상 또는 투명 사용
|
||||
|
||||
---
|
||||
|
||||
### 색상 정의
|
||||
|
||||
`defs` 단면도는 선택적이고 당신은 주제에서 참조될 수 있는 재사용할 수 있는 색깔을 정의할 수 있습니다.
|
||||
`defs` 섹션은 선택 사항이며 테마 내에서 참조할 수 있는 재사용 가능한 색상을 정의할 수 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 터미널 기본값
|
||||
### 터미널 기본값
|
||||
|
||||
특별한 가치 `"none"`는 terminal의 기본 색깔을 상속하기 위하여 어떤 색깔든지를 위해 사용될 수 있습니다. 이것은 특히 당신의 terminal의 색깔 계획과 이음새가 없는 혼합 테마 창조를 위해 유용합니다:
|
||||
`"none"`이라는 특별한 값은 모든 색상에 대해 터미널의 기본 색상을 상속하는 데 사용할 수 있습니다. 이는 특히 터미널의 색상 스키마와 매끄럽게 어우러지는 테마를 만들 때 유용합니다:
|
||||
|
||||
- `"text": "none"` - terminal의 기본 전경 색상 사용
|
||||
- `"background": "none"` - terminal의 기본 배경 색상 사용
|
||||
- `"text": "none"` - 터미널의 기본 전경색 사용
|
||||
- `"background": "none"` - 터미널의 기본 배경색 사용
|
||||
|
||||
---
|
||||
|
||||
### 예제
|
||||
|
||||
사용자 정의 테마의 예입니다 :
|
||||
사용자 정의 테마의 예입니다:
|
||||
|
||||
```json title="my-theme.json"
|
||||
{
|
||||
|
||||
@@ -5,9 +5,9 @@ description: OpenCode 터미널 사용자 인터페이스 사용.
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
opencode는 LLM과 함께 프로젝트를 위해 대화형 terminal 인터페이스 또는 TUI를 제공합니다.
|
||||
OpenCode는 LLM과 함께 프로젝트 작업을 하기 위한 대화형 터미널 인터페이스(TUI)를 제공합니다.
|
||||
|
||||
opencode는 현재 디렉토리에 TUI를 시작합니다.
|
||||
OpenCode를 실행하면 현재 디렉토리에서 TUI가 시작됩니다.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
@@ -19,7 +19,7 @@ opencode
|
||||
opencode /path/to/project
|
||||
```
|
||||
|
||||
TUI에 있다면 메시지가 표시됩니다.
|
||||
TUI에 들어가면 메시지를 입력하여 프롬프트할 수 있습니다.
|
||||
|
||||
```text
|
||||
Give me a quick summary of the codebase.
|
||||
@@ -29,10 +29,10 @@ Give me a quick summary of the codebase.
|
||||
|
||||
## 파일 참조
|
||||
|
||||
`@`를 사용하여 메시지에 파일을 참조 할 수 있습니다. 이것은 현재 작업 디렉토리에서 fuzzy 파일 검색입니다.
|
||||
`@`를 사용하여 메시지에서 파일을 참조할 수 있습니다. 이것은 현재 작업 디렉토리에서 퍼지(fuzzy) 파일 검색을 수행합니다.
|
||||
|
||||
:::tip
|
||||
`@`를 사용하여 메시지의 참조 파일을 사용할 수 있습니다.
|
||||
`@`를 사용하여 메시지에서 파일을 참조할 수 있습니다.
|
||||
:::
|
||||
|
||||
```text "@packages/functions/src/api/index.ts"
|
||||
@@ -45,7 +45,7 @@ How is auth handled in @packages/functions/src/api/index.ts?
|
||||
|
||||
## Bash 명령
|
||||
|
||||
`!`를 사용하여 shell 명령을 실행합니다.
|
||||
`!`로 메시지를 시작하여 셸 명령을 실행합니다.
|
||||
|
||||
```bash frame="none"
|
||||
!ls -la
|
||||
@@ -57,21 +57,21 @@ How is auth handled in @packages/functions/src/api/index.ts?
|
||||
|
||||
## 명령
|
||||
|
||||
opencode TUI를 사용할 때, `/`를 입력하여 명령 이름을 따라 작업을 신속하게 실행할 수 있습니다. 예를 들면:
|
||||
OpenCode TUI를 사용할 때 `/` 뒤에 명령 이름을 입력하여 작업을 빠르게 실행할 수 있습니다. 예를 들어:
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
대부분의 명령은 `ctrl+x`를 `ctrl+x`가 기본 리더 키입니다. [더 알아보기](/docs/keybinds).
|
||||
대부분의 명령에는 기본 리더 키인 `ctrl+x`를 사용하는 키바인드도 있습니다. [더 알아보기](/docs/keybinds).
|
||||
|
||||
여기에 모든 가능한 슬래시 명령이 있습니다.
|
||||
사용 가능한 모든 슬래시 명령은 다음과 같습니다:
|
||||
|
||||
---
|
||||
|
||||
### /connect
|
||||
### connect
|
||||
|
||||
opencode에 대한 공급자를 추가합니다. 사용 가능한 공급자에서 선택하고 API 키를 추가 할 수 있습니다.
|
||||
OpenCode에 공급자를 추가합니다. 사용 가능한 공급자 중에서 선택하고 API 키를 추가할 수 있습니다.
|
||||
|
||||
```bash frame="none"
|
||||
/connect
|
||||
@@ -79,67 +79,67 @@ opencode에 대한 공급자를 추가합니다. 사용 가능한 공급자에
|
||||
|
||||
---
|
||||
|
||||
### /compact
|
||||
### compact
|
||||
|
||||
현재 세션을 압축합니다. 앨리스 : `/summarize`
|
||||
현재 세션을 압축합니다. _별칭_: `/summarize`
|
||||
|
||||
```bash frame="none"
|
||||
/compact
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x c`
|
||||
**키바인드:** `ctrl+x c`
|
||||
|
||||
---
|
||||
|
||||
### /details
|
||||
### details
|
||||
|
||||
토글 툴 실행 세부 사항.
|
||||
도구 실행 세부 정보 토글.
|
||||
|
||||
```bash frame="none"
|
||||
/details
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x d`
|
||||
**키바인드:** `ctrl+x d`
|
||||
|
||||
---
|
||||
|
||||
### /editor
|
||||
### editor
|
||||
|
||||
메시지를 작성하기 위한 외부 편집기를 엽니다. `EDITOR` 환경에서 설정된 편집기를 사용합니다. [더 알아보기](#editor-setup).
|
||||
메시지 작성을 위한 외부 편집기를 엽니다. `EDITOR` 환경 변수에 설정된 편집기를 사용합니다. [더 알아보기](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/editor
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x e`
|
||||
**키바인드:** `ctrl+x e`
|
||||
|
||||
---
|
||||
|
||||
### /exit
|
||||
### exit
|
||||
|
||||
opencode를 종료합니다. Aliases : `/quit`, `/q`
|
||||
OpenCode를 종료합니다. _별칭_: `/quit`, `/q`
|
||||
|
||||
```bash frame="none"
|
||||
/exit
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x q`
|
||||
**키바인드:** `ctrl+x q`
|
||||
|
||||
---
|
||||
|
||||
### /export
|
||||
### export
|
||||
|
||||
Markdown에 대한 현재 대화를 내보내고 기본 편집기에서 열립니다. `EDITOR` 환경에서 설정된 편집기를 사용합니다. [더 알아보기](#editor-setup).
|
||||
현재 대화를 Markdown으로 내보내고 기본 편집기에서 엽니다. `EDITOR` 환경 변수에 설정된 편집기를 사용합니다. [더 알아보기](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/export
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x x`
|
||||
**키바인드:** `ctrl+x x`
|
||||
|
||||
---
|
||||
|
||||
### /help
|
||||
### help
|
||||
|
||||
도움말 대화 상자를 표시합니다.
|
||||
|
||||
@@ -147,107 +147,106 @@ Markdown에 대한 현재 대화를 내보내고 기본 편집기에서 열립
|
||||
/help
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x h`
|
||||
**키바인드:** `ctrl+x h`
|
||||
|
||||
---
|
||||
|
||||
###### /init
|
||||
### init
|
||||
|
||||
`AGENTS.md` 파일을 만들거나 업데이트하십시오. [더 알아보기](/docs/rules).
|
||||
`AGENTS.md` 파일을 생성하거나 업데이트합니다. [더 알아보기](/docs/rules).
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x i`
|
||||
**키바인드:** `ctrl+x i`
|
||||
|
||||
---
|
||||
|
||||
## /models
|
||||
### models
|
||||
|
||||
사용 가능한 모델 목록.
|
||||
사용 가능한 모델 목록을 표시합니다.
|
||||
|
||||
```bash frame="none"
|
||||
/models
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x m`
|
||||
**키바인드:** `ctrl+x m`
|
||||
|
||||
---
|
||||
|
||||
## /new
|
||||
### new
|
||||
|
||||
새로운 세션을 시작합니다. 앨리스 : `/clear`
|
||||
새 세션을 시작합니다. _별칭_: `/clear`
|
||||
|
||||
```bash frame="none"
|
||||
/new
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x n`
|
||||
**키바인드:** `ctrl+x n`
|
||||
|
||||
---
|
||||
|
||||
##### /redo
|
||||
### redo
|
||||
|
||||
이전 undone 메시지 Redo. `/undo`를 사용하는 후에만 유효한.
|
||||
이전에 실행 취소한 메시지를 다시 실행합니다. `/undo`를 사용한 후에만 사용할 수 있습니다.
|
||||
|
||||
:::tip
|
||||
모든 파일 변경도 복원됩니다.
|
||||
모든 파일 변경 사항도 복원됩니다.
|
||||
:::
|
||||
|
||||
내부적으로 Git을 사용하여 파일 변경을 관리합니다. 그래서 프로젝트 **
|
||||
Git 저장소**입니다.
|
||||
내부적으로 Git을 사용하여 파일 변경 사항을 관리합니다. 따라서 프로젝트가 **Git 저장소**여야 합니다.
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x r`
|
||||
**키바인드:** `ctrl+x r`
|
||||
|
||||
---
|
||||
|
||||
## /sessions
|
||||
### sessions
|
||||
|
||||
세션 간 목록 및 전환. Aliases : `/resume`, `/continue`
|
||||
세션 목록을 표시하고 세션 간을 전환합니다. _별칭_: `/resume`, `/continue`
|
||||
|
||||
```bash frame="none"
|
||||
/sessions
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x l`
|
||||
**키바인드:** `ctrl+x l`
|
||||
|
||||
---
|
||||
|
||||
## 공유
|
||||
### share
|
||||
|
||||
현재 세션 공유. [더 알아보기](/docs/share).
|
||||
현재 세션을 공유합니다. [더 알아보기](/docs/share).
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x s`
|
||||
**키바인드:** `ctrl+x s`
|
||||
|
||||
---
|
||||
|
||||
## /theme
|
||||
### themes
|
||||
|
||||
사용할 수 있는 테마 목록.
|
||||
사용 가능한 테마 목록을 표시합니다.
|
||||
|
||||
```bash frame="none"
|
||||
/theme
|
||||
/themes
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x t`
|
||||
**키바인드:** `ctrl+x t`
|
||||
|
||||
---
|
||||
|
||||
### /thinking
|
||||
### thinking
|
||||
|
||||
대화의 사고/거주 블록의 가시성을 토합니다. 사용할 때, 확장 된 생각을 지원하는 모델의 이유 프로세스를 볼 수 있습니다.
|
||||
대화에서 생각/추론 블록의 가시성을 토글합니다. 활성화하면 확장된 사고를 지원하는 모델의 추론 과정을 볼 수 있습니다.
|
||||
|
||||
:::note
|
||||
이 명령은 생각 블록이 ** 표시되었는지 여부 만 제어 ** - 모델의 소싱 기능을 활성화하거나 비활성화하지 않습니다. toggle 실제적인 reasoning 기능에, 모형 변종을 통해서 주기 위하여 `ctrl+t`를 이용합니다.
|
||||
이 명령은 생각 블록이 **표시되는지 여부만 제어**하며 모델의 추론 기능을 활성화하거나 비활성화하지 않습니다. 실제 추론 기능을 토글하려면 `ctrl+t`를 사용하여 모델 변형을 순환하십시오.
|
||||
:::
|
||||
|
||||
```bash frame="none"
|
||||
@@ -256,28 +255,27 @@ Git 저장소**입니다.
|
||||
|
||||
---
|
||||
|
||||
##### /undo
|
||||
### undo
|
||||
|
||||
대화에서 마지막 메시지. 가장 최근의 사용자 메시지, 모든 후속 응답 및 모든 파일 변경 제거.
|
||||
대화의 마지막 메시지를 실행 취소합니다. 가장 최근의 사용자 메시지, 모든 후속 응답 및 모든 파일 변경 사항을 제거합니다.
|
||||
|
||||
:::tip
|
||||
어떤 파일 변경도 복제됩니다.
|
||||
모든 파일 변경 사항도 되돌려집니다.
|
||||
:::
|
||||
|
||||
내부적으로 Git을 사용하여 파일 변경을 관리합니다. 그래서 프로젝트 **
|
||||
Git 저장소**입니다.
|
||||
내부적으로 Git을 사용하여 파일 변경 사항을 관리합니다. 따라서 프로젝트가 **Git 저장소**여야 합니다.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
** Keybind:** `ctrl+x u`
|
||||
**키바인드:** `ctrl+x u`
|
||||
|
||||
---
|
||||
|
||||
#### /unshare
|
||||
### unshare
|
||||
|
||||
Unshare 현재 세션. [더 알아보기](/docs/share#un-sharing).
|
||||
현재 세션 공유를 취소합니다. [더 알아보기](/docs/share#un-sharing).
|
||||
|
||||
```bash frame="none"
|
||||
/unshare
|
||||
@@ -285,9 +283,9 @@ Unshare 현재 세션. [더 알아보기](/docs/share#un-sharing).
|
||||
|
||||
---
|
||||
|
||||
## 편집기 설정
|
||||
## Editor setup
|
||||
|
||||
`/editor`와 `/export` 명령 모두는 `EDITOR` 환경변수에서 지정된 편집기를 사용합니다.
|
||||
`/editor`와 `/export` 명령 모두 `EDITOR` 환경 변수에 지정된 편집기를 사용합니다.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Linux/macOS">
|
||||
@@ -301,8 +299,7 @@ Unshare 현재 세션. [더 알아보기](/docs/share#un-sharing).
|
||||
export EDITOR="code --wait"
|
||||
```
|
||||
|
||||
영원한 만들기 위하여, 당신의 shell 프로파일에 이것을 추가하십시오;
|
||||
`~/.bashrc`, `~/.zshrc`, 등.
|
||||
영구적으로 설정하려면 셸 프로필(`~/.bashrc`, `~/.zshrc` 등)에 추가하십시오.
|
||||
|
||||
</TabItem>
|
||||
|
||||
@@ -315,8 +312,7 @@ Unshare 현재 세션. [더 알아보기](/docs/share#un-sharing).
|
||||
set EDITOR=code --wait
|
||||
```
|
||||
|
||||
영구적으로, use **System Properties** > ** 환경
|
||||
변수**.
|
||||
영구적으로 설정하려면 **시스템 속성** > **환경 변수**를 사용하십시오.
|
||||
|
||||
</TabItem>
|
||||
|
||||
@@ -329,62 +325,72 @@ Unshare 현재 세션. [더 알아보기](/docs/share#un-sharing).
|
||||
$env:EDITOR = "code --wait"
|
||||
```
|
||||
|
||||
영구적으로 만들려면 PowerShell 프로파일에 추가하십시오.
|
||||
영구적으로 설정하려면 PowerShell 프로필에 추가하십시오.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
인기있는 편집기 옵션은 다음과 같습니다 :
|
||||
인기 있는 편집기 옵션은 다음과 같습니다:
|
||||
|
||||
- `code` - Visual Studio 코드
|
||||
- `cursor` - 커서
|
||||
- `windsurf` - 윈드 서핑
|
||||
- `nvim` - Neovim 편집기
|
||||
- `vim` - Vim 편집기
|
||||
- `nano` - 나노 편집기
|
||||
- `notepad` - 윈도우 노트패드
|
||||
- `subl` - 승화 텍스트
|
||||
- `code` - Visual Studio Code
|
||||
- `cursor` - Cursor
|
||||
- `windsurf` - Windsurf
|
||||
- `nvim` - Neovim editor
|
||||
- `vim` - Vim editor
|
||||
- `nano` - Nano editor
|
||||
- `notepad` - Windows Notepad
|
||||
- `subl` - Sublime Text
|
||||
|
||||
:::note
|
||||
VS Code와 같은 일부 편집기는 `--wait` 플래그와 함께 시작해야합니다.
|
||||
VS Code와 같은 일부 편집기는 `--wait` 플래그와 함께 시작해야 합니다.
|
||||
:::
|
||||
|
||||
일부 편집기는 명령줄 인수가 차단 모드에서 실행되어야 합니다. `--wait` 플래그는 닫힐 때까지 편집기 프로세스 블록을 만듭니다.
|
||||
일부 편집기는 차단 모드에서 실행하려면 명령줄 인수가 필요합니다. `--wait` 플래그는 편집기 프로세스가 닫힐 때까지 차단되도록 합니다.
|
||||
|
||||
---
|
||||
|
||||
## 구성
|
||||
|
||||
opencode config 파일을 통해 TUI 동작을 사용자 정의할 수 있습니다.
|
||||
`tui.json` (또는 `tui.jsonc`) 파일을 통해 TUI 동작을 사용자 정의할 수 있습니다.
|
||||
|
||||
```json title="opencode.json"
|
||||
```json title="tui.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
"$schema": "https://opencode.ai/tui.json",
|
||||
"theme": "opencode",
|
||||
"keybinds": {
|
||||
"leader": "ctrl+x"
|
||||
},
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
},
|
||||
"diff_style": "auto"
|
||||
}
|
||||
```
|
||||
|
||||
이는 서버/런타임 동작을 구성하는 `opencode.json`과는 별개입니다.
|
||||
|
||||
### 옵션
|
||||
|
||||
- `scroll_acceleration` - 부드러운 자연 스크롤을위한 macOS 스타일 스크롤 가속 가능. 사용할 때, 스크롤 속도는 빠른 스크롤 제스처로 증가하고 느린 움직임을 위해 정확한 유지. **이 설정은 `scroll_speed`를 통해 우선 순위를 부여하고 활성화 할 때. **
|
||||
- `scroll_speed` - 스크롤 명령 (최소 : `1`)을 사용하여 TUI 스크롤을 빠르게 제어합니다. 기본 `3`. ** 참고: `scroll_acceleration.enabled`가 `true`로 설정되면 무시됩니다.**
|
||||
- `theme` - UI 테마를 설정합니다. [더 알아보기](/docs/themes).
|
||||
- `keybinds` - 키보드 단축키를 사용자 정의합니다. [더 알아보기](/docs/keybinds).
|
||||
- `scroll_acceleration.enabled` - 부드럽고 자연스러운 스크롤을 위해 macOS 스타일의 스크롤 가속을 활성화합니다. 활성화하면 빠른 스크롤 제스처로 스크롤 속도가 증가하고 느린 움직임에서는 정밀하게 유지됩니다. **이 설정은 `scroll_speed`보다 우선하며 활성화 시 이를 덮어씁니다.**
|
||||
- `scroll_speed` - 스크롤 명령을 사용할 때 TUI 스크롤 속도를 제어합니다 (최소: `0.001`, 소수점 값 지원). 기본값은 `3`입니다. **참고: `scroll_acceleration.enabled`가 `true`로 설정되면 무시됩니다.**
|
||||
- `diff_style` - diff 렌더링 방식을 제어합니다. `"auto"`는 터미널 너비에 적응하고, `"stacked"`는 항상 단일 열 레이아웃을 표시합니다.
|
||||
|
||||
`OPENCODE_TUI_CONFIG`를 사용하여 사용자 정의 TUI 설정 경로를 로드할 수 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 사용자 정의
|
||||
|
||||
명령 팔레트 (`ctrl+x h` 또는 `/help`)를 사용하여 TUI보기의 다양한 측면을 사용자 정의 할 수 있습니다. 재시작에 따른 설정 persist.
|
||||
명령 팔레트(`ctrl+x h` 또는 `/help`)를 사용하여 TUI 보기의 다양한 측면을 사용자 정의할 수 있습니다. 설정은 다시 시작해도 유지됩니다.
|
||||
|
||||
---
|
||||
|
||||
#### 사용자 이름 표시
|
||||
|
||||
사용자 이름이 채팅 메시지에 나타나는지 여부를 수정합니다. 이것을 통해 접근:
|
||||
채팅 메시지에 사용자 이름이 표시되는지 여부를 토글합니다. 다음을 통해 액세스:
|
||||
|
||||
- 명령 팔레트 : "username" 또는 "hide 사용자" 검색
|
||||
- 자동 설정은 TUI 세션을 통해 기억됩니다.
|
||||
- 명령 팔레트: "username" 또는 "hide username" 검색
|
||||
- 설정은 자동으로 유지되며 TUI 세션 간에 기억됩니다.
|
||||
|
||||
@@ -3,7 +3,7 @@ title: Zen
|
||||
description: OpenCode가 제공하는 엄선된 모델 목록.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
import config from "../../../config.mjs"
|
||||
export const console = config.console
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
@@ -55,6 +55,7 @@ OpenCode Zen은 OpenCode의 다른 제공자와 동일한 방식으로 작동합
|
||||
|
||||
| 모델 | 모델 ID | 엔드포인트 | AI SDK 패키지 |
|
||||
| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
|
||||
| GPT 5.3 Codex | gpt-5.3-codex | `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.2 Codex | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
@@ -64,28 +65,30 @@ OpenCode Zen은 OpenCode의 다른 제공자와 동일한 방식으로 작동합
|
||||
| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Sonnet 4 | claude-sonnet-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Haiku 3.5 | claude-3-5-haiku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` |
|
||||
| Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
|
||||
| Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
|
||||
| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| MiniMax M2.5 Free | minimax-m2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| MiniMax M2.1 Free | minimax-m2.1-free | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| GLM 5 | glm-5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.7 Free | glm-4.7-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 Free | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 Thinking | kimi-k2-thinking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Qwen3 Coder 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
|
||||
OpenCode 설정 파일에서 사용하는 [모델 ID](/docs/config/#models)는 `opencode/<model-id>` 형식을 따릅니다.
|
||||
OpenCode 설정 파일에서 사용하는 [모델 ID](/docs/config/#models)는 `opencode/<model-id>` 형식을 따릅니다.
|
||||
예를 들어 GPT 5.2 Codex의 경우 설정에서 `opencode/gpt-5.2-codex`와 같이 사용합니다.
|
||||
|
||||
---
|
||||
@@ -107,29 +110,34 @@ https://opencode.ai/zen/v1/models
|
||||
| 모델 | 입력 | 출력 | 캐시 읽기 | 캐시 쓰기 |
|
||||
| --------------------------------- | ------ | ------ | --------- | --------- |
|
||||
| Big Pickle | Free | Free | Free | - |
|
||||
| MiniMax M2.1 Free | Free | Free | Free | - |
|
||||
| MiniMax M2.5 Free | Free | Free | Free | - |
|
||||
| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | - |
|
||||
| MiniMax M2.1 | $0.30 | $1.20 | $0.10 | - |
|
||||
| GLM 4.7 Free | Free | Free | Free | - |
|
||||
| GLM 5 | $1.00 | $3.20 | $0.20 | - |
|
||||
| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
|
||||
| GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
|
||||
| Kimi K2.5 Free | Free | Free | Free | - |
|
||||
| Kimi K2.5 | $0.60 | $3.00 | $0.08 | - |
|
||||
| Kimi K2 Thinking | $0.40 | $2.50 | - | - |
|
||||
| Kimi K2 | $0.40 | $2.50 | - | - |
|
||||
| Qwen3 Coder 480B | $0.45 | $1.50 | - | - |
|
||||
| Claude Opus 4.6 (≤ 200K tokens) | $5.00 | $25.00 | $0.50 | $6.25 |
|
||||
| Claude Opus 4.6 (> 200K tokens) | $10.00 | $37.50 | $1.00 | $12.50 |
|
||||
| Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
|
||||
| Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
|
||||
| Claude Sonnet 4.6 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
|
||||
| Claude Sonnet 4.6 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
|
||||
| Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
|
||||
| Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
|
||||
| Claude Sonnet 4 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
|
||||
| Claude Sonnet 4 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
|
||||
| Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
|
||||
| Claude Haiku 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
|
||||
| Claude Opus 4.6 (≤ 200K tokens) | $5.00 | $25.00 | $0.50 | $6.25 |
|
||||
| Claude Opus 4.6 (> 200K tokens) | $10.00 | $37.50 | $1.00 | $12.50 |
|
||||
| Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
|
||||
| Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
|
||||
| Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - |
|
||||
| Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - |
|
||||
| Gemini 3 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - |
|
||||
| Gemini 3 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - |
|
||||
| Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - |
|
||||
| GPT 5.3 Codex | $1.75 | $14.00 | $0.175 | - |
|
||||
| GPT 5.2 | $1.75 | $14.00 | $0.175 | - |
|
||||
| GPT 5.2 Codex | $1.75 | $14.00 | $0.175 | - |
|
||||
| GPT 5.1 | $1.07 | $8.50 | $0.107 | - |
|
||||
@@ -148,8 +156,6 @@ https://opencode.ai/zen/v1/models
|
||||
|
||||
무료 모델:
|
||||
|
||||
- GLM 5 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 해당 기간 동안 팀은 사용자 피드백을 수집하고 모델을 개선할 예정입니다.
|
||||
- Kimi K2.5 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 해당 기간 동안 팀은 사용자 피드백을 수집하고 모델을 개선할 예정입니다.
|
||||
- MiniMax M2.5 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 해당 기간 동안 팀은 사용자 피드백을 수집하고 모델을 개선할 예정입니다.
|
||||
- Big Pickle은 한정된 기간 동안 OpenCode에서 무료로 제공되는 스텔스 모델입니다. 해당 기간 동안 팀은 사용자 피드백을 수집하고 모델을 개선할 예정입니다.
|
||||
|
||||
@@ -169,7 +175,7 @@ https://opencode.ai/zen/v1/models
|
||||
|
||||
워크스페이스 전체 및 각 팀 구성원별로 월간 사용 한도를 설정할 수 있습니다.
|
||||
|
||||
예를 들어 월간 사용 한도를 $20로 설정한 경우, Zen은 한 달 동안 $20을 초과하여 사용하지 않습니다.
|
||||
예를 들어 월간 사용 한도를 $20로 설정한 경우, Zen은 한 달 동안 $20을 초과하여 사용하지 않습니다.
|
||||
다만 자동 충전이 활성화되어 있는 경우, 잔액이 $5 미만으로 내려가면 자동으로 충전이 이루어질 수 있으므로 실제 청구 금액이 $20을 초과할 수 있습니다.
|
||||
|
||||
---
|
||||
@@ -179,8 +185,6 @@ https://opencode.ai/zen/v1/models
|
||||
당사의 모든 모델은 미국에서 호스팅됩니다. 당사 제공자는 데이터 무보존(zero-retention) 정책을 따르며, 아래의 예외를 제외하고는 귀하의 데이터를 모델 학습에 사용하지 않습니다.
|
||||
|
||||
- Big Pickle: 무료 제공 기간 동안 수집된 데이터는 모델 개선을 위해 사용될 수 있습니다.
|
||||
- GLM 5 Free: 무료 제공 기간 동안 수집된 데이터는 모델 개선을 위해 사용될 수 있습니다.
|
||||
- Kimi K2.5 Free: 무료 제공 기간 동안 수집된 데이터는 모델 개선을 위해 사용될 수 있습니다.
|
||||
- MiniMax M2.5 Free: 무료 제공 기간 동안 수집된 데이터는 모델 개선을 위해 사용될 수 있습니다.
|
||||
- OpenAI APIs: 요청 데이터는 [OpenAI의 데이터 정책](https://platform.openai.com/docs/guides/your-data)에 따라 30일간 보관됩니다.
|
||||
- Anthropic APIs: 요청 데이터는 [Anthropic의 데이터 정책](https://docs.anthropic.com/en/docs/claude-code/data-usage)에 따라 30일간 보관됩니다.
|
||||
|
||||
Reference in New Issue
Block a user