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.
Files changed (77) hide show
  1. package/README.ko.md +183 -441
  2. package/README.md +252 -480
  3. package/README.zh-CN.md +184 -442
  4. package/dist/bin/commands/dispatch.js +1 -1
  5. package/dist/bin/commands/dispatch.js.map +1 -1
  6. package/dist/bin/commands/doctor.js +47 -11
  7. package/dist/bin/commands/doctor.js.map +1 -1
  8. package/dist/bin/commands/serve.js +4 -3
  9. package/dist/bin/commands/serve.js.map +1 -1
  10. package/dist/server.js +43 -21
  11. package/dist/server.js.map +1 -1
  12. package/dist/src/agent/events.js +1 -0
  13. package/dist/src/agent/events.js.map +1 -1
  14. package/dist/src/agent/spawn.js +16 -0
  15. package/dist/src/agent/spawn.js.map +1 -1
  16. package/dist/src/cli/registry.js +1 -0
  17. package/dist/src/cli/registry.js.map +1 -1
  18. package/dist/src/core/claude-install.js +33 -0
  19. package/dist/src/core/claude-install.js.map +1 -0
  20. package/dist/src/core/config.js +5 -0
  21. package/dist/src/core/config.js.map +1 -1
  22. package/dist/src/core/db.js +1 -0
  23. package/dist/src/core/db.js.map +1 -1
  24. package/dist/src/core/employees.js +0 -1
  25. package/dist/src/core/employees.js.map +1 -1
  26. package/dist/src/core/runtime-path.js +3 -0
  27. package/dist/src/core/runtime-path.js.map +1 -1
  28. package/dist/src/core/settings-merge.js +2 -2
  29. package/dist/src/core/settings-merge.js.map +1 -1
  30. package/dist/src/discord/bot.js +123 -107
  31. package/dist/src/discord/bot.js.map +1 -1
  32. package/dist/src/orchestrator/distribute.js +1 -2
  33. package/dist/src/orchestrator/distribute.js.map +1 -1
  34. package/dist/src/orchestrator/pipeline.js +3 -15
  35. package/dist/src/orchestrator/pipeline.js.map +1 -1
  36. package/dist/src/orchestrator/scope.js +9 -3
  37. package/dist/src/orchestrator/scope.js.map +1 -1
  38. package/dist/src/orchestrator/state-machine.js +12 -3
  39. package/dist/src/orchestrator/state-machine.js.map +1 -1
  40. package/dist/src/prompt/builder.js +0 -4
  41. package/dist/src/prompt/builder.js.map +1 -1
  42. package/dist/src/prompt/templates/a1-system.md +2 -2
  43. package/dist/src/prompt/templates/worker-context.md +2 -2
  44. package/dist/src/routes/orchestrate.js +6 -1
  45. package/dist/src/routes/orchestrate.js.map +1 -1
  46. package/dist/src/security/network-acl.js +133 -0
  47. package/dist/src/security/network-acl.js.map +1 -0
  48. package/dist/src/telegram/bot.js +37 -3
  49. package/dist/src/telegram/bot.js.map +1 -1
  50. package/package.json +1 -1
  51. package/public/dist/assets/{constants-Bzu8ZQYX.js → constants-DGOVap6o.js} +1 -1
  52. package/public/dist/assets/{employees-BbOvchcS.js → employees-C0yujZsW.js} +1 -1
  53. package/public/dist/assets/{index-BG6dRmXR.js → index-BWcXMhOZ.js} +4 -4
  54. package/public/dist/assets/{memory-ZuWr4pMd.js → memory-FFmqjyCC.js} +1 -1
  55. package/public/dist/assets/memory-irEuKgdV.js +1 -0
  56. package/public/dist/assets/{render-DJB99y40.js → render-D1FcBRwU.js} +1 -1
  57. package/public/dist/assets/{settings-D1g7w3t4.js → settings-MICU1hXS.js} +1 -1
  58. package/public/dist/assets/settings-my0MZC-q.js +1 -0
  59. package/public/dist/assets/skills--Z8gqYp5.js +1 -0
  60. package/public/dist/assets/{skills-C5kJQVkS.js → skills-BzRE-_tP.js} +1 -1
  61. package/public/dist/assets/{slash-commands-ByfeM4Ot.js → slash-commands-DH53hTco.js} +1 -1
  62. package/public/dist/assets/slash-commands-u5fbLK7K.js +1 -0
  63. package/public/dist/assets/ui-CfUxt-FY.js +1 -0
  64. package/public/dist/assets/{ui-BR_M9U08.js → ui-DZb07Luj.js} +2 -2
  65. package/public/dist/assets/{ws-BgwVESAY.js → ws-PsjiwLxs.js} +2 -2
  66. package/public/dist/index.html +1 -1
  67. package/public/js/constants.ts +0 -1
  68. package/public/js/features/employees.ts +0 -2
  69. package/public/locales/en.json +1 -2
  70. package/public/locales/ko.json +1 -2
  71. package/scripts/install.sh +175 -3
  72. package/dist/src/prompt/templates/research-worker.md +0 -37
  73. package/public/dist/assets/memory-BLIJdS7I.js +0 -1
  74. package/public/dist/assets/settings-DRL_RTEF.js +0 -1
  75. package/public/dist/assets/skills-DDi6QuNI.js +0 -1
  76. package/public/dist/assets/slash-commands-Ds50o_kN.js +0 -1
  77. 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
