@deveco-test/deveco-cli-openharmony-arm64 0.1.2

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.
Files changed (42) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +837 -0
  3. package/SKILL.md +186 -0
  4. package/THIRD-PARTY-LICENSES +5566 -0
  5. package/dist/cli.js +1422 -0
  6. package/dist/internal/doc-init-background.js +66 -0
  7. package/docs.zip +4 -0
  8. package/index.zip +0 -0
  9. package/package.json +108 -0
  10. package/scripts/install-better-sqlite3.mjs +51 -0
  11. package/scripts/install-jieba-wasm.mjs +47 -0
  12. package/scripts/lib/better-sqlite3-vendor.mjs +128 -0
  13. package/scripts/lib/cli-data-dir.mjs +44 -0
  14. package/scripts/lib/doc-init-log-path.mjs +15 -0
  15. package/scripts/lib/jieba-wasm-vendor.mjs +102 -0
  16. package/scripts/postinstall.mjs +64 -0
  17. package/src/resources/aclPermission/aclPermissionsInfo.json +311 -0
  18. package/templates/application/AppScope/app.json5 +10 -0
  19. package/templates/application/AppScope/resources/base/element/string.json +8 -0
  20. package/templates/application/AppScope/resources/base/media/layered_image.json +7 -0
  21. package/templates/application/build-profile.json5 +42 -0
  22. package/templates/application/code-linter.json5 +32 -0
  23. package/templates/application/entry/build-profile.json5 +33 -0
  24. package/templates/application/entry/gitignore.txt +6 -0
  25. package/templates/application/entry/hvigorfile.ts +7 -0
  26. package/templates/application/entry/obfuscation-rules.txt +20 -0
  27. package/templates/application/entry/oh-package.json5 +10 -0
  28. package/templates/application/entry/src/main/ets/entryability/EntryAbility.ets +63 -0
  29. package/templates/application/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets +31 -0
  30. package/templates/application/entry/src/main/ets/pages/Index.ets +38 -0
  31. package/templates/application/entry/src/main/module.json5 +50 -0
  32. package/templates/application/entry/src/main/resources/base/element/color.json +8 -0
  33. package/templates/application/entry/src/main/resources/base/element/float.json +8 -0
  34. package/templates/application/entry/src/main/resources/base/element/string.json +16 -0
  35. package/templates/application/entry/src/main/resources/base/media/layered_image.json +7 -0
  36. package/templates/application/entry/src/main/resources/base/profile/backup_config.json +3 -0
  37. package/templates/application/entry/src/main/resources/base/profile/main_pages.json +5 -0
  38. package/templates/application/entry/src/main/resources/dark/element/color.json +8 -0
  39. package/templates/application/gitignore.txt +12 -0
  40. package/templates/application/hvigor/hvigor-config.json5 +23 -0
  41. package/templates/application/hvigorfile.ts +7 -0
  42. package/templates/application/oh-package.json5 +10 -0
