@ynhcj/xiaoyi-channel 0.0.161-beta → 0.0.163-beta
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/dist/src/tools/call-device-tool.js +0 -3
- package/dist/src/tools/create-all-tools.js +0 -2
- package/dist/src/tools/get-device-file-tool-schema.js +2 -3
- package/dist/src/tools/schema-tool-factory.js +1 -1
- package/dist/src/tools/search-file-tool.js +5 -10
- package/dist/src/tools/upload-file-tool.js +2 -11
- package/dist/src/tools/xiaoyi-gui-tool.js +5 -0
- package/package.json +1 -1
|
@@ -22,7 +22,6 @@ import { createUploadFileTool } from "./upload-file-tool.js";
|
|
|
22
22
|
import { createSaveFileToPhoneTool } from "./save-file-to-phone-tool.js";
|
|
23
23
|
import { createSendEmailTool } from "./send-email-tool.js";
|
|
24
24
|
import { createSearchEmailTool } from "./search-email-tool.js";
|
|
25
|
-
import { createFindPcDevicesTool } from "./find-pc-devices-tool.js";
|
|
26
25
|
import { sendStatusUpdate } from "../formatter.js";
|
|
27
26
|
import { getCurrentTaskId, getCurrentMessageId } from "../task-manager.js";
|
|
28
27
|
/**
|
|
@@ -55,7 +54,6 @@ export function createCallDeviceTool(ctx) {
|
|
|
55
54
|
const searchFileTool = createSearchFileTool(ctx);
|
|
56
55
|
const saveFileToPhoneTool = createSaveFileToPhoneTool(ctx);
|
|
57
56
|
const searchEmailTool = createSearchEmailTool(ctx);
|
|
58
|
-
const findPcDevicesTool = createFindPcDevicesTool(ctx);
|
|
59
57
|
/**
|
|
60
58
|
* 端工具注册表 —— 按 name 索引所有可通过 call_device_tool 调度的工具。
|
|
61
59
|
*/
|
|
@@ -84,7 +82,6 @@ export function createCallDeviceTool(ctx) {
|
|
|
84
82
|
[saveFileToPhoneTool.name, saveFileToPhoneTool],
|
|
85
83
|
[sendEmailTool.name, sendEmailTool],
|
|
86
84
|
[searchEmailTool.name, searchEmailTool],
|
|
87
|
-
[findPcDevicesTool.name, findPcDevicesTool],
|
|
88
85
|
]);
|
|
89
86
|
return {
|
|
90
87
|
name: "call_device_tool",
|
|
@@ -16,7 +16,6 @@ import { createGetCollectionToolSchemaTool } from "./get-collection-tool-schema.
|
|
|
16
16
|
import { createGetEmailToolSchemaTool } from "./get-email-tool-schema.js";
|
|
17
17
|
import { createLoginTokenTool } from "./login-token-tool.js";
|
|
18
18
|
import { createAgentAsSkillTool } from "./agent-as-skill-tool.js";
|
|
19
|
-
import { createFindPcDevicesTool } from "./find-pc-devices-tool.js";
|
|
20
19
|
import { createDiscoverCrossDevicesTool } from "./discover-cross-devices-tool.js";
|
|
21
20
|
import { createSendCrossDeviceTaskTool } from "./send-cross-device-task-tool.js";
|
|
22
21
|
import { logger } from "../utils/logger.js";
|
|
@@ -53,6 +52,5 @@ export function createAllTools(ctx) {
|
|
|
53
52
|
createSaveSelfEvolutionSkillTool(ctx),
|
|
54
53
|
createLoginTokenTool(ctx),
|
|
55
54
|
createAgentAsSkillTool(ctx),
|
|
56
|
-
createFindPcDevicesTool(ctx),
|
|
57
55
|
];
|
|
58
56
|
}
|
|
@@ -2,14 +2,13 @@ import { createSchemaTool } from "./schema-tool-factory.js";
|
|
|
2
2
|
import { createSearchFileTool } from "./search-file-tool.js";
|
|
3
3
|
import { createUploadFileTool } from "./upload-file-tool.js";
|
|
4
4
|
import { createSaveFileToPhoneTool } from "./save-file-to-phone-tool.js";
|
|
5
|
-
import { createFindPcDevicesTool } from "./find-pc-devices-tool.js";
|
|
6
5
|
export function createGetDeviceFileToolSchemaTool(ctx) {
|
|
7
6
|
const searchFileTool = createSearchFileTool(ctx);
|
|
8
7
|
const saveFileToPhoneTool = createSaveFileToPhoneTool(ctx);
|
|
9
8
|
return createSchemaTool({
|
|
10
9
|
name: "get_device_file_tool_schema",
|
|
11
10
|
label: "Get Device File Tool Schema",
|
|
12
|
-
description: "
|
|
13
|
-
tools: [searchFileTool, createUploadFileTool(ctx), saveFileToPhoneTool
|
|
11
|
+
description: "获取可在用户设备上搜索文件系统的文件、将用户设备本地文件上传到公网并获取链接、保存文件到文件管理器的相关端工具列表。",
|
|
12
|
+
tools: [searchFileTool, createUploadFileTool(ctx), saveFileToPhoneTool],
|
|
14
13
|
});
|
|
15
14
|
}
|
|
@@ -11,13 +11,12 @@ export function createSearchFileTool(ctx) {
|
|
|
11
11
|
return {
|
|
12
12
|
name: "search_file",
|
|
13
13
|
label: "Search File",
|
|
14
|
-
description:
|
|
14
|
+
description: `搜索用户设备的文件系统的文件,用户设备可以是手机或者鸿蒙PC等。
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
2. 搜索PC/电脑文件:当用户要求搜索PC/电脑上的文件时(如"帮我找一下PC上的xxx文件"、"搜索电脑上的xxx"),必须先调用 find_pc_devices 工具获取设备ID(udid),然后将 udid 传入此工具进行搜索。
|
|
16
|
+
使用场景与调用流程:
|
|
17
|
+
当用户明确说明要从设备搜索时(如"从手机里面搜索xxxx"、"在手机上查找文件xxxx","查找我电脑上的xxxx文件","查找我鸿蒙PC上的xxx文件"),直接调用此工具。
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
如果用户没有明确说明从设备搜索(如仅说"搜索文件"、"找一下xxxx"),应默认从当前runtime运行环境的本地文件系统查询,不要调用此工具。
|
|
21
20
|
|
|
22
21
|
功能说明:根据关键词搜索文件名称或内容,返回匹配的文件列表(包括文件名、路径、大小、修改时间等信息)。
|
|
23
22
|
|
|
@@ -28,11 +27,7 @@ export function createSearchFileTool(ctx) {
|
|
|
28
27
|
query: {
|
|
29
28
|
type: "string",
|
|
30
29
|
description: "搜索关键词,用于匹配文件名称、后缀名或文件内容",
|
|
31
|
-
}
|
|
32
|
-
udid: {
|
|
33
|
-
type: "string",
|
|
34
|
-
description: "PC/电脑设备ID。当搜索PC/电脑上的文件时,需要先通过 find_pc_devices 工具获取设备ID后传入。搜索手机文件时不需要传入此参数。",
|
|
35
|
-
},
|
|
30
|
+
}
|
|
36
31
|
},
|
|
37
32
|
required: ["query"],
|
|
38
33
|
},
|
|
@@ -19,19 +19,14 @@ export function createUploadFileTool(ctx) {
|
|
|
19
19
|
return {
|
|
20
20
|
name: "upload_file",
|
|
21
21
|
label: "Upload File",
|
|
22
|
-
description:
|
|
22
|
+
description: `工具能力描述:将用户设备(可以使手机或者鸿蒙PC等)本地文件上传并获取可公网访问的 URL。
|
|
23
23
|
|
|
24
24
|
前置工具调用:此工具使用前必须先通过call_device_tool调用 search_file 或者 query_collection 工具获取文件的 uri
|
|
25
25
|
|
|
26
|
-
使用场景与调用流程:
|
|
27
|
-
1. 上传手机文件:直接调用此工具,无需传入 udid。
|
|
28
|
-
2. 上传PC/电脑文件:当用户要求上传PC/电脑上的文件时,需要先通过 find_pc_devices 工具获取设备ID(udid),然后将 udid 传入此工具。
|
|
29
|
-
|
|
30
26
|
工具参数说明:
|
|
31
27
|
a. 入参中的fileInfos数组,每个元素必须包含mediaUri字段(对应于search_file工具或者query_collection返回结果中的uri),必须与search_file或者query_collection结果中对应的uri完全保持一致,不要自行修改。
|
|
32
28
|
b. fileInfos中的timeout字段是可选的,表示上传文件超时时间,单位是毫秒,默认是20000(20秒)。
|
|
33
29
|
c. fileInfos 是文件在本地的信息数组(从 search_file 工具或者query_collection 工具响应中获取)。限制:每次最多支持传入 5 条文件信息。
|
|
34
|
-
d. udid 是PC/电脑设备ID,仅在上传PC/电脑文件时需要传入(通过 find_pc_devices 工具获取)。
|
|
35
30
|
|
|
36
31
|
注意事项:
|
|
37
32
|
a. 操作超时时间为60秒,请勿重复调用此工具,如果超时或失败,最多重试一次。
|
|
@@ -43,11 +38,7 @@ export function createUploadFileTool(ctx) {
|
|
|
43
38
|
// 不指定 type,允许传入数组或 JSON 字符串
|
|
44
39
|
// 具体的类型验证和转换在 execute 函数内部进行
|
|
45
40
|
description: "文件信息数组,每个元素包含mediaUri(必需)和timeout(可选,默认20000)。必须先通过 search_file 工具获取。每次最多支持 5 条文件信息。",
|
|
46
|
-
}
|
|
47
|
-
udid: {
|
|
48
|
-
type: "string",
|
|
49
|
-
description: "PC/电脑设备ID。当上传PC/电脑上的文件时,需要先通过 find_pc_devices 工具获取设备ID后传入。上传手机文件时不需要传入此参数。",
|
|
50
|
-
},
|
|
41
|
+
}
|
|
51
42
|
},
|
|
52
43
|
required: ["fileInfos"],
|
|
53
44
|
},
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { getXYWebSocketManager } from "../client.js";
|
|
3
3
|
import { sendCommand } from "../formatter.js";
|
|
4
4
|
import { getCurrentTaskId } from "../task-manager.js";
|
|
5
|
+
import { isCronToolCall } from "./session-manager.js";
|
|
5
6
|
import { logger } from "../utils/logger.js";
|
|
6
7
|
/**
|
|
7
8
|
* XiaoYi GUI tool - executes phone app interactions through GUI agent.
|
|
@@ -46,6 +47,10 @@ export function createXiaoyiGuiTool(ctx) {
|
|
|
46
47
|
if (!params.query || typeof params.query !== "string") {
|
|
47
48
|
throw new Error("Missing or invalid required parameter: query must be a non-empty string");
|
|
48
49
|
}
|
|
50
|
+
// GUI agent only works in active WebSocket sessions — reject cron-triggered calls
|
|
51
|
+
if (sessionId.startsWith("cron-") || isCronToolCall(toolCallId)) {
|
|
52
|
+
throw new Error("xiaoyi_gui_agent 不支持定时任务触发,只能在活跃对话中使用");
|
|
53
|
+
}
|
|
49
54
|
// Get WebSocket manager
|
|
50
55
|
const wsManager = getXYWebSocketManager(config);
|
|
51
56
|
// Build InvokeJarvisGUIAgentRequest command
|