- # 🦈 CLI-JAW
3
+ # CLI-JAW
4
4
 
5
- ### 内置 5 大 AI 引擎的专属本地助手
5
+ ### 你已有的 AI 订阅,一个助手搞定。
6
6
 
7
- *Claude、Codex、Gemini... 从此告别来回切换。*
8
-
9
- [![Tests](https://img.shields.io/badge/tests-rolling%20inventory-blue)](#-测试)
7
+ [![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
10
8
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://typescriptlang.org)
11
9
  [![Node](https://img.shields.io/badge/node-%3E%3D22-blue)](https://nodejs.org)
12
10
  [![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)
13
- [![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
14
- [![Docker](https://img.shields.io/badge/Docker-supported-2496ED?logo=docker&logoColor=white)](#-docker--容器隔离)
15
- [![Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20WSL%20%7C%20Docker-lightgrey)](#)
11
+ [![Docker](https://img.shields.io/badge/Docker-supported-2496ED?logo=docker&logoColor=white)](#-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
- - [安装与启动](#-安装与启动30-秒) · [认证 AI 引擎](#-认证-ai-引擎) · [CLI-JAW 是什么?](#cli-jaw-是什么)
26
- - [功能](#您的助手能做什么) · [技能](#-技能系统) · [Telegram](#-telegram--您口袋里的助手) · [语音 & STT](#-语音--stt--语音转文字)
27
- - [多智能体编排](#-多智能体编排) · [MCP](#-mcp--单次配置驱动-6-大-ai-引擎) · [CLI 命令](#️-cli-命令)
28
- - [多实例](#️-多实例--项目级别的独立环境) · [模型](#-模型) · [Docker](#-docker--容器隔离)
29
- - [开发](#️-开发) · [测试](#-测试) · [文档](#-文档) · [故障排查](#-故障排查) · [参与贡献](#-参与贡献)
30
-
31
- <details>
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
- 在浏览器中打开 **http://localhost:3457**。搞定!🦈
31
+ ## 快速链接
113
32
 
114
- </details>
33
+ - [安装](#-安装与运行) · [认证](#-认证) · [界面](#️-使用场景)
34
+ - [引擎路由](#-引擎路由) · [记忆](#-记忆) · [PABCD](#-编排--pabcd) · [技能](#-技能)
35
+ - [浏览器自动化](#-浏览器与桌面自动化) · [MCP](#-mcp) · [消息](#-消息)
36
+ - [CLI 命令](#️-cli-命令) · [Docker](#-docker) · [文档](#-文档) · [对比](#️-对比)
115
37
 
116
38
  ---
117
39
 
118
- ## 🚀 安装与启动(30 秒)
40
+ ## 🚀 安装与运行
119
41
 
120
42
  ```bash
121
43
  npm install -g cli-jaw
122
44
  jaw serve
123
45
  ```
124
46
 
125
- **搞定。** 打开 **http://localhost:3457** 直接开聊。🦈
126
-
127
- > 🕐 **想让它 24 小时运行?** `jaw service install` — 自动检测 systemd、launchd 或 Docker。
47
+ 打开 **http://localhost:3457**。需要 Node.js 22+ 和至少一个 AI CLI 认证。
128
48
 
129
- > 需要 **Node.js 22**([下载](https://nodejs.org))+ 下方**至少 1 AI CLI** 完成认证。
49
+ > `jaw service install` 开机自启(自动检测 systemd、launchd Docker)。
130
50
 
131
51
  ---
132
52
 
133
- ## 🔑 认证 AI 引擎
53
+ ## 🔑 认证
134
54
 
135
- 只需 **一个** — 选你有的就行:
55
+ 只需一个。选择你已有的订阅:
136
56
 
137
57
  ```bash
138
- # ── 免费 ──
139
- copilot login # GitHub Copilot(免费套餐)
140
- opencode # OpenCode — 首次运行自动认证(有免费模型)
141
-
142
- # ── 付费 ──
143
- claude auth # Anthropic Claude
144
- codex login # OpenAI Codex
145
- gemini # Google 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
- 检查就绪状态:`jaw doctor`
68
+ 检查状态:`jaw doctor`
149
69
 
150
- <details>
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
- </details>
74
+ 五个界面共享同一个助手、记忆和技能。
171
75
 
172
- > 💡 **不必全装 5 个。** 有一个就能跑。助手会自动检测可用引擎,缺了就无缝切换到下一个。
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
- ## CLI-JAW 是什么?
177
-
178
- CLI-JAW 是驻留在您本地机器上的**专属 AI 助手**,并在您熟悉的界面中运行 — **网页、终端、Telegram 和 Discord**。您可以向它提出任何问题、委派任务或是自动化您的工作流。
179
- ![CLI-JAW Web UI](image/README/1772128366759.png)
86
+ ## 🔀 引擎路由
180
87
 
181
- > 💬 *"帮我整理一下今天的日程"* 直接在 Telegram 上收到整理好的结果
182
- > 💬 *"重构这个模块,顺便写好测试"* → 子 Agent 搞定,你喝杯咖啡回来就行
183
- > 💬 *"把那个 PDF 下载下来,关键信息放到 Notion 里"* → 浏览器 + Notion 技能组合,搞定
88
+ 通过你已经支付的 OAuth 月度订阅路由五个 CLI 后端。无按量计费。
184
89
 
185
- 与单一模型的助手不同,CLI-JAW 通过官方 CLI 命令行工具对 **5 AI 引擎**(Claude、Codex、Gemini、OpenCode、Copilot)进行编排 为您提供各大供应商最优势的能力及统一的体验。当一个引擎处于繁忙状态时,它会自动无缝切换至下一个。**100+ 内置技能**可处理从浏览器自动化到文档生成的广泛任务。
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
- | | 为什么选择 CLI-JAW? |
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
- ![CLI-JAW 终端](docs/screenshots/terminal-cli.png)
100
+ **OpenCode 通配符**:连接任意模型端点 — OpenRouter、本地 LLM 或任何 OpenAI 兼容 API。
197
101
 
198
102
  ---
199
103
 
200
- ## 🆕 新功能 (v1.6.0)
104
+ ## 🧠 记忆
201
105
 
202
- `v1.6.0` 是一次文档补票式发布,用来首次完整总结 `v1.2.0` 之后累计的大量产品变化。
106
+ 三层结构,各负责不同的回忆范围。
203
107
 
204
- - 完整更新日志:[CHANGELOG.md](CHANGELOG.md#160---2026-04-13)
205
- - 覆盖范围:`v1.2.0` → `v1.5.1`
206
- - 规模:`59` commits,`307` files changed,`32,760` insertions,`4,263` deletions
207
- - 核心主题:编排、结构化记忆、Discord/语音通道、更强的 UI、图表/组件渲染、发布与运维工具链全面增强
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
- ```bash
257
- jaw chat # 终端 TUI(无需浏览器)
258
- jaw service install # 开机自动启动 (systemd/launchd/docker 自动检测)
122
+ ```
123
+ P (Plan) A (Audit) → B (Build) → C (Check) → D (Done) → IDLE
124
+ ⛔ ⛔ ⛔ 自动 自动
259
125
  ```
260
126
 
261
- > ⚠️ **安装须知:** `npm install -g cli-jaw` 运行 postinstall 脚本,设置技能目录、自定义指令和 MCP 配置。现有配置不会被覆盖,而是合并处理。
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
- **100+ 个技能**开箱即用 浏览器、GitHub、Notion、Telegram、记忆、PDF、图片生成等[应有尽有](#)。
135
+ 状态持久化在数据库中,服务器重启后保持。Worker 不能修改文件。用 `jaw orchestrate` 或 `/pabcd` 激活。
268
136
 
269
- <details>
270
- <summary>查看全部技能</summary>
137
+ ---
271
138
 
272
- | 层级 | 数量 | 工作方式 |
273
- | ------------ | :---: | ---------------------------------- |
274
- | **活跃技能** | 22 | 每次对话自动加载,随时可用。 |
275
- | **参考技能** | 94 | 用到的时候 AI 自己去读,按需调用。 |
139
+ ## 📦 技能
276
140
 
277
- #### 活跃技能(常驻)
141
+ 100 多个技能,按用途分类。
278
142
 
279
- | 技能 | 功能 |
280
- | ------------------------------------------------------------------- | --------------------------------------- |
281
- | `browser` | Chrome 自动化 快照、点击、导航、截图 |
282
- | `github` | 问题、PR、CI、代码审查(使用 `gh` CLI) |
283
- | `notion` | 创建/管理 Notion 页面和数据库 |
284
- | `memory` | 跨会话持久长期记忆 |
285
- | `telegram-send` | Telegram 发送照片、文档、语音消息 |
286
- | `vision-click` | 截图 AI 找坐标 点击(一条命令) |
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
- 94 个技能随时待命 — imagegen、openai-docs、Spotify、天气、深度研究、TTS、视频下载、Apple 提醒事项、1Password、Terraform、PostgreSQL、Jupyter 等。
154
+ ---
296
155
 
297
- ```bash
298
- jaw skill install <name> # 参考 → 活跃,永久激活
299
- ```
156
+ ## 🌐 浏览器与桌面自动化
300
157
 
301
- </details>
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
- ## 📱 Telegram — 您口袋里的助手
168
+ ## 🔌 MCP
306
169
 
307
- 您的助手不再被局限于办公桌前。通过 Telegram 随时随地开展对话:
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
- ## 🎤 语音 & STT — 语音转文字
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
- - 🌐 **Web UI** — 点击麦克风按钮实时录音并转写
355
- - 📱 **Telegram** — 发送语音消息,AI 处理前自动转写
356
- - 🎙️ **多模态** — 在单条消息中组合语音 + 文字 + 文件附件
185
+ 文字聊天、语音消息(自动 STT)、文件/图片上传、斜杠命令、定时任务结果推送。
357
186
 
358
- 所有 STT 设置(供应商、API 密钥、语言)均在 **Settings UI** 中管理 — 无需编辑配置文件。
187
+ ### Discord
359
188
 
360
- ---
189
+ 与 Telegram 相同 — 文字、文件、命令。频道/线程路由,代理结果转发。在 Web UI 设置中配置。
361
190
 
362
- ## 🎭 多智能体编排
363
-
364
- 对于复杂的任务,您的助手会自动将其委派给专业的子智能体:
365
-
366
- ![编排日志](docs/screenshots/orchestration-log.png)
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
- ## 🔌 MCP — 单次配置,驱动 6 大 AI 引擎
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
- 只需告别编辑 6 份不同配置文件的繁琐流程。单次安装,所有 AI 引擎立刻生效。
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 # 诊断(12 项检查)
429
- jaw skill install <name> # 安装技能
430
- jaw mcp install <package> # 安装 MCP → 同步全部 6 CLI
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 # 启动 ChromeCDP
433
- jaw browser vision-click "登录" # AI 智能点击
434
- jaw clone ~/my-project # 实例克隆
435
- jaw --home ~/my-project serve --port 3458 # 运行第二个实例
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
- 每个实例完全独立 工作目录、记忆、MCP 配置各不相同。非常适合工作/个人环境分离或按项目配置 AI。
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
- 每个 CLI 都有预设快捷选项,但你也可以直接输 **任意模型 ID**。
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
- <details>
474
- <summary>查看全部预设</summary>
245
+ ---
475
246
 
476
- | CLI | 默认值 | 主要模型 |
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
- </details>
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
- > 🔧 想加模型?改 `src/cli/registry.ts` 这一个文件就行,全局自动生效。
259
+ CLI-JAW 继承了 OpenClaw 架构(混合搜索管理器、回退模式、会话索引)。
487
260
 
488
261
  ---
489
262
 
490
- ## 🐳 Docker — 容器隔离
263
+ ## 🏗️ 多实例
491
264
 
492
- 在 Docker 容器中运行以实现安全隔离 — AI 代理无法访问主机文件。
265
+ 运行独立实例,拥有各自的设置、记忆和数据库。
493
266
 
494
267
  ```bash
495
- docker compose up -d # → http://localhost:3457
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>构建、运行和项目结构</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
- ├── http/ # Express 服务器 & 中间件
529
- ├── memory/ # 持久记忆系统
530
- ├── orchestrator/ # Agent 编排流水线
531
- ├── prompt/ # 提示注入 & AGENTS.md 生成
532
- ├── routes/ # REST API 端点(40+)
533
- ├── security/ # 输入验证 & 安全护栏
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
- `tsx --test` 跑(Node.js 原生测试 + TypeScript)。
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
- | `command not found: cli-jaw` | npm 全局 bin 不在 PATH 中 | 运行 `npm config get prefix`,将 `bin/` 加入 PATH |
572
- | `doctor` 显示 CLI 缺失 | 对应 CLI 未安装 | 按提示安装,如 `npm i -g @anthropic-ai/claude-code` |
573
- | 端口 3457 被占用 | 其他进程占用了端口 | 改用 `PORT=4000 jaw serve` 或终止占用进程 |
574
- | Telegram 机器人无响应 | Token 未配置或缺少 Chat ID | 重新运行 `jaw init --telegram-token ...` |
575
- | Telegram ✓✓ 延迟显示 | Telegram 服务器端交付确认时序 | 正常行为 服务器负载较高时可能延迟数分钟,非 Bug |
576
- | `npm install -g` 权限错误 | 全局目录权限不足 | 使用 `sudo npm i -g cli-jaw` 或推荐 [nvm](https://github.com/nvm-sh/nvm) |
577
- | 构建失败(`tsc` 报错) | Node 版本低于 22 | `node -v` 检查 → 升级至 22+ |
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
- > 📋 需要全新重装?请参阅 [英文 README 的 Fresh Start 指南](README.md#-troubleshooting)。
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
- 1. Fork 仓库,从 `master` 拉个分支
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
- **⭐ 觉得 CLI-JAW 好用?点个 Star 支持一下吧!**
599
-
600
- Made with ❤️ by the CLI-JAW community
601
-
602
- [MIT License](LICENSE)
344
+ **[MIT License](LICENSE)**
603
345
 
604
346
  </div>