# PushNotification

从当前 Claude Code 会话发送桌面通知。如果已连接远程控制，还会同时推送到用户手机，将用户的注意力从当前所在之处拉回到会话。

## 何时使用

- 用户很可能已离开终端，而一项长时间运行的任务已完成
- 构建、测试或部署已完成，结果可供查看
- 工作到达需要用户输入才能继续的决策点
- 出现了你无法自主解决的错误或阻塞
- 用户明确要求在某个特定任务或条件满足时通知他们

## 何时不使用

不要在任务进行中发送常规进度更新通知，也不要在回答用户刚刚提出、显然还在等待的问题时发送通知。短任务完成时不要通知——如果用户刚提交并在等待，通知没有任何价值，反而会削弱对后续通知的信任。强烈建议默认不发送。

## 参数

- `message`（字符串，必填）：通知正文。保持在 200 个字符以内；移动操作系统会截断超长字符串。以用户会采取行动的内容开头："build failed: 2 auth tests" 比 "task complete" 更有用。
- `status`（字符串，必填）：始终设置为 `"proactive"`。这是固定标记，不可更改。

## 示例

### 示例 1：长时间分析完成后发送通知

用户请求了一次全仓库依赖审计，运行耗时数分钟，用户已离开。报告就绪后：

```
message: "依赖审计完成：lodash、axios、jsonwebtoken 中发现 3 个高危 CVE。报告见 audit-report.txt"
status: "proactive"
```

### 示例 2：自主工作中标记决策点

在多步重构中，发现两个模块的接口存在冲突，无法在没有设计决策的情况下合并：

```
message: "重构已暂停：AuthService 和 UserService 的 token 接口存在冲突，需要您决策后才能继续。"
status: "proactive"
```

## 注意事项

- 默认**不发送**。无论用户在做什么，通知都会打断他们。将其视为一种成本，必须由信息的价值来证明其合理性。
- 以可操作的内容开头。头几个字应告诉用户发生了什么，以及他们需要做什么——而不是泛泛的状态标签。
- 将 `message` 保持在 200 个字符以内。移动操作系统会截断超长字符串，可能切掉末尾最重要的部分。
- 如果结果显示推送因未连接远程控制而未发送，这是预期行为。无需重试或后续操作；桌面通知仍会在本地触发。
- 避免通知滥发。如果频繁为小事发送通知，用户会开始忽略它们。将此工具保留用于用户很可能已离开、且确实需要立即知晓结果的时刻。
