yuangs 1.3.66 → 1.3.68
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 +38 -0
- package/dist/commands/handleAIChat.js +106 -1
- package/dist/commands/handleAIChat.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -93,9 +93,41 @@ yuangs ai
|
|
|
93
93
|
- `/clear`:清空当前对话上下文
|
|
94
94
|
- `/history`:查看本次会话历史
|
|
95
95
|
- `exit` / `quit`:退出
|
|
96
|
+
- `@`:显示当前目录文件列表并选择
|
|
97
|
+
- `# 目录路径`:读取指定目录下所有文件内容
|
|
96
98
|
|
|
97
99
|
适合 **长思路推理、一步步讨论问题**。
|
|
98
100
|
|
|
101
|
+
#### 文件引用功能(v1.3.67+)
|
|
102
|
+
|
|
103
|
+
**使用 `@` 快速选择文件**:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
你:@
|
|
107
|
+
📁 当前目录文件列表:
|
|
108
|
+
[ 1] 📁 src
|
|
109
|
+
[ 2] 📄 package.json
|
|
110
|
+
[ 3] 📄 README.md
|
|
111
|
+
[ 4] 📁 test
|
|
112
|
+
[ 5] 📄 tsconfig.json
|
|
113
|
+
|
|
114
|
+
请选择文件 (输入序号,或按 Enter 返回): 3
|
|
115
|
+
✓ 已选择: README.md
|
|
116
|
+
|
|
117
|
+
你:README.md 解释一下这个项目的功能
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**使用 `#` 读取整个目录**:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
你:# src/commands 分析这些命令的功能
|
|
124
|
+
✓ 已读取 3 个文件
|
|
125
|
+
|
|
126
|
+
# AI 会看到 src/commands 下所有文件的内容并进行分析
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
非常适合代码审查、项目分析等场景。
|
|
130
|
+
|
|
99
131
|
---
|
|
100
132
|
|
|
101
133
|
### ✅ 4️⃣ 命令生成模式(`-e`)
|
|
@@ -242,6 +274,12 @@ yuangs mail
|
|
|
242
274
|
|
|
243
275
|
## 近期主要更新
|
|
244
276
|
|
|
277
|
+
### v1.3.67 (2026-01-17)
|
|
278
|
+
|
|
279
|
+
- ✅ 新增 `@` 符号:快速选择当前目录文件
|
|
280
|
+
- ✅ 新增 `#` 符号:读取指定目录下所有文件内容
|
|
281
|
+
- ✅ 交互模式增强:支持文件和目录引用
|
|
282
|
+
|
|
245
283
|
### v1.3.66 (2026-01-17)
|
|
246
284
|
|
|
247
285
|
- ✅ 管道模式省略 `ai` 关键字:`cat file | yuangs "question"`
|
|
@@ -43,6 +43,90 @@ const readline_1 = __importDefault(require("readline"));
|
|
|
43
43
|
const client_1 = require("../ai/client");
|
|
44
44
|
const marked = __importStar(require("marked"));
|
|
45
45
|
const marked_terminal_1 = __importDefault(require("marked-terminal"));
|
|
46
|
+
const fs_1 = __importDefault(require("fs"));
|
|
47
|
+
const path_1 = __importDefault(require("path"));
|
|
48
|
+
const fileReader_1 = require("../core/fileReader");
|
|
49
|
+
const child_process_1 = require("child_process");
|
|
50
|
+
const util_1 = require("util");
|
|
51
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
52
|
+
async function showFileSelector(rl) {
|
|
53
|
+
return new Promise((resolve) => {
|
|
54
|
+
try {
|
|
55
|
+
const currentDir = process.cwd();
|
|
56
|
+
const files = fs_1.default.readdirSync(currentDir);
|
|
57
|
+
if (files.length === 0) {
|
|
58
|
+
console.log(chalk_1.default.yellow('当前目录为空\n'));
|
|
59
|
+
resolve(null);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
console.log(chalk_1.default.bold.cyan('📁 当前目录文件列表:\n'));
|
|
63
|
+
files.forEach((file, index) => {
|
|
64
|
+
const fullPath = path_1.default.join(currentDir, file);
|
|
65
|
+
const isDir = fs_1.default.statSync(fullPath).isDirectory();
|
|
66
|
+
const icon = isDir ? chalk_1.default.cyan('📁') : chalk_1.default.green('📄');
|
|
67
|
+
const padding = (index + 1).toString().padStart(2);
|
|
68
|
+
console.log(` [${padding}] ${icon} ${file}`);
|
|
69
|
+
});
|
|
70
|
+
console.log();
|
|
71
|
+
rl.question(chalk_1.default.cyan('请选择文件 (输入序号,或按 Enter 返回): '), (choice) => {
|
|
72
|
+
if (choice.trim() === '') {
|
|
73
|
+
console.log(chalk_1.default.gray('已取消选择\n'));
|
|
74
|
+
resolve(null);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const index = parseInt(choice) - 1;
|
|
78
|
+
if (isNaN(index) || index < 0 || index >= files.length) {
|
|
79
|
+
console.log(chalk_1.default.red('无效的序号\n'));
|
|
80
|
+
resolve(null);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const selectedFile = files[index];
|
|
84
|
+
console.log(chalk_1.default.green(`✓ 已选择: ${selectedFile}\n`));
|
|
85
|
+
resolve(selectedFile);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error(chalk_1.default.red(`读取目录失败: ${error}\n`));
|
|
90
|
+
resolve(null);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async function handleDirectoryReference(input) {
|
|
95
|
+
const match = input.match(/^#\s*(.+?)\s*(?:\n(.*))?$/s);
|
|
96
|
+
if (!match) {
|
|
97
|
+
console.log(chalk_1.default.yellow('格式错误,正确用法: # 目录路径 [问题]\n'));
|
|
98
|
+
return input;
|
|
99
|
+
}
|
|
100
|
+
const dirPath = match[1].trim();
|
|
101
|
+
const question = match[2] ? match[2].trim() : '请分析这个目录下的文件';
|
|
102
|
+
const fullPath = path_1.default.resolve(dirPath);
|
|
103
|
+
if (!fs_1.default.existsSync(fullPath) || !fs_1.default.statSync(fullPath).isDirectory()) {
|
|
104
|
+
console.log(chalk_1.default.red(`错误: 目录 "${dirPath}" 不存在或不是一个目录\n`));
|
|
105
|
+
return question;
|
|
106
|
+
}
|
|
107
|
+
const spinner = (0, ora_1.default)(chalk_1.default.cyan('正在读取文件...')).start();
|
|
108
|
+
try {
|
|
109
|
+
const findCommand = process.platform === 'darwin' || process.platform === 'linux'
|
|
110
|
+
? `find "${fullPath}" -type f`
|
|
111
|
+
: `dir /s /b "${fullPath}"`;
|
|
112
|
+
const { stdout } = await execAsync(findCommand);
|
|
113
|
+
const filePaths = stdout.trim().split('\n').filter(f => f);
|
|
114
|
+
spinner.stop();
|
|
115
|
+
if (filePaths.length === 0) {
|
|
116
|
+
console.log(chalk_1.default.yellow(`目录 "${dirPath}" 下没有文件\n`));
|
|
117
|
+
return question;
|
|
118
|
+
}
|
|
119
|
+
const contentMap = (0, fileReader_1.readFilesContent)(filePaths);
|
|
120
|
+
const prompt = (0, fileReader_1.buildPromptWithFileContent)(`目录: ${dirPath}\n找到 ${filePaths.length} 个文件`, filePaths.map(p => path_1.default.relative(process.cwd(), p)), contentMap, question);
|
|
121
|
+
console.log(chalk_1.default.green(`✓ 已读取 ${contentMap.size} 个文件\n`));
|
|
122
|
+
return prompt;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
spinner.stop();
|
|
126
|
+
console.error(chalk_1.default.red(`读取目录失败: ${error}\n`));
|
|
127
|
+
return question;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
46
130
|
async function handleAIChat(initialQuestion, model) {
|
|
47
131
|
if (initialQuestion) {
|
|
48
132
|
// 如果有初始问题,直接回答并退出,不进入交互模式
|
|
@@ -68,7 +152,28 @@ async function handleAIChat(initialQuestion, model) {
|
|
|
68
152
|
while (true) {
|
|
69
153
|
const input = await ask(chalk_1.default.green('你:'));
|
|
70
154
|
const trimmed = input.trim();
|
|
71
|
-
|
|
155
|
+
if (trimmed === '@') {
|
|
156
|
+
const selectedFile = await showFileSelector(rl);
|
|
157
|
+
if (selectedFile) {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (trimmed.startsWith('#')) {
|
|
163
|
+
rl.pause();
|
|
164
|
+
try {
|
|
165
|
+
const processedInput = await handleDirectoryReference(trimmed);
|
|
166
|
+
await askOnceStream(processedInput, model);
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
170
|
+
console.error(chalk_1.default.red(`\n[处理错误]: ${message}`));
|
|
171
|
+
}
|
|
172
|
+
finally {
|
|
173
|
+
rl.resume();
|
|
174
|
+
}
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
72
177
|
if (['exit', 'quit', 'bye'].includes(trimmed.toLowerCase())) {
|
|
73
178
|
console.log(chalk_1.default.cyan('👋 再见!'));
|
|
74
179
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleAIChat.js","sourceRoot":"","sources":["../../src/commands/handleAIChat.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"handleAIChat.js","sourceRoot":"","sources":["../../src/commands/handleAIChat.ts"],"names":[],"mappings":"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"}
|