yuangs 1.3.50 → 1.3.55
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 +159 -137
- package/dist/cli.js +142 -50
- package/dist/cli.js.map +1 -1
- package/dist/commands/handleAICommand.d.ts +2 -0
- package/dist/commands/handleAICommand.js +30 -4
- package/dist/commands/handleAICommand.js.map +1 -1
- package/dist/core/risk.js +12 -2
- package/dist/core/risk.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
# yuangs CLI
|
|
2
2
|
|
|
3
|
-
🎨 苑广山的个人命令行工具
|
|
3
|
+
🎨 苑广山的个人命令行工具
|
|
4
|
+
一个 **集工具启动器 + AI 助手 + 命令增强器** 于一体的 CLI。
|
|
5
|
+
|
|
6
|
+
> 设计理念:
|
|
7
|
+
> **AI 提供思路,人类掌控执行。**
|
|
8
|
+
> 快、顺手,但不过度“自动化”。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 你可以用 yuangs 做什么?
|
|
13
|
+
|
|
14
|
+
- 🚀 一条命令快速打开常用 Web / PWA 应用
|
|
15
|
+
- 🤖 在终端里直接使用 AI 问答、分析、总结
|
|
16
|
+
- 🧠 让 AI **帮你写命令**,而不是直接替你乱跑命令
|
|
17
|
+
- 🧩 把常用的复杂操作保存为快捷指令(Macros)
|
|
18
|
+
- 🔗 用管道把真实命令输出交给 AI 解释
|
|
19
|
+
|
|
20
|
+
yuangs 更像是一个**“增强型命令行外脑”**,而不是黑箱自动执行器。
|
|
21
|
+
|
|
22
|
+
---
|
|
4
23
|
|
|
5
24
|
## 安装
|
|
6
25
|
|
|
@@ -8,176 +27,212 @@
|
|
|
8
27
|
npm install -g yuangs
|
|
9
28
|
```
|
|
10
29
|
|
|
11
|
-
|
|
30
|
+
安装完成后可直接使用:
|
|
12
31
|
|
|
13
32
|
```bash
|
|
14
|
-
yuangs
|
|
15
|
-
yuangs dict # 打开英语词典
|
|
16
|
-
yuangs pong # 打开 Pong 游戏
|
|
17
|
-
yuangs ai "你的问题" # ✨ 向 AI 提问 (v1.1.0 新增)
|
|
18
|
-
yuangs list # 列出所有链接
|
|
19
|
-
yuangs help # 显示帮助
|
|
33
|
+
yuangs help
|
|
20
34
|
```
|
|
21
35
|
|
|
22
|
-
|
|
36
|
+
---
|
|
23
37
|
|
|
24
|
-
|
|
38
|
+
## 基本使用命令
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
yuangs shici # 打开古诗词 PWA
|
|
42
|
+
yuangs dict # 打开英语词典
|
|
43
|
+
yuangs pong # 打开 Pong 游戏
|
|
44
|
+
yuangs ai "你的问题" # ✨ 向 AI 提问
|
|
45
|
+
yuangs list # 列出所有应用/链接
|
|
46
|
+
yuangs help # 显示帮助
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## AI 功能(核心能力)
|
|
52
|
+
|
|
53
|
+
### ✅ 1️⃣ 直接提问(最安全、零副作用)
|
|
25
54
|
|
|
26
55
|
```bash
|
|
27
56
|
yuangs ai "李白是谁?"
|
|
28
57
|
```
|
|
29
58
|
|
|
30
|
-
|
|
59
|
+
- 仅进行问答
|
|
60
|
+
- 不生成系统命令
|
|
61
|
+
- 适合解释、学习、方案讨论
|
|
62
|
+
|
|
63
|
+
---
|
|
31
64
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
65
|
+
### ✅ 2️⃣ 指定模型
|
|
66
|
+
|
|
67
|
+
支持使用 `--model` / `-m`,也支持简写:
|
|
68
|
+
|
|
69
|
+
| 简写 | 实际模型 |
|
|
70
|
+
|----|----|
|
|
71
|
+
| `-p` | `gemini-pro-latest` |
|
|
72
|
+
| `-f` | `gemini-flash-latest` |
|
|
73
|
+
| `-l` | `gemini-flash-lite-latest` |
|
|
36
74
|
|
|
37
75
|
```bash
|
|
38
76
|
yuangs ai "用 Python 写个 Hello World" -p
|
|
39
|
-
# 等同于 --model gemini-pro-latest
|
|
40
77
|
```
|
|
41
78
|
|
|
42
|
-
|
|
79
|
+
---
|
|
43
80
|
|
|
44
|
-
|
|
81
|
+
### ✅ 3️⃣ 交互模式(连续对话)
|
|
45
82
|
|
|
46
83
|
```bash
|
|
47
84
|
yuangs ai
|
|
48
85
|
```
|
|
49
86
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
|
|
87
|
+
在交互模式中你可以:
|
|
88
|
+
|
|
89
|
+
- 连续提问,不必重复输入命令
|
|
90
|
+
- `/clear`:清空当前对话上下文
|
|
91
|
+
- `/history`:查看本次会话历史
|
|
92
|
+
- `exit` / `quit`:退出
|
|
93
|
+
|
|
94
|
+
适合 **长思路推理、一步步讨论问题**。
|
|
55
95
|
|
|
56
|
-
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### ✅ 4️⃣ 命令生成模式(`-e`)
|
|
99
|
+
|
|
100
|
+
让 AI **帮你写 Linux / macOS 命令**,但由你决定是否执行。
|
|
57
101
|
|
|
58
102
|
```bash
|
|
59
|
-
yuangs ai -e "查看当前目录下大于100M的文件"
|
|
60
|
-
# 1. 自动生成: > find . -type f -size +100M
|
|
61
|
-
# 2. 自动复制到剪贴板
|
|
62
|
-
# 3. 预填到下方,按回车即可执行
|
|
103
|
+
yuangs ai -e "查看当前目录下大于 100M 的文件"
|
|
63
104
|
```
|
|
64
105
|
|
|
65
|
-
|
|
106
|
+
流程说明:
|
|
107
|
+
|
|
108
|
+
1. AI 生成命令
|
|
109
|
+
`find . -type f -size +100M`
|
|
110
|
+
2. 自动复制到剪贴板
|
|
111
|
+
3. 预填到输入行
|
|
112
|
+
4. **你确认后才会执行**
|
|
113
|
+
|
|
114
|
+
👉 这是 **“命令辅助”**,不是黑箱自动执行。
|
|
66
115
|
|
|
67
|
-
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
### ✅ 5️⃣ 管道模式(Pipe Mode)
|
|
119
|
+
|
|
120
|
+
把真实命令输出交给 AI 分析、解释、总结:
|
|
68
121
|
|
|
69
122
|
```bash
|
|
70
123
|
cat error.log | yuangs ai "解释这个报错"
|
|
71
124
|
ls -la | yuangs ai "帮我总结这些文件"
|
|
72
125
|
```
|
|
73
126
|
|
|
74
|
-
|
|
127
|
+
非常适合:
|
|
128
|
+
- 看不懂的日志
|
|
129
|
+
- 太长的输出
|
|
130
|
+
- CI / build 报错分析
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### ✅ 6️⃣ 流式输出 + Markdown 渲染
|
|
75
135
|
|
|
76
|
-
|
|
136
|
+
- 默认流式输出(打字机效果)
|
|
137
|
+
- 自动渲染 Markdown
|
|
138
|
+
- 代码高亮 / 表格格式化
|
|
77
139
|
|
|
78
|
-
|
|
140
|
+
终端体验尽量对齐 ChatGPT 网页版。
|
|
79
141
|
|
|
80
|
-
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 快捷指令(Macros)
|
|
145
|
+
|
|
146
|
+
把常用但冗长的命令保存为一个名字。
|
|
147
|
+
|
|
148
|
+
### 创建快捷指令
|
|
81
149
|
|
|
82
150
|
```bash
|
|
83
|
-
# 创建快捷指令 (支持多行命令)
|
|
84
151
|
yuangs save deploy
|
|
85
|
-
#
|
|
86
|
-
#
|
|
152
|
+
# 输入:
|
|
153
|
+
# npm run build && git add . && git commit -m "deploy" && git push
|
|
154
|
+
```
|
|
87
155
|
|
|
88
|
-
|
|
156
|
+
### 执行快捷指令
|
|
157
|
+
|
|
158
|
+
```bash
|
|
89
159
|
yuangs run deploy
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 查看所有指令
|
|
90
163
|
|
|
91
|
-
|
|
164
|
+
```bash
|
|
92
165
|
yuangs macros
|
|
93
166
|
```
|
|
94
167
|
|
|
95
|
-
|
|
168
|
+
✅ 非常适合:
|
|
169
|
+
- 发布流程
|
|
170
|
+
- 项目初始化
|
|
171
|
+
- 重复性高但不想记的命令
|
|
96
172
|
|
|
97
|
-
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 配置管理
|
|
98
176
|
|
|
99
177
|
```bash
|
|
100
178
|
yuangs config defaultModel Assistant
|
|
101
179
|
yuangs config accountType pro
|
|
102
180
|
```
|
|
103
181
|
|
|
104
|
-
|
|
105
|
-
- `defaultModel`: 默认使用的 AI 模型 (默认为 `Assistant`)
|
|
106
|
-
- `aiProxyUrl`: 自定义 AI 接口地址
|
|
107
|
-
- `accountType`: 账户类型 (free/pro)
|
|
108
|
-
|
|
109
|
-
## 应用列表
|
|
182
|
+
常用配置项:
|
|
110
183
|
|
|
111
|
-
|
|
184
|
+
- `defaultModel`:默认 AI 模型
|
|
185
|
+
- `aiProxyUrl`:自定义 AI 接口
|
|
186
|
+
- `accountType`:`free` / `pro`
|
|
112
187
|
|
|
113
|
-
|
|
188
|
+
---
|
|
114
189
|
|
|
115
|
-
|
|
190
|
+
## 内置应用列表
|
|
116
191
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
192
|
+
```text
|
|
193
|
+
shici → https://wealth.want.biz/shici/index.html
|
|
194
|
+
dict → https://wealth.want.biz/pages/dict.html
|
|
195
|
+
pong → https://wealth.want.biz/pages/pong.html
|
|
196
|
+
```
|
|
122
197
|
|
|
123
|
-
|
|
198
|
+
---
|
|
124
199
|
|
|
125
|
-
|
|
200
|
+
## 自定义应用(v1.3.24+)
|
|
126
201
|
|
|
127
|
-
|
|
128
|
-
2. `.yuangs.json` - 项目级或用户主目录的 JSON 隐藏配置文件
|
|
129
|
-
3. `yuangs.config.yaml` - 项目级别的 YAML 配置文件
|
|
130
|
-
4. `yuangs.config.yml` - 项目级别的 YAML 配置文件
|
|
131
|
-
5. `.yuangs.yaml` - 项目级或用户主目录的 YAML 隐藏配置文件
|
|
132
|
-
6. `.yuangs.yml` - 项目级或用户主目录的 YAML 隐藏配置文件
|
|
133
|
-
7. `~/.yuangs.json` - 全局用户 JSON 配置文件
|
|
134
|
-
8. `~/.yuangs.yaml` - 全局用户 YAML 配置文件
|
|
135
|
-
9. `~/.yuangs.yml` - 全局用户 YAML 配置文件
|
|
202
|
+
无需改代码,只需配置文件。
|
|
136
203
|
|
|
137
|
-
|
|
204
|
+
### 示例 `.yuangs.json`
|
|
138
205
|
|
|
139
206
|
```json
|
|
140
207
|
{
|
|
141
|
-
"shici": "https://wealth.want.biz/shici/index.html",
|
|
142
|
-
"dict": "https://wealth.want.biz/pages/dict.html",
|
|
143
|
-
"pong": "https://wealth.want.biz/pages/pong.html",
|
|
144
208
|
"github": "https://github.com",
|
|
145
209
|
"calendar": "https://calendar.google.com",
|
|
146
210
|
"mail": "https://mail.google.com"
|
|
147
211
|
}
|
|
148
212
|
```
|
|
149
213
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
配置文件按以下优先级顺序查找(高到低):
|
|
153
|
-
|
|
154
|
-
1. 当前工作目录下的 `yuangs.config.json`
|
|
155
|
-
2. 当前工作目录下的 `.yuangs.json`
|
|
156
|
-
3. 用户主目录下的 `.yuangs.json`
|
|
157
|
-
4. 项目目录下的 `yuangs.config.json`
|
|
158
|
-
5. 项目目录下的 `.yuangs.json`
|
|
159
|
-
6. 如果没有配置文件,则使用默认应用列表
|
|
160
|
-
|
|
161
|
-
### 使用自定义应用
|
|
162
|
-
|
|
163
|
-
创建配置文件后,您可以使用任何定义的应用名称作为命令:
|
|
214
|
+
然后直接使用:
|
|
164
215
|
|
|
165
216
|
```bash
|
|
166
|
-
yuangs github
|
|
167
|
-
yuangs calendar
|
|
168
|
-
yuangs mail
|
|
217
|
+
yuangs github
|
|
218
|
+
yuangs calendar
|
|
219
|
+
yuangs mail
|
|
169
220
|
```
|
|
170
221
|
|
|
171
|
-
|
|
222
|
+
支持 JSON / YAML,多级优先级(项目级 / 用户级)。
|
|
223
|
+
|
|
224
|
+
---
|
|
172
225
|
|
|
173
|
-
##
|
|
226
|
+
## 近期主要更新
|
|
174
227
|
|
|
175
228
|
### v1.3.38 (2026-01-16)
|
|
176
|
-
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
229
|
+
|
|
230
|
+
- ✅ 快捷指令系统(save / run / macros)
|
|
231
|
+
- ✅ 管道模式(Pipe)
|
|
232
|
+
- ✅ AI 流式输出 + Markdown 渲染
|
|
233
|
+
- ✅ `config` 命令
|
|
234
|
+
- ✅ 命令生成模式增强(剪贴板 + 预填)
|
|
235
|
+
|
|
181
236
|
|
|
182
237
|
### v1.3.22 (2025-11-30)
|
|
183
238
|
- **新增** AI 命令支持 `-p` `-f` `-l` 简写,快速选择gemini默认模型
|
|
@@ -194,63 +249,30 @@ yuangs mail # 打开邮箱
|
|
|
194
249
|
- **新增** `ai` 命令:集成 AI 问答功能 (`yuangs ai "你的问题"`)。
|
|
195
250
|
- **新增** `help` 命令显示当前版本号:方便用户了解工具版本。
|
|
196
251
|
- **优化** AI 请求加载动画:在请求过程中显示加载动画和已耗时秒数,并在请求结束后显示总耗时。
|
|
252
|
+
---
|
|
197
253
|
|
|
198
254
|
## 自动发布(CI/CD)
|
|
199
255
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
- 自动生成对应的 Git tag(如 `v1.1.6`)并推送回仓库;
|
|
205
|
-
- 自动运行 `npm publish --provenance` 发布到 npm。
|
|
206
|
-
|
|
207
|
-
这样日常开发只需要专注写代码和推送到 `main`,发布和版本管理都由 CI 自动完成。
|
|
208
|
-
本地开发前务必先:`git pull`,确保本地代码与远程仓库一致。
|
|
256
|
+
- push 到 `main`:
|
|
257
|
+
- 自动 bump patch 版本
|
|
258
|
+
- 自动打 tag
|
|
259
|
+
- 自动 `npm publish --provenance`
|
|
209
260
|
|
|
210
|
-
|
|
261
|
+
✅ 日常开发只需关注代码本身。
|
|
211
262
|
|
|
212
|
-
|
|
263
|
+
---
|
|
213
264
|
|
|
214
|
-
|
|
265
|
+
## 开发与构建
|
|
215
266
|
|
|
216
267
|
```bash
|
|
217
|
-
# 安装依赖
|
|
218
268
|
npm install
|
|
219
|
-
|
|
220
|
-
# 源码运行 (使用 ts-node)
|
|
221
269
|
npm run dev -- ai "你好"
|
|
222
|
-
|
|
223
|
-
# 执行所有测试
|
|
224
|
-
npm test
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
### 构建项目
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
# 清理并构建 (输出到 dist 目录)
|
|
231
|
-
rm -rf dist
|
|
232
270
|
npm run build
|
|
233
271
|
```
|
|
234
272
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
```bash
|
|
238
|
-
# 将当前目录链接到全局命令
|
|
239
|
-
npm link
|
|
240
|
-
|
|
241
|
-
# 然后就可以在任何地方直接使用 yuangs 了
|
|
242
|
-
yuangs --help
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### 发布前检查
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
# 模拟打包查看内容
|
|
249
|
-
npm pack
|
|
250
|
-
tar -tf yuangs-*.tgz
|
|
251
|
-
```
|
|
273
|
+
---
|
|
252
274
|
|
|
253
275
|
## 维护者
|
|
254
276
|
|
|
255
|
-
@yuanguangshan
|
|
256
277
|
|
|
278
|
+
@yuanguangshan
|
package/dist/cli.js
CHANGED
|
@@ -17,17 +17,76 @@ const packageJson = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__d
|
|
|
17
17
|
const version = packageJson.version;
|
|
18
18
|
const args = process.argv.slice(2);
|
|
19
19
|
const command = args[0];
|
|
20
|
+
// Parse flags from args
|
|
21
|
+
const hasFlag = (flags) => args.some(a => flags.includes(a));
|
|
22
|
+
const isExecMode = hasFlag(['-e']);
|
|
23
|
+
const isDryRun = hasFlag(['--dry-run', '--dry']);
|
|
24
|
+
const isAutoYes = hasFlag(['--yes', '-y']);
|
|
25
|
+
const isLastHistory = hasFlag(['--last']);
|
|
20
26
|
function printHelp() {
|
|
21
|
-
console.log(chalk_1.default.bold.cyan('\
|
|
22
|
-
console.log(chalk_1.default.
|
|
23
|
-
console.log(chalk_1.default.white('
|
|
24
|
-
console.log(chalk_1.default.
|
|
25
|
-
console.log(
|
|
26
|
-
console.log(
|
|
27
|
-
console.log(
|
|
28
|
-
console.log(
|
|
29
|
-
console.log(
|
|
30
|
-
console.log(
|
|
27
|
+
console.log(chalk_1.default.bold.cyan('\nyuangs CLI — Personal Command Line Toolkit'));
|
|
28
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
29
|
+
console.log(chalk_1.default.white('A lightweight CLI that combines:'));
|
|
30
|
+
console.log(`• ${chalk_1.default.blue('App launcher')}`);
|
|
31
|
+
console.log(`• ${chalk_1.default.green('AI assistant')}`);
|
|
32
|
+
console.log(`• ${chalk_1.default.yellow('Command helper')}\n`);
|
|
33
|
+
console.log(chalk_1.default.italic.gray('Design philosophy:'));
|
|
34
|
+
console.log(chalk_1.default.italic.gray('AI suggests, you decide.\n'));
|
|
35
|
+
console.log(chalk_1.default.bold('Usage:'));
|
|
36
|
+
console.log(chalk_1.default.white(` yuangs <command> [options]\n`));
|
|
37
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
38
|
+
console.log(chalk_1.default.bold('Core Commands\n'));
|
|
39
|
+
console.log(` ${chalk_1.default.green('shici'.padEnd(16))} Open Chinese poetry PWA`);
|
|
40
|
+
console.log(` ${chalk_1.default.green('dict'.padEnd(16))} Open English dictionary`);
|
|
41
|
+
console.log(` ${chalk_1.default.green('pong'.padEnd(16))} Open Pong game\n`);
|
|
42
|
+
console.log(` ${chalk_1.default.green('ai'.padEnd(16))} Ask AI questions / analyze output`);
|
|
43
|
+
console.log(` ${chalk_1.default.green('ai -e'.padEnd(16))} Let AI generate shell commands (manual confirm)\n`);
|
|
44
|
+
console.log(` ${chalk_1.default.green('list'.padEnd(16))} List all available apps`);
|
|
45
|
+
console.log(` ${chalk_1.default.green('help'.padEnd(16))} Show this help message\n`);
|
|
46
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
47
|
+
console.log(chalk_1.default.bold('AI Command\n'));
|
|
48
|
+
console.log(` ${chalk_1.default.white('yuangs ai "your question"')}`);
|
|
49
|
+
console.log(chalk_1.default.gray(' Ask AI directly (safe, no side effects)\n'));
|
|
50
|
+
console.log(` ${chalk_1.default.white('yuangs ai')}`);
|
|
51
|
+
console.log(chalk_1.default.gray(' Interactive chat mode\n'));
|
|
52
|
+
console.log(` ${chalk_1.default.white('yuangs ai -e "task description"')}`);
|
|
53
|
+
console.log(chalk_1.default.gray(' Generate shell command and prefill for execution'));
|
|
54
|
+
console.log(chalk_1.default.gray(' (command is NOT executed automatically)\n'));
|
|
55
|
+
console.log(` ${chalk_1.default.white('cat file | yuangs ai "explain this"')}`);
|
|
56
|
+
console.log(chalk_1.default.gray(' Pipe command output to AI for analysis\n'));
|
|
57
|
+
console.log(chalk_1.default.bold('Options:'));
|
|
58
|
+
console.log(` ${chalk_1.default.gray('-p'.padEnd(16))} Use gemini-pro-latest`);
|
|
59
|
+
console.log(` ${chalk_1.default.gray('-f'.padEnd(16))} Use gemini-flash-latest`);
|
|
60
|
+
console.log(` ${chalk_1.default.gray('-l'.padEnd(16))} Use gemini-flash-lite-latest`);
|
|
61
|
+
console.log(` ${chalk_1.default.gray('-m, --model'.padEnd(16))} Specify model explicitly\n`);
|
|
62
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
63
|
+
console.log(chalk_1.default.bold('Macros (Shortcuts)\n'));
|
|
64
|
+
console.log(` ${chalk_1.default.white('yuangs save <name>')} Save a complex command as a macro`);
|
|
65
|
+
console.log(` ${chalk_1.default.white('yuangs run <name>')} Run a saved macro`);
|
|
66
|
+
console.log(` ${chalk_1.default.white('yuangs macros')} List all saved macros\n`);
|
|
67
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
68
|
+
console.log(chalk_1.default.bold('Configuration\n'));
|
|
69
|
+
console.log(` ${chalk_1.default.white('yuangs config <key> <value>')} Update configuration\n`);
|
|
70
|
+
console.log(chalk_1.default.bold('Common keys:'));
|
|
71
|
+
console.log(` ${chalk_1.default.gray('defaultModel'.padEnd(16))} Default AI model`);
|
|
72
|
+
console.log(` ${chalk_1.default.gray('aiProxyUrl'.padEnd(16))} Custom AI endpoint`);
|
|
73
|
+
console.log(` ${chalk_1.default.gray('accountType'.padEnd(16))} free | pro\n`);
|
|
74
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
75
|
+
console.log(chalk_1.default.bold('Custom Apps\n'));
|
|
76
|
+
console.log(chalk_1.default.gray(' Define your own apps in:'));
|
|
77
|
+
console.log(chalk_1.default.gray(' .yuangs.json, yuangs.config.json, ~/.yuangs.json\n'));
|
|
78
|
+
console.log(chalk_1.default.gray(' Then run:'));
|
|
79
|
+
console.log(` ${chalk_1.default.white('yuangs <appName>')}\n`);
|
|
80
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
81
|
+
console.log(chalk_1.default.bold('Examples\n'));
|
|
82
|
+
console.log(` ${chalk_1.default.gray('yuangs ai "Who is Li Bai?"')}`);
|
|
83
|
+
console.log(` ${chalk_1.default.gray('yuangs ai -e "find files larger than 100M"')}`);
|
|
84
|
+
console.log(` ${chalk_1.default.gray('ls -la | yuangs ai "summarize these files"')}`);
|
|
85
|
+
console.log(` ${chalk_1.default.gray('yuangs save deploy')}`);
|
|
86
|
+
console.log(` ${chalk_1.default.gray('yuangs run deploy')}\n`);
|
|
87
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
88
|
+
console.log(`${chalk_1.default.bold('Version:')} ${chalk_1.default.yellow(version)}`);
|
|
89
|
+
console.log(`${chalk_1.default.bold('Repository:')} ${chalk_1.default.blue('https://github.com/yuanguangshan/yuangs')}\n`);
|
|
31
90
|
}
|
|
32
91
|
async function readStdin() {
|
|
33
92
|
if (process.stdin.isTTY)
|
|
@@ -47,14 +106,18 @@ async function main() {
|
|
|
47
106
|
switch (command) {
|
|
48
107
|
case 'ai':
|
|
49
108
|
const aiArgs = args.slice(1);
|
|
50
|
-
|
|
51
|
-
const questionParts = aiArgs.filter(a =>
|
|
109
|
+
// Cleanup args for question extraction: remove flags
|
|
110
|
+
const questionParts = aiArgs.filter(a => !['-e', '--dry-run', '--dry', '--yes', '-y'].includes(a));
|
|
52
111
|
let question = questionParts.join(' ').trim();
|
|
53
112
|
if (stdinData) {
|
|
54
113
|
question = `以下是输入内容:\n\n${stdinData}\n\n我的问题是:${question || '分析以上内容'}`;
|
|
55
114
|
}
|
|
56
115
|
if (isExecMode) {
|
|
57
|
-
await (0, handleAICommand_1.handleAICommand)(question, {
|
|
116
|
+
await (0, handleAICommand_1.handleAICommand)(question, {
|
|
117
|
+
execute: false, // Default is false, handleAICommand internals decide based on prompt confirmation or --yes
|
|
118
|
+
dryRun: isDryRun,
|
|
119
|
+
autoYes: isAutoYes
|
|
120
|
+
});
|
|
58
121
|
}
|
|
59
122
|
else {
|
|
60
123
|
await (0, handleAIChat_1.handleAIChat)(question || null);
|
|
@@ -77,52 +140,81 @@ async function main() {
|
|
|
77
140
|
const history = (0, history_1.getCommandHistory)();
|
|
78
141
|
if (history.length === 0) {
|
|
79
142
|
console.log(chalk_1.default.gray('暂无命令历史\n'));
|
|
143
|
+
break;
|
|
80
144
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const rlHistory = require('node:readline/promises').createInterface({
|
|
145
|
+
if (isLastHistory) {
|
|
146
|
+
const lastItem = history[0]; // history is unshift-ed, so 0 is latest
|
|
147
|
+
console.log(chalk_1.default.bold.cyan('\n📋 上一次执行的命令:\n'));
|
|
148
|
+
console.log(chalk_1.default.white(`${lastItem.command}`));
|
|
149
|
+
console.log(chalk_1.default.gray(`问题: ${lastItem.question}\n`));
|
|
150
|
+
const rlLast = require('node:readline/promises').createInterface({
|
|
88
151
|
input: process.stdin,
|
|
89
152
|
output: process.stdout
|
|
90
153
|
});
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
if (
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
154
|
+
const confirmLast = await rlLast.question(chalk_1.default.cyan('确认再次执行? (y/N): '));
|
|
155
|
+
rlLast.close();
|
|
156
|
+
if (confirmLast.toLowerCase() === 'y' || confirmLast.toLowerCase() === 'yes') {
|
|
157
|
+
const { exec } = require('child_process');
|
|
158
|
+
console.log(chalk_1.default.bold.cyan('执行中...\n'));
|
|
159
|
+
exec(lastItem.command, (error, stdout, stderr) => {
|
|
160
|
+
if (stdout)
|
|
161
|
+
console.log(stdout);
|
|
162
|
+
if (stderr)
|
|
163
|
+
console.error(chalk_1.default.red(stderr));
|
|
164
|
+
if (error)
|
|
165
|
+
console.error(chalk_1.default.red(error.message));
|
|
166
|
+
process.exit(0);
|
|
167
|
+
});
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
console.log(chalk_1.default.gray('已取消执行'));
|
|
172
|
+
}
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
console.log(chalk_1.default.bold.cyan('\n📋 命令历史\n'));
|
|
176
|
+
history.forEach((item, index) => {
|
|
177
|
+
console.log(`${index + 1}. ${chalk_1.default.white(item.command)}`);
|
|
178
|
+
console.log(chalk_1.default.gray(` 问题: ${item.question}\n`));
|
|
179
|
+
});
|
|
180
|
+
const rlHistory = require('node:readline/promises').createInterface({
|
|
181
|
+
input: process.stdin,
|
|
182
|
+
output: process.stdout
|
|
183
|
+
});
|
|
184
|
+
const indexInput = await rlHistory.question(chalk_1.default.cyan('输入序号选择命令 (直接回车取消): '));
|
|
185
|
+
rlHistory.close();
|
|
186
|
+
if (indexInput.trim()) {
|
|
187
|
+
const index = parseInt(indexInput) - 1;
|
|
188
|
+
if (index >= 0 && index < history.length) {
|
|
189
|
+
const targetCommand = history[index].command;
|
|
190
|
+
console.log(chalk_1.default.yellow(`\n即将执行: ${targetCommand}\n`));
|
|
191
|
+
const rlConfirm = require('node:readline/promises').createInterface({
|
|
192
|
+
input: process.stdin,
|
|
193
|
+
output: process.stdout
|
|
194
|
+
});
|
|
195
|
+
const confirm = await rlConfirm.question(chalk_1.default.cyan('确认执行? (y/N): '));
|
|
196
|
+
rlConfirm.close();
|
|
197
|
+
if (confirm.toLowerCase() === 'y' || confirm.toLowerCase() === 'yes') {
|
|
198
|
+
const { exec } = require('child_process');
|
|
199
|
+
console.log(chalk_1.default.bold.cyan('执行中...\n'));
|
|
200
|
+
exec(targetCommand, (error, stdout, stderr) => {
|
|
201
|
+
if (stdout)
|
|
202
|
+
console.log(stdout);
|
|
203
|
+
if (stderr)
|
|
204
|
+
console.error(chalk_1.default.red(stderr));
|
|
205
|
+
if (error)
|
|
206
|
+
console.error(chalk_1.default.red(error.message));
|
|
207
|
+
process.exit(0);
|
|
101
208
|
});
|
|
102
|
-
|
|
103
|
-
rlConfirm.close();
|
|
104
|
-
if (confirm.toLowerCase() === 'y' || confirm.toLowerCase() === 'yes') {
|
|
105
|
-
const { exec } = require('child_process');
|
|
106
|
-
console.log(chalk_1.default.bold.cyan('执行中...\n'));
|
|
107
|
-
exec(targetCommand, (error, stdout, stderr) => {
|
|
108
|
-
if (stdout)
|
|
109
|
-
console.log(stdout);
|
|
110
|
-
if (stderr)
|
|
111
|
-
console.error(chalk_1.default.red(stderr));
|
|
112
|
-
if (error)
|
|
113
|
-
console.error(chalk_1.default.red(error.message));
|
|
114
|
-
process.exit(0);
|
|
115
|
-
});
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
console.log(chalk_1.default.gray('已取消执行'));
|
|
120
|
-
}
|
|
209
|
+
return;
|
|
121
210
|
}
|
|
122
211
|
else {
|
|
123
|
-
console.log(chalk_1.default.
|
|
212
|
+
console.log(chalk_1.default.gray('已取消执行'));
|
|
124
213
|
}
|
|
125
214
|
}
|
|
215
|
+
else {
|
|
216
|
+
console.log(chalk_1.default.red('无效的序号'));
|
|
217
|
+
}
|
|
126
218
|
}
|
|
127
219
|
break;
|
|
128
220
|
case 'config':
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,17 +14,25 @@ const risk_1 = require("../core/risk");
|
|
|
14
14
|
const autofix_1 = require("../core/autofix");
|
|
15
15
|
const confirm_1 = require("../utils/confirm");
|
|
16
16
|
const history_1 = require("../utils/history");
|
|
17
|
+
function validateAIPlan(obj) {
|
|
18
|
+
return (typeof obj === 'object' &&
|
|
19
|
+
obj !== null &&
|
|
20
|
+
typeof obj.plan === 'string' &&
|
|
21
|
+
typeof obj.command === 'string' &&
|
|
22
|
+
['low', 'medium', 'high'].includes(obj.risk));
|
|
23
|
+
}
|
|
17
24
|
async function handleAICommand(userInput, options) {
|
|
18
25
|
const os = (0, os_1.getOSProfile)();
|
|
19
26
|
const spinner = (0, ora_1.default)(chalk_1.default.cyan('🧠 AI 正在规划中...')).start();
|
|
20
27
|
try {
|
|
21
28
|
// 1️⃣ 让 AI 出计划
|
|
29
|
+
// ... (AI call logic remains same)
|
|
22
30
|
const prompt = (0, prompt_1.buildCommandPrompt)(userInput, os);
|
|
23
31
|
const raw = await (0, client_1.askAI)(prompt, options.model);
|
|
24
32
|
spinner.stop();
|
|
25
33
|
let plan;
|
|
26
34
|
try {
|
|
27
|
-
// Extract JSON
|
|
35
|
+
// Extract JSON logic
|
|
28
36
|
let jsonContent = raw;
|
|
29
37
|
if (raw.includes('```json')) {
|
|
30
38
|
jsonContent = raw.split('```json')[1].split('```')[0].trim();
|
|
@@ -32,7 +40,13 @@ async function handleAICommand(userInput, options) {
|
|
|
32
40
|
else if (raw.includes('```')) {
|
|
33
41
|
jsonContent = raw.split('```')[1].split('```')[0].trim();
|
|
34
42
|
}
|
|
35
|
-
|
|
43
|
+
const parsed = JSON.parse(jsonContent);
|
|
44
|
+
if (!validateAIPlan(parsed)) {
|
|
45
|
+
console.log(chalk_1.default.red('\n❌ AI 返回结构非法,已拒绝执行'));
|
|
46
|
+
console.log(chalk_1.default.gray('AI Output:'), raw);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
plan = parsed;
|
|
36
50
|
}
|
|
37
51
|
catch {
|
|
38
52
|
console.log(chalk_1.default.red('\n❌ AI 输出不是合法 JSON:'));
|
|
@@ -45,9 +59,21 @@ async function handleAICommand(userInput, options) {
|
|
|
45
59
|
console.log(chalk_1.default.bold.cyan('\n🧠 计划: ') + plan.plan);
|
|
46
60
|
console.log(chalk_1.default.bold.green('💻 命令: ') + chalk_1.default.yellow(plan.command));
|
|
47
61
|
const riskColor = finalRisk === 'high' ? chalk_1.default.red : (finalRisk === 'medium' ? chalk_1.default.yellow : chalk_1.default.green);
|
|
48
|
-
console.log(chalk_1.default.bold('⚠️
|
|
62
|
+
console.log(chalk_1.default.bold('⚠️ 风险判断: ') + riskColor(finalRisk.toUpperCase()));
|
|
63
|
+
// Check Dry Run
|
|
64
|
+
if (options.dryRun) {
|
|
65
|
+
console.log(chalk_1.default.gray('\n[Dry Run] 仅模拟,不执行命令。'));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
49
68
|
// 4️⃣ 确认
|
|
50
|
-
|
|
69
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
70
|
+
console.log(chalk_1.default.yellow('⚠️ 注意: 以上命令由 AI 生成,请在执行前仔细检查。'));
|
|
71
|
+
console.log(chalk_1.default.gray(' AI 可能会犯错,安全由您掌控。'));
|
|
72
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
73
|
+
let shouldExecute = options.execute || options.autoYes;
|
|
74
|
+
// If high risk, maybe force confirm even with autoYes?
|
|
75
|
+
// For now, let's respect autoYes as the "I know what I'm doing" flag.
|
|
76
|
+
// But if risk is high and NOT autoYes, we definitely ask.
|
|
51
77
|
if (!shouldExecute) {
|
|
52
78
|
shouldExecute = await (0, confirm_1.confirm)('是否执行该命令?');
|
|
53
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleAICommand.js","sourceRoot":"","sources":["../../src/commands/handleAICommand.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"handleAICommand.js","sourceRoot":"","sources":["../../src/commands/handleAICommand.ts"],"names":[],"mappings":"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"}
|
package/dist/core/risk.js
CHANGED
|
@@ -2,8 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assessRisk = assessRisk;
|
|
4
4
|
function assessRisk(command, aiRisk) {
|
|
5
|
-
const
|
|
6
|
-
|
|
5
|
+
const HIGH_RISK_PATTERNS = [
|
|
6
|
+
/\brm\b/i,
|
|
7
|
+
/\bsudo\b/i,
|
|
8
|
+
/\bmv\b/i,
|
|
9
|
+
/\bdd\b/i,
|
|
10
|
+
/\bchmod\b/i,
|
|
11
|
+
/\bchown\b/i,
|
|
12
|
+
/>\s*\/dev\//,
|
|
13
|
+
/:\(\)\s*\{.*\}/, // Fork bomb
|
|
14
|
+
/\bmkfs\b/i,
|
|
15
|
+
];
|
|
16
|
+
const hasHighRisk = HIGH_RISK_PATTERNS.some(pattern => pattern.test(command));
|
|
7
17
|
if (hasHighRisk)
|
|
8
18
|
return 'high';
|
|
9
19
|
return aiRisk;
|
package/dist/core/risk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"risk.js","sourceRoot":"","sources":["../../src/core/risk.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"risk.js","sourceRoot":"","sources":["../../src/core/risk.ts"],"names":[],"mappings":";;AAAA,gCAiBC;AAjBD,SAAgB,UAAU,CAAC,OAAe,EAAE,MAAiC;IACzE,MAAM,kBAAkB,GAAG;QACvB,SAAS;QACT,WAAW;QACX,SAAS;QACT,SAAS;QACT,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,gBAAgB,EAAE,YAAY;QAC9B,WAAW;KACd,CAAC;IAEF,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9E,IAAI,WAAW;QAAE,OAAO,MAAM,CAAC;IAC/B,OAAO,MAAM,CAAC;AAClB,CAAC"}
|