WorkBuddy 通道守护(远程自愈 · 连接器无关)
真实场景(请先读这段)
WorkBuddy 大部分时候都活着。你真正会撞上的麻烦是:
> 某个连接器通道卡死了(token 过期 / 连接器抽风),任务怎么都跑不通;
> 唯一的修复是重启 WorkBuddy 让它重连所有通道;
> 但你人不在电脑前,没法手动点重启。
本 skill 干的事,就是替你在外面把 WorkBuddy 重启掉,把通道重建起来——你不碰电脑也能恢复。
它不认识任何一个具体连接器(IMA / 飞书 / GitHub 都不硬编码)。
因为重启 WorkBuddy = 自动重连所有连接器通道,所以不需要去探"哪个通道挂了",只要保证 WB 能重启就行。
三个机制(按真实价值排序)
- 安全时段强重启(主用):你挑一个绝对不干活的时间点(如 04:00),每天自动重启一次 WB,无人在场也重建通道。专治"WB 活着但某通道卡死、你又不在"。
- 按需重启(你主动):你确认现在安全、或通道已卡死非重启不可时,手动跑一下立刻重建。
- 进程看门狗(兜底):WB 万一真全死了,外部任务把它拉回来。平时几乎不触发,是便宜的保险。
> ⚠️ 鸡生蛋提醒:如果所有通道都死了,你远程也够不着 WorkBuddy,就没法远程触发"按需重启"。这种极端情况只能靠机制 1(定时)或机制 3(WB 真死时)自治恢复。所以机制 1(安全时段强重启)才是"人不在电脑前"的刚需。
安装
机制 1:安全时段强重启(推荐装这个)
schtasks /Create /TN "WorkBuddyChannelGuard-SafeRestart" /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File \"%USERPROFILE%\.workbuddy\skills\workbuddy-keepalive\scripts\wb_keepalive.ps1\" -Force" /SC DAILY /ST 04:00 /IT /F
> ⚠️ 必须带 /IT(交互式):这条任务要在你锁屏/睡眠时拉起 GUI 版 WorkBuddy,只有"以登录用户交互式运行"才能附着桌面会话。漏掉 /IT,任务即使跑成功,Start-Process 也拉不起界面,会变成"杀了 WB 却启不来"——这正是已知最坑的 bug。把 04:00 换成你从不用电脑的时刻。
机制 2:按需重启
任何时候想立刻重启重建通道,直接跑:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%USERPROFILE%\.workbuddy\skills\workbuddy-keepalive\scripts\wb_keepalive.ps1" -Force
> ⚠️ -Force 会先结束 WorkBuddy 再启动,会打断正在跑的任务。只在你确认现在安全、或通道已卡死非重启不可时用。
机制 3:进程看门狗(兜底,可选)
schtasks /Create /TN "WorkBuddyChannelGuard" /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File \"%USERPROFILE%\.workbuddy\skills\workbuddy-keepalive\scripts\wb_keepalive.ps1\"" /SC MINUTE /MO 10 /IT /F
> ⚠️ 同样要带 /IT(交互式),理由同上——看门狗也得能附着桌面会话才能拉起 GUI。
每 10 分钟跑一次 liveness:WB 不在才启动,在跑就不动,绝不打扰你。
卸载(从系统里去除看门狗)
不想要了,或想先试一阵再决定,直接跑卸载脚本:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%USERPROFILE%\.workbuddy\skills\workbuddy-keepalive\scripts\wb_uninstall.ps1"
它会删除上面注册的两个计划任务,并清掉 status 文件夹。任务不存在也不报错。
看状态
打开 scripts/status/wb_channel_status.json:
{
"timestamp": "2026-08-24 15:30:00",
"wb_before": true,
"wb_after": true,
"action": "restart",
"mode": "force",
"note": "force restart done; all connector channels rebuild on launch"
}
action: restart且mode: force→ 刚刚替你重启过,通道已重建。- 想接飞书/其他通知:在
wb_keepalive.ps1的Write-Status后加一段调用(本 skill 不内置,保持连接器无关)。
已知边界(如实说明)
- 只保证"WorkBuddy 能重启",不直接探某个连接器通断(那样会写窄、绑定具体通道)。
- 强重启(
-Force)会打断进行中的任务,务必放在安全时段或你主动确认时。 - 若 WB 活着但某通道卡死,只有机制 1/2 能重建,liveness 看门狗(机制 3)不会动它。
- exe 探测覆盖常见安装路径;极特殊安装位置需在
wb_keepalive.ps1的CandidatePaths补一行。 - 定时任务必须交互式运行(加
/IT):无论是机制 1(SafeRestart)还是机制 3(看门狗),schtasks /Create都必须带/IT。WorkBuddy 是 GUI 应用,计划任务若不以"登录用户交互式"运行,在锁屏/无人时Start-Process拉不起界面 → WB 被强重启杀掉后启不来,手机连不上。这是本 skill 最容易踩的坑,漏/IT即 bug。 - 强重启(
-Force)已加保险:脚本改为"先确认 exe 存在再杀",且启动带 3 次重试(每次轮询 30 秒)。即便如此,若任务未交互式运行导致 GUI 拉不起来,status 文件会记ERROR: killed but FAILED to restart,便于排查,而不是静默死着。