cli-jaw 1.7.19 → 1.7.21
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 +183 -441
- package/README.md +252 -480
- package/README.zh-CN.md +184 -442
- package/dist/bin/commands/dispatch.js +1 -1
- package/dist/bin/commands/dispatch.js.map +1 -1
- package/dist/bin/commands/doctor.js +47 -11
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/serve.js +4 -3
- package/dist/bin/commands/serve.js.map +1 -1
- package/dist/server.js +43 -21
- package/dist/server.js.map +1 -1
- package/dist/src/agent/events.js +1 -0
- package/dist/src/agent/events.js.map +1 -1
- package/dist/src/agent/spawn.js +16 -0
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/registry.js +1 -0
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/core/claude-install.js +33 -0
- package/dist/src/core/claude-install.js.map +1 -0
- package/dist/src/core/config.js +5 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/db.js +1 -0
- package/dist/src/core/db.js.map +1 -1
- package/dist/src/core/employees.js +0 -1
- package/dist/src/core/employees.js.map +1 -1
- package/dist/src/core/runtime-path.js +3 -0
- package/dist/src/core/runtime-path.js.map +1 -1
- package/dist/src/core/settings-merge.js +2 -2
- package/dist/src/core/settings-merge.js.map +1 -1
- package/dist/src/discord/bot.js +123 -107
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +1 -2
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +3 -15
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/scope.js +9 -3
- package/dist/src/orchestrator/scope.js.map +1 -1
- package/dist/src/orchestrator/state-machine.js +12 -3
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/prompt/builder.js +0 -4
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +2 -2
- package/dist/src/prompt/templates/worker-context.md +2 -2
- package/dist/src/routes/orchestrate.js +6 -1
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/security/network-acl.js +133 -0
- package/dist/src/security/network-acl.js.map +1 -0
- package/dist/src/telegram/bot.js +37 -3
- package/dist/src/telegram/bot.js.map +1 -1
- package/package.json +1 -1
- package/public/dist/assets/{constants-Bzu8ZQYX.js → constants-DGOVap6o.js} +1 -1
- package/public/dist/assets/{employees-BbOvchcS.js → employees-C0yujZsW.js} +1 -1
- package/public/dist/assets/{index-BG6dRmXR.js → index-BWcXMhOZ.js} +4 -4
- package/public/dist/assets/{memory-ZuWr4pMd.js → memory-FFmqjyCC.js} +1 -1
- package/public/dist/assets/memory-irEuKgdV.js +1 -0
- package/public/dist/assets/{render-DJB99y40.js → render-D1FcBRwU.js} +1 -1
- package/public/dist/assets/{settings-D1g7w3t4.js → settings-MICU1hXS.js} +1 -1
- package/public/dist/assets/settings-my0MZC-q.js +1 -0
- package/public/dist/assets/skills--Z8gqYp5.js +1 -0
- package/public/dist/assets/{skills-C5kJQVkS.js → skills-BzRE-_tP.js} +1 -1
- package/public/dist/assets/{slash-commands-ByfeM4Ot.js → slash-commands-DH53hTco.js} +1 -1
- package/public/dist/assets/slash-commands-u5fbLK7K.js +1 -0
- package/public/dist/assets/ui-CfUxt-FY.js +1 -0
- package/public/dist/assets/{ui-BR_M9U08.js → ui-DZb07Luj.js} +2 -2
- package/public/dist/assets/{ws-BgwVESAY.js → ws-PsjiwLxs.js} +2 -2
- package/public/dist/index.html +1 -1
- package/public/js/constants.ts +0 -1
- package/public/js/features/employees.ts +0 -2
- package/public/locales/en.json +1 -2
- package/public/locales/ko.json +1 -2
- package/scripts/install.sh +175 -3
- package/dist/src/prompt/templates/research-worker.md +0 -37
- package/public/dist/assets/memory-BLIJdS7I.js +0 -1
- package/public/dist/assets/settings-DRL_RTEF.js +0 -1
- package/public/dist/assets/skills-DDi6QuNI.js +0 -1
- package/public/dist/assets/slash-commands-Ds50o_kN.js +0 -1
- package/public/dist/assets/ui-hKRh1sfy.js +0 -1
package/README.ko.md
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# CLI-JAW
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### 이미 결제한 AI 구독, 하나의 비서로.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
[](#-테스트)
|
|
7
|
+
[](https://npmjs.com/package/cli-jaw)
|
|
10
8
|
[](https://typescriptlang.org)
|
|
11
9
|
[](https://nodejs.org)
|
|
12
10
|
[](LICENSE)
|
|
13
|
-
[](#-도커--컨테이너-격리)
|
|
15
|
-
[](#)
|
|
11
|
+
[](#-docker)
|
|
16
12
|
|
|
17
13
|
[English](README.md) / **한국어** / [中文](README.zh-CN.md)
|
|
18
14
|
|
|
@@ -20,399 +16,190 @@
|
|
|
20
16
|
|
|
21
17
|
</div>
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<summary>🪟 <b>Windows 사용자이신가요?</b> — WSL 원클릭 설치</summary>
|
|
33
|
-
|
|
34
|
-
**Step 1: WSL 설치** (PowerShell 관리자 권한 — 최초 1회)
|
|
35
|
-
|
|
36
|
-
```powershell
|
|
37
|
-
wsl --install
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
안내에 따라 컴퓨터를 재시작하세요. 재부팅 후 시작 메뉴에서 **Ubuntu**를 실행하세요.
|
|
41
|
-
|
|
42
|
-
**Step 2: CLI-JAW 설치** (Ubuntu/WSL 터미널에서)
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
curl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/master/scripts/install-wsl.sh | bash
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
스크립트가 필수 패키지(`curl`, `unzip`, `git`), Node.js 22+, CLI-JAW를 자동 설치합니다.
|
|
49
|
-
|
|
50
|
-
**Step 3: 쉘 다시 로드** (중요 — PATH 변경 적용)
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
source ~/.bashrc
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Step 4: AI 엔진 인증** (하나 선택)
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
copilot login # GitHub Copilot (무료)
|
|
60
|
-
opencode # OpenCode (무료 모델 제공)
|
|
61
|
-
claude auth # Anthropic Claude
|
|
62
|
-
codex login # OpenAI Codex
|
|
63
|
-
gemini # Google Gemini
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**Step 5: 시작하기**
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
jaw serve
|
|
70
|
-
# → http://localhost:3457
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
> 💡 스크립트는 [fnm](https://github.com/Schniz/fnm)으로 Node.js를 관리합니다. 이미 `nvm`이 있으면 그걸 사용합니다.
|
|
74
|
-
|
|
75
|
-
<details>
|
|
76
|
-
<summary>🔧 <b>WSL 문제 해결</b></summary>
|
|
19
|
+
<table>
|
|
20
|
+
<tr><td><b>기존 구독을 그대로 활용</b></td><td>Claude Max, ChatGPT Pro, Copilot, Gemini Advanced — OAuth 라우팅. OpenCode로 아무 모델이나 추가 가능. 토큰 과금 없음.</td></tr>
|
|
21
|
+
<tr><td><b>어디서든 접근</b></td><td>웹 PWA(가상 스크롤, WS 스트리밍) + Mac WebView 앱 + 터미널 TUI + Telegram(음성) + Discord — 5개 인터페이스, 하나의 대화.</td></tr>
|
|
22
|
+
<tr><td><b>3계층 메모리</b></td><td>History Block(최근 세션) + Memory Flush(에피소드, 일일 로그) + Soul & Task Snapshot(정체성, 시맨틱 검색). SQLite FTS5 전문 검색.</td></tr>
|
|
23
|
+
<tr><td><b>멀티에이전트 오케스트레이션</b></td><td>PABCD — DB 기반 5단계 FSM. Employee 시스템과 Worker 레지스트리. 파일 충돌 감지 병렬 실행. 모든 단계에서 사용자 승인 필요.</td></tr>
|
|
24
|
+
<tr><td><b>브라우저 및 데스크톱 자동화</b></td><td>Chrome CDP, vision-click, ChatGPT/Grok/Gemini DOM 레퍼런스, Codex App Computer Use 통합, diagram 스킬로 SVG/인터랙티브 시각화.</td></tr>
|
|
25
|
+
<tr><td><b>MCP 한 번 설치, 5개 엔진</b></td><td><code>jaw mcp install</code>로 Claude, Codex, Gemini, OpenCode, Copilot에 동시 동기화. 설정 파일 하나.</td></tr>
|
|
26
|
+
<tr><td><b>한국어 지원</b></td><td>한국어/영어/중국어 README. i18n 웹 UI. OfficeCLI를 통한 HWP/HWPX 한글 문서 지원.</td></tr>
|
|
27
|
+
</table>
|
|
77
28
|
|
|
78
|
-
|
|
79
|
-
| --------------------------------------- | ------------------------------------------------------- |
|
|
80
|
-
| `unzip: command not found` | 설치 스크립트를 다시 실행하세요 — `unzip`을 자동 설치합니다 |
|
|
81
|
-
| `jaw: command not found` (설치 후) | `source ~/.bashrc`로 PATH를 다시 로드하세요 |
|
|
82
|
-
| 여전히 `jaw`를 찾을 수 없음 | `export PATH="$(npm config get prefix)/bin:$PATH"` 실행 |
|
|
83
|
-
| `npm install -g` 권한 오류 | `sudo chown -R $USER $(npm config get prefix)` 실행 |
|
|
84
|
-
|
|
85
|
-
</details>
|
|
86
|
-
|
|
87
|
-
</details>
|
|
88
|
-
|
|
89
|
-
<details>
|
|
90
|
-
<summary>🍎 <b>터미널이 처음이신가요?</b> — 원클릭 Node.js + CLI-JAW 설치</summary>
|
|
91
|
-
|
|
92
|
-
**Step 1: 터미널 열기**
|
|
93
|
-
|
|
94
|
-
**Finder** → **응용 프로그램** → **유틸리티** → **터미널.app** 을 열어주세요.
|
|
95
|
-
(또는 `⌘ Space` 누르고 `터미널` 이라고 입력하세요)
|
|
96
|
-
|
|
97
|
-
**Step 2: 아래 내용을 붙여넣고 Enter**
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
curl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/master/scripts/install.sh | bash
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Node.js + CLI-JAW가 자동으로 설치됩니다. 🎉 가 뜰 때까지 기다려주세요.
|
|
104
|
-
|
|
105
|
-
**Step 3: 로그인 & 실행**
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
copilot login # 또는: claude auth / codex login / gemini login
|
|
109
|
-
jaw serve
|
|
110
|
-
```
|
|
29
|
+
---
|
|
111
30
|
|
|
112
|
-
|
|
31
|
+
## 빠른 링크
|
|
113
32
|
|
|
114
|
-
|
|
33
|
+
- [설치](#-설치--실행) · [인증](#-인증) · [인터페이스](#️-어디서-쓰나)
|
|
34
|
+
- [엔진 라우팅](#-엔진-라우팅) · [메모리](#-메모리) · [PABCD](#-오케스트레이션--pabcd) · [스킬](#-스킬)
|
|
35
|
+
- [브라우저 자동화](#-브라우저--데스크톱-자동화) · [MCP](#-mcp) · [메시징](#-메시징)
|
|
36
|
+
- [CLI 명령어](#️-cli-명령어) · [Docker](#-docker) · [문서](#-문서) · [비교](#️-비교)
|
|
115
37
|
|
|
116
38
|
---
|
|
117
39
|
|
|
118
|
-
## 🚀 설치 & 실행
|
|
40
|
+
## 🚀 설치 & 실행
|
|
119
41
|
|
|
120
42
|
```bash
|
|
121
43
|
npm install -g cli-jaw
|
|
122
44
|
jaw serve
|
|
123
45
|
```
|
|
124
46
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
> 🕐 **24시간 돌아가게 만들고 싶으세요?** `jaw service install` — systemd, launchd, Docker 자동 감지.
|
|
47
|
+
**http://localhost:3457**을 열면 끝. Node.js 22+ 및 아래 AI CLI 중 하나 이상 인증 필요.
|
|
128
48
|
|
|
129
|
-
>
|
|
49
|
+
> `jaw service install` — 부팅 시 자동 시작 (systemd, launchd, Docker 자동 감지).
|
|
130
50
|
|
|
131
51
|
---
|
|
132
52
|
|
|
133
|
-
## 🔑
|
|
53
|
+
## 🔑 인증
|
|
134
54
|
|
|
135
|
-
|
|
55
|
+
하나만 있어도 됩니다. 이미 구독 중인 것을 선택하세요:
|
|
136
56
|
|
|
137
57
|
```bash
|
|
138
|
-
#
|
|
139
|
-
copilot login
|
|
140
|
-
opencode
|
|
141
|
-
|
|
142
|
-
#
|
|
143
|
-
claude auth
|
|
144
|
-
codex login
|
|
145
|
-
gemini
|
|
58
|
+
# 무료
|
|
59
|
+
copilot login # GitHub Copilot
|
|
60
|
+
opencode # OpenCode — 무료 모델 제공
|
|
61
|
+
|
|
62
|
+
# 유료 (월정액)
|
|
63
|
+
claude auth # Anthropic Claude Max
|
|
64
|
+
codex login # OpenAI ChatGPT Pro
|
|
65
|
+
gemini # Google Gemini Advanced
|
|
146
66
|
```
|
|
147
67
|
|
|
148
|
-
|
|
68
|
+
상태 확인: `jaw doctor`
|
|
149
69
|
|
|
150
|
-
|
|
151
|
-
<summary>📋 <code>jaw doctor</code> 출력 예시</summary>
|
|
70
|
+
---
|
|
152
71
|
|
|
153
|
-
|
|
154
|
-
🦈 CLI-JAW Doctor — 12 checks
|
|
155
|
-
|
|
156
|
-
✅ Node.js v22.15.0
|
|
157
|
-
✅ npm v10.9.4
|
|
158
|
-
✅ Claude CLI installed
|
|
159
|
-
✅ Codex CLI installed
|
|
160
|
-
⚠️ Gemini CLI not found (optional)
|
|
161
|
-
✅ OpenCode CLI installed
|
|
162
|
-
✅ Copilot CLI installed
|
|
163
|
-
✅ Database jaw.db OK
|
|
164
|
-
✅ Skills 22 active, 94 reference
|
|
165
|
-
✅ MCP 3 servers configured
|
|
166
|
-
✅ Memory MEMORY.md exists
|
|
167
|
-
✅ Server port 3457 available
|
|
168
|
-
```
|
|
72
|
+
## 🖥️ 어디서 쓰나
|
|
169
73
|
|
|
170
|
-
|
|
74
|
+
5개 인터페이스에서 동일한 비서, 동일한 메모리, 동일한 스킬을 사용합니다.
|
|
171
75
|
|
|
172
|
-
|
|
76
|
+
| 인터페이스 | 기능 |
|
|
77
|
+
|---|---|
|
|
78
|
+
| **웹 PWA** | markdown/KaTeX/Mermaid 렌더링, 가상 스크롤, WS 스트리밍, 파일 드래그앤드롭, 음성 녹음, PABCD 로드맵 바, i18n(한국어/영어), 다크/라이트 테마, IndexedDB 오프라인 캐시 |
|
|
79
|
+
| **Mac WebView 앱** | `jaw serve`를 macOS 앱 셸로 감싼 것. 브라우저 없이 Dock에서 바로 접근 |
|
|
80
|
+
| **터미널 TUI** | 멀티라인 편집, 슬래시 명령어 자동완성, 오버레이 셀렉터, 세션 유지, 재개 분류 |
|
|
81
|
+
| **Telegram** | 음성 메시지(멀티 STT 프로바이더), 사진, 파일. 예약 작업 결과 자동 전송. `/cli`, `/model` 등 슬래시 명령어 |
|
|
82
|
+
| **Discord** | 텍스트/파일 메시징, 명령어 동기화, 채널/스레드 라우팅, 에이전트 결과 포워더 |
|
|
173
83
|
|
|
174
84
|
---
|
|
175
85
|
|
|
176
|
-
##
|
|
177
|
-
|
|
178
|
-
CLI-JAW는 내 컴퓨터에 상주하며 이미 익숙한 인터페이스인 **웹, 터미널, 텔레그램, 디스코드**에서 작동하는 **개인용 AI 비서**입니다. 궁금한 것을 묻고, 작업을 위임하고, 워크플로우를 자동화하세요.
|
|
179
|
-

|
|
86
|
+
## 🔀 엔진 라우팅
|
|
180
87
|
|
|
181
|
-
|
|
182
|
-
> 💬 *"이 모듈 리팩토링하고 테스트도 짜줘"* → 서브에이전트가 알아서, 커피 한 잔 하고 오면 돼요
|
|
183
|
-
> 💬 *"저 PDF 다운받아서 핵심만 노션에 정리해"* → 브라우저 + 노션 스킬 조합으로 뚝딱
|
|
88
|
+
이미 결제 중인 OAuth 월정액을 통해 5개 CLI 백엔드를 라우팅합니다. 토큰 단위 과금 없음.
|
|
184
89
|
|
|
185
|
-
|
|
90
|
+
| CLI | 기본 모델 | 인증 | 비용 |
|
|
91
|
+
|---|---|---|---|
|
|
92
|
+
| **Claude** | `opus-4-6` | `claude auth` | Claude Max 구독 |
|
|
93
|
+
| **Codex** | `gpt-5.5` | `codex login` | ChatGPT Pro 구독 |
|
|
94
|
+
| **Gemini** | `gemini-3.1-pro-preview` | `gemini` | Gemini Advanced 구독 |
|
|
95
|
+
| **OpenCode** | `minimax-m2.7` | `opencode` | 무료 모델 제공 |
|
|
96
|
+
| **Copilot** | `gpt-5-mini` | `copilot login` | 무료 티어 제공 |
|
|
186
97
|
|
|
187
|
-
|
|
188
|
-
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
189
|
-
| 🛡️ **안전한 서비스 약관 준수** | 공식 CLI만 사용합니다 — API 키 스크래핑이나 리버스 엔지니어링이 없으므로 계정 정지 위험이 없습니다. |
|
|
190
|
-
| 🤖 **검증된 에이전트 도구** | 실전에서 검증된 5개의 코딩 에이전트(Claude, Codex, Gemini, OpenCode, Copilot)를 한 곳에서 사용하세요. |
|
|
191
|
-
| ⚡ **멀티 에이전트 자동 전환(Fallback)** | 엔진 하나가 멈춰도 걱정 없습니다. 다음 엔진이 즉시 이어받아 중단 없는 작업이 가능합니다. |
|
|
192
|
-
| 🎭 **오케스트레이션 기반 성능 극대화** | 복잡한 작업은 전문화된 서브 에이전트에게 분산시켜 처리량을 극대화합니다. |
|
|
193
|
-
| 📦 **100개+ 내장 스킬** | 브라우저 자동화, 문서 생성, 텔레그램 연동, 영구 메모리 등 설치 즉시 사용 가능한 기능들을 제공합니다. |
|
|
194
|
-
| 🖥️ **크로스 플랫폼** | macOS, Linux, Windows — ENOENT-safe CLI 스폰, 자동 감지, `.cmd` shim 지원, 네이티브 설치 전부 크로스플랫폼 동작. |
|
|
98
|
+
**폴백 체인**: 하나가 제한되거나 다운되면 다음 엔진이 자동으로 이어받음. `/fallback [cli1 cli2...]`로 설정.
|
|
195
99
|
|
|
196
|
-
|
|
100
|
+
**OpenCode 와일드카드**: OpenRouter, 로컬 LLM 등 아무 모델 엔드포인트나 연결 가능.
|
|
197
101
|
|
|
198
102
|
---
|
|
199
103
|
|
|
200
|
-
##
|
|
104
|
+
## 🧠 메모리
|
|
201
105
|
|
|
202
|
-
|
|
106
|
+
서로 다른 시간 범위를 담당하는 3계층 구조.
|
|
203
107
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
108
|
+
| 계층 | 저장 내용 | 동작 |
|
|
109
|
+
|---|---|---|
|
|
110
|
+
| **History Block** | 최근 세션 컨텍스트 | 최근 10개 세션, 최대 8000자, 작업 디렉토리 기준. 프롬프트 앞에 주입 |
|
|
111
|
+
| **Memory Flush** | 대화에서 추출한 구조화 지식 | 임계값(기본 10턴) 도달 시 트리거. 에피소드, 일일 로그(`YYYY-MM-DD.md`), 라이브 노트로 요약 |
|
|
112
|
+
| **Soul + Task Snapshot** | 정체성과 시맨틱 검색 | `soul.md`로 핵심 가치/톤/경계 정의. FTS5 인덱스에서 프롬프트당 최대 4개 관련 히트(700자) 검색 |
|
|
208
113
|
|
|
209
|
-
|
|
210
|
-
| ---- | ---- |
|
|
211
|
-
| 🎭 **PABCD 오케스트레이션** | `jaw dispatch`, `jaw orchestrate`, 영속 상태머신, 워커 레지스트리, 리서치 디스패치, 웹 UI 상태 표시까지 포함하는 본격적인 오케스트레이션 표면이 추가되었습니다. |
|
|
212
|
-
| 🧠 **구조화 메모리 런타임** | 단순 저장을 넘어 구조화 저장소, 인덱싱, 쿼리 확장, task snapshot, 리인덱스/감사 UI까지 갖춘 메모리 서브시스템으로 확장되었습니다. |
|
|
213
|
-
| 💬 **Discord + 음성 채널** | Web, Terminal, Telegram뿐 아니라 Discord와 음성/STT 흐름이 제품의 핵심 인터페이스로 올라왔습니다. |
|
|
214
|
-
| 🖥️ **대폭 확장된 웹 UI** | 설정 패널, 메모리/하트비트 제어, tool UI, provider icon, gesture, drag/drop 보호, virtual scroll, 렌더링 개선이 대거 추가되었습니다. |
|
|
215
|
-
| 📊 **다이어그램/위젯 렌더링** | iframe renderer, validator, 전용 CSS를 기반으로 인라인 다이어그램과 위젯 렌더링이 가시적인 기능군이 되었습니다. |
|
|
216
|
-
| ⌨️ **CLI/TUI 사용성 개선** | `/compact`, 오버레이/셀렉터, 세션 지속성, resume 분류, readiness 점검 등 터미널 사용성이 크게 개선되었습니다. |
|
|
217
|
-
| 🧪 **운영/CI/설치 강화** | `jaw doctor`, 브라우저 launch policy, 스킬 fallback/reset, submodule-safe CI, preview release, Vite 기반 배포가 강화되었습니다. |
|
|
218
|
-
| 📄 **오피스 자동화 성숙** | OfficeCLI 설치, smoke test, 로컬 바이너리, Office/PDF 워크플로가 `v1.2.0` 대비 훨씬 실전형이 되었습니다. |
|
|
114
|
+
세 계층 모두 시스템 프롬프트에 자동 반영. `jaw memory search <query>` 또는 `/memory <query>`로 검색.
|
|
219
115
|
|
|
220
116
|
---
|
|
221
117
|
|
|
222
|
-
##
|
|
223
|
-
|
|
224
|
-
```mermaid
|
|
225
|
-
graph LR
|
|
226
|
-
YOU["👤 사용자"] -->|웹 / 터미널 / Telegram| JAW["🦈 CLI-JAW"]
|
|
227
|
-
JAW -->|생성| C["Claude"]
|
|
228
|
-
JAW -->|생성| X["Codex"]
|
|
229
|
-
JAW -->|생성| G["Gemini"]
|
|
230
|
-
JAW -->|생성| O["OpenCode"]
|
|
231
|
-
JAW -->|생성| P["Copilot"]
|
|
232
|
-
JAW -->|주입| SK["📦 스킬"]
|
|
233
|
-
JAW -->|제어| BR["🌐 Chrome"]
|
|
234
|
-
JAW -->|전송| TG["📱 Telegram"]
|
|
235
|
-
|
|
236
|
-
style JAW fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
- 🤖 **5개의 AI 엔진, 1명의 비서** — Claude · Codex · Gemini · OpenCode · Copilot. `/cli` 명령어로 전환하세요.
|
|
240
|
-
- ⚡ **자동 전환(Fallback)** — 엔진 하나가 다운되면 다음 엔진이 매끄럽게 이어받습니다.
|
|
241
|
-
- 🎭 **멀티 에이전트 오케스트레이션** — 복잡한 작업은 전문화된 서브 에이전트들에게 자동으로 분산됩니다.
|
|
242
|
-
- 🎤 **음성 입력** — 웹 마이크 버튼 + 텔레그램 음성 메시지. 멀티 프로바이더 STT (OpenAI, Vertex AI).
|
|
243
|
-
- 📝 **프롬프트 템플릿** — 시각적 노드맵 에디터로 프롬프트 템플릿 생성, 관리, 재사용.
|
|
244
|
-
- 📦 **100개+ 스킬** — 브라우저 제어, 파일 편집, 이미지 생성, 웹 검색 외 [다양한 기능](#-스킬-시스템).
|
|
245
|
-
- 🧠 **영구 메모리** — 세션을 넘나들며 과거의 대화와 사용자 선호도를 기억합니다.
|
|
246
|
-
- 📱 **텔레그램 봇** — 휴대폰으로 비서와 채팅하고, 음성/사진/파일을 전송하세요.
|
|
247
|
-
- 🌐 **브라우저 자동화** — 비서가 알아서 웹을 탐색하고, 클릭하고, 타이핑하고, 스크린샷을 찍을 수 있습니다.
|
|
248
|
-
- 🔌 **MCP 생태계** — 한 번만 설치하면 5개의 AI 엔진 모두에서 즉시 사용 가능합니다.
|
|
249
|
-
- 🔍 **웹 검색** — MCP 도구를 통한 실시간 정보 검색.
|
|
250
|
-
- ⏰ **하트비트 작업** — 자동으로 실행되는 반복 일정을 등록하세요.
|
|
118
|
+
## 🎭 오케스트레이션 — PABCD
|
|
251
119
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
### 기타 실행 방법
|
|
120
|
+
복잡한 작업을 위한 5단계 상태 머신. 모든 전환에 사용자 승인 필요.
|
|
255
121
|
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
|
|
122
|
+
```
|
|
123
|
+
P (Plan) → A (Audit) → B (Build) → C (Check) → D (Done) → IDLE
|
|
124
|
+
⛔ ⛔ ⛔ 자동 자동
|
|
259
125
|
```
|
|
260
126
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
127
|
+
| 단계 | 동작 |
|
|
128
|
+
|---|---|
|
|
129
|
+
| **P** | Boss AI가 diff 수준 계획 작성. 검토를 위해 대기 |
|
|
130
|
+
| **A** | 읽기 전용 Worker가 계획의 실행 가능성 검증 |
|
|
131
|
+
| **B** | Boss가 구현. 읽기 전용 Worker가 결과 검증 |
|
|
132
|
+
| **C** | 타입 체크, 문서 갱신, 일관성 검사 |
|
|
133
|
+
| **D** | 전체 변경 요약. IDLE로 복귀 |
|
|
266
134
|
|
|
267
|
-
|
|
135
|
+
상태는 DB에 영속화되어 서버 재시작에도 유지. Worker는 파일 수정 불가. `jaw orchestrate` 또는 `/pabcd`로 활성화.
|
|
268
136
|
|
|
269
|
-
|
|
270
|
-
<summary>전체 스킬 목록 보기</summary>
|
|
137
|
+
---
|
|
271
138
|
|
|
272
|
-
|
|
273
|
-
| ------------------ | :---: | ------------------------------------------------ |
|
|
274
|
-
| **Active 스킬** | 22 | 매번 AI한테 자동으로 주입돼요. 항상 켜져 있어요. |
|
|
275
|
-
| **Reference 스킬** | 94 | 관련 작업을 시키면 그때 AI가 읽어서 써요. |
|
|
139
|
+
## 📦 스킬
|
|
276
140
|
|
|
277
|
-
|
|
141
|
+
100개 이상의 스킬, 용도별 정리.
|
|
278
142
|
|
|
279
|
-
| 스킬
|
|
280
|
-
|
|
281
|
-
| `
|
|
282
|
-
| `
|
|
283
|
-
| `
|
|
284
|
-
| `memory`
|
|
285
|
-
| `
|
|
286
|
-
| `
|
|
287
|
-
| `pdf` / `pdf-expert` / `docx` / `xlsx` / `pptx` / `hwp` | 오피스 및 PDF 문서 읽기, 생성, 편집 (한글 HWP 포함) |
|
|
288
|
-
| `screen-capture` | macOS 스크린샷 및 카메라 캡처 |
|
|
289
|
-
| `video` | JSON 기반 Remotion 프로그래매틱 비디오 렌더링 |
|
|
290
|
-
| `dev` / `dev-frontend` / `dev-backend` / `dev-data` / `dev-testing` | 서브에이전트용 개발 가이드 |
|
|
291
|
-
| `dev-pabcd` / `dev-scaffolding` / `dev-code-reviewer` | 오케스트레이션, 스캐폴딩, 코드 리뷰 가이드 |
|
|
143
|
+
| 카테고리 | 스킬 | 기능 |
|
|
144
|
+
|---|---|---|
|
|
145
|
+
| **오피스** | `pdf`, `docx`, `xlsx`, `pptx`, `hwp` | 문서 읽기/생성/편집. OfficeCLI를 통한 한글 HWP/HWPX |
|
|
146
|
+
| **자동화** | `browser`, `vision-click`, `screen-capture`, `desktop-control` | Chrome CDP, AI 좌표 클릭, macOS 스크린샷/카메라, Computer Use |
|
|
147
|
+
| **미디어** | `video`, `imagegen`, `lecture-stt`, `tts` | Remotion 비디오, OpenAI 이미지 생성, 강의 전사, 음성 합성 |
|
|
148
|
+
| **통합** | `github`, `notion`, `telegram-send`, `memory` | 이슈/PR/CI, Notion 페이지, Telegram 미디어, 영속 메모리 |
|
|
149
|
+
| **시각화** | `diagram` | SVG 다이어그램, 차트, 인터랙티브 시각화를 채팅에서 렌더링 |
|
|
150
|
+
| **개발 가이드** | `dev`, `dev-frontend`, `dev-backend`, `dev-data`, `dev-testing`, `dev-pabcd` | 서브에이전트 프롬프트에 주입되는 개발 가이드라인 |
|
|
292
151
|
|
|
293
|
-
|
|
152
|
+
22개 활성 스킬 (항상 주입). 94개 이상 참조 스킬 (요청 시 로드).
|
|
294
153
|
|
|
295
|
-
|
|
154
|
+
---
|
|
296
155
|
|
|
297
|
-
|
|
298
|
-
jaw skill install <name> # reference → active로 영구 활성화
|
|
299
|
-
```
|
|
156
|
+
## 🌐 브라우저 & 데스크톱 자동화
|
|
300
157
|
|
|
301
|
-
|
|
158
|
+
| 기능 | 동작 |
|
|
159
|
+
|---|---|
|
|
160
|
+
| **Chrome CDP** | 탐색, 클릭, 타이핑, 스크린샷, JS 실행, 스크롤, 포커스, 키 입력 — DevTools Protocol 10개 액션 |
|
|
161
|
+
| **Vision-click** | 화면 캡처 → AI가 좌표 추출 → 클릭. `jaw browser vision-click "로그인 버튼"` |
|
|
162
|
+
| **DOM 레퍼런스** | ChatGPT, Grok, Gemini 웹 UI의 셀렉터 맵 — 모델 선택, 중지 버튼, 도구 드로어 |
|
|
163
|
+
| **Computer Use** | Codex App Computer Use MCP를 통한 데스크톱 앱 자동화 |
|
|
164
|
+
| **Diagram 스킬** | SVG 다이어그램/인터랙티브 HTML 시각화, 샌드박스 iframe에서 렌더링 |
|
|
302
165
|
|
|
303
166
|
---
|
|
304
167
|
|
|
305
|
-
##
|
|
168
|
+
## 🔌 MCP
|
|
306
169
|
|
|
307
|
-
|
|
170
|
+
[Model Context Protocol](https://modelcontextprotocol.io)은 AI 에이전트가 외부 도구를 사용할 수 있게 합니다. CLI-JAW는 5개 엔진의 MCP 설정을 하나의 파일로 관리합니다.
|
|
308
171
|
|
|
172
|
+
```bash
|
|
173
|
+
jaw mcp install @anthropic/context7
|
|
174
|
+
# → Claude, Codex, Gemini, OpenCode, Copilot 설정 파일에 동시 동기화
|
|
309
175
|
```
|
|
310
|
-
📱 Telegram ←→ 🦈 CLI-JAW ←→ 🤖 AI 엔진
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
<details>
|
|
314
|
-
<summary>📋 텔레그램 설정 (3단계)</summary>
|
|
315
|
-
|
|
316
|
-
1. **봇 만들기** — [@BotFather](https://t.me/BotFather)에게 `/newbot` → 토큰 복사
|
|
317
|
-
2. **설정** — `jaw init --telegram-token 토큰` 실행하거나 Web UI 설정에서 입력
|
|
318
|
-
3. **채팅 시작** — 봇에게 아무 메시지나 보내세요. 첫 메시지에서 채팅 ID가 자동 저장됩니다.
|
|
319
|
-
|
|
320
|
-
</details>
|
|
321
|
-
|
|
322
|
-
**텔레그램에서 가능한 작업:**
|
|
323
|
-
- 💬 비서와 채팅 (5개 AI 엔진 중 선택)
|
|
324
|
-
- 🎤 음성 메시지 전송 (자동 텍스트 변환)
|
|
325
|
-
- 📎 처리를 위한 파일 및 사진 전송
|
|
326
|
-
- 🎙️ 음성 + 텍스트 + 첨부파일을 하나의 메시지에 조합 가능
|
|
327
|
-
- ⚡ 명령어 실행 (`/cli`, `/model`, `/status`)
|
|
328
|
-
- 🔄 실시간 AI 엔진 전환
|
|
329
|
-
|
|
330
|
-
**비서가 보내주는 내용:**
|
|
331
|
-
- 마크다운 서식이 적용된 AI 응답
|
|
332
|
-
- 생성된 이미지, PDF, 문서
|
|
333
|
-
- 예약된 작업 결과 (하트비트 작업)
|
|
334
|
-
- 브라우저 스크린샷
|
|
335
|
-
|
|
336
|
-
<p align="center">
|
|
337
|
-
<img src="docs/screenshots/telegram-bot.png" width="300" alt="텔레그램 봇" />
|
|
338
|
-
</p>
|
|
339
176
|
|
|
340
177
|
---
|
|
341
178
|
|
|
342
|
-
##
|
|
343
|
-
|
|
344
|
-
CLI-JAW는 멀티 프로바이더 STT로 모든 인터페이스에서 음성 입력을 지원합니다:
|
|
179
|
+
## 💬 메시징
|
|
345
180
|
|
|
346
|
-
|
|
347
|
-
| --------------------- | ---------------------------------------------- |
|
|
348
|
-
| **OpenAI 호환** | Settings UI → STT → OpenAI 엔드포인트 + API 키 |
|
|
349
|
-
| **Google Vertex AI** | Settings UI → STT → Vertex AI 인증 정보 |
|
|
350
|
-
| **커스텀 엔드포인트** | OpenAI 호환 STT API URL 직접 입력 |
|
|
181
|
+
### Telegram
|
|
351
182
|
|
|
352
|
-
|
|
183
|
+
설정 3단계: BotFather에서 봇 생성 → `jaw init --telegram-token` → 메시지 전송.
|
|
353
184
|
|
|
354
|
-
|
|
355
|
-
- 📱 **텔레그램** — 음성 메시지 전송 시 AI에 전달 전 자동 전사
|
|
356
|
-
- 🎙️ **멀티모달** — 음성 + 텍스트 + 파일 첨부를 하나의 메시지에 조합 가능
|
|
185
|
+
텍스트 채팅, 음성 메시지(자동 STT), 파일/사진 업로드, 슬래시 명령어, 예약 작업 결과 전송.
|
|
357
186
|
|
|
358
|
-
|
|
187
|
+
### Discord
|
|
359
188
|
|
|
360
|
-
|
|
189
|
+
Telegram과 동일 — 텍스트, 파일, 명령어. 채널/스레드 라우팅, 에이전트 결과 포워더. 웹 UI 설정에서 구성.
|
|
361
190
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-

|
|
365
|
-
|
|
366
|
-
복잡한 작업의 경우, 비서가 전문 서브 에이전트에게 작업을 위임합니다:
|
|
367
|
-
|
|
368
|
-
```mermaid
|
|
369
|
-
graph TD
|
|
370
|
-
USER["👤 사용자 요청"] --> TRIAGE["🔍 트리아지 — 단순? 복잡?"]
|
|
371
|
-
|
|
372
|
-
TRIAGE -->|단순| DIRECT["⚡ 직접 응답"]
|
|
373
|
-
TRIAGE -->|복잡| PLAN["📝 기획"]
|
|
374
|
-
|
|
375
|
-
PLAN --> FE["🎨 프론트엔드"]
|
|
376
|
-
PLAN --> BE["⚙️ 백엔드"]
|
|
377
|
-
PLAN --> DATA["📊 데이터"]
|
|
378
|
-
|
|
379
|
-
FE --> GATE["🚪 게이트 리뷰"]
|
|
380
|
-
BE --> GATE
|
|
381
|
-
DATA --> GATE
|
|
382
|
-
|
|
383
|
-
GATE -->|통과| NEXT["✅ 완료"]
|
|
384
|
-
GATE -->|실패| RETRY["🔄 디버그 & 재시도"]
|
|
385
|
-
|
|
386
|
-
style USER fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
|
|
387
|
-
style TRIAGE fill:#fdf2e9,stroke:#d4a574,color:#5c4033
|
|
388
|
-
style PLAN fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
|
|
389
|
-
style GATE fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
|
|
390
|
-
```
|
|
191
|
+
### 음성 & STT
|
|
391
192
|
|
|
392
|
-
|
|
193
|
+
웹(마이크 버튼), Telegram(음성 메시지), Discord에서 동작. OpenAI 호환, Google Vertex AI, 커스텀 엔드포인트 지원.
|
|
393
194
|
|
|
394
195
|
---
|
|
395
196
|
|
|
396
|
-
##
|
|
397
|
-
|
|
398
|
-
```bash
|
|
399
|
-
jaw mcp install @anthropic/context7 # 한 번만 설치
|
|
400
|
-
# → Claude, Codex, Gemini, OpenCode, Copilot, Antigravity 전부 자동 동기화
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
```mermaid
|
|
404
|
-
graph LR
|
|
405
|
-
MJ["📄 mcp.json"] -->|자동 동기화| CL["Claude"]
|
|
406
|
-
MJ -->|자동 동기화| CX["Codex"]
|
|
407
|
-
MJ -->|자동 동기화| GM["Gemini"]
|
|
408
|
-
MJ -->|자동 동기화| OC["OpenCode"]
|
|
409
|
-
MJ -->|자동 동기화| CP["코파일럿"]
|
|
410
|
-
MJ -->|자동 동기화| AG["안티그래비티"]
|
|
411
|
-
|
|
412
|
-
style MJ fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
|
|
413
|
-
```
|
|
197
|
+
## ⏰ 스케줄링
|
|
414
198
|
|
|
415
|
-
|
|
199
|
+
| 기능 | 설명 |
|
|
200
|
+
|---|---|
|
|
201
|
+
| **Heartbeat 작업** | Cron 예약 작업을 무인 실행. Telegram/Discord로 결과 전달 |
|
|
202
|
+
| **서비스 자동 시작** | `jaw service install` — systemd, launchd, Docker 자동 감지 |
|
|
416
203
|
|
|
417
204
|
---
|
|
418
205
|
|
|
@@ -420,185 +207,140 @@ graph LR
|
|
|
420
207
|
|
|
421
208
|
```bash
|
|
422
209
|
jaw serve # 서버 시작
|
|
423
|
-
jaw service install # 부팅 시 자동 실행 (systemd/launchd/docker 자동 감지)
|
|
424
|
-
jaw service status # 데몬 상태 확인
|
|
425
|
-
jaw service unset # 자동 실행 해제
|
|
426
|
-
jaw service logs # 서비스 로그 보기
|
|
427
210
|
jaw chat # 터미널 TUI
|
|
428
|
-
jaw doctor #
|
|
429
|
-
jaw
|
|
430
|
-
jaw
|
|
211
|
+
jaw doctor # 12개 항목 진단
|
|
212
|
+
jaw service install # 부팅 시 자동 시작
|
|
213
|
+
jaw skill install <name> # 스킬 활성화
|
|
214
|
+
jaw mcp install <package> # MCP 설치 → 5개 엔진 동기화
|
|
431
215
|
jaw memory search <query> # 메모리 검색
|
|
432
|
-
jaw browser start # Chrome
|
|
433
|
-
jaw browser vision-click "로그인"
|
|
434
|
-
jaw clone ~/
|
|
435
|
-
jaw
|
|
216
|
+
jaw browser start # Chrome 실행 (CDP)
|
|
217
|
+
jaw browser vision-click "로그인" # AI 좌표 클릭
|
|
218
|
+
jaw clone ~/project # 인스턴스 복제
|
|
219
|
+
jaw orchestrate # PABCD 진입
|
|
436
220
|
jaw reset # 전체 초기화
|
|
437
221
|
```
|
|
438
222
|
|
|
439
223
|
---
|
|
440
224
|
|
|
441
|
-
##
|
|
442
|
-
|
|
443
|
-
CLI-JAW의 독립된 인스턴스를 여러 개 실행할 수 있어요 — 각각 고유한 설정, 메모리, 스킬, 데이터베이스를 가집니다.
|
|
225
|
+
## 🐳 Docker
|
|
444
226
|
|
|
445
227
|
```bash
|
|
446
|
-
|
|
447
|
-
jaw clone ~/my-project
|
|
448
|
-
|
|
449
|
-
# 다른 포트로 실행
|
|
450
|
-
jaw --home ~/my-project serve --port 3458
|
|
451
|
-
|
|
452
|
-
# 또는 둘 다 부팅 시 자동 실행
|
|
453
|
-
jaw service install # 기본 → 포트 3457
|
|
454
|
-
jaw --home ~/my-project service install --port 3458 # 프로젝트 → 포트 3458
|
|
228
|
+
docker compose up -d # → http://localhost:3457
|
|
455
229
|
```
|
|
456
230
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
| 플래그 / 환경변수 | 기능 |
|
|
460
|
-
| --------------------- | ---------------------------------------- |
|
|
461
|
-
| `--home <경로>` | 이 실행에 사용할 커스텀 홈 디렉토리 지정 |
|
|
462
|
-
| `--home=<경로>` | 동일 (`=` 구문) |
|
|
463
|
-
| `CLI_JAW_HOME=<경로>` | 환경변수로 지정 |
|
|
464
|
-
| `jaw clone <대상>` | 현재 인스턴스를 새 디렉토리로 복제 |
|
|
465
|
-
| `--port <포트>` | `serve` / `service`용 커스텀 포트 |
|
|
231
|
+
비root `jaw` 사용자, Chromium 샌드박스 기본 활성화. `Dockerfile`(npm 설치)과 `Dockerfile.dev`(로컬 소스) 제공.
|
|
466
232
|
|
|
467
233
|
---
|
|
468
234
|
|
|
469
|
-
##
|
|
235
|
+
## 📖 문서
|
|
470
236
|
|
|
471
|
-
|
|
237
|
+
| 문서 | 내용 |
|
|
238
|
+
|---|---|
|
|
239
|
+
| [CHANGELOG.md](CHANGELOG.md) | 릴리스 로그 (v1.6.0 캐치업: v1.2.0~v1.5.1 포함) |
|
|
240
|
+
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | 시스템 설계, 모듈 그래프, 95개 API 핸들러 |
|
|
241
|
+
| [TESTS.md](TESTS.md) | 테스트 커버리지, 카운트, 계획 |
|
|
242
|
+
| [memory-architecture.md](docs/memory-architecture.md) | 3계층 메모리 모델, 인덱싱, 런타임 |
|
|
243
|
+
| [devlog/structure/](devlog/structure/) | 내부 아키텍처 레퍼런스 |
|
|
472
244
|
|
|
473
|
-
|
|
474
|
-
<summary>전체 프리셋 보기</summary>
|
|
245
|
+
---
|
|
475
246
|
|
|
476
|
-
|
|
477
|
-
| ------------ | -------------------------- | ---------------------------------------------- |
|
|
478
|
-
| **Claude** | `claude-sonnet-4-6` | opus-4-6, haiku-4-5, 확장 사고 변형 |
|
|
479
|
-
| **Codex** | `gpt-5.3-codex` | spark, 5.2, 5.1-max, 5.1-mini |
|
|
480
|
-
| **Gemini** | `gemini-2.5-pro` | 3.0-pro-preview, 3-flash-preview, 2.5-flash |
|
|
481
|
-
| **OpenCode** | `claude-opus-4-6-thinking` | 🆓 big-pickle, GLM-5, MiniMax, Kimi, GPT-5-Nano |
|
|
482
|
-
| **Copilot** | `gpt-4.1` 🆓 | 🆓 gpt-5-mini, claude-sonnet-4.6, opus-4.6 |
|
|
247
|
+
## ⚖️ 비교
|
|
483
248
|
|
|
484
|
-
|
|
249
|
+
| | CLI-JAW | Hermes Agent | Claude Code |
|
|
250
|
+
|---|---|---|---|
|
|
251
|
+
| **모델 접근** | OAuth 월정액 + OpenCode 와일드카드 | API 키 (OpenRouter 200+) | Anthropic 전용 |
|
|
252
|
+
| **비용** | 기존 월정액 | 토큰 단위 과금 | Anthropic 구독 |
|
|
253
|
+
| **주 UI** | 웹 PWA + Mac 앱 + TUI | TUI 전용 | CLI + IDE 플러그인 |
|
|
254
|
+
| **메시징** | Telegram(음성) + Discord | TG/Discord/Slack/WhatsApp/Signal | 없음 |
|
|
255
|
+
| **메모리** | 3계층 + FTS5 | 자기학습 루프 + Honcho | 파일 기반 |
|
|
256
|
+
| **브라우저** | CDP + vision-click + DOM ref | 제한적 | MCP 경유 |
|
|
257
|
+
| **오케스트레이션** | PABCD 5단계 FSM | 서브에이전트 스폰 | Task 도구 |
|
|
485
258
|
|
|
486
|
-
|
|
259
|
+
CLI-JAW는 OpenClaw 하네스 아키텍처(하이브리드 검색 매니저, 폴백 패턴, 세션 인덱싱)를 계승합니다.
|
|
487
260
|
|
|
488
261
|
---
|
|
489
262
|
|
|
490
|
-
##
|
|
263
|
+
## 🏗️ 멀티 인스턴스
|
|
491
264
|
|
|
492
|
-
|
|
265
|
+
별도의 설정, 메모리, 데이터베이스를 가진 독립 인스턴스를 실행할 수 있습니다.
|
|
493
266
|
|
|
494
267
|
```bash
|
|
495
|
-
|
|
268
|
+
jaw clone ~/my-project
|
|
269
|
+
jaw --home ~/my-project serve --port 3458
|
|
496
270
|
```
|
|
497
271
|
|
|
498
|
-
> 자세한 내용은 [English README](README.md#-docker--container-isolation) 참고.
|
|
499
|
-
> `Dockerfile` (npm 배포판) / `Dockerfile.dev` (로컬 소스) 두 가지 제공.
|
|
500
|
-
|
|
501
272
|
---
|
|
502
273
|
|
|
503
274
|
## 🛠️ 개발
|
|
504
275
|
|
|
505
276
|
<details>
|
|
506
|
-
<summary
|
|
277
|
+
<summary>빌드 및 프로젝트 구조</summary>
|
|
507
278
|
|
|
508
279
|
```bash
|
|
509
|
-
# 빌드 (TypeScript → JavaScript)
|
|
510
280
|
npm run build # tsc → dist/
|
|
511
|
-
|
|
512
|
-
# 소스에서 실행 (개발용)
|
|
513
|
-
npm run dev # tsx server.ts
|
|
514
|
-
npx tsx bin/cli-jaw.ts serve # .ts에서 직접 실행
|
|
515
|
-
|
|
516
|
-
# 빌드 결과물로 실행 (프로덕션)
|
|
517
|
-
node dist/bin/cli-jaw.js serve
|
|
281
|
+
npm run dev # tsx server.ts (핫 리로드)
|
|
518
282
|
```
|
|
519
283
|
|
|
520
|
-
**프로젝트 구조:**
|
|
521
|
-
|
|
522
284
|
```
|
|
523
285
|
src/
|
|
524
|
-
├── agent/ # AI 에이전트
|
|
525
|
-
├── browser/ # Chrome CDP
|
|
526
|
-
├── cli/ # CLI
|
|
527
|
-
├── core/ # DB, 설정, 로깅
|
|
528
|
-
├──
|
|
529
|
-
├── memory/ #
|
|
530
|
-
├── orchestrator/ #
|
|
531
|
-
├──
|
|
532
|
-
├──
|
|
533
|
-
|
|
534
|
-
└── telegram/ # 텔레그램 봇 연동
|
|
286
|
+
├── agent/ # AI 에이전트 생명주기, 스폰, History Block
|
|
287
|
+
├── browser/ # Chrome CDP, vision-click
|
|
288
|
+
├── cli/ # CLI 레지스트리, 슬래시 명령어, 모델 프리셋
|
|
289
|
+
├── core/ # DB, 설정, Employee, 로깅
|
|
290
|
+
├── discord/ # Discord 봇, 명령어, 파일 전송
|
|
291
|
+
├── memory/ # 3계층 메모리, FTS5 인덱싱, Flush, Soul
|
|
292
|
+
├── orchestrator/ # PABCD 상태 머신, Worker 레지스트리
|
|
293
|
+
├── routes/ # REST API (95개 핸들러, 94개 엔드포인트)
|
|
294
|
+
├── security/ # 입력 검증, 경로 보호
|
|
295
|
+
└── telegram/ # Telegram 봇, 음성 STT, 포워더
|
|
535
296
|
```
|
|
536
297
|
|
|
537
|
-
> TypeScript — `strict: true`, `NodeNext` 모듈 해상도, ES2022 타겟.
|
|
538
|
-
|
|
539
298
|
</details>
|
|
540
299
|
|
|
541
300
|
---
|
|
542
301
|
|
|
543
302
|
## 🧪 테스트
|
|
544
303
|
|
|
545
|
-
<details>
|
|
546
|
-
<summary>현재 패스 수와 인벤토리는 TESTS.md 기준</summary>
|
|
547
|
-
|
|
548
304
|
```bash
|
|
549
|
-
npm test
|
|
305
|
+
npm test # tsx --test (Node.js 네이티브 테스트 러너)
|
|
550
306
|
```
|
|
551
307
|
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
</details>
|
|
308
|
+
[TESTS.md](TESTS.md)에서 현재 인벤토리와 통과 수 확인.
|
|
555
309
|
|
|
556
310
|
---
|
|
557
311
|
|
|
558
|
-
##
|
|
559
|
-
|
|
560
|
-
| 문서 | 내용 |
|
|
561
|
-
| --------------------------------------- | --------------------------------------------------- |
|
|
562
|
-
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | 시스템 설계, 모듈 그래프, REST API (40+ 엔드포인트) |
|
|
563
|
-
| [TESTS.md](TESTS.md) | 테스트 커버리지, 테스트 계획 |
|
|
312
|
+
## ❓ 문제 해결
|
|
564
313
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
|
571
|
-
| `
|
|
572
|
-
| `
|
|
573
|
-
|
|
|
574
|
-
|
|
|
575
|
-
|
|
|
576
|
-
|
|
|
577
|
-
|
|
|
578
|
-
| 메모리가 세션 간 유지 안 됨 | `~/.cli-jaw/memory/` 디렉토리 없음 | `jaw init` 재실행하면 자동 생성 |
|
|
314
|
+
<details>
|
|
315
|
+
<summary>자주 발생하는 문제</summary>
|
|
316
|
+
|
|
317
|
+
| 문제 | 해결 |
|
|
318
|
+
|---|---|
|
|
319
|
+
| `cli-jaw: command not found` | `npm install -g cli-jaw` 재실행. `npm bin -g`가 `$PATH`에 있는지 확인 |
|
|
320
|
+
| `Error: node version` | Node.js 22+로 업그레이드: `nvm install 22` |
|
|
321
|
+
| `NODE_MODULE_VERSION` 불일치 | `npm run ensure:native` (자동 재빌드) |
|
|
322
|
+
| 에이전트 타임아웃 | `jaw doctor`로 CLI 인증 확인 |
|
|
323
|
+
| `EADDRINUSE: port 3457` | 다른 인스턴스 실행 중. `--port 3458` 사용 |
|
|
324
|
+
| Telegram 무응답 | `jaw doctor`로 토큰 확인. `jaw serve` 실행 중인지 확인 |
|
|
325
|
+
| 스킬 미로드 | `jaw skill reset` 후 `jaw mcp sync` |
|
|
326
|
+
| 브라우저 명령어 실패 | Chrome 설치. `jaw browser start` 먼저 실행 |
|
|
579
327
|
|
|
580
|
-
>
|
|
328
|
+
</details>
|
|
581
329
|
|
|
582
330
|
---
|
|
583
331
|
|
|
584
332
|
## 🤝 기여하기
|
|
585
333
|
|
|
586
|
-
|
|
334
|
+
1. `master`에서 포크 & 브랜치
|
|
335
|
+
2. `npm run build && npm test`
|
|
336
|
+
3. PR 제출
|
|
587
337
|
|
|
588
|
-
|
|
589
|
-
2. `npm run build && npm test`로 빌드 & 테스트가 통과하는지 확인
|
|
590
|
-
3. PR을 보내주세요 — 빠르게 리뷰할게요
|
|
591
|
-
|
|
592
|
-
> 📋 버그를 찾았거나 아이디어가 있으신가요? [이슈 열기](https://github.com/lidge-jun/cli-jaw/issues)
|
|
338
|
+
버그나 아이디어? [이슈 열기](https://github.com/lidge-jun/cli-jaw/issues)
|
|
593
339
|
|
|
594
340
|
---
|
|
595
341
|
|
|
596
342
|
<div align="center">
|
|
597
343
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
Made with ❤️ by the CLI-JAW community
|
|
601
|
-
|
|
602
|
-
[MIT License](LICENSE)
|
|
344
|
+
**[MIT License](LICENSE)**
|
|
603
345
|
|
|
604
346
|
</div>
|