package/README.md ADDED
@@ -0,0 +1,837 @@
1
+ <div align="center">
2
+ <h1>DevEco CLI</h1>
3
+ <p>一个面向 HarmonyOS 应用开发的统一命令行入口。</p>
4
+ <p>
5
+ <a href="https://www.npmjs.com/package/@deveco-test/hmos-deveco-cli"><img src="https://img.shields.io/npm/v/@deveco/deveco-cli.svg" alt="NPM Version" /></a>
6
+ <a href="https://www.npmjs.com/package/@deveco-test/hmos-deveco-cli"><img src="https://img.shields.io/npm/dm/@deveco-test/hmos-deveco-cli.svg" alt="NPM Downloads" /></a>
7
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-%3E%3D18-green.svg" alt="Node.js" /></a>
8
+ <img src="https://img.shields.io/badge/platform-HarmonyOS-blue.svg" alt="Platform" />
9
+ </a>
10
+ <a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License" /></a>
11
+ </p>
12
+ </div>
13
+
14
+ `DevEco CLI` 将 `DevEco Studio` 工具链统一封装为一个 `CLI`,内置 `ohpm`、`hvigor`、`hdc`、`hilog`,同时集成 HarmonyOS 技能安装、项目脚手架、本地 HarmonyOS 文档检索和 `MCP` 服务。
15
+
16
+
17
+ ## 快速开始
18
+
19
+ ### 前置要求
20
+
21
+ - 操作系统为 `HarmonyOS`
22
+ - 安装 Command Line Tool 工具
23
+ - 配置环境变量:
24
+ ```bash
25
+ export COMMAND_LINE_TOOL_PATH=path/to/deveco_tools
26
+ export PATH=$PATH:path/to/deveco_tools/node/bin
27
+ ```
28
+
29
+
30
+ ### 安装
31
+
32
+ ```bash
33
+ npm install -g @deveco-test/hmos-deveco-cli
34
+ ```
35
+
36
+ 安装后可以通过以下命令更新到最新版本:
37
+
38
+ ```bash
39
+ devecocli update
40
+ ```
41
+
42
+ ### 最短工作流
43
+
44
+ ```bash
45
+ devecocli create --app-name MyApp
46
+ cd MyApp
47
+ devecocli run
48
+ devecocli log --level E
49
+ ```
50
+
51
+ ### 文档检索
52
+
53
+ ```bash
54
+ devecocli docs search List
55
+ devecocli docs read harmonyos-guides/application-models/arkts-page-start-overview
56
+ ```
57
+
58
+ 更多命令和参数可通过 `devecocli --help` 或各子命令的 `--help` 查看。
59
+
60
+ ## AI Agent 集成
61
+
62
+ `DevEco CLI` 支持通过命令行将自身技能添加到 `Agent` 中。下面以 `opencode` 为例展示最短流程:
63
+
64
+ ```bash
65
+ # 1. 给 opencode 安装 deveco-cli 技能
66
+ devecocli init --agent opencode
67
+
68
+ # 2. 给 opencode 在当前 HarmonyOS 项目配置 MCP
69
+ devecocli init --mcp --agent opencode --project ./MyApp
70
+
71
+ # 3. 进入项目并启动 opencode
72
+ cd MyApp
73
+ opencode
74
+ ```
75
+
76
+ 如果 `Agent` 不在 `--agent` 参数取值范围内,可使用 `--path` 参数进行添加,参考如下命令:
77
+
78
+ ```bash
79
+ devecocli init --path .\work\ARKTS\NewData
80
+ ```
81
+
82
+ 进入 `Agent` 后可以直接描述任务,例如:
83
+
84
+ - `Build this project in release mode and run it on my device`
85
+ - `Tail the last error logs from this app`
86
+ - `Check for syntax errors in src/main/ets/pages/Index.ets`
87
+
88
+ ## 常用命令
89
+
90
+ | 命令 | 用途 |
91
+ | ------------------------- | ----------------------------------------- |
92
+ | `devecocli create` | 创建新的 HarmonyOS 项目 |
93
+ | `devecocli build` | 构建项目并产出 `.hap` / `.hsp` / `.har` / `.app` |
94
+ | `devecocli check lint` | 检查代码规范并输出实践建议与报告 |
95
+ | `devecocli run` | 安装并运行应用 |
96
+ | `devecocli device list` | 查看当前连接设备 |
97
+ | `devecocli log` | 查看 `hilog` 或崩溃日志 |
98
+ | `devecocli docs search` | 搜索本地 HarmonyOS 文档 |
99
+ | `devecocli init` | 安装内置技能或配置 `MCP` |
100
+ | `devecocli skills` | 管理 HarmonyOS 技能市场中的技能 |
101
+ | `devecocli signature generate` | 自动生成调试签名材料并配置到项目 |
102
+
103
+ ## 命令集
104
+
105
+ ### `help`
106
+
107
+ 查看版本、帮助信息以及所有子命令
108
+
109
+ **命令格式:**
110
+
111
+ ```bash
112
+ devecocli help
113
+ ```
114
+
115
+ ```text
116
+ # 返回结果
117
+ Usage: devecocli [options] [command]
118
+
119
+ HarmonyOS application development command line tool
120
+
121
+ Options:
122
+ -V, --version output the version number
123
+ -h, --help display help for command
124
+
125
+ Commands:
126
+ build [options] Build the HarmonyOS project
127
+ run [options] Build and run the project on a connected device
128
+ update Update deveco-cli to the latest version
129
+ device Manage connected devices
130
+ auth Authentication commands (login, logout, status, team)
131
+ ui Inspect and interact with UI on a connected device
132
+ skills Manage HarmonyOS skills
133
+ log [options] Obtain device application logs
134
+ create [options] Scaffold a new HarmonyOS application project
135
+ init [options] Install the deveco-cli skill or configure the deveco-mcp server into AI agents
136
+ serve Host bundled auxiliary protocol servers
137
+ docs [options] Search and read HarmonyOS documentation from local docs directory
138
+ check Run DevEco project checks
139
+ signature Generate application signature
140
+ help [command] display help for command
141
+ ```
142
+
143
+ ### `init`
144
+
145
+ 将`deveco-cli` `Skill` 或者 `MCP` 服务配置到智能体中
146
+
147
+ **命令格式:**
148
+
149
+ ```bash
150
+ devecocli init --agent <agents> --project <path> --path <path> --skill --mcp --force
151
+ ```
152
+
153
+ **参数:**
154
+
155
+ | 参数名 | 说明 |
156
+ | ----------- | ----------------------------------------------------------------------------------------- |
157
+ | --agent | 可选,智能体名称,多个智能体名称以英文逗号分隔。缺省时配置到所有已检测到的智能体中 |
158
+ | --project | 可选,指定工程路径,将`deveco-cli` `Skill` 或 `MCP` 服务安装到该工程项目中 |
159
+ | --path | 可选,指定 `deveco-cli` `Skill` 的配置路径。不可与 `--project` 、`--agent` 、 `--mcp` 同时使用 |
160
+ | --skill | 可选,安装 `deveco-cli` `Skill`。不可与 `--mcp` 同时使用。`--mcp` 与 `--skill` 都缺省时,执行 `--skill` |
161
+ | --mcp | 可选,配置 `MCP` 服务,与 `--project` 一起使用表示配置工程级 `MCP` 服务,独立使用表示配置用户级 `MCP` 服务。不可与 `--skill` 同时使用 |
162
+ | -f, --force | 可选,当目标位置已存在 `deveco-cli` `Skill` 或 `MCP` 服务时,覆盖重装 |
163
+
164
+ **示例:**
165
+
166
+ ```bash
167
+ # 配置Skill
168
+ devecocli init -f # 安装或更新deveco-cli Skill
169
+ devecocli init --skill
170
+ devecocli init --agent agentname # agentname需替换为实际的智能体名称
171
+ devecocli init --path /path/to/project -f
172
+
173
+ # 配置MCP
174
+ devecocli init --mcp
175
+ devecocli init --mcp --agent agentname # agentname需替换为实际的智能体名称
176
+ devecocli init --mcp --project /path/to/project -f
177
+ ```
178
+
179
+ ### `docs search`
180
+
181
+ 将关键词搜索版本说明、指南、API参考、最佳实践、`FAQ` 、变更预告等中的内容
182
+
183
+ **命令格式:**
184
+
185
+ ```bash
186
+ devecocli docs search <keywords...> --catalog <name> --format <fmt> --limit <n>
187
+ ```
188
+
189
+ **参数:**
190
+
191
+ | 参数名 | 说明 |
192
+ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
193
+ | keywords... | 必选,搜索关键词,多个关键词用空格隔开 |
194
+ | --catalog | 可选,文档类别,取值包含`harmonyos-releases`(版本说明)、 `harmonyos-guides`(指南)、`harmonyos-references`(API参考)、`best-practices`(最佳实践)、`harmonyos-faqs`(FAQ)、`harmonyos-roadmap`(变更预告)、`all`(所有分类,默认) |
195
+ | --format | 可选,控制输出格式,取值包括 `default` 、`json` ,默认为`default` ,输出结果包括文档ID、标题、文档的概括内容 |
196
+ | --limit | 可选,设置搜索结果返回条数,默认为20 |
197
+
198
+ **示例:**
199
+
200
+ ```bash
201
+ devecocli docs search 沉浸光感
202
+ devecocli docs search '@State' '@Prop' --catalog best-practices --limit 10
203
+ devecocli docs search Row Column --format json
204
+ ```
205
+
206
+ ### `docs read`
207
+
208
+ 按文档ID查询文档的完整内容
209
+
210
+ **命令格式:**
211
+
212
+ ```bash
213
+ devecocli docs read <documentId>
214
+ ```
215
+
216
+ **参数:**
217
+
218
+ | 参数名 | 说明 |
219
+ | ---------- | ------- |
220
+ | documentId | 必选,文档ID |
221
+
222
+ **示例:**
223
+
224
+ ```bash
225
+ devecocli docs read 开发指南/应用框架/UI_Design_Kit_UI设计套件/沉浸光感/ui-design-hds-component-material
226
+ ```
227
+
228
+ ### `docs catalog`
229
+
230
+ 查询文档分类和分类名称
231
+
232
+ **命令格式:**
233
+
234
+ ```bash
235
+ devecocli docs catalog --format <fmt>
236
+ ```
237
+
238
+ **参数:**
239
+
240
+ | 参数名 | 说明 |
241
+ | -------- | ----------------------------------------- |
242
+ | --format | 可选,输出格式,`default` 或 `json` ,默认为 `default` |
243
+
244
+ **示例:**
245
+
246
+ ```bash
247
+ devecocli docs catalog
248
+ devecocli docs catalog --format json
249
+ ```
250
+
251
+ ### `create`
252
+
253
+ 创建 HarmonyOS 应用工程,仅支持创建工程模板中的 `Empty Ability` 模板
254
+
255
+ **命令格式:**
256
+
257
+ ```bash
258
+ devecocli create --app-name <name> --project-path <path> --bundle-name <bundle> --api-level <level>
259
+ ```
260
+
261
+ **参数:**
262
+
263
+ | 参数名 | 说明 |
264
+ | -------------- | ----------------------------------------------------------------- |
265
+ | --app-name | 必选,应用名称 |
266
+ | --project-path | 可选,工程路径,默认为:`./<appname>` |
267
+ | --bundle-name | 可选,包名,默认为:`com.example.<appname>` ,`appname` 自动转为小写 |
268
+ | --api-level | 可选,API级别,最小值为17,最大值从安装的 `Deveco Studio` 的 `HarmonyOS` `SDK` 中自动获取 |
269
+
270
+ **示例:**
271
+
272
+ ```bash
273
+ devecocli create --project-path ./MyApp --app-name MyApp
274
+ devecocli create --project-path ./MyApp --app-name MyApp --bundle-name com.acme.myapp --api-level 23
275
+ devecocli create --app-name MyApp
276
+ ```
277
+
278
+ ### `auth login`
279
+
280
+ 登录华为开发者账号,打开浏览器完成授权。
281
+
282
+ **命令格式:**
283
+
284
+ ```bash
285
+ devecocli auth login
286
+ ```
287
+
288
+ **说明:**
289
+
290
+ - 海外账户暂不支持
291
+
292
+ ### `auth logout`
293
+
294
+ 登出并清除本地存储的凭据
295
+
296
+ **命令格式:**
297
+
298
+ ```bash
299
+ devecocli auth logout
300
+ ```
301
+
302
+ ### `auth status`
303
+
304
+ 显示当前登录的用户
305
+
306
+ **命令格式:**
307
+
308
+ ```bash
309
+ devecocli auth status
310
+ ```
311
+
312
+ ### `auth team list`
313
+
314
+ 列出当前用户已加入的团队
315
+
316
+ **命令格式:**
317
+
318
+ ```bash
319
+ devecocli auth team list
320
+ ```
321
+
322
+ **示例:**
323
+
324
+ ```bash
325
+ devecocli auth team list
326
+ ```
327
+
328
+ ### `build`
329
+
330
+ 编译并打包 HarmonyOS 工程或工程中的模块
331
+
332
+ **命令格式:**
333
+
334
+ ```bash
335
+ devecocli build --product <product> --modules <modules> --build-mode <mode>
336
+ ```
337
+
338
+ **参数:**
339
+
340
+ | 参数名 | 说明 |
341
+ | ------------ | ------------------------------------------------------------------------------------------------------- |
342
+ | --product | 可选,产品的名称,默认为 `default` |
343
+ | --modules | 可选,模块的名称。如需指定模块的 `target` 信息,使用 `module@target` 形式。当工程中只有一个模块时,可缺省;当工程中存在多个模块,且仅存在一个 `entry` 类型的模块时,可缺省 |
344
+ | --build-mode | 可选,构建模式,默认为 `debug` |
345
+
346
+ **示例:**
347
+
348
+ ```bash
349
+ devecocli build --build-mode release
350
+ devecocli build --modules entry library
351
+ devecocli build --modules library@phone
352
+ devecocli build --product oversea --modules entry --build-mode release
353
+ ```
354
+
355
+ **说明:**
356
+
357
+ - 选定模块的依赖会被自动解析和构建
358
+ - 执行`devecocli build --product <name>`命令后,产物为 `.app`
359
+ - 执行`devecocli build --product <name> --modules <m1>`命令后,产物为 `.hap` / `.hsp` / `.har`
360
+
361
+ ### `build clean`
362
+
363
+ 清理 HarmonyOS 项目的构建产物
364
+
365
+ **命令格式:**
366
+
367
+ ```bash
368
+ devecocli build clean
369
+ ```
370
+
371
+ ### `check lint`
372
+
373
+ 检查代码规范并输出实践建议与报告。
374
+
375
+ **命令格式:**
376
+
377
+ ```bash
378
+ devecocli check lint [path]
379
+ ```
380
+
381
+ **参数:**
382
+
383
+ | 参数名 | 说明 |
384
+ | ---------------------------- | --------------------------------------------------------------------- |
385
+ | `[path]` | 可选,待检查的文件或目录;默认使用 `build-profile.json5` 所在的项目根目录,否则使用当前目录 |
386
+ | `--config-path <path>` | Code Linter 配置文件路径,仅支持 `.json` 或 `.json5`;默认使用待检查项目根目录下的 `code-linter.json5`,显式指定时必须与待检查路径属于同一项目 |
387
+ | `--fix` | 自动修复可修复的问题 |
388
+ | `--incremental` | 仅检查 Git 未提交文件 |
389
+ | `--product <name>` | `build-profile.json5` 中定义的 product,默认为 `default` |
390
+ | `--format <default\|json>` | 完整报告格式;`default` 输出 Markdown,`json` 输出 JSON |
391
+ | `--output-path <path>` | 完整报告文件或目录;目录形式会自动生成带时间戳的报告文件 |
392
+ | `--limit <number>` | 未指定 `--output-path` 时,限制终端显示的问题数量 |
393
+
394
+ ### `device list`
395
+
396
+ 查询所有已连接的设备
397
+
398
+ **命令格式:**
399
+
400
+ ```bash
401
+ devecocli device list
402
+ ```
403
+
404
+ ### `device view`
405
+
406
+ 查询已连接的设备的详细信息,包括设备序列号、设备名称、设备类型、 `OS` 版本等
407
+
408
+ **命令格式:**
409
+
410
+ ```bash
411
+ devecocli device view --target <serialOrName>
412
+ ```
413
+
414
+ **参数:**
415
+
416
+ | 参数名 | 说明 |
417
+ | ----------- | ------------------------------------- |
418
+ | -t,--target | 可选,目标设备名称或序列号。多设备缺省时,会列出所有已连接设备序列号和名称 |
419
+
420
+ **示例:**
421
+
422
+ ```bash
423
+ devecocli device view
424
+ devecocli device view --target 127.0.0.1:5555
425
+ devecocli device view -t "My Device Name"
426
+ ```
427
+
428
+ ### `run`
429
+
430
+ 构建应用后,将应用安装到设备上,并启动执行
431
+
432
+ **命令格式:**
433
+
434
+ ```bash
435
+ devecocli run --module <module> --device <device> --product <product> --build-mode <mode> --ability <ability> --uninstall --skip-build --apply <txtFile>
436
+ ```
437
+
438
+ **参数:**
439
+
440
+ | 参数名 | 说明 |
441
+ | ------------ | ------------------------------------------------------------------------------------------------------ |
442
+ | --module | 可选,模块名称。如需指定模块的 `target` 信息,使用 `module@target` 形式。当工程中只有一个可运行模块( `entry` / `feature` / `shared` )时,可缺省 |
443
+ | --device | 设备名称或设备序列号,单设备时可选,多设备时必选 |
444
+ | --product | 可选,产品的名称,默认为 `default` |
445
+ | --build-mode | 可选,构建模式名称,默认为 `debug` |
446
+ | --ability | 可选,待启动的 `Ability` ,默认:模块 `module.json5` 中的`mainElement` |
447
+ | --uninstall | 可选,安装前先卸载已有应用 |
448
+ | --skip-build | 可选,跳过构建操作,直接安装应用 。\*\*说明:\*\*使用该参数时,需确保对应模块已有构建产物 |
449
+ | --apply \<fileName\> | 可选,**快速增量部署**:仅重编改动文件 → signed hqf → `bm quickfix -a -f -o` 安装 → 重启,比全量 `run` 快。`<fileName>` 是工程 `.hvigor/` 目录下的**纯文件名**(调用方把清单写到此目录,文件名做安全校验防穿越);内容为本轮改动的源文件路径清单(每行一个相对工程根路径;`#`/空行忽略;`.ets`/`.ts`/`.cpp`/资源文件;changeFileList 增量累积,只需列本轮改的,历史文件自动保留)。模块从清单路径自动识别(无需 `--module`)。**前提**:先 `devecocli run` 全量构建部署一次(生成 buildConfig.json 缓存);**没生效排查**:检查 `<module>/build/config/buildConfig.json` 有无内容(空/无 = 没跑过 `devecocli run`);**失败兜底**:直接 `devecocli run` |
450
+
451
+ **示例:**
452
+
453
+ ```bash
454
+ devecocli run
455
+ devecocli run --module entry --device 127.0.0.1:5555
456
+ devecocli run --module library@phone --device 127.0.0.1:5555
457
+ devecocli run --product oversea --module entry --ability EntryAbility
458
+ devecocli run --build-mode release
459
+ devecocli run --uninstall
460
+ devecocli run --apply changes.txt
461
+ ```
462
+
463
+ ### `log`
464
+
465
+ 查看`hilog`普通日志或崩溃日志
466
+
467
+ **命令格式:**
468
+
469
+ ```bash
470
+ devecocli log --device <device> --crash --level <level> --bundle-name <bundle-name> --keyword <keyword> --tail <num> --from <start> --to <end> --follow
471
+ ```
472
+
473
+ **参数:**
474
+
475
+ | 参数名 | 说明 |
476
+ | ------------- | -------------------------------------------------------------------------------------------------------------------------- |
477
+ | --device | 设备名称或设备序列号,单设备时可选,多设备时必选 |
478
+ | --crash | 可选,查看崩溃日志 |
479
+ | --level | 可选,日志级别,取值包括`D`( `Debug` )、`I`( `Info` )、`W`( `Warn` )、`E`( `Error` )、`F`( `Fatal` ) |
480
+ | --bundle-name | 可选,根据包名查看日志 |
481
+ | --keyword | 可选,根据关键词查看日志,关键词区分大小写 |
482
+ | --tail | 可选,显示最新的N行日志,取值为正整数 |
483
+ | --from | 可选,起始时间,单位为`m`和`s`,`m`和`s`为小写,默认为`s`,`start`的取值需要大于等于`end` |
484
+ | --to | 可选,结束时间,单位为`m`和`s`,`m`和`s`为小写,默认为`s` 。不可与--follow同时使用。**说明:** 如当前时间为05:00,`start`设置为30s,`end`设置为10s,则起始时间为04:30,结束时间为04:50 |
485
+ | --follow | 可选,实时输出日志。不可与--to同时使用 |
486
+
487
+ **示例:**
488
+
489
+ ```bash
490
+ devecocli log --level E
491
+ devecocli log --crash --bundle-name com.example.app
492
+ devecocli log --device 127.0.0.1:5555 --level W --keyword Init
493
+ devecocli log --tail 100 --from 5m --to 2m
494
+ devecocli log --follow --bundle-name com.example.app
495
+ ```
496
+
497
+ ### `skills list`
498
+
499
+ 查询可用的 `Skill`
500
+
501
+ **命令格式:**
502
+
503
+ ```bash
504
+ devecocli skills list --long
505
+ ```
506
+
507
+ **参数:**
508
+
509
+ | 参数名 | 说明 |
510
+ | --------- | ----------------------------------------------- |
511
+ | -l,--long | 可选,`Skill` 详情,包括描述和已安装的智能体列表。缺省时,仅显示 `Skill` 名称 |
512
+
513
+ **示例:**
514
+
515
+ ```bash
516
+ devecocli skills list
517
+ devecocli skills list --long
518
+ devecocli skills list -l
519
+ ```
520
+
521
+ ### `skills find`
522
+
523
+ 按关键词搜索 `Skill`
524
+
525
+ **命令格式:**
526
+
527
+ ```bash
528
+ devecocli skills find <keyword>
529
+ ```
530
+
531
+ **参数:**
532
+
533
+ | 参数名 | 说明 |
534
+ | ------- | -------- |
535
+ | keyword | 必选,搜索关键词 |
536
+
537
+ **示例:**
538
+
539
+ ```bash
540
+ devecocli skills find deveco
541
+ ```
542
+
543
+ ### `skills add`
544
+
545
+ 将 `Skill` 添加到智能体中
546
+
547
+ **命令格式:**
548
+
549
+ ```bash
550
+ devecocli skills add --all --agent <agents> --skill <skill-name> --project <path> --path <path> --force
551
+ ```
552
+
553
+ **参数:**
554
+
555
+ | 参数名 | 说明 |
556
+ | ---------- | --------------------------------------------------------- |
557
+ | --all | 可选,添加所有可用的 `Skill` ,与 `--skill` 二选一 |
558
+ | --agent | 可选,智能体名称,多个智能体时以英文逗号分隔。缺省时,添加到已检测到的智能体中 |
559
+ | --skill | 可选,待添加的 `Skill` 名称,与 `--all` 二选一 |
560
+ | --project | 可选,指定项目路径,将 `Skill` 添加到该工程项目中 |
561
+ | --path | 可选,指定路径,将 `Skill` 添加到该路径,不可与 `--project` 或 `--agent` 同时使用 |
562
+ | -f,--force | 可选,当目标位置已有同名 `Skill` 时,覆盖重添加 |
563
+
564
+ **示例:**
565
+
566
+ ```bash
567
+ devecocli skills add --all
568
+ devecocli skills add --skill skillname --agent agentname --force # skillname需替换成实际的Skill名称
569
+ devecocli skills add --skill skillname --project ./my-app # skillname需替换成实际的Skill名称
570
+ ```
571
+
572
+ ### `skills remove`
573
+
574
+ 从智能体中删除已添加的 `Skill`
575
+
576
+ **命令格式:**
577
+
578
+ ```bash
579
+ devecocli skills remove --skill <skill-name> --agent <agents> --project <path> --path <path>
580
+ ```
581
+
582
+ **参数:**
583
+
584
+ | 参数名 | 说明 |
585
+ | --------- | -------------------------------------------------------- |
586
+ | --skill | 必选,待删除的 `Skill` 名称 |
587
+ | --agent | 可选,智能体名称,多个智能体时以英文逗号分隔。缺省时,删除到已检测到的智能体中的 `Skill` |
588
+ | --project | 可选,指定项目路径,删除该项目中的 `Skill` |
589
+ | --path | 可选,指定路径,删除该项目中的 `Skill`,不可与 `--project` 或 `--agent` 同时使用 |
590
+
591
+ **示例:**
592
+
593
+ ```bash
594
+ devecocli skills remove --skill skillname # skillname需替换成实际的Skill名称
595
+ devecocli skills remove --skill skillname --agent agentname # skillname需替换成实际的Skill名称
596
+ ```
597
+
598
+ ### `serve mcp`
599
+
600
+ 启动本地 `MCP` 服务。智能体配置 `MCP` 服务后,可通过 `MCP` 协议调用下方列出的代码分析与语言特性工具。不同智能体平台配置 `MCP` 服务的界面不一样,一个智能体平台的配置示例如下。
601
+ 推荐通过 `devecocli init --mcp` 自动配置
602
+
603
+ ```bash
604
+ {
605
+ "mcp": {
606
+ "deveco-mcp": {
607
+ "type": "local",
608
+ "command": [
609
+ "devecocli",
610
+ "serve",
611
+ "mcp"
612
+ ],
613
+ "environment":{
614
+ "PROJECT_PATH": "/path/to/project", // 工程路径
615
+ "NODE_MAX_OLD_SPACE_SIZE": "8192", // 可选,设置内部node进程最大的老生代内存大小,默认为8192
616
+ },
617
+ "enbale": true
618
+ }
619
+ }
620
+ }
621
+ ```
622
+
623
+ #### MCP 工具
624
+
625
+ `deveco-mcp` 服务遵循 [MCP](https://modelcontextprotocol.io) 规范,通过 `tools/list` 暴露工具、由模型经 `tools/call` 调用。每个工具由**名称**、**描述**和 **JSON Schema 入参**定义;返回值为 `content` 文本数组,`isError: true` 表示执行错误。
626
+
627
+ **工具总览:**
628
+
629
+ | 工具名 | 用途 | 支持语言 |
630
+ | --- | --- | --- |
631
+ | `check` | 静态语法分析,返回结构化诊断信息 | ArkTS、C/C++ |
632
+ | `hover` | 获取指定位置的悬浮信息(类型、文档) | ArkTS、C/C++ |
633
+ | `definition` | 查找符号定义位置 | ArkTS、C/C++ |
634
+ | `declaration` | 查找符号声明位置(ArkTS 中可能与定义不同) | ArkTS、C/C++ |
635
+ | `references` | 查找符号在全工程中的所有引用 | ArkTS、C/C++ |
636
+ | `implementation` | 查找符号的实现(如接口实现) | ArkTS、C/C++ |
637
+ | `workspaceSymbol` | 按名称在全工程搜索符号 | ArkTS、C/C++ |
638
+ | `documentSymbol` | 获取单文件的符号树(函数、类、变量及范围) | ArkTS、C/C++ |
639
+ | `callHierarchy` | 查询函数调用关系(incoming=调用方,outgoing=被调用方) | ArkTS 双向、C/C++ 仅 incoming |
640
+ | `restart` | 原地重启(重置状态 + 重新 sync/init),不杀进程、客户端不断开;ERROR 态可用 | ArkTS、C/C++(可按 target 单选) |
641
+
642
+ **可用性说明:**
643
+
644
+ - `check` 与 `restart` 始终注册;其余 7 个语言特性工具仅在 DevEco Studio 附带标准 LSP 服务入口(`standardIndex/index.js`)时注册,老版本将不暴露这些工具。
645
+ - 所有语言特性工具需项目进入 `READY` 状态(`ohpm install` + `hvigor sync` + LSP 初始化完成)后才可用;未就绪时返回 `please retry in N seconds`,模型可稍后重试。`restart` 例外:它正是用于把 server 从 `ERROR` 态拉回,调用后返回"约 10 秒后重试",后台异步重置并重新 sync/init。
646
+ - C/C++ 工具需要工程包含 C++ 模块;无 C++ 代码时返回 `No C++ code`。
647
+ - 支持的文件扩展名:ArkTS 为 `.ets`;C/C++ 为 `.c` `.cc` `.cpp` `.cxx` `.c++` `.h` `.hh` `.hpp` `.hxx` `.h++` `.ipp` `.ixx` `.inl` `.inc` `.tpp`。
648
+ - 不属于当前工程的路径会被拒绝。
649
+
650
+ **入参定义:**
651
+
652
+ ##### `check`
653
+
654
+ 对传入的源文件进行静态语法分析并返回诊断信息,支持 ArkTS 与 C/C++ 在同一次调用中混合传入。
655
+
656
+ | 参数 | 类型 | 必选 | 说明 |
657
+ | --- | --- | --- | --- |
658
+ | `files` | string[] | 是 | 待检查的源文件路径列表,相对工程根目录,至少 1 个 |
659
+
660
+ ##### `hover` / `definition` / `declaration` / `references` / `implementation`
661
+
662
+ 位置类语言特性,共享同一入参结构。返回该位置符号的类型/文档信息、定义/声明位置、引用列表或实现列表。
663
+
664
+ | 参数 | 类型 | 必选 | 说明 |
665
+ | --- | --- | --- | --- |
666
+ | `file` | string | 是 | 源文件路径,相对工程根目录,支持 `.ets` 与 C/C++ 扩展名 |
667
+ | `line` | number | 是 | 行号,0-based |
668
+ | `character` | number | 是 | 列号(字符偏移),0-based |
669
+
670
+ ##### `workspaceSymbol`
671
+
672
+ 按名称在全工程搜索符号,无需打开具体文件。
673
+
674
+ | 参数 | 类型 | 必选 | 说明 |
675
+ | --- | --- | --- | --- |
676
+ | `query` | string | 是 | 符号名称或片段,非空 |
677
+
678
+ ##### `documentSymbol`
679
+
680
+ 获取单个文件的符号树,适合文件概览、结构化拆解和大文件切片。
681
+
682
+ | 参数 | 类型 | 必选 | 说明 |
683
+ | --- | --- | --- | --- |
684
+ | `file` | string | 是 | 源文件路径,相对工程根目录,支持 `.ets` 与 C/C++ 扩展名 |
685
+
686
+ ##### `callHierarchy`
687
+
688
+ 查询某位置函数的调用关系。
689
+
690
+ | 参数 | 类型 | 必选 | 说明 |
691
+ | --- | --- | --- | --- |
692
+ | `file` | string | 是 | 源文件路径,相对工程根目录,支持 `.ets` 与 C/C++ 扩展名 |
693
+ | `line` | number | 是 | 行号,0-based |
694
+ | `character` | number | 是 | 列号(字符偏移),0-based |
695
+ | `direction` | enum | 是 | `incoming`=谁调用了该函数;`outgoing`=该函数调用了谁。ArkTS 支持双向,C/C++(clangd)仅 `incoming` |
696
+
697
+ ##### `restart`
698
+
699
+ 原地重启 MCP server:重置双侧状态并重新 sync/init(ohpm install + hvigor sync + compileNative + LSP 握手),不杀进程、客户端连接保持。用于 sync/init 失败导致 server 停在 `ERROR` 态时(免去退出并重开 agent)。fire-and-forget:立即返回"约 10 秒后重试",重置在后台异步进行。**注意:`restart` 仅在修复根因后用于恢复,不能修复错误的工程配置。若重启后再次失败,说明是持久性配置问题(oh-package.json5/build-profile.json5 无效、ohpm install 或 hvigor sync 失败、SDK 版本不符等),不要循环调用 `restart`,应请用户排查并修复工程后再重试。**
700
+
701
+ | 参数 | 类型 | 必选 | 说明 |
702
+ | --- | --- | --- | --- |
703
+ | `target` | enum | 否 | 重启哪一侧:`arkts`(ArkTS ace-server)、`cpp`(C++ clangd)、`all`(双侧,默认)。省略等同 `all` |
704
+
705
+ ### `serve lsp`
706
+
707
+ 启动本地 `LSP` 语言服务。智能体配置 `LSP` 服务后,可通过 `LSP` 协议获取代码补全、跳转定义、悬浮提示、引用查找、诊断等语言特性。当前支持 `ArkTS`和 `clangd`。
708
+
709
+ ```bash
710
+ {
711
+ "lsp": {
712
+ "ArkTS": {
713
+ "command": [
714
+ "devecocli",
715
+ "serve",
716
+ "lsp",
717
+ "--arkts"
718
+ ],
719
+ "extensions": [
720
+ ".ets"
721
+ ]
722
+ },
723
+ "clangd": {
724
+ "command": [
725
+ "devecocli",
726
+ "serve",
727
+ "lsp",
728
+ "--cpp"
729
+ ],
730
+ "extensions": [
731
+ ".c",
732
+ ".cpp",
733
+ ".cc",
734
+ ".cxx",
735
+ ".h",
736
+ ".hpp",
737
+ ".hxx",
738
+ ".hh"
739
+ ]
740
+ }
741
+ }
742
+ }
743
+ ```
744
+
745
+ **参数:**
746
+
747
+ | 参数名 | 说明 |
748
+ | --- | --- |
749
+ | `--arkts` | 与 `--cpp` 二选一,启动 ArkTS 语言服务(ace-server) |
750
+ | `--cpp` | 与 `--arkts` 二选一,启动 C/C++ 语言服务(clangd) |
751
+ | `--project-path <path>` | 可选,工程根路径,默认为当前工作目录 |
752
+ | `--auto-detect` | 可选,当前目录向下查找工程根(检查当前目录自身及其子目录,最多 3 层子目录);适用于 `--arkts` 和 `--cpp`;指定了 `--project-path` 则忽略 |
753
+
754
+ ### `signature generate`
755
+
756
+ 自动生成调试签名材料(包括p12密钥库、csr证书请求文件、p7b配置文件、cer证书文件),并将签名配置写入项目的 `build-profile.json5` 中。
757
+
758
+ **命令格式:**
759
+
760
+ ```bash
761
+ devecocli signature generate --product <product> --team-id <team-id> --force --help
762
+ ```
763
+
764
+ **参数:**
765
+
766
+ | 参数名 | 说明 |
767
+ |-----------------------|-----------------------------------------|
768
+ | --product \<product\> | 可选,指定product生成签名,默认为 `default` |
769
+ | --team-id \<team-id\> | 可选,指定生效的team-id,默认使用自身作为团队信息 |
770
+ | --force | 可选,强制覆盖已存在的证书文件 |
771
+ | --help,--h | 可选,查看帮助信息 |
772
+
773
+ **示例:**
774
+
775
+ ```bash
776
+ # 自动生成签名并写入工程配置
777
+ devecocli signature generate
778
+
779
+ # 指定product
780
+ devecocli signature generate --product default
781
+
782
+ # 指定team-id
783
+ devecocli signature generate --team-id 1222
784
+
785
+ # 强制覆盖已存在的证书文件
786
+ devecocli signature generate --force
787
+
788
+ # 查询帮助信息
789
+ devecocli signature generate --help
790
+ ```
791
+
792
+ ## 常见问题
793
+
794
+ ### 如何本地推包运行
795
+
796
+ 当没有真机设备连接时,可以通过无线调试实现自连,在本地推包运行应用:
797
+
798
+ **步骤 1:开启无线调试**
799
+
800
+ 在设备上进入:系统 → 开发者选项 → 无线调试,开启无线调试功能。
801
+
802
+ **步骤 2:配置 hdc 命令路径**
803
+
804
+ 将 hdc 工具路径添加到环境变量:
805
+
806
+ ```bash
807
+ export PATH=$PATH:path/to/deveco_tools/sdk/default/openharmony/toolchains
808
+ ```
809
+
810
+ **步骤 3:通过 hdc 命令自连**
811
+
812
+ 使用 hdc 命令连接设备的 IP 和端口:
813
+
814
+ ```bash
815
+ hdc tconn IP:端口
816
+ ```
817
+
818
+ 连接成功后,即可使用 `devecocli run` 命令推包运行应用。
819
+
820
+
821
+ ## 开发
822
+
823
+ ```bash
824
+ npm install
825
+ npm run dev
826
+ npm start -- <command>
827
+ npm run lint
828
+ npm run format
829
+ npm run build
830
+ ```
831
+
832
+ - 架构与目录说明见 [`AGENTS.md`](./AGENTS.md)
833
+ - 如需参与维护,建议先阅读 `AGENTS.md` 中的约定与架构说明
834
+
835
+ ## 许可证
836
+
837
+ [MIT](./LICENSE)