@yivan-lab/pretty-please 1.1.0 → 1.2.0
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.md +283 -1
- package/bin/pls.tsx +1022 -104
- package/dist/bin/pls.js +894 -84
- package/dist/package.json +4 -4
- package/dist/src/alias.d.ts +41 -0
- package/dist/src/alias.js +240 -0
- package/dist/src/chat-history.js +10 -1
- package/dist/src/components/Chat.js +2 -1
- package/dist/src/components/CodeColorizer.js +26 -20
- package/dist/src/components/CommandBox.js +2 -1
- package/dist/src/components/ConfirmationPrompt.js +2 -1
- package/dist/src/components/Duration.js +2 -1
- package/dist/src/components/InlineRenderer.js +2 -1
- package/dist/src/components/MarkdownDisplay.js +2 -1
- package/dist/src/components/MultiStepCommandGenerator.d.ts +3 -1
- package/dist/src/components/MultiStepCommandGenerator.js +20 -10
- package/dist/src/components/TableRenderer.js +2 -1
- package/dist/src/config.d.ts +34 -3
- package/dist/src/config.js +71 -31
- package/dist/src/multi-step.d.ts +22 -6
- package/dist/src/multi-step.js +27 -4
- package/dist/src/remote-history.d.ts +63 -0
- package/dist/src/remote-history.js +315 -0
- package/dist/src/remote.d.ts +113 -0
- package/dist/src/remote.js +634 -0
- package/dist/src/shell-hook.d.ts +53 -0
- package/dist/src/shell-hook.js +242 -19
- package/dist/src/ui/theme.d.ts +27 -24
- package/dist/src/ui/theme.js +71 -21
- package/dist/src/upgrade.d.ts +41 -0
- package/dist/src/upgrade.js +348 -0
- package/dist/src/utils/console.js +22 -11
- package/package.json +4 -4
- package/src/alias.ts +301 -0
- package/src/chat-history.ts +11 -1
- package/src/components/Chat.tsx +2 -1
- package/src/components/CodeColorizer.tsx +27 -19
- package/src/components/CommandBox.tsx +2 -1
- package/src/components/ConfirmationPrompt.tsx +2 -1
- package/src/components/Duration.tsx +2 -1
- package/src/components/InlineRenderer.tsx +2 -1
- package/src/components/MarkdownDisplay.tsx +2 -1
- package/src/components/MultiStepCommandGenerator.tsx +25 -11
- package/src/components/TableRenderer.tsx +2 -1
- package/src/config.ts +117 -32
- package/src/multi-step.ts +43 -6
- package/src/remote-history.ts +390 -0
- package/src/remote.ts +800 -0
- package/src/shell-hook.ts +271 -19
- package/src/ui/theme.ts +101 -24
- package/src/upgrade.ts +397 -0
- package/src/utils/console.ts +22 -11
package/README.md
CHANGED
|
@@ -11,9 +11,13 @@
|
|
|
11
11
|
- 🛡️ **智能错误恢复** - 命令失败时 AI 自动分析并调整策略
|
|
12
12
|
- ✏️ **命令编辑** - 执行前可编辑 AI 生成的命令,支持 manual/auto 两种模式
|
|
13
13
|
- 💬 **AI 对话模式** - 随时问 AI 命令怎么用
|
|
14
|
+
- 🌐 **远程执行** - 通过 SSH 在远程服务器执行命令,支持密码/密钥认证
|
|
14
15
|
- 📜 **三种历史记录** - 命令历史、对话历史、Shell 历史统一管理
|
|
15
16
|
- 🎨 **精美界面** - 基于 React + Ink 的终端 UI,Markdown 渲染
|
|
17
|
+
- 🌗 **主题切换** - 支持 dark/light 主题,适配不同终端背景
|
|
18
|
+
- 🏷️ **命令别名** - 常用操作一键触发,支持参数模板
|
|
16
19
|
- 🔧 **多 Provider 支持** - 支持 OpenAI、DeepSeek、Anthropic 等多种 AI
|
|
20
|
+
- 🚀 **一键升级** - 内置 `pls upgrade` 命令,自动更新到最新版本
|
|
17
21
|
|
|
18
22
|
## 📦 安装
|
|
19
23
|
|
|
@@ -36,7 +40,7 @@ yarn global add @yivan-lab/pretty-please
|
|
|
36
40
|
|
|
37
41
|
```bash
|
|
38
42
|
# 克隆项目
|
|
39
|
-
git clone https://github.com/
|
|
43
|
+
git clone https://github.com/IvanLark/pretty-please.git
|
|
40
44
|
cd pretty-please
|
|
41
45
|
|
|
42
46
|
# 安装依赖
|
|
@@ -51,6 +55,25 @@ pnpm link --global
|
|
|
51
55
|
|
|
52
56
|
安装完成后,你可以在任何目录使用 `pls` 或 `please` 命令了!
|
|
53
57
|
|
|
58
|
+
### 方式三:一键安装(无需 Node.js)
|
|
59
|
+
|
|
60
|
+
适用于云服务器、DevOps 场景,无需 Node.js 环境:
|
|
61
|
+
|
|
62
|
+
**Linux / macOS:**
|
|
63
|
+
```bash
|
|
64
|
+
curl -fsSL https://raw.githubusercontent.com/IvanLark/pretty-please/main/install.sh | bash
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Windows (PowerShell):**
|
|
68
|
+
```powershell
|
|
69
|
+
irm https://raw.githubusercontent.com/IvanLark/pretty-please/main/install.ps1 | iex
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
支持的平台:
|
|
73
|
+
- Linux x64 / arm64
|
|
74
|
+
- macOS Intel / Apple Silicon
|
|
75
|
+
- Windows x64
|
|
76
|
+
|
|
54
77
|
## 🚀 快速开始
|
|
55
78
|
|
|
56
79
|
### 1. 配置 API
|
|
@@ -261,6 +284,8 @@ pls config set <key> <value> # 设置单个配置项
|
|
|
261
284
|
| `chatHistoryLimit` | 对话历史保留轮数 | `10` |
|
|
262
285
|
| `commandHistoryLimit` | 命令历史保留条数 | `10` |
|
|
263
286
|
| `shellHistoryLimit` | Shell 历史保留条数 | `15` |
|
|
287
|
+
| `theme` | 界面主题(dark/light) | `dark` |
|
|
288
|
+
| `aliases` | 命令别名配置 | `{}` |
|
|
264
289
|
|
|
265
290
|
### 支持的 Provider
|
|
266
291
|
|
|
@@ -274,6 +299,154 @@ pls config set <key> <value> # 设置单个配置项
|
|
|
274
299
|
- `fireworks` - Fireworks AI
|
|
275
300
|
- `together` - Together AI
|
|
276
301
|
|
|
302
|
+
## 🌐 远程执行
|
|
303
|
+
|
|
304
|
+
通过 SSH 在远程服务器上执行 AI 生成的命令,支持密码/密钥认证。
|
|
305
|
+
|
|
306
|
+
### 添加远程服务器
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
# 使用默认密钥(~/.ssh/id_rsa)
|
|
310
|
+
pls remote add myserver root@192.168.1.100
|
|
311
|
+
|
|
312
|
+
# 指定端口
|
|
313
|
+
pls remote add myserver root@192.168.1.100:2222
|
|
314
|
+
|
|
315
|
+
# 使用指定密钥
|
|
316
|
+
pls remote add myserver root@192.168.1.100 --key ~/.ssh/my_key
|
|
317
|
+
|
|
318
|
+
# 使用密码认证(每次执行时输入密码)
|
|
319
|
+
pls remote add myserver root@192.168.1.100 --password
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### 管理远程服务器
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
pls remote # 查看所有服务器
|
|
326
|
+
pls remote list # 同上
|
|
327
|
+
pls remote test myserver # 测试连接并采集系统信息
|
|
328
|
+
pls remote remove myserver # 删除服务器
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### 设置默认服务器
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
pls remote default myserver # 设置默认服务器
|
|
335
|
+
pls remote default # 查看当前默认服务器
|
|
336
|
+
pls remote default --clear # 清除默认服务器
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
设置默认服务器后,使用 `-r` 参数时可以省略服务器名:
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
pls -r 查看磁盘使用情况 # 使用默认服务器
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### 设置工作目录
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
pls remote workdir myserver /var/www # 设置工作目录
|
|
349
|
+
pls remote workdir myserver # 查看当前工作目录
|
|
350
|
+
pls remote workdir myserver --clear # 清除工作目录
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
设置工作目录后,所有命令会自动在该目录下执行。
|
|
354
|
+
|
|
355
|
+
### 远程执行命令
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
# 指定服务器执行
|
|
359
|
+
pls -r myserver 查看磁盘使用情况
|
|
360
|
+
pls -r myserver 查找大于 100MB 的日志文件
|
|
361
|
+
|
|
362
|
+
# 使用默认服务器(需先设置)
|
|
363
|
+
pls -r 查看当前目录的文件
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### 批量远程执行 ⭐
|
|
367
|
+
|
|
368
|
+
在多台服务器上并发执行同一个任务,每个服务器自动生成适配其环境的命令:
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
# 批量执行(逗号分隔服务器名)
|
|
372
|
+
pls -r web1,web2,web3 查看 nginx 状态
|
|
373
|
+
pls -r server1,server2 查看磁盘使用情况
|
|
374
|
+
pls -r prod1,prod2,prod3 重启应用服务
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
**特点:**
|
|
378
|
+
- 🚀 **并发执行** - 所有服务器同时生成命令和执行,速度快
|
|
379
|
+
- 🔧 **自动适配** - 每个服务器根据其系统环境生成独立命令(支持异构环境)
|
|
380
|
+
- 📊 **清晰展示** - 显示每个服务器的命令和执行结果
|
|
381
|
+
- 📝 **历史记录** - 自动记录到每个服务器的历史
|
|
382
|
+
|
|
383
|
+
**执行流程示例:**
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
$ pls -r web1,web2,web3 查看 nginx 状态
|
|
387
|
+
|
|
388
|
+
正在为 3 台服务器生成命令...
|
|
389
|
+
|
|
390
|
+
✓ 命令生成完成
|
|
391
|
+
|
|
392
|
+
web1 (linux):
|
|
393
|
+
systemctl status nginx | grep Active
|
|
394
|
+
|
|
395
|
+
web2 (linux):
|
|
396
|
+
systemctl status nginx | grep Active
|
|
397
|
+
|
|
398
|
+
web3 (linux):
|
|
399
|
+
systemctl status nginx | grep Active
|
|
400
|
+
|
|
401
|
+
将在 3 台服务器执行以上命令
|
|
402
|
+
执行? [回车执行 / Ctrl+C 取消]
|
|
403
|
+
|
|
404
|
+
正在执行...
|
|
405
|
+
|
|
406
|
+
执行完成:
|
|
407
|
+
|
|
408
|
+
✓ web1 (退出码: 0)
|
|
409
|
+
✓ web2 (退出码: 0)
|
|
410
|
+
✗ web3 (退出码: 3)
|
|
411
|
+
|
|
412
|
+
─── web1 ───
|
|
413
|
+
Active: active (running)
|
|
414
|
+
|
|
415
|
+
─── web2 ───
|
|
416
|
+
Active: active (running)
|
|
417
|
+
|
|
418
|
+
─── web3 ───
|
|
419
|
+
Active: inactive (dead)
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
**退出码:**
|
|
423
|
+
- `0` - 全部成功
|
|
424
|
+
- `1` - 部分失败
|
|
425
|
+
- `2` - 全部失败
|
|
426
|
+
|
|
427
|
+
**限制:**
|
|
428
|
+
- 批量执行模式不支持多步骤命令(只生成单个命令)
|
|
429
|
+
- 不支持命令编辑(直接执行生成的命令)
|
|
430
|
+
|
|
431
|
+
### 远程 Shell Hook
|
|
432
|
+
|
|
433
|
+
在远程服务器上安装 Shell Hook,让 AI 了解你在远程服务器上的操作历史:
|
|
434
|
+
|
|
435
|
+
```bash
|
|
436
|
+
pls remote hook install myserver # 安装远程 Hook
|
|
437
|
+
pls remote hook status myserver # 查看状态
|
|
438
|
+
pls remote hook uninstall myserver # 卸载 Hook
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### 远程历史记录
|
|
442
|
+
|
|
443
|
+
```bash
|
|
444
|
+
pls remote history show myserver # 查看远程命令历史
|
|
445
|
+
pls remote history clear myserver # 清空远程命令历史
|
|
446
|
+
pls remote history shell myserver # 查看远程 Shell 历史
|
|
447
|
+
pls remote history shell-clear myserver # 清空远程 Shell 历史
|
|
448
|
+
```
|
|
449
|
+
|
|
277
450
|
## 🔧 Shell Hook(可选)
|
|
278
451
|
|
|
279
452
|
Shell Hook 可以记录你在终端执行的所有命令,让 AI 更智能地理解上下文。
|
|
@@ -289,6 +462,97 @@ pls hook uninstall # 卸载 hook
|
|
|
289
462
|
- bash
|
|
290
463
|
- PowerShell
|
|
291
464
|
|
|
465
|
+
## 🌗 主题系统
|
|
466
|
+
|
|
467
|
+
支持深色和浅色两种主题,适配不同终端背景:
|
|
468
|
+
|
|
469
|
+
```bash
|
|
470
|
+
pls theme # 查看当前主题
|
|
471
|
+
pls theme list # 查看所有可用主题
|
|
472
|
+
pls theme dark # 切换到深色主题
|
|
473
|
+
pls theme light # 切换到浅色主题
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
主题说明:
|
|
477
|
+
- **dark(深色)** - 明亮的颜色,适合深色终端背景(默认)
|
|
478
|
+
- **light(浅色)** - 较深的颜色,适合浅色终端背景
|
|
479
|
+
|
|
480
|
+
也可以通过配置命令切换:
|
|
481
|
+
|
|
482
|
+
```bash
|
|
483
|
+
pls config set theme light
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
## 🏷️ 命令别名
|
|
487
|
+
|
|
488
|
+
将常用的操作保存为别名,一键触发:
|
|
489
|
+
|
|
490
|
+
### 基本使用
|
|
491
|
+
|
|
492
|
+
```bash
|
|
493
|
+
# 添加简单别名
|
|
494
|
+
pls alias add disk "查看磁盘使用情况,按使用率排序"
|
|
495
|
+
pls alias add mem "查看内存使用最高的 10 个进程"
|
|
496
|
+
|
|
497
|
+
# 使用别名(两种格式都支持)
|
|
498
|
+
pls disk
|
|
499
|
+
pls @disk
|
|
500
|
+
|
|
501
|
+
# 查看所有别名
|
|
502
|
+
pls alias
|
|
503
|
+
pls alias list
|
|
504
|
+
|
|
505
|
+
# 删除别名
|
|
506
|
+
pls alias remove disk
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
### 参数模板
|
|
510
|
+
|
|
511
|
+
支持动态参数,让别名更灵活:
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
# 添加带参数的别名
|
|
515
|
+
pls alias add taillog "查看 {{file}} 的最后 {{lines:20}} 行日志"
|
|
516
|
+
|
|
517
|
+
# 使用时传参
|
|
518
|
+
pls taillog --file=/var/log/system.log # lines 使用默认值 20
|
|
519
|
+
pls taillog --file=/var/log/system.log --lines=50 # 自定义 lines
|
|
520
|
+
pls taillog file=/var/log/nginx.log lines=100 # 不带 -- 也可以
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
参数格式说明:
|
|
524
|
+
- `{{param}}` - 必填参数,不提供会报错
|
|
525
|
+
- `{{param:default}}` - 可选参数,有默认值
|
|
526
|
+
|
|
527
|
+
### 别名 + 额外描述
|
|
528
|
+
|
|
529
|
+
别名后可以追加额外的描述:
|
|
530
|
+
|
|
531
|
+
```bash
|
|
532
|
+
pls disk 显示详情 # 等同于 pls 查看磁盘使用情况,按使用率排序 显示详情
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
## 🚀 版本升级
|
|
536
|
+
|
|
537
|
+
### 自动更新提示
|
|
538
|
+
|
|
539
|
+
程序会每 24 小时检查一次新版本,发现更新时在命令结束后提示:
|
|
540
|
+
|
|
541
|
+
```
|
|
542
|
+
⚠ 发现新版本: 1.1.0 → 1.2.0,运行 pls upgrade 更新
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
### 升级命令
|
|
546
|
+
|
|
547
|
+
```bash
|
|
548
|
+
# 升级到最新版本
|
|
549
|
+
pls upgrade
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
升级方式:
|
|
553
|
+
- **二进制安装**(curl/irm):自动下载并替换
|
|
554
|
+
- **npm 安装**:提示使用 `npm update -g @yivan-lab/pretty-please`
|
|
555
|
+
|
|
292
556
|
## 🎯 命令参考
|
|
293
557
|
|
|
294
558
|
### 基础命令
|
|
@@ -326,6 +590,20 @@ pls hook
|
|
|
326
590
|
pls hook install
|
|
327
591
|
pls hook uninstall
|
|
328
592
|
pls hook status
|
|
593
|
+
|
|
594
|
+
# 主题
|
|
595
|
+
pls theme # 查看当前主题
|
|
596
|
+
pls theme list # 查看所有主题
|
|
597
|
+
pls theme <dark|light> # 切换主题
|
|
598
|
+
|
|
599
|
+
# 别名
|
|
600
|
+
pls alias # 查看所有别名
|
|
601
|
+
pls alias list # 同上
|
|
602
|
+
pls alias add <name> "<prompt>" # 添加别名
|
|
603
|
+
pls alias remove <name> # 删除别名
|
|
604
|
+
|
|
605
|
+
# 升级
|
|
606
|
+
pls upgrade # 升级到最新版本
|
|
329
607
|
```
|
|
330
608
|
|
|
331
609
|
## 🏗️ 技术架构
|
|
@@ -355,11 +633,15 @@ pretty-please/
|
|
|
355
633
|
│ ├── shell-hook.ts # Shell 集成
|
|
356
634
|
│ ├── builtin-detector.ts # Shell builtin 检测
|
|
357
635
|
│ ├── sysinfo.ts # 系统信息采集
|
|
636
|
+
│ ├── upgrade.ts # 版本升级模块
|
|
637
|
+
│ ├── alias.ts # 命令别名管理
|
|
358
638
|
│ ├── components/ # React Ink 组件
|
|
359
639
|
│ │ ├── MultiStepCommandGenerator.tsx
|
|
360
640
|
│ │ ├── Chat.tsx
|
|
361
641
|
│ │ ├── MarkdownDisplay.tsx
|
|
362
642
|
│ │ └── ...
|
|
643
|
+
│ ├── ui/
|
|
644
|
+
│ │ └── theme.ts # 主题系统
|
|
363
645
|
│ └── utils/
|
|
364
646
|
│ └── console.ts # 原生输出工具
|
|
365
647
|
├── package.json
|