关闭远程长时间工作的闭环:为各平台(CI、EAS、部署、发布)选取合适的完成信号,后台运行监控并发送通知。
Wander — 远程合成完成( meta) + GitHub 动作适配器
功能概述
Wander — 远程合成完成( meta) + GitHub 动作适配器是一项面向实际任务的技能,主要用于Wander.;Philosophy: 在您触发远程和慢速的东西后, 完成应该找到您—— 并且代理必须 St。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Wander — 远程异步完成(元协议)+ GitHub Actions 适配器
不要手动刷新,让 Wander 来守候。 设计哲学:当你触发一个远程且耗时的操作后,完成通知应主动找到你——而 Agent 仍必须验证最终结果,而非假设其成功。
元协议 vs 具体实现:本能力定义了一套适用于任意长期运行远程任务的可移植最佳实践。Wander(
watch-workflow-*.sh)是当事实来源为GitHub Actions时的参考适配器。它并非唯一有效的监控方式。
心智模型(第一性原理)
每个远程异步任务都具有相同结构:
触发 → 在别处执行 → 终态(+ 产物) (Agent) (无法加速) (用户与 Agent 均需此信息)
Agent 应当:
- 触发后立即继续——勿在聊天界面中反复手动刷新 UI 消耗对话轮次。
- 附加监控器——一种无需用户盯守浏览器标签页即可主动呈现完成状态及成功/失败结果的机制。
- 闭环认知流程——当监控器触发时,Agent 读取真实结果并采取行动(推进下一步,或诊断问题)。
仅当 Agent 明确知晓终态时,该闭环才算完成(对于失败情形,还需具备足够日志/上下文以支持修复)。
- 读取监控输出(终态日志、JSON 汇总、仪表盘链接 + 状态抓取——取决于后端所提供内容)。
- 基于结果执行动作——在终态被确认前,不得视任务为“已完成”:
- ✅ 成功 → 推进后续操作(例如合并 PR、部署、打标签)
- ❌ 失败 / 已取消 → 向用户呈现失败信息、拉取日志、提出修复建议
- 绝不假设成功——“监控已启动” ≠ “任务已成功”。
元协议 —— 在选择监控器前对任务进行分类
步骤 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 —— 选择完成通知通道(在保障可审计性的前提下选择最低摩擦路径)
- 以 CI 为门面——若团队已将质量门禁设于某 CI 运行之上,则即便繁重工作由 EAS/Railway 等执行,监控该 CI 运行通常仍是最佳选择(通过包装任务或
workflow_dispatch触发)。 - 厂商原生 CLI/API——例如,在无 CI 包装且厂商自身为权威数据源时,轮询构建 ID 直至返回
finished/errored状态。 - 仪表盘 + 显式交接——当自动化不可行时可接受;但仍需用户提供一个明确的状态名称,或单个经确认的 URL——而非凭主观感受判断。
步骤 C —— 后台运行监控器,除非用户明确要求阻塞当前会话。
步骤 D —— 完成后,从同一权威数据源获取失败详情(失败步骤日志、EAS 错误页、部署日志等)。
在步骤 A 中切勿默认采用 GitHub Actions。应默认采用:实际掌控该触发任务终态的平台。
参考适配器:通过 Wander 使用 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。
Agent 自动触发 —— 依据任务类别决策,而非“一律使用 GHA”
在触发一个长期运行的远程任务后,应为其附加匹配该任务权威数据源的监控器——除非用户明确拒绝或该任务极短(可忽略)。
若所触发的工作流明确属于GitHub Actions(或完全封装于 Agent 刚刚启动的 GHA 工作流中):
- 若存在
.workflows.yml→ 从中选取工作流及触发时机。 - 若不存在但
.github/workflows/存在 → 识别对应工作流(通过注册表扫描或向用户询问),随后启动监控。 - 使用
watch-workflow-bg.sh—— 默认后台运行,除非用户要求阻塞。 - 约 8 秒后,预览终端输出 / 运行 ID 并报告初始状态。
- 告知用户:“正在 GitHub Actions 上监控
;完成后我会通知你——你可以继续其他工作。” - 在终态明确前:持续检查监控输出或执行
gh run view。切勿过早宣告成功。--json conclusion - 收到结果后:成功 → 执行下一步;失败 → 执行
gh run view(或等效命令)并提出修复建议。--log-failed
若该工作流并非 GHA(纯 EAS CLI、仅平台侧部署等):
- 切勿强行套用
watch-workflow-bg.sh。 - 改用厂商 CLI/API 轮询、项目定制脚本,或与用户约定仪表盘 URL —— 仍尽可能后台运行,并在事后验证终态。
若 .github/workflows/ 不存在:不得自动启动 Wander;请依据上述步骤 A–B 选择其他监控器。
何时使用本技能
- 任何远程异步任务预计耗时> ~30 秒
- 用户希望在“构建 / CI / 部署 / 发布”完成后收到通知
- 用户即将手动刷新某个仪表盘——此时应提供一个结构化的监控方案替代之
- 多步骤流程中,下一步依赖于当前步骤的成败结果
不应使用的情形
- 任务在< ~10 秒内完成(可内联等待)
- 纯本地命令,且能立即返回退出码
- 用户明确要求在聊天中进行同步阻塞式输出
- 无法抵达客观终态(触发逻辑未定义 / 平台未知)——需先澄清
前置条件(GitHub Actions 适配器路径)
ghCLI 已安装并完成身份认证jq已安装- Wander 已下载至本地:
WANDER_HOME(默认为~/code/wander) - macOS 支持通知中心;Linux/无头环境:仅输出模式仍可正常工作
安装(Wander / GHA 适配器)
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'
选择合适的运行模式(GHA 适配器)
| 模式 | 脚本 | 适用场景 |
|---|---|---|
| 后台 | 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 秒。
标准使用模式(GHA)
Git push 后(CI 运行于 GitHub Actions)
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 由 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
边界情况(GHA 适配器)
| 场景 | 行为 |
|---|---|
| 工作流在监控启动前已完成 | 可能被 check_window 捕获;快速发出通知 |
| 约 30 秒后仍未出现运行记录 | Wander 持续等待,随后退出并提供指引 |
| 工作流设置了错误的分支过滤器 | 未发现匹配运行;上报并停止 |
| 极短工作流 | 常通过 check_window 立即捕获 |
| 极长工作流 | 推荐使用分离模式;日志可在终端关闭后保留 |
任务失败时的处理(GHA)
gh run view--log-failed gh run rerun --failed
对于非 GHA 类型任务,请遵守相同元规则:拉取对应平台的首要失败信息源(构建日志、部署日志等)。
WANDER_HOME 解析顺序
$WANDER_HOME环境变量- 当前仓库同级目录:
$(dirname "$REPO_ROOT")/wander - 默认值:
~/code/wander
演进方向:超越 GitHub Actions 的适配器
元协议保持稳定。适配器可替换:
- 当前:Wander = GHA 轮询 + 桌面通知。
- 未来:EAS CLI 监控器、部署 Webhook → 通知桥接器等。
在专用适配器尚未就绪前,优先采用以 CI 为门面或厂商原生轮询——切勿静默假设成功。
参考资料
- Wander README
- EDGE_CASES.md
- COFFEE_BREAK.md
热门AI工具
相关专题
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。
0
2026.10.22
PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.5万人学习
共6课时 | 54.7万人学习
最新文章
