关于 bedtime-device-guard
bedtime-device-guard 通过本地时段限制 Codex 提示提交,并可选安装 macOS 或 Windows 的设备级定时操作。它面向希望在设定时段减少设备使用的用户;Codex 钩子仅适用于加载并信任用户钩子的环境,不能单独阻止其他应用。
主要功能
- 01按本地时间窗口拦截 Codex 提示
- 02支持配置时区和时段
- 03提供安装、验证与卸载脚本
- 04可选安装设备级警告与关机计划
- 05保留其他钩子配置
适用场景
- 01在设定的夜间时段限制 Codex 提示
- 02配置设备本地时区的作息窗口
- 03检查或更新已安装的限制
- 04需要更广泛限制时设置系统定时操作
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ arthurzakirov/ agentdesk --skill bedtime-device-guard安装后在 Claude Code 中输入/bedtime-device-guard确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/codex-hook-contract.mdscripts/bedtime_guard.pydevice_guard.pyinstall_guard.pyinstall-device-macos.pyinstall-device-macos.shinstall-device-windows.ps1install-macos.shinstall-windows.ps1tests/test_bedtime_guard.py详细介绍
睡前设备防护
使用捆绑的 UserPromptSubmit 钩子,在配置的本地时间段内拒绝 Codex 提示词。该钩子在本地读取时钟,在允许时段内不输出任何内容,因此不会增加模型上下文或产生令牌用量。
此防护仅适用于加载并信任用户钩子的 Codex 使用场景。请将其视为一层防护,并配合操作系统限制、定时关机、路由器规则和手机控制一起使用。不要声称它能阻止其他应用运行,也不要声称它能阻止有决心的管理员将其移除。
设备级计划
可选的原生计划覆盖范围比 Codex 钩子更广,也可能丢弃未保存的工作。安装前,请确认用户希望强制关机。每项计划操作都会在执行前重新检查当前本地时间段,因此,如果任务因睡眠或合并调度而延迟执行,在配置的结束时间之后就不会执行任何操作。
macOS 会安装三个用户级 LaunchAgents:开始前发出警告、开始时请求关机,以及如果 Mac 仍在运行则在两分钟后强制退出图形界面。使用以下命令安装或管理:
bash skills/bedtime-device-guard/scripts/install-device-macos.sh install \
--start HH:MM --end HH:MM --timezone local --warning-minutes 10
bash skills/bedtime-device-guard/scripts/install-device-macos.sh verify
bash skills/bedtime-device-guard/scripts/install-device-macos.sh uninstall
关机请求使用 macOS System Events,可能需要用户批准一次自动化访问权限。退出登录的备用方案有意采用强制方式,不受该批准影响。
Windows 会安装两个面向当前用户的原生计划任务:一个用于警告,另一个执行 shutdown.exe /s /f /t 0。在 PowerShell 中运行:
& skills/bedtime-device-guard/scripts/install-device-windows.ps1 install `
-Start HH:mm -End HH:mm -Timezone local -WarningMinutes 10
& skills/bedtime-device-guard/scripts/install-device-windows.ps1 verify
& skills/bedtime-device-guard/scripts/install-device-windows.ps1 uninstall
请将紧急通信保留在另一个受到独立限制的设备上;这些计划有意不提供电脑上的绕过方式。
安装
安装时选择用户的计划和时区。切勿将个人信息添加到此仓库中。
在 macOS 或 Linux 上:
bash skills/bedtime-device-guard/scripts/install-macos.sh \
--start HH:MM --end HH:MM --timezone local
在 Windows PowerShell 上:
& skills/bedtime-device-guard/scripts/install-windows.ps1 `
--start HH:MM --end HH:MM --timezone local
local 使用电脑配置的时区,且无需依赖外部时区数据。只要 Python 的 zoneinfo 数据库包含对应时区,也接受诸如 Etc/UTC 这样的 IANA 时区。安装程序仅在用户的 Codex 主目录下保存计划,将钩子复制到该目录,并在 hooks.json 中合并一个受管理的处理程序,而不会替换无关的键、事件、组或处理程序。
安装后:
- 如有需要,使用
codex features enable hooks启用 Codex 钩子。 - 启动 Codex,并在出现提示时检查并信任新钩子,或使用
/hooks。 - 重启已打开的 Codex 会话,使其重新加载钩子配置。
Codex 不会允许安装程序静默批准自身的可执行钩子。如果钩子已禁用或未受信任,此防护层就不会运行。
验证
运行适用于当前机器的只读验证程序:
python3 skills/bedtime-device-guard/scripts/install_guard.py verify
在 Windows 上,将 python3 替换为 py -3。
若要无需等到睡觉时间即可检查行为,请使用 --now 和本地 ISO 时间戳调用已安装的钩子。仅用于测试的时间覆盖不会更改任何配置:
python3 "$HOME/.codex/bedtime-device-guard/bedtime_guard.py" \
--config "$HOME/.codex/bedtime-device-guard/config.json" \
--now 2030-01-01T23:00:00
被拦截的检查会输出精简的 JSON 判定结果。允许通过的检查不输出任何内容。
更新计划
使用新值再次运行安装程序。安装具有幂等性:它会刷新受管理的脚本和配置,然后仅替换此技能所管理的钩子处理程序。
卸载
在任一平台上,直接使用通用安装程序:
python3 skills/bedtime-device-guard/scripts/install_guard.py uninstall
在 Windows 上,将 python3 替换为 py -3。卸载时,仅移除受管理的处理程序及其已清空的匹配器组,保留所有其他钩子配置,并移除由此技能安装的目录。它不会全局禁用 Codex 钩子。
安全性和限制
- 修改现有的
hooks.json前先备份,并使用原子写入。 - 遇到格式错误的时间或开始时间与结束时间相同的情况时,应拒绝处理,而不是自行猜测。
- 以直接检查时钟为准。不要用可能因休眠、重启或任务遗漏而过时的计划标记替代它。
- 不要在钩子中加入基于短语的绕过机制。仍可通过编辑本地配置或在终端中卸载来恢复。
- 当前版本的 Codex 在钩子无法启动、崩溃、超时或不受信任时会默认放行。应将更强的设备级控制独立于此钩子。
更改钩子输出或 hooks.json 结构时,请阅读 references/codex-hook-contract.md。