关于 install-watchdog
install-watchdog 是一项技能,可安装基于系统调度器的常驻监控程序,并在满足条件时重启 egregore 会话,适用于需要自动重启的 macOS 或 Linux 项目。
主要功能
- 01使用 launchd 或 systemd 安装
- 02检查运行中的会话与冷却状态
- 03检查清单中的活跃任务
- 04条件满足时启动会话
- 05验证调度器状态与日志位置
适用场景
- 01在 egregore init 后启用自动重启
- 02在新机器上配置 egregore
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ athola/ claude-night-market --skill install-watchdog安装后在 Claude Code 中输入/install-watchdog确认已加载。
详细介绍
安装 Watchdog
概述
安装一个持久运行的守护进程,用于监控 egregore 进程,并在需要时重新启动它。 守护进程使用操作系统原生调度器(macOS 上为 launchd, Linux 上为 systemd),每 5 分钟运行一次 watchdog 脚本。
watchdog 脚本会检查:
- 是否已有 egregore 会话在运行。
- 预算是否处于冷却状态。
- manifest 中是否有活动工作项。
如果满足所有条件,它会启动一个新的 egregore 会话。
适用场景
- 初始化 egregore 项目(
egregore init) 后,需要自动重新启动时。 - 在新机器上设置 egregore 时。
不适用场景
- 在 CI/CD 运行器上(请直接使用 orchestrator)。
- 需要手动控制会话启动时。
安装步骤
1. 检测操作系统
OS=$(uname -s)
2. 运行相应的安装程序
macOS(launchd):
bash plugins/egregore/scripts/install_launchd.sh
此脚本会在
~/Library/LaunchAgents/com.egregore.watchdog.plist
创建一个 plist,每 300 秒(5 分钟)运行一次 watchdog 脚本。
Linux(systemd):
bash plugins/egregore/scripts/install_systemd.sh
此脚本会在
~/.config/systemd/user/ 创建一个 systemd 定时器和服务单元,每 5 分钟触发一次。
3. 验证安装
macOS:
launchctl list | grep egregore
预期输出:包含
com.egregore.watchdog 且带有 PID 或 - 状态的一行。
Linux:
systemctl --user status egregore-watchdog.timer
预期输出:状态为 active (waiting)。
4. 向用户确认
报告安装结果、运行间隔和 日志文件位置:
- macOS:
~/.egregore/watchdog.log - Linux:
journalctl --user -u egregore-watchdog
卸载命令
如需移除 watchdog,请运行:
Skill(egregore:uninstall-watchdog)
或者直接通过命令
/egregore:uninstall-watchdog 调用卸载技能。
故障排除
- plist 权限被拒绝:确保脚本以当前用户身份运行, 而不是以 root 身份运行。
- systemd 用户会话不可用:运行
loginctl enable-linger $USER,以便在没有活动登录会话时启用用户服务。 - Watchdog 未触发:检查日志输出,并确认调度器已加载(
launchctl list或systemctl --user list-timers)。
完成标准
- 在 macOS 上:安装脚本运行完成后,
~/Library/LaunchAgents/com.egregore.watchdog.plist文件存在 - 在 Linux 上:安装脚本运行完成后,
~/.config/systemd/user/egregore-watchdog.timer文件存在 - 验证命令确认守护进程已加载:
launchctl list | grep egregore返回一行(macOS),或systemctl --user status egregore-watchdog.timer显示active (waiting)(Linux) - 安装后向用户报告运行间隔(300 秒 / 5 分钟)和日志文件路径
- 如果出现
permission denied,需报告错误并提供解决步骤(以当前用户身份运行,而不是以 root 身份运行)
评论
支持 Markdown