Install
openclaw skills install taiji-topo-file-downloader在太极平台 a.taiji.woa.com 工作流页面自动定位节点侧边栏、打开配置文件面板并下载文件。用于“下载太极拓扑配置文件/模型文件”“在太极页面里找到文件并保存到本地”等任务,特别适合需要先校验页面是否已正确打开、再稳定定位侧边栏与文件列表的场景。
openclaw skills install taiji-topo-file-downloader在太极平台下载文件时,优先用“先校验页面状态,再分层定位 UI”的流程,避免误点和空页面操作。
a.taiji.woa.com不做这一步,后续“找侧边栏/找文件按钮”经常会失败。
优先级如下:
语义定位(首选)
配置文件、参数配置、文件管理、节点参数结构定位(次选)
ant-drawer / ant-form / 参数区块样式定位(兜底)
*[class*="drawer"], *[class*="config"])关键点:不要只依赖单个 class;太极页面改版后 class 很容易漂移。
tr 行 + 文件名文本)示例(DOM 兜底思路):
const modal = document.querySelector('.ant-modal-wrap, .ant-modal-root');
if (!modal) throw new Error('文件管理弹窗未出现');
const rows = modal.querySelectorAll('tr');
if (!rows.length) throw new Error('未找到文件列表行');
tr,按文件名匹配(优先全名,必要时再用 includes)const target = 'model.py';
const modal = document.querySelector('.ant-modal-wrap, .ant-modal-root');
const rows = [...modal.querySelectorAll('tr')];
const hit = rows.find(r => r.textContent.includes(target));
if (!hit) throw new Error(`未找到文件: ${target}`);
const ops = hit.querySelectorAll('a,button');
if (!ops.length) throw new Error('未找到可点击下载操作');
ops[0].click();
落盘目录必须为:{topo名}_{YYYYMMDD_HHMMSS},并放在指定基目录下。
# 指定基目录(可按任务改)
base_dir="~/Downloads"
# 输入(从页面提取或任务参数传入)
topo_name="{拓扑名}"
file_name="{文件名}"
# 清洗拓扑名,避免路径非法字符
safe_topo=$(echo "$topo_name" | tr '/:' '_' | tr -s ' ' '_' | sed 's/[^[:alnum:]_.-]/_/g')
# 当前时间(Asia/Shanghai)
now=$(TZ=Asia/Shanghai date +%Y%m%d_%H%M%S)
out_dir=$(eval echo "$base_dir")/${safe_topo}_${now}
mkdir -p "$out_dir"
# 取最新 Chrome 临时下载文件
temp_file=$(ls -t ~/Downloads/.com.google.Chrome.* 2>/dev/null | head -1)
# 安全检查
[ -z "$temp_file" ] && echo "未发现临时下载文件" && exit 1
# 移动并重命名
mv "$temp_file" "$out_dir/$file_name"
目标:减少盲点点击,稳定复现“预检→侧栏→文件弹窗→下载”流程。
获取当前标签并快照
browser.tabs(profile="chrome")browser.snapshot(profile="chrome", targetId=<taiji-tab>, refs="aria")URL 与页面状态断言
targetUrl 不含 a.taiji.woa.com:browser.navigate(...)snapshot,确认出现“配置文件/参数配置/节点参数”等文本锚点打开文件管理入口
browser.act(request:{kind:"click", ref:<file-manager-ref>})snapshot,断言弹窗/表格出现点击目标文件下载
本地落盘校验(必要)
browser.snapshot 先抓 UI 引用,再 browser.act 点击,少用盲点坐标点击targetId~/Downloadstopo名_当前时间,避免覆盖历史下载与并发冲突。这几条是让流程在页面抖动、样式改版、加载波动时仍可用的核心保障。