Skip to content

[Feature] 建议暴露 AI Agent 最大工具调用限制并优化多轮 Tool Calling 下的 Token 消耗 #1545

Description

@TFSN20

Pre-check

  • I have searched existing issues and confirmed this is not a duplicate feature request.
  • I confirm this is not a bug. If this is unexpected behavior, I should use the Bug Report template.

Feature Area

Popup / Options / UI

Problem to Solve

在使用 ScriptCat 内置的 AI Agent 编写、调试复杂脚本或执行网页分析任务时(例如:进行深度 Webpack 逆向解密、连续测试多种 execute_script 注入方案),Agent 需要高频进行工具调用(Tool Calling)。

然而,在此场景下遇到了两个严重痛点:

  1. 调用次数存在硬限制且无法修改:目前内置 Agent 在多轮连续执行工具调用 50 次后,会触发硬性报错:Tool calling loop exceeded maximum iterations (50),导致任务中断。这对于逻辑较为繁重、需要多步探索的逆向分析和自动化任务来说往往不够用,且用户在 UI 界面无法自行上调或配置。
  2. Token 消耗极大:由于整个 Agent 链路中会完整保留每一次 execute_script 返回的控制台原始信息或大量 DOM 冗余输出,缺乏上下文自动剪枝与压缩机制,导致长对话下的 Token 消耗极其高昂(单次逆向流程调试甚至能花费近 3 元钱),性价比偏低。

Proposed Solution

建议针对上述痛点进行以下改进:

  1. 在 Agent 界面中暴露 maxIterations 配置项
    在 AI Agent 的聊天面板设置或扩展的主设置里,允许用户自定义「最大工具调用次数」(默认 50,允许上调,或勾选允许“无限制运行至 Agent 自主判断停止”)。

  2. 优化多轮 Tool Calling 的上下文压缩机制
    在长达数十次的工具调用历史中,无需将每一次工具返回的所有原始长数据一直完整保留在后续对话请求中。建议实现:

    • 使用滑动窗口(Sliding Window)机制,仅保留最近几轮的详细 execute_script 输出。
    • 对较早的执行记录或报错结果进行摘要(Summary)替代原始长文本返回,从而大幅缩减长对话下的 Token 开销。
  3. 引入死循环/高频相似调用检测(Loop Guard)
    如果检测到 Agent 在多轮里反复执行基本相同的 execute_script 语句且返回极其相似的报错(说明陷入死循环),建议在 UI 层面提前弹窗并暂停,向用户提示是否继续或手动修改提示词(Prompt),避免无意义地烧光 Token。

API / UI Draft, if Applicable

UI 调整建议
在扩展的 AI Agent 设置页中,新增一个可调参数:

  • 最大工具调用次数 (Max Iterations): [ 50 ] (默认 50,支持自定义上调)。

底层逻辑
将该用户配置值在创建会话时注入到底层 ConversationCreateOptionsmaxIterations 参数中。

Alternatives

当前临时替代方案
任务中断后新建一个对话重新开始。但这会导致 Agent 彻底丢失前面几十轮逆向出来的关键中间信息(如 chunk 模块映射、已找到的解密 Key 和算法逻辑),必须要重新走一遍分析流程,这反而造成了更大的 Token 浪费。

其他同类产品参考
一些支持 Agent 工具调用的插件或框架,在检测到连续多次调用工具时,会弹出确认框询问用户:“Agent 已连续尝试了 30 次,是否允许其继续?”或“是否继续授权其执行后续 50 步?”,并会在多轮 System Prompt 后方对 Tool History 进行裁剪。

Compatibility and Security Impact

  1. 兼容性:无破坏性兼容影响。该设置属于 UI 设置项的扩展,底层的 ConversationCreateOptions 本身就支持配置参数。
  2. 安全性/防滥用:若用户将该次数设得过高,可能会导致单次任务在多轮死循环中消耗比预期更多的 Token。建议在设置项旁附加文字说明,例如:“调大此选项可能会增加单次任务的 Token 开销,请留意余额”。

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions