autojs6-Doc-skills
このプロジェクトは、AutoJs6スクリプト開発向けのプロフェッショナルなAIアシスタントです。開発者がコードの誤認識やエラーを減らすことを目的としています。AutoJs6の公式ドキュメントに基づいており、正確なAPIの使用法、パラメータ、コード例を提供します。UIコントロール操作、タッチジェスチャー、画像認識、ファイル処理、マルチスレッドといった主要な機能を網羅しています。ユーザーがAutoJs6スクリプトを記述・デバッグする際、このツールは開発効率とコード品質を大幅に向上させ、一般的な落とし穴を回避するのに貢献します。
git clone https://github.com/icxz000/autojs6-Doc-skills.gitBefore / After 効果比較
1 组AIアシスタントがない場合、AutoJs6スクリプトの作成時に開発者は大量のドキュメントを手動で参照する必要があり、APIの詳細を見落としたり、コードの幻覚を導入したりしやすく、デバッグに時間がかかり非効率的で、コード品質の保証が困難です。
このAIスキルを活用することで、開発者は正確なAutoJs6 APIの使用法とコード例を迅速に入手でき、コードエラーとデバッグ時間を効果的に削減し、スクリプト作成の効率とコード品質を大幅に向上させ、一般的な落とし穴を回避できます。
description SKILL.md
name: autojs6-Doc-skills description: 编写 AutoJs6 自动化脚本的专业助手。在用户编写、调试 AutoJs6 脚本时使用此技能,包括:UI控件查找与操作、触摸/手势模拟、图像识别与截图、文件/HTTP/存储操作、多线程、事件监听、悬浮窗、对话框等。当用户提及 AutoJs6、autojs、auto.js 脚本编写、安卓自动化脚本、手机脚本自动点击等相关内容时,必须使用此技能以减少代码错误、提供准确API用法。
AutoJs6 脚本编写技能
概述
AutoJs6 是基于 Android 无障碍服务的 JavaScript 自动化工具,使用 Mozilla Rhino 引擎(非 V8/Node.js),可直接调用 Java API。
- 官方文档:https://github.com/SuperMonster003/AutoJs6-Documentation
- 文档版本:1.1.8(versionCode 39)
触发条件
以下情况必须使用此技能:
- 用户请求编写 AutoJs6 脚本("帮我写一个 AutoJs6 脚本来...")
- 用户询问 AutoJs6 API 用法("AutoJs6 中如何...")
- 用户需要开发指导或遇到错误
- 用户提到相关关键词:AutoJs6、autojs、auto.js、安卓自动化、控件操作、手机脚本自动点击等
工作流程
- 识别需求:判断用户需要脚本编写、API 查询还是错误排查
- 选择参考文件:根据问题类型读取对应的参考文件(见下方说明)
- 提供准确回答:从参考文件提取信息,提供正确的函数签名、参数、代码示例
- 验证准确性:确保与参考文档一致,包含必要的错误处理
参考文件说明(按需读取)
整合参考文件(快速概览)
本技能包含三个整合参考文件,适合快速确认 API 用法:
| 文件 | 内容 | 何时读取 |
|---|---|---|
references/api-core.json | 21个核心模块的所有方法签名与说明 | 需要确认任意 API 的用法、参数、返回值时 |
references/api-selector.json | UiSelector(222方法) / UiObject(135方法) / UiObjectCollection(56方法) 完整API | 涉及控件选择、控件属性操作时 |
references/patterns-and-pitfalls.json | 权限说明、常用代码模式、Top错误列表、调试技巧、Rhino引擎特性 | 编写整体逻辑、权限判断、排查错误时 |
粒度参考文件(精确查询)
每个模块有独立的 JSON 文件,适合精确查找特定模块的详细 API:
| 功能领域 | 参考文件 |
|---|---|
| 自动化操作 | automator.json, coordinates-based-automation.json, widgets-based-automation.json |
| 控件选择器 | uiSelectorType.json, uiObjectType.json, uiObjectActionsType.json, uiObjectCollectionType.json |
| 应用和设备 | app.json, appType.json, device.json, intent.json, intentType.json |
| UI 交互 | ui.json, dialogs.json, floaty.json, canvas.json, progress.json, toast.json |
| 图像和 OCR | image.json, imageWrapperType.json, ocr.json, color.json, colorTable.json |
| 文件和数据 | files.json, storages.json, storageType.json |
| 网络和通信 | http.json, web.json, webSocketType.json |
| 多线程和事件 | threads.json, timers.json, events.json, eventEmitterType.json |
| 系统功能 | shell.json, sensors.json, runtime.json, engines.json |
| 工具类 | console.json, crypto.json, util.json, mathx.json, arrayx.json, numberx.json |
| 多媒体 | media.json, recorder.json, barcode.json, qrcode.json |
| 其他 | shizuku.json, plugins.json, notice.json, autojs.json |
完整索引见 references/index.md
规则:回答 AutoJs6 代码问题时,先读取对应参考文件,再输出代码,不得依赖记忆中的 API 写法。简单查询用整合文件,深入查询用粒度文件。
核心模块速览
references/api-core.json 包含以下模块的完整方法列表:
| 模块 | 主要功能 | 关键方法示例 |
|---|---|---|
automator | 触摸/手势模拟 | click(x,y) swipe() gesture() input() |
widgetsBasedAutomation | 控件自动化全局函数 | click(text) scrollUp() setText() auto() |
app | 应用管理、Intent | launch() launchApp() startActivity() openUrl() |
console | 日志、控制台悬浮窗 | log() show() rawInput() time() |
device | 设备信息与控制 | width height getBattery() keepScreenOn() |
image | 截图、找色、模板匹配 | captureScreen() findColor() findImage() matchTemplate() |
http | HTTP 请求 | get() post() postJson() request() |
files | 文件读写 | read() write() exists() listDir() |
storages | 键值持久化存储 | create() .get() .put() .remove() |
threads | 多线程 | start() lock() atomic() disposable() |
events | 事件监听 | onKeyDown() onTouch() onNotification() onToast() |
floaty | 悬浮窗 | window() rawWindow() closeAll() |
dialogs | 对话框 | alert() confirm() rawInput() select() |
global | 全局函数 | sleep() toast() toastLog() exit() random() |
ui | UI 界面 | layout() inflate() run() post() |
shell | Shell 命令 | shell(cmd, root) |
media | 多媒体播放 | playMusic() stopMusic() scanFile() |
sensors | 传感器 | register() unregister() |
util | 工具函数 | 字符串/数组/对象辅助方法 |
crypto | 加解密 | 哈希、AES 等加密方法 |
base64 | Base64 编解码 | encode() decode() |
references/api-selector.json 包含:
- UiSelector(222个方法):
text()id()className()findOne()find()exists()waitFor()等所有选择器 - UiObject(135个方法):控件属性读取、点击、输入、滚动、节点遍历等
- UiObjectCollection(56个方法):控件集合操作
权限速查
| 功能 | 所需权限 |
|---|---|
| selector 查找控件 / 模拟触摸 / 系统按键 | 无障碍服务 |
images.captureScreen() | 截图权限(首次弹授权框) |
floaty.window() / console.show() | 悬浮窗权限 |
shell(cmd, true) / events.onTouch() | Root 权限 |
device.setBrightness() | 修改系统设置权限 |
通知监听 events.onNotification() | 通知服务权限 |
最常用代码模板
// ① 脚本开头:请求无障碍服务
auto.waitFor();
// ② 等待控件出现后点击(推荐写法)
let btn = text('确定').findOne(5000); // 加超时,不永久阻塞
if (btn) btn.click();
else console.log('未找到按钮');
// ③ 截图找色(必须 recycle)
let img = images.captureScreen();
let pt = images.findColor(img, '#FF0000', {threshold: 10});
if (pt) click(pt.x, pt.y);
img.recycle(); // ← 必须释放
// ④ 比例坐标(适配不同分辨率)
let W = device.width, H = device.height;
swipe(W*0.5, H*0.8, W*0.5, H*0.2, 500);
// ⑤ 本地存储(持久化)
let s = storages.create('myApp');
s.put('count', s.get('count', 0) + 1);
// ⑥ 多线程更新UI
threads.start(function() {
let result = doWork();
ui.run(() => textView.setText(result));
});
// ⑦ UI脚本开头必须声明
'ui';
ui.layout(<vertical>...</vertical>);
Top 常见错误速查
| 症状 | 原因 | 修复 |
|---|---|---|
| 控件操作全部无效 | 未开启无障碍服务 | 开头加 auto.waitFor() |
| 脚本永久卡死 | findOne() 无超时 | 改为 findOne(5000) 并判断 null |
| 长时间运行后崩溃 | Image 对象未回收 | 每次截图后 img.recycle() |
| ui 模块方法报错 | 忘写 'ui'; | 第一行加 'ui'; |
| 点击位置错误 | 固定坐标不适配 | 用 device.width/height 计算比例 |
| 子线程操作 View 报错 | 跨线程操作 UI | 改用 ui.run(() => {...}) |
| 悬浮窗脚本退出后残留 | 未关闭悬浮窗 | 退出前 floaty.closeAll() |
| dialogs 在 ui 模式卡死 | 阻塞了 UI 线程 | 用回调或 Promise 形式 |
| events 事件处理延迟 | 主线程有耗时操作 | 把耗时操作移到子线程 |
| captureScreen 每次弹框 | 未提前申请截图权限 | 脚本开头调用 images.requestScreenCapture() |
完整错误列表见 references/patterns-and-pitfalls.json → top_mistakes
回答规范
代码质量要求
- 必须
findOne()加超时参数并处理 null - 必须 截图操作后调用
img.recycle() - 必须 无障碍脚本开头加
auto.waitFor() - 必须 UI脚本第一行写
'ui'; - 推荐 使用比例坐标而非固定坐标
- 推荐 随机延迟模拟人工操作:
sleep(random(500, 1500))
回答格式
- 简述实现思路(1-2句)
- 提供完整可运行代码(含必要注释)
- 说明所需权限
- 关键注意点(不超过3条)
Rhino 引擎说明
AutoJs6 使用 Mozilla Rhino(非 V8),注意:
- 支持:
let/const/ 箭头函数 / 模板字符串 / 解构 /Promise(基础) - 不支持:顶层
await/WeakRef/ 部分 ES2020+ 特性 - 特有:可直接使用 Java 类
new java.util.ArrayList() - 可
importClass(java.io.File)导入 Java 类
详见 references/patterns-and-pitfalls.json → rhino_engine_notes
注意事项
- 版本一致性:参考文件基于 AutoJs6 文档 v1.1.8,API 可能随版本更新变化
- 设备差异:不同 Android 设备/版本可能有行为差异,建议添加设备检测逻辑
- 错误处理:始终提供包含错误处理的代码示例,避免空指针、超时等问题
Base directory for this skill: file:///C:/Users/Capoo/.config/opencode/skills/autojs6-skill Relative paths in this skill (e.g., references/) are relative to this base directory.
forumユーザーレビュー (0)
レビューを書く
レビューなし
統計データ
ユーザー評価
この Skill を評価