blade-code 0.0.17 → 0.0.19

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 (4) hide show
  1. package/README.en.md +54 -440
  2. package/README.md +53 -480
  3. package/dist/blade.js +186 -181
  4. package/package.json +1 -1
package/README.md CHANGED
@@ -17,102 +17,50 @@
17
17
 
18
18
  ## ✨ 核心特性
19
19
 
20
- <table>
21
- <tr>
22
- <td width="50%" valign="top">
23
- <h3>🤖 智能对话</h3>
24
- <p>基于大语言模型的自然语言交互,支持上下文理解和多轮对话,直接运行 <code>blade "任务"</code> 即可自动进入界面并发送首条消息</p>
25
- </td>
26
- <td width="50%" valign="top">
27
- <h3>🛠️ 丰富工具</h3>
28
- <p>内置文件操作、Git 管理、网络请求、代码分析等实用工具</p>
29
- </td>
30
- </tr>
31
- <tr>
32
- <td width="50%" valign="top">
33
- <h3>🔗 MCP 协议</h3>
34
- <p>支持 Model Context Protocol,轻松扩展外部资源和工具</p>
35
- </td>
36
- <td width="50%" valign="top">
37
- <h3>🎨 现代 UI</h3>
38
- <p>基于 Ink 的美观终端界面,提供流畅的交互体验</p>
39
- </td>
40
- </tr>
41
- <tr>
42
- <td width="50%" valign="top">
43
- <h3>💾 会话管理</h3>
44
- <p>支持多会话、继续对话、会话恢复等功能</p>
45
- </td>
46
- <td width="50%" valign="top">
47
- <h3>🔒 安全可控</h3>
48
- <p>权限管理、工具白名单、操作确认等安全机制</p>
49
- </td>
50
- </tr>
51
- </table>
52
-
53
- ---
54
-
55
- ## 📖 文档
56
-
57
- - **[完整文档](docs/index.md)** - 文档中心导航
58
- - **[用户文档](docs/public/README.md)** - 安装、配置、使用指南
59
- - **[开发者文档](docs/development/README.md)** - 架构设计、技术实现
60
- - **[贡献指南](docs/contributing/README.md)** - 参与开源贡献
20
+ - 🤖 **智能对话** - 基于大语言模型,支持上下文理解和多轮对话
21
+ - 🛠️ **丰富工具** - 内置 18+ 工具:文件读写、代码搜索、Shell 执行、Git 操作等
22
+ - 🔗 **MCP 协议** - 支持 Model Context Protocol,轻松扩展外部工具
23
+ - 🎨 **现代 UI** - 基于 React + Ink,支持 Markdown 渲染和语法高亮
24
+ - 💾 **会话管理** - 多会话、继续对话、会话恢复、会话 Fork
25
+ - 🔒 **安全可控** - 三级权限系统(allow/ask/deny)、工具白名单、操作确认
61
26
 
62
27
  ---
63
28
 
64
29
  ## 🚀 快速开始
65
30
 
66
- ### 零安装试用
67
-
68
- 无需安装,直接体验 Blade Code:
31
+ ### 零安装试用
69
32
 
70
33
  ```bash
71
- # 交互式模式
72
34
  npx blade-code
73
-
74
- # 快速问答(非交互式)
75
35
  npx blade-code --print "解释什么是 TypeScript"
76
-
77
- # 代码生成(非交互式)
78
- npx blade-code --print "用 Python 写一个快速排序算法"
79
36
  ```
80
37
 
81
- ### 📦 全局安装(推荐)
38
+ ### 全局安装
82
39
 
83
40
  ```bash
84
- # 使用 npm 安装
85
41
  npm install -g blade-code
86
-
87
- # 使用 pnpm 安装
42
+ # 或
88
43
  pnpm add -g blade-code
89
-
90
- # 使用 yarn 安装
91
- yarn global add blade-code
92
44
  ```
93
45
 
94
- 安装后即可使用 `blade` 命令:
46
+ ### 基本使用
95
47
 
