Dux AI 的独立节点运行时,负责客户端注册、状态上报、桌面动作执行与结果回传。
- 设备注册与
连接 ID(client_id) / node_token回写(注册请求使用设备 ID 作为鉴权标识) - Runtime WebSocket 长连、心跳、状态上报
- macOS / Windows 托盘入口
- 设置窗口与权限窗口(Rust 内嵌 HTML)
- 浏览器动作:
browser.read、browser.screenshot、browser.goto、browser.extract、browser.click、browser.type - 平台 UI 动作:
ui.status、app.activate、window.focus、ui.tree、ui.find、ui.read、ui.write、ui.invoke、ui.click、ui.type_native、ui.keypress - 文件与系统动作:
file.list、file.stat、file.read_text、file.open、system.info、terminal.exec - 截图动作:
screen.capture - 渠道扩展动作:
channel.qianniu.activate、channel.qianniu.inspect、channel.qianniu.send_text - 微信扩展动作:
channel.wechat.current_session、channel.wechat.search_candidates、channel.wechat.open_session、channel.wechat.prepare_text、channel.wechat.send_text - Artifact 分片上传与 PHP 续跑闭环
channel.wechat.current_session- 纯 UI 读取,不使用鼠标或键盘事件。
channel.wechat.search_candidates- 打开微信搜索弹层并返回候选项、分组和最终命中项,便于调试关键词搜索。
channel.wechat.open_session- 支持两种调用:
- 直接用精确会话名:
session_title - 用关键词搜索并指定目标候选:
query+target_title
channel.wechat.prepare_text- 纯 UI 写入,只写当前会话输入框,不发送,不抢键鼠。
channel.wechat.send_textwithmode=safe- 纯 UI 写入草稿,不发送;要求当前会话已经是目标会话。
channel.wechat.send_textwithmode=active- 写入后按回车发送;会使用键盘事件。
channel.wechat.send_text- 与
open_session一样支持: - 直接用
session_title - 或者用
query+target_title精确指定候选
- 与
channel.wechat.open_session- 当前微信版本需要搜索框真实输入和回车打开结果;会使用鼠标与键盘事件。
当前实测结论:
- 微信输入框支持通过
AXValue直接写入文本。 - 微信发送动作未暴露标准 Accessibility action,发送仍需键盘回车。
- 微信搜索结果打开未稳定暴露纯 UI 动作,打开会话仍需活动模式。
crates/core:配置、协议、Runtime 长连、artifact 回传crates/browser:chromiumoxide浏览器控制、截图、文件/系统动作crates/platform:平台路径、权限与开机自启apps/node-daemon:Linux daemon 入口apps/node-tray:macOS / Windows 托盘入口(可执行名dux-ai-node)helpers/macos-ax-helper:macOS 平台 UI helper(Swift)helpers/windows-uia-helper:Windows 平台 UI helper 与打包脚本assets/icon.*:节点应用图标、托盘图标与平台打包图标资源deploy/systemd/dux-ai-node.service:Linux 用户态 systemd 模板scripts/build-macos-app.sh:macOS.app打包scripts/build-linux.sh:Linux daemon 打包(含跨编译检查)scripts/install-linux.sh:Debian / Ubuntu 服务器一键安装脚本(默认安装 headless Chromium + systemd 服务)scripts/install-systemd-user.sh:Linux 用户服务安装scripts/build-windows.ps1:Windows tray 二进制打包(需在 Windows 主机执行).github/workflows/build-node.yml:GitHub Actions 多平台构建与 Release 附件上传scripts/smoke-test-node.sh:节点动作冒烟测试
- macOS:
~/Library/Application Support/plus.dux.dux-ai-node/config.toml - Windows:
%APPDATA%/plus/dux/dux-ai-node/config.toml - Linux:
~/.config/plus/dux/dux-ai-node/config.toml
关键字段:
device_id:本地稳定 UUIDclient_id:服务端注册后返回的连接 ID(当前在线节点标识)node_token:Runtime WebSocket 鉴权 token
cargo run -p dux-ai-node-daemon -- initcargo run -p dux-ai-node-daemon -- statuscargo run -p dux-ai-node-daemon -- config getcargo run -p dux-ai-node-daemon -- config set server_url http://duxai.testcargo run -p dux-ai-node-daemon -- registercargo run -p dux-ai-node-daemon -- daemon
cargo run -p dux-ai-node -- statuscargo run -p dux-ai-node -- registercargo run -p dux-ai-node -- runcargo run -p dux-ai-node -- autostart statuscargo run -p dux-ai-node -- autostart installcargo run -p dux-ai-node -- autostart uninstall
- 构建
.app:./scripts/build-macos-app.sh - 产物:
dist/Dux AI Node.app - 启动:
open "dist/Dux AI Node.app" - 当前已实现:不进 Dock、菜单栏常驻、设置/权限窗口、LaunchAgent 自启入口
如果 macOS 下载后提示:
“Dux AI Node”已损坏,无法打开。你应该将它移到废纸篓。
这通常不是文件真的损坏,而是系统对未签名或未公证应用的隔离拦截。
可以在终端执行:
sudo xattr -rd com.apple.quarantine /Applications/Dux\ AI\ Node.app执行后再重新打开应用即可。
- 当前只支持 daemon/headless,不提供 GUI
file.open等 GUI 相关动作会显式返回不支持- 构建:
TARGET=x86_64-unknown-linux-gnu ./scripts/build-linux.sh - 构建:
TARGET=aarch64-unknown-linux-gnu ./scripts/build-linux.sh - 如果在 macOS 上执行该脚本,会先检查
x86_64-linux-gnu-gcc,缺失时直接报清晰提示 - 安装用户服务:
./scripts/install-systemd-user.sh - Debian / Ubuntu 一键安装:
curl -fsSL https://raw.githubusercontent.com/duxweb/dux-ai-node/main/scripts/install-linux.sh | sudo bash -s -- --server-url http://duxai.test- 重新执行同一个安装命令会自动识别为安装 / 升级 / 重装,并保留现有配置与数据
- 卸载:
curl -fsSL https://raw.githubusercontent.com/duxweb/dux-ai-node/main/scripts/uninstall-linux.sh | sudo bash - 完全卸载:
curl -fsSL https://raw.githubusercontent.com/duxweb/dux-ai-node/main/scripts/uninstall-linux.sh | sudo bash -s -- --purge
- 服务模板:
deploy/systemd/dux-ai-node.service
- 当前使用与 macOS 相同的 tray 入口代码
- 构建:在 Windows PowerShell 里运行
./scripts/build-windows.ps1 - 构建产物会一并包含
helpers/windows-uia-helper/dux-node-windows-uia-helper.ps1 - 该脚本会明确要求在 Windows 主机执行,不再给出误导性的本机跨编译假象
- 使用:
./scripts/smoke-test-node.sh <server_url> <device_id> <session_id> <连接ID(client_id)> - 会顺序测试:
system.infobrowser.readscreen.capturebrowser.screenshot
- 推送
v*tag 时会自动构建 Linux x86_64 / arm64 daemon、Windows x86_64 tray、macOS x86_64 / arm64.app - 构建产物会同时上传到 Actions Artifacts 和 GitHub Release 附件
- 打包结果不再内置 Node.js / Playwright 运行时,当前 macOS 分发基于 Rust + Swift helper
- 设置窗口与权限窗口当前由 Rust 内嵌 HTML 提供,不依赖独立前端构建链
- 本仓库不包含 OCR、WPS/微信等通用桌面软件控制实现