@buaa_smat/hometrans 0.1.14 → 0.1.16

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 (41) hide show
  1. package/README.md +110 -139
  2. package/agents/build-fixer.md +385 -384
  3. package/agents/code-reviewer.md +240 -240
  4. package/agents/logic-coder.md +199 -199
  5. package/agents/logic-context-builder.md +194 -194
  6. package/agents/review-fixer.md +405 -405
  7. package/agents/self-test-fixer.md +296 -296
  8. package/agents/self-tester.md +396 -393
  9. package/agents/spec-generator.md +540 -540
  10. package/dist/cli/config-store.js +150 -17
  11. package/dist/cli/config.js +10 -3
  12. package/dist/cli/init.js +391 -233
  13. package/dist/cli/uninstall.js +12 -7
  14. package/dist/context/index.js +19 -2
  15. package/env-requirements.json +177 -181
  16. package/package.json +1 -1
  17. package/resource/choose_editor.png +0 -0
  18. package/resource/migration_process.svg +94 -0
  19. package/resource/migration_process_transparent.svg +93 -0
  20. package/resource/set_environment.png +0 -0
  21. package/resource/set_multimodel.png +0 -0
  22. package/resource/set_sdk.png +0 -0
  23. package/skills/hmos-batch-ui-align/SKILL.md +108 -108
  24. package/skills/hmos-convert-pipeline/SKILL.md +429 -429
  25. package/skills/hmos-fix-build-errors/SKILL.md +273 -272
  26. package/skills/hmos-incremental-ui-align/{readme.md → README.md} +234 -237
  27. package/skills/hmos-incremental-ui-align/SKILL.md +218 -218
  28. package/skills/hmos-incremental-ui-align/scripts/__pycache__/app_feature_verify.cpython-314.pyc +0 -0
  29. package/skills/hmos-incremental-ui-align/scripts/app_feature_verify.py +128 -29
  30. package/skills/hmos-incremental-ui-align/scripts/navigation-capure.md +37 -37
  31. package/skills/hmos-incremental-ui-align/scripts/page_capture.py +7 -2
  32. package/skills/hmos-integration-test/{readme.md → README.md} +309 -309
  33. package/skills/hmos-integration-test/SKILL.md +380 -380
  34. package/skills/hmos-resources-convert/SKILL.md +623 -623
  35. package/skills/hmos-spec-generate/SKILL.md +324 -331
  36. package/tools/test-tools/autotest/README.md +10 -11
  37. package/tools/test-tools/autotest/self_test_runner.py +40 -12
  38. package/resource/common_config.png +0 -0
  39. package/resource/integration_test_config.png +0 -0
  40. package/resource/set_env.png +0 -0
  41. package/resource/ui_align_config.png +0 -0
package/README.md CHANGED
@@ -2,162 +2,102 @@
2
2
 
