cli-jaw 0.1.10 → 0.1.12
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 +44 -13
- package/README.md +12 -11
- package/README.zh-CN.md +43 -12
- package/dist/bin/commands/doctor.js +13 -2
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/mcp.js +15 -18
- package/dist/bin/commands/mcp.js.map +1 -1
- package/dist/bin/commands/serve.js +3 -28
- package/dist/bin/commands/serve.js.map +1 -1
- package/dist/bin/commands/skill.js +9 -6
- package/dist/bin/commands/skill.js.map +1 -1
- package/dist/lib/mcp-sync.js +123 -31
- package/dist/lib/mcp-sync.js.map +1 -1
- package/{scripts → dist/scripts}/check-copilot-gap.js +24 -17
- package/dist/scripts/check-copilot-gap.js.map +1 -0
- package/{scripts/check-deps-offline.mjs → dist/scripts/check-deps-offline.js} +24 -20
- package/dist/scripts/check-deps-offline.js.map +1 -0
- package/dist/scripts/fresh-install-smoke.js +120 -0
- package/dist/scripts/fresh-install-smoke.js.map +1 -0
- package/{scripts/i18n-registry.py → dist/scripts/i18n-registry.js} +115 -122
- package/dist/scripts/i18n-registry.js.map +1 -0
- package/dist/server.js +34 -26
- package/dist/server.js.map +1 -1
- package/dist/src/agent/spawn.js +22 -8
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/command-context.js +13 -3
- package/dist/src/cli/command-context.js.map +1 -1
- package/dist/src/prompt/builder.js +28 -1
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/telegram/bot.js +1 -1
- package/dist/src/telegram/bot.js.map +1 -1
- package/package.json +9 -5
- package/public/dist/bundle.js +72 -77
- package/public/dist/bundle.js.map +4 -4
- package/public/index.html +1 -3
- package/public/js/{api.js → api.ts} +18 -12
- package/public/js/{constants.js → constants.ts} +44 -24
- package/public/js/features/{appname.js → appname.ts} +13 -12
- package/public/js/features/{chat.js → chat.ts} +46 -37
- package/public/js/features/{employees.js → employees.ts} +67 -38
- package/public/js/features/heartbeat.ts +90 -0
- package/public/js/features/{i18n.js → i18n.ts} +20 -20
- package/public/js/features/memory.ts +125 -0
- package/public/js/features/{settings.js → settings.ts} +125 -93
- package/public/js/features/{sidebar.js → sidebar.ts} +15 -16
- package/public/js/features/{skills.js → skills.ts} +29 -16
- package/public/js/features/{slash-commands.js → slash-commands.ts} +34 -29
- package/public/js/features/{theme.js → theme.ts} +4 -4
- package/public/js/{locale.js → locale.ts} +3 -3
- package/public/js/main.ts +280 -0
- package/public/js/{render.js → render.ts} +34 -107
- package/public/js/state.ts +38 -0
- package/public/js/{ui.js → ui.ts} +60 -63
- package/public/js/{ws.js → ws.ts} +46 -20
- package/public/locales/en.json +1 -0
- package/public/locales/ko.json +1 -0
- package/scripts/check-copilot-gap.ts +75 -0
- package/scripts/check-deps-offline.ts +98 -0
- package/scripts/fresh-install-smoke.ts +130 -0
- package/scripts/i18n-registry.ts +230 -0
- package/scripts/postinstall-guard.cjs +5 -0
- package/dist/bin/cli-claw.js +0 -96
- package/dist/bin/cli-claw.js.map +0 -1
- package/public/js/features/heartbeat.js +0 -80
- package/public/js/features/memory.js +0 -85
- package/public/js/main.js +0 -278
- package/public/js/state.js +0 -16
package/README.ko.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
*Claude, Codex, Gemini... 이제 번갈아 쓰지 마세요.*
|
|
8
8
|
|
|
9
|
-
[](#-테스트)
|
|
10
10
|
[](https://typescriptlang.org)
|
|
11
11
|
[](https://nodejs.org)
|
|
12
12
|
[](LICENSE)
|
|
@@ -84,7 +84,7 @@ CLI-JAW는 내 컴퓨터에 상주하며 이미 익숙한 인터페이스인 **
|
|
|
84
84
|
> 💬 *"이 모듈 리팩토링하고 테스트도 짜줘"* → 서브에이전트가 알아서, 커피 한 잔 하고 오면 돼요
|
|
85
85
|
> 💬 *"저 PDF 다운받아서 핵심만 노션에 정리해"* → 브라우저 + 노션 스킬 조합으로 뚝딱
|
|
86
86
|
|
|
87
|
-
단일 모델만을 사용하는 기존 비서들과 달리, CLI-JAW는 5개의 AI 엔진(Claude, Codex, Gemini, OpenCode, Copilot)을 공식 CLI를 통해 오케스트레이션하여 모든 제공업체의 장점을 통합된 경험으로 제공합니다. 하나의 엔진 사용량이 초과되면 자동으로 다음 엔진으로 전환됩니다.
|
|
87
|
+
단일 모델만을 사용하는 기존 비서들과 달리, CLI-JAW는 5개의 AI 엔진(Claude, Codex, Gemini, OpenCode, Copilot)을 공식 CLI를 통해 오케스트레이션하여 모든 제공업체의 장점을 통합된 경험으로 제공합니다. 하나의 엔진 사용량이 초과되면 자동으로 다음 엔진으로 전환됩니다. 107개의 내장 스킬이 브라우저 자동화부터 문서 생성까지 모든 것을 처리합니다.
|
|
88
88
|
|
|
89
89
|
| | 왜 CLI-JAW인가요? |
|
|
90
90
|
| --------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
|
@@ -92,7 +92,7 @@ CLI-JAW는 내 컴퓨터에 상주하며 이미 익숙한 인터페이스인 **
|
|
|
92
92
|
| 🤖 **검증된 에이전트 도구** | 실전에서 검증된 5개의 코딩 에이전트(Claude, Codex, Gemini, OpenCode, Copilot)를 한 곳에서 사용하세요. |
|
|
93
93
|
| ⚡ **멀티 에이전트 자동 전환(Fallback)** | 엔진 하나가 멈춰도 걱정 없습니다. 다음 엔진이 즉시 이어받아 중단 없는 작업이 가능합니다. |
|
|
94
94
|
| 🎭 **오케스트레이션 기반 성능 극대화** | 복잡한 작업은 전문화된 서브 에이전트에게 분산시켜 처리량을 극대화합니다. |
|
|
95
|
-
| 📦 **
|
|
95
|
+
| 📦 **107개의 내장 스킬** | 브라우저 자동화, 문서 생성, 텔레그램 연동, 영구 메모리 등 설치 즉시 사용 가능한 기능들을 제공합니다. |
|
|
96
96
|
| 🖥️ **크로스 플랫폼** | macOS, Linux, Windows (WSL) — 브라우저 실행, CLI 감지, 설치 모두 네이티브 지원. |
|
|
97
97
|
|
|
98
98
|

|
|
@@ -119,7 +119,7 @@ graph LR
|
|
|
119
119
|
- 🤖 **5개의 AI 엔진, 1명의 비서** — Claude · Codex · Gemini · OpenCode · Copilot. `/cli` 명령어로 전환하세요.
|
|
120
120
|
- ⚡ **자동 전환(Fallback)** — 엔진 하나가 다운되면 다음 엔진이 매끄럽게 이어받습니다.
|
|
121
121
|
- 🎭 **멀티 에이전트 오케스트레이션** — 복잡한 작업은 전문화된 서브 에이전트들에게 자동으로 분산됩니다.
|
|
122
|
-
- 📦 **
|
|
122
|
+
- 📦 **107개의 스킬** — 브라우저 제어, 파일 편집, 이미지 생성, 웹 검색 외 [다양한 기능](#-스킬-시스템).
|
|
123
123
|
- 🧠 **영구 메모리** — 세션을 넘나들며 과거의 대화와 사용자 선호도를 기억합니다.
|
|
124
124
|
- 📱 **텔레그램 봇** — 휴대폰으로 비서와 채팅하고, 음성/사진/파일을 전송하세요.
|
|
125
125
|
- 🌐 **브라우저 자동화** — 비서가 알아서 웹을 탐색하고, 클릭하고, 타이핑하고, 스크린샷을 찍을 수 있습니다.
|
|
@@ -142,7 +142,7 @@ jaw launchd # 부팅 시 자동 실행 (macOS)
|
|
|
142
142
|
|
|
143
143
|
## 📦 스킬 시스템
|
|
144
144
|
|
|
145
|
-
**
|
|
145
|
+
**107개 스킬** 내장 — 브라우저, GitHub, 노션, 텔레그램, 메모리, PDF, 이미지 생성 등 [다양하게](#).
|
|
146
146
|
|
|
147
147
|
<details>
|
|
148
148
|
<summary>전체 스킬 목록 보기</summary>
|
|
@@ -150,7 +150,7 @@ jaw launchd # 부팅 시 자동 실행 (macOS)
|
|
|
150
150
|
| 티어 | 수량 | 작동 방식 |
|
|
151
151
|
| ------------------ | :---: | ------------------------------------------------ |
|
|
152
152
|
| **Active 스킬** | 17 | 매번 AI한테 자동으로 주입돼요. 항상 켜져 있어요. |
|
|
153
|
-
| **Reference 스킬** |
|
|
153
|
+
| **Reference 스킬** | 90 | 관련 작업을 시키면 그때 AI가 읽어서 써요. |
|
|
154
154
|
|
|
155
155
|
#### Active 스킬 (항상 켜짐)
|
|
156
156
|
|
|
@@ -170,7 +170,7 @@ jaw launchd # 부팅 시 자동 실행 (macOS)
|
|
|
170
170
|
|
|
171
171
|
#### Reference 스킬 (필요할 때만)
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
90개 스킬이 더 있어요 — spotify, 날씨, 딥리서치, TTS, 비디오 다운로드, Apple 미리알림, 1Password, Terraform, PostgreSQL, Jupyter 등.
|
|
174
174
|
|
|
175
175
|
```bash
|
|
176
176
|
jaw skill install <name> # reference → active로 영구 활성화
|
|
@@ -250,11 +250,11 @@ graph TD
|
|
|
250
250
|
|
|
251
251
|
---
|
|
252
252
|
|
|
253
|
-
## 🔌 MCP — 단일 설정,
|
|
253
|
+
## 🔌 MCP — 단일 설정, 6개의 AI 엔진
|
|
254
254
|
|
|
255
255
|
```bash
|
|
256
256
|
jaw mcp install @anthropic/context7 # 한 번만 설치
|
|
257
|
-
# → Claude, Codex, Gemini, OpenCode, Copilot 전부 자동 동기화
|
|
257
|
+
# → Claude, Codex, Gemini, OpenCode, Copilot, Antigravity 전부 자동 동기화
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
```mermaid
|
|
@@ -263,12 +263,13 @@ graph LR
|
|
|
263
263
|
MJ -->|자동 동기화| CX["Codex"]
|
|
264
264
|
MJ -->|자동 동기화| GM["Gemini"]
|
|
265
265
|
MJ -->|자동 동기화| OC["OpenCode"]
|
|
266
|
-
MJ -->|자동 동기화| CP["
|
|
266
|
+
MJ -->|자동 동기화| CP["코파일럿"]
|
|
267
|
+
MJ -->|자동 동기화| AG["안티그래비티"]
|
|
267
268
|
|
|
268
269
|
style MJ fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
|
|
269
270
|
```
|
|
270
271
|
|
|
271
|
-
설정 파일
|
|
272
|
+
설정 파일 6개를 별도로 수정할 필요가 없습니다. 한 번만 설치하면 모든 AI 엔진에 적용됩니다.
|
|
272
273
|
|
|
273
274
|
---
|
|
274
275
|
|
|
@@ -282,15 +283,45 @@ jaw launchd unset # 자동 실행 해제
|
|
|
282
283
|
jaw chat # 터미널 TUI
|
|
283
284
|
jaw doctor # 진단 (12개 체크)
|
|
284
285
|
jaw skill install <name> # 스킬 설치
|
|
285
|
-
jaw mcp install <package> # MCP 설치 →
|
|
286
|
+
jaw mcp install <package> # MCP 설치 → 6개 CLI 전부 동기화
|
|
286
287
|
jaw memory search <query> # 메모리 검색
|
|
287
288
|
jaw browser start # Chrome 시작 (CDP)
|
|
288
289
|
jaw browser vision-click "로그인" # AI가 알아서 클릭
|
|
290
|
+
jaw clone ~/my-project # 인스턴스 복제
|
|
291
|
+
jaw --home ~/my-project serve --port 3458 # 두 번째 인스턴스 실행
|
|
289
292
|
jaw reset # 전체 초기화
|
|
290
293
|
```
|
|
291
294
|
|
|
292
295
|
---
|
|
293
296
|
|
|
297
|
+
## 🏗️ 멀티 인스턴스 — 프로젝트별 독립 환경
|
|
298
|
+
|
|
299
|
+
CLI-JAW의 독립된 인스턴스를 여러 개 실행할 수 있어요 — 각각 고유한 설정, 메모리, 스킬, 데이터베이스를 가집니다.
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# 기본 인스턴스를 새 프로젝트로 복제
|
|
303
|
+
jaw clone ~/my-project
|
|
304
|
+
|
|
305
|
+
# 다른 포트로 실행
|
|
306
|
+
jaw --home ~/my-project serve --port 3458
|
|
307
|
+
|
|
308
|
+
# 또는 둘 다 부팅 시 자동 실행
|
|
309
|
+
jaw launchd # 기본 → 포트 3457
|
|
310
|
+
jaw --home ~/my-project launchd --port 3458 # 프로젝트 → 포트 3458
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
각 인스턴스는 완전히 독립적입니다 — 작업 디렉토리, 메모리, MCP 설정이 모두 다릅니다. 업무/개인 컨텍스트 분리나 프로젝트별 AI 설정에 안성맞춤이에요.
|
|
314
|
+
|
|
315
|
+
| 플래그 / 환경변수 | 기능 |
|
|
316
|
+
| --------------------- | ---------------------------------------- |
|
|
317
|
+
| `--home <경로>` | 이 실행에 사용할 커스텀 홈 디렉토리 지정 |
|
|
318
|
+
| `--home=<경로>` | 동일 (`=` 구문) |
|
|
319
|
+
| `CLI_JAW_HOME=<경로>` | 환경변수로 지정 |
|
|
320
|
+
| `jaw clone <대상>` | 현재 인스턴스를 새 디렉토리로 복제 |
|
|
321
|
+
| `--port <포트>` | `serve` / `launchd`용 커스텀 포트 |
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
294
325
|
## 🤖 모델
|
|
295
326
|
|
|
296
327
|
각 CLI마다 프리셋이 있지만, **아무 모델 ID나** 직접 쳐도 돼요.
|
|
@@ -355,7 +386,7 @@ src/
|
|
|
355
386
|
## 🧪 테스트
|
|
356
387
|
|
|
357
388
|
<details>
|
|
358
|
-
<summary>
|
|
389
|
+
<summary>383 pass · 1 skipped · 외부 의존성 0</summary>
|
|
359
390
|
|
|
360
391
|
```bash
|
|
361
392
|
npm test
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
*One assistant. Five brains. Always on.*
|
|
8
8
|
|
|
9
|
-
[](#-tests)
|
|
10
10
|
[](https://typescriptlang.org)
|
|
11
11
|
[](https://nodejs.org)
|
|
12
12
|
[](LICENSE)
|
|
@@ -85,7 +85,7 @@ CLI-JAW is a **personal AI assistant** that lives on your machine and works from
|
|
|
85
85
|
> 💬 *"Refactor this module and write tests"* → sub-agents handle it while you grab coffee
|
|
86
86
|
> 💬 *"Download that PDF and put the key points in Notion"* → browser + Notion skill, done
|
|
87
87
|
|
|
88
|
-
Unlike single-model assistants, CLI-JAW orchestrates **5 AI engines** (Claude, Codex, Gemini, OpenCode, Copilot) through their official CLIs — giving you the best of every provider in one unified experience. If one engine is busy, it automatically falls back to the next.
|
|
88
|
+
Unlike single-model assistants, CLI-JAW orchestrates **5 AI engines** (Claude, Codex, Gemini, OpenCode, Copilot) through their official CLIs — giving you the best of every provider in one unified experience. If one engine is busy, it automatically falls back to the next. 107 built-in skills handle everything from browser automation to document generation.
|
|
89
89
|
|
|
90
90
|
| | Why CLI-JAW? |
|
|
91
91
|
| ------------------------------ | ------------------------------------------------------------------------------------------- |
|
|
@@ -93,7 +93,7 @@ Unlike single-model assistants, CLI-JAW orchestrates **5 AI engines** (Claude, C
|
|
|
93
93
|
| 🤖 **Verified Agent Tools** | 5 battle-tested coding agents (Claude, Codex, Gemini, OpenCode, Copilot) under one roof. |
|
|
94
94
|
| ⚡ **Multi-Agent Fallback** | One engine down? The next picks up automatically. Zero downtime. |
|
|
95
95
|
| 🎭 **Orchestrated Performance** | Complex tasks split across specialized sub-agents for maximum throughput. |
|
|
96
|
-
| 📦 **
|
|
96
|
+
| 📦 **107 Built-in Skills** | Browser automation, document generation, Telegram, memory — ready out of the box. |
|
|
97
97
|
| 🖥️ **Cross-Platform** | macOS, Linux, Windows (WSL) — browser launch, CLI detection, and install all work natively. |
|
|
98
98
|
|
|
99
99
|

|
|
@@ -120,7 +120,7 @@ graph LR
|
|
|
120
120
|
- 🤖 **5 AI engines, 1 assistant** — Claude · Codex · Gemini · OpenCode · Copilot. Switch with `/cli`.
|
|
121
121
|
- ⚡ **Auto fallback** — If one engine is down, the next picks up seamlessly.
|
|
122
122
|
- 🎭 **Multi-agent orchestration** — Complex tasks get split across specialized sub-agents automatically.
|
|
123
|
-
- 📦 **
|
|
123
|
+
- 📦 **107 skills** — Browser control, file editing, image generation, web search, and [much more](#-skill-system).
|
|
124
124
|
- 🧠 **Persistent memory** — Your assistant remembers past conversations and preferences across sessions.
|
|
125
125
|
- 📱 **Telegram bot** — Chat with your assistant from your phone, send voice/photos/files.
|
|
126
126
|
- 🌐 **Browser automation** — Your assistant can navigate the web, click, type, and screenshot.
|
|
@@ -133,7 +133,7 @@ graph LR
|
|
|
133
133
|
|
|
134
134
|
## 📦 Skill System
|
|
135
135
|
|
|
136
|
-
**
|
|
136
|
+
**107 skills** out of the box — browser, github, notion, telegram, memory, pdf, image generation, and [much more](#).
|
|
137
137
|
|
|
138
138
|
<details>
|
|
139
139
|
<summary>View all skills</summary>
|
|
@@ -141,7 +141,7 @@ graph LR
|
|
|
141
141
|
| Tier | Count | How it works |
|
|
142
142
|
| -------------------- | :---: | --------------------------------------------------------- |
|
|
143
143
|
| **Active Skills** | 17 | Auto-injected into every AI prompt. Always available. |
|
|
144
|
-
| **Reference Skills** |
|
|
144
|
+
| **Reference Skills** | 90 | AI reads them on-demand when you ask for a relevant task. |
|
|
145
145
|
|
|
146
146
|
#### Active Skills (always on)
|
|
147
147
|
|
|
@@ -161,7 +161,7 @@ graph LR
|
|
|
161
161
|
|
|
162
162
|
#### Reference Skills (on-demand)
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
90 more skills ready to use — spotify, weather, deep-research, tts, video-downloader, apple-reminders, 1password, terraform, postgres, jupyter-notebook, sentry, whatsapp, and more.
|
|
165
165
|
|
|
166
166
|
```bash
|
|
167
167
|
jaw skill install <name> # Activate a reference skill permanently
|
|
@@ -241,11 +241,11 @@ Your assistant **decides by itself** whether a task needs orchestration or a dir
|
|
|
241
241
|
|
|
242
242
|
---
|
|
243
243
|
|
|
244
|
-
## 🔌 MCP — One Config,
|
|
244
|
+
## 🔌 MCP — One Config, Six AI Engines
|
|
245
245
|
|
|
246
246
|
```bash
|
|
247
247
|
jaw mcp install @anthropic/context7 # Install once
|
|
248
|
-
# → Automatically syncs to Claude, Codex, Gemini, OpenCode, Copilot
|
|
248
|
+
# → Automatically syncs to Claude, Codex, Gemini, OpenCode, Copilot, Antigravity
|
|
249
249
|
```
|
|
250
250
|
|
|
251
251
|
```mermaid
|
|
@@ -255,6 +255,7 @@ graph LR
|
|
|
255
255
|
MJ -->|auto-sync| GM["Gemini"]
|
|
256
256
|
MJ -->|auto-sync| OC["OpenCode"]
|
|
257
257
|
MJ -->|auto-sync| CP["Copilot"]
|
|
258
|
+
MJ -->|auto-sync| AG["Antigravity"]
|
|
258
259
|
|
|
259
260
|
style MJ fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
|
|
260
261
|
```
|
|
@@ -270,7 +271,7 @@ jaw serve # Start server
|
|
|
270
271
|
jaw chat # Terminal TUI
|
|
271
272
|
jaw doctor # Diagnostics (12 checks)
|
|
272
273
|
jaw skill install <name> # Install a skill
|
|
273
|
-
jaw mcp install <package> # Install MCP → syncs to all
|
|
274
|
+
jaw mcp install <package> # Install MCP → syncs to all 6 CLIs
|
|
274
275
|
jaw memory search <query> # Search memory
|
|
275
276
|
jaw browser start # Launch Chrome (CDP)
|
|
276
277
|
jaw browser vision-click "Login" # AI-powered click
|
|
@@ -377,7 +378,7 @@ src/
|
|
|
377
378
|
## 🧪 Tests
|
|
378
379
|
|
|
379
380
|
<details>
|
|
380
|
-
<summary>
|
|
381
|
+
<summary>383 pass · 1 skipped · zero external dependencies</summary>
|
|
381
382
|
|
|
382
383
|
```bash
|
|
383
384
|
npm test
|
package/README.zh-CN.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
*Claude、Codex、Gemini... 从此告别来回切换。*
|
|
8
8
|
|
|
9
|
-
[](#-测试)
|
|
10
10
|
[](https://typescriptlang.org)
|
|
11
11
|
[](https://nodejs.org)
|
|
12
12
|
[](LICENSE)
|
|
@@ -84,7 +84,7 @@ CLI-JAW 是驻留在您本地机器上的**专属 AI 助手**,并在您熟悉
|
|
|
84
84
|
> 💬 *"重构这个模块,顺便写好测试"* → 子 Agent 搞定,你喝杯咖啡回来就行
|
|
85
85
|
> 💬 *"把那个 PDF 下载下来,关键信息放到 Notion 里"* → 浏览器 + Notion 技能组合,搞定
|
|
86
86
|
|
|
87
|
-
与单一模型的助手不同,CLI-JAW 通过官方 CLI 命令行工具对 **5 大 AI 引擎**(Claude、Codex、Gemini、OpenCode、Copilot)进行编排 — 为您提供各大供应商最优势的能力及统一的体验。当一个引擎处于繁忙状态时,它会自动无缝切换至下一个。
|
|
87
|
+
与单一模型的助手不同,CLI-JAW 通过官方 CLI 命令行工具对 **5 大 AI 引擎**(Claude、Codex、Gemini、OpenCode、Copilot)进行编排 — 为您提供各大供应商最优势的能力及统一的体验。当一个引擎处于繁忙状态时,它会自动无缝切换至下一个。107 个内置技能可处理从浏览器自动化到文档生成的所有事务。
|
|
88
88
|
|
|
89
89
|
| | 为什么选择 CLI-JAW? |
|
|
90
90
|
| ------------------------------- | -------------------------------------------------------------------------- |
|
|
@@ -92,7 +92,7 @@ CLI-JAW 是驻留在您本地机器上的**专属 AI 助手**,并在您熟悉
|
|
|
92
92
|
| 🤖 **经过验证的智能体工具** | 5 大实战级编码智能体(Claude、Codex、Gemini、OpenCode、Copilot)集于一身。 |
|
|
93
93
|
| ⚡ **多模型自动回退 (Fallback)** | 单一引擎发生故障?下一个立即接管。确保零停机。 |
|
|
94
94
|
| 🎭 **基于编排的性能优化** | 复杂的任务会被拆分给专业的子智能体,以实现效率最大化。 |
|
|
95
|
-
| 📦 **
|
|
95
|
+
| 📦 **107 个内置技能** | 浏览器自动化、文档生成、Telegram 通知、持久化记忆 — 开箱即用。 |
|
|
96
96
|
| 🖥️ **跨平台支持** | macOS、Linux、Windows (WSL) — 浏览器启动、CLI 检测、安装均原生支持。 |
|
|
97
97
|
|
|
98
98
|

|
|
@@ -119,7 +119,7 @@ graph LR
|
|
|
119
119
|
- 🤖 **5 大 AI 引擎,1 个专属助手** — Claude · Codex · Gemini · OpenCode · Copilot。使用 `/cli` 命令一键切换。
|
|
120
120
|
- ⚡ **自动回退 (Fallback)** — 即使一个引擎出现故障,下一个也会无缝接管。
|
|
121
121
|
- 🎭 **多智能体编排** — 复杂任务会自动拆分给专业的子智能体并行处理。
|
|
122
|
-
- 📦 **
|
|
122
|
+
- 📦 **107 个技能** — 浏览器控制、文件编辑、图片生成、网页搜索以及[更多功能](#-技能系统)。
|
|
123
123
|
- 🧠 **持久化记忆** — 跨越不同会话,记住您过往的对话和偏好设定。
|
|
124
124
|
- 📱 **Telegram 机器人** — 通过手机即可与您的助手聊天、发送语音/图片/文件。
|
|
125
125
|
- 🌐 **浏览器自动化** — 您的助手能够自动导航网页、点击、打字并进行截图。
|
|
@@ -142,7 +142,7 @@ jaw launchd # 开机自动启动 (macOS)
|
|
|
142
142
|
|
|
143
143
|
## 📦 技能系统
|
|
144
144
|
|
|
145
|
-
**
|
|
145
|
+
**107 个技能**开箱即用 — 浏览器、GitHub、Notion、Telegram、记忆、PDF、图片生成等[应有尽有](#)。
|
|
146
146
|
|
|
147
147
|
<details>
|
|
148
148
|
<summary>查看全部技能</summary>
|
|
@@ -150,7 +150,7 @@ jaw launchd # 开机自动启动 (macOS)
|
|
|
150
150
|
| 层级 | 数量 | 工作方式 |
|
|
151
151
|
| ------------ | :---: | ---------------------------------- |
|
|
152
152
|
| **活跃技能** | 17 | 每次对话自动加载,随时可用。 |
|
|
153
|
-
| **参考技能** |
|
|
153
|
+
| **参考技能** | 90 | 用到的时候 AI 自己去读,按需调用。 |
|
|
154
154
|
|
|
155
155
|
#### 活跃技能(常驻)
|
|
156
156
|
|
|
@@ -170,7 +170,7 @@ jaw launchd # 开机自动启动 (macOS)
|
|
|
170
170
|
|
|
171
171
|
#### 参考技能(按需调用)
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
90 个技能随时待命 — Spotify、天气、深度研究、TTS、视频下载、Apple 提醒事项、1Password、Terraform、PostgreSQL、Jupyter 等。
|
|
174
174
|
|
|
175
175
|
```bash
|
|
176
176
|
jaw skill install <name> # 参考 → 活跃,永久激活
|
|
@@ -250,11 +250,11 @@ graph TD
|
|
|
250
250
|
|
|
251
251
|
---
|
|
252
252
|
|
|
253
|
-
## 🔌 MCP — 单次配置,驱动
|
|
253
|
+
## 🔌 MCP — 单次配置,驱动 6 大 AI 引擎
|
|
254
254
|
|
|
255
255
|
```bash
|
|
256
256
|
jaw mcp install @anthropic/context7 # 安装一次
|
|
257
|
-
# → 自动同步到 Claude、Codex、Gemini、OpenCode、Copilot
|
|
257
|
+
# → 自动同步到 Claude、Codex、Gemini、OpenCode、Copilot、Antigravity
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
```mermaid
|
|
@@ -264,11 +264,12 @@ graph LR
|
|
|
264
264
|
MJ -->|自动同步| GM["Gemini"]
|
|
265
265
|
MJ -->|自动同步| OC["OpenCode"]
|
|
266
266
|
MJ -->|自动同步| CP["Copilot"]
|
|
267
|
+
MJ -->|自动同步| AG["Antigravity"]
|
|
267
268
|
|
|
268
269
|
style MJ fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
|
|
269
270
|
```
|
|
270
271
|
|
|
271
|
-
只需告别编辑
|
|
272
|
+
只需告别编辑 6 份不同配置文件的繁琐流程。单次安装,所有 AI 引擎立刻生效。
|
|
272
273
|
|
|
273
274
|
---
|
|
274
275
|
|
|
@@ -282,15 +283,45 @@ jaw launchd unset # 取消自动启动
|
|
|
282
283
|
jaw chat # 终端 TUI
|
|
283
284
|
jaw doctor # 诊断(12 项检查)
|
|
284
285
|
jaw skill install <name> # 安装技能
|
|
285
|
-
jaw mcp install <package> # 安装 MCP → 同步全部
|
|
286
|
+
jaw mcp install <package> # 安装 MCP → 同步全部 6 CLI
|
|
286
287
|
jaw memory search <query> # 搜索记忆
|
|
287
288
|
jaw browser start # 启动 Chrome(CDP)
|
|
288
289
|
jaw browser vision-click "登录" # AI 智能点击
|
|
290
|
+
jaw clone ~/my-project # 实例克隆
|
|
291
|
+
jaw --home ~/my-project serve --port 3458 # 运行第二个实例
|
|
289
292
|
jaw reset # 全面重置
|
|
290
293
|
```
|
|
291
294
|
|
|
292
295
|
---
|
|
293
296
|
|
|
297
|
+
## 🏗️ 多实例 — 项目级别的独立环境
|
|
298
|
+
|
|
299
|
+
可以同时运行多个独立的 CLI-JAW 实例 — 每个都有自己的设置、记忆、技能和数据库。
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# 将默认实例克隆到新项目
|
|
303
|
+
jaw clone ~/my-project
|
|
304
|
+
|
|
305
|
+
# 在不同端口运行
|
|
306
|
+
jaw --home ~/my-project serve --port 3458
|
|
307
|
+
|
|
308
|
+
# 或者两个都设置开机自启
|
|
309
|
+
jaw launchd # 默认 → 端口 3457
|
|
310
|
+
jaw --home ~/my-project launchd --port 3458 # 项目 → 端口 3458
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
每个实例完全独立 — 工作目录、记忆、MCP 配置各不相同。非常适合工作/个人环境分离或按项目配置 AI。
|
|
314
|
+
|
|
315
|
+
| 参数 / 环境变量 | 功能 |
|
|
316
|
+
| --------------------- | ------------------------------------ |
|
|
317
|
+
| `--home <路径>` | 指定本次运行使用的自定义主目录 |
|
|
318
|
+
| `--home=<路径>` | 同上(`=` 语法) |
|
|
319
|
+
| `CLI_JAW_HOME=<路径>` | 通过环境变量指定 |
|
|
320
|
+
| `jaw clone <目标>` | 将当前实例克隆到新目录 |
|
|
321
|
+
| `--port <端口>` | `serve` / `launchd` 自定义端口 |
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
294
325
|
## 🤖 模型
|
|
295
326
|
|
|
296
327
|
每个 CLI 都有预设快捷选项,但你也可以直接输 **任意模型 ID**。
|
|
@@ -355,7 +386,7 @@ src/
|
|
|
355
386
|
## 🧪 测试
|
|
356
387
|
|
|
357
388
|
<details>
|
|
358
|
-
<summary>
|
|
389
|
+
<summary>383 pass · 1 skipped · 零外部依赖</summary>
|
|
359
390
|
|
|
360
391
|
```bash
|
|
361
392
|
npm test
|
|
@@ -36,6 +36,13 @@ function isWSL() {
|
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
function hasWslWindowsChrome() {
|
|
40
|
+
const paths = [
|
|
41
|
+
'/mnt/c/Program Files/Google/Chrome/Application/chrome.exe',
|
|
42
|
+
'/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',
|
|
43
|
+
];
|
|
44
|
+
return paths.some(p => fs.existsSync(p));
|
|
45
|
+
}
|
|
39
46
|
function check(name, fn) {
|
|
40
47
|
try {
|
|
41
48
|
const detail = fn();
|
|
@@ -137,8 +144,12 @@ if (process.platform === 'linux') {
|
|
|
137
144
|
return `Wayland (${process.env.WAYLAND_DISPLAY})`;
|
|
138
145
|
if (process.env.DISPLAY)
|
|
139
146
|
return `X11 (${process.env.DISPLAY})`;
|
|
140
|
-
if (isWSL())
|
|
141
|
-
|
|
147
|
+
if (isWSL()) {
|
|
148
|
+
if (hasWslWindowsChrome()) {
|
|
149
|
+
return 'WSL (no DISPLAY; Windows Chrome path detected via /mnt/c)';
|
|
150
|
+
}
|
|
151
|
+
throw new Error('WARN: no DISPLAY in WSL — enable WSLg/set DISPLAY, or install Windows Chrome for /mnt/c fallback');
|
|
152
|
+
}
|
|
142
153
|
throw new Error('WARN: no DISPLAY — browser skill needs X11/Wayland');
|
|
143
154
|
});
|
|
144
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../bin/commands/doctor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../bin/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/commands/mcp.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Usage:
|
|
6
6
|
* cli-jaw mcp # list servers
|
|
7
7
|
* cli-jaw mcp install <pkg> # install npm/pypi package + add to mcp.json + sync
|
|
8
|
-
* cli-jaw mcp sync # sync mcp.json →
|
|
8
|
+
* cli-jaw mcp sync # sync mcp.json → 6 CLI configs
|
|
9
9
|
* cli-jaw mcp reset [--force] # reset mcp.json to defaults + re-sync
|
|
10
10
|
*
|
|
11
11
|
* Package detection:
|
|
@@ -40,16 +40,6 @@ function findBinaryPath(name) {
|
|
|
40
40
|
return null;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
/** Read workingDir from settings.json for syncToAll() */
|
|
44
|
-
function getWorkingDir() {
|
|
45
|
-
try {
|
|
46
|
-
const settingsPath = join(JAW_HOME, 'settings.json');
|
|
47
|
-
return JSON.parse(readFileSync(settingsPath, 'utf8')).workingDir || JAW_HOME;
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return JAW_HOME;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
43
|
// Known PyPI MCP packages (auto-detect without --pypi flag)
|
|
54
44
|
const PYPI_PATTERNS = [
|
|
55
45
|
/^mcp-server-/, // mcp-server-fetch, mcp-server-git, etc.
|
|
@@ -128,8 +118,8 @@ switch (sub) {
|
|
|
128
118
|
};
|
|
129
119
|
saveUnifiedMcp(config);
|
|
130
120
|
console.log(` ${c.green}✅ Added to mcp.json:${c.reset} ${serverName}`);
|
|
131
|
-
// Sync to all
|
|
132
|
-
syncToAll(config
|
|
121
|
+
// Sync to all 6 CLIs
|
|
122
|
+
syncToAll(config);
|
|
133
123
|
console.log(`\n ${c.green}Done!${c.reset} Server "${serverName}" ready for all CLIs.\n`);
|
|
134
124
|
}
|
|
135
125
|
catch (e) {
|
|
@@ -141,7 +131,7 @@ switch (sub) {
|
|
|
141
131
|
case 'sync': {
|
|
142
132
|
const config = loadUnifiedMcp();
|
|
143
133
|
console.log(`\n ${c.bold}Syncing MCP config → all CLIs${c.reset}\n`);
|
|
144
|
-
syncToAll(config
|
|
134
|
+
syncToAll(config);
|
|
145
135
|
console.log('');
|
|
146
136
|
break;
|
|
147
137
|
}
|
|
@@ -152,7 +142,7 @@ switch (sub) {
|
|
|
152
142
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
153
143
|
const answer = await new Promise(r => {
|
|
154
144
|
rl.question(`\n ${c.yellow}⚠️ MCP 설정을 초기화합니다.${c.reset}\n` +
|
|
155
|
-
` ~/.cli-jaw/mcp.json이 재생성되고
|
|
145
|
+
` ~/.cli-jaw/mcp.json이 재생성되고 6개 CLI에 재동기화됩니다.\n` +
|
|
156
146
|
` 계속하시겠습니까? (y/N): `, r);
|
|
157
147
|
});
|
|
158
148
|
rl.close();
|
|
@@ -169,10 +159,17 @@ switch (sub) {
|
|
|
169
159
|
console.log(` ${c.dim}✓ deleted ${mcpPath}${c.reset}`);
|
|
170
160
|
}
|
|
171
161
|
// 2. Re-init (import from workingDir/.mcp.json + DEFAULT_MCP_SERVERS merge)
|
|
172
|
-
|
|
162
|
+
let workingDir;
|
|
163
|
+
try {
|
|
164
|
+
const settingsPath = join(JAW_HOME, 'settings.json');
|
|
165
|
+
workingDir = JSON.parse(readFileSync(settingsPath, 'utf8')).workingDir || JAW_HOME;
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
workingDir = JAW_HOME;
|
|
169
|
+
}
|
|
173
170
|
const config = initMcpConfig(workingDir);
|
|
174
171
|
// 3. Re-sync to all CLIs
|
|
175
|
-
const results = syncToAll(config
|
|
172
|
+
const results = syncToAll(config);
|
|
176
173
|
const count = Object.keys(config.servers || {}).length;
|
|
177
174
|
console.log(`\n ${c.green}✅ 초기화 완료!${c.reset} (${count}개 서버)`);
|
|
178
175
|
for (const [target, ok] of Object.entries(results)) {
|
|
@@ -199,7 +196,7 @@ switch (sub) {
|
|
|
199
196
|
}
|
|
200
197
|
}
|
|
201
198
|
console.log(`\n ${c.dim}cli-jaw mcp install <pkg> — 새 MCP 서버 설치${c.reset}`);
|
|
202
|
-
console.log(` ${c.dim}cli-jaw mcp sync —
|
|
199
|
+
console.log(` ${c.dim}cli-jaw mcp sync — 6개 CLI에 동기화${c.reset}`);
|
|
203
200
|
console.log(` ${c.dim}cli-jaw mcp reset — 설정 초기화 + 재동기화${c.reset}\n`);
|
|
204
201
|
break;
|
|
205
202
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../bin/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,gDAAgD;AAChD,OAAO,EACH,cAAc,EACd,cAAc,EACd,SAAS,EACT,aAAa,GAChB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AAEzE,gDAAgD;AAChD,MAAM,CAAC,GAAG;IACN,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS;IACjD,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;IACtD,IAAI,EAAE,UAAU;CACnB,CAAC;AAEF,gDAAgD;AAEhD,SAAS,IAAI,CAAC,GAAW;IACrB,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAChC,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7G,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,OAAO,KAAK,IAAI,IAAI,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../bin/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,6 @@ import { spawn } from 'node:child_process';
|
|
|
6
6
|
import { parseArgs } from 'node:util';
|
|
7
7
|
import { dirname, join } from 'node:path';
|
|
8
8
|
import { fileURLToPath } from 'node:url';
|
|
9
|
-
import { getServerUrl } from '../../src/core/config.js';
|
|
10
9
|
import fs from 'node:fs';
|
|
11
10
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
11
|
const projectRoot = join(__dirname, '..', '..');
|
|
@@ -15,7 +14,7 @@ const { values } = parseArgs({
|
|
|
15
14
|
options: {
|
|
16
15
|
port: { type: 'string', default: process.env.PORT || '3457' },
|
|
17
16
|
host: { type: 'string', default: '0.0.0.0' },
|
|
18
|
-
open: { type: 'boolean', default:
|
|
17
|
+
open: { type: 'boolean', default: true },
|
|
19
18
|
},
|
|
20
19
|
strict: false,
|
|
21
20
|
});
|
|
@@ -34,7 +33,7 @@ if (isDistMode) {
|
|
|
34
33
|
nodeArgs.unshift(`--env-file=${envFile}`);
|
|
35
34
|
child = spawn(process.execPath, [...nodeArgs, serverPath], {
|
|
36
35
|
stdio: 'inherit',
|
|
37
|
-
env: { ...process.env, PORT: values.port, HOST: values.host },
|
|
36
|
+
env: { ...process.env, PORT: values.port, HOST: values.host, ...(values.open ? { JAW_OPEN_BROWSER: '1' } : {}) },
|
|
38
37
|
});
|
|
39
38
|
}
|
|
40
39
|
else {
|
|
@@ -47,7 +46,7 @@ else {
|
|
|
47
46
|
tsxArgs.push(serverPath);
|
|
48
47
|
child = spawn(tsxBin, tsxArgs, {
|
|
49
48
|
stdio: 'inherit',
|
|
50
|
-
env: { ...process.env, PORT: values.port, HOST: values.host },
|
|
49
|
+
env: { ...process.env, PORT: values.port, HOST: values.host, ...(values.open ? { JAW_OPEN_BROWSER: '1' } : {}) },
|
|
51
50
|
});
|
|
52
51
|
}
|
|
53
52
|
// Forward signals
|
|
@@ -63,28 +62,4 @@ child.on('error', (err) => {
|
|
|
63
62
|
console.error(` ❌ Failed to start server: ${err.message}`);
|
|
64
63
|
process.exit(1);
|
|
65
64
|
});
|
|
66
|
-
function openUrl(url) {
|
|
67
|
-
try {
|
|
68
|
-
const cmd = process.platform === 'darwin' ? 'open'
|
|
69
|
-
: process.platform === 'win32' ? 'cmd'
|
|
70
|
-
: 'xdg-open';
|
|
71
|
-
const args = process.platform === 'win32'
|
|
72
|
-
? ['/c', 'start', '', url]
|
|
73
|
-
: [url];
|
|
74
|
-
const opener = spawn(cmd, args, { detached: true, stdio: 'ignore' });
|
|
75
|
-
opener.on('error', () => {
|
|
76
|
-
console.log(' ⚠️ Could not open browser');
|
|
77
|
-
});
|
|
78
|
-
opener.unref();
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
console.log(' ⚠️ Could not open browser');
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// --open: open browser after a short delay
|
|
85
|
-
if (values.open) {
|
|
86
|
-
setTimeout(() => {
|
|
87
|
-
openUrl(getServerUrl(values.port));
|
|
88
|
-
}, 2000);
|
|
89
|
-
}
|
|
90
65
|
//# sourceMappingURL=serve.js.map
|