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.zh-CN.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
|
-
[](#-docker--容器隔离)
|
|
15
|
-
[](#)
|
|
11
|
+
[](#-docker)
|
|
16
12
|
|
|
17
13
|
[English](README.md) / [한국어](README.ko.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
|
-
**第一步:安装 WSL**(以管理员身份运行 PowerShell — 仅需一次)
|
|
35
|
-
|
|
36
|
-
```powershell
|
|
37
|
-
wsl --install
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
按提示重启电脑。重启后从开始菜单打开 **Ubuntu**。
|
|
41
|
-
|
|
42
|
-
**第二步:安装 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
|
-
**第三步:重新加载 Shell**(重要 — 使 PATH 更改生效)
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
source ~/.bashrc
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**第四步:认证 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
|
-
**第五步:启动聊天**
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
jaw serve
|
|
70
|
-
# → http://localhost:3457
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
> 💡 脚本使用 [fnm](https://github.com/Schniz/fnm) 管理 Node.js。如果已有 `nvm`,则自动使用 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>Web PWA(虚拟滚动、WS 流)+ Mac WebView 应用 + 终端 TUI + Telegram(语音)+ Discord — 五个界面,一段对话。</td></tr>
|
|
22
|
+
<tr><td><b>三层记忆</b></td><td>History Block(近期会话)+ Memory Flush(事件、日志)+ Soul & Task Snapshot(身份、语义检索)。SQLite FTS5 全文搜索。</td></tr>
|
|
23
|
+
<tr><td><b>多智能体编排</b></td><td>PABCD — 数据库持久化的五阶段 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 Web 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
|
-
**第一步:打开终端**
|
|
93
|
-
|
|
94
|
-
打开 **Finder** → **应用程序** → **实用工具** → **终端.app**
|
|
95
|
-
(或者按 `⌘ Space` 然后输入 `Terminal`)
|
|
96
|
-
|
|
97
|
-
**第二步:粘贴并按 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
|
-
**第三步:登录并启动**
|
|
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
|
+
五个界面共享同一个助手、记忆和技能。
|
|
171
75
|
|
|
172
|
-
|
|
76
|
+
| 界面 | 功能 |
|
|
77
|
+
|---|---|
|
|
78
|
+
| **Web PWA** | markdown/KaTeX/Mermaid 渲染、虚拟滚动、WS 流、文件拖放、语音录制、PABCD 路线图、i18n、暗/亮主题、IndexedDB 离线缓存 |
|
|
79
|
+
| **Mac WebView 应用** | 将 `jaw serve` 包装为 macOS 应用。从 Dock 直接访问 |
|
|
80
|
+
| **终端 TUI** | 多行编辑、斜杠命令自动补全、选择器覆盖层、会话持久化 |
|
|
81
|
+
| **Telegram** | 语音消息(多 STT 提供商)、照片、文件。定时任务结果自动推送 |
|
|
82
|
+
| **Discord** | 文本/文件消息、命令同步、频道/线程路由、代理结果转发 |
|
|
173
83
|
|
|
174
84
|
---
|
|
175
85
|
|
|
176
|
-
##
|
|
177
|
-
|
|
178
|
-
CLI-JAW 是驻留在您本地机器上的**专属 AI 助手**,并在您熟悉的界面中运行 — **网页、终端、Telegram 和 Discord**。您可以向它提出任何问题、委派任务或是自动化您的工作流。
|
|
179
|
-

|
|
86
|
+
## 🔀 引擎路由
|
|
180
87
|
|
|
181
|
-
|
|
182
|
-
> 💬 *"重构这个模块,顺便写好测试"* → 子 Agent 搞定,你喝杯咖啡回来就行
|
|
183
|
-
> 💬 *"把那个 PDF 下载下来,关键信息放到 Notion 里"* → 浏览器 + Notion 技能组合,搞定
|
|
88
|
+
通过你已经支付的 OAuth 月度订阅路由五个 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
|
-
| 🛡️ **安全合规 (TOS-Safe)** | 仅使用官方 CLI — 无 API 密钥抓取、无逆向工程、无封号风险。 |
|
|
190
|
-
| 🤖 **经过验证的智能体工具** | 5 大实战级编码智能体(Claude、Codex、Gemini、OpenCode、Copilot)集于一身。 |
|
|
191
|
-
| ⚡ **多模型自动回退 (Fallback)** | 单一引擎发生故障?下一个立即接管。确保零停机。 |
|
|
192
|
-
| 🎭 **基于编排的性能优化** | 复杂的任务会被拆分给专业的子智能体,以实现效率最大化。 |
|
|
193
|
-
| 📦 **100+ 个内置技能** | 浏览器自动化、文档生成、Telegram 通知、持久化记忆 — 开箱即用。 |
|
|
194
|
-
| 🖥️ **跨平台支持** | macOS、Linux、Windows — ENOENT-safe CLI 启动、自动检测、`.cmd` 支持,跨平台原生运行。 |
|
|
98
|
+
**回退链**:一个引擎受限或宕机时,下一个自动接管。用 `/fallback [cli1 cli2...]` 配置。
|
|
195
99
|
|
|
196
|
-
|
|
100
|
+
**OpenCode 通配符**:连接任意模型端点 — OpenRouter、本地 LLM 或任何 OpenAI 兼容 API。
|
|
197
101
|
|
|
198
102
|
---
|
|
199
103
|
|
|
200
|
-
##
|
|
104
|
+
## 🧠 记忆
|
|
201
105
|
|
|
202
|
-
|
|
106
|
+
三层结构,各负责不同的回忆范围。
|
|
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`、持久化状态机、worker registry、research dispatch、Web UI 状态展示都成为正式产品表面。 |
|
|
212
|
-
| 🧠 **结构化记忆运行时** | 记忆系统从简单持久化扩展为带结构化存储、索引、查询扩展、task snapshot、审计/重建索引控制的完整子系统。 |
|
|
213
|
-
| 💬 **Discord + 语音通道** | CLI-JAW 不再只限于 Web / Terminal / Telegram,Discord 与语音/STT 也成为一等工作流。 |
|
|
214
|
-
| 🖥️ **大幅扩展的 Web UI** | 设置面板、记忆/心跳控制、tool UI、provider icon、手势、拖拽保护、virtual scroll 与渲染行为都明显增强。 |
|
|
215
|
-
| 📊 **图表与组件渲染** | iframe renderer、validator 与专用 CSS 让内联图表/组件渲染成为可见功能族,而非单纯实现细节。 |
|
|
216
|
-
| ⌨️ **CLI/TUI 可用性提升** | `/compact`、overlay/selector、session persistence、resume classification、readiness 检查等都明显改善了终端体验。 |
|
|
217
|
-
| 🧪 **运维 / CI / 安装增强** | `jaw doctor`、browser launch policy、skill reset/fallback、submodule-safe CI、preview release、Vite 构建链都得到强化。 |
|
|
218
|
-
| 📄 **Office 自动化成熟** | 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
|
-
- 🎤 **语音输入** — Web 麦克风按钮 + Telegram 语音消息。多供应商 STT(OpenAI、Vertex AI)。
|
|
243
|
-
- 📝 **提示词模板** — 使用可视化节点地图编辑器创建、管理和复用提示词模板。
|
|
244
|
-
- 📦 **100+ 个技能** — 浏览器控制、文件编辑、图片生成、网页搜索以及[更多功能](#-技能系统)。
|
|
245
|
-
- 🧠 **持久化记忆** — 跨越不同会话,记住您过往的对话和偏好设定。
|
|
246
|
-
- 📱 **Telegram 机器人** — 通过手机即可与您的助手聊天、发送语音/图片/文件。
|
|
247
|
-
- 🌐 **浏览器自动化** — 您的助手能够自动导航网页、点击、打字并进行截图。
|
|
248
|
-
- 🔌 **MCP 生态系统** — 仅需安装一次,立刻应用于所有 5 大 AI 引擎。
|
|
249
|
-
- 🔍 **网页搜索** — 通过 MCP 工具实时获取最新信息。
|
|
250
|
-
- ⏰ **心跳任务** — 设置计划任务,令其在后台自动循环执行。
|
|
118
|
+
## 🎭 编排 — PABCD
|
|
251
119
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
### 其他启动方式
|
|
120
|
+
复杂任务使用五阶段状态机。每次转换都需要你的批准。
|
|
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** | 总结所有变更。回到空闲状态 |
|
|
266
134
|
|
|
267
|
-
|
|
135
|
+
状态持久化在数据库中,服务器重启后保持。Worker 不能修改文件。用 `jaw orchestrate` 或 `/pabcd` 激活。
|
|
268
136
|
|
|
269
|
-
|
|
270
|
-
<summary>查看全部技能</summary>
|
|
137
|
+
---
|
|
271
138
|
|
|
272
|
-
|
|
273
|
-
| ------------ | :---: | ---------------------------------- |
|
|
274
|
-
| **活跃技能** | 22 | 每次对话自动加载,随时可用。 |
|
|
275
|
-
| **参考技能** | 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` | 基于 Remotion 的 JSON 编程式视频渲染 |
|
|
290
|
-
| `dev` / `dev-frontend` / `dev-backend` / `dev-data` / `dev-testing` | 子 Agent 开发指南 |
|
|
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` | Issues/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> # 参考 → 活跃,永久激活
|
|
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 Web 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 用一个文件管理五个引擎的 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>📋 Telegram 配置(3 步搞定)</summary>
|
|
315
|
-
|
|
316
|
-
1. **创建机器人** — 给 [@BotFather](https://t.me/BotFather) 发 `/newbot` → 复制 Token
|
|
317
|
-
2. **配置** — 运行 `jaw init --telegram-token 你的TOKEN`,或在 Web UI 设置中填入
|
|
318
|
-
3. **开聊** — 给你的机器人发任意消息。首次发送时 Chat ID 会自动保存。
|
|
319
|
-
|
|
320
|
-
</details>
|
|
321
|
-
|
|
322
|
-
**您可以在 Telegram 中进行哪些操作:**
|
|
323
|
-
- 💬 与您的助手聊天(在 5 大 AI 引擎中任选其一)
|
|
324
|
-
- 🎤 发送语音消息(自动转写为文字)
|
|
325
|
-
- 📎 发送文件和图片进行处理
|
|
326
|
-
- 🎙️ 在单条消息中组合语音 + 文字 + 文件附件
|
|
327
|
-
- ⚡ 运行系统命令(`/cli`、`/model`、`/status`)
|
|
328
|
-
- 🔄 随时随地切换 AI 引擎
|
|
329
|
-
|
|
330
|
-
**您的助手会返回什么内容:**
|
|
331
|
-
- 带有 Markdown 格式的 AI 答复
|
|
332
|
-
- 生成的图片、PDF 及各类文档
|
|
333
|
-
- 计划任务(心跳任务)的执行结果
|
|
334
|
-
- 浏览器快照与截图
|
|
335
|
-
|
|
336
|
-
<p align="center">
|
|
337
|
-
<img src="docs/screenshots/telegram-bot.png" width="300" alt="Telegram Bot" />
|
|
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
|
+
三步设置:BotFather 创建机器人 → `jaw init --telegram-token` → 发送消息。
|
|
353
184
|
|
|
354
|
-
|
|
355
|
-
- 📱 **Telegram** — 发送语音消息,AI 处理前自动转写
|
|
356
|
-
- 🎙️ **多模态** — 在单条消息中组合语音 + 文字 + 文件附件
|
|
185
|
+
文字聊天、语音消息(自动 STT)、文件/图片上传、斜杠命令、定时任务结果推送。
|
|
357
186
|
|
|
358
|
-
|
|
187
|
+
### Discord
|
|
359
188
|
|
|
360
|
-
|
|
189
|
+
与 Telegram 相同 — 文字、文件、命令。频道/线程路由,代理结果转发。在 Web 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
|
+
Web(麦克风按钮)、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["Copilot"]
|
|
410
|
-
MJ -->|自动同步| AG["Antigravity"]
|
|
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
|
|
436
|
-
jaw reset #
|
|
216
|
+
jaw browser start # 启动 Chrome (CDP)
|
|
217
|
+
jaw browser vision-click "登录" # AI 坐标点击
|
|
218
|
+
jaw clone ~/project # 克隆实例
|
|
219
|
+
jaw orchestrate # 进入 PABCD
|
|
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) | 三层记忆模型、索引、运行时行为 |
|
|
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
|
+
| **主界面** | Web PWA + Mac 应用 + TUI | 仅 TUI | CLI + IDE 插件 |
|
|
254
|
+
| **消息** | Telegram(语音)+ Discord | TG/Discord/Slack/WhatsApp/Signal | 无 |
|
|
255
|
+
| **记忆** | 三层 + FTS5 | 自学习循环 + Honcho | 文件记忆 |
|
|
256
|
+
| **浏览器** | CDP + vision-click + DOM ref | 有限 | 通过 MCP |
|
|
257
|
+
| **编排** | PABCD 五阶段 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/ #
|
|
528
|
-
├──
|
|
529
|
-
├── memory/ #
|
|
530
|
-
├── orchestrator/ #
|
|
531
|
-
├──
|
|
532
|
-
├──
|
|
533
|
-
|
|
534
|
-
└── telegram/ # Telegram 机器人集成
|
|
286
|
+
├── agent/ # AI 代理生命周期、生成、History Block
|
|
287
|
+
├── browser/ # Chrome CDP、vision-click
|
|
288
|
+
├── cli/ # CLI 注册表、斜杠命令、模型预设
|
|
289
|
+
├── core/ # 数据库、配置、Employee、日志
|
|
290
|
+
├── discord/ # Discord 机器人、命令、文件发送
|
|
291
|
+
├── memory/ # 三层记忆、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
|
-
| Telegram
|
|
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` Fork 并创建分支
|
|
335
|
+
2. `npm run build && npm test`
|
|
336
|
+
3. 提交 PR
|
|
587
337
|
|
|
588
|
-
|
|
589
|
-
2. `npm run build && npm test` 确认一切正常
|
|
590
|
-
3. 提交 PR — 我们会尽快 review
|
|
591
|
-
|
|
592
|
-
> 📋 发现 Bug 或者有好点子?[提个 Issue](https://github.com/lidge-jun/cli-jaw/issues)
|
|
338
|
+
发现 Bug 或有想法?[提交 Issue](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>
|