ai-browser 0.2.4 → 0.2.5
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/README.md +30 -0
- package/dist/agent/agent-loop.d.ts +8 -2
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +138 -86
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/config.d.ts +5 -0
- package/dist/agent/config.d.ts.map +1 -1
- package/dist/agent/config.js +5 -0
- package/dist/agent/config.js.map +1 -1
- package/dist/agent/content-budget.d.ts +11 -0
- package/dist/agent/content-budget.d.ts.map +1 -0
- package/dist/agent/content-budget.js +129 -0
- package/dist/agent/content-budget.js.map +1 -0
- package/dist/agent/conversation-manager.d.ts +48 -0
- package/dist/agent/conversation-manager.d.ts.map +1 -0
- package/dist/agent/conversation-manager.js +157 -0
- package/dist/agent/conversation-manager.js.map +1 -0
- package/dist/agent/error-recovery.d.ts +29 -0
- package/dist/agent/error-recovery.d.ts.map +1 -0
- package/dist/agent/error-recovery.js +72 -0
- package/dist/agent/error-recovery.js.map +1 -0
- package/dist/agent/page-state-cache.d.ts +22 -0
- package/dist/agent/page-state-cache.d.ts.map +1 -0
- package/dist/agent/page-state-cache.js +71 -0
- package/dist/agent/page-state-cache.js.map +1 -0
- package/dist/agent/progress-estimator.d.ts +17 -0
- package/dist/agent/progress-estimator.d.ts.map +1 -0
- package/dist/agent/progress-estimator.js +67 -0
- package/dist/agent/progress-estimator.js.map +1 -0
- package/dist/agent/prompt.d.ts +1 -1
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +83 -48
- package/dist/agent/prompt.js.map +1 -1
- package/dist/agent/token-tracker.d.ts +22 -0
- package/dist/agent/token-tracker.d.ts.map +1 -0
- package/dist/agent/token-tracker.js +29 -0
- package/dist/agent/token-tracker.js.map +1 -0
- package/dist/agent/tool-usage-tracker.d.ts +45 -0
- package/dist/agent/tool-usage-tracker.d.ts.map +1 -0
- package/dist/agent/tool-usage-tracker.js +145 -0
- package/dist/agent/tool-usage-tracker.js.map +1 -0
- package/dist/agent/types.d.ts +24 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +75 -1
- package/dist/api/routes.js.map +1 -1
- package/dist/mcp/ai-markdown.d.ts +2 -0
- package/dist/mcp/ai-markdown.d.ts.map +1 -0
- package/dist/mcp/ai-markdown.js +1739 -0
- package/dist/mcp/ai-markdown.js.map +1 -0
- package/dist/mcp/browser-mcp-server.d.ts.map +1 -1
- package/dist/mcp/browser-mcp-server.js +279 -49
- package/dist/mcp/browser-mcp-server.js.map +1 -1
- package/dist/mcp/task-tools.d.ts.map +1 -1
- package/dist/mcp/task-tools.js +107 -13
- package/dist/mcp/task-tools.js.map +1 -1
- package/dist/task/tool-actions.d.ts +4 -0
- package/dist/task/tool-actions.d.ts.map +1 -1
- package/dist/task/tool-actions.js +72 -0
- package/dist/task/tool-actions.js.map +1 -1
- package/package.json +3 -2
- package/public/index.html +593 -41
package/README.md
CHANGED
|
@@ -84,6 +84,13 @@ Notes:
|
|
|
84
84
|
- This server currently exposes legacy HTTP+SSE MCP transport (`/mcp/sse` + `/mcp/message`).
|
|
85
85
|
- The message endpoint is `POST /mcp/message?sessionId=...` and is primarily for transport internals.
|
|
86
86
|
|
|
87
|
+
### 4.1 MCP AI Consumer Guide
|
|
88
|
+
|
|
89
|
+
For AI-oriented consumption rules (`nextActions`, `hasMore/nextCursor`, `topIssues`, detail levels), see:
|
|
90
|
+
- `docs/18-mcp-ai-consumer-guide.md`
|
|
91
|
+
- `docs/19-mcp-ai-readability-roadmap.md` (P0-P2 roadmap and execution checklist)
|
|
92
|
+
- benchmark command: `npm run baseline:v1` (includes `aiFieldCoverageRate` / `invalidToolCallRate`)
|
|
93
|
+
|
|
87
94
|
### 5. Use as a library
|
|
88
95
|
|
|
89
96
|
```typescript
|
|
@@ -144,6 +151,28 @@ The server currently exposes **35 MCP tools**:
|
|
|
144
151
|
|
|
145
152
|
Most browser tools accept an optional `sessionId` — omitting it auto-creates/reuses a default session.
|
|
146
153
|
|
|
154
|
+
AI-oriented tool responses now include additive helper fields on key tools:
|
|
155
|
+
- `aiSchemaVersion`: schema version for AI helper payload
|
|
156
|
+
- `aiDetailLevel`: applied detail level (`brief` / `normal` / `full`)
|
|
157
|
+
- `aiSummary`: short status sentence for fast decision-making
|
|
158
|
+
- `aiMarkdown`: compact, sectioned markdown with high-signal details
|
|
159
|
+
- `aiHints`: suggested next actions (text)
|
|
160
|
+
- `nextActions`: structured next-step suggestions (`tool`, `args`, `reason`)
|
|
161
|
+
- `deltaSummary`: polling-oriented change summary (`key`, `changes`)
|
|
162
|
+
- `schemaRepairGuidance`: repair-oriented hints for schema verification failures
|
|
163
|
+
|
|
164
|
+
List-like responses are also normalized with:
|
|
165
|
+
- `hasMore` + `nextCursor` for continuation semantics
|
|
166
|
+
- `topIssues` on log-oriented tools (network/console) for quick fault triage
|
|
167
|
+
|
|
168
|
+
These fields are additive and backward-compatible; existing JSON fields are unchanged.
|
|
169
|
+
|
|
170
|
+
You can control verbosity via environment variable `AI_MARKDOWN_DETAIL_LEVEL=brief|normal|full` (default: `normal`).
|
|
171
|
+
|
|
172
|
+
Optional adaptive policy (prototype): `AI_MARKDOWN_ADAPTIVE_POLICY=1`
|
|
173
|
+
- For polling-heavy tools, detail can auto-shift to `brief`
|
|
174
|
+
- On terminal failure states, detail can auto-escalate to `full`
|
|
175
|
+
|
|
147
176
|
### Session Management
|
|
148
177
|
|
|
149
178
|
| Tool | Description |
|
|
@@ -335,6 +364,7 @@ npm run build # Build TypeScript
|
|
|
335
364
|
npm test # Run tests
|
|
336
365
|
npm run test:run # Run tests once
|
|
337
366
|
npm run baseline:v1 # Collect v1 baseline report
|
|
367
|
+
npm run benchmark:v1:expanded # Run expanded readability scenarios (P2 prototype)
|
|
338
368
|
npm run stress:v1 # Run 100-task stress report
|
|
339
369
|
```
|
|
340
370
|
|
|
@@ -6,15 +6,20 @@ export declare class BrowsingAgent extends EventEmitter {
|
|
|
6
6
|
private openai;
|
|
7
7
|
private mcpClient;
|
|
8
8
|
private state;
|
|
9
|
-
private
|
|
9
|
+
private conversation;
|
|
10
10
|
private model;
|
|
11
11
|
private maxIterations;
|
|
12
12
|
private initialMessages;
|
|
13
13
|
private tools;
|
|
14
|
-
private
|
|
14
|
+
private toolTracker;
|
|
15
|
+
private tokenTracker;
|
|
16
|
+
private pageStateCache;
|
|
17
|
+
private progressEstimator;
|
|
18
|
+
private subGoals;
|
|
15
19
|
private stepWarningInjected;
|
|
16
20
|
private pendingInputResolve;
|
|
17
21
|
private pendingInputRequestId;
|
|
22
|
+
private _askHumanTimer;
|
|
18
23
|
constructor(options: {
|
|
19
24
|
apiKey?: string;
|
|
20
25
|
baseURL?: string;
|
|
@@ -22,6 +27,7 @@ export declare class BrowsingAgent extends EventEmitter {
|
|
|
22
27
|
mcpClient: Client;
|
|
23
28
|
maxIterations?: number;
|
|
24
29
|
initialMessages?: ChatCompletionMessageParam[];
|
|
30
|
+
subGoals?: string[];
|
|
25
31
|
});
|
|
26
32
|
get sessionId(): string;
|
|
27
33
|
resolveInput(requestId: string, response: Record<string, string>): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,0BAA0B,EAAsB,MAAM,sCAAsC,CAAC;AAC3G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGxE,OAAO,KAAK,EAAc,cAAc,EAA0B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,0BAA0B,EAAsB,MAAM,sCAAsC,CAAC;AAC3G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGxE,OAAO,KAAK,EAAc,cAAc,EAA0B,MAAM,YAAY,CAAC;AAUrF,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,mBAAmB,CAA6D;IACxF,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,cAAc,CAA8C;gBAExD,OAAO,EAAE;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,0BAA0B,EAAE,CAAC;QAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB;IAsBD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;IAe1E,OAAO,CAAC,SAAS;YAIH,aAAa;IA2DrB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAoDlC,IAAI;YAqFJ,gBAAgB;IA6MxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAiB/B"}
|
package/dist/agent/agent-loop.js
CHANGED
|
@@ -3,67 +3,31 @@ import { randomUUID } from 'node:crypto';
|
|
|
3
3
|
import OpenAI from 'openai';
|
|
4
4
|
import { config } from './config.js';
|
|
5
5
|
import { SYSTEM_PROMPT } from './prompt.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
const data = JSON.parse(rawText);
|
|
15
|
-
if (toolName === 'get_page_info' && data?.elements) {
|
|
16
|
-
const summary = {
|
|
17
|
-
page: data.page,
|
|
18
|
-
elementCount: data.elements.length,
|
|
19
|
-
elements: data.elements.slice(0, 30).map((e) => ({
|
|
20
|
-
id: e.id,
|
|
21
|
-
type: e.type,
|
|
22
|
-
label: e.label,
|
|
23
|
-
})),
|
|
24
|
-
intents: data.intents,
|
|
25
|
-
};
|
|
26
|
-
if (data.stability)
|
|
27
|
-
summary.stability = data.stability;
|
|
28
|
-
if (data.pendingDialog)
|
|
29
|
-
summary.pendingDialog = data.pendingDialog;
|
|
30
|
-
if (data.elements.length > 30) {
|
|
31
|
-
summary.note = `显示前30个元素,共${data.elements.length}个`;
|
|
32
|
-
}
|
|
33
|
-
return truncate(JSON.stringify(summary, null, 2));
|
|
34
|
-
}
|
|
35
|
-
if (toolName === 'get_page_content') {
|
|
36
|
-
let md = `# ${data.title || ''}\n\n`;
|
|
37
|
-
const sections = Array.isArray(data.sections) ? data.sections : [];
|
|
38
|
-
for (const s of sections) {
|
|
39
|
-
const stars = s.attention >= 0.7 ? '★★★'
|
|
40
|
-
: s.attention >= 0.4 ? '★★'
|
|
41
|
-
: '★';
|
|
42
|
-
md += `[${stars}] ${s.text}\n\n`;
|
|
43
|
-
}
|
|
44
|
-
if (sections.length === 0)
|
|
45
|
-
md += '(未提取到内容)\n';
|
|
46
|
-
return truncate(md);
|
|
47
|
-
}
|
|
48
|
-
return truncate(JSON.stringify(data));
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return truncate(rawText);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
6
|
+
import { formatToolResult } from './content-budget.js';
|
|
7
|
+
import { ToolUsageTracker } from './tool-usage-tracker.js';
|
|
8
|
+
import { determineRecovery, extractErrorCode } from './error-recovery.js';
|
|
9
|
+
import { ConversationManager } from './conversation-manager.js';
|
|
10
|
+
import { TokenTracker } from './token-tracker.js';
|
|
11
|
+
import { PageStateCache } from './page-state-cache.js';
|
|
12
|
+
import { ProgressEstimator } from './progress-estimator.js';
|
|
54
13
|
export class BrowsingAgent extends EventEmitter {
|
|
55
14
|
openai;
|
|
56
15
|
mcpClient;
|
|
57
16
|
state;
|
|
58
|
-
|
|
17
|
+
conversation = new ConversationManager();
|
|
59
18
|
model;
|
|
60
19
|
maxIterations;
|
|
61
20
|
initialMessages;
|
|
62
21
|
tools = [];
|
|
63
|
-
|
|
22
|
+
toolTracker = new ToolUsageTracker();
|
|
23
|
+
tokenTracker = new TokenTracker();
|
|
24
|
+
pageStateCache = new PageStateCache();
|
|
25
|
+
progressEstimator;
|
|
26
|
+
subGoals = [];
|
|
64
27
|
stepWarningInjected = false;
|
|
65
28
|
pendingInputResolve = null;
|
|
66
29
|
pendingInputRequestId = null;
|
|
30
|
+
_askHumanTimer = null;
|
|
67
31
|
constructor(options) {
|
|
68
32
|
super();
|
|
69
33
|
this.model = options.model || config.llm.model;
|
|
@@ -74,13 +38,16 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
74
38
|
this.mcpClient = options.mcpClient;
|
|
75
39
|
this.maxIterations = options.maxIterations ?? config.maxIterations;
|
|
76
40
|
this.initialMessages = options.initialMessages || [];
|
|
41
|
+
this.progressEstimator = new ProgressEstimator(this.maxIterations);
|
|
42
|
+
if (options.subGoals?.length) {
|
|
43
|
+
this.subGoals = options.subGoals.map(d => ({ description: d, completed: false }));
|
|
44
|
+
}
|
|
77
45
|
this.state = {
|
|
78
46
|
sessionId: '',
|
|
79
47
|
iteration: 0,
|
|
80
48
|
consecutiveErrors: 0,
|
|
81
49
|
done: false,
|
|
82
50
|
};
|
|
83
|
-
this.messages = [];
|
|
84
51
|
}
|
|
85
52
|
get sessionId() {
|
|
86
53
|
return this.state.sessionId;
|
|
@@ -168,7 +135,9 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
168
135
|
let sessionResult;
|
|
169
136
|
try {
|
|
170
137
|
sessionResult = await this.mcpClient.callTool({ name: 'create_session', arguments: {} });
|
|
171
|
-
const text = sessionResult.content[0]?.text;
|
|
138
|
+
const text = sessionResult.content?.[0]?.text;
|
|
139
|
+
if (!text)
|
|
140
|
+
throw new Error('create_session returned no text content');
|
|
172
141
|
const parsed = JSON.parse(text);
|
|
173
142
|
this.state.sessionId = parsed.sessionId;
|
|
174
143
|
}
|
|
@@ -180,11 +149,12 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
180
149
|
console.log(`[Agent] 会话已创建: ${this.state.sessionId}`);
|
|
181
150
|
this.emitEvent({ type: 'session_created', sessionId: this.state.sessionId });
|
|
182
151
|
// Build messages: system + initialMessages (conversation memory) + user task
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
152
|
+
let systemPrompt = SYSTEM_PROMPT;
|
|
153
|
+
if (this.subGoals.length > 0) {
|
|
154
|
+
const goalList = this.subGoals.map((g, i) => `${i + 1}. ${g.description}`).join('\n');
|
|
155
|
+
systemPrompt += `\n\n## 子目标\n\n按顺序完成以下子目标:\n${goalList}\n\n完成每个子目标后,在思考中标注"[子目标完成: N]"(N为序号)。`;
|
|
156
|
+
}
|
|
157
|
+
this.conversation.init(systemPrompt, this.initialMessages, task);
|
|
188
158
|
let finalResult;
|
|
189
159
|
try {
|
|
190
160
|
finalResult = await this.loop();
|
|
@@ -192,12 +162,15 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
192
162
|
catch (err) {
|
|
193
163
|
finalResult = { success: false, error: err.message, iterations: this.state.iteration };
|
|
194
164
|
}
|
|
165
|
+
// Attach token usage
|
|
166
|
+
finalResult.tokenUsage = this.tokenTracker.getUsage();
|
|
195
167
|
this.emitEvent({
|
|
196
168
|
type: 'done',
|
|
197
169
|
success: finalResult.success,
|
|
198
170
|
result: finalResult.result,
|
|
199
171
|
error: finalResult.error,
|
|
200
172
|
iterations: finalResult.iterations,
|
|
173
|
+
tokenUsage: finalResult.tokenUsage,
|
|
201
174
|
});
|
|
202
175
|
await this.cleanup();
|
|
203
176
|
return finalResult;
|
|
@@ -210,9 +183,9 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
210
183
|
const remainingSteps = this.maxIterations - this.state.iteration;
|
|
211
184
|
if (!this.stepWarningInjected && remainingSteps <= 2 && remainingSteps > 0 && this.maxIterations > 3) {
|
|
212
185
|
this.stepWarningInjected = true;
|
|
213
|
-
this.
|
|
214
|
-
role: '
|
|
215
|
-
content:
|
|
186
|
+
this.conversation.push({
|
|
187
|
+
role: 'user',
|
|
188
|
+
content: `[系统提示] ⚠️ 你还剩 ${remainingSteps} 步就达到上限,请立即用 done 工具报告已获取的所有信息,不要再做额外操作。`,
|
|
216
189
|
});
|
|
217
190
|
console.log(`[Agent] 注入步数提醒,剩余 ${remainingSteps} 步`);
|
|
218
191
|
}
|
|
@@ -220,19 +193,26 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
220
193
|
try {
|
|
221
194
|
response = await this.openai.chat.completions.create({
|
|
222
195
|
model: this.model,
|
|
223
|
-
messages: this.
|
|
196
|
+
messages: this.conversation.getMessages(),
|
|
224
197
|
tools: this.tools,
|
|
225
198
|
tool_choice: 'auto',
|
|
226
199
|
});
|
|
200
|
+
this.tokenTracker.recordLLMCall(response.usage);
|
|
227
201
|
}
|
|
228
202
|
catch (err) {
|
|
229
203
|
this.state.consecutiveErrors++;
|
|
230
204
|
console.log(`[Agent] LLM API 错误 (${this.state.consecutiveErrors}/${config.maxConsecutiveErrors}): ${err.message}`);
|
|
231
205
|
this.emitEvent({ type: 'error', message: err.message, iteration: this.state.iteration });
|
|
232
|
-
|
|
206
|
+
const recovery = determineRecovery({
|
|
207
|
+
errorMessage: err.message,
|
|
208
|
+
toolName: '_llm_api',
|
|
209
|
+
consecutiveErrors: this.state.consecutiveErrors,
|
|
210
|
+
});
|
|
211
|
+
if (recovery.type === 'abort' || this.state.consecutiveErrors >= config.maxConsecutiveErrors) {
|
|
233
212
|
return { success: false, error: `LLM API 连续失败: ${err.message}`, iterations: this.state.iteration };
|
|
234
213
|
}
|
|
235
|
-
|
|
214
|
+
const delay = recovery.type === 'retry' ? recovery.delayMs : 2000;
|
|
215
|
+
await new Promise(r => setTimeout(r, delay));
|
|
236
216
|
continue;
|
|
237
217
|
}
|
|
238
218
|
const message = response.choices[0]?.message;
|
|
@@ -242,8 +222,17 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
242
222
|
if (message.content) {
|
|
243
223
|
console.log(`[Agent] 思考: ${message.content}`);
|
|
244
224
|
this.emitEvent({ type: 'thinking', content: message.content, iteration: this.state.iteration });
|
|
225
|
+
// Detect subgoal completion markers in thinking
|
|
226
|
+
const goalMatch = message.content.match(/\[子目标完成:\s*(\d+)\]/);
|
|
227
|
+
if (goalMatch) {
|
|
228
|
+
const idx = parseInt(goalMatch[1], 10) - 1;
|
|
229
|
+
if (idx >= 0 && idx < this.subGoals.length && !this.subGoals[idx].completed) {
|
|
230
|
+
this.subGoals[idx].completed = true;
|
|
231
|
+
this.emitEvent({ type: 'subgoal_completed', subGoal: this.subGoals[idx].description, iteration: this.state.iteration });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
245
234
|
}
|
|
246
|
-
this.
|
|
235
|
+
this.conversation.push(message);
|
|
247
236
|
if (!message.tool_calls || message.tool_calls.length === 0) {
|
|
248
237
|
console.log('[Agent] LLM 未调用工具,任务结束');
|
|
249
238
|
return {
|
|
@@ -263,6 +252,7 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
263
252
|
return { success: true, iterations: this.state.iteration };
|
|
264
253
|
}
|
|
265
254
|
async executeToolCalls(toolCalls) {
|
|
255
|
+
const deferredHints = [];
|
|
266
256
|
for (const toolCall of toolCalls) {
|
|
267
257
|
const name = toolCall.function.name;
|
|
268
258
|
let args;
|
|
@@ -271,7 +261,7 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
271
261
|
}
|
|
272
262
|
catch {
|
|
273
263
|
console.log(`[Agent] 工具参数解析失败: ${toolCall.function.arguments}`);
|
|
274
|
-
this.
|
|
264
|
+
this.conversation.push({
|
|
275
265
|
role: 'tool',
|
|
276
266
|
tool_call_id: toolCall.id,
|
|
277
267
|
content: JSON.stringify({ error: '工具参数 JSON 解析失败' }),
|
|
@@ -281,22 +271,6 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
281
271
|
}
|
|
282
272
|
console.log(`[Agent] 调用工具: ${name}(${JSON.stringify(args)})`);
|
|
283
273
|
this.emitEvent({ type: 'tool_call', name, args, iteration: this.state.iteration });
|
|
284
|
-
// 循环检测:记录工具调用签名
|
|
285
|
-
const callSig = `${name}:${JSON.stringify(args)}`;
|
|
286
|
-
this.recentToolCalls.push(callSig);
|
|
287
|
-
if (this.recentToolCalls.length > 3) {
|
|
288
|
-
this.recentToolCalls.shift();
|
|
289
|
-
}
|
|
290
|
-
if (this.recentToolCalls.length === 3 &&
|
|
291
|
-
this.recentToolCalls[0] === this.recentToolCalls[1] &&
|
|
292
|
-
this.recentToolCalls[1] === this.recentToolCalls[2]) {
|
|
293
|
-
console.log('[Agent] 检测到循环调用,注入提醒');
|
|
294
|
-
this.messages.push({
|
|
295
|
-
role: 'system',
|
|
296
|
-
content: '⚠️ 你已连续3次调用相同工具且参数相同,这不会产生新结果。请换一种方式操作,或用 done 工具报告当前已获取的信息。',
|
|
297
|
-
});
|
|
298
|
-
this.recentToolCalls = [];
|
|
299
|
-
}
|
|
300
274
|
if (name === 'done') {
|
|
301
275
|
const result = args.result || '任务完成';
|
|
302
276
|
console.log(`[Agent] 任务完成: ${result}`);
|
|
@@ -339,7 +313,7 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
339
313
|
const responseText = JSON.stringify(userResponse);
|
|
340
314
|
console.log(`[Agent] 用户输入已收到`);
|
|
341
315
|
this.emitEvent({ type: 'tool_result', name: 'ask_human', success: true, summary: redactedText, iteration: this.state.iteration });
|
|
342
|
-
this.
|
|
316
|
+
this.conversation.push({ role: 'tool', tool_call_id: toolCall.id, content: responseText });
|
|
343
317
|
continue;
|
|
344
318
|
}
|
|
345
319
|
// 强制覆盖 sessionId,防止 LLM 猜测错误的值
|
|
@@ -360,23 +334,90 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
360
334
|
rawText = JSON.stringify({ error: err.message });
|
|
361
335
|
success = false;
|
|
362
336
|
}
|
|
337
|
+
// Record in tracker
|
|
338
|
+
this.toolTracker.record({
|
|
339
|
+
toolName: name,
|
|
340
|
+
args,
|
|
341
|
+
success,
|
|
342
|
+
timestamp: Date.now(),
|
|
343
|
+
errorCode: success ? undefined : extractErrorCode(rawText),
|
|
344
|
+
});
|
|
363
345
|
if (!success) {
|
|
364
346
|
this.state.consecutiveErrors++;
|
|
365
347
|
console.log(`[Agent] 错误 (${this.state.consecutiveErrors}/${config.maxConsecutiveErrors}): ${rawText}`);
|
|
348
|
+
const errorCode = extractErrorCode(rawText);
|
|
349
|
+
const recovery = determineRecovery({
|
|
350
|
+
errorCode,
|
|
351
|
+
errorMessage: rawText,
|
|
352
|
+
toolName: name,
|
|
353
|
+
consecutiveErrors: this.state.consecutiveErrors,
|
|
354
|
+
});
|
|
355
|
+
if (recovery.type === 'abort') {
|
|
356
|
+
this.conversation.push({ role: 'tool', tool_call_id: toolCall.id, content: rawText });
|
|
357
|
+
return { success: false, error: recovery.reason, iterations: this.state.iteration };
|
|
358
|
+
}
|
|
366
359
|
if (this.state.consecutiveErrors >= config.maxConsecutiveErrors) {
|
|
367
|
-
this.
|
|
360
|
+
this.conversation.push({ role: 'tool', tool_call_id: toolCall.id, content: rawText });
|
|
368
361
|
return {
|
|
369
362
|
success: false,
|
|
370
363
|
error: `连续 ${config.maxConsecutiveErrors} 次错误,任务中止`,
|
|
371
364
|
iterations: this.state.iteration,
|
|
372
365
|
};
|
|
373
366
|
}
|
|
367
|
+
if (recovery.type === 'inject_hint') {
|
|
368
|
+
this.conversation.push({ role: 'tool', tool_call_id: toolCall.id, content: rawText });
|
|
369
|
+
deferredHints.push(`[系统提示] ⚠️ ${recovery.message}`);
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
374
372
|
}
|
|
375
373
|
else {
|
|
376
374
|
this.state.consecutiveErrors = 0;
|
|
377
375
|
}
|
|
378
|
-
//
|
|
379
|
-
const
|
|
376
|
+
// Loop/pattern detection — defer hint to avoid interleaving with tool results
|
|
377
|
+
const loopDetection = this.toolTracker.detectAny();
|
|
378
|
+
if (loopDetection) {
|
|
379
|
+
console.log(`[Agent] 检测到${loopDetection.type},注入提醒`);
|
|
380
|
+
deferredHints.push(`[系统提示] ⚠️ ${loopDetection.message}`);
|
|
381
|
+
}
|
|
382
|
+
// SSE event sends full content; LLM message gets budget-aware version
|
|
383
|
+
let formatted = formatToolResult(rawText, name);
|
|
384
|
+
// Apply page state diff for get_page_info on same-page refreshes
|
|
385
|
+
if (name === 'get_page_info' && success) {
|
|
386
|
+
try {
|
|
387
|
+
const pageData = JSON.parse(rawText);
|
|
388
|
+
const elements = Array.isArray(pageData.elements) ? pageData.elements : [];
|
|
389
|
+
const url = pageData.page?.url || '';
|
|
390
|
+
const diff = this.pageStateCache.update(this.state.sessionId, elements, url);
|
|
391
|
+
if (!diff.isNewPage && (diff.added.length + diff.removed.length + diff.changed.length) > 0) {
|
|
392
|
+
const diffLines = [
|
|
393
|
+
`## Page State Diff (unchanged: ${diff.unchangedCount})`,
|
|
394
|
+
'',
|
|
395
|
+
];
|
|
396
|
+
if (diff.added.length > 0) {
|
|
397
|
+
diffLines.push(`### Added (${diff.added.length})`);
|
|
398
|
+
for (const el of diff.added.slice(0, 20)) {
|
|
399
|
+
diffLines.push(`- \`${el.id}\` ${el.type || ''} ${el.label || ''}`);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
if (diff.removed.length > 0) {
|
|
403
|
+
diffLines.push(`### Removed (${diff.removed.length})`);
|
|
404
|
+
for (const id of diff.removed.slice(0, 20)) {
|
|
405
|
+
diffLines.push(`- \`${id}\``);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
if (diff.changed.length > 0) {
|
|
409
|
+
diffLines.push(`### Changed (${diff.changed.length})`);
|
|
410
|
+
for (const el of diff.changed.slice(0, 20)) {
|
|
411
|
+
diffLines.push(`- \`${el.id}\` ${el.type || ''} ${el.label || ''}`);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
formatted = diffLines.join('\n');
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
// Parse failed — use the standard formatted output
|
|
419
|
+
}
|
|
420
|
+
}
|
|
380
421
|
console.log(`[Agent] 结果: ${formatted.slice(0, 200)}${formatted.length > 200 ? '...' : ''}`);
|
|
381
422
|
this.emitEvent({
|
|
382
423
|
type: 'tool_result',
|
|
@@ -385,15 +426,26 @@ export class BrowsingAgent extends EventEmitter {
|
|
|
385
426
|
summary: rawText,
|
|
386
427
|
iteration: this.state.iteration,
|
|
387
428
|
});
|
|
388
|
-
this.
|
|
429
|
+
this.conversation.push({
|
|
389
430
|
role: 'tool',
|
|
390
431
|
tool_call_id: toolCall.id,
|
|
391
432
|
content: formatted,
|
|
392
433
|
});
|
|
434
|
+
// Emit progress after each tool call
|
|
435
|
+
const progress = this.progressEstimator.record(name);
|
|
436
|
+
this.emitEvent({ type: 'progress', progress, iteration: this.state.iteration });
|
|
437
|
+
}
|
|
438
|
+
// Push all deferred hints after tool results to avoid breaking tool message contiguity
|
|
439
|
+
for (const hint of deferredHints) {
|
|
440
|
+
this.conversation.push({ role: 'user', content: hint });
|
|
393
441
|
}
|
|
394
442
|
return null;
|
|
395
443
|
}
|
|
396
444
|
async cleanup() {
|
|
445
|
+
if (this._askHumanTimer) {
|
|
446
|
+
clearTimeout(this._askHumanTimer);
|
|
447
|
+
this._askHumanTimer = null;
|
|
448
|
+
}
|
|
397
449
|
if (this.state.sessionId) {
|
|
398
450
|
console.log('[Agent] 清理浏览器会话...');
|
|
399
451
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;;;CAalB,CAAC"}
|
package/dist/agent/config.js
CHANGED
|
@@ -4,6 +4,11 @@ export const config = {
|
|
|
4
4
|
apiKey: process.env.LLM_API_KEY || '',
|
|
5
5
|
model: process.env.LLM_MODEL || 'gpt-4o-mini',
|
|
6
6
|
},
|
|
7
|
+
reasoningModel: {
|
|
8
|
+
baseURL: process.env.REASONING_LLM_BASE_URL || process.env.LLM_BASE_URL || 'https://api.openai.com/v1',
|
|
9
|
+
apiKey: process.env.REASONING_LLM_API_KEY || process.env.LLM_API_KEY || '',
|
|
10
|
+
model: process.env.REASONING_LLM_MODEL || '',
|
|
11
|
+
},
|
|
7
12
|
maxIterations: 20,
|
|
8
13
|
maxConsecutiveErrors: 3,
|
|
9
14
|
};
|
package/dist/agent/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,2BAA2B;QAChE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;QACrC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,aAAa;KAC9C;IACD,aAAa,EAAE,EAAE;IACjB,oBAAoB,EAAE,CAAC;CACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,2BAA2B;QAChE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;QACrC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,aAAa;KAC9C;IACD,cAAc,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,2BAA2B;QACtG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;QAC1E,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;KAC7C;IACD,aAAa,EAAE,EAAE;IACjB,oBAAoB,EAAE,CAAC;CACxB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-aware content budget system for formatting MCP results for LLM consumption.
|
|
3
|
+
* Prioritizes aiMarkdown/aiSummary fields from the MCP enrichment layer.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getToolBudget(toolName: string): number;
|
|
6
|
+
/**
|
|
7
|
+
* Format MCP tool result for LLM consumption.
|
|
8
|
+
* Priority: aiMarkdown > aiSummary > raw JSON, all within budget.
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatToolResult(rawText: string, toolName: string): string;
|
|
11
|
+
//# sourceMappingURL=content-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-budget.d.ts","sourceRoot":"","sources":["../../src/agent/content-budget.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwDH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6B1E"}
|