oh-my-opencode 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +191 -13
- package/README.md +179 -21
- package/dist/hooks/comment-checker/cli.d.ts +28 -1
- package/dist/hooks/comment-checker/constants.d.ts +0 -4
- package/dist/hooks/comment-checker/downloader.d.ts +24 -0
- package/dist/hooks/comment-checker/types.d.ts +0 -5
- package/dist/index.js +2207 -17731
- package/dist/tools/ast-grep/index.d.ts +26 -26
- package/dist/tools/ast-grep/tools.d.ts +34 -34
- package/dist/tools/index.d.ts +26 -26
- package/package.json +4 -4
- package/dist/hooks/comment-checker/detector.d.ts +0 -4
package/README.ko.md
CHANGED
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
## 목차
|
|
4
4
|
|
|
5
5
|
- [Oh My OpenCode](#oh-my-opencode)
|
|
6
|
-
- [설치](#설치)
|
|
7
6
|
- [세 줄 요약](#세-줄-요약)
|
|
8
|
-
- [
|
|
7
|
+
- [설치](#설치)
|
|
8
|
+
- [설정](#설정)
|
|
9
|
+
- [특정 MCP 비활성화](#특정-mcp-비활성화)
|
|
10
|
+
- [특정 Agent 비활성화](#특정-agent-비활성화)
|
|
11
|
+
- [Agent 설정](#agent-설정)
|
|
12
|
+
- [LLM Agent를 위한 안내](#llm-agent를-위한-안내)
|
|
13
|
+
- [Why OpenCode & Why Oh My OpenCode](#why-opencode--why-oh-my-opencode)
|
|
9
14
|
- [기능](#기능)
|
|
10
15
|
- [Hooks](#hooks)
|
|
11
16
|
- [Agents](#agents)
|
|
@@ -33,6 +38,17 @@ OpenCode 가 낭만이 사라진것같은 오늘날의 시대에, 당신에게
|
|
|
33
38
|
당신이 코딩을 좋아하고 컴퓨터를 좋아한다면, OpenCode 는 윈도우만 사용하다가 리눅스를 처음 접하게 된 그런 느낌일겁니다.
|
|
34
39
|
그렇지 않은 당신도 약간의 시간을 투자해서 당신의 실력과 생산성을 몇배로 부스트하세요.
|
|
35
40
|
|
|
41
|
+
## 세 줄 요약
|
|
42
|
+
|
|
43
|
+
- **모델 설정이 필요합니다**
|
|
44
|
+
- 이 플러그인은 [OpenCode Zen](https://opencode.ai/docs/zen/), Google, OpenAI, Anthropic 의 모델을 사용합니다.
|
|
45
|
+
- Anthropic 모델들을 사용하기 위해 [OpenCode 의 내장 Claude Code Max Plan 로그인 기능](https://opencode.ai/docs/providers/#anthropic)을 사용하세요. (Anthropic 플랜은 유료입니다)
|
|
46
|
+
- OpenAI 모델들을 사용하기 위해 이 [OpenCode-OpenAI-Codex-Auth 플러그인](https://github.com/numman-ali/opencode-openai-codex-auth)을 추천합니다. (OpenAI 플랜은 유료입니다)
|
|
47
|
+
- Gemini, GPT 를 위해 [VibeProxy (macOS Only)](https://github.com/automazeio/vibeproxy) 또는 [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)를 추천합니다. (Gemini 는 구독하지 않아도 사용 할 수 있습니다)
|
|
48
|
+
- **사실 밑의 내용은 읽지 않아도 됩니다. 그냥 설치하시면 됩니다. 모델 설정하고나면 추가로 공부하거나 알 필요가 없고, 설치하고 나면 그냥 더 좋아집니다.**
|
|
49
|
+
- **이 문서도 그냥 Claude Code, OpenCode, Cursor에 붙여넣고, 설치하고, 사용자의 개입이 필요할 때 알려달라고 프롬프팅하세요. 그럼 그냥 깔립니다.**
|
|
50
|
+
- 당신이 LLM Agent 라면, 필요한 플러그인과 의존성을 설치하고, tmux 를 통해 opencode auth login 을 실행하여 사용자의 구성을 도와주세요.
|
|
51
|
+
|
|
36
52
|
## 설치
|
|
37
53
|
|
|
38
54
|
`~/.config/opencode/opencode.json`에 추가:
|
|
@@ -45,16 +61,162 @@ OpenCode 가 낭만이 사라진것같은 오늘날의 시대에, 당신에게
|
|
|
45
61
|
}
|
|
46
62
|
```
|
|
47
63
|
|
|
48
|
-
##
|
|
64
|
+
## 설정
|
|
49
65
|
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
66
|
+
`oh-my-opencode.json` (또는 `.oh-my-opencode.json`) 파일을 프로젝트 루트에 생성해서 Oh My OpenCode를 입맛대로 설정할 수 있어.
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/dist/oh-my-opencode.schema.json"
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
설정 파일은 스키마를 통해 자동완성을 지원합니다. 자세한 내용은 각 기능 섹션에서 설명합니다.
|
|
75
|
+
|
|
76
|
+
### 특정 MCP 비활성화
|
|
77
|
+
|
|
78
|
+
특정 MCP가 거슬린다면 끌 수 있어.
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"disabled_mcps": ["websearch_exa"]
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 특정 Agent 비활성화
|
|
87
|
+
|
|
88
|
+
특정 에이전트가 마음에 안 들거나, 토큰을 아끼고 싶다면 비활성화해.
|
|
89
|
+
비활성화 가능한 목록: `oracle`, `librarian`, `explore`, `frontend-ui-ux-engineer`, `document-writer`
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"disabled_agents": ["frontend-ui-ux-engineer"]
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Agent 설정
|
|
98
|
+
|
|
99
|
+
각 에이전트의 모델, 프롬프트, 권한 등을 세밀하게 조정할 수 있어.
|
|
100
|
+
|
|
101
|
+
**설정 옵션:**
|
|
102
|
+
|
|
103
|
+
| 옵션 | 설명 |
|
|
104
|
+
|------|------|
|
|
105
|
+
| `model` | 사용할 모델 ID (예: `anthropic/claude-sonnet-4`) |
|
|
106
|
+
| `temperature` | 창의성 조절 (0.0 ~ 2.0) |
|
|
107
|
+
| `top_p` | 단어 선택 다양성 (0.0 ~ 1.0) |
|
|
108
|
+
| `prompt` | 시스템 프롬프트 오버라이드 |
|
|
109
|
+
| `tools` | 특정 도구 활성화/비활성화 (`{"tool_name": false}`) |
|
|
110
|
+
| `disable` | 에이전트 비활성화 (`true`/`false`) |
|
|
111
|
+
| `description` | 에이전트 설명 수정 |
|
|
112
|
+
| `mode` | 에이전트 모드 (`subagent`, `primary`, `all`) |
|
|
113
|
+
| `color` | 터미널 출력 색상 (HEX 코드) |
|
|
114
|
+
| `permission` | 권한 설정 (아래 표 참조) |
|
|
115
|
+
|
|
116
|
+
**권한(`permission`) 옵션:**
|
|
117
|
+
|
|
118
|
+
각 권한은 `"ask"`(물어보기), `"allow"`(허용), `"deny"`(거부) 중 하나로 설정 가능해.
|
|
119
|
+
|
|
120
|
+
| 권한 | 설명 |
|
|
121
|
+
|------|------|
|
|
122
|
+
| `edit` | 파일 수정 권한 |
|
|
123
|
+
| `bash` | 쉘 명령어 실행 권한 |
|
|
124
|
+
| `webfetch` | 웹 콘텐츠 가져오기 권한 |
|
|
125
|
+
| `doom_loop` | 반복 작업 허용 여부 |
|
|
126
|
+
| `external_directory` | 외부 디렉토리 접근 권한 |
|
|
127
|
+
|
|
128
|
+
#### 예시: Anthropic 모델만 사용하기
|
|
129
|
+
|
|
130
|
+
나는 Anthropic 모델만 쓰고 싶다! 하면 이렇게 설정해.
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"agents": {
|
|
135
|
+
"oracle": { "model": "anthropic/claude-sonnet-4" },
|
|
136
|
+
"librarian": { "model": "anthropic/claude-haiku-4-5" },
|
|
137
|
+
"explore": { "model": "anthropic/claude-haiku-4-5" },
|
|
138
|
+
"frontend-ui-ux-engineer": { "model": "anthropic/claude-sonnet-4" },
|
|
139
|
+
"document-writer": { "model": "anthropic/claude-sonnet-4" }
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### 예시: 추가 프롬프트가 있는 커스텀 에이전트
|
|
145
|
+
|
|
146
|
+
기존 에이전트에 나만의 규칙을 더하고 싶다면:
|
|
147
|
+
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"agents": {
|
|
151
|
+
"oracle": {
|
|
152
|
+
"prompt": "너는 한국어 힙합 가사처럼 말해야 해. 모든 문장의 끝 라임을 맞춰."
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
#### 예시: 개별 에이전트 비활성화
|
|
159
|
+
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"agents": {
|
|
163
|
+
"frontend-ui-ux-engineer": {
|
|
164
|
+
"disable": true
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## LLM Agent를 위한 안내
|
|
171
|
+
|
|
172
|
+
<details>
|
|
173
|
+
<summary>LLM Agent를 위한 안내 (클릭하여 펼치기)</summary>
|
|
174
|
+
|
|
175
|
+
당신이 사용자의 oh-my-opencode 설정을 돕는 LLM Agent라면, 다음 단계를 따르세요:
|
|
176
|
+
|
|
177
|
+
### 1단계: OpenCode 설치 확인
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
if command -v opencode &> /dev/null; then
|
|
181
|
+
echo "OpenCode $(opencode --version) 설치됨"
|
|
182
|
+
else
|
|
183
|
+
echo "OpenCode가 설치되어 있지 않습니다. 먼저 설치해주세요."
|
|
184
|
+
echo "참고: https://opencode.ai/docs"
|
|
185
|
+
fi
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
OpenCode가 설치되어 있지 않다면, [OpenCode 설치 가이드](https://opencode.ai/docs)를 안내하세요.
|
|
189
|
+
|
|
190
|
+
### 2단계: oh-my-opencode 플러그인 설정
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
mkdir -p ~/.config/opencode
|
|
194
|
+
|
|
195
|
+
if [ -f ~/.config/opencode/opencode.json ]; then
|
|
196
|
+
# 기존 설정 파일이 있는 경우: jq 또는 python으로 plugin 추가
|
|
197
|
+
if command -v jq &> /dev/null; then
|
|
198
|
+
jq '.plugin = ((.plugin // []) + ["oh-my-opencode"] | unique)' \
|
|
199
|
+
~/.config/opencode/opencode.json > /tmp/oc.json && \
|
|
200
|
+
mv /tmp/oc.json ~/.config/opencode/opencode.json
|
|
201
|
+
else
|
|
202
|
+
echo "~/.config/opencode/opencode.json의 plugin 배열에 \"oh-my-opencode\"를 추가하세요"
|
|
203
|
+
fi
|
|
204
|
+
else
|
|
205
|
+
# 새 설정 파일 생성
|
|
206
|
+
echo '{"plugin":["oh-my-opencode"]}' > ~/.config/opencode/opencode.json
|
|
207
|
+
fi
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 3단계: 설정 확인
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
opencode --version # 1.0.132 이상이어야 함
|
|
214
|
+
cat ~/.config/opencode/opencode.json # plugin 배열에 "oh-my-opencode"가 있어야 함
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
> **참고**: 모델 인증이 필요하면, `opencode` 실행 후 `/connect` 명령어를 사용하거나, tmux를 통해 `opencode auth login`을 안내하세요.
|
|
218
|
+
|
|
219
|
+
</details>
|
|
58
220
|
|
|
59
221
|
## Why OpenCode & Why Oh My OpenCode
|
|
60
222
|
|
|
@@ -93,6 +255,23 @@ OpenCode 는 아주 확장가능하고 아주 커스터마이저블합니다.
|
|
|
93
255
|
- **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): 개발자로 전향한 디자이너라는 설정을 갖고 있습니다. 멋진 UI를 만듭니다. 아름답고 창의적인 UI 코드를 생성하는 데 탁월한 Gemini를 사용합니다.
|
|
94
256
|
- **document-writer** (`google/gemini-3-pro-preview`): 기술 문서 전문가라는 설정을 갖고 있습니다. Gemini 는 문학가입니다. 글을 기가막히게 씁니다.
|
|
95
257
|
|
|
258
|
+
#### 모델 설정 오버라이드
|
|
259
|
+
|
|
260
|
+
에이전트들은 [OpenCode의 모델 설정](https://opencode.ai/docs/models/#configure-models)과 완전히 동일한 스펙으로 오버라이드를 지원합니다. 권장하진 않지만, 예를 들어 Anthropic 모델만 사용하기로 결정했다면 이렇게 구성할 수 있습니다:
|
|
261
|
+
|
|
262
|
+
```json
|
|
263
|
+
{
|
|
264
|
+
"agents": {
|
|
265
|
+
"explore": {
|
|
266
|
+
"model": "anthropic/claude-haiku-4-5"
|
|
267
|
+
},
|
|
268
|
+
"frontend-ui-ux-engineer": {
|
|
269
|
+
"model": "anthropic/claude-opus-4"
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
96
275
|
### Tools
|
|
97
276
|
|
|
98
277
|
#### 내장 LSP Tools
|
|
@@ -124,6 +303,7 @@ OpenCode 는 아주 확장가능하고 아주 커스터마이저블합니다.
|
|
|
124
303
|
#### 내장 MCPs
|
|
125
304
|
|
|
126
305
|
- **websearch_exa**: Exa AI 웹 검색. 실시간 웹 검색과 콘텐츠 스크래핑을 수행합니다. 관련 웹사이트에서 LLM에 최적화된 컨텍스트를 반환합니다.
|
|
306
|
+
- **context7**: 라이브러리 문서 조회. 정확한 코딩을 위해 최신 라이브러리 문서를 가져옵니다.
|
|
127
307
|
|
|
128
308
|
### 기타 편의 기능
|
|
129
309
|
- **Terminal Title**: 세션 상태에 따라 터미널 타이틀을 자동 업데이트합니다 (유휴 ○, 처리중 ◐, 도구 ⚡, 에러 ✖). tmux를 지원합니다.
|
|
@@ -153,5 +333,3 @@ OpenCode 를 사용하여 이 프로젝트의 99% 를 작성했습니다. 기능
|
|
|
153
333
|
|
|
154
334
|
- [1.0.132](https://github.com/sst/opencode/releases/tag/v1.0.132) 혹은 이것보다 낮은 버전을 사용중이라면, OpenCode 의 버그로 인해 제대로 구성이 되지 않을 수 있습니다.
|
|
155
335
|
- [이를 고치는 PR 이 1.0.132 배포 이후에 병합되었으므로](https://github.com/sst/opencode/pull/5040) 이 변경사항이 포함된 최신 버전을 사용해주세요.
|
|
156
|
-
|
|
157
|
-
|
package/README.md
CHANGED
|
@@ -3,11 +3,14 @@ English | [한국어](README.ko.md)
|
|
|
3
3
|
## Contents
|
|
4
4
|
|
|
5
5
|
- [Oh My OpenCode](#oh-my-opencode)
|
|
6
|
+
- [TL;DR](#tldr)
|
|
6
7
|
- [Installation](#installation)
|
|
8
|
+
- [For LLM Agents](#for-llm-agents)
|
|
7
9
|
- [Configuration](#configuration)
|
|
8
10
|
- [Disable specific MCPs](#disable-specific-mcps)
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
- [Disable specific Agents](#disable-specific-agents)
|
|
12
|
+
- [Agent Configuration](#agent-configuration)
|
|
13
|
+
- [Why OpenCode & Why Oh My OpenCode](#why-opencode--why-oh-my-opencode)
|
|
11
14
|
- [Features](#features)
|
|
12
15
|
- [Hooks](#hooks)
|
|
13
16
|
- [Agents](#agents)
|
|
@@ -33,6 +36,17 @@ You don't write code just for a paycheck? You write because you genuinely love i
|
|
|
33
36
|
|
|
34
37
|
To you, OpenCode will feel like the paradigm shift from Windows to Linux. Not you? It's still worth the investment. Give it 10 minutes. Your work and life will improve. I promise.
|
|
35
38
|
|
|
39
|
+
## TL;DR
|
|
40
|
+
|
|
41
|
+
- **Model Setup Required**
|
|
42
|
+
- This plugin utilizes models from [OpenCode Zen](https://opencode.ai/docs/zen/), Google, OpenAI, and Anthropic.
|
|
43
|
+
- For Anthropic models, use [OpenCode's built-in Claude Code Max Plan login](https://opencode.ai/docs/providers/#anthropic).
|
|
44
|
+
- For OpenAI models, I recommend the [OpenCode-OpenAI-Codex-Auth plugin](https://github.com/numman-ali/opencode-openai-codex-auth).
|
|
45
|
+
- For Gemini and GPT, use [VibeProxy (macOS Only)](https://github.com/automazeio/vibeproxy) or [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI).
|
|
46
|
+
- **Truth be told, the rest is optional. Just install it. Once set up, no further learning is required. It simply evolves.**
|
|
47
|
+
- **Paste this document into Claude Code, OpenCode, or Cursor, instruct it to install, and ask for assistance if needed. It works seamlessly.**
|
|
48
|
+
- If you are an LLM Agent, install the required plugins and dependencies, then run `opencode auth login` via tmux to assist the user with configuration.
|
|
49
|
+
|
|
36
50
|
## Installation
|
|
37
51
|
|
|
38
52
|
Add to `~/.config/opencode/opencode.json`:
|
|
@@ -45,49 +59,176 @@ Add to `~/.config/opencode/opencode.json`:
|
|
|
45
59
|
}
|
|
46
60
|
```
|
|
47
61
|
|
|
62
|
+
## For LLM Agents
|
|
63
|
+
|
|
64
|
+
<details>
|
|
65
|
+
<summary>For LLM Agents (Click to expand)</summary>
|
|
66
|
+
|
|
67
|
+
If you are an LLM Agent helping a user set up oh-my-opencode, follow these steps:
|
|
68
|
+
|
|
69
|
+
### Step 1: Verify OpenCode Installation
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
if command -v opencode &> /dev/null; then
|
|
73
|
+
echo "OpenCode $(opencode --version) is installed"
|
|
74
|
+
else
|
|
75
|
+
echo "OpenCode is not installed. Please install it first."
|
|
76
|
+
echo "See: https://opencode.ai/docs"
|
|
77
|
+
fi
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
If OpenCode is not installed, guide the user to [OpenCode Installation Guide](https://opencode.ai/docs).
|
|
81
|
+
|
|
82
|
+
### Step 2: Configure oh-my-opencode Plugin
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
mkdir -p ~/.config/opencode
|
|
86
|
+
|
|
87
|
+
if [ -f ~/.config/opencode/opencode.json ]; then
|
|
88
|
+
# Existing config: add plugin using jq or python
|
|
89
|
+
if command -v jq &> /dev/null; then
|
|
90
|
+
jq '.plugin = ((.plugin // []) + ["oh-my-opencode"] | unique)' \
|
|
91
|
+
~/.config/opencode/opencode.json > /tmp/oc.json && \
|
|
92
|
+
mv /tmp/oc.json ~/.config/opencode/opencode.json
|
|
93
|
+
else
|
|
94
|
+
echo "Add \"oh-my-opencode\" to plugin array in ~/.config/opencode/opencode.json"
|
|
95
|
+
fi
|
|
96
|
+
else
|
|
97
|
+
# New config
|
|
98
|
+
echo '{"plugin":["oh-my-opencode"]}' > ~/.config/opencode/opencode.json
|
|
99
|
+
fi
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Step 3: Verify Setup
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
opencode --version # Should be >= 1.0.132
|
|
106
|
+
cat ~/.config/opencode/opencode.json # Should contain "oh-my-opencode" in plugin array
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
> **Note**: If model authentication is needed, run `opencode` and use `/connect` command, or assist the user with `opencode auth login` via tmux.
|
|
110
|
+
|
|
111
|
+
</details>
|
|
112
|
+
|
|
48
113
|
## Configuration
|
|
49
114
|
|
|
50
115
|
You can configure Oh My OpenCode by creating a `oh-my-opencode.json` (or `.oh-my-opencode.json`) file in your project root.
|
|
51
116
|
|
|
52
|
-
|
|
117
|
+
Configuration supports autocomplete via schema. Details are covered in each feature section below.
|
|
53
118
|
|
|
54
|
-
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/dist/oh-my-opencode.schema.json"
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Disable specific MCPs
|
|
126
|
+
|
|
127
|
+
If you want to disable specific built-in MCPs, you can use the `disabled_mcps` option.
|
|
55
128
|
|
|
56
|
-
**Using Remote Schema (Recommended):**
|
|
57
129
|
```json
|
|
58
130
|
{
|
|
59
|
-
"
|
|
60
|
-
"disabled_mcps": ["context7"]
|
|
131
|
+
"disabled_mcps": ["context7", "websearch_exa"]
|
|
61
132
|
}
|
|
62
133
|
```
|
|
63
134
|
|
|
64
|
-
|
|
135
|
+
### Disable specific Agents
|
|
136
|
+
|
|
137
|
+
If you want to disable specific built-in agents, you can use the `disabled_agents` option.
|
|
138
|
+
|
|
65
139
|
```json
|
|
66
140
|
{
|
|
67
|
-
"
|
|
141
|
+
"disabled_agents": ["explore", "frontend-ui-ux-engineer"]
|
|
68
142
|
}
|
|
69
143
|
```
|
|
70
144
|
|
|
71
|
-
|
|
145
|
+
Available agents: `oracle`, `librarian`, `explore`, `frontend-ui-ux-engineer`, `document-writer`
|
|
72
146
|
|
|
73
|
-
|
|
147
|
+
### Agent Configuration
|
|
148
|
+
|
|
149
|
+
You can override the configuration of any built-in agent using the `agents` option. This allows you to change models, adjust creativity, modify permissions, or disable agents individually.
|
|
150
|
+
|
|
151
|
+
#### Configuration Options
|
|
152
|
+
|
|
153
|
+
| Option | Type | Description |
|
|
154
|
+
|--------|------|-------------|
|
|
155
|
+
| `model` | string | Override the default model (e.g., "anthropic/claude-sonnet-4") |
|
|
156
|
+
| `temperature` | number (0-2) | Controls randomness (0 = deterministic, 2 = creative) |
|
|
157
|
+
| `top_p` | number (0-1) | Nucleus sampling parameter |
|
|
158
|
+
| `prompt` | string | Additional system prompt to append |
|
|
159
|
+
| `tools` | object | Enable/disable specific tools (e.g., `{"websearch_exa": false}`) |
|
|
160
|
+
| `disable` | boolean | Completely disable the agent |
|
|
161
|
+
| `description` | string | Override agent description |
|
|
162
|
+
| `mode` | "subagent" | "primary" | "all" | When agent is available |
|
|
163
|
+
| `color` | string | Hex color code for terminal output (e.g., "#FF0000") |
|
|
164
|
+
| `permission` | object | Permission settings for sensitive operations |
|
|
165
|
+
|
|
166
|
+
#### Permission Options
|
|
167
|
+
|
|
168
|
+
| Option | Values | Description |
|
|
169
|
+
|--------|--------|-------------|
|
|
170
|
+
| `edit` | "ask" | "allow" | "deny" | File modification permissions |
|
|
171
|
+
| `bash` | "ask" | "allow" | "deny" | object | Shell command execution permissions |
|
|
172
|
+
| `webfetch` | "ask" | "allow" | "deny" | Web access permissions |
|
|
173
|
+
| `doom_loop` | "ask" | "allow" | "deny" | Infinite loop prevention |
|
|
174
|
+
| `external_directory` | "ask" | "allow" | "deny" | Access outside project root |
|
|
175
|
+
|
|
176
|
+
#### Examples
|
|
177
|
+
|
|
178
|
+
**Using Only Anthropic Models**
|
|
179
|
+
|
|
180
|
+
This configuration forces all agents to use Anthropic models, suitable for users with only Anthropic API access.
|
|
74
181
|
|
|
75
182
|
```json
|
|
76
183
|
{
|
|
77
|
-
"
|
|
184
|
+
"agents": {
|
|
185
|
+
"oracle": {
|
|
186
|
+
"model": "anthropic/claude-sonnet-4"
|
|
187
|
+
},
|
|
188
|
+
"librarian": {
|
|
189
|
+
"model": "anthropic/claude-haiku-4-5"
|
|
190
|
+
},
|
|
191
|
+
"explore": {
|
|
192
|
+
"model": "anthropic/claude-haiku-4-5"
|
|
193
|
+
},
|
|
194
|
+
"frontend-ui-ux-engineer": {
|
|
195
|
+
"model": "anthropic/claude-sonnet-4"
|
|
196
|
+
},
|
|
197
|
+
"document-writer": {
|
|
198
|
+
"model": "anthropic/claude-sonnet-4"
|
|
199
|
+
}
|
|
200
|
+
}
|
|
78
201
|
}
|
|
79
202
|
```
|
|
80
203
|
|
|
81
|
-
|
|
204
|
+
**Custom Agent with Additional Prompt**
|
|
82
205
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
|
|
90
|
-
|
|
206
|
+
Inject custom instructions into an agent's system prompt.
|
|
207
|
+
|
|
208
|
+
```json
|
|
209
|
+
{
|
|
210
|
+
"agents": {
|
|
211
|
+
"frontend-ui-ux-engineer": {
|
|
212
|
+
"prompt": "ALWAYS use Tailwind CSS. NEVER use inline styles. Prefer dark mode defaults.",
|
|
213
|
+
"temperature": 0.8
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Disable Agents Individually**
|
|
220
|
+
|
|
221
|
+
You can also disable agents using the `disable` property within the agent config.
|
|
222
|
+
|
|
223
|
+
```json
|
|
224
|
+
{
|
|
225
|
+
"agents": {
|
|
226
|
+
"explore": {
|
|
227
|
+
"disable": true
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
```
|
|
91
232
|
|
|
92
233
|
## Why OpenCode & Why Oh My OpenCode
|
|
93
234
|
|
|
@@ -124,6 +265,23 @@ I believe in the right tool for the job. For your wallet's sake, use CLIProxyAPI
|
|
|
124
265
|
- **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): A designer turned developer. Creates stunning UIs. Uses Gemini because its creativity and UI code generation are superior.
|
|
125
266
|
- **document-writer** (`google/gemini-3-pro-preview`): A technical writing expert. Gemini is a wordsmith; it writes prose that flows naturally.
|
|
126
267
|
|
|
268
|
+
#### Model Configuration Override
|
|
269
|
+
|
|
270
|
+
Agents follow the exact same model configuration spec as [OpenCode's model configuration](https://opencode.ai/docs/models/#configure-models). While not generally recommended, if you decide to use only Anthropic models, you could configure like this:
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"agents": {
|
|
275
|
+
"explore": {
|
|
276
|
+
"model": "anthropic/claude-haiku-4-5"
|
|
277
|
+
},
|
|
278
|
+
"frontend-ui-ux-engineer": {
|
|
279
|
+
"model": "anthropic/claude-opus-4"
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
127
285
|
### Tools
|
|
128
286
|
|
|
129
287
|
#### Built-in LSP Tools
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asynchronously get comment-checker binary path.
|
|
3
|
+
* Will trigger lazy download if binary not found.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getCommentCheckerPath(): Promise<string | null>;
|
|
6
|
+
/**
|
|
7
|
+
* Synchronously get comment-checker path (no download).
|
|
8
|
+
* Returns cached path or searches known locations.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getCommentCheckerPathSync(): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Start background initialization.
|
|
13
|
+
* Call this early to trigger download while other init happens.
|
|
14
|
+
*/
|
|
15
|
+
export declare function startBackgroundInit(): void;
|
|
1
16
|
export declare const COMMENT_CHECKER_CLI_PATH: string | null;
|
|
2
17
|
export interface HookInput {
|
|
3
18
|
session_id: string;
|
|
@@ -21,5 +36,17 @@ export interface CheckResult {
|
|
|
21
36
|
hasComments: boolean;
|
|
22
37
|
message: string;
|
|
23
38
|
}
|
|
24
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Run comment-checker CLI with given input.
|
|
41
|
+
* @param input Hook input to check
|
|
42
|
+
* @param cliPath Optional explicit path to CLI binary
|
|
43
|
+
*/
|
|
44
|
+
export declare function runCommentChecker(input: HookInput, cliPath?: string): Promise<CheckResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Check if CLI is available (sync check, no download).
|
|
47
|
+
*/
|
|
25
48
|
export declare function isCliAvailable(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Check if CLI will be available (async, may trigger download).
|
|
51
|
+
*/
|
|
52
|
+
export declare function ensureCliAvailable(): Promise<boolean>;
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
export declare const EXTENSION_TO_LANGUAGE: Record<string, string>;
|
|
2
|
-
export declare const QUERY_TEMPLATES: Record<string, string>;
|
|
3
|
-
export declare const DOCSTRING_QUERIES: Record<string, string>;
|
|
4
1
|
export declare const BDD_KEYWORDS: Set<string>;
|
|
5
2
|
export declare const TYPE_CHECKER_PREFIXES: string[];
|
|
6
3
|
export declare const HOOK_MESSAGE_HEADER = "COMMENT/DOCSTRING DETECTED - IMMEDIATE ACTION REQUIRED\n\nYour recent changes contain comments or docstrings, which triggered this hook.\nYou need to take immediate action. You must follow the conditions below.\n(Listed in priority order - you must always act according to this priority order)\n\nCRITICAL WARNING: This hook message MUST NEVER be ignored, even if you receive it multiple times.\nYou MUST provide corresponding explanation or action for EACH occurrence of this message.\nIgnoring this message or failing to respond appropriately is strictly prohibited.\n\nPRIORITY-BASED ACTION GUIDELINES:\n\n1. This is a comment/docstring that already existed before\n\t-> Explain to the user that this is an existing comment/docstring and proceed (justify it)\n\n2. This is a newly written comment: but it's in given, when, then format\n\t-> Tell the user it's a BDD comment and proceed (justify it)\n\t-> Note: This applies to comments only, not docstrings\n\n3. This is a newly written comment/docstring: but it's a necessary comment/docstring\n\t-> Tell the user why this comment/docstring is absolutely necessary and proceed (justify it)\n\t-> Examples of necessary comments: complex algorithms, security-related, performance optimization, regex, mathematical formulas\n\t-> Examples of necessary docstrings: public API documentation, complex module/class interfaces\n\t-> IMPORTANT: Most docstrings are unnecessary if the code is self-explanatory. Only keep truly essential ones.\n\n4. This is a newly written comment/docstring: but it's an unnecessary comment/docstring\n\t-> Apologize to the user and remove the comment/docstring.\n\t-> Make the code itself clearer so it can be understood without comments/docstrings.\n\t-> For verbose docstrings: refactor code to be self-documenting instead of adding lengthy explanations.\n\nMANDATORY REQUIREMENT: You must acknowledge this hook message and take one of the above actions.\nReview in the above priority order and take the corresponding action EVERY TIME this appears.\n\nDetected comments/docstrings:\n";
|
|
7
|
-
export declare function getLanguageByExtension(filePath: string): string | null;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the cache directory for oh-my-opencode binaries.
|
|
3
|
+
* Follows XDG Base Directory Specification.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getCacheDir(): string;
|
|
6
|
+
/**
|
|
7
|
+
* Get the binary name based on platform.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getBinaryName(): string;
|
|
10
|
+
/**
|
|
11
|
+
* Get the cached binary path if it exists.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getCachedBinaryPath(): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Download the comment-checker binary from GitHub Releases.
|
|
16
|
+
* Returns the path to the downloaded binary, or null on failure.
|
|
17
|
+
*/
|
|
18
|
+
export declare function downloadCommentChecker(): Promise<string | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Ensure the comment-checker binary is available.
|
|
21
|
+
* First checks cache, then downloads if needed.
|
|
22
|
+
* Returns the binary path or null if unavailable.
|
|
23
|
+
*/
|
|
24
|
+
export declare function ensureCommentCheckerBinary(): Promise<string | null>;
|
|
@@ -7,11 +7,6 @@ export interface CommentInfo {
|
|
|
7
7
|
isDocstring: boolean;
|
|
8
8
|
metadata?: Record<string, string>;
|
|
9
9
|
}
|
|
10
|
-
export interface LanguageConfig {
|
|
11
|
-
extensions: string[];
|
|
12
|
-
commentQuery: string;
|
|
13
|
-
docstringQuery?: string;
|
|
14
|
-
}
|
|
15
10
|
export interface PendingCall {
|
|
16
11
|
filePath: string;
|
|
17
12
|
content?: string;
|