AI驱动的调试循环深度解析:AI_JS_DEBUGGER如何用大模型自动选择单步入/步出/步过

发布时间:2026/10/28 22:28:55
AI驱动的调试循环深度解析:AI_JS_DEBUGGER如何用大模型自动选择单步入/步出/步过 【免费下载链接】AI_JS_DEBUGGER基于Chrome开发者协议(CDP)的AI自动化JavaScript逆向分析工具项目地址https://gitcode.com/gh_mirrors/ai/AI_JS_DEBUGGER点击查看免费下载AI_JS_DEBUGGER 是一款基于 Chrome 开发者协议CDP的 AI 自动化 JavaScript 逆向分析工具它能把断点触发 → 收集上下文 → 大模型决策 → 执行步调做成一个全自动调试循环由大模型在每一步自动选择单步入step_into、单步出step_out或单步跳过step_over最终自动产出加解密分析报告。这篇文章带你深入拆解这套 AI 调试循环的工作原理。一、手动单步调试有多痛苦做前端 JS 逆向时常规姿势是打断点 → 在 DevTools 里手动点单步跳过/单步进入按钮 → 一路盯着变量 → 关键参数如加密密钥 key、iv一闪而过就错过了。痛点很直观手动调试的痛点AI_JS_DEBUGGER 的解法不知道该步入还是步过容易钻进无关函数大模型根据代码语义自动决策步调人工盯变量容易漏掉 key/iv 等关键值每次暂停自动抓取作用域变量喂给模型陷入混淆代码/循环出不来内置嵌套过深就 step_out的决策规则调试完还要人工整理结论自动汇总日志并生成 Markdown 分析报告核心思路一句话把人肉点单步按钮这件事交给大模型 CDP 协议来做。二、整体架构三层协作的调试循环整个循环由三部分组成源码入口都在仓库里可以找到CDP 客户端层CDPClient 封装了与 Chrome/Edge 的通信负责启动/连接浏览器、注入 Hook 脚本、发送 CDP 命令下断点、单步、取变量等。调试循环调度层continuous_debugging() 是整个 AI 调试循环的主函数文档注释写得很清楚——通过AI分析断点处的代码和变量状态自动决定下一步调试操作步入、步出或步过。AI 决策层AIManager.get_debug_instruction() 把调试信息打包成 Prompt 发给大模型兼容 OpenAI 格式Qwen、DeepSeek、GPT、Claude 等均可解析模型返回的 JSON 指令。循环骨架非常简洁对应 debugging_loop()等待断点触发Debugger.paused事件收集断点处的调试信息调用堆栈 代码上下文 作用域变量AI 分析并返回下一步操作指令执行 AI 决定的 CDP 步调命令重复直到超时或出错下面按这个顺序逐层拆解。三、第一步断点暂停收集调试上下文断点触发后真正干活的是 process_debugger_paused()它负责把一次暂停翻译成大模型能读懂的文本。收集内容包括暂停位置函数名、脚本 URL、行列号代码上下文由 get_code_context() 截取断点前后约 150 字符可通过debug.context_chars配置并在当前位置插入➤标记让模型一眼看到执行到哪了调用堆栈最多 3~5 帧内存紧张时自动降级避免上下文爆炸作用域变量通过Runtime.getProperties递归抓取局部/块级作用域带多重过滤——跳过window、DOM 节点、函数等噪音优先保留key、iv、token、data等加密相关属性名混淆检测detect_jsvmp_patterns() 会静态分析当前脚本识别大量 switch-case、密集数组访问、eval/Function 等 JSVMP 特征并把建议用 step_over 而非 step_into 减少进入混淆代码这样的提示直接写进上下文——这等于给大模型递了一份作弊小抄。所有信息压缩成一段纯文本后写入调试会话文件同时作为本轮的 AI 输入。一个工程细节如果压缩后的调试信息超过 100KB会按 50KB 分片并只取前两个分片见 ai_debugger.py#L326-L334防止超长大模型窗口。四、第二步大模型的决策大脑这是全文最核心的一环。AI_JS_DEBUGGER 通过 get_debug_instruction() 向大模型提问构造的 messages 分三部分系统提示词定义角色JavaScript 逆向分析专家和三个可选动作历史上下文用一个容量为 3 的 deque 记录最近 3 次暂停的上下文摘要随请求一起带上让模型具备短期记忆避免对同一段代码反复做出相同决策当前调试信息即第三步收集的压缩上下文。提示词本身也经过精心设计写在 config.yaml 的prompts.debug里可自由修改。它告诉模型重点识别这些加密线索函数名含encrypt/decrypt/AES/RSA/MD5/SHA/Crypto等关键词JS 特有加密手段btoa/atob、TextEncoder、crypto.subtle位运算加密XOR^、位移、、按位与或网络请求函数fetch/XMLHttpRequest/axios/getSign/getToken等主流加密库CryptoJS、WebCrypto、jsencrypt、sjcl 等混淆特征eval/Function 动态执行、控制流扁平化、单字符变量名。并且给出了精确决策规则例如step_over首次遇到加密函数调用或 eval/Function 动态代码step_over在加密函数内部的非核心步骤或复杂混淆代码step_out嵌套超过 3 层或陷入重复循环时模型的输出被强约束为 JSON 格式且三个操作中只能有一个为true{ step_into: false, step_out: false, step_over: true, reason: 当前处于混淆的 switch 分支避免深入 }解析逻辑做了双重保险ai_manager.py#L124-L138优先按 JSON 解析如果模型返回的不是合法 JSON就退化成对返回文本做关键词匹配任何情况下出错都兜底返回step_over——宁可保守地跳过一行也不让循环卡死。五、第三步指令映射为 CDP 单步命令拿到instruction后调度层做一次简单的字符串匹配映射到 CDP 协议命令ai_debugger.py#L356-L361大模型指令CDP 命令行为包含step_intoDebugger.stepInto步入函数内部包含step_outDebugger.stepOut步出当前函数其他Debugger.stepOver执行当前行停在下一行执行时会检查浏览器是否仍处于暂停状态错误信息含while paused则跳过本次步调每次步调结果都会通过 WebSocket 推送到 Web 界面你可以实时观察 AI 的每一次走位。值得一提的是这套步调能力同时开放给了人工接管Web 界面背后是 step-into / step-out / continue 三个 REST 接口AI 自动循环和手动单步共用同一套 CDP 通道随时可以人机切换。六、闭环收尾超时退出与自动出报告循环并非无限运转内置了两道保险暂停超时首次等待断点给 60 秒之后每次 30 秒ai_debugger.py#L218-L228。长时间没触发断点即视为调试结束总时长上限整个调试任务包在asyncio.wait_for中默认 600 秒封顶。一旦结束收尾流程自动完成三件事把 Hook 脚本捕获的[debug]日志AES/RSA 等加解密的 key/密文/明文追加写入调试会话文件ai_debugger.py#L384-L403调用 debugger_analyze() 把完整调试数据交给分析模型长上下文模型优先生成 Markdown 分析报告报告落盘到result/report/目录可通过 Web 界面管理例如仓库中的示例报告 analysis-2025-11-17-17-15-40.md——其中不仅还原了 AES-CBC 加解密逻辑和硬编码密钥还直接附了一段可用的 mitmproxy 解密脚本。至此断点 → 上下文 → 模型决策 → 单步执行 → 报告的完整闭环打通全程无需人工点击任何单步按钮。七、快速上手与调优建议启动项目Python 3.11需 Chrome/Edge 与一个兼容 OpenAI 格式的大模型 API Keygit clone https://gitcode.com/gh_mirrors/ai/AI_JS_DEBUGGER cd AI_JS_DEBUGGER pip install -r requirements.txt python3 run_flask.py然后访问http://localhost:5001在 Web 界面选择断点模式固定 JS 文件断点或 XHR 请求断点、配置模型即可开始。几条实用建议模型选择决策环节每次只处理压缩后的上下文小快模型如 qwen-turbo、gpt-mini 级就够用且省成本分析报告环节可单独指定长上下文模型两者在 config.yaml 中分开配置断点选不好用 XHR 模式系统会自动回溯顶层调用堆栈并重新下断点省去找不到断点位置的烦恼想改 AI 的性格直接编辑prompts.debug里的决策规则比如把嵌套超过 3 层才 step_out改成更激进的阈值压缩成一行 JS 怎么断点取消浏览器 JS 美化后查看断点行列号行数一般为 0FAQ 里有详细说明见 README.md。八、总结AI_JS_DEBUGGER 的调试循环设计得非常工程化上下文采集有边界——限制堆栈帧数、变量属性数、分片截断喂给模型的是高信噪比信息决策有强约束——JSON 输出格式 明确的决策规则 三级降级解析出错永远兜底step_over循环有保险丝——暂停超时 总时长上限绝不失控结果可沉淀——每轮调试自动产出可复用的分析报告和 mitmproxy 脚本。对新手而言这套循环相当于一个会看 DevTools 的副驾驶你只负责下好断点剩下的步入、步出、步过交给大模型。这也是AI CDP结合在 JS 逆向场景里一个相当成熟的落地范式。赞分享【免费下载链接】AI_JS_DEBUGGER基于Chrome开发者协议(CDP)的AI自动化JavaScript逆向分析工具项目地址https://gitcode.com/gh_mirrors/ai/AI_JS_DEBUGGER点击查看免费下载相关推荐如何用FreeSimpleGUI在5分钟内创建你的第一个Python桌面应用如何用FreeSimpleGUI在5分钟内创建你的第一个Python桌面应用 想要快速为Python脚本添加图形界面FreeSimpleGUI正是你需要的终极桌面应用UI组件跨平台剖析TrustClaw智能体核心ToolLoopAgent如何驱动100步工具调用循环剖析TrustClaw智能体核心ToolLoopAgent如何驱动100步工具调用循环 TrustClaw 是一个可自托管的个人 AI 智能体AI AgenWing 异步模型与隐式 awaitinflight 函数如何自动等待异步调用Wing 异步模型与隐式 awaitinflight 函数如何自动等待异步调用 导读 Wing 语言采用 preflight / inflight 双阶段执行编程语言编译器云原生语言运行时创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询