@tencentcloud/sdk-mcp 1.3.8 → 1.3.9
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/package.json +1 -1
- package/resource/doc/chatuikit/android/integration.md +466 -484
- package/resource/doc/chatuikit/android/workflow.md +713 -0
- package/resource/doc/livekit/live/flutter/live-integration.md +208 -167
- package/resource/doc/livekit/voice/android/voice-audience-list.md +335 -0
- package/resource/doc/livekit/voice/android/voice-audio-effect.md +384 -0
- package/resource/doc/livekit/voice/android/voice-barrage.md +569 -0
- package/resource/doc/livekit/voice/android/voice-co-guest-interaction.md +748 -0
- package/resource/doc/livekit/voice/android/voice-gift.md +833 -0
- package/resource/doc/livekit/voice/android/voice-host-interaction.md +728 -0
- package/resource/doc/livekit/voice/android/voice-integration.md +886 -0
- package/resource/doc/livekit/voice/android/voice-room-list.md +493 -0
- package/resource/doc/livekit/voice/android/workflow.md +333 -0
- package/resource/doc/livekit/voice/flutter/voice-audience-list.md +337 -0
- package/resource/doc/livekit/voice/flutter/voice-audio-effect.md +739 -0
- package/resource/doc/livekit/voice/flutter/voice-barrage.md +578 -0
- package/resource/doc/livekit/voice/flutter/voice-co-guest-interaction.md +673 -0
- package/resource/doc/livekit/voice/flutter/voice-gift.md +812 -0
- package/resource/doc/livekit/voice/flutter/voice-integration.md +925 -0
- package/resource/doc/livekit/voice/flutter/voice-room-list.md +842 -0
- package/resource/doc/livekit/voice/flutter/workflow.md +359 -0
- package/resource/doc/livekit/voice/ios/voice-audience-list.md +335 -0
- package/resource/doc/livekit/voice/ios/voice-audio-effect.md +373 -0
- package/resource/doc/livekit/voice/ios/voice-barrage.md +529 -0
- package/resource/doc/livekit/voice/ios/voice-co-guest-interaction.md +701 -0
- package/resource/doc/livekit/voice/ios/voice-gift.md +785 -0
- package/resource/doc/livekit/voice/ios/voice-host-interaction.md +820 -0
- package/resource/doc/livekit/voice/ios/voice-integration.md +853 -0
- package/resource/doc/livekit/voice/ios/voice-room-list.md +467 -0
- package/resource/doc/livekit/voice/ios/workflow.md +358 -0
- package/resource/doc/livekit/voice/uni-app/voice-audience-list.md +264 -0
- package/resource/doc/livekit/voice/uni-app/voice-audio-effect.md +332 -0
- package/resource/doc/livekit/voice/uni-app/voice-barrage.md +482 -0
- package/resource/doc/livekit/voice/uni-app/voice-co-guest-interaction.md +944 -0
- package/resource/doc/livekit/voice/uni-app/voice-gift.md +716 -0
- package/resource/doc/livekit/voice/uni-app/voice-integration.md +613 -0
- package/resource/doc/livekit/voice/uni-app/voice-room-list.md +562 -0
- package/resource/doc/livekit/voice/uni-app/workflow.md +369 -0
- package/resource/doc/roomkit/vue/integration.md +119 -224
- package/resource/doc/roomkit/vue/workflow.md +472 -226
- package/resource/doc/tuicallkit/android/integration.md +675 -90
- package/resource/doc/tuicallkit/android/workflow.md +432 -0
- package/tools/common/present-scenario-choice.js +16 -0
- package/tools/common/present-scenario-choice.js.map +1 -0
- package/tools/definitions/get_native_call_uikit_integration_def.js +18 -2
- package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_chat_uikit_integration_def.js +29 -7
- package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_live_uikit_integration_def.js +65 -40
- package/tools/definitions/get_native_live_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_live_uikit_interaction_def.js +42 -94
- package/tools/definitions/get_native_live_uikit_interaction_def.js.map +1 -1
- package/tools/definitions/get_web_room_feature_detail_def.js +29 -32
- package/tools/definitions/get_web_room_feature_detail_def.js.map +1 -1
- package/tools/definitions/get_web_room_uikit_integration_def.js +25 -9
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
- package/tools/definitions/present_scenario_choice_def.js +53 -0
- package/tools/definitions/present_scenario_choice_def.js.map +1 -0
- package/tools/definitions/record_prompt_def.js +6 -1
- package/tools/definitions/record_prompt_def.js.map +1 -1
- package/tools/definitions/record_result_def.js +20 -4
- package/tools/definitions/record_result_def.js.map +1 -1
- package/tools/index.js +2 -0
- package/tools/index.js.map +1 -1
- package/tools/live/get-native-live-uikit-integration.js +110 -34
- package/tools/live/get-native-live-uikit-integration.js.map +1 -1
- package/tools/live/get_native_live_uikit_interaction.js +128 -35
- package/tools/live/get_native_live_uikit_interaction.js.map +1 -1
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
# Android TUICallKit 音视频通话应用代码生成工作流指令
|
|
2
|
+
|
|
3
|
+
## 📋 指令目的
|
|
4
|
+
|
|
5
|
+
为 Agent 提供实现 Android TUICallKit **音视频通话核心功能的代码生成蓝图**,并指导 Agent **优先使用工具实时获取的最新文档内容**,专门针对 Android 音视频通话应用场景。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🛑 Agent 执行硬性限制 (Guardrails)
|
|
10
|
+
|
|
11
|
+
Agent 在生成代码时必须严格遵守以下指令:
|
|
12
|
+
|
|
13
|
+
### 0. 🚨 核心原则(最高优先级)
|
|
14
|
+
|
|
15
|
+
- ✅ 严格按照集成文档中的示例代码生成,不擅自修改
|
|
16
|
+
- ✅ 完整实现登录、单人通话、多人通话功能
|
|
17
|
+
- ✅ 使用 `get_usersig` 工具生成测试账号的 UserSig
|
|
18
|
+
- ✅ 使用源码方式导入组件(从 GitHub 克隆 `tuicallkit-kt` 和 `atomic_x`)
|
|
19
|
+
|
|
20
|
+
### 1. 文档驱动集成
|
|
21
|
+
- 严格按照工具返回的 `llm_code_generation_instructions_md` 步骤执行
|
|
22
|
+
- 遵循集成文档的最佳实践和示例代码
|
|
23
|
+
|
|
24
|
+
### 2. 组件导入方式
|
|
25
|
+
- **源码导入方式**: 从 GitHub 克隆代码,将 `tuicallkit-kt` 和 `atomic_x` 目录复制到项目中
|
|
26
|
+
```bash
|
|
27
|
+
# 克隆 TUIKit_Android 仓库
|
|
28
|
+
git clone https://github.com/Tencent-RTC/TUIKit_Android.git
|
|
29
|
+
# 将 atomic_x 和 call/tuicallkit-kt 目录复制到项目 app 同级目录
|
|
30
|
+
```
|
|
31
|
+
- **settings.gradle.kts 配置**:
|
|
32
|
+
```kotlin
|
|
33
|
+
include(":tuicallkit-kt")
|
|
34
|
+
include(":atomic_x")
|
|
35
|
+
```
|
|
36
|
+
- **settings.gradle 配置**:
|
|
37
|
+
```groovy
|
|
38
|
+
include ':tuicallkit-kt'
|
|
39
|
+
include ':atomic_x'
|
|
40
|
+
```
|
|
41
|
+
- **app/build.gradle.kts 依赖配置**:
|
|
42
|
+
```kotlin
|
|
43
|
+
dependencies {
|
|
44
|
+
api(project(":tuicallkit-kt"))
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
- **app/build.gradle 依赖配置**:
|
|
48
|
+
```groovy
|
|
49
|
+
dependencies {
|
|
50
|
+
api project(':tuicallkit-kt')
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 3. 静默执行集成
|
|
55
|
+
- 所有代码编写完成后,在最后一步自动同步 Gradle 并构建项目
|
|
56
|
+
- **Gradle 命令执行策略(多级降级,确保成功)**:
|
|
57
|
+
1. **第一优先级**: 尝试直接执行 `./gradlew build`
|
|
58
|
+
2. **第二优先级**: 如果失败,尝试 `./gradlew assembleDebug`
|
|
59
|
+
3. **第三优先级**: 如果仍失败,**引导用户手动在 Android Studio 中同步**(见下方指引)
|
|
60
|
+
- 构建成功后提示用户在模拟器或真机中运行应用
|
|
61
|
+
|
|
62
|
+
#### 📋 手动执行降级指引
|
|
63
|
+
|
|
64
|
+
**当自动执行失败时,引导用户手动执行**:
|
|
65
|
+
|
|
66
|
+
1. 在 Android Studio 中点击 **File → Sync Project with Gradle Files**
|
|
67
|
+
2. 等待 Gradle 同步完成
|
|
68
|
+
3. 点击 **Run** 按钮运行应用
|
|
69
|
+
|
|
70
|
+
**常见问题**: Gradle 同步失败 → 检查 JDK 版本(需要 JDK 17+); 编译失败 → 检查 Android SDK 版本
|
|
71
|
+
|
|
72
|
+
### 4. 鉴权凭据配置(重要)
|
|
73
|
+
- 调用 `get_usersig` 工具获取 SDKAppID、UserID、UserSig
|
|
74
|
+
- 为 4 个测试账号(user001/002/003/004)生成 UserSig
|
|
75
|
+
- 测试阶段可硬编码鉴权信息,但需注释标注仅用于测试
|
|
76
|
+
- ⚠️ 安全警告: 告知用户生产环境必须在服务端生成 UserSig
|
|
77
|
+
|
|
78
|
+
### 5. LoginActivity 实现约束 🔴
|
|
79
|
+
|
|
80
|
+
**⚠️ 优先检查项目中是否已存在登录页**:
|
|
81
|
+
- 在实现登录页面前,**必须先检查项目中是否已存在登录页面**
|
|
82
|
+
- 如果已存在登录页面,**必须询问用户是否要执行默认行为**:
|
|
83
|
+
- **选项 1**: 使用默认行为(创建新的 LoginActivity,包含下拉框、4 个测试账号等)
|
|
84
|
+
- **选项 2**: 在现有登录页基础上修改(保留用户的 UI 和交互逻辑,仅添加必要的 TUILogin 登录逻辑)
|
|
85
|
+
- 如果用户选择选项 2,应该:
|
|
86
|
+
- 保留用户现有的登录页面 UI 和交互逻辑
|
|
87
|
+
- 仅在登录成功后调用 `TUILogin.login` 进行二次登录
|
|
88
|
+
- 不强制使用下拉框和 4 个测试账号
|
|
89
|
+
- 如果项目中不存在登录页面,或用户选择选项 1,则按照以下默认行为实现
|
|
90
|
+
|
|
91
|
+
**默认登录页面实现要求**:
|
|
92
|
+
- **必须实现登录页面**,包含以下功能:
|
|
93
|
+
1. **下拉框选择 UserID**: 提供 user001、user002、user003、user004 四个选项
|
|
94
|
+
2. **显示 SDKAppID**: 从 `get_usersig` 获取并显示(只读,不可编辑)
|
|
95
|
+
3. **自动生成 UserSig**: 根据选择的 UserID 自动从预生成的 UserSig 中匹配
|
|
96
|
+
4. **登录按钮**: 调用 `TUILogin.login` 登录
|
|
97
|
+
- **登录接口必须调用 `TUILogin.login`**,传入从 `get_usersig` 获取的完整凭证
|
|
98
|
+
- 登录成功后自动跳转到主页面(MainActivity/HomePage)
|
|
99
|
+
|
|
100
|
+
**LoginActivity 核心实现要点(Kotlin)**:
|
|
101
|
+
|
|
102
|
+
```kotlin
|
|
103
|
+
// 1. 导入必要的类
|
|
104
|
+
import com.tencent.qcloud.tuicore.TUILogin
|
|
105
|
+
import com.tencent.qcloud.tuicore.interfaces.TUICallback
|
|
106
|
+
|
|
107
|
+
// 2. 定义测试账号映射表(从 get_usersig 获取)
|
|
108
|
+
val userSigMap = mapOf(
|
|
109
|
+
"user001" to "xxx",
|
|
110
|
+
"user002" to "xxx",
|
|
111
|
+
"user003" to "xxx",
|
|
112
|
+
"user004" to "xxx"
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
// 3. UI 组件
|
|
116
|
+
// - SDKAppID 显示(只读 TextView)
|
|
117
|
+
// - UserID 下拉框(Spinner,选项从 userSigMap.keys 生成)
|
|
118
|
+
// - 登录按钮
|
|
119
|
+
|
|
120
|
+
// 4. 登录逻辑
|
|
121
|
+
TUILogin.login(context, sdkAppId, userId, userSig, object : TUICallback() {
|
|
122
|
+
override fun onSuccess() {
|
|
123
|
+
// 跳转到 MainActivity
|
|
124
|
+
}
|
|
125
|
+
override fun onError(errorCode: Int, errorMessage: String) {
|
|
126
|
+
// 显示错误信息
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 6. MainActivity/HomePage 实现约束 🔴
|
|
132
|
+
|
|
133
|
+
**必须实现主页面**,包含以下功能:
|
|
134
|
+
|
|
135
|
+
1. **显示当前登录的 UserID**
|
|
136
|
+
2. **音视频通话功能**(统一用户选择):
|
|
137
|
+
- **用户列表(多选)**:显示可选用户(user002、user003、user004,排除当前登录用户)
|
|
138
|
+
- **智能判断通话类型**:
|
|
139
|
+
- 选择 **1 个用户** → 自动发起**单人通话**
|
|
140
|
+
- 选择 **多个用户** → 自动发起**多人通话**
|
|
141
|
+
- **语音通话按钮**:调用 `TUICallKit.createInstance(context).calls` 发起语音通话
|
|
142
|
+
- **视频通话按钮**:调用 `TUICallKit.createInstance(context).calls` 发起视频通话
|
|
143
|
+
- **实现方式**:使用 CheckBox 列表,支持单选和多选
|
|
144
|
+
3. **退出登录按钮**:调用 `TUILogin.logout` 退出登录
|
|
145
|
+
|
|
146
|
+
**MainActivity 核心实现要点(Kotlin)**:
|
|
147
|
+
|
|
148
|
+
```kotlin
|
|
149
|
+
// 1. 导入必要的类
|
|
150
|
+
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit
|
|
151
|
+
import io.trtc.tuikit.atomicxcore.api.call.CallMediaType
|
|
152
|
+
import io.trtc.tuikit.atomicxcore.api.call.CallParams
|
|
153
|
+
|
|
154
|
+
// 2. 显示当前登录用户(TextView)
|
|
155
|
+
|
|
156
|
+
// 3. 用户选择区域(统一单人/多人通话)
|
|
157
|
+
// - 用户列表: val availableUsers = listOf("user002", "user003", "user004").filter { it != currentUserId }
|
|
158
|
+
// - 多选框: CheckBox(支持选择 1 个或多个用户)
|
|
159
|
+
// - 选中用户: val selectedUsers = mutableListOf<String>()
|
|
160
|
+
|
|
161
|
+
// 4. 通话按钮区域
|
|
162
|
+
// - 语音通话按钮: Button
|
|
163
|
+
// - 视频通话按钮: Button
|
|
164
|
+
|
|
165
|
+
// 5. 发起通话逻辑
|
|
166
|
+
val params = CallParams()
|
|
167
|
+
TUICallKit.createInstance(context).calls(selectedUsers, CallMediaType.Audio, params, object : CompletionHandler {
|
|
168
|
+
override fun onSuccess() {
|
|
169
|
+
// 成功回调
|
|
170
|
+
}
|
|
171
|
+
override fun onFailure(code: Int, desc: String) {
|
|
172
|
+
// 失败回调
|
|
173
|
+
}
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
// 6. 退出登录逻辑
|
|
177
|
+
TUILogin.logout(object : TUICallback() {
|
|
178
|
+
override fun onSuccess() {
|
|
179
|
+
// 跳转回 LoginActivity
|
|
180
|
+
}
|
|
181
|
+
override fun onError(errorCode: Int, errorMessage: String) {
|
|
182
|
+
// 显示错误信息
|
|
183
|
+
}
|
|
184
|
+
})
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### 7. 工程配置约束 🔴
|
|
188
|
+
|
|
189
|
+
**必须完成以下工程配置**:
|
|
190
|
+
|
|
191
|
+
1. **混淆规则配置**: 在 `app/proguard-rules.pro` 文件末尾添加:
|
|
192
|
+
```proguard
|
|
193
|
+
-keep class com.tencent.** { *; }
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
2. **AndroidManifest.xml 配置**: 在 application 节点中添加 `tools:replace="android:allowBackup"`:
|
|
197
|
+
```xml
|
|
198
|
+
<application
|
|
199
|
+
android:name=".BaseApplication"
|
|
200
|
+
android:allowBackup="false"
|
|
201
|
+
android:icon="@drawable/app_ic_launcher"
|
|
202
|
+
android:label="@string/app_name"
|
|
203
|
+
android:largeHeap="true"
|
|
204
|
+
android:theme="@style/AppTheme"
|
|
205
|
+
tools:replace="android:allowBackup">
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
3. **Gradle JDK 版本**: AGP 8.0+ 要求 Gradle 运行时使用 Java 17 或更高版本
|
|
209
|
+
|
|
210
|
+
### 8. 构建脚本语法检查(重要) 🔴
|
|
211
|
+
|
|
212
|
+
**⚠️ 在配置构建脚本前,必须先检查项目使用的构建脚本类型**,根据实际情况选择正确的语法:
|
|
213
|
+
|
|
214
|
+
| 构建脚本文件 | 语法类型 | 示例 |
|
|
215
|
+
|-------------|---------|------|
|
|
216
|
+
| `settings.gradle` | Groovy DSL | `include ':tuicallkit-kt'` |
|
|
217
|
+
| `settings.gradle.kts` | Kotlin DSL | `include(":tuicallkit-kt")` |
|
|
218
|
+
| `build.gradle` | Groovy DSL | `api project(':tuicallkit-kt')` |
|
|
219
|
+
| `build.gradle.kts` | Kotlin DSL | `api(project(":tuicallkit-kt"))` |
|
|
220
|
+
|
|
221
|
+
**检查步骤**:
|
|
222
|
+
1. 查看项目根目录和 `app/` 目录下的构建脚本文件名
|
|
223
|
+
2. 如果是 `.gradle` 结尾 → 使用 Groovy 语法
|
|
224
|
+
3. 如果是 `.gradle.kts` 结尾 → 使用 Kotlin DSL 语法
|
|
225
|
+
|
|
226
|
+
### 9. Android 项目规范
|
|
227
|
+
- Android 版本要求: Android 5.0 (SDK API Level 21) 及以上
|
|
228
|
+
- Gradle 版本要求: Gradle 4.2.1 及以上
|
|
229
|
+
- 使用 Kotlin 语言编写(推荐),也支持 Java
|
|
230
|
+
|
|
231
|
+
### 10. 环境依赖准备
|
|
232
|
+
- 确保用户已安装 Android Studio
|
|
233
|
+
- 确保用户已配置 Android SDK
|
|
234
|
+
- JDK 17+ 版本(AGP 8.0+ 要求)
|
|
235
|
+
- **如果自动构建失败,必须引导用户手动在 Android Studio 中同步 Gradle**
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 📦 核心版本要求
|
|
240
|
+
|
|
241
|
+
| 工具/平台 | 最低版本要求 |
|
|
242
|
+
|----------|-------------|
|
|
243
|
+
| **Android** | >= 5.0 (API Level 21) |
|
|
244
|
+
| **Gradle** | >= 4.2.1 |
|
|
245
|
+
| **JDK** | >= 17 (AGP 8.0+) |
|
|
246
|
+
|
|
247
|
+
**详细的工具版本要求请参考集成文档"准备工作-环境要求"部分**
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## 📦 自动化执行命令
|
|
252
|
+
|
|
253
|
+
Agent 代码生成完成后,按顺序自动执行:
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
# 1. 克隆 TUIKit_Android 仓库(如果尚未克隆)
|
|
257
|
+
git clone https://github.com/Tencent-RTC/TUIKit_Android.git
|
|
258
|
+
|
|
259
|
+
# 2. 复制组件到项目目录
|
|
260
|
+
cp -r TUIKit_Android/atomic_x ./
|
|
261
|
+
cp -r TUIKit_Android/call/tuicallkit-kt ./
|
|
262
|
+
|
|
263
|
+
# 3. 构建项目
|
|
264
|
+
./gradlew assembleDebug
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**降级策略**: `./gradlew` 失败 → 引导用户手动在 Android Studio 中同步 Gradle
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## 📱 真机调试引导(用户指引)
|
|
272
|
+
|
|
273
|
+
### Android 真机调试
|
|
274
|
+
1. USB 连接设备
|
|
275
|
+
2. 开启开发者模式(连点版本号 7 次) + USB 调试
|
|
276
|
+
3. 设备授权 USB 调试(允许)
|
|
277
|
+
4. 执行 `adb devices` 验证连接
|
|
278
|
+
5. 在 Android Studio 中点击 Run 按钮,选择目标设备
|
|
279
|
+
|
|
280
|
+
### Android 模拟器调试
|
|
281
|
+
1. 打开 Android Studio → Device Manager
|
|
282
|
+
2. 创建或启动模拟器
|
|
283
|
+
3. 点击 Run 按钮运行应用
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 🔄 完整自动化流程
|
|
288
|
+
|
|
289
|
+
```mermaid
|
|
290
|
+
graph TD
|
|
291
|
+
A[接收用户需求] --> B[检查 Android 开发环境]
|
|
292
|
+
B --> C[克隆 TUIKit_Android 仓库]
|
|
293
|
+
C --> D[复制 tuicallkit-kt 和 atomic_x 到项目]
|
|
294
|
+
D --> E[配置 settings.gradle: 添加 include]
|
|
295
|
+
E --> F[配置 app/build.gradle: 添加依赖]
|
|
296
|
+
F --> G[配置混淆规则: proguard-rules.pro]
|
|
297
|
+
G --> H[配置 AndroidManifest.xml]
|
|
298
|
+
H --> I[调用 get_usersig 工具生成 4 个账号的 UserSig]
|
|
299
|
+
I --> J[实现 LoginActivity: 下拉框选择 UserID]
|
|
300
|
+
J --> K[实现 MainActivity: 单人通话和多人通话]
|
|
301
|
+
K --> L[调用 record_result 记录集成结果]
|
|
302
|
+
L --> M[执行 Gradle 构建]
|
|
303
|
+
M --> N{构建成功?}
|
|
304
|
+
N -->|是| O[引导用户连接设备运行]
|
|
305
|
+
N -->|否| P[引导用户手动在 Android Studio 中同步]
|
|
306
|
+
O --> Q[项目启动成功]
|
|
307
|
+
P --> Q
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## 📝 关键要点总结
|
|
313
|
+
|
|
314
|
+
| 类别 | 要求 |
|
|
315
|
+
|------|------|
|
|
316
|
+
| **Android 版本** | Android 5.0 (API Level 21) 及以上 |
|
|
317
|
+
| **接入方式** | 源码方式(从 GitHub 克隆 `tuicallkit-kt` 和 `atomic_x`) |
|
|
318
|
+
| **文档优先** | ⚠️ 严格遵循集成文档中的示例代码,不得擅自修改 |
|
|
319
|
+
| **静默集成** | 代码编写完成后自动构建项目 |
|
|
320
|
+
| **凭证获取** | ⚠️ 必须使用 `get_usersig` 工具为 4 个测试账号(user001/002/003/004)生成 UserSig |
|
|
321
|
+
| **登录页面** | ⚠️ 必须实现下拉框选择 UserID,自动匹配 UserSig,禁止手动输入 |
|
|
322
|
+
| **主页面** | ⚠️ 必须支持统一用户列表,选择 1 个用户自动发起单人通话,选择多个用户自动发起多人通话 |
|
|
323
|
+
| **安全提示** | ⚠️ 必须告知用户:客户端生成 UserSig 仅适合测试,生产环境必须在服务端生成 |
|
|
324
|
+
| **结果记录** | ⚠️ 集成完成后必须调用 `record_result` 工具记录结果 |
|
|
325
|
+
| **工程配置** | ⚠️ 必须配置混淆规则和 AndroidManifest.xml |
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## 🎯 Agent 执行检查清单
|
|
330
|
+
|
|
331
|
+
在完成代码生成后,Agent 必须确认以下所有项目:
|
|
332
|
+
|
|
333
|
+
### 组件导入
|
|
334
|
+
- [ ] 已克隆 TUIKit_Android 仓库
|
|
335
|
+
- [ ] 已复制 `tuicallkit-kt` 和 `atomic_x` 到项目 app 同级目录
|
|
336
|
+
- [ ] 已配置 `settings.gradle(.kts)` 添加 include
|
|
337
|
+
- [ ] 已配置 `app/build.gradle(.kts)` 添加依赖
|
|
338
|
+
|
|
339
|
+
### 工程配置
|
|
340
|
+
- [ ] 已配置 `proguard-rules.pro` 混淆规则
|
|
341
|
+
- [ ] 已配置 `AndroidManifest.xml` 添加 `tools:replace`
|
|
342
|
+
|
|
343
|
+
### 代码生成
|
|
344
|
+
- [ ] 调用 `get_usersig` 工具生成 4 个账号的 UserSig
|
|
345
|
+
- [ ] 实现 LoginActivity(下拉框选择 UserID,不包含手动输入框)
|
|
346
|
+
- [ ] 实现 MainActivity(统一用户列表,选 1 个为单人通话,选多个为多人通话)
|
|
347
|
+
|
|
348
|
+
### 最终检查
|
|
349
|
+
- [ ] 调用 `record_result` 工具记录集成结果
|
|
350
|
+
- [ ] 执行 Gradle 构建或引导用户手动同步
|
|
351
|
+
- [ ] 提示用户选择设备运行应用
|
|
352
|
+
- [ ] 告知用户: 生产环境必须在服务端生成 UserSig
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## ❓ 遇到问题?AI 可以帮你快速解决
|
|
357
|
+
|
|
358
|
+
**当同步依赖或编译出现错误时,请将完整的错误信息提供给 AI,可以帮你快速定位和解决问题。**
|
|
359
|
+
|
|
360
|
+
### 📋 常见错误场景
|
|
361
|
+
|
|
362
|
+
| 错误类型 | 描述 | AI 可以帮你 |
|
|
363
|
+
|---------|------|-----------|
|
|
364
|
+
| **Gradle 同步失败** | 依赖下载失败、版本冲突、仓库连接超时等 | 分析依赖冲突、推荐镜像源、修复版本兼容性 |
|
|
365
|
+
| **编译错误** | 类找不到、方法签名不匹配、API 版本不兼容等 | 定位缺失的依赖、修复导入语句、适配 API 变更 |
|
|
366
|
+
| **运行时崩溃** | 空指针、权限缺失、初始化顺序错误等 | 分析堆栈信息、检查权限配置、修复初始化逻辑 |
|
|
367
|
+
| **混淆问题** | Release 包功能异常、类被错误混淆等 | 补充混淆规则、定位被混淆的类 |
|
|
368
|
+
|
|
369
|
+
### 💡 如何高效反馈错误
|
|
370
|
+
|
|
371
|
+
为了让 AI 更快速准确地帮你解决问题,请提供以下信息:
|
|
372
|
+
|
|
373
|
+
1. **完整的错误日志**: 复制 Android Studio 的 Build Output 或 Logcat 中的完整错误信息
|
|
374
|
+
2. **错误发生时机**: 说明是在 Gradle 同步、编译、还是运行时发生的
|
|
375
|
+
3. **操作步骤**: 简述你执行了哪些操作后出现的错误
|
|
376
|
+
|
|
377
|
+
**示例反馈格式**:
|
|
378
|
+
```
|
|
379
|
+
错误时机: Gradle 同步时
|
|
380
|
+
错误信息:
|
|
381
|
+
> Could not resolve com.tencent.liteav:LiteAVSDK_TRTC:xxx
|
|
382
|
+
> Repository connection failed: xxx
|
|
383
|
+
|
|
384
|
+
已尝试的操作: 重新同步、清理缓存
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### 🔧 常见问题快速自查
|
|
388
|
+
|
|
389
|
+
在向 AI 反馈前,可以先尝试以下操作:
|
|
390
|
+
|
|
391
|
+
1. **Gradle 同步失败**:
|
|
392
|
+
- File → Invalidate Caches / Restart
|
|
393
|
+
- 检查网络连接,尝试使用 VPN 或配置国内镜像源
|
|
394
|
+
- 检查 JDK 版本是否为 17+
|
|
395
|
+
|
|
396
|
+
2. **找不到类/方法**:
|
|
397
|
+
- 确认 `tuicallkit-kt` 和 `atomic_x` 目录已正确复制到项目根目录
|
|
398
|
+
- 确认 `settings.gradle(.kts)` 中已添加 include 配置
|
|
399
|
+
- 点击 File → Sync Project with Gradle Files 重新同步
|
|
400
|
+
|
|
401
|
+
3. **版本兼容问题**:
|
|
402
|
+
- 检查 `compileSdk` 和 `targetSdk` 版本(推荐 34+)
|
|
403
|
+
- 检查 Gradle Plugin 版本和 Gradle 版本匹配关系
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
## 🔗 必须使用的工具
|
|
408
|
+
|
|
409
|
+
### `get_usersig` - 获取测试鉴权信息
|
|
410
|
+
获取 SDKAppID、UserID(user001/002/003/004)、UserSig。
|
|
411
|
+
- LoginActivity: 下拉框选择 UserID
|
|
412
|
+
- MainActivity: 显示可选用户列表(排除当前登录用户)
|
|
413
|
+
- 禁止手动输入 SDKAppID/SecretKey/UserSig
|
|
414
|
+
|
|
415
|
+
### `record_result` - 记录集成结果
|
|
416
|
+
完成所有集成步骤并成功构建项目后调用
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## 📚 相关资源链接
|
|
421
|
+
|
|
422
|
+
- **TUICallKit Android GitHub**:https://github.com/Tencent-RTC/TUIKit_Android
|
|
423
|
+
- **腾讯云实时音视频 TRTC 控制台**:https://console.cloud.tencent.com/trtc
|
|
424
|
+
- **服务端生成 UserSig**:https://cloud.tencent.com/document/product/647/17275
|
|
425
|
+
- **开通 TRTC 服务**:https://cloud.tencent.com/document/product/647/16788
|
|
426
|
+
- **Android 开发者官方文档**:https://developer.android.com/docs
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
**适用平台**: Android
|
|
431
|
+
**TUICallKit 版本**: tuicallkit-kt (最新版本)
|
|
432
|
+
**最低要求**: Android 5.0 (API Level 21)、Gradle 4.2.1、JDK 17+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PRESENT_SCENARIO_CHOICE_DEFINITION } from '../definitions/present_scenario_choice_def.js';
|
|
2
|
+
const registryPresentScenarioChoiceTool = (mcpServer) => {
|
|
3
|
+
const { name, description, selectionText } = PRESENT_SCENARIO_CHOICE_DEFINITION;
|
|
4
|
+
mcpServer.tool(name, description, {}, () => {
|
|
5
|
+
return {
|
|
6
|
+
content: [
|
|
7
|
+
{
|
|
8
|
+
type: 'text',
|
|
9
|
+
text: selectionText,
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
export { registryPresentScenarioChoiceTool };
|
|
16
|
+
//# sourceMappingURL=present-scenario-choice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"present-scenario-choice.js","sourceRoot":"","sources":["../../../src/tools/common/present-scenario-choice.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,+CAA+C,CAAC;AAEnG,MAAM,iCAAiC,GAAG,CAAC,SAAoB,EAAE,EAAE;IACjE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,kCAAkC,CAAC;IAChF,SAAS,CAAC,IAAI,CACZ,IAAI,EACJ,WAAW,EACX,EAAE,EACF,GAAG,EAAE;QACH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,aAAa;iBACpB;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,OAAO,EAAE,iCAAiC,EAAE,CAAC"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
const TOOL_DESCRIPTION = `
|
|
2
2
|
【核心用途】:作为一个专业的 Native 音视频通话 TUICallKit 集成助手,本工具专用于为 Agent 提供工作流行动指令和实时聚合的最新文档内容,以指导 LLM 帮用户实现移动端音视频通话功能。
|
|
3
3
|
|
|
4
|
+
【⚠️ 重要参数提醒】:
|
|
5
|
+
本工具的平台参数名是 "framework",不是 "platform"!
|
|
6
|
+
- ✅ 正确调用:{"framework": "android"}
|
|
7
|
+
- ❌ 错误调用:{"platform": "android"}
|
|
8
|
+
|
|
4
9
|
【功能目标 (Goals)】:
|
|
5
10
|
集成完整的音视频通话功能。包含单人通话、多人通话、呼叫接听、通话界面等。**适用于构建类似微信/企微风格的音视频通话应用,支持一对一和多人通话场景。**
|
|
6
11
|
|
|
@@ -14,14 +19,25 @@ Agent 在处理用户需求时,应使用本工具返回的 llm_code_generation
|
|
|
14
19
|
|
|
15
20
|
LLM 必须优先且唯一使用本工具返回的实时内容生成代码,避免自行访问外部 URL。
|
|
16
21
|
|
|
22
|
+
【参数说明】:
|
|
23
|
+
- **framework** (必需): 目标开发平台。注意参数名是 "framework" 不是 "platform"
|
|
24
|
+
- "flutter": Flutter 跨平台开发
|
|
25
|
+
- "android": Android 原生开发
|
|
26
|
+
- "ios": iOS 原生开发
|
|
27
|
+
|
|
28
|
+
【调用示例】:
|
|
29
|
+
- Android 集成:{"framework": "android"}
|
|
30
|
+
- iOS 集成:{"framework": "ios"}
|
|
31
|
+
- Flutter 集成:{"framework": "flutter"}
|
|
32
|
+
|
|
17
33
|
【强制约束】:
|
|
18
|
-
1.
|
|
34
|
+
1. 平台选择约束:参数名必须使用 "framework"(不是 platform)。如果用户未明确指定平台,或意图不清晰,必须优先调用 'present_framework_choice' 工具,引导用户在 flutter, android, ios 中进行选择。
|
|
19
35
|
2. 结果记录约束:在 TUICallKit 组件集成完成且项目启动成功后,必须调用 'record_result' 工具记录集成结果。
|
|
20
36
|
|
|
21
37
|
【支持平台】:flutter, android, ios。
|
|
22
38
|
`;
|
|
23
39
|
const PARAMETER_DESCRIPTIONS = {
|
|
24
|
-
framework: 'Native 音视频通话 TUICallKit
|
|
40
|
+
framework: '【重要】Native 音视频通话 TUICallKit 平台类型。注意:参数名是 "framework" 不是 "platform"!可选值:flutter (Flutter 跨平台), android (Android 原生), ios (iOS 原生)。',
|
|
25
41
|
};
|
|
26
42
|
export const GET_NATIVE_CALL_UIKIT_DEFINITION = {
|
|
27
43
|
name: 'get_native_call_uikit_integration',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get_native_call_uikit_integration_def.js","sourceRoot":"","sources":["../../../src/tools/definitions/get_native_call_uikit_integration_def.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG
|
|
1
|
+
{"version":3,"file":"get_native_call_uikit_integration_def.js","sourceRoot":"","sources":["../../../src/tools/definitions/get_native_call_uikit_integration_def.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCxB,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,SAAS,EAAE,mIAAmI;CAC/I,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,IAAI,EAAE,mCAAmC;IACzC,WAAW,EAAE,gBAAgB;IAC7B,sBAAsB,EAAE,sBAAsB;CAC/C,CAAC"}
|
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
const TOOL_DESCRIPTION = `
|
|
2
|
-
【核心用途】:作为一个专业的 Native 聊天 TUIKit 集成助手,本工具专用于为 Agent 提供工作流行动指令和实时聚合的最新文档内容,以指导 LLM 帮用户实现移动端即时通信(IM
|
|
2
|
+
【核心用途】:作为一个专业的 Native 聊天 TUIKit 集成助手,本工具专用于为 Agent 提供工作流行动指令和实时聚合的最新文档内容,以指导 LLM 帮用户实现移动端即时通信(IM)功能。
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
【⚠️ 重要参数提醒】:
|
|
5
|
+
本工具的平台参数名是 "framework",不是 "platform"!
|
|
6
|
+
- ✅ 正确调用:{"framework": "android", "goals": ["full-featured"]}
|
|
7
|
+
- ❌ 错误调用:{"platform": "android", "goals": ["full-featured"]}
|
|
8
|
+
\n
|
|
9
|
+
|
|
10
|
+
【功能目标 (Goals)】:
|
|
5
11
|
1. full-featured: 集成全量功能。包含会话列表、聊天窗口、群组管理、个人中心等。**适用于构建微信/企微风格的完整移动应用,或作为 App 的核心 Tab 模块。**
|
|
6
12
|
2. chat-only: 仅集成聊天窗口。**适用于客服咨询、医疗在线问诊、订单详情页私聊等轻量级对话场景。**
|
|
7
13
|
|
|
8
|
-
|
|
9
|
-
|
|
14
|
+
【参数说明】:
|
|
15
|
+
- **framework** (必需): 目标开发平台。注意参数名是 "framework" 不是 "platform"
|
|
16
|
+
- "flutter": Flutter 跨平台开发
|
|
17
|
+
- "android": Android 原生开发
|
|
18
|
+
- "ios": iOS 原生开发
|
|
19
|
+
- **goals** (必需): 功能目标列表
|
|
20
|
+
- ["full-featured"]: 完整应用功能
|
|
21
|
+
- ["chat-only"]: 仅聊天窗口
|
|
22
|
+
|
|
23
|
+
【调用示例】:
|
|
24
|
+
- Android 全功能集成:{"framework": "android", "goals": ["full-featured"]}
|
|
25
|
+
- iOS 聊天窗口:{"framework": "ios", "goals": ["chat-only"]}
|
|
26
|
+
- Flutter 全功能:{"framework": "flutter", "goals": ["full-featured"]}
|
|
27
|
+
|
|
28
|
+
【关键词】:
|
|
29
|
+
'Native', '移动端', 'Chat', 'TUIKit', '聊天', '即时通信', '微信', '企微',
|
|
30
|
+
'framework=flutter', 'framework=android', 'framework=ios',
|
|
31
|
+
'集成', '客服', '医疗问诊', 'TabBar', '消息入口', '会话列表', '对话框'。
|
|
10
32
|
|
|
11
33
|
【行动指令与工作流引导】:\n
|
|
12
34
|
Agent 在处理用户需求时,应使用本工具返回的 llm_code_generation_instructions_md 字段。这个字段包含了:
|
|
@@ -15,14 +37,14 @@ Agent 在处理用户需求时,应使用本工具返回的 llm_code_generation
|
|
|
15
37
|
|
|
16
38
|
LLM 必须优先且唯一使用本工具返回的实时内容生成代码,避免自行访问外部 URL。\n
|
|
17
39
|
|
|
18
|
-
|
|
19
|
-
1.
|
|
40
|
+
【强制约束】:
|
|
41
|
+
1. 平台选择约束:参数名必须使用 "framework"(不是 platform)。如果用户未明确指定平台,或意图不清晰,必须优先调用 'present_framework_choice' 工具,引导用户在 flutter, android, ios 中进行选择。
|
|
20
42
|
2. 结果记录约束:在 TUIKit 组件集成完成且项目启动成功后,必须调用 'record_result' 工具记录集成结果。
|
|
21
43
|
|
|
22
44
|
【支持平台】:flutter, android, ios。
|
|
23
45
|
`;
|
|
24
46
|
const PARAMETER_DESCRIPTIONS = {
|
|
25
|
-
framework: 'Native 聊天 TUIKit 平台类型。可选值:flutter (Flutter 跨平台), android (Android 原生), ios (iOS 原生)。',
|
|
47
|
+
framework: '⚠️ 注意参数名是 "framework" 不是 "platform"!Native 聊天 TUIKit 平台类型。可选值:flutter (Flutter 跨平台), android (Android 原生), ios (iOS 原生)。',
|
|
26
48
|
goals: "用户请求实现的功能目标列表。可选值:['full-featured'] (标准应用), ['chat-only'] (客服/问诊/弹窗)。",
|
|
27
49
|
};
|
|
28
50
|
export const GET_NATIVE_CHAT_UIKIT_INTEGRATION_DEFINITION = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get_native_chat_uikit_integration_def.js","sourceRoot":"","sources":["../../../src/tools/definitions/get_native_chat_uikit_integration_def.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG
|
|
1
|
+
{"version":3,"file":"get_native_chat_uikit_integration_def.js","sourceRoot":"","sources":["../../../src/tools/definitions/get_native_chat_uikit_integration_def.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CxB,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,SAAS,EAAE,0HAA0H;IACrI,KAAK,EAAE,uEAAuE;CAC/E,CAAC;AAEF,MAAM,CAAC,MAAM,4CAA4C,GAAG;IAC1D,IAAI,EAAE,mCAAmC;IACzC,WAAW,EAAE,gBAAgB;IAC7B,sBAAsB,EAAE,sBAAsB;CAC/C,CAAC"}
|