@deveco-codegenie/mcp-win32-x64 1.0.1-beta3 → 1.1.1
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 +164 -111
- package/THIRD_PARTY_LICENSES.md +4577 -0
- package/bin/codegenie-mcp-server.exe +0 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
基于MCP协议,将 HarmonyOS 开发工具链封装为标准 MCP 工具,供 AI 助手调用。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
***
|
|
6
6
|
|
|
7
7
|
## 目录
|
|
8
8
|
|
|
@@ -11,16 +11,15 @@
|
|
|
11
11
|
- [工程路径配置](#工程路径配置)
|
|
12
12
|
- [主要功能](#主要功能)
|
|
13
13
|
- [ArkTS 代码检查](#1-arkts-代码检查-check_ets_files)
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
16
|
-
- [
|
|
17
|
-
- [UI
|
|
18
|
-
- [UI
|
|
19
|
-
- [
|
|
20
|
-
- [HarmonyOS 知识库搜索](#8-harmonyos-知识库搜索-harmonyos_knowledge_searchwindows--macos)
|
|
14
|
+
- [C/C++ 代码检查](#2-c代码检查-check_cpp_files)
|
|
15
|
+
- [构建 HAP/HSP/HAR](#3-构建-haphsphar-build_project)
|
|
16
|
+
- [启动应用](#4-启动应用-start_app-仅-windows--macos)
|
|
17
|
+
- [UI 树获取](#5-ui-树获取-get_app_ui_tree-windows--macos)
|
|
18
|
+
- [UI 操作](#6-ui-操作-perform_ui_action-windows--macos)
|
|
19
|
+
- [UI 自动化校验](#7-ui-自动化校验-verify_ui-仅-windows--macos)
|
|
21
20
|
- [平台支持](#平台支持)
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
***
|
|
24
23
|
|
|
25
24
|
## 配置方式
|
|
26
25
|
|
|
@@ -30,8 +29,8 @@
|
|
|
30
29
|
|
|
31
30
|
服务优先读取以下环境变量来定位工具链安装目录:
|
|
32
31
|
|
|
33
|
-
| 环境变量
|
|
34
|
-
|
|
32
|
+
| 环境变量 | 适用平台 | 说明 |
|
|
33
|
+
| ------------- | --------------- | ------------------------- |
|
|
35
34
|
| `DEVECO_PATH` | Windows / macOS | DevEco Studio 安装根目录,优先级最高 |
|
|
36
35
|
|
|
37
36
|
**示例(macOS):**
|
|
@@ -53,19 +52,16 @@ $env:DEVECO_PATH = "C:\Program Files\Huawei\DevEco Studio"
|
|
|
53
52
|
服务通过以下方式(按优先级)确定当前 HarmonyOS 项目的根目录:
|
|
54
53
|
|
|
55
54
|
1. **环境变量** `PROJECT_PATH`:直接指定工程根路径。
|
|
56
|
-
|
|
57
55
|
```bash
|
|
58
56
|
export PROJECT_PATH="/path/to/your/harmonyos-project"
|
|
59
57
|
```
|
|
60
|
-
|
|
61
58
|
2. **MCP 根目录协议**:服务启动后向 MCP 客户端请求 `roots/list`,取第一个根目录作为工程路径。
|
|
62
59
|
|
|
63
|
-
|
|
64
|
-
---
|
|
60
|
+
***
|
|
65
61
|
|
|
66
62
|
## 主要功能
|
|
67
63
|
|
|
68
|
-
### 1. ArkTS
|
|
64
|
+
### 1. ArkTS 代码检查 check\_ets\_files
|
|
69
65
|
|
|
70
66
|
对指定的 `.ets` / `.ts` 文件执行静态诊断,返回语法错误、类型错误等诊断信息。
|
|
71
67
|
|
|
@@ -73,17 +69,42 @@ $env:DEVECO_PATH = "C:\Program Files\Huawei\DevEco Studio"
|
|
|
73
69
|
|
|
74
70
|
**参数:**
|
|
75
71
|
|
|
76
|
-
| 参数
|
|
77
|
-
|
|
78
|
-
| `files` | `string[]` |
|
|
72
|
+
| 参数 | 类型 | 说明 |
|
|
73
|
+
| ------- | ---------- | -------------- |
|
|
74
|
+
| `files` | `string[]` | 待检查 ETS 文件路径列表 |
|
|
79
75
|
|
|
80
76
|
**实现原理:** 服务内嵌 arkts-lang-server JS 脚本,通过 Node.js 启动 LSP 代理进程,以 LSP 协议与 ArkTS 语言服务通信,收集诊断结果后返回。
|
|
81
77
|
|
|
82
|
-
|
|
78
|
+
***
|
|
79
|
+
|
|
80
|
+
### 2. C/C++ 代码检查 check\_cpp\_files
|
|
81
|
+
|
|
82
|
+
对传入的 C/C++ 文件进行静态语法检查并返回 clangd 诊断信息。
|
|
83
|
+
|
|
84
|
+
**工具名称:** `check_cpp_files`
|
|
85
|
+
|
|
86
|
+
**参数:**
|
|
87
|
+
|
|
88
|
+
| 参数 | 类型 | 说明 |
|
|
89
|
+
| ------- | ---------- | ----------------------------------------------------- |
|
|
90
|
+
| `files` | `string[]` | 待检查的 C/C++ 文件路径列表,格式为 `["file1.cpp","file2.hpp",...]` |
|
|
91
|
+
|
|
92
|
+
**实现原理:** 服务内嵌 clangd LSP wrapper JS 脚本,通过 Node.js 启动 LSP 代理进程,以 LSP 协议与 clangd 语言服务通信,收集诊断结果后返回。
|
|
93
|
+
|
|
94
|
+
**初始化流程:** 检查前会自动验证以下条件:
|
|
95
|
+
1. `compile_commands.json` 是否存在于 `.idea/.deveco/cxx/` 目录下
|
|
96
|
+
2. `compile_commands.json` 是否覆盖待检查的文件路径
|
|
97
|
+
3. 项目中是否存在含 C++ 文件的模块
|
|
98
|
+
|
|
99
|
+
若不满足上述条件,服务会自动执行 `compileNative` 生成编译数据库。`compile_commands.json` 会合并所有模块下的编译命令信息。
|
|
83
100
|
|
|
84
|
-
|
|
101
|
+
**支持的文件类型:** `.c`, `.cc`, `.cpp`, `.cxx`, `.c++`, `.h`, `.hh`, `.hpp`, `.hxx`, `.h++`, `.ipp`, `.ixx`, `.inl`, `.inc`, `.tpp`
|
|
85
102
|
|
|
86
|
-
|
|
103
|
+
***
|
|
104
|
+
|
|
105
|
+
### 3. 构建 HAP/HSP/HAR build\_project
|
|
106
|
+
|
|
107
|
+
调用 Hvigor 构建系统对 HarmonyOS 项目进行编译打包。为避免日志过长导致超出大模型上下文限制,工具返回的构建日志最多保留最后 50 行。如需查看完整日志,请使用 `logPath` 参数指定日志保存路径。
|
|
87
108
|
|
|
88
109
|
**工具名称:** `build_project`
|
|
89
110
|
|
|
@@ -93,23 +114,16 @@ $env:DEVECO_PATH = "C:\Program Files\Huawei\DevEco Studio"
|
|
|
93
114
|
|------|------|------|------|
|
|
94
115
|
| `module` | `string` | 否 | 指定模块及 Target(如 `entry@default`);省略则构建整个 APP |
|
|
95
116
|
| `product` | `string` | 否 | 指定 Product 名称(仅构建整个 APP 时有效,与 `module` 互斥) |
|
|
96
|
-
| `
|
|
117
|
+
| `buildMode` | `string` | 否 | 构建模式,值为 build-profile.json5 中 buildModeSet 定义的模式的 name 字段(如内置的 'debug'、'release',或用户自定义的模式名称),默认为 `debug` |
|
|
118
|
+
| `clean` | `boolean` | 否 | 是否在构建前执行 clean 清理构建产物。如果为 true,则会先执行清理然后再进行构建 |
|
|
119
|
+
| `enable_inspector_source_jump` | `boolean` | 否 | 是否启用 ArkUI Inspector 源码跳转功能(对应底层 debugLine 参数):在构建产物中为系统组件增加源码位置信息,从而支持 ArkUI Inspector 中点击组件跳转到源码位置。不传则使用构建模式默认值 |
|
|
97
120
|
| `logPath` | `string` | 否 | 构建日志保存路径 |
|
|
98
121
|
|
|
99
|
-
**构建意图(`BuildIntent`):**
|
|
100
|
-
|
|
101
|
-
| 枚举值 | 说明 |
|
|
102
|
-
|--------|------|
|
|
103
|
-
| `LogVerification`(默认) | 保留详细运行日志,支持断点调试 |
|
|
104
|
-
| `UIDebug` | 支持获取界面元素与代码位置对应关系 |
|
|
105
|
-
| `PerformanceProfile` | 开启代码优化,保留调试钩子,用于性能调优 |
|
|
106
|
-
| `Release` | 极致压缩混淆,不支持断点调试(包体积最小) |
|
|
107
|
-
|
|
108
122
|
构建前会自动执行 `ohpm install` 安装依赖。
|
|
109
123
|
|
|
110
|
-
|
|
124
|
+
***
|
|
111
125
|
|
|
112
|
-
###
|
|
126
|
+
### 4. 启动应用 start\_app (仅 Windows / macOS)
|
|
113
127
|
|
|
114
128
|
在连接的真机或模拟器上安装并启动 HarmonyOS 应用。
|
|
115
129
|
|
|
@@ -117,18 +131,18 @@ $env:DEVECO_PATH = "C:\Program Files\Huawei\DevEco Studio"
|
|
|
117
131
|
|
|
118
132
|
**参数:**
|
|
119
133
|
|
|
120
|
-
| 参数
|
|
121
|
-
|
|
122
|
-
| `module`
|
|
123
|
-
| `target`
|
|
124
|
-
| `hvd`
|
|
125
|
-
| `ability` | `string` | 要启动的 Ability
|
|
134
|
+
| 参数 | 类型 | 说明 |
|
|
135
|
+
| --------- | -------- | ------------------------ |
|
|
136
|
+
| `module` | `string` | 模块名称,默认为 `entry` |
|
|
137
|
+
| `target` | `string` | 构建目标,默认为 `default` |
|
|
138
|
+
| `hvd` | `string` | 目标设备名称或 ID(不指定则列出所有可用设备) |
|
|
139
|
+
| `ability` | `string` | 要启动的 Ability 名称 |
|
|
126
140
|
|
|
127
141
|
支持自动启动未运行的模拟器。
|
|
128
142
|
|
|
129
|
-
|
|
143
|
+
***
|
|
130
144
|
|
|
131
|
-
###
|
|
145
|
+
### 5. UI 树获取 get\_app\_ui\_tree (Windows / macOS)
|
|
132
146
|
|
|
133
147
|
抓取设备当前界面的 UI 树信息,保存为 JSON 文件。
|
|
134
148
|
|
|
@@ -136,15 +150,15 @@ $env:DEVECO_PATH = "C:\Program Files\Huawei\DevEco Studio"
|
|
|
136
150
|
|
|
137
151
|
**参数:**
|
|
138
152
|
|
|
139
|
-
| 参数
|
|
140
|
-
|
|
141
|
-
| `mode`
|
|
142
|
-
| `outputDirectory` | `string`
|
|
143
|
-
| `hvd`
|
|
153
|
+
| 参数 | 类型 | 说明 |
|
|
154
|
+
| ----------------- | ---------------- | ------------------------------ |
|
|
155
|
+
| `mode` | `simple \| full` | `simple`:窗口节点信息;`full`:完整 UI 树 |
|
|
156
|
+
| `outputDirectory` | `string` | 保存 JSON 文件的目录绝对路径 |
|
|
157
|
+
| `hvd` | `string` | 目标设备名称(单设备时可省略) |
|
|
144
158
|
|
|
145
|
-
|
|
159
|
+
***
|
|
146
160
|
|
|
147
|
-
###
|
|
161
|
+
### 6. UI 操作 perform\_ui\_action (Windows / macOS)
|
|
148
162
|
|
|
149
163
|
对设备屏幕执行模拟操作。
|
|
150
164
|
|
|
@@ -152,85 +166,124 @@ $env:DEVECO_PATH = "C:\Program Files\Huawei\DevEco Studio"
|
|
|
152
166
|
|
|
153
167
|
**支持的操作类型(`actionType`):**
|
|
154
168
|
|
|
155
|
-
| 操作类型
|
|
156
|
-
|
|
157
|
-
| `click`
|
|
158
|
-
| `inputText`
|
|
159
|
-
| `directionalFling` | 方向滑动
|
|
160
|
-
| `keyEvent`
|
|
161
|
-
| `screenshot`
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
###
|
|
169
|
+
| 操作类型 | 说明 | 主要参数 |
|
|
170
|
+
| ------------------ | ----------- | -------------------------------------------------- |
|
|
171
|
+
| `click` | 点击指定坐标 | `x`, `y` |
|
|
172
|
+
| `inputText` | 在指定坐标输入文本 | `x`, `y`, `text` |
|
|
173
|
+
| `directionalFling` | 方向滑动 | `direction`(0左/1右/2上/3下), `velocity`, `stepLength` |
|
|
174
|
+
| `keyEvent` | 模拟按键(支持组合键) | `key1`, `key2`, `key3` |
|
|
175
|
+
| `screenshot` | 截图 | `savePath`, `localPath`, `displayId` |
|
|
176
|
+
|
|
177
|
+
***
|
|
178
|
+
|
|
179
|
+
### 7. UI 自动化校验 verify\_ui (仅 Windows / macOS)
|
|
180
|
+
|
|
181
|
+
基于自然语言测试用例计划,在 HarmonyOS 设备上自动执行 UI 操作并验证结果。
|
|
182
|
+
|
|
183
|
+
**功能特性:**
|
|
184
|
+
|
|
185
|
+
- **自然语言驱动**:用中文描述测试步骤,无需编写代码
|
|
186
|
+
- **智能 UI 识别**:基于 AI 视觉分析自动识别界面元素
|
|
187
|
+
- **多种操作支持**:点击、滑动、输入文本、长按、启动应用等
|
|
188
|
+
- **实时截图验证**:每步操作后自动截图验证是否成功
|
|
189
|
+
- **截图保存**:可将每步截图保存到本地,便于复盘问题
|
|
190
|
+
- **日志记录**:详细的测试过程日志,便于问题排查
|
|
191
|
+
|
|
192
|
+
**环境要求:**
|
|
193
|
+
|
|
194
|
+
需配置以下环境变量以连接 AI 视觉模型服务(需支持 Function Call,如阿里云百炼 Qwen3-VL):
|
|
195
|
+
|
|
196
|
+
| 环境变量 | 说明 |
|
|
197
|
+
| ---------------------- | ---------------------------- |
|
|
198
|
+
| `UI_VERIFY_BASE_URL` | OpenAI 兼容接口地址 |
|
|
199
|
+
| `UI_VERIFY_API_KEY` | API Key |
|
|
200
|
+
| `UI_VERIFY_MODEL_NAME` | 模型名称(需支持视觉理解和 Function Call) |
|
|
201
|
+
|
|
202
|
+
**MCP 配置示例:**
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"mcpServers": {
|
|
207
|
+
"deveco-mcp": {
|
|
208
|
+
"command": "cmd",
|
|
209
|
+
"args": [
|
|
210
|
+
"/C",
|
|
211
|
+
"path/to/mcp-server.exe"
|
|
212
|
+
],
|
|
213
|
+
"env": {
|
|
214
|
+
"DEVECO_PATH": "path/to/DevEco Studio",
|
|
215
|
+
"PROJECT_PATH": "${workspaceFolder}",
|
|
216
|
+
"UI_VERIFY_API_KEY": "your-api-key",
|
|
217
|
+
"UI_VERIFY_BASE_URL": "your-openai-compatible-base-url",
|
|
218
|
+
"UI_VERIFY_MODEL_NAME": "your-model-name"
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
166
224
|
|
|
167
|
-
|
|
225
|
+
***
|
|
168
226
|
|
|
169
|
-
**工具名称:** `
|
|
227
|
+
**工具名称:** `verify_ui`(执行 UI 校验)
|
|
170
228
|
|
|
171
|
-
| 参数
|
|
172
|
-
|
|
173
|
-
| `bundleName` | `string` |
|
|
174
|
-
| `testPlan`
|
|
175
|
-
| `freshStart` | `boolean` |
|
|
229
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
230
|
+
| ------------ | --------- | -- | ------------------------------------------ |
|
|
231
|
+
| `bundleName` | `string` | 否 | 待测试应用的包名,不填时自动从项目 `AppScope/app.json5` 中获取 |
|
|
232
|
+
| `testPlan` | `string` | 是 | 自然语言描述的测试用例计划,包含每步操作和预期结果 |
|
|
233
|
+
| `freshStart` | `boolean` | 否 | 是否在测试前重新启动应用,默认 `false` |
|
|
176
234
|
|
|
177
|
-
|
|
235
|
+
返回字段:`successPart`(成功步骤描述)、`failPart`(失败步骤描述)、`id`(校验任务 ID,供后续查日志或截图使用)。
|
|
178
236
|
|
|
179
|
-
|
|
180
|
-
|------|------|------|
|
|
181
|
-
| `id` | `string` | 校验任务 ID |
|
|
182
|
-
| `maxLogSize` | `number` | 日志字符数上限,默认 5000,传 -1 不限制 |
|
|
183
|
-
| `searchKeywords` | `string` | 日志搜索关键词,传空字符串获取完整日志 |
|
|
237
|
+
***
|
|
184
238
|
|
|
185
|
-
|
|
239
|
+
**工具名称:** `get_ui_verification_log`(获取校验运行日志)
|
|
186
240
|
|
|
187
|
-
|
|
241
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
242
|
+
| ---------------- | -------- | -- | ------------------------ |
|
|
243
|
+
| `id` | `string` | 是 | 校验任务 ID |
|
|
244
|
+
| `maxLogSize` | `number` | 否 | 日志字符数上限,默认 5000,传 -1 不限制 |
|
|
245
|
+
| `searchKeywords` | `string` | 否 | 日志搜索关键词,传空字符串获取完整日志 |
|
|
188
246
|
|
|
189
|
-
|
|
247
|
+
***
|
|
190
248
|
|
|
191
|
-
|
|
249
|
+
**工具名称:** `save_ui_screenshot`(保存校验截图)
|
|
192
250
|
|
|
193
|
-
|
|
|
194
|
-
|
|
195
|
-
| `
|
|
196
|
-
| `
|
|
197
|
-
| `level` | 日志级别:`D` / `I` / `W` / `E` / `F` |
|
|
198
|
-
| `tag` | 日志标签过滤 |
|
|
199
|
-
| `domain` | 日志领域(如 `0xD002800`) |
|
|
200
|
-
| `bundleName` | 应用包名(自动获取 PID 过滤) |
|
|
201
|
-
| `keyword` | 关键字正则过滤(与 `tag` 互斥) |
|
|
202
|
-
| `logSize` | 日志缓冲区大小,范围 64K–16M,默认 4M |
|
|
251
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
252
|
+
| --------- | -------- | -- | --------------- |
|
|
253
|
+
| `id` | `string` | 是 | 校验任务 ID |
|
|
254
|
+
| `dirname` | `string` | 是 | 截图保存目录(必须为绝对路径) |
|
|
203
255
|
|
|
204
|
-
|
|
256
|
+
返回该次校验每步操作的截图文件名列表。
|
|
205
257
|
|
|
206
|
-
|
|
258
|
+
***
|
|
207
259
|
|
|
208
|
-
|
|
260
|
+
**最佳实践:**
|
|
209
261
|
|
|
210
|
-
|
|
262
|
+
在 AI 助手中配置好 MCP 后,建议在测试过程中加入以下指引,让 AI 自动串联完整开发测试流程:
|
|
211
263
|
|
|
212
|
-
|
|
264
|
+
```
|
|
265
|
+
开发完成后,请按以下流程完成验证:
|
|
266
|
+
1. 调用 build_project 编译构建项目
|
|
267
|
+
2. 调用 start_app 将应用安装并启动到设备
|
|
268
|
+
3. 调用 verify_ui 执行功能验证,用自然语言描述测试步骤和预期结果
|
|
269
|
+
4. 若验证失败,根据 failPart 描述定位问题,修复后重新执行上述流程,直到验证通过
|
|
270
|
+
5. 如需查看详细日志,使用 get_ui_verification_log 获取运行日志
|
|
271
|
+
6. 如需查看每步截图,使用 save_ui_screenshot 将截图保存到本地目录
|
|
272
|
+
```
|
|
213
273
|
|
|
214
|
-
|
|
215
|
-
|------|------|------|
|
|
216
|
-
| `keywords` | `string[]` | 搜索关键词列表 |
|
|
217
|
-
| `maxCharSize` | `number` | 最大返回字符数,默认 5000 |
|
|
274
|
+
***
|
|
218
275
|
|
|
219
|
-
|
|
276
|
+
## 平台支持
|
|
220
277
|
|
|
221
|
-
|
|
278
|
+
| 功能 | Windows | macOS |
|
|
279
|
+
| -------------- | :-----: | :---: |
|
|
280
|
+
| ArkTS 代码检查 | ✅ | ✅ |
|
|
281
|
+
| C/C++ 代码检查 | ✅ | ✅ |
|
|
282
|
+
| 构建 HAP/HSP/HAR | ✅ | ✅ |
|
|
283
|
+
| 启动应用 | ✅ | ✅ |
|
|
284
|
+
| UI 树获取 | ✅ | ✅ |
|
|
285
|
+
| UI 操作 | ✅ | ✅ |
|
|
286
|
+
| UI 自动化校验 | ✅ | ✅ |
|
|
222
287
|
|
|
223
|
-
|
|
288
|
+
***
|
|
224
289
|
|
|
225
|
-
| 功能 | Windows | macOS |
|
|
226
|
-
|------|:-------:|:-----:|
|
|
227
|
-
| ArkTS 代码检查 | ✅ | ✅ |
|
|
228
|
-
| 构建 HAP/HSP/HAR | ✅ | ✅ |
|
|
229
|
-
| 启动应用 | ✅ | ✅ |
|
|
230
|
-
| UI 树获取 | ✅ | ✅ |
|
|
231
|
-
| UI 操作 | ✅ | ✅ |
|
|
232
|
-
| UI 自动化校验 | ✅ | ✅ |
|
|
233
|
-
| HiLog 日志采集 | ✅ | ✅ |
|
|
234
|
-
| 知识库搜索 | ✅ | ✅ |
|
|
235
|
-
|
|
236
|
-
---
|