96
48
  ```bash
97
- # 交互式模式(默认)
98
- blade
99
-
100
- # 快速问答(非交互式)
101
- blade --print "你好,介绍一下自己"
49
+ blade # 交互式模式
50
+ blade "帮我分析这个项目" # 带首条消息进入
51
+ blade --print "写一个快排算法" # 打印模式(适合管道)
52
+ blade --continue # 继续上次对话
102
53
  ```
103
54
 
104
- > 首次运行若未检测到 API 密钥,会自动弹出终端设置向导,按提示填写 Provider / Base URL / API Key / 模型后即可继续使用。
55
+ > 首次运行若未配置 API 密钥,会自动弹出设置向导。
105
56
 
106
57
  ---
107
58
 
108
- ## 🔐 配置 API 密钥
109
-
110
- Blade Code 支持多种 LLM 提供商,您需要配置相应的 API 密钥:
59
+ ## 🔐 配置
111
60
 
112
- ### 方式一:配置文件(推荐)
61
+ ### 配置文件
113
62
 
114
63
  ```bash
115
- # 创建用户级配置文件
116
64
  mkdir -p ~/.blade
117
65
  cat > ~/.blade/config.json << 'EOF'
118
66
  {
@@ -122,221 +70,35 @@ cat > ~/.blade/config.json << 'EOF'
122
70
  "model": "qwen-max"
123
71
  }
124
72
  EOF
125
-
126
- # 或在配置文件中使用环境变量插值
127
- cat > ~/.blade/config.json << 'EOF'
128
- {
129
- "apiKey": "${BLADE_API_KEY}",
130
- "baseUrl": "${BLADE_BASE_URL:-https://apis.iflow.cn/v1}"
131
- }
132
- EOF
133
- ```
134
-
135
- ### 方式二:首启设置向导(推荐体验)
136
-
137
- ```bash
138
- blade
139
- # 若未配置 API Key,将自动引导完成 Provider、Base URL、API Key、模型的填写
140
73
  ```
141
74
 
142
- ### 方式三:配置命令
143
-
144
- ```bash
145
- # 使用 config 命令管理配置
146
- blade config
147
- ```
75
+ 支持环境变量插值:`"apiKey": "${BLADE_API_KEY}"`
148
76
 
149
77
  ### 获取 API 密钥
150
78
 
