@cotestdev/ai-runner 0.0.3 → 0.0.4
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/ai-runner/src/runner.d.ts +1 -0
- package/dist/ai-runner/src/runner.d.ts.map +1 -1
- package/dist/ai-runner/src/runner.js +9 -1
- package/dist/ai-runner/src/runner.js.map +1 -1
- package/package.json +1 -1
- package/src/runner.ts +11 -1
- package/tests/agent/test-heal-agent.spec.ts +1 -1
- package/dist/agents/heal-agent.d.ts +0 -30
- package/dist/agents/heal-agent.d.ts.map +0 -1
- package/dist/agents/heal-agent.js +0 -76
- package/dist/agents/heal-agent.js.map +0 -1
- package/dist/agents/healer.d.ts +0 -73
- package/dist/agents/healer.d.ts.map +0 -1
- package/dist/agents/healer.js +0 -538
- package/dist/agents/healer.js.map +0 -1
- package/dist/agents/tools/form.d.ts +0 -22
- package/dist/agents/tools/form.d.ts.map +0 -1
- package/dist/agents/tools/form.js +0 -134
- package/dist/agents/tools/form.js.map +0 -1
- package/dist/agents/tools/index.d.ts +0 -13
- package/dist/agents/tools/index.d.ts.map +0 -1
- package/dist/agents/tools/index.js +0 -33
- package/dist/agents/tools/index.js.map +0 -1
- package/dist/agents/tools/navigate.d.ts +0 -22
- package/dist/agents/tools/navigate.d.ts.map +0 -1
- package/dist/agents/tools/navigate.js +0 -74
- package/dist/agents/tools/navigate.js.map +0 -1
- package/dist/agents/tools/snapshot.d.ts +0 -22
- package/dist/agents/tools/snapshot.d.ts.map +0 -1
- package/dist/agents/tools/snapshot.js +0 -110
- package/dist/agents/tools/snapshot.js.map +0 -1
- package/dist/agents/tools/verify.d.ts +0 -34
- package/dist/agents/tools/verify.d.ts.map +0 -1
- package/dist/agents/tools/verify.js +0 -169
- package/dist/agents/tools/verify.js.map +0 -1
- package/dist/agents/tools/wait.d.ts +0 -22
- package/dist/agents/tools/wait.d.ts.map +0 -1
- package/dist/agents/tools/wait.js +0 -104
- package/dist/agents/tools/wait.js.map +0 -1
- package/dist/agents/types.d.ts +0 -51
- package/dist/agents/types.d.ts.map +0 -1
- package/dist/agents/types.js +0 -6
- package/dist/agents/types.js.map +0 -1
- package/dist/ai-runner/src/examples/test-final.d.ts +0 -6
- package/dist/ai-runner/src/examples/test-final.d.ts.map +0 -1
- package/dist/ai-runner/src/examples/test-final.js +0 -73
- package/dist/ai-runner/src/examples/test-final.js.map +0 -1
- package/dist/ai-runner/src/examples/test-simple-tools.d.ts +0 -6
- package/dist/ai-runner/src/examples/test-simple-tools.d.ts.map +0 -1
- package/dist/ai-runner/src/examples/test-simple-tools.js +0 -149
- package/dist/ai-runner/src/examples/test-simple-tools.js.map +0 -1
- package/dist/ai-runner/src/examples/test-working.d.ts +0 -5
- package/dist/ai-runner/src/examples/test-working.d.ts.map +0 -1
- package/dist/ai-runner/src/examples/test-working.js +0 -43
- package/dist/ai-runner/src/examples/test-working.js.map +0 -1
- package/dist/ai-runner/src/examples/v-test-backend-adapter.d.ts +0 -15
- package/dist/ai-runner/src/examples/v-test-backend-adapter.d.ts.map +0 -1
- package/dist/ai-runner/src/examples/v-test-backend-adapter.js +0 -240
- package/dist/ai-runner/src/examples/v-test-backend-adapter.js.map +0 -1
- package/dist/core/runner.d.ts +0 -194
- package/dist/core/runner.d.ts.map +0 -1
- package/dist/core/runner.js +0 -650
- package/dist/core/runner.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/types/external.d.ts +0 -6
- package/dist/types/external.d.ts.map +0 -1
- package/dist/types/external.js +0 -7
- package/dist/types/external.js.map +0 -1
- package/dist/types/index.d.ts +0 -153
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -26
- package/dist/types/index.js.map +0 -1
- package/docs/PLAYWRIGHT_MCP_ADAPTER.md +0 -132
- package/docs/SCHEMA_EXTRACTION.md +0 -224
- package/playwright-report/data/26c3117906b682c9086892b9834f119fdef0ca60.webm +0 -0
- package/playwright-report/data/534e0d700217810c792ffbaf34b2d4160992d0ec.md +0 -210
- package/playwright-report/data/56a09464231ba6c36c441f95019b40b9238c9da5.zip +0 -0
- package/playwright-report/data/9c6ffeb3926521c8a7b610e82e1b29d49e859932.png +0 -0
- package/playwright-report/index.html +0 -85
- package/playwright-report/trace/assets/codeMirrorModule-Bucv2d7q.js +0 -25
- package/playwright-report/trace/assets/defaultSettingsView-BEpdCv1S.js +0 -266
- package/playwright-report/trace/codeMirrorModule.C3UTv-Ge.css +0 -1
- package/playwright-report/trace/codicon.DCmgc-ay.ttf +0 -0
- package/playwright-report/trace/defaultSettingsView.ConWv5KN.css +0 -1
- package/playwright-report/trace/index.BxQ34UMZ.js +0 -2
- package/playwright-report/trace/index.C4Y3Aw8n.css +0 -1
- package/playwright-report/trace/index.html +0 -43
- package/playwright-report/trace/manifest.webmanifest +0 -16
- package/playwright-report/trace/playwright-logo.svg +0 -9
- package/playwright-report/trace/snapshot.html +0 -21
- package/playwright-report/trace/sw.bundle.js +0 -3
- package/playwright-report/trace/uiMode.BWTwXl41.js +0 -5
- package/playwright-report/trace/uiMode.Btcz36p_.css +0 -1
- package/playwright-report/trace/uiMode.html +0 -17
- package/playwright-report/trace/xtermModule.DYP7pi_n.css +0 -32
- package/test-results/.last-run.json +0 -6
- package/test-results/tests-agent-test-heal-agent-Register-user-1-chromium/error-context.md +0 -210
- package/test-results/tests-agent-test-heal-agent-Register-user-1-chromium/test-failed-1.png +0 -0
- package/test-results/tests-agent-test-heal-agent-Register-user-1-chromium/trace.zip +0 -0
- package/test-results/tests-agent-test-heal-agent-Register-user-1-chromium/video.webm +0 -0
package/dist/agents/healer.js
DELETED
|
@@ -1,538 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Healer - 测试自愈代理
|
|
4
|
-
* 使用 LangChain 的 createAgent API 实现 ReAct 循环
|
|
5
|
-
*
|
|
6
|
-
* 参考:https://www.npmjs.com/package/langchain
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.Healer = void 0;
|
|
10
|
-
const langchain_1 = require("langchain");
|
|
11
|
-
const anthropic_1 = require("@langchain/anthropic");
|
|
12
|
-
const tools_1 = require("@langchain/core/tools");
|
|
13
|
-
const tools_2 = require("./tools");
|
|
14
|
-
// ============================================================================
|
|
15
|
-
// Playwright 工具集(使用标准化工具 + 自定义工具)
|
|
16
|
-
// ============================================================================
|
|
17
|
-
/**
|
|
18
|
-
* 创建 Playwright 工具集
|
|
19
|
-
* 使用标准化的 Playwright MCP 转换工具,并添加 Healer 特有的变量管理工具
|
|
20
|
-
*/
|
|
21
|
-
function createPlaywrightTools(page, setVariable, getAllVariables) {
|
|
22
|
-
// 获取所有标准化工具
|
|
23
|
-
const standardTools = (0, tools_2.getAllTools)(page);
|
|
24
|
-
// 添加 set_variable 工具
|
|
25
|
-
const setVariableTool = new tools_1.DynamicTool({
|
|
26
|
-
name: 'set_variable',
|
|
27
|
-
description: 'Set the value of a variable. Input format: variableName,value (comma separated). For example: username,john or url,https://example.com. This tool is used to save data retrieved from the page to variables for later use.',
|
|
28
|
-
func: async (input) => {
|
|
29
|
-
const parts = input.split(',');
|
|
30
|
-
const varName = parts[0].trim();
|
|
31
|
-
const varValue = parts.slice(1).join(',').trim();
|
|
32
|
-
setVariable(varName, varValue);
|
|
33
|
-
return `Variable set: ${varName} = ${varValue}`;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
// 添加 get_variable 工具 - 查看所有变量或获取特定变量
|
|
37
|
-
const getVariableTool = new tools_1.DynamicTool({
|
|
38
|
-
name: 'get_variable',
|
|
39
|
-
description: 'Get all variables or get a specific variable value. To get all variables, use: get_variable or get_variable/all. To get a specific variable, use: get_variable,variableName. This helps you understand what data has been stored.',
|
|
40
|
-
func: async (input) => {
|
|
41
|
-
if (!input || input.trim() === '' || input.trim() === 'all') {
|
|
42
|
-
// 获取所有变量
|
|
43
|
-
const allVars = getAllVariables ? getAllVariables() : {};
|
|
44
|
-
const varList = Object.keys(allVars).map(key => ` - ${key}: ${JSON.stringify(allVars[key])}`).join('\n');
|
|
45
|
-
return `Current variables:\n${varList || ' (no variables set)'}`;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
// 获取特定变量
|
|
49
|
-
const varName = input.trim();
|
|
50
|
-
const allVars = getAllVariables ? getAllVariables() : {};
|
|
51
|
-
const value = allVars[varName];
|
|
52
|
-
return `Variable ${varName}: ${JSON.stringify(value)}`;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
return [...standardTools, setVariableTool, getVariableTool];
|
|
57
|
-
}
|
|
58
|
-
// ============================================================================
|
|
59
|
-
// Healer 类
|
|
60
|
-
// ============================================================================
|
|
61
|
-
class Healer {
|
|
62
|
-
constructor(modelConfig, config = {}) {
|
|
63
|
-
this.reactSteps = []; // 记录 ReAct 循环的详细步骤
|
|
64
|
-
this.modelConfig = modelConfig;
|
|
65
|
-
this.maxSteps = config.maxSteps ?? 20;
|
|
66
|
-
this.debugMode = config.debugMode ?? false;
|
|
67
|
-
this.setVariableCallback = config.setVariable;
|
|
68
|
-
this.getAllVariablesCallback = config.getAllVariables;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* 默认的 setVariable 方法(当没有提供回调时使用)
|
|
72
|
-
*/
|
|
73
|
-
defaultSetVariable(name, value) {
|
|
74
|
-
if (this.debugMode) {
|
|
75
|
-
console.log(`[Healer] ⚠️ 没有设置 setVariable 回调,变量 ${name} = ${value} 不会被保存`);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* 默认的 getAllVariables 方法(当没有提供回调时使用)
|
|
80
|
-
*/
|
|
81
|
-
defaultGetAllVariables() {
|
|
82
|
-
if (this.debugMode) {
|
|
83
|
-
console.log(`[Healer] ⚠️ 没有设置 getAllVariables 回调,返回空对象`);
|
|
84
|
-
}
|
|
85
|
-
return {};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* 执行自愈(使用 LangChain createAgent API)
|
|
89
|
-
*/
|
|
90
|
-
async execute(state) {
|
|
91
|
-
console.log('\n========================================');
|
|
92
|
-
console.log('[Healer] 开始执行(使用 langchain createAgent)');
|
|
93
|
-
console.log('========================================');
|
|
94
|
-
console.log(`[Healer] 模型: ${this.modelConfig.provider}/${this.modelConfig.modelName}`);
|
|
95
|
-
console.log(`[Healer] 目标: ${state.objective}`);
|
|
96
|
-
console.log(`[Healer] 错误: ${state.error}`);
|
|
97
|
-
const page = state.context?.page;
|
|
98
|
-
if (!page) {
|
|
99
|
-
throw new Error('缺少 page 对象');
|
|
100
|
-
}
|
|
101
|
-
try {
|
|
102
|
-
// 重置步骤记录
|
|
103
|
-
this.reactSteps = [];
|
|
104
|
-
// 创建 LLM 实例
|
|
105
|
-
const llm = this.createLLM();
|
|
106
|
-
// 步数计数器(用于在工具返回值中提醒)
|
|
107
|
-
let stepCount = 0;
|
|
108
|
-
const stepCounter = { count: 0 };
|
|
109
|
-
// 创建 Playwright 工具(包装日志输出和步数提醒)
|
|
110
|
-
const tools = this.createPlaywrightToolsWithLogging(page, this.setVariableCallback || this.defaultSetVariable.bind(this), this.getAllVariablesCallback || this.defaultGetAllVariables.bind(this), stepCounter, this.maxSteps);
|
|
111
|
-
// 使用 createAgent API
|
|
112
|
-
const agent = (0, langchain_1.createAgent)({
|
|
113
|
-
model: llm,
|
|
114
|
-
tools: tools, // Cast to any to bypass duplicate @langchain/core type incompatibility
|
|
115
|
-
systemPrompt: this.buildSystemPrompt(state)
|
|
116
|
-
}); // Cast entire config to bypass type instantiation issues
|
|
117
|
-
console.log(`[Healer] 🚀 开始 ReAct 循环...`);
|
|
118
|
-
// 使用 stream 以便实时输出每一步
|
|
119
|
-
const inputStream = {
|
|
120
|
-
messages: [{
|
|
121
|
-
role: 'user',
|
|
122
|
-
content: this.buildUserMessage(state)
|
|
123
|
-
}]
|
|
124
|
-
};
|
|
125
|
-
let finalResult = null;
|
|
126
|
-
let lastEvent = null;
|
|
127
|
-
// 流式执行并实时输出
|
|
128
|
-
const stream = await agent.stream(inputStream, {
|
|
129
|
-
recursionLimit: 25,
|
|
130
|
-
streamMode: 'updates',
|
|
131
|
-
});
|
|
132
|
-
for await (const event of stream) {
|
|
133
|
-
stepCount++;
|
|
134
|
-
stepCounter.count = stepCount;
|
|
135
|
-
lastEvent = event; // 保存最后一个事件
|
|
136
|
-
if (this.debugMode) {
|
|
137
|
-
console.log(`\n[Healer] 📊 步骤 ${stepCount}:`);
|
|
138
|
-
console.log(`[Healer] 🔍 事件类型:`, Object.keys(event));
|
|
139
|
-
console.log(`[Healer] 🔍 事件结构:`, JSON.stringify(event, null, 2).substring(0, 500));
|
|
140
|
-
}
|
|
141
|
-
// 在 updates 模式下,messages 在不同位置
|
|
142
|
-
// 1. AI 思考和工具调用:event.model_request.messages
|
|
143
|
-
// 2. 工具执行结果:event.tools.messages
|
|
144
|
-
const messages = event.model_request?.messages || event.messages;
|
|
145
|
-
const toolMessages = event.tools?.messages;
|
|
146
|
-
if (this.debugMode) {
|
|
147
|
-
console.log(`[Healer] 🔍 检查 messages:`, messages ? `找到 ${messages.length} 条消息` : '未找到');
|
|
148
|
-
console.log(`[Healer] 🔍 检查 tools.messages:`, toolMessages ? `找到 ${toolMessages.length} 条工具消息` : '未找到');
|
|
149
|
-
}
|
|
150
|
-
// 处理 AI 思考和工具调用
|
|
151
|
-
if (messages && Array.isArray(messages)) {
|
|
152
|
-
for (const msg of messages) {
|
|
153
|
-
if (msg.type === 'ai') {
|
|
154
|
-
// AI 消息:content 是 string(思考过程),tool_calls 是数组(工具调用)
|
|
155
|
-
if (msg.content && typeof msg.content === 'string') {
|
|
156
|
-
// Thought 步骤
|
|
157
|
-
console.log(`[Healer] 💭 AI思考: ${msg.content}`);
|
|
158
|
-
this.recordThoughtStep(msg.content, stepCount);
|
|
159
|
-
}
|
|
160
|
-
// 处理工具调用
|
|
161
|
-
const aiMsg = msg;
|
|
162
|
-
if (aiMsg.tool_calls && Array.isArray(aiMsg.tool_calls)) {
|
|
163
|
-
for (const toolCall of aiMsg.tool_calls) {
|
|
164
|
-
// Action 步骤
|
|
165
|
-
const name = toolCall.name || toolCall.id;
|
|
166
|
-
const args = toolCall.args || {};
|
|
167
|
-
console.log(`[Healer] 🔧 工具调用: ${name}`);
|
|
168
|
-
console.log(`[Healer] 📝 参数:`, JSON.stringify(args, null, 2));
|
|
169
|
-
this.recordActionStep(name, args, stepCount);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
// 处理工具执行结果
|
|
176
|
-
if (toolMessages && Array.isArray(toolMessages)) {
|
|
177
|
-
for (const msg of toolMessages) {
|
|
178
|
-
if (msg.type === 'tool') {
|
|
179
|
-
// Observation 步骤
|
|
180
|
-
const output = msg.content?.toString()?.substring(0, 200) || '(空)';
|
|
181
|
-
const success = true; // 如果能收到消息说明执行成功了
|
|
182
|
-
console.log(`[Healer] ✅ 工具结果 [${msg.name}]:`, output);
|
|
183
|
-
this.recordObservationStep(output, success, stepCount);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
// 使用最后一个事件作为最终结果(不要重新调用 invoke)
|
|
189
|
-
finalResult = lastEvent || { messages: [] };
|
|
190
|
-
// 调试:输出 finalResult 结构
|
|
191
|
-
if (this.debugMode) {
|
|
192
|
-
console.log('\n[Healer] 🔍 finalResult 结构:', JSON.stringify(finalResult, null, 2).substring(0, 1000));
|
|
193
|
-
}
|
|
194
|
-
// 提取结果
|
|
195
|
-
const success = this.isSuccess(finalResult);
|
|
196
|
-
const reasoning = this.extractReasoning(finalResult);
|
|
197
|
-
const steps = stepCount; // 直接使用记录的步数
|
|
198
|
-
console.log(`\n[Healer] 执行${success ? '成功 ✅' : '失败 ❌'}`);
|
|
199
|
-
console.log(`[Healer] 总步数: ${steps || stepCount}`);
|
|
200
|
-
console.log(`[Healer] 📝 记录了 ${this.reactSteps.length} 个 ReAct 步骤`);
|
|
201
|
-
console.log('========================================\n');
|
|
202
|
-
return {
|
|
203
|
-
success,
|
|
204
|
-
reasoning,
|
|
205
|
-
steps: steps || stepCount,
|
|
206
|
-
updatedVariables: {}, // 变量已通过回调函数设置,这里返回空对象
|
|
207
|
-
reactSteps: this.reactSteps // 返回详细的 ReAct 步骤记录
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
catch (error) {
|
|
211
|
-
console.error(`[Healer] ❌ 执行失败: ${error}`);
|
|
212
|
-
return {
|
|
213
|
-
success: false,
|
|
214
|
-
errorMessage: error.message,
|
|
215
|
-
reasoning: `Healer 执行失败: ${error.message}`,
|
|
216
|
-
steps: 0,
|
|
217
|
-
updatedVariables: {},
|
|
218
|
-
reactSteps: this.reactSteps
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* 记录 Thought 步骤
|
|
224
|
-
*/
|
|
225
|
-
recordThoughtStep(thought, stepNumber) {
|
|
226
|
-
this.reactSteps.push({
|
|
227
|
-
stepNumber,
|
|
228
|
-
stepType: 'thought',
|
|
229
|
-
timestamp: Date.now(),
|
|
230
|
-
thought
|
|
231
|
-
});
|
|
232
|
-
if (this.debugMode) {
|
|
233
|
-
console.log(`[Healer] 📝 已记录 Thought 步骤,当前共 ${this.reactSteps.length} 个步骤`);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* 记录 Action 步骤
|
|
238
|
-
*/
|
|
239
|
-
recordActionStep(toolName, toolInput, stepNumber) {
|
|
240
|
-
this.reactSteps.push({
|
|
241
|
-
stepNumber,
|
|
242
|
-
stepType: 'action',
|
|
243
|
-
timestamp: Date.now(),
|
|
244
|
-
toolCall: {
|
|
245
|
-
name: toolName,
|
|
246
|
-
input: toolInput
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
if (this.debugMode) {
|
|
250
|
-
console.log(`[Healer] 📝 已记录 Action 步骤,当前共 ${this.reactSteps.length} 个步骤`);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* 记录 Observation 步骤
|
|
255
|
-
*/
|
|
256
|
-
recordObservationStep(output, success, stepNumber) {
|
|
257
|
-
this.reactSteps.push({
|
|
258
|
-
stepNumber,
|
|
259
|
-
stepType: 'observation',
|
|
260
|
-
timestamp: Date.now(),
|
|
261
|
-
toolResult: {
|
|
262
|
-
output,
|
|
263
|
-
success
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
if (this.debugMode) {
|
|
267
|
-
console.log(`[Healer] 📝 已记录 Observation 步骤,当前共 ${this.reactSteps.length} 个步骤`);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* 创建带日志输出的 Playwright 工具
|
|
272
|
-
*/
|
|
273
|
-
createPlaywrightToolsWithLogging(page, setVariable, getAllVariables, stepCounter, maxSteps) {
|
|
274
|
-
const baseTools = createPlaywrightTools(page, setVariable, getAllVariables);
|
|
275
|
-
// 包装每个工具以添加日志输出和步数提醒
|
|
276
|
-
return baseTools.map(tool => {
|
|
277
|
-
const originalFunc = tool.func;
|
|
278
|
-
tool.func = async (input) => {
|
|
279
|
-
if (this.debugMode) {
|
|
280
|
-
console.log(`\n[Healer] 🔧 工具调用: ${tool.name}`);
|
|
281
|
-
console.log(`[Healer] 📝 输入: ${input}`);
|
|
282
|
-
}
|
|
283
|
-
const startTime = Date.now();
|
|
284
|
-
const result = await originalFunc.call(tool, input);
|
|
285
|
-
const duration = Date.now() - startTime;
|
|
286
|
-
if (this.debugMode) {
|
|
287
|
-
console.log(`[Healer] ✅ 输出: ${result}`);
|
|
288
|
-
console.log(`[Healer] ⏱️ 耗时: ${duration}ms`);
|
|
289
|
-
}
|
|
290
|
-
// 附加步数信息到结果中
|
|
291
|
-
const currentStep = stepCounter.count;
|
|
292
|
-
const remainingSteps = Math.max(0, maxSteps - currentStep);
|
|
293
|
-
let stepWarning = '';
|
|
294
|
-
if (remainingSteps <= 0) {
|
|
295
|
-
stepWarning = `\n\n🚨🚨🚨 【紧急警告】:你已经达到最大步数限制 (${maxSteps} 次)!必须立即结束,不能再调用任何工具!🚨🚨🚨`;
|
|
296
|
-
}
|
|
297
|
-
else if (remainingSteps <= 3) {
|
|
298
|
-
stepWarning = `\n\n⚠️⚠️⚠️ 【重要提醒】:你只剩下 ${remainingSteps} 次工具调用机会!请立即完成当前任务,不要再调用新工具!⚠️⚠️⚠️`;
|
|
299
|
-
}
|
|
300
|
-
else if (currentStep >= 10) {
|
|
301
|
-
stepWarning = `\n\n📊 【步数提醒】:已使用 ${currentStep}/${maxSteps} 次,还剩 ${remainingSteps} 次,请加快速度。`;
|
|
302
|
-
}
|
|
303
|
-
return result + stepWarning;
|
|
304
|
-
};
|
|
305
|
-
return tool;
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* 创建 LLM 实例
|
|
310
|
-
*/
|
|
311
|
-
createLLM() {
|
|
312
|
-
switch (this.modelConfig.provider) {
|
|
313
|
-
case 'anthropic':
|
|
314
|
-
return new anthropic_1.ChatAnthropic({
|
|
315
|
-
apiKey: this.modelConfig.apiKey,
|
|
316
|
-
model: this.modelConfig.modelName,
|
|
317
|
-
temperature: this.modelConfig.temperature ?? 0,
|
|
318
|
-
maxTokens: this.modelConfig.maxTokens ?? 4096
|
|
319
|
-
});
|
|
320
|
-
case 'openai':
|
|
321
|
-
// 需要安装 @langchain/openai
|
|
322
|
-
const { ChatOpenAI } = require('@langchain/openai');
|
|
323
|
-
return new ChatOpenAI({
|
|
324
|
-
apiKey: this.modelConfig.apiKey,
|
|
325
|
-
modelName: this.modelConfig.modelName,
|
|
326
|
-
temperature: this.modelConfig.temperature ?? 0,
|
|
327
|
-
maxTokens: this.modelConfig.maxTokens ?? 4096,
|
|
328
|
-
configuration: {
|
|
329
|
-
baseURL: this.modelConfig.baseURL
|
|
330
|
-
}
|
|
331
|
-
});
|
|
332
|
-
default:
|
|
333
|
-
throw new Error(`不支持的模型提供商: ${this.modelConfig.provider}`);
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* 构建系统提示
|
|
338
|
-
*/
|
|
339
|
-
buildSystemPrompt(state) {
|
|
340
|
-
// 获取当前可用变量列表
|
|
341
|
-
const allVars = this.getAllVariablesCallback ? this.getAllVariablesCallback() : {};
|
|
342
|
-
const variableList = Object.keys(allVars).length > 0
|
|
343
|
-
? Object.keys(allVars).map(v => ` - ${v}: ${JSON.stringify(allVars[v])}`).join('\n')
|
|
344
|
-
: ' (no variables set yet)';
|
|
345
|
-
return `
|
|
346
|
-
You are a Playwright test self-healing expert, skilled at analyzing and fixing errors in browser automation tests.
|
|
347
|
-
|
|
348
|
-
## Available Tools
|
|
349
|
-
### Navigation & Page Control
|
|
350
|
-
- browser_navigate(url): Navigate to a URL
|
|
351
|
-
- browser_navigate_back(): Navigate back
|
|
352
|
-
- browser_navigate_forward(): Navigate forward
|
|
353
|
-
|
|
354
|
-
### Element Interaction
|
|
355
|
-
- browser_click(selector): Click on an element (supports multiple selectors, comma-separated)
|
|
356
|
-
- browser_fill(json): Fill form fields. Format: {"selector": "css-or-text", "value": "value"}
|
|
357
|
-
- browser_set_checked(json): Check/uncheck checkboxes. Format: {"selector": "css-or-text", "checked": true|false}
|
|
358
|
-
- browser_select_option(json): Select dropdown option. Format: {"selector": "css-or-text", "value": "option-value"}
|
|
359
|
-
- browser_hover(selector): Hover over an element
|
|
360
|
-
|
|
361
|
-
### Waiting & Synchronization
|
|
362
|
-
- browser_wait_for_time(ms): Wait for specified time in milliseconds
|
|
363
|
-
- browser_wait_for_selector(selector): Wait for element to appear (supports optional timeout: "selector, timeout=5000")
|
|
364
|
-
- browser_wait_for_url(pattern): Wait for URL to match pattern
|
|
365
|
-
|
|
366
|
-
### Verification & Inspection
|
|
367
|
-
- browser_snapshot(): Get accessibility snapshot of the page
|
|
368
|
-
- browser_get_url(): Get current page URL
|
|
369
|
-
- browser_get_content(): Get page HTML content
|
|
370
|
-
- browser_get_text(selector): Get text content of an element
|
|
371
|
-
- browser_screenshot(): Take a screenshot and save it
|
|
372
|
-
- browser_verify_text(text): Verify if text is visible on page
|
|
373
|
-
- browser_verify_element(selector): Verify if element exists on page
|
|
374
|
-
|
|
375
|
-
### Variable Management (IMPORTANT!)
|
|
376
|
-
- set_variable(name,value): Save a variable value for later use. Format: variableName,value
|
|
377
|
-
- Example: set_variable(url,https://example.com) or set_variable(username,john)
|
|
378
|
-
- get_variable: Get all variables or get a specific variable. Use this to understand what data is already stored.
|
|
379
|
-
- To get all variables: get_variable or get_variable/all
|
|
380
|
-
- To get specific variable: get_variable,variableName
|
|
381
|
-
|
|
382
|
-
## Current Available Variables
|
|
383
|
-
${variableList}
|
|
384
|
-
|
|
385
|
-
## Variable Handling Best Practices
|
|
386
|
-
1. **Use existing variables**: Before setting new variables, check what's already available using get_variable
|
|
387
|
-
2. **Maintain variable assignments**: If the original code sets variables (like url = page.url()), you MUST reproduce this behavior
|
|
388
|
-
3. **Semantic understanding**: Analyze the original code to understand what each variable represents (e.g., 'url' typically means current page URL)
|
|
389
|
-
4. **Consistency**: Use the same variable names and meanings as in the original code
|
|
390
|
-
|
|
391
|
-
## Workflow
|
|
392
|
-
1. **Check existing variables**: Use get_variable to see what's already stored
|
|
393
|
-
2. **Analyze Error**: Understand the error cause and current state
|
|
394
|
-
3. **Analyze original code**: Look for variable assignments that need to be reproduced
|
|
395
|
-
4. **Select Tool**: Choose appropriate tool based on the error
|
|
396
|
-
5. **Execute & Set Variables**: Call tools and use set_variable to maintain variable assignments
|
|
397
|
-
6. **Evaluate**: Determine if successful, decide next step
|
|
398
|
-
7. **Loop**: Until success or max steps reached
|
|
399
|
-
|
|
400
|
-
## Step Limit (CRITICAL!)
|
|
401
|
-
- **Maximum step limit: ${this.maxSteps} steps**
|
|
402
|
-
- **When system shows ≤ 3 steps remaining, stop calling new tools immediately**
|
|
403
|
-
- **When system shows 0 steps remaining, must end immediately, no more tool calls**
|
|
404
|
-
- **Prioritize direct approaches, avoid unnecessary debugging (like frequent screenshots)**
|
|
405
|
-
- **Every tool call consumes a step, use them wisely**
|
|
406
|
-
|
|
407
|
-
## Strategy Tips
|
|
408
|
-
- Timeout errors: Use browser_wait_for_selector first, then retry
|
|
409
|
-
- Element not found: Try multiple selectors or use browser_screenshot to check state
|
|
410
|
-
- Selector errors: Try more generic selectors (button, a, input)
|
|
411
|
-
- Network delays: Use browser_wait_for_time to wait
|
|
412
|
-
- Uncertain state: Use browser_screenshot or browser_get_url to inspect
|
|
413
|
-
- **Variable handling**: If original code involves variable assignment, use browser_get_text to get the value, then set_variable(name,value) to save it
|
|
414
|
-
- **Efficiency first**: Complete tasks in minimum steps, every step must have clear purpose
|
|
415
|
-
|
|
416
|
-
Please use the tools to complete the self-healing task.
|
|
417
|
-
`.trim();
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* 构建用户消息
|
|
421
|
-
*/
|
|
422
|
-
buildUserMessage(state) {
|
|
423
|
-
return `
|
|
424
|
-
Please help me fix the following test error:
|
|
425
|
-
|
|
426
|
-
## Current Task
|
|
427
|
-
${state.objective}
|
|
428
|
-
|
|
429
|
-
## Error Message
|
|
430
|
-
${state.error}
|
|
431
|
-
|
|
432
|
-
## Original Code
|
|
433
|
-
\`\`\`typescript
|
|
434
|
-
${state.originalCode}
|
|
435
|
-
\`\`\`
|
|
436
|
-
|
|
437
|
-
## Important Instructions
|
|
438
|
-
1. Check existing variables using get_variable before setting new ones
|
|
439
|
-
2. Analyze the original code to understand what variables are being set (e.g., heal.set(), variable assignments)
|
|
440
|
-
3. Reproduce those variable assignments using set_variable after completing the task
|
|
441
|
-
4. Use semantic understanding to determine what each variable represents
|
|
442
|
-
|
|
443
|
-
Please use the provided tools to analyze the problem and attempt to fix it.
|
|
444
|
-
`.trim();
|
|
445
|
-
}
|
|
446
|
-
/**
|
|
447
|
-
* 判断是否成功
|
|
448
|
-
* TODO: 后续优化成功判断逻辑,支持更多场景
|
|
449
|
-
*/
|
|
450
|
-
isSuccess(result) {
|
|
451
|
-
if (!result) {
|
|
452
|
-
return false;
|
|
453
|
-
}
|
|
454
|
-
// 兼容不同的数据结构
|
|
455
|
-
let messages;
|
|
456
|
-
if (result.model_request && result.model_request.messages) {
|
|
457
|
-
// 结构: { model_request: { messages: [...] } }
|
|
458
|
-
messages = result.model_request.messages;
|
|
459
|
-
}
|
|
460
|
-
else if (result.messages) {
|
|
461
|
-
// 结构: { messages: [...] }
|
|
462
|
-
messages = result.messages;
|
|
463
|
-
}
|
|
464
|
-
if (!messages || !Array.isArray(messages)) {
|
|
465
|
-
return false;
|
|
466
|
-
}
|
|
467
|
-
const lastMessage = messages[messages.length - 1];
|
|
468
|
-
const content = lastMessage.content?.toString() || '';
|
|
469
|
-
// 检查是否包含成功关键词
|
|
470
|
-
return content.includes('成功') ||
|
|
471
|
-
content.toLowerCase().includes('success') ||
|
|
472
|
-
!content.includes('失败') && !content.toLowerCase().includes('error');
|
|
473
|
-
}
|
|
474
|
-
/**
|
|
475
|
-
* 提取推理过程
|
|
476
|
-
* TODO: 后续优化推理过程提取,支持更详细的分析
|
|
477
|
-
*/
|
|
478
|
-
extractReasoning(result) {
|
|
479
|
-
if (!result) {
|
|
480
|
-
return '无法提取推理过程';
|
|
481
|
-
}
|
|
482
|
-
const reasoningParts = [];
|
|
483
|
-
// 兼容不同的数据结构
|
|
484
|
-
let messages;
|
|
485
|
-
if (result.model_request && result.model_request.messages) {
|
|
486
|
-
// 结构: { model_request: { messages: [...] } }
|
|
487
|
-
messages = result.model_request.messages;
|
|
488
|
-
}
|
|
489
|
-
else if (result.messages) {
|
|
490
|
-
// 结构: { messages: [...] }
|
|
491
|
-
messages = result.messages;
|
|
492
|
-
}
|
|
493
|
-
// 处理工具执行结果(event.tools.messages 结构)
|
|
494
|
-
const toolMessages = result.tools?.messages;
|
|
495
|
-
if (toolMessages && Array.isArray(toolMessages)) {
|
|
496
|
-
for (const msg of toolMessages) {
|
|
497
|
-
if (msg.type === 'tool') {
|
|
498
|
-
const output = msg.content?.toString()?.substring(0, 300) || '';
|
|
499
|
-
reasoningParts.push(`工具结果 [${msg.name}]: ${output}`);
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
if (messages && Array.isArray(messages)) {
|
|
504
|
-
// 收集所有消息内容
|
|
505
|
-
const messageTexts = messages.map((msg) => {
|
|
506
|
-
const parts = [];
|
|
507
|
-
// AI 消息:content 是 string,tool_calls 是数组
|
|
508
|
-
if (msg.type === 'ai') {
|
|
509
|
-
if (msg.content && typeof msg.content === 'string') {
|
|
510
|
-
parts.push(`AI思考: ${msg.content}`);
|
|
511
|
-
}
|
|
512
|
-
const aiMsg = msg;
|
|
513
|
-
if (aiMsg.tool_calls && Array.isArray(aiMsg.tool_calls)) {
|
|
514
|
-
for (const toolCall of aiMsg.tool_calls) {
|
|
515
|
-
const name = toolCall.name || toolCall.id;
|
|
516
|
-
const args = JSON.stringify(toolCall.args || {});
|
|
517
|
-
parts.push(`工具调用: ${name}`);
|
|
518
|
-
parts.push(`参数: ${args}`);
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
else if (msg.type === 'tool') {
|
|
523
|
-
// 工具执行结果(兼容旧结构)
|
|
524
|
-
const output = msg.content?.toString()?.substring(0, 300) || '';
|
|
525
|
-
parts.push(`工具结果: ${output}`);
|
|
526
|
-
}
|
|
527
|
-
return parts.join('\n');
|
|
528
|
-
});
|
|
529
|
-
reasoningParts.push(...messageTexts);
|
|
530
|
-
}
|
|
531
|
-
if (reasoningParts.length === 0) {
|
|
532
|
-
return '无法提取推理过程';
|
|
533
|
-
}
|
|
534
|
-
return reasoningParts.filter(Boolean).join('\n\n---\n\n');
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
exports.Healer = Healer;
|
|
538
|
-
//# sourceMappingURL=healer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"healer.js","sourceRoot":"","sources":["../../src/agents/healer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 表单工具 - Form
|
|
3
|
-
*/
|
|
4
|
-
import { DynamicTool } from '@langchain/core/tools';
|
|
5
|
-
import type { Page } from 'playwright';
|
|
6
|
-
/**
|
|
7
|
-
* 创建填写表单工具
|
|
8
|
-
*/
|
|
9
|
-
export declare function createFillFormTool(page: Page): DynamicTool;
|
|
10
|
-
/**
|
|
11
|
-
* 创建选择选项工具
|
|
12
|
-
*/
|
|
13
|
-
export declare function createSelectOptionTool(page: Page): DynamicTool;
|
|
14
|
-
/**
|
|
15
|
-
* 创建复选框工具
|
|
16
|
-
*/
|
|
17
|
-
export declare function createSetCheckedTool(page: Page): DynamicTool;
|
|
18
|
-
/**
|
|
19
|
-
* 表单工具集
|
|
20
|
-
*/
|
|
21
|
-
export declare const formTools: (page: Page) => DynamicTool[];
|
|
22
|
-
//# sourceMappingURL=form.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/agents/tools/form.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAoC1D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAoC9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAoC5D;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,IAAI,KAAG,WAAW,EAIjD,CAAC"}
|