3
3
 
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
+ [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D%2022-339933.svg?logo=node.js&logoColor=white)](https://nodejs.org/en/download)
6
+
7
+ [![Claude Code](https://img.shields.io/badge/Claude_Code-supported-blueviolet.svg)](#选择本地editor)
8
+ [![Cursor](https://img.shields.io/badge/Cursor-supported-blueviolet.svg)](#选择本地editor)
9
+ [![OpenCode](https://img.shields.io/badge/OpenCode-supported-blueviolet.svg)](#选择本地editor)
10
+ [![DevEco Code](https://img.shields.io/badge/DevEco_Code-supported-blueviolet.svg)](#选择本地editor)
11
+ [![Codex](https://img.shields.io/badge/Codex-supported-blueviolet.svg)](#选择本地editor)
12
+ [![CodeBuddy](https://img.shields.io/badge/CodeBuddy-supported-blueviolet.svg)](#选择本地editor)
5
13
 
6
14
  本文档为完整的Android到HarmonyOS迁移流程指导。
7
15
 
8
16
  ---
9
17
 
10
- ## 步骤0:安装依赖
11
-
12
- ### 0.1安装依赖并连接设备
13
-
14
- 按以下顺序安装(`ht init` 会逐项检测,并提示缺失项对各skill的影响)。各依赖下方均列出了「被依赖」的步骤:如果你不需要执行某依赖所对应的步骤,则可以不安装该依赖(相应skill会显示为受限或不可用,但不影响其它步骤)。
18
+ ## 安装DevEco Studio以及Android Studio
15
19
 
16
- 1. **安装DevEco Studio** — 下载地址:<https://developer.huawei.com/consumer/cn/download/>。安装完成后,配置以下 **PATH环境变量**(`<DevEco安装目录>` 指DevEco Studio的安装根目录):
20
+ 1. **安装DevEco Studio** — 下载地址:<https://developer.huawei.com/consumer/cn/download/>。安装完成后,配置以下 **PATH环境变量**:
17
21
 
18
22
  | 工具 | PATH中加入的目录 |
19
23
  |------|------------------|
20
- | node / npm / npx | `<DevEco安装目录>\tools\node` |
21
24
  | java | `<DevEco安装目录>\jbr\bin` |
22
25
  | hdc | `<DevEco安装目录>\sdk\default\openharmony\toolchains` |
23
26
 
24
- 验证方式:执行 `node -v`、`java -version`、`hdc -v` 均返回正常
27
+ 验证方式:执行 `java -version`、`hdc -v` 均返回正常
28
+
25
29
 
26
- 被依赖:
27
- - 步骤1资源转换(java可选,缺失时回退读取源码 `res/`)
28
- - 步骤2.2增量UI对齐(必需)
29
- - 步骤4逻辑代码转换流水线(必需,构建/评审修复)
30
- - 步骤5自测回归(必需,真机调试)
31
30
  2. **安装Android Studio** — 下载地址:<https://developer.android.com/studio>,并在 **SDK Manager** 中安装SDK。
32
31
 
33
32
  验证方式:执行 `adb version` 返回正常
34
33
 
35
34
  被依赖:
36
- - 步骤2.1全量UI迁移(可选,仅自动抓取页面快照时需要)
37
- - 步骤2.2增量UI对齐(必需)
38
- 3. **安装uv** — 安装指引:<https://docs.astral.sh/uv/getting-started/installation/>。
39
-
40
- 验证方式:执行 `uv --version` 返回正常
41
-
42
- 被依赖:
43
- - 步骤4逻辑代码转换流水线的自测阶段(可经 `skip_test` 跳过)
44
- - 步骤5自测回归(必需,AutoTest在uv下运行)
45
- 4. **安装python** — 安装指引:<https://www.python.org/downloads/>,要求 ≥ 3.10。
46
-
47
- 验证方式:执行 `python --version` 返回正常
48
-
49
- 被依赖:
50
- - 步骤2.1全量UI迁移(必需,页面快照解析脚本)
51
- - 步骤2.2增量UI对齐(必需,双端页面采集脚本)
52
- 5. **安装 [GitNexus](https://github.com/abhigyanpatwari/GitNexus)** — 执行 `npm install -g gitnexus && gitnexus setup`
35
+ - 步骤1.1UI迁移(可选,仅自动抓取页面快照时需要)
36
+ - 步骤1.2UI对齐(必需)
53
37
 
54
- 验证方式:执行 `gitnexus --version` 返回正常
38
+ ## 安装Node.js
55
39
 
56
- 被依赖:
57
- - 步骤3生成需求规格(必需)
58
- 6. **连接设备** — 连接安卓和鸿蒙真机,或启动模拟器
40
+ 安装 **Node.js(版本需 >= 22)** — 下载地址:<https://nodejs.org/en/download>。
59
41
 
60
- 被依赖:
61
- - 安卓真机/模拟器 — 步骤2 UI迁移
62
- - 鸿蒙真机/模拟器 — 步骤2.2增量UI对齐
63
- - 鸿蒙**真机** — 步骤4流水线自测阶段、步骤5自测回归
42
+ 验证方式:执行 `node -v`、`npm -v`、`npx -v` 均返回正常,且 `node -v` 显示版本不低于 22
64
43
 
65
- ### 0.2安装hometrans
44
+ ## 安装HomeTrans
66
45
 
67
46
  执行 `npm install -g @buaa_smat/hometrans`。
68
47
 
69
48
  验证方式:执行 `hometrans --version` 或 `ht --version` 返回正常
70
49
 
71
- 然后执行 `hometrans init` 或 `ht init`。
50
+ ## 环境初始化
72
51
 
52
+ 执行 `hometrans init` 或 `ht init`。
73
53
 
74
54
  > 如果在PowerShell下运行,命令需要加上 `.cmd` 后缀,如 `hometrans.cmd --version`、`ht.cmd init`。
75
55
 
76
- ### 0.2.1选择本地editor:
77
- ![choose_editor.png](resource/choose_editor.png)
78
-
79
- ### 0.2.2通用配置:
80
- ![common_config.png](resource/common_config.png)
81
- - `DEVECO_SDK_HOME` — DevEco Studio的sdk目录,其余路径由它派生并校验存在。示例:
82
-
83
- ```text
84
- + DEVECO_SDK_HOME : <DevEco安装目录>\sdk
85
- + DEVECO_HOME : <DevEco安装目录>
86
- + OHOS_SDK_PATH : <DevEco安装目录>\sdk\default\openharmony\ets
87
- + HMS_SDK_PATH : <DevEco安装目录>\sdk\default\hms\ets
88
- ```
89
- ### 0.2.3 UI对齐配置(如果不执行步骤2.2增量UI对齐,则可以不配置):
90
- ![ui_align_config.png](resource/ui_align_config.png)
91
- - `GLM_API_KEY` — UI对齐中过程中GLM phone agent所用的LLM API key。
92
-
93
- 申请方式:在[智谱官方网站](https://bigmodel.cn/apikey/platform)注册用户后,申请一个API KEY即可,调用的是免费的auto-glm模型,无需充值。
94
-
95
- ### 0.2.4集成测试配置(如果不执行步骤4的自测阶段与步骤5自测回归,则可以不配置):
96
- ![integration_test_config.png](resource/integration_test_config.png)
97
- - `autotest api_key` — 集成测试agent执行测试用例(真机自测)所用的多模态大模型API key。各配置项含义如下,`init` 环节只配置前4项,其余参数在`config.json`中配置。
98
-
99
- | 参数 | 示例 / 默认值 | 含义 |
100
- |-------------------|--------------|------|
101
- | `name` | `""` | 多模态(视觉)模型的名字 |
102
- | `base_url` | `""` | 模型API服务的基础地址 |
103
- | `api_key` | (需填写) | 用于模型API请求认证的令牌 |
104
- | `provider` | `openai` | 模型API服务的提供方标识,如openai;Azure服务填azure |
105
- | `temperature` | `0.1` | 采样温度 |
106
- | `top_p` | `0.9` | 核采样阈值 |
107
- | `frequency_penalty` | `0.5` | 重复惩罚 |
108
- | `device_sn` | `null` | 设备序列号;`null` 表示自动选用当前连接的设备 |
109
- | `ip` | `127.0.0.1` | 设备连接IP(hdc) |
110
- | `port` | `8710` | 设备连接端口(hdc) |
111
- | `device_log_level` | `debug` | 设备日志级别:debug/info/... |
112
- | `max_steps` | `50` | 单条用例最大执行步数 |
113
- | `verbose` | `true` | 是否输出详细日志 |
114
- | `lang` | `zh` | 输出语言:zh/en |
115
- | `enable_preprocess` | `false` | 执行前是否先用unified_model把用例拆成步骤序列(多一次LLM调用,默认关) |
116
- | `debug_mode` | `null` | 调试会话:`null` 关闭 / `memory` 内存 / `file` 存盘并跑完后起调试服务(:5000) |
117
-
118
- ### 0.2.5将配置信息添加到环境变量:
119
- ![set_env.png](resource/set_env.png)
120
-
121
- ### 0.3准备项目
56
+ ### 选择本地editor:
57
+ ![choose_editor.png](https://raw.gitcode.com/SMAT/HomeTrans/raw/main/resource/choose_editor.png)
122
58
 
123
- 准备 **Android源项目** 与 **HarmonyOS目标项目目录**。
59
+ ### 参数配置:
124
60
 
125
- ---
61
+ #### 配置鸿蒙SDK:
62
+ ![set_sdk.png](https://raw.gitcode.com/SMAT/HomeTrans/raw/main/resource/set_sdk.png)
126
63
 
127
- ## 步骤1:资源转换(`hmos-resources-convert`)
64
+ #### 配置多模态模型(不执行UI对齐以及集成测试可以跳过该配置):
65
+ ![set_multimodel.png](https://raw.gitcode.com/SMAT/HomeTrans/raw/main/resource/set_multimodel.png)
128
66
 
129
- > 📦 依赖:DevEco Studio中的java(可选,缺失时回退读取源码 `res/`)。
67
+ | 参数 | 含义 |
68
+ |-----------------|---------|
69
+ | `model_api_key` | 用于模型API请求认证的令牌 |
70
+ | `model_name` | 多模态(视觉)模型的名字 |
71
+ | `model_base_url` | 模型API服务的基础地址 |
130
72
 
131
- > ⚠️ 提示:如果步骤2的UI迁移采用**全量迁移**(`hmos-batch-ui-align`),则跳过当前步骤(全量UI迁移内部已包含资源转换)。
73
+ ##### 配置参考
132
74
 
133
- ```
134
- /hmos-resources-convert android_project_dir=<安卓项目路径> harmony_project_dir=<鸿蒙项目路径> resource_mapping_path=<资源映射文档路径>
135
- ```
75
+ 前往[阿里云百炼平台](https://bailian.console.aliyun.com/)开通服务并申请 API Key,选用 Qwen 系列多模态(视觉)模型(如 `qwen3.5-plus`)。
136
76
 
137
- **输入参数**
77
+ | 参数 | 取值 |
78
+ |---|-----------------------------------------------------|
79
+ | `model_api_key` | 百炼控制台申请的 API Key(形如 `sk-xxxxxxxx`) |
80
+ | `model_name` | `qwen3.5-plus` |
81
+ | `model_base_url` | `https://dashscope.aliyuncs.com/compatible-mode/v1` |
138
82
 
139
- | 参数 | 类型 | 说明 |
140
- |------|------|------|
141
- | `android_project_dir` | **必选** | Android项目根目录路径(含 `build.gradle` 或 `build.gradle.kts`) |
142
- | `harmony_project_dir` | **必选** | HarmonyOS项目输出路径 |
143
- | `resource_mapping_path` | **必选** | Android ↔ HarmonyOS资源映射文档的完整输出路径(`.md`) |
144
- | `apk_path` | 可选 | Android APK文件路径;提供后跳过Gradle构建和apktool解包,直接从APK提取资源 |
83
+ #### 将配置信息添加到环境变量:
84
+ ![set_environment.png](https://raw.gitcode.com/SMAT/HomeTrans/raw/main/resource/set_environment.png)
145
85
 
146
- **输出产物**
86
+ ### 准备项目
147
87
 
148
- | 产物 | 位置 | 说明 |
149
- |------|------|------|
150
- | `resources/` 目录 | HarmonyOS项目下 | 转换后的HarmonyOS资源(strings、colors、dimensions、images等) |
151
- | 资源映射文档 | `resource_mapping_path` | Android ↔ HarmonyOS资源条目映射(`.md`) |
152
- | 转换报告 | HarmonyOS项目下 | 资源转换过程与统计 |
88
+ 准备 **Android源项目** **HarmonyOS目标项目目录**。
153
89
 
154
90
  ---
91
+ ## 迁移流程
92
+ ![migration_process.svg](https://raw.gitcode.com/SMAT/HomeTrans/raw/main/resource/migration_process.svg)
155
93
 
156
- ## 步骤2:UI迁移
94
+ ---
95
+
96
+ ## 步骤1:UI迁移
157
97
 
158
- ### 2.1全量迁移(`hmos-batch-ui-align`)
98
+ ### 1.1UI迁移(`hmos-batch-ui-align`)
159
99
 
160
- > 📦 依赖:python(必需,页面快照解析脚本);Android Studio + 安卓真机/模拟器(可选,仅自动抓取页面快照时需要)。
100
+ > 📦 依赖:uv(必需,页面快照解析脚本经 `uv run` 运行,uv 自带 Python);Android Studio + 安卓真机/模拟器(可选,仅自动抓取页面快照时需要)。
161
101
 
162
102
  ```
163
103
  /hmos-batch-ui-align android_project_dir=<安卓项目路径> harmony_project_dir=<鸿蒙项目路径> ui_info_root=<页面快照目录>
@@ -177,12 +117,12 @@
177
117
  | 产物 | 位置 | 说明 |
178
118
  |------|------|------|
179
119
  | ArkTS页面文件 | HarmonyOS项目下 | 由Android Activity转换生成的ArkTS页面 |
180
- | 资源文件 | HarmonyOS项目下 | 页面所需资源(含全量迁移内部触发的资源转换产物) |
120
+ | 资源文件 | HarmonyOS项目下 | 页面所需资源(含UI迁移内部触发的资源转换产物) |
181
121
  | 批量转换报告 | HarmonyOS项目下 | 各页面转换结果、缺陷与统计 |
182
122
 
183
- ### 2.2增量对齐(`hmos-incremental-ui-align`,按需)
123
+ ### 1.2UI对齐(`hmos-incremental-ui-align`,按需)
184
124
 
185
- > 📦 依赖:DevEco Studio、Android Studio、python(必需,双端页面采集脚本);安卓真机/模拟器 + 鸿蒙真机/模拟器(必需)。
125
+ > 📦 依赖:DevEco Studio、Android Studio、uv(必需,双端页面采集脚本经 `uv run` 运行,uv 自带 Python);安卓真机/模拟器 + 鸿蒙真机/模拟器(必需)。
186
126
 
187
127
  ```
188
128
  /hmos-incremental-ui-align android_project_dir=<安卓工程路径> harmony_project_dir=<鸿蒙工程路径>
@@ -206,9 +146,9 @@
206
146
 
207
147
  ---
208
148
 
209
- ## 步骤3:生成需求规格(`hmos-spec-generate`)
149
+ ## 步骤2:生成需求规格(`hmos-spec-generate`)
210
150
 
211
- > 📦 依赖:GitNexus(必需)。
151
+ > 📦 依赖:homegraph(必需)。
212
152
 
213
153
  > 👤 前置:用户编写 `REQ.txt` 文件 — 以自然语言描述原始需求,如有多个需求则在文件中使用空行进行分隔,需求中建议包含页面跳转路径的说明以及业务逻辑的描述。
214
154
 
@@ -256,13 +196,13 @@
256
196
  | 产物 | 位置 | 说明 |
257
197
  |------|------|------|
258
198
  | `<feature>-SPEC.md` | `spec_output_dir` | 每个REQ对应一份原子场景规格文档 |
259
- | `.trace/<feature>.md` | `spec_output_dir/.trace/` | 每个REQ对应的代码trace(GitNexus探索结果) |
199
+ | `.trace/<feature>.md` | `spec_output_dir/.trace/` | 每个REQ对应的代码trace(homegraph探索结果) |
260
200
 
261
201
  ---
262
202
 
263
- ## 步骤4:逻辑代码转换流水线(`hmos-convert-pipeline`)
203
+ ## 步骤3:逻辑代码转换流水线(`hmos-convert-pipeline`)
264
204
 
265
- > 📦 依赖:DevEco Studio(必需,构建/评审修复);uv + 鸿蒙真机(集成测试阶段需要,可经 `skip_test` 跳过)。
205
+ > 📦 依赖:DevEco Studio(必需,构建/评审修复);uv + 鸿蒙真机(集成测试阶段需要,可经 `skip_test` 跳过;uv 经 `uv run` 运行 `self_test_runner.py` 并自带 Python)。
266
206
 
267
207
  > 👤 前置:
268
208
  > 1. 如果执行集成测试,需要**编写测试用例文档**输出前置测试用例(非必须,用于测试用例的环境准备等)通过pre_test_case_path参数传递,测试用例通过test_case_path参数传递。
@@ -300,7 +240,58 @@
300
240
 
301
241
  ---
302
242
 
303
- ## 步骤5:集成测试(`hmos-integration-test`,已包含在步骤4,也可以单独运行)
243
+ ## 步骤4:人工验收(👤 用户介入)
244
+
245
+ **输入**
246
+
247
+ | 输入 | 说明 |
248
+ |------|------|
249
+ | `pipeline-manifest.md` | 流水线清单与缺陷统计 |
250
+ | 自测报告 | 集成测试skill/步骤3自测阶段产出的测试报告 |
251
+ | 已签名HAP | 步骤3流水线产出的最终发布包 |
252
+
253
+ **输出**
254
+
255
+ | 产物 | 说明 |
256
+ |------|------|
257
+ | 可发布的HarmonyOS应用 | 已处理报告中的遗留缺陷/TODO,通过核心场景走查 |
258
+
259
+ 通读 `pipeline-manifest.md` 与自测报告,真机走查核心场景,处理报告中的遗留缺陷/TODO后发布。
260
+
261
+ ---
262
+
263
+ ## 独立skill能力
264
+
265
+ 以下能力包含在迁移流程中也可按需独立调用。
266
+
267
+ ### 资源转换(`hmos-resources-convert`)
268
+
269
+ > 📦 依赖:DevEco Studio中的java(可选,缺失时回退读取源码 `res/`)。
270
+
271
+ > ⚠️ 提示:如果步骤1采用 **UI迁移**(`hmos-batch-ui-align`),则跳过当前能力(UI迁移内部已包含资源转换)。
272
+
273
+ ```
274
+ /hmos-resources-convert android_project_dir=<安卓项目路径> harmony_project_dir=<鸿蒙项目路径> resource_mapping_path=<资源映射文档路径>
275
+ ```
276
+
277
+ **输入参数**
278
+
279
+ | 参数 | 类型 | 说明 |
280
+ |------|------|------|
281
+ | `android_project_dir` | **必选** | Android项目根目录路径(含 `build.gradle` 或 `build.gradle.kts`) |
282
+ | `harmony_project_dir` | **必选** | HarmonyOS项目输出路径 |
283
+ | `resource_mapping_path` | **必选** | Android ↔ HarmonyOS资源映射文档的完整输出路径(`.md`) |
284
+ | `apk_path` | 可选 | Android APK文件路径;提供后跳过Gradle构建和apktool解包,直接从APK提取资源 |
285
+
286
+ **输出产物**
287
+
288
+ | 产物 | 位置 | 说明 |
289
+ |------|------|------|
290
+ | `resources/` 目录 | HarmonyOS项目下 | 转换后的HarmonyOS资源(strings、colors、dimensions、images等) |
291
+ | 资源映射文档 | `resource_mapping_path` | Android ↔ HarmonyOS资源条目映射(`.md`) |
292
+ | 转换报告 | HarmonyOS项目下 | 资源转换过程与统计 |
293
+
294
+ ### 集成测试(`hmos-integration-test`,已包含在步骤3的流水线,也可以单独运行)
304
295
 
305
296
  > 📦 依赖:DevEco Studio(必需,真机调试);uv(必需,AutoTest在uv下运行);鸿蒙真机(必需)。
306
297
 
@@ -326,23 +317,3 @@
326
317
  | 测试报告 | `output_path` | 测试结果、通过/失败用例统计 |
327
318
  | 失败用例详情 | `output_path` | 失败用例的复现步骤与日志 |
328
319
  | 修复建议 | `output_path` | 针对失败用例的修复方向(进入测试-修复循环时生效) |
329
-
330
- ---
331
-
332
- ## 步骤6:人工验收(👤 用户介入)
333
-
334
- **输入**
335
-
336
- | 输入 | 说明 |
337
- |------|------|
338
- | `pipeline-manifest.md` | 流水线清单与缺陷统计 |
339
- | 自测报告 | 步骤5/步骤4自测阶段产出的测试报告 |
340
- | 已签名HAP | 步骤4流水线产出的最终发布包 |
341
-
342
- **输出**
343
-
344
- | 产物 | 说明 |
345
- |------|------|
346
- | 可发布的HarmonyOS应用 | 已处理报告中的遗留缺陷/TODO,通过核心场景走查 |
347
-
348
- 通读 `pipeline-manifest.md` 与自测报告,真机走查核心场景,处理报告中的遗留缺陷/TODO后发布。