151
- - **千问(Qwen)**: [DashScope 控制台](https://dashscope.console.aliyun.com/apiKey)
79
+ - **千问**: [DashScope 控制台](https://dashscope.console.aliyun.com/apiKey)
152
80
  - **火山引擎**: [火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey)
81
+ - **OpenAI**: [OpenAI Platform](https://platform.openai.com/api-keys)
153
82
 
154
83
  ---
155
84
 
156
85
  ## 💬 使用示例
157
86
 
158
- ### 基础对话
159
-
160
- ```bash
161
- # 交互式模式(默认)
162
- blade
163
-
164
- # 直接发送消息(会在 UI 初始化后自动输入并执行)
165
- blade "什么是人工智能?"
166
-
167
- # 代码生成
168
- blade "用 JavaScript 写一个防抖函数"
169
- ```
170
-
171
- ### 智能工具调用
172
-
173
- Blade Code 会根据您的需求自动选择合适的工具:
174
-
175
- ```bash
176
- # 文件操作
177
- blade "列出当前目录的所有 TypeScript 文件"
178
-
179
- # Git 操作
180
- blade "查看最近的 5 次提交记录"
181
-
182
- # 代码审查
183
- blade "审查 src/utils 目录的代码质量"
184
- ```
185
-
186
- ### 会话管理
187
-
188
- ```bash
189
- # 创建或使用命名会话
190
- blade --session-id "project-alpha" "开始新项目"
191
-
192
- # 继续最近的会话
193
- blade --continue
194
-
195
- # 恢复特定会话
196
- blade --resume <conversation-id>
197
-
198
- # Fork 会话(从现有会话创建新会话)
199
- blade --resume <id> --fork-session
200
- ```
201
-
202
- ### 打印模式
203
-
204
- 适合管道操作和脚本使用:
205
-
206
- ```bash
207
- # 打印模式(非交互式,直接输出结果)
208
- blade --print "生成一个 README 模板" > README.md
209
-
210
- # 指定输出格式
211
- blade --print --output-format json "获取项目信息"
212
-
213
- # 流式 JSON 输出
214
- blade --print --output-format stream-json "分析代码"
215
- ```
216
-
217
- ### 输入/输出选项
218
-
219
87
  ```bash
220
- # 从标准输入读取(流式 JSON 格式)
221
- cat input.json | blade --input-format stream-json --print
88
+ # 智能工具调用
89
+ blade "列出所有 TypeScript 文件"
90
+ blade "查找包含 TODO 的代码"
91
+ blade "审查 src/utils 目录的代码"
222
92
 
223
- # 包含部分消息块
224
- blade --print --include-partial-messages "长文本生成"
93
+ # 会话管理
94
+ blade --session-id "my-project" "开始新项目"
95
+ blade --resume <id> # 恢复会话
96
+ blade --resume <id> --fork-session # Fork 会话
225
97
 
226
- # 重新发送用户消息
227
- blade --replay-user-messages < input.txt
228
- ```
229
-
230
- ---
231
-
232
- ## 🔧 高级功能
233
-
234
- ### MCP 服务器集成
235
-
236
- Model Context Protocol 允许集成外部工具和资源:
237
-
238
- ```bash
239
- # 配置和管理 MCP 服务器
240
- blade mcp
241
-
242
- # 从 JSON 文件加载 MCP 配置
243
- blade --mcp-config config.json "使用外部工具"
244
-
245
- # 仅使用指定的 MCP 配置(严格模式)
246
- blade --mcp-config config.json --strict-mcp-config "查询"
247
- ```
248
-
249
- ### 配置管理
250
-
251
- ```bash
252
- # 配置管理
253
- blade config
254
-
255
- # 系统健康检查
256
- blade doctor
257
-
258
- # 检查更新
259
- blade update
260
- ```
261
-
262
- ### AI 模型选项
263
-
264
- ```bash
265
- # 指定模型
266
- blade --model qwen-max "复杂的问题"
267
-
268
- # 设置回退模型
269
- blade --fallback-model qwen-turbo "问题"
270
-
271
- # 自定义系统提示
272
- blade --append-system-prompt "你是一位资深架构师" "设计微服务架构"
273
-
274
- # 完全替换默认系统提示
275
- blade --system-prompt "你是一位 TypeScript 专家" "解释装饰器"
276
-
277
- # 自定义 Agent 配置
278
- blade --agents '{"reviewer": {"model": "qwen-max"}}' "审查代码"
279
- ```
280
-
281
- ### 安全与权限
282
-
283
- Blade 提供强大的三级权限控制系统(allow/ask/deny):
284
-
285
- ```bash
286
- # 仅允许特定工具
287
- blade --allowed-tools "read,write" "处理文件"
288
-
289
- # 禁止特定工具
290
- blade --disallowed-tools "bash,execute" "安全操作"
291
-
292
- # 权限模式
293
- blade --permission-mode plan "规划任务" # 仅规划不执行
294
- blade --permission-mode autoEdit "修改代码" # 自动接受编辑
295
- blade --yolo "任意工具自动批准" # 开启 YOLO 模式
296
-
297
- # 添加允许访问的目录
298
- blade --add-dir /path/to/dir "访问目录"
299
- ```
300
-
301
- **权限配置示例** (`.blade/settings.json`):
302
- ```json
303
- {
304
- "permissions": {
305
- "allow": [
306
- "Read(file_path:**/*.ts)",
307
- "Grep",
308
- "Glob"
309
- ],
310
- "ask": [
311
- "Write",
312
- "Edit",
313
- "Bash(command:npm *)"
314
- ],
315
- "deny": [
316
- "Read(file_path:.env)",
317
- "Bash(command:rm -rf *)"
318
- ]
319
- }
320
- }
321
- ```
322
-
323
- 详见 [权限系统指南](docs/public/configuration/permissions.md)
324
-
325
- ### IDE 集成
326
-
327
- ```bash
328
- # 启动时自动连接 IDE
329
- blade --ide
330
- ```
331
-
332
- ### 配置文件
333
-
334
- ```bash
335
- # 使用设置文件
336
- blade --settings settings.json
337
-
338
- # 指定配置源
339
- blade --setting-sources "global,user,local"
98
+ # 安全控制
99
+ blade --allowed-tools "Read,Grep" "只读操作"
100
+ blade --permission-mode plan "只规划不执行"
101
+ blade --yolo "自动批准所有操作"
340
102
  ```
341
103
 
342
104
  ---
@@ -345,238 +107,49 @@ blade --setting-sources "global,user,local"
345
107
 
346
108
  ### 主要命令
347
109
 
348
- | 命令 | 说明 | 示例 |
349
- |------|------|------|
350
- | `blade` | 启动交互式 AI 助手(默认) | `blade` |
351
- | `blade config` | 配置管理 | `blade config` |
352
- | `blade mcp` | 配置和管理 MCP 服务器 | `blade mcp` |
353
- | `blade doctor` | 系统健康检查 | `blade doctor` |
354
- | `blade update` | 检查更新并安装 | `blade update` |
355
- | `blade install [target]` | 安装指定版本(stable/latest/版本号) | `blade install latest` |
356
-
357
- ### 调试选项
358
-
359
- | 选项 | 简写 | 说明 |
360
- |------|------|------|
361
- | `--debug [category]` | `-d` | 启用调试模式,可选分类过滤 |
362
-
363
- ### 输出选项
364
-
365
- | 选项 | 简写 | 说明 |
366
- |------|------|------|
367
- | `--print` | `-p` | 打印响应并退出(适合管道) |
368
- | `--output-format <format>` | | 输出格式:text/json/stream-json(仅与 --print 配合) |
369
- | `--include-partial-messages` | | 包含部分消息块 |
370
-
371
- ### 输入选项
372
-
373
- | 选项 | 说明 |
374
- |------|------|
375
- | `--input-format <format>` | 输入格式:text/stream-json |
376
- | `--replay-user-messages` | 重新发送来自 stdin 的用户消息 |
377
-
378
- ### 安全选项
379
-
380
- | 选项 | 说明 |
381
- |------|------|
382
- | `--allowed-tools <tools>` | 允许的工具列表(逗号或空格分隔) |
383
- | `--disallowed-tools <tools>` | 禁止的工具列表(逗号或空格分隔) |
384
- | `--permission-mode <mode>` | 权限模式:default/autoEdit/yolo/plan |
385
- | `--yolo` | YOLO 模式快捷开关(等同于 `--permission-mode yolo`) |
386
- | `--add-dir <dirs>` | 允许工具访问的额外目录 |
387
-
388
- ### MCP 选项
389
-
390
- | 选项 | 说明 |
391
- |------|------|
392
- | `--mcp-config <files>` | 从 JSON 文件或字符串加载 MCP 服务器 |
393
- | `--strict-mcp-config` | 仅使用 --mcp-config 指定的服务器 |
394
-
395
- ### AI 选项
396
-
397
- | 选项 | 说明 |
110
+ | 命令 | 说明 |
398
111
  |------|------|
399
- | `--append-system-prompt <text>` | 追加系统提示到默认提示 |
400
- | `--system-prompt <text>` | 完全替换默认系统提示 |
401
- | `--model <name>` | 当前会话使用的模型 |
402
- | `--fallback-model <name>` | 启用自动回退到指定模型 |
403
- | `--agents <json>` | 自定义 Agent 的 JSON 对象 |
112
+ | `blade` | 启动交互式助手 |
113
+ | `blade config` | 配置管理 |
114
+ | `blade mcp` | MCP 服务器管理 |
115
+ | `blade doctor` | 系统健康检查 |
116
+ | `blade update` | 检查更新 |
404
117
 
405
- ### 会话选项
118
+ ### 常用选项
406
119
 
407
120
  | 选项 | 简写 | 说明 |
408
121
  |------|------|------|
409
- | `--continue` | `-c` | 继续最近的会话 |
122
+ | `--print` | `-p` | 打印响应并退出 |
123
+ | `--continue` | `-c` | 继续最近会话 |
410
124
  | `--resume <id>` | `-r` | 恢复指定会话 |
411
- | `--fork-session` | | 恢复会话时创建新会话 ID |
412
- | `--session-id <id>` | | 使用特定会话 ID |
413
-
414
- ### 配置选项
415
-
416
- | 选项 | 说明 |
417
- |------|------|
418
- | `--settings <path>` | | 设置 JSON 文件路径或 JSON 字符串 |
419
- | `--setting-sources <sources>` | | 要加载的设置源(逗号分隔) |
420
-
421
- ### 集成选项
125
+ | `--model <name>` | | 指定模型 |
126
+ | `--yolo` | | 自动批准所有操作 |
422
127
 
423
- | 选项 | 说明 |
424
- |------|------|
425
- | `--ide` | | 启动时自动连接到 IDE |
128
+ ### Slash 命令
426
129
 
427
- ### 其他选项
428
-
429
- | 选项 | 简写 | 说明 |
430
- |------|------|------|
431
- | `--help` | `-h` | 显示帮助 |
432
- | `--version` | `-V` | 显示版本号 |
130
+ 在交互模式中使用:`/init` `/help` `/clear` `/compact` `/agents` `/permissions` `/mcp` `/resume` `/config` `/theme` `/model`
433
131
 
434
132
  ---
435
133
 
436
- ## 🏗️ 技术架构
437
-
438
- Blade Code 采用现代化的扁平化架构设计:
439
-
440
- ```
441
- src/
442
- ├── agent/ # Agent 核心逻辑和控制器
443
- ├── cli/ # CLI 配置和中间件
444
- ├── commands/ # CLI 命令定义和处理
445
- ├── config/ # 统一配置管理(双文件系统)
446
- ├── tools/ # 工具系统(含执行管道)
447
- │ ├── builtin/ # 内置工具
448
- │ ├── execution/ # 6阶段执行管道
449
- │ ├── registry/ # 工具注册中心
450
- │ └── validation/ # 参数验证
451
- ├── ui/ # UI 组件和界面(基于 Ink)
452
- ├── services/ # 共享服务层
453
- ├── prompts/ # 提示模板管理
454
- ├── mcp/ # MCP 协议实现
455
- └── utils/ # 工具函数
456
- ```
457
-
458
- ### 核心特性
134
+ ## 📖 文档
459
135
 
460
- - 🚀 **极速构建**:使用 Bun 构建,性能卓越
461
- - 📦 **单文件部署**:构建产物仅 ~1MB
462
- - 🎨 **React for CLI**:基于 Ink 的现代化 UI
463
- - 🔧 **TypeScript**:完整类型支持
464
- - ✅ **全面测试**:单元、集成、E2E 测试覆盖
465
- - 🔒 **6阶段执行管道**:Discovery → Validation → Permission → Confirmation → Execution → Formatting
466
- - 🛡️ **三级权限控制**:allow/ask/deny 精细化权限管理
467
- - 🎯 **双配置文件系统**:config.json(基础配置) + settings.json(行为配置)
136
+ - **[用户文档](docs/public/README.md)** - 安装、配置、使用指南
137
+ - **[开发者文档](docs/development/README.md)** - 架构设计、技术实现
138
+ - **[贡献指南](CONTRIBUTING.md)** - 参与开源贡献
468
139
 
469
140
  ---
470
141
 
471
- ## 🔨 开发指南
142
+ ## 🤝 贡献
472
143
 
473
- ### 环境要求
474
-
475
- - Node.js >= 16.0.0
476
- - pnpm(推荐)或 npm
477
-
478
- ### 克隆项目
144
+ 欢迎贡献!详见 [贡献指南](CONTRIBUTING.md)。
479
145
 
480
146
  ```bash
481
147
  git clone https://github.com/echoVic/blade-code.git
482
- cd blade-code
483
- pnpm install
484
- ```
485
-
486
- ### 开发命令
487
-
488
- ```bash
489
- # 开发模式(热重载)
490
- pnpm dev
491
-
492
- # 构建
493
- pnpm build
494
-
495
- # 运行测试
496
- pnpm test
497
-
498
- # 测试覆盖率
499
- pnpm test:coverage
500
-
501
- # 代码检查
502
- pnpm check:fix
503
-
504
- # 类型检查
505
- pnpm type-check
148
+ cd blade-code && pnpm install && pnpm dev
506
149
  ```
507
150
 
508
- ### 项目结构
509
-
510
- ```
511
- blade-code/
512
- ├── src/ # 源代码
513
- ├── tests/ # 测试文件
514
- ├── dist/ # 构建产物
515
- ├── scripts/ # 构建脚本
516
- └── docs/ # 文档
517
- ```
518
-
519
- ---
520
-
521
- ## 🤝 贡献指南
522
-
523
- 我们欢迎所有形式的贡献!
524
-
525
- - 🐛 [报告 Bug](https://github.com/echoVic/blade-code/issues/new?template=bug_report.md)
526
- - 💡 [功能建议](https://github.com/echoVic/blade-code/issues/new?template=feature_request.md)
527
- - 📖 [改进文档](https://github.com/echoVic/blade-code/pulls)
528
- - 🔧 [提交代码](CONTRIBUTING.md)
529
-
530
- ### 贡献流程
531
-
532
- 1. Fork 本仓库
533
- 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
534
- 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
535
- 4. 推送到分支 (`git push origin feature/AmazingFeature`)
536
- 5. 开启 Pull Request
537
-
538
- 详细信息请查看 [贡献指南](CONTRIBUTING.md)。
539
-
540
151
  ---
541
152
 
542
153
  ## 📄 许可证
543
154
 
544
- 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。
545
-
546
- ---
547
-
548
- ## 🙏 致谢
549
-
550
- Blade Code 的开发离不开以下优秀的开源项目:
551
-
552
- - [Ink](https://github.com/vadimdemedes/ink) - React for CLI
553
- - [OpenAI](https://github.com/openai/openai-node) - OpenAI API 客户端
554
- - [Biome](https://github.com/biomejs/biome) - 代码格式化和检查
555
- - [Vitest](https://github.com/vitest-dev/vitest) - 测试框架
556
- - [Bun](https://github.com/oven-sh/bun) - 快速构建工具
557
-
558
- ---
559
-
560
- ## 📞 联系方式
561
-
562
- - **作者**: echoVic
563
- - **主页**: [https://github.com/echoVic/blade-code](https://github.com/echoVic/blade-code)
564
- - **问题反馈**: [GitHub Issues](https://github.com/echoVic/blade-code/issues)
565
-
566
- ---
567
-
568
- ## 🌟 Star History
569
-
570
- 如果觉得 Blade Code 对您有帮助,请给我们一个 ⭐️ Star!
571
-
572
- [![Star History Chart](https://api.star-history.com/svg?repos=echoVic/blade-code&type=Date)](https://star-history.com/#echoVic/blade-code&Date)
573
-
574
- ---
575
-
576
- <div align="center">
577
-
578
- **🗡️ Blade Code - 让 AI 成为您的命令行伙伴!**
579
-
580
- Made with ❤️ by [echoVic](https://github.com/echoVic)
581
-
582
- </div>
155
+ [MIT](LICENSE) - Made with ❤️ by [echoVic](https://github.com/echoVic)