关闭远程长时间工作的闭环:为各平台(CI、EAS、部署、发布)选取合适的完成信号,后台运行监控并发送通知。
Wander — 远程合成完成( meta) + GitHub 动作适配器是一项面向实际任务的技能,主要用于Wander.;Philosophy: 在您触发远程和慢速的东西后, 完成应该找到您—— 并且代理必须 St。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
不要手动刷新,让 Wander 来守候。 设计哲学:当你触发一个远程且耗时的操作后,完成通知应主动找到你——而 Agent 仍必须验证最终结果,而非假设其成功。
元协议 vs 具体实现:本能力定义了一套适用于任意长期运行远程任务的可移植最佳实践。Wander(
watch-workflow-*.sh)是当事实来源为GitHub Actions时的参考适配器。它并非唯一有效的监控方式。
每个远程异步任务都具有相同结构:
触发 → 在别处执行 → 终态(+ 产物) (Agent) (无法加速) (用户与 Agent 均需此信息)
Agent 应当:
仅当 Agent 明确知晓终态时,该闭环才算完成(对于失败情形,还需具备足够日志/上下文以支持修复)。
步骤 A —— 识别权威数据源(即真实状态所在系统?)
| 类别 | 示例 | 典型权威数据源 |
|---|---|---|
| 代码仓库 CI | PR 中的 lint、测试、构建 | GitHub Actions、GitLab CI、Buildkite、CircleCI 等 |
| 移动云构建 | EAS / Xcode Cloud / … | 厂商构建详情页、CLI 状态、Webhook,或封装该厂商的 CI 任务 |
| 部署 / PaaS | Fly、Railway、Vercel、k8s rollout | 平台 CLI/API、部署仪表盘,或 CI 中的部署任务 |
| 发布 | npm、应用商店、制品仓库 | 商店/CI 流水线状态,而非“上传已开始” |
步骤 B —— 选择完成通知通道(在保障可审计性的前提下选择最低摩擦路径)
workflow_dispatch 触发)。finished / errored 状态。步骤 C —— 后台运行监控器,除非用户明确要求阻塞当前会话。
步骤 D —— 完成后,从同一权威数据源获取失败详情(失败步骤日志、EAS 错误页、部署日志等)。
在步骤 A 中切勿默认采用 GitHub Actions。应默认采用:实际掌控该触发任务终态的平台。
当权威运行任务本身即为 GitHub Actions 工作流(如 push、workflow_run、workflow_dispatch 等),请使用 Wander 脚本作为监控器:
# Wander 后台进程退出后,检查结果: gh run view--json conclusion -q .conclusion # → "success" | "failure" | "cancelled" | "timed_out" # 若失败,获取日志供 Agent 诊断: gh run view --log-failed
任务分类——示例(GHA 列 = Wander 适配器可直接适用的情形):
| 任务类型 | 示例 | Wander(GHA) |
|---|---|---|
| CI 测试 | lint、单元测试、端到端测试 | ✅ 当工作流运行于 GHA 上 |
| 构建 | Docker 镜像、Web 构建包 | ✅ 当工作流运行于 GHA 上 |
| 移动构建 | EAS iOS/Android | ⚠️ 通常为间接方式:GHA 封装任务 或 厂商 CLI/仪表盘 |
| 部署 | Railway、Fly、Vercel | ✅/⚠️ CI 任务 或 平台原生方式 |
| 发布 / 发布上线 | npm、应用商店上传 | ✅/⚠️ 同上 |
若 EAS 仅通过 CLI 触发且未接入 GHA:Wander 脚本不适用——请依据项目文档,使用 EAS/Expo 原生状态(eas build:list、构建 URL 或项目自动化机制)。
引擎说明:当前 wander 仓库实现了针对GitHub Actions的轮询与通知功能。其他后端应作为额外适配器(未来扩展)或遵循相同元协议的项目专属脚本纳入。
范围说明:v1 版本仅覆盖 GitHub Actions。
在触发一个长期运行的远程任务后,应为其附加匹配该任务权威数据源的监控器——除非用户明确拒绝或该任务极短(可忽略)。
若所触发的工作流明确属于GitHub Actions(或完全封装于 Agent 刚刚启动的 GHA 工作流中):
.workflows.yml → 从中选取工作流及触发时机。.github/workflows/ 存在 → 识别对应工作流(通过注册表扫描或向用户询问),随后启动监控。watch-workflow-bg.sh —— 默认后台运行,除非用户要求阻塞。;完成后我会通知你——你可以继续其他工作。”gh run view --json conclusion 。切勿过早宣告成功。gh run view --log-failed (或等效命令)并提出修复建议。若该工作流并非 GHA(纯 EAS CLI、仅平台侧部署等):
watch-workflow-bg.sh。若 .github/workflows/ 不存在:不得自动启动 Wander;请依据上述步骤 A–B 选择其他监控器。
gh CLI 已安装并完成身份认证jq 已安装WANDER_HOME(默认为 ~/code/wander)git clone https://github.com/ERerGB/wander.git ~/code/wander cd ~/code/wander && chmod +x *.sh
添加至 shell 初始化文件(如 ~/.bashrc 或 ~/.zshrc):
export WANDER_HOME="${WANDER_HOME:-$HOME/code/wander}"
export PATH="$WANDER_HOME:$PATH"
alias wf='watch-workflow.sh'
alias wfbg='watch-workflow-bg.sh'
alias wfdt='watch-workflow-detached.sh'
| 模式 | 脚本 | 适用场景 |
|---|---|---|
| 后台 | watch-workflow-bg.sh |
默认模式。 可继续工作;完成时接收通知。 |
| 分离 | watch-workflow-detached.sh |
关闭终端;日志写入 ~/.wander_logs/ |
| 前台 | watch-workflow.sh |
阻塞当前会话直至完成(极少使用) |
经验法则:优先选用后台模式。若预计运行时间> ~5 分钟且终端可能关闭,请改用分离模式。
.workflows.yml,GHA)各工作流执行时长不同。该注册表用于告知 GHA 适配器预期行为:
workflows:
- name: "ci.yml"
description: "Lint + 单元测试"
check_window: 180 # 若监控启动前工作流已结束,允许向前追溯的时间窗口(秒)
expected_duration: 45 # 典型运行时长(秒)
category: "smoke"
- name: "build.yml"
description: "Docker 构建 + 推送"
check_window: 600
expected_duration: 180
category: "build"
- name: "deploy.yml"
description: "Railway 部署"
check_window: 900
expected_duration: 300
category: "deploy"
check_window = 若工作流在监控启动前已完成,该参数定义了我们仍将其视为“本次触发”的最大回溯时间。通常约为 6× expected_duration。
为仓库自动生成注册表:
cd /path/to/repo "$WANDER_HOME/scripts-registry.sh" scan-workflows --auto-scope
未配置时的默认 check_window 值为 300 秒。
git push origin main && "$WANDER_HOME/watch-workflow-bg.sh" ci.yml
# scripts/watch-ci.sh
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
WANDER_DIR="${WANDER_HOME:-$(dirname "$REPO_ROOT")/wander}"
exec "$WANDER_DIR/watch-workflow-bg.sh" ci.yml "$@"
随后执行:git push && ./scripts/watch-ci.sh
若 EAS 由 GHA 工作流触发(例如 eas-build.yml):
git push origin feat/my-branch && "$WANDER_HOME/watch-workflow-bg.sh" eas-build.yml
若 EAS 仅通过 CLI 触发:请使用 EAS/Expo 原生信号进行监控;团队可选模式仍是添加一层轻量 GHA workflow_dispatch 封装,以实现统一监控。
gh workflow run deploy.yml --ref main "$WANDER_HOME/watch-workflow-bg.sh" deploy.yml main
| 场景 | 行为 |
|---|---|
| 工作流在监控启动前已完成 | 可能被 check_window 捕获;快速发出通知 |
| 约 30 秒后仍未出现运行记录 | Wander 持续等待,随后退出并提供指引 |
| 工作流设置了错误的分支过滤器 | 未发现匹配运行;上报并停止 |
| 极短工作流 | 常通过 check_window 立即捕获 |
| 极长工作流 | 推荐使用分离模式;日志可在终端关闭后保留 |
gh run view--log-failed gh run rerun --failed
对于非 GHA 类型任务,请遵守相同元规则:拉取对应平台的首要失败信息源(构建日志、部署日志等)。
$WANDER_HOME 环境变量$(dirname "$REPO_ROOT")/wander~/code/wander元协议保持稳定。适配器可替换:
在专用适配器尚未就绪前,优先采用以 CI 为门面或厂商原生轮询——切勿静默假设成功。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.9万人学习
共49课时 | 82.5万人学习