1. AutoJs 脚本开发为什么总在 vscode 和雷电模拟器之间来回折腾
如果你正在用 AutoJs 或 autox.js 写自动化脚本,大概率经历过这种场景:在 vscode 里改完一行代码,切到雷电模拟器里手动打开 autox.js,找到脚本文件,点运行,等结果,发现报错,再切回 vscode 改,再切回去跑。一天下来,真正写逻辑的时间可能不到三分之一,剩下的全耗在「编辑—传输—运行—看日志」这条链路上。
更麻烦的是配置分散。vscode 里装的是 autox.js 插件,插件需要知道模拟器的 IP 和端口;autox.js 应用本身要开无障碍服务、悬浮窗、连接电脑;雷电模拟器还要确认 ADB 调试端口有没有被占用。这三边的配置各管各的,换一台机器或者重启一次模拟器,就可能有一处对不上,然后你又要从头排查。
我试过把脚本直接放在模拟器共享目录里,用 vscode 编辑,模拟器里手动刷新。这种方式能跑,但 autox.js 对文件变化的感知并不及时,而且每次都要手动点运行,调试效率很低。后来我把 vscode 任务、autox.js 连接参数、雷电模拟器端口这三件事串成一条链路,用 TaoToken 统一管理模型调用的 Key,才把整个流程稳定下来。
这篇文章面向的是已经在用 AutoJs/autox.js 写脚本、但调试链路比较零散的开发者。我会给出可复制的 vscode 任务配置、autox.js 连接参数、雷电模拟器端口设置,并演示一次「脚本改动到模拟器生效」的完整验证动作。核心检索词是 AutoJs 自动化脚本在 vscode 与雷电模拟器之间的调试链路统一,适合想把这套流程固化下来的朋友。
需要先说明一点:TaoToken 在这里的角色是统一管理模型调用的 API Key,不是替代 autox.js 或 vscode。你的脚本逻辑、UI 操作、控件查找还是由 autox.js 执行,TaoToken 负责的是当脚本里需要调用大模型能力时,不用在多个工具里散落不同的 Key 和 Base URL。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。
2. 前置准备:autox.js、vscode 插件与 TaoToken Key 的统一管理
在开始配置之前,先把三样东西装好。第一是 autox.js,建议从 GitHub Releases 下载 kkevsekk1/AutoX 的版本,免费版 Auto.js 已经无法正常使用,不要再折腾旧版。第二是雷电模拟器,装好后在设置里开启 ROOT 权限和 ADB 调试,这两项是后续连接的基础。第三是 vscode,在扩展市场搜索 autox.js 插件并安装。
装完 autox.js 应用后,打开它,依次开启无障碍服务、悬浮窗权限、连接电脑。连接电脑这一项会显示一个 IP 和端口,通常是模拟器所在网段的地址加一个端口号。雷电模拟器默认的 ADB 端口是 5555,但 autox.js 的连接端口是它自己服务监听的端口,两者不要混淆。
接下来是 TaoToken 的部分。为什么要在 AutoJs 脚本开发里引入 TaoToken?因为很多自动化脚本会用到 OCR 识别、文本理解、内容生成这类能力,如果每个脚本都硬编码一个模型 API Key,时间一长就会出现 Key 散落在多个文件、多个工具里的情况。TaoToken 的做法是给你一个统一的 API 入口和 Key,你在 vscode 里写脚本、在 autox.js 里跑脚本、在别的工具里做测试,用的都是同一个 Key 和同一个 Base URL。
具体操作:打开 https://taotoken.net/api-keys ,创建一个 API Key,复制出来。然后在你的脚本项目里建一个配置文件,比如config.json,把 Key 和 Base URL 放进去。Base URL 填https://taotoken.net/api,不要加 UTM 参数。模型 ID 根据你实际使用的模型填写,比如claude-sonnet-4-20250514这类。这样你的 autox.js 脚本在发 HTTP 请求时,直接读这个配置文件就行,不用在每个脚本里重复写。
这里要提醒一句:API Key 不要提交到公开仓库,建议放在.gitignore里排除掉。如果你在 vscode 里用 settings.json 管理任务,也可以把 Key 放在环境变量里,通过${env:TAOTOKEN_KEY}这种方式引用,避免明文出现在配置文件里。
前置准备做完后,你的环境应该是:雷电模拟器正常运行,autox.js 已开启连接电脑并显示 IP 端口,vscode 已装 autox.js 插件,TaoToken Key 已创建并保存在本地配置文件中。接下来进入配置环节。
3. 可复制配置:vscode 任务、autox.js 连接参数与雷电模拟器端口
这一节给出可以直接复制的配置片段。先看 vscode 的任务配置。在项目根目录建.vscode/tasks.json,内容如下:
{ "version": "2.0.0", "tasks": [ { "label": "autox: push and run", "type": "shell", "command": "adb", "args": [ "-s", "127.0.0.1:5555", "push", "${file}", "/sdcard/脚本/${fileBasename}" ], "problemMatcher": [] }, { "label": "autox: run current", "type": "shell", "command": "adb", "args": [ "-s", "127.0.0.1:5555", "shell", "am", "start", "-n", "org.autojs.autoxjs/.external.open.RunIntentActivity", "-d", "file:///sdcard/脚本/${fileBasename}" ], "dependsOn": ["autox: push and run"], "problemMatcher": [] } ] }这段配置做了两件事:把当前编辑的脚本文件推送到模拟器的/sdcard/脚本/目录,然后通过am start触发 autox.js 的运行入口。-s 127.0.0.1:5555是雷电模拟器的 ADB 地址,如果你改了端口,这里要同步改。
再看 autox.js 的连接参数。在 autox.js 应用里开启「连接电脑」后,它会监听一个端口,默认是 9317。你在 vscode 的 autox.js 插件设置里填的应该是这个端口,而不是 5555。这两个端口各管各的:5555 是 ADB 调试端口,用于文件推送和 shell 命令;9317 是 autox.js 的服务端口,用于插件和模拟器之间的脚本同步。
然后是 TaoToken 的配置片段。在项目里建config.json:
{ "baseUrl": "https://taotoken.net/api", "apiKey": "你的_TaoToken_Key", "model": "claude-sonnet-4-20250514", "timeout": 30000 }在 autox.js 脚本里读取这个配置:
var config = JSON.parse(files.read("/sdcard/脚本/config.json")); function callModel(prompt) { var url = config.baseUrl + "/v1/messages"; var headers = { "Content-Type": "application/json", "x-api-key": config.apiKey, "anthropic-version": "2023-06-01" }; var body = { model: config.model, max_tokens: 1024, messages: [{ role: "user", content: prompt }] }; var res = http.postJson(url, body, { headers: headers }); return res.body.json(); }注意http.postJson的第三个参数是 headers 配置,autox.js 的 http 模块支持这种写法。如果你用的是http.post,需要手动设置contentType和headers。另外,HTTP 请求建议放在子线程里执行,避免阻塞主线程导致 UI 卡顿。
雷电模拟器的端口设置:打开雷电模拟器,进入设置,找到「网络」或「ADB 调试」,确认端口是 5555。如果 5555 被占用,可以改成 5556 或别的,但 vscode 任务里的-s参数要同步改。改完后重启模拟器,用adb connect 127.0.0.1:5555测试连接,返回connected就说明通了。
这三份配置放在一起,就形成了「vscode 编辑 → ADB 推送 → autox.js 运行 → TaoToken 提供模型能力」的链路。下一节验证这条链路是否真的能跑通。
4. 验证请求:从脚本改动到模拟器生效的完整动作
配置写好后,不要急着写复杂逻辑,先用一个最小脚本验证整条链路。在 vscode 里新建hello.js,内容如下:
var config = JSON.parse(files.read("/sdcard/脚本/config.json")); toast("脚本已启动"); console.log("Base URL: " + config.baseUrl); var res = http.postJson( config.baseUrl + "/v1/messages", { model: config.model, max_tokens: 256, messages: [{ role: "user", content: "用一句话说明当前时间" }] }, { headers: { "Content-Type": "application/json", "x-api-key": config.apiKey, "anthropic-version": "2023-06-01" } } ); console.log("状态码: " + res.statusCode); console.log("返回内容: " + res.body.string());保存后,在 vscode 里按Ctrl+Shift+P,输入Run Task,选择autox: run current。这个任务会先把hello.js推送到模拟器的/sdcard/脚本/目录,然后触发 autox.js 运行它。
如果一切正常,你会在模拟器上看到 toast 提示「脚本已启动」,同时在 vscode 的终端里看到状态码和返回内容。状态码 200 表示请求成功,返回内容里应该包含模型生成的文本。如果状态码是 401,说明 Key 有问题;如果是 404,说明 Base URL 或路径不对。
验证成功后,做一次「改动到生效」的完整动作:把hello.js里的 toast 文案改成「第二次运行」,保存,再次执行autox: run current。观察模拟器上是否显示新文案。如果显示的是旧文案,说明文件推送没生效,检查 ADB 连接和推送路径。如果显示新文案,说明整条链路是通的。
这个验证动作看起来简单,但它覆盖了三个关键环节:vscode 任务是否正确执行、ADB 推送是否到达模拟器、autox.js 是否读取到了新文件。很多调试问题其实就出在这三个环节中的某一个,先用最小脚本排除掉配置问题,再写业务逻辑,效率会高很多。
另外,如果你在脚本里用了requestScreenCapture做截图,记得在脚本开头就请求一次权限,不要每次截图都请求,否则会阻塞。截图找图时,小图和大图的分辨率要一致,建议直接用模拟器截图,不要用投屏工具截,避免分辨率差异导致找图失败。
5. 本篇常见错排查:401、local proxy failed、reading choices 与 OAuth 报错
这一节对照几个真实报错,给出排查方向。
401 Unauthorized:最常见的原因是 API Key 填错或过期。检查config.json里的apiKey是否和 TaoToken 控制台里创建的一致。注意不要有多余的空格或换行。如果 Key 是对的,检查请求头里的字段名是否正确,Anthropic 风格的接口用的是x-api-key,不是Authorization: Bearer。如果你用的是 OpenAI 风格的接口,字段名和路径都要相应调整。
local proxy failed:这个报错通常出现在 autox.js 尝试连接电脑时。原因是 vscode 插件配置的 IP 或端口和 autox.js 应用显示的不一致。打开 autox.js 的「连接电脑」页面,看它显示的 IP 和端口,然后在 vscode 插件设置里填一样的值。如果模拟器重启后 IP 变了,也要同步更新。另外,确保电脑和模拟器在同一网段,防火墙没有拦截对应端口。
reading choices 报错:这个错误一般出现在解析模型返回结果时。不同模型的返回结构不一样,如果你按 OpenAI 的choices[0].message.content去读 Anthropic 风格的返回,就会读不到。先打印res.body.string()看完整结构,再根据实际字段取值。TaoToken 的接口兼容多种模型,但返回格式取决于你调用的模型类型,不要混用解析逻辑。
OAuth 相关报错:如果你在 vscode 里用了某些需要 OAuth 登录的插件,可能会遇到 token 过期或回调失败。这类问题和 autox.js 本身无关,排查时先确认插件是否正常登录。如果你在脚本里调用了需要 OAuth 的第三方服务,建议把 OAuth 流程和 autox.js 脚本分开,先用独立工具完成授权,再把 token 传给脚本使用。
Codex auth.json 相关:如果你同时在用 Codex 类的工具,注意auth.json里的配置和 TaoToken 的 Key 是两套东西。不要混用,也不要把 TaoToken 的 Key 写进 Codex 的 auth.json 里。两者各自管理各自的认证信息。
CC Switch / Cline MCP 场景:如果你在 vscode 里用 Cline 或类似工具,配置 MCP 时需要填三件套:Base URL、API Key、Model ID。Base URL 填https://taotoken.net/api,Key 填 TaoToken 创建的 Key,Model ID 填你实际使用的模型。这三项缺一不可,少填一项就会报连接失败。
排查时的一个通用思路:先确认网络通不通,再确认认证对不对,最后确认返回结构解析对不对。大部分报错都能归到这三类里。
6. 把 Key 和调试链路固定下来,后续脚本直接复用
走到这里,你的 vscode 任务、autox.js 连接参数、雷电模拟器端口、TaoToken Key 已经串成了一条可复用的链路。后续再写新的 AutoJs 自动化脚本,只需要在项目里新建.js文件,按Run Task就能推送到模拟器运行,模型调用直接读config.json,不用每次重新配。
如果你需要长期跑编码类或 Agent 类任务,可以了解一下 Coding Plan,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。如果只是想先验证模型对话效果,可以用模型对话页面 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API Key 管理在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。
最后分享一个实用技巧:把config.json里的 Key 通过环境变量注入,在 vscode 的settings.json里配置terminal.integrated.env.windows,把TAOTOKEN_KEY设进去,然后脚本里用process.env.TAOTOKEN_KEY读取。这样即使配置文件不小心被分享出去,Key 也不会泄露。调试链路稳定之后,你会发现写脚本的节奏顺畅很多,改一行、跑一次、看结果,中间不再有手动切换的摩擦。