小丑鼠

JokyMouse 开发者文档

小丑鼠 Latest

运行时模型

JokyMouse 的 Lua 运行时遵循一个很明确的原则:脚本可以自动化输入、读取自身设置、并在关键节点与用户沟通,但平台不会把整套桌面 UI 控制权无限制地开放给脚本。

模块边界

模块加载方式负责内容
jokymouserequire("jokymouse")运行时控制、设置读取、异步任务、鼠标键盘输入
jokymouse.systemrequire("jokymouse.system")系统时间与窗口检索
jokymouse.dialogrequire("jokymouse.dialog")面向用户的提示框与确认框
jokymouse.logrequire("jokymouse.log")运行日志与调试输出
jokymouse.ocrrequire("jokymouse.ocr")屏幕识字与文字读取
jokymouse.screenrequire("jokymouse.screen")屏幕尺寸、取色与找图
jokymouse.httprequire("jokymouse.http")HTTP 请求(受白名单保护)
jokymouse.jsonrequire("jokymouse.json")JSON 序列化与反序列化

中断与正常退出

运行中的脚本可能因为用户手动停止、平台要求终止,或者脚本自身调用 jm.exit(...) 而结束。这三种路径的含义不同:

  • 用户或平台主动停止时,运行时会抛出中断错误,脚本应当尽快结束。
  • 调用 jm.exit(...) 时,整体会被视作正常完成,同时会停止其他 fork 出来的任务。
  • 长循环或等待逻辑应该使用 jm.sleep(...)jm.ensure_running(),这样才能及时响应停止信号。

settings 的角色

脚本的 settings 是发布链路中的正式配置,不只是本地表单。运行时通过 jm.settings() 读取完整配置,平台会把这些值串进创作页、安装页和运行时。

fork 任务模型

jm.fork(fn, ...) 会创建一个异步任务并返回 task_id。随后可以用 jm.wait_task(task_id, timeout_ms?) 轮询结果,或者在不再需要时调用 jm.cancel_task(task_id)

这种模型适合把主流程和辅助流程拆开,例如:

  • 主任务负责切账号。
  • 子任务负责定时检查某个 UI 是否出现。
  • 任一方决定脚本结束时,由 jm.exit(...) 统一收口。

为什么 dialog 是单独模块

提示框与自动化输入是两类职责。把这类交互留在 jokymouse.dialog 里,可以明确告诉脚本作者:

  • 这是和用户沟通的正式接口。
  • 这是平台愿意持续维护的交互边界。
  • 这不等价于任意自定义窗口系统。

接下来可以按需查看 jokymouse APIjokymouse.system APIjokymouse.dialog APIjokymouse.log APIjokymouse.ocr APIjokymouse.screen APIjokymouse.http APIjokymouse.json API 的详细签名。