ace-tool 0.1.0 → 0.1.3
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 +225 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +41 -0
- package/dist/config.js.map +1 -1
- package/dist/index/manager.d.ts.map +1 -1
- package/dist/index/manager.js +96 -48
- package/dist/index/manager.js.map +1 -1
- package/dist/index.js +8 -9
- package/dist/index.js.map +1 -1
- package/dist/mcpLogger.d.ts +27 -0
- package/dist/mcpLogger.d.ts.map +1 -0
- package/dist/mcpLogger.js +76 -0
- package/dist/mcpLogger.js.map +1 -0
- package/dist/tools/searchContext.js +5 -6
- package/dist/tools/searchContext.js.map +1 -1
- package/dist/utils/projectDetector.d.ts.map +1 -1
- package/dist/utils/projectDetector.js +1 -8
- package/dist/utils/projectDetector.js.map +1 -1
- package/package.json +2 -2
package/README.md
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# ace-tool
|
|
2
|
+
|
|
3
|
+
[English](#english) | [中文](#中文)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## English
|
|
8
|
+
|
|
9
|
+
MCP server for codebase indexing and semantic search.
|
|
10
|
+
|
|
11
|
+
### Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g ace-tool
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Or use directly with npx:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx ace-tool --base-url <URL> --token <TOKEN>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Configuration
|
|
24
|
+
|
|
25
|
+
#### MCP Settings
|
|
26
|
+
|
|
27
|
+
Add to your MCP configuration (e.g., Claude Desktop `claude_desktop_config.json`):
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"mcpServers": {
|
|
32
|
+
"ace-tool": {
|
|
33
|
+
"command": "npx",
|
|
34
|
+
"args": [
|
|
35
|
+
"ace-tool",
|
|
36
|
+
"--base-url", "YOUR_BASE_URL",
|
|
37
|
+
"--token", "YOUR_TOKEN"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Command Line Arguments
|
|
45
|
+
|
|
46
|
+
| Argument | Required | Description |
|
|
47
|
+
|----------|----------|-------------|
|
|
48
|
+
| `--base-url` | Yes | API base URL for the indexing service |
|
|
49
|
+
| `--token` | Yes | Authentication token |
|
|
50
|
+
| `--enable-log` | No | Enable logging to `.ace-tool/ace-tool.log` in project directory |
|
|
51
|
+
|
|
52
|
+
### Tools
|
|
53
|
+
|
|
54
|
+
#### search_context
|
|
55
|
+
|
|
56
|
+
Search for relevant code context based on a natural language query.
|
|
57
|
+
|
|
58
|
+
**Parameters:**
|
|
59
|
+
|
|
60
|
+
- `project_root_path` (required): Absolute path to the project root directory
|
|
61
|
+
- `query` (required): Natural language description of the code you're looking for
|
|
62
|
+
|
|
63
|
+
**Example queries:**
|
|
64
|
+
|
|
65
|
+
- "Where is the function that handles user authentication?"
|
|
66
|
+
- "Find the initialization flow of message queue consumers during startup"
|
|
67
|
+
- "How is the database connected to the application?"
|
|
68
|
+
|
|
69
|
+
### Project Data
|
|
70
|
+
|
|
71
|
+
ace-tool stores index data in a `.ace-tool` directory within each project:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
your-project/
|
|
75
|
+
├── .ace-tool/
|
|
76
|
+
│ ├── index.json # Index metadata
|
|
77
|
+
│ └── ace-tool.log # Logs (if --enable-log is set)
|
|
78
|
+
├── src/
|
|
79
|
+
└── ...
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The `.ace-tool` directory is automatically added to `.gitignore`.
|
|
83
|
+
|
|
84
|
+
### Supported File Types
|
|
85
|
+
|
|
86
|
+
- **Programming languages**: `.py`, `.js`, `.ts`, `.jsx`, `.tsx`, `.java`, `.go`, `.rs`, `.cpp`, `.c`, `.h`, `.hpp`, `.cs`, `.rb`, `.php`, `.swift`, `.kt`, `.scala`, `.clj`
|
|
87
|
+
- **Config/Data**: `.md`, `.txt`, `.json`, `.yaml`, `.yml`, `.toml`, `.xml`, `.ini`, `.conf`
|
|
88
|
+
- **Web**: `.html`, `.css`, `.scss`, `.sass`, `.less`, `.vue`, `.svelte`
|
|
89
|
+
- **Scripts**: `.sql`, `.sh`, `.bash`, `.ps1`, `.bat`
|
|
90
|
+
|
|
91
|
+
### Error Handling
|
|
92
|
+
|
|
93
|
+
ace-tool provides friendly error messages for common issues:
|
|
94
|
+
|
|
95
|
+
| Error Type | Description |
|
|
96
|
+
|------------|-------------|
|
|
97
|
+
| Token Invalid (401) | Token has expired or is invalid. Update `ACE_TOKEN`. |
|
|
98
|
+
| Access Denied (403) | Token may have been disabled. Contact service provider. |
|
|
99
|
+
| SSL Certificate Error | SSL certificate validation failed. Check `ACE_BASE_URL`. |
|
|
100
|
+
| Connection Refused | Cannot connect to server. Check network or service URL. |
|
|
101
|
+
| Connection Timeout | Request timed out. Check network status. |
|
|
102
|
+
| DNS Resolution Failed | Cannot resolve server address. Check `ACE_BASE_URL`. |
|
|
103
|
+
|
|
104
|
+
### MCP Logging
|
|
105
|
+
|
|
106
|
+
ace-tool supports real-time logging via MCP protocol. Logs are automatically pushed to MCP clients that support the logging capability.
|
|
107
|
+
|
|
108
|
+
Log levels: `debug`, `info`, `warning`, `error`
|
|
109
|
+
|
|
110
|
+
To also save logs to a local file, use the `--enable-log` argument.
|
|
111
|
+
|
|
112
|
+
### License
|
|
113
|
+
|
|
114
|
+
MIT
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 中文
|
|
119
|
+
|
|
120
|
+
用于代码库索引和语义搜索的 MCP 服务器。
|
|
121
|
+
|
|
122
|
+
### 安装
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
npm install -g ace-tool
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
或直接使用 npx:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
npx ace-tool --base-url <URL> --token <TOKEN>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 配置
|
|
135
|
+
|
|
136
|
+
#### MCP 设置
|
|
137
|
+
|
|
138
|
+
添加到你的 MCP 配置文件(例如 Claude Desktop 的 `claude_desktop_config.json`):
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"mcpServers": {
|
|
143
|
+
"ace-tool": {
|
|
144
|
+
"command": "npx",
|
|
145
|
+
"args": [
|
|
146
|
+
"ace-tool",
|
|
147
|
+
"--base-url", "YOUR_BASE_URL",
|
|
148
|
+
"--token", "YOUR_TOKEN"
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
#### 命令行参数
|
|
156
|
+
|
|
157
|
+
| 参数 | 必填 | 描述 |
|
|
158
|
+
|------|------|------|
|
|
159
|
+
| `--base-url` | 是 | 索引服务的 API 基础 URL |
|
|
160
|
+
| `--token` | 是 | 认证令牌 |
|
|
161
|
+
| `--enable-log` | 否 | 启用日志,保存到项目目录的 `.ace-tool/ace-tool.log` |
|
|
162
|
+
|
|
163
|
+
### 工具
|
|
164
|
+
|
|
165
|
+
#### search_context
|
|
166
|
+
|
|
167
|
+
基于自然语言查询搜索相关代码上下文。
|
|
168
|
+
|
|
169
|
+
**参数:**
|
|
170
|
+
|
|
171
|
+
- `project_root_path`(必填):项目根目录的绝对路径
|
|
172
|
+
- `query`(必填):描述你要查找的代码的自然语言
|
|
173
|
+
|
|
174
|
+
**查询示例:**
|
|
175
|
+
|
|
176
|
+
- "处理用户认证的函数在哪里?"
|
|
177
|
+
- "查找启动时消息队列消费者的初始化流程"
|
|
178
|
+
- "数据库是如何连接到应用程序的?"
|
|
179
|
+
|
|
180
|
+
### 项目数据
|
|
181
|
+
|
|
182
|
+
ace-tool 在每个项目的 `.ace-tool` 目录中存储索引数据:
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
your-project/
|
|
186
|
+
├── .ace-tool/
|
|
187
|
+
│ ├── index.json # 索引元数据
|
|
188
|
+
│ └── ace-tool.log # 日志(如果设置了 --enable-log)
|
|
189
|
+
├── src/
|
|
190
|
+
└── ...
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
`.ace-tool` 目录会自动添加到 `.gitignore`。
|
|
194
|
+
|
|
195
|
+
### 支持的文件类型
|
|
196
|
+
|
|
197
|
+
- **编程语言**:`.py`, `.js`, `.ts`, `.jsx`, `.tsx`, `.java`, `.go`, `.rs`, `.cpp`, `.c`, `.h`, `.hpp`, `.cs`, `.rb`, `.php`, `.swift`, `.kt`, `.scala`, `.clj`
|
|
198
|
+
- **配置/数据**:`.md`, `.txt`, `.json`, `.yaml`, `.yml`, `.toml`, `.xml`, `.ini`, `.conf`
|
|
199
|
+
- **Web**:`.html`, `.css`, `.scss`, `.sass`, `.less`, `.vue`, `.svelte`
|
|
200
|
+
- **脚本**:`.sql`, `.sh`, `.bash`, `.ps1`, `.bat`
|
|
201
|
+
|
|
202
|
+
### 错误处理
|
|
203
|
+
|
|
204
|
+
ace-tool 为常见问题提供友好的错误提示:
|
|
205
|
+
|
|
206
|
+
| 错误类型 | 描述 |
|
|
207
|
+
| -------- | ---- |
|
|
208
|
+
| Token 无效 (401) | Token 已过期或无效,请更新 `ACE_TOKEN` |
|
|
209
|
+
| 访问被拒绝 (403) | Token 可能已被禁用,请联系服务提供商 |
|
|
210
|
+
| SSL 证书错误 | SSL 证书验证失败,请检查 `ACE_BASE_URL` 配置 |
|
|
211
|
+
| 连接被拒绝 | 无法连接到服务器,请检查网络或服务地址 |
|
|
212
|
+
| 连接超时 | 请求超时,请检查网络状况 |
|
|
213
|
+
| DNS 解析失败 | 无法解析服务器地址,请检查 `ACE_BASE_URL` |
|
|
214
|
+
|
|
215
|
+
### MCP 日志
|
|
216
|
+
|
|
217
|
+
ace-tool 支持通过 MCP 协议实时推送日志。日志会自动推送到支持日志功能的 MCP 客户端。
|
|
218
|
+
|
|
219
|
+
日志级别:`debug`, `info`, `warning`, `error`
|
|
220
|
+
|
|
221
|
+
如需同时保存日志到本地文件,请使用 `--enable-log` 参数。
|
|
222
|
+
|
|
223
|
+
### 许可证
|
|
224
|
+
|
|
225
|
+
MIT
|
package/dist/config.d.ts
CHANGED
|
@@ -10,6 +10,19 @@ export interface Config {
|
|
|
10
10
|
excludePatterns: string[];
|
|
11
11
|
enableLog: boolean;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* 上传策略配置(根据项目规模自适应)
|
|
15
|
+
*/
|
|
16
|
+
export interface UploadStrategy {
|
|
17
|
+
batchSize: number;
|
|
18
|
+
concurrency: number;
|
|
19
|
+
timeout: number;
|
|
20
|
+
scaleName: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 根据文件块数量获取自适应上传策略
|
|
24
|
+
*/
|
|
25
|
+
export declare function getUploadStrategy(blobCount: number): UploadStrategy;
|
|
13
26
|
/**
|
|
14
27
|
* 初始化配置
|
|
15
28
|
*/
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;CACpB;AAiED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA6BnC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAkCnE;AAiED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA6BnC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC"}
|
package/dist/config.js
CHANGED
|
@@ -1,6 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 配置模块 - 从命令行参数读取配置
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* 根据文件块数量获取自适应上传策略
|
|
6
|
+
*/
|
|
7
|
+
export function getUploadStrategy(blobCount) {
|
|
8
|
+
if (blobCount < 100) {
|
|
9
|
+
// 小型项目:保守配置,快速完成
|
|
10
|
+
return {
|
|
11
|
+
batchSize: 10,
|
|
12
|
+
concurrency: 1,
|
|
13
|
+
timeout: 30000,
|
|
14
|
+
scaleName: '小型'
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
else if (blobCount < 500) {
|
|
18
|
+
// 中型项目:适度并发
|
|
19
|
+
return {
|
|
20
|
+
batchSize: 30,
|
|
21
|
+
concurrency: 2,
|
|
22
|
+
timeout: 45000,
|
|
23
|
+
scaleName: '中型'
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
else if (blobCount < 2000) {
|
|
27
|
+
// 大型项目:高效并发
|
|
28
|
+
return {
|
|
29
|
+
batchSize: 50,
|
|
30
|
+
concurrency: 3,
|
|
31
|
+
timeout: 60000,
|
|
32
|
+
scaleName: '大型'
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// 超大型项目:最大化吞吐
|
|
37
|
+
return {
|
|
38
|
+
batchSize: 70,
|
|
39
|
+
concurrency: 4,
|
|
40
|
+
timeout: 90000,
|
|
41
|
+
scaleName: '超大型'
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
4
45
|
// 默认支持的文本文件扩展名
|
|
5
46
|
const DEFAULT_TEXT_EXTENSIONS = new Set([
|
|
6
47
|
// 编程语言
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/index/manager.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/index/manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH;;GAEG;AACH,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAoDD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAgB;gBAGhC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,SAAS,EAAE,MAAM,EACjB,eAAe,GAAE,MAAY,EAC7B,eAAe,GAAE,MAAM,EAAO;IAmBhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAkCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAajB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6CxB;;OAEG;YACW,YAAY;IAgD1B;;OAEG;YACW,YAAY;IAiE1B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;IA+H1C;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAyDpD"}
|
package/dist/index/manager.js
CHANGED
|
@@ -7,8 +7,9 @@ import path from 'path';
|
|
|
7
7
|
import axios from 'axios';
|
|
8
8
|
import iconv from 'iconv-lite';
|
|
9
9
|
import ignore from 'ignore';
|
|
10
|
-
import {
|
|
10
|
+
import { sendMcpLog } from '../mcpLogger.js';
|
|
11
11
|
import { getIndexFilePath } from '../utils/projectDetector.js';
|
|
12
|
+
import { getUploadStrategy } from '../config.js';
|
|
12
13
|
/**
|
|
13
14
|
* 使用多种编码尝试读取文件
|
|
14
15
|
*/
|
|
@@ -30,7 +31,7 @@ async function readFileWithEncoding(filePath) {
|
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
if (encoding !== 'utf-8') {
|
|
33
|
-
|
|
34
|
+
// 非 UTF-8 编码,静默处理
|
|
34
35
|
}
|
|
35
36
|
return content;
|
|
36
37
|
}
|
|
@@ -39,7 +40,6 @@ async function readFileWithEncoding(filePath) {
|
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
const content = iconv.decode(buffer, 'utf-8');
|
|
42
|
-
logger.warning(`Read ${filePath} with utf-8 (some characters may be lost)`);
|
|
43
43
|
return content;
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
@@ -85,7 +85,6 @@ export class IndexManager {
|
|
|
85
85
|
Authorization: `Bearer ${this.token}`,
|
|
86
86
|
},
|
|
87
87
|
});
|
|
88
|
-
logger.info(`IndexManager initialized for project: ${projectRoot}`);
|
|
89
88
|
}
|
|
90
89
|
/**
|
|
91
90
|
* 加载 .gitignore 文件
|
|
@@ -99,11 +98,9 @@ export class IndexManager {
|
|
|
99
98
|
const content = fs.readFileSync(gitignorePath, 'utf-8');
|
|
100
99
|
const patterns = content.split('\n');
|
|
101
100
|
const ig = ignore().add(patterns);
|
|
102
|
-
logger.debug(`Loaded .gitignore with ${patterns.length} patterns`);
|
|
103
101
|
return ig;
|
|
104
102
|
}
|
|
105
103
|
catch (error) {
|
|
106
|
-
logger.warning(`Failed to load .gitignore: ${error}`);
|
|
107
104
|
return null;
|
|
108
105
|
}
|
|
109
106
|
}
|
|
@@ -158,7 +155,7 @@ export class IndexManager {
|
|
|
158
155
|
return JSON.parse(content);
|
|
159
156
|
}
|
|
160
157
|
catch (error) {
|
|
161
|
-
|
|
158
|
+
sendMcpLog('error', `❌ 加载索引失败: ${error}`);
|
|
162
159
|
return [];
|
|
163
160
|
}
|
|
164
161
|
}
|
|
@@ -171,7 +168,7 @@ export class IndexManager {
|
|
|
171
168
|
fs.writeFileSync(this.indexFilePath, content, 'utf-8');
|
|
172
169
|
}
|
|
173
170
|
catch (error) {
|
|
174
|
-
|
|
171
|
+
sendMcpLog('error', `❌ 保存索引失败: ${error}`);
|
|
175
172
|
throw error;
|
|
176
173
|
}
|
|
177
174
|
}
|
|
@@ -215,7 +212,6 @@ export class IndexManager {
|
|
|
215
212
|
const chunkPath = `${filePath}#chunk${chunkIdx + 1}of${numChunks}`;
|
|
216
213
|
blobs.push({ path: chunkPath, content: chunkContent });
|
|
217
214
|
}
|
|
218
|
-
logger.info(`Split file ${filePath} (${totalLines} lines) into ${numChunks} chunks`);
|
|
219
215
|
return blobs;
|
|
220
216
|
}
|
|
221
217
|
/**
|
|
@@ -256,13 +252,12 @@ export class IndexManager {
|
|
|
256
252
|
blobs.push(...fileBlobs);
|
|
257
253
|
}
|
|
258
254
|
catch (error) {
|
|
259
|
-
|
|
255
|
+
// 静默处理读取失败
|
|
260
256
|
}
|
|
261
257
|
}
|
|
262
258
|
}
|
|
263
259
|
};
|
|
264
260
|
await walkDir(this.projectRoot);
|
|
265
|
-
logger.info(`Collected ${blobs.length} blobs (excluded ${excludedCount} items)`);
|
|
266
261
|
return blobs;
|
|
267
262
|
}
|
|
268
263
|
/**
|
|
@@ -277,16 +272,46 @@ export class IndexManager {
|
|
|
277
272
|
catch (error) {
|
|
278
273
|
lastError = error instanceof Error ? error : new Error(String(error));
|
|
279
274
|
const axiosError = error;
|
|
275
|
+
// Token 失效检测 - 不重试,直接抛出友好错误
|
|
276
|
+
if (axiosError.response?.status === 401) {
|
|
277
|
+
sendMcpLog('error', '🔑 Token 已失效或无效,请检查配置');
|
|
278
|
+
throw new Error('Token 已失效或无效,请更新 ACE_TOKEN 环境变量');
|
|
279
|
+
}
|
|
280
|
+
// 权限被拒绝 - 可能被官方制裁
|
|
281
|
+
if (axiosError.response?.status === 403) {
|
|
282
|
+
sendMcpLog('error', '🚫 访问被拒绝,Token 可能已被禁用');
|
|
283
|
+
throw new Error('访问被拒绝,Token 可能已被官方禁用,请联系服务提供商');
|
|
284
|
+
}
|
|
285
|
+
// SSL 证书错误检测 - 不重试
|
|
286
|
+
if (axiosError.code === 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' ||
|
|
287
|
+
axiosError.code === 'CERT_HAS_EXPIRED' ||
|
|
288
|
+
axiosError.code === 'ERR_TLS_CERT_ALTNAME_INVALID' ||
|
|
289
|
+
lastError.message.includes('certificate') ||
|
|
290
|
+
lastError.message.includes('altnames')) {
|
|
291
|
+
sendMcpLog('error', '🔐 SSL 证书验证失败,请检查 ACE_BASE_URL 配置是否正确');
|
|
292
|
+
throw new Error('SSL 证书验证失败,请检查 ACE_BASE_URL 配置是否正确,或联系服务提供商');
|
|
293
|
+
}
|
|
280
294
|
const isRetryable = axiosError.code === 'ECONNREFUSED' ||
|
|
281
295
|
axiosError.code === 'ETIMEDOUT' ||
|
|
282
296
|
axiosError.code === 'ENOTFOUND' ||
|
|
283
297
|
(axiosError.response && axiosError.response.status >= 500);
|
|
284
298
|
if (!isRetryable || attempt === maxRetries - 1) {
|
|
285
|
-
|
|
286
|
-
|
|
299
|
+
// 提供更友好的网络错误提示
|
|
300
|
+
let friendlyMessage = lastError.message;
|
|
301
|
+
if (axiosError.code === 'ECONNREFUSED') {
|
|
302
|
+
friendlyMessage = '无法连接到服务器,请检查网络或服务地址';
|
|
303
|
+
}
|
|
304
|
+
else if (axiosError.code === 'ETIMEDOUT') {
|
|
305
|
+
friendlyMessage = '连接超时,请检查网络状况';
|
|
306
|
+
}
|
|
307
|
+
else if (axiosError.code === 'ENOTFOUND') {
|
|
308
|
+
friendlyMessage = '无法解析服务器地址,请检查 ACE_BASE_URL 配置';
|
|
309
|
+
}
|
|
310
|
+
sendMcpLog('error', `❌ 请求失败 (${attempt + 1}次尝试): ${friendlyMessage}`);
|
|
311
|
+
throw new Error(friendlyMessage);
|
|
287
312
|
}
|
|
288
313
|
const waitTime = retryDelay * Math.pow(2, attempt);
|
|
289
|
-
|
|
314
|
+
sendMcpLog('warning', `⚠️ 请求失败 (${attempt + 1}/${maxRetries}),${waitTime}ms 后重试...`);
|
|
290
315
|
await sleep(waitTime);
|
|
291
316
|
}
|
|
292
317
|
}
|
|
@@ -296,12 +321,15 @@ export class IndexManager {
|
|
|
296
321
|
* 对项目进行索引(支持增量索引)
|
|
297
322
|
*/
|
|
298
323
|
async indexProject() {
|
|
299
|
-
|
|
324
|
+
sendMcpLog('info', `📂 开始索引项目: ${this.projectRoot}`);
|
|
300
325
|
try {
|
|
326
|
+
sendMcpLog('info', '🔍 正在扫描文件...');
|
|
301
327
|
const blobs = await this.collectFiles();
|
|
302
328
|
if (blobs.length === 0) {
|
|
329
|
+
sendMcpLog('warning', '⚠️ 未找到可索引的文本文件');
|
|
303
330
|
return { status: 'error', message: 'No text files found in project' };
|
|
304
331
|
}
|
|
332
|
+
sendMcpLog('info', `📄 扫描完成,共发现 ${blobs.length} 个文件块`);
|
|
305
333
|
// 加载已存在的索引数据
|
|
306
334
|
const existingBlobNames = new Set(this.loadIndex());
|
|
307
335
|
// 为所有收集的 blob 计算哈希值
|
|
@@ -315,52 +343,69 @@ export class IndexManager {
|
|
|
315
343
|
const existingHashes = new Set([...allBlobHashes].filter((hash) => existingBlobNames.has(hash)));
|
|
316
344
|
const newHashes = [...allBlobHashes].filter((hash) => !existingBlobNames.has(hash));
|
|
317
345
|
const blobsToUpload = newHashes.map((hash) => blobHashMap.get(hash));
|
|
318
|
-
|
|
346
|
+
sendMcpLog('info', `📊 增量索引: 已有 ${existingHashes.size} 个, 新增 ${newHashes.length} 个`);
|
|
319
347
|
// 只上传新的 blob
|
|
320
348
|
const uploadedBlobNames = [];
|
|
321
349
|
const failedBatches = [];
|
|
322
350
|
if (blobsToUpload.length > 0) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
351
|
+
// 获取自适应上传策略
|
|
352
|
+
const strategy = getUploadStrategy(blobsToUpload.length);
|
|
353
|
+
sendMcpLog('info', `📐 项目规模: ${strategy.scaleName} (批次大小: ${strategy.batchSize}, 并发: ${strategy.concurrency})`);
|
|
354
|
+
const totalBatches = Math.ceil(blobsToUpload.length / strategy.batchSize);
|
|
355
|
+
sendMcpLog('info', `⬆️ 开始上传 ${blobsToUpload.length} 个新文件块,共 ${totalBatches} 批`);
|
|
356
|
+
// 准备所有批次
|
|
357
|
+
const batches = [];
|
|
358
|
+
for (let i = 0; i < blobsToUpload.length; i += strategy.batchSize) {
|
|
359
|
+
batches.push(blobsToUpload.slice(i, i + strategy.batchSize));
|
|
360
|
+
}
|
|
361
|
+
// 并发上传
|
|
362
|
+
for (let i = 0; i < batches.length; i += strategy.concurrency) {
|
|
363
|
+
const concurrentBatches = batches.slice(i, i + strategy.concurrency);
|
|
364
|
+
const batchIndices = concurrentBatches.map((_, idx) => i + idx + 1);
|
|
365
|
+
sendMcpLog('info', `📤 上传批次 ${batchIndices.join(', ')}/${totalBatches}...`);
|
|
366
|
+
const uploadPromises = concurrentBatches.map(async (batchBlobs, idx) => {
|
|
367
|
+
const batchIdx = i + idx + 1;
|
|
368
|
+
try {
|
|
369
|
+
const result = await this.retryRequest(async () => {
|
|
370
|
+
const response = await this.httpClient.post(`${this.baseUrl}/batch-upload`, { blobs: batchBlobs }, { timeout: strategy.timeout });
|
|
371
|
+
return response.data;
|
|
334
372
|
});
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
373
|
+
const batchBlobNames = result.blob_names || [];
|
|
374
|
+
if (batchBlobNames.length === 0) {
|
|
375
|
+
sendMcpLog('warning', `⚠️ 批次 ${batchIdx} 返回空结果`);
|
|
376
|
+
return { success: false, batchIdx, blobNames: [] };
|
|
377
|
+
}
|
|
378
|
+
return { success: true, batchIdx, blobNames: batchBlobNames };
|
|
379
|
+
}
|
|
380
|
+
catch (error) {
|
|
381
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
382
|
+
sendMcpLog('error', `❌ 批次 ${batchIdx} 上传失败: ${errorMessage}`);
|
|
383
|
+
return { success: false, batchIdx, blobNames: [] };
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
const results = await Promise.all(uploadPromises);
|
|
387
|
+
for (const result of results) {
|
|
388
|
+
if (result.success) {
|
|
389
|
+
uploadedBlobNames.push(...result.blobNames);
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
failedBatches.push(result.batchIdx);
|
|
342
393
|
}
|
|
343
|
-
uploadedBlobNames.push(...batchBlobNames);
|
|
344
|
-
logger.info(`Batch ${batchIdx + 1} uploaded successfully`);
|
|
345
|
-
}
|
|
346
|
-
catch (error) {
|
|
347
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
348
|
-
logger.error(`Batch ${batchIdx + 1} failed: ${errorMessage}`);
|
|
349
|
-
failedBatches.push(batchIdx + 1);
|
|
350
394
|
}
|
|
351
395
|
}
|
|
352
396
|
if (uploadedBlobNames.length === 0 && blobsToUpload.length > 0 && existingHashes.size === 0) {
|
|
397
|
+
sendMcpLog('error', '❌ 所有批次上传失败');
|
|
353
398
|
return { status: 'error', message: 'All batches failed on first indexing' };
|
|
354
399
|
}
|
|
355
400
|
}
|
|
356
401
|
else {
|
|
357
|
-
|
|
402
|
+
sendMcpLog('info', '✅ 无需上传新文件,使用缓存索引');
|
|
358
403
|
}
|
|
359
404
|
// 合并已存在和新上传的 blob 名称
|
|
360
405
|
const allBlobNames = [...existingHashes, ...uploadedBlobNames];
|
|
361
406
|
this.saveIndex(allBlobNames);
|
|
362
407
|
const message = `Indexed ${allBlobNames.length} blobs (existing: ${existingHashes.size}, new: ${uploadedBlobNames.length})`;
|
|
363
|
-
|
|
408
|
+
sendMcpLog('info', `✅ 索引完成: 共 ${allBlobNames.length} 个文件块`);
|
|
364
409
|
return {
|
|
365
410
|
status: failedBatches.length === 0 ? 'success' : 'partial_success',
|
|
366
411
|
message,
|
|
@@ -373,7 +418,7 @@ export class IndexManager {
|
|
|
373
418
|
}
|
|
374
419
|
catch (error) {
|
|
375
420
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
376
|
-
|
|
421
|
+
sendMcpLog('error', `❌ 索引项目失败: ${errorMessage}`);
|
|
377
422
|
return { status: 'error', message: errorMessage };
|
|
378
423
|
}
|
|
379
424
|
}
|
|
@@ -381,20 +426,22 @@ export class IndexManager {
|
|
|
381
426
|
* 搜索代码上下文(自动增量索引)
|
|
382
427
|
*/
|
|
383
428
|
async searchContext(query) {
|
|
384
|
-
|
|
429
|
+
sendMcpLog('info', `🔎 开始搜索: ${query}`);
|
|
385
430
|
try {
|
|
386
431
|
// 自动索引
|
|
387
432
|
const indexResult = await this.indexProject();
|
|
388
433
|
if (indexResult.status === 'error') {
|
|
434
|
+
sendMcpLog('error', `❌ 索引失败: ${indexResult.message}`);
|
|
389
435
|
return `Error: Failed to index project. ${indexResult.message}`;
|
|
390
436
|
}
|
|
391
437
|
// 加载索引
|
|
392
438
|
const blobNames = this.loadIndex();
|
|
393
439
|
if (blobNames.length === 0) {
|
|
440
|
+
sendMcpLog('error', '❌ 索引为空');
|
|
394
441
|
return 'Error: No blobs found after indexing.';
|
|
395
442
|
}
|
|
396
443
|
// 执行搜索
|
|
397
|
-
|
|
444
|
+
sendMcpLog('info', `🔍 正在搜索 ${blobNames.length} 个文件块...`);
|
|
398
445
|
const payload = {
|
|
399
446
|
information_request: query,
|
|
400
447
|
blobs: {
|
|
@@ -413,14 +460,15 @@ export class IndexManager {
|
|
|
413
460
|
}, 3, 2000);
|
|
414
461
|
const formattedRetrieval = result.formatted_retrieval || '';
|
|
415
462
|
if (!formattedRetrieval) {
|
|
463
|
+
sendMcpLog('info', '📭 未找到相关代码');
|
|
416
464
|
return 'No relevant code context found for your query.';
|
|
417
465
|
}
|
|
418
|
-
|
|
466
|
+
sendMcpLog('info', '✅ 搜索完成');
|
|
419
467
|
return formattedRetrieval;
|
|
420
468
|
}
|
|
421
469
|
catch (error) {
|
|
422
470
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
423
|
-
|
|
471
|
+
sendMcpLog('error', `❌ 搜索失败: ${errorMessage}`);
|
|
424
472
|
return `Error: ${errorMessage}`;
|
|
425
473
|
}
|
|
426
474
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/index/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/index/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
7
7
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
8
8
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
9
9
|
import { initConfig } from './config.js';
|
|
10
|
-
import {
|
|
10
|
+
import { initMcpLogger, sendMcpLog } from './mcpLogger.js';
|
|
11
11
|
import { SEARCH_CONTEXT_TOOL } from './prompts/searchContext.js';
|
|
12
12
|
import { searchContextTool } from './tools/searchContext.js';
|
|
13
13
|
/**
|
|
@@ -19,8 +19,11 @@ const server = new Server({
|
|
|
19
19
|
}, {
|
|
20
20
|
capabilities: {
|
|
21
21
|
tools: {},
|
|
22
|
+
logging: {},
|
|
22
23
|
},
|
|
23
24
|
});
|
|
25
|
+
// 初始化 MCP 日志模块
|
|
26
|
+
initMcpLogger(server);
|
|
24
27
|
/**
|
|
25
28
|
* 列出可用工具
|
|
26
29
|
*/
|
|
@@ -39,11 +42,9 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
39
42
|
*/
|
|
40
43
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
41
44
|
const { name, arguments: args } = request.params;
|
|
42
|
-
logger.info(`Tool called: ${name}, args: ${JSON.stringify(args)}`);
|
|
43
45
|
try {
|
|
44
46
|
if (name === 'search_context') {
|
|
45
47
|
const result = await searchContextTool(args);
|
|
46
|
-
logger.info(`Tool result: ${result?.text?.substring(0, 100)}...`);
|
|
47
48
|
return {
|
|
48
49
|
content: [
|
|
49
50
|
{
|
|
@@ -64,7 +65,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
64
65
|
}
|
|
65
66
|
catch (error) {
|
|
66
67
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
67
|
-
|
|
68
|
+
sendMcpLog('error', `❌ 工具执行错误: ${errorMessage}`);
|
|
68
69
|
return {
|
|
69
70
|
content: [
|
|
70
71
|
{
|
|
@@ -81,16 +82,14 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
81
82
|
async function main() {
|
|
82
83
|
try {
|
|
83
84
|
// 初始化配置
|
|
84
|
-
|
|
85
|
-
logger.info('Starting ace-tool MCP server...');
|
|
86
|
-
logger.info(`API: ${config.baseUrl}`);
|
|
85
|
+
initConfig();
|
|
87
86
|
// 启动 MCP 服务器
|
|
88
87
|
const transport = new StdioServerTransport();
|
|
89
88
|
await server.connect(transport);
|
|
90
|
-
logger.info('MCP server connected via stdio');
|
|
91
89
|
}
|
|
92
90
|
catch (error) {
|
|
93
|
-
|
|
91
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
92
|
+
sendMcpLog('error', `❌ 服务器错误: ${errorMessage}`);
|
|
94
93
|
process.exit(1);
|
|
95
94
|
}
|
|
96
95
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 统一日志模块 - 同时支持 MCP 客户端推送和本地文件写入
|
|
3
|
+
*/
|
|
4
|
+
import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
5
|
+
type LogLevel = 'debug' | 'info' | 'warning' | 'error';
|
|
6
|
+
/**
|
|
7
|
+
* 初始化 MCP 日志模块
|
|
8
|
+
*/
|
|
9
|
+
export declare function initMcpLogger(server: Server): void;
|
|
10
|
+
/**
|
|
11
|
+
* 启用文件日志
|
|
12
|
+
*/
|
|
13
|
+
export declare function enableFileLog(): void;
|
|
14
|
+
/**
|
|
15
|
+
* 设置项目路径(用于文件日志)
|
|
16
|
+
*/
|
|
17
|
+
export declare function setLogProjectPath(projectRoot: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* 关闭日志流
|
|
20
|
+
*/
|
|
21
|
+
export declare function closeLog(): void;
|
|
22
|
+
/**
|
|
23
|
+
* 发送日志(同时推送到 MCP 客户端和写入文件)
|
|
24
|
+
*/
|
|
25
|
+
export declare function sendMcpLog(level: LogLevel, message: string): void;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=mcpLogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpLogger.d.ts","sourceRoot":"","sources":["../src/mcpLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAExE,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAOvD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA0B3D;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAK/B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAkBjE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 统一日志模块 - 同时支持 MCP 客户端推送和本地文件写入
|
|
3
|
+
*/
|
|
4
|
+
import fs from 'fs';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
let mcpServer = null;
|
|
7
|
+
let fileEnabled = false;
|
|
8
|
+
let logFilePath = null;
|
|
9
|
+
let logStream = null;
|
|
10
|
+
/**
|
|
11
|
+
* 初始化 MCP 日志模块
|
|
12
|
+
*/
|
|
13
|
+
export function initMcpLogger(server) {
|
|
14
|
+
mcpServer = server;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 启用文件日志
|
|
18
|
+
*/
|
|
19
|
+
export function enableFileLog() {
|
|
20
|
+
fileEnabled = true;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 设置项目路径(用于文件日志)
|
|
24
|
+
*/
|
|
25
|
+
export function setLogProjectPath(projectRoot) {
|
|
26
|
+
if (!fileEnabled) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const aceDir = path.join(projectRoot, '.ace-tool');
|
|
30
|
+
// 确保 .ace-tool 目录存在
|
|
31
|
+
if (!fs.existsSync(aceDir)) {
|
|
32
|
+
fs.mkdirSync(aceDir, { recursive: true });
|
|
33
|
+
}
|
|
34
|
+
logFilePath = path.join(aceDir, 'ace-tool.log');
|
|
35
|
+
// 关闭旧的流
|
|
36
|
+
if (logStream) {
|
|
37
|
+
logStream.end();
|
|
38
|
+
}
|
|
39
|
+
// 创建新的写入流(追加模式)
|
|
40
|
+
logStream = fs.createWriteStream(logFilePath, { flags: 'a' });
|
|
41
|
+
// 写入分隔线
|
|
42
|
+
const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 19);
|
|
43
|
+
const separator = `\n${'='.repeat(60)}\n${timestamp} | Session started\n${'='.repeat(60)}\n`;
|
|
44
|
+
logStream.write(separator);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 关闭日志流
|
|
48
|
+
*/
|
|
49
|
+
export function closeLog() {
|
|
50
|
+
if (logStream) {
|
|
51
|
+
logStream.end();
|
|
52
|
+
logStream = null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 发送日志(同时推送到 MCP 客户端和写入文件)
|
|
57
|
+
*/
|
|
58
|
+
export function sendMcpLog(level, message) {
|
|
59
|
+
// 1. 推送到 MCP 客户端
|
|
60
|
+
if (mcpServer) {
|
|
61
|
+
mcpServer.sendLoggingMessage({
|
|
62
|
+
level,
|
|
63
|
+
data: message,
|
|
64
|
+
}).catch(() => {
|
|
65
|
+
// 忽略发送失败(可能客户端未连接)
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// 2. 写入本地文件(如果启用)
|
|
69
|
+
if (fileEnabled && logStream) {
|
|
70
|
+
const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 19);
|
|
71
|
+
const levelStr = level.toUpperCase().padEnd(7);
|
|
72
|
+
const logLine = `${timestamp} | ${levelStr} | ${message}\n`;
|
|
73
|
+
logStream.write(logLine);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=mcpLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpLogger.js","sourceRoot":"","sources":["../src/mcpLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,IAAI,SAAS,GAAkB,IAAI,CAAC;AACpC,IAAI,WAAW,GAAY,KAAK,CAAC;AACjC,IAAI,WAAW,GAAkB,IAAI,CAAC;AACtC,IAAI,SAAS,GAA0B,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,SAAS,GAAG,MAAM,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAEnD,oBAAoB;IACpB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEhD,QAAQ;IACR,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAE9D,QAAQ;IACR,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS,uBAAuB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;IAC7F,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,GAAG,EAAE,CAAC;QAChB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAe,EAAE,OAAe;IACzD,iBAAiB;IACjB,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,kBAAkB,CAAC;YAC3B,KAAK;YACL,IAAI,EAAE,OAAO;SACd,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,mBAAmB;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,SAAS,MAAM,QAAQ,MAAM,OAAO,IAAI,CAAC;QAC5D,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import fs from 'fs';
|
|
5
5
|
import { getConfig } from '../config.js';
|
|
6
6
|
import { IndexManager } from '../index/manager.js';
|
|
7
|
-
import {
|
|
7
|
+
import { enableFileLog, setLogProjectPath, sendMcpLog } from '../mcpLogger.js';
|
|
8
8
|
/**
|
|
9
9
|
* search_context 工具实现
|
|
10
10
|
*/
|
|
@@ -30,19 +30,18 @@ export async function searchContextTool(args) {
|
|
|
30
30
|
return { type: 'text', text: `Error: Project path is not a directory: ${projectRoot}` };
|
|
31
31
|
}
|
|
32
32
|
const config = getConfig();
|
|
33
|
-
//
|
|
33
|
+
// 根据配置启用文件日志
|
|
34
34
|
if (config.enableLog) {
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
enableFileLog();
|
|
36
|
+
setLogProjectPath(projectRoot);
|
|
37
37
|
}
|
|
38
|
-
logger.info(`Tool invoked: search_context for project ${projectRoot}`);
|
|
39
38
|
const indexManager = new IndexManager(projectRoot, config.baseUrl, config.token, config.textExtensions, config.batchSize, config.maxLinesPerBlob, config.excludePatterns);
|
|
40
39
|
const result = await indexManager.searchContext(query);
|
|
41
40
|
return { type: 'text', text: result };
|
|
42
41
|
}
|
|
43
42
|
catch (error) {
|
|
44
43
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
45
|
-
|
|
44
|
+
sendMcpLog('error', `❌ 工具执行错误: ${errorMessage}`);
|
|
46
45
|
return { type: 'text', text: `Error: ${errorMessage}` };
|
|
47
46
|
}
|
|
48
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchContext.js","sourceRoot":"","sources":["../../src/tools/searchContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"searchContext.js","sourceRoot":"","sources":["../../src/tools/searchContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkB/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAuB;IAC7D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC;QACxE,CAAC;QAED,iBAAiB;QACjB,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAExD,WAAW;QACX,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,WAAW,EAAE,EAAE,CAAC;QACtF,CAAC;QAED,UAAU;QACV,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2CAA2C,WAAW,EAAE,EAAE,CAAC;QAC1F,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,aAAa;QACb,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,aAAa,EAAE,CAAC;YAChB,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,WAAW,EACX,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,eAAe,CACvB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,UAAU,CAAC,OAAO,EAAE,aAAa,YAAY,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,YAAY,EAAE,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectDetector.d.ts","sourceRoot":"","sources":["../../src/utils/projectDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"projectDetector.d.ts","sourceRoot":"","sources":["../../src/utils/projectDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA+B1C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAWrD;AA8BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import fs from 'fs';
|
|
6
6
|
import path from 'path';
|
|
7
|
-
import { logger } from '../logger.js';
|
|
8
7
|
/**
|
|
9
8
|
* 检测项目根目录
|
|
10
9
|
* 优先级:.ace-tool/ > .git/
|
|
@@ -14,19 +13,16 @@ import { logger } from '../logger.js';
|
|
|
14
13
|
*/
|
|
15
14
|
export function detectProjectRoot() {
|
|
16
15
|
const cwd = process.cwd();
|
|
17
|
-
logger.debug(`Detecting project root from: ${cwd}`);
|
|
18
16
|
let currentDir = cwd;
|
|
19
17
|
while (true) {
|
|
20
18
|
// 优先检查 .ace-tool 目录
|
|
21
19
|
const acePath = path.join(currentDir, '.ace-tool');
|
|
22
20
|
if (fs.existsSync(acePath) && fs.statSync(acePath).isDirectory()) {
|
|
23
|
-
logger.info(`Found project root (via .ace-tool): ${currentDir}`);
|
|
24
21
|
return currentDir;
|
|
25
22
|
}
|
|
26
23
|
// 其次检查 .git 目录
|
|
27
24
|
const gitPath = path.join(currentDir, '.git');
|
|
28
25
|
if (fs.existsSync(gitPath)) {
|
|
29
|
-
logger.info(`Found project root (via .git): ${currentDir}`);
|
|
30
26
|
return currentDir;
|
|
31
27
|
}
|
|
32
28
|
// 向上一级目录
|
|
@@ -38,7 +34,6 @@ export function detectProjectRoot() {
|
|
|
38
34
|
currentDir = parentDir;
|
|
39
35
|
}
|
|
40
36
|
// 如果找不到 .ace-tool 或 .git,使用当前工作目录
|
|
41
|
-
logger.warning(`No .ace-tool or .git found, using current directory: ${cwd}`);
|
|
42
37
|
return cwd;
|
|
43
38
|
}
|
|
44
39
|
/**
|
|
@@ -52,7 +47,6 @@ export function getAceDir(projectRoot) {
|
|
|
52
47
|
const aceDir = path.join(projectRoot, '.ace-tool');
|
|
53
48
|
if (!fs.existsSync(aceDir)) {
|
|
54
49
|
fs.mkdirSync(aceDir, { recursive: true });
|
|
55
|
-
logger.info(`Created .ace-tool directory: ${aceDir}`);
|
|
56
50
|
// 尝试将 .ace-tool 添加到 .gitignore
|
|
57
51
|
addToGitignore(projectRoot);
|
|
58
52
|
}
|
|
@@ -77,10 +71,9 @@ function addToGitignore(projectRoot) {
|
|
|
77
71
|
? `${content}.ace-tool/\n`
|
|
78
72
|
: `${content}\n.ace-tool/\n`;
|
|
79
73
|
fs.writeFileSync(gitignorePath, newContent, 'utf-8');
|
|
80
|
-
logger.info('Added .ace-tool/ to .gitignore');
|
|
81
74
|
}
|
|
82
75
|
catch (error) {
|
|
83
|
-
|
|
76
|
+
// 静默处理错误
|
|
84
77
|
}
|
|
85
78
|
}
|
|
86
79
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectDetector.js","sourceRoot":"","sources":["../../src/utils/projectDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"projectDetector.js","sourceRoot":"","sources":["../../src/utils/projectDetector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ace-tool",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "MCP server for codebase indexing and semantic search",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"repository": {
|
|
32
32
|
"type": "git",
|
|
33
|
-
"url": "https://github.com/
|
|
33
|
+
"url": "https://github.com/eastxiaodong/ace-tool.git"
|
|
34
34
|
},
|
|
35
35
|
"engines": {
|
|
36
36
|
"node": ">=18.0.0"
|