Community编程与开发github.com

hwipit/plugin

显示或更改项目的 Hwip 推送通知设置:静默(默认)、正常、响亮、静音、取消静音;--global 设置全局默认值。`approve on|off` 打开或关闭难以撤销命令的手机审批门。

plugin 是什么?

hwipit/plugin 是用于 Hwip 推送系统的 AI 助手插件技能,允许开发者通过简单参数控制项目或全局的推送通知级别(quiet/normal/loud)以及静音(mute/unmute)状态,同时提供审批门(approve on/off)功能,在执行危险操作(如 rm -rf、强制推送、生产环境部署)前要求用户确认。该技能通过 bash 脚本与 Hwip CLI 交互,支持 Claude Code、Cursor、Codex 等 AI 编码工具集成,项目级别设置会覆盖全局默认值,且状态与项目目录绑定(跨会话共享)。静音状态会覆盖所有其他推送级别,并禁用审批门;远离终端时采用推送到手机的机制,自动模式(/hwip-auto)会话会消耗预算;适合团队协作、自动化部署或远程操作场景,能有效降低误操作风险。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hwipit/plugin/tree/HEAD/skills/hwip-mode

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

严格按以下方式运行——参数放在 heredoc 的第二行,永远不要放在命令本身;一行内,仅允许使用单词 quiet normal loud mute unmute --global approve on off:

bash "${CLAUDE_PLUGIN_ROOT}/scripts/hwip-mode.sh" <<'HWIP_MODE_INPUT'
${CLAUDE_PROJECT_DIR}
$ARGUMENTS
HWIP_MODE_INPUT

退出码 2 表示参数错误——向用户显示它打印的使用说明行。否则用自己的话报告状态行:

  • NOTIFICATIONS: muted —— 在此项目中,Stop 和 Ask hooks 处于静默状态;hwip_* 工具仍然可用,但除非用户主动请求,否则不会被调用。静音覆盖所有其他设置。
  • PUSH MODE: quiet —— 仅当用户在终端时推送高优先级通知(阻塞、high Push Signal),并在用户离开一定时间(HWIP_AWAY_SEC,默认 300 秒)或此会话的 tmux 窗格不在屏幕上时发送一次完成推送。这是默认配置。
  • PUSH MODE: normal —— 每次执行实际工作时推送,只读操作时不推送;Push Signal 标记决定边界情况。
  • PUSH MODE: loud —— 每次操作都推送,覆盖 skip 设置。
  • 括号内说明设置的来源:this project(项目级别)、global default(使用 --global 设置,没有单独设置的项目继承此值)或内置默认值。项目级别设置始终覆盖全局设置。
  • APPROVAL GATE: on|off —— 是否对难以撤销的 Bash 命令(如 rm -rf、强制推送、生产环境部署、破坏性 SQL)在本项目中要求审批。在终端时,Claude Code 自身的权限提示会询问;离开终端、处于 REMOTE 模式或无法读取用户存在状态时,用户的手机会处理。on, but inactive while muted —— 静音项目无法询问任何人,因此不会阻止任何操作。
  • SCOPE: … —— 设置(包括推送级别、静音、审批门和自动模式)属于项目目录,而不是会话:同一目录中的第二个 Claude 会话共享这些设置。当用户更改设置时,请告知这一点。
  • AUTO MODE: … —— 正在运行一个 /hwip-auto 会话,剩余预算为指定值。off (an expired … session left its state behind — cleared) 表示上一个会话崩溃。
  • LAST PUSH: … —— CLI 记录的上一次失败推送(hwip notify 写入成功推送会删除此记录)。Hooks 会隐藏 notify 的错误,因此此行用于区分“静默,无内容可发送”和“每次推送都失败”。向用户解释失败原因及修复方法(例如密钥被拒绝 → hwip login,未登录应用 → 在 iPhone 或 Android 手机上登录 Hwip 应用);更多信息请运行 hwip verify。
  • Hwip: <device> changed its encryption key — … —— 不是失败:用户的某个设备现在列出的加密密钥与此机器之前固定的密钥不同,且新密钥已被信任。仅显示一次,然后清除。向用户解释此情况——可能是重新安装应用或更换手机;如果不是,使用 hwip trust 查看指纹,并与应用中的指纹对比。

问题(hwip_ask,AskUserQuestion 的镜像)在除静音外的所有推送级别下都会推送。

问题携带的上下文(会话的脱敏 git diff 和最后几行终端输出)不在此级别设置范围内。如果用户要求停止发送上下文,请告知他们使用 hwip ask-context off(当前项目)或 hwip ask-context off --global(所有项目);hwip ask-context 可显示当前生效的设置。

如果输出以 === Hwip rules — replace the Hwip rules from session start === 代码块结尾,则表示状态已更改,SessionStart hook 提供给此会话的规则已过时:在会话剩余时间内(包括压缩后),请遵循此代码块中的规则。Session rules unchanged 表示更改未影响规则(例如 normal ↔ loud);保留现有规则。approve 永远不会更改规则。could not refresh 表示更改已应用但规则未更新——告知用户新会话会生效。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能