mcpField
B
bedtime-device-guard

bedtime-device-guard

github.com/arthurzakirov生产力1119 次安装2 周前更新
代码仓库

关于 bedtime-device-guard

bedtime-device-guard 通过本地时段限制 Codex 提示提交,并可选安装 macOS 或 Windows 的设备级定时操作。它面向希望在设定时段减少设备使用的用户;Codex 钩子仅适用于加载并信任用户钩子的环境,不能单独阻止其他应用。

主要功能

  1. 01按本地时间窗口拦截 Codex 提示
  2. 02支持配置时区和时段
  3. 03提供安装、验证与卸载脚本
  4. 04可选安装设备级警告与关机计划
  5. 05保留其他钩子配置

适用场景

  1. 01在设定的夜间时段限制 Codex 提示
  2. 02配置设备本地时区的作息窗口
  3. 03检查或更新已安装的限制
  4. 04需要更广泛限制时设置系统定时操作

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/arthurzakirov/agentdesk --skill bedtime-device-guard

安装后在 Claude Code 中输入/bedtime-device-guard确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
codex-hook-contract.md
scripts/
bedtime_guard.py
device_guard.py
install_guard.py
install-device-macos.py
install-device-macos.sh
install-device-windows.ps1
install-macos.sh
install-windows.ps1
tests/
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 中合并一个受管理的处理程序,而不会替换无关的键、事件、组或处理程序。

安装后:

  1. 如有需要,使用 codex features enable hooks 启用 Codex 钩子。
  2. 启动 Codex,并在出现提示时检查并信任新钩子,或使用 /hooks。
  3. 重启已打开的 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。

评论

支持 Markdown