feat: publish workphone SDK deployment and API docs

This commit is contained in:
Manus AI
2026-07-14 18:10:52 +08:00
commit 021d633cc1
534 changed files with 122391 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
#!/usr/bin/env bash
# 运维兜底ADB 一旦连上红米,自动在 Termux 启动 WS Agent一次性 bootstrap非日常主通道
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LAN_ENV="${SCRIPT_DIR}/../config/lan.env"
if [[ -f "$LAN_ENV" ]]; then
# shellcheck source=/dev/null
source "$LAN_ENV"
fi
export ANDROID_ADB_SERVER_PORT="${ANDROID_ADB_SERVER_PORT:-5038}"
ADB=(adb -P "${ANDROID_ADB_SERVER_PORT}")
DEVICE_IP="${DEVICE_IP:-192.168.110.80:5555}"
DEVICE_ID="${DEVICE_ID:-xgfe65eimrrofyws}"
SDK_BASE="${WORKPHONE_API_URL:-http://127.0.0.1:8899}"
FRIDA_PORT="$(python3 -c "import json; print(json.load(open('${SCRIPT_DIR}/anti_detect/phantom_frida_config.json'))['listen_port'])" 2>/dev/null || echo 17263)"
WS_URL="${WORKPHONE_WS_URL:-ws://127.0.0.1:8899/ws/device/${DEVICE_ID}}"
LOG="/tmp/wp_adb_bootstrap_agent.log"
MAX_WAIT="${ADB_BOOTSTRAP_WAIT:-7200}"
exec >>"$LOG" 2>&1
echo "=== $(date) adb bootstrap agent wait ${DEVICE_IP} max=${MAX_WAIT}s ==="
deadline=$((SECONDS + MAX_WAIT))
while (( SECONDS < deadline )); do
# 优先 USB 序列号,其次任意非 TV 的无线 device
serial=""
if [[ -n "${DEVICE_SERIAL:-}" ]] && "${ADB[@]}" -s "$DEVICE_SERIAL" get-state 2>/dev/null | grep -qx device; then
serial="$DEVICE_SERIAL"
else
while IFS= read -r line; do
s="${line%%$'\t'*}"
[[ -z "$s" ]] && continue
brand=$("${ADB[@]}" -s "$s" shell getprop ro.product.brand 2>/dev/null | tr -d '\r')
[[ "$brand" == "haier" ]] && continue
serial="$s"
break
done < <("${ADB[@]}" devices 2>/dev/null | awk '/\tdevice$/{print $1}')
fi
if [[ -n "$serial" ]]; then
DEVICE_IP="$serial"
echo "=== $(date) ADB ready serial=${serial}, bootstrap Termux Agent ==="
"${ADB[@]}" -s "$serial" shell "am start -n com.termux/.HomeActivity" >/dev/null 2>&1 || true
sleep 2
CMD="export WP_AGENT_ON_DEVICE=1 WP_FRIDA_MODE=remote WP_FRIDA_PORT=${FRIDA_PORT}; cd ~/workphone/agent && python agent.py -d ${DEVICE_ID} -s ${WS_URL} --heartbeat 10"
"${ADB[@]}" -s "$serial" shell am startservice -n com.termux/com.termux.app.RunCommandService \
-a com.termux.RUN_COMMAND \
--es com.termux.RUN_COMMAND_PATH /data/data/com.termux/files/usr/bin/bash \
--esa com.termux.RUN_COMMAND_ARGUMENTS "-lc,${CMD}" 2>/dev/null || {
echo "RunCommand 失败,请手动在 Termux 粘贴 termux_agent_bootstrap.sh 输出"
bash "${SCRIPT_DIR}/termux_agent_bootstrap.sh" "$DEVICE_ID"
}
echo "=== bootstrap 已触发,等待 WS 上线 ==="
bash "${SCRIPT_DIR}/wait_ws_agent.sh" "$DEVICE_ID" "$SDK_BASE" 120 5 && exit 0
fi
"${ADB[@]}" connect "${DEVICE_IP}" >/dev/null 2>&1 || true
echo "$(date '+%H:%M:%S') waiting phone (skip haier TV)"
sleep 10
done
echo "=== timeout ==="
exit 1