agentwake 1.0.1 → 1.0.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.env.example CHANGED
@@ -1,18 +1,19 @@
1
1
  AGENTWAKE_HOST=0.0.0.0
2
2
  AGENTWAKE_PORT=3199
3
- AGENTWAKE_HTTPS_ENABLED=1
3
+ AGENTWAKE_HTTPS_ENABLED=0
4
4
  AGENTWAKE_HTTPS_CERT_PATH=certs/dev-cert.pem
5
5
  AGENTWAKE_HTTPS_KEY_PATH=certs/dev-key.pem
6
6
  AGENTWAKE_CURSOR_HOOK_PATH=/hooks/cursor
7
7
  AGENTWAKE_CLAUDE_HOOK_PATH=/hooks/claude
8
8
  AGENTWAKE_QODER_LOG_PATH=/path/to/qoder.log
9
9
  AGENTWAKE_WS_PATH=/ws
10
+ AGENTWAKE_DESKTOP_ENABLED=1
11
+ AGENTWAKE_PWA_ENABLED=0
10
12
  AGENTWAKE_DEDUPE_WINDOW_MS=10000
11
13
  AGENTWAKE_RATE_LIMIT_WINDOW_MS=10000
12
14
  AGENTWAKE_RATE_LIMIT_MAX_EVENTS=40
13
15
  AGENTWAKE_ALLOWED_HOOK_IPS=
14
16
  AGENTWAKE_VAPID_SUBJECT=mailto:agentwake@example.com
15
- AGENTWAKE_DESKTOP_MODE=notification
16
17
  AGENTWAKE_CURSOR_APPROVAL_MODE=cursor-ask
17
18
  AGENTWAKE_CURSOR_ENFORCE_ASK=0
18
19
  # AGENTWAKE_VAPID_PUBLIC_KEY=
package/README.md CHANGED
@@ -1,123 +1,124 @@
1
1
  # AgentWake
2
2
 
3
- 跨编辑器的 AI 编程通知网关。支持 Cursor / Claude Code / Qoder,当 AI 任务完成、异常终止或等待授权时,实时推送通知到桌面、手机和 IM 群。
3
+ English | [简体中文](README.zh-CN.md)
4
4
 
5
- ## 效果预览
5
+ A cross-editor AI programming notification gateway. Supports Cursor / Claude Code / Qoder. Real-time push notifications to desktop, mobile, and IM groups when AI tasks are completed, abnormally terminated, or waiting for authorization.
6
+
7
+ ## Preview
6
8
 
7
9
  <p align="center">
8
- <img src="docs/screenshots/web.jpg" width="48%" alt="Web 界面" />
9
- <img src="docs/screenshots/mobile_notify.jpg" width="48%" alt="手机通知" />
10
+ <img src="docs/screenshots/web.jpg" width="48%" alt="Web Interface" />
11
+ <img src="docs/screenshots/mobile_notify.jpg" width="48%" alt="Mobile Notification" />
10
12
  </p>
11
13
 
12
14
  <p align="center">
13
- <img src="docs/screenshots/cursor.png" width="48%" alt="Cursor 通知" />
14
- <img src="docs/screenshots/qoder.png" width="48%" alt="Qoder 通知" />
15
+ <img src="docs/screenshots/cursor.png" width="48%" alt="Cursor Notification" />
16
+ <img src="docs/screenshots/qoder.png" width="48%" alt="Qoder Notification" />
15
17
  </p>
16
18
 
17
19
  ---
18
20
 
19
- ## 核心特性
21
+ ## Core Features
20
22
 
21
- - **多编辑器支持** — Cursor HookClaude Code HookQoder 日志监听
22
- - **多通知渠道**桌面系统通知、PWA 网页推送、钉钉、飞书、企业微信
23
- - **Claude Code 深度集成**支持 Stop / Notification / StopFailure / SessionEnd 等全部 Hook 事件,可自定义每个事件的通知标题
24
- - **移动端实时推送**内置 PWA Web AppHTTPS + WebSocket 毫秒级推送,支持扫码连接
25
- - **智能防打扰**事件去重 + 速率限流,避免消息轰炸
26
- - **交互式配置** — `agentwake setup` 一步步引导完成全部配置
23
+ - **Multi-editor Support** — Cursor Hook, Claude Code Hook, Qoder log listening
24
+ - **Multi-channel Notifications** Desktop system notifications, PWA web push, DingTalk, Feishu, WeCom
25
+ - **Claude Code Deep Integration** Supports all Hook events like Stop / Notification / StopFailure / SessionEnd, customizable notification titles for each event
26
+ - **Mobile Real-time Push** Built-in PWA Web App, HTTPS + WebSocket millisecond push, supports QR code connection
27
+ - **Smart Anti-disturbance** Event deduplication + rate limiting to prevent message bombing
28
+ - **Interactive Configuration** — `agentwake setup` guides you through all configurations step by step
27
29
 
28
30
  ---
29
31
 
30
- ## 快速开始
32
+ ## Quick Start
31
33
 
32
- ### 环境要求
34
+ ### Prerequisites
33
35
 
34
36
  - Node.js >= 18
35
- - [mkcert](https://github.com/FiloSottile/mkcert)(生成本地 HTTPS 证书,移动端推送必需)
37
+ - [mkcert](https://github.com/FiloSottile/mkcert) (Only required when enabling PWA push)
36
38
 
37
- ### 安装
39
+ ### Installation
38
40
 
39
41
  ```bash
40
42
  npm i -g agentwake
41
43
  ```
42
44
 
43
- ### 方式一:交互式引导(推荐)
45
+ ### Method 1: Interactive Guide (Recommended)
44
46
 
45
47
  ```bash
46
- agentwake init # 生成 HTTPS 证书到 ~/.agentwake/certs/
47
- agentwake setup # 交互式配置向导
48
+ agentwake setup # Interactive configuration wizard
48
49
  ```
49
50
 
50
- `setup` 会引导你完成:
51
- 1. 选择 AI 工具(Claude Code / Cursor / 全部)
52
- 2. 选择监听的事件类型
53
- 3. 自定义每个事件的通知标题(可选)
54
- 4. 选择通知渠道(钉钉 / 飞书 / 企业微信)
55
- 5. 输入 Webhook 地址和密钥
56
- 6. 自动安装 Claude Code Hooks 到 `~/.claude/settings.json`
57
- 7. 启动服务
51
+ `setup` will guide you through:
52
+ 1. Select AI tools (Claude Code / Cursor / All)
53
+ 2. Select event types to listen to
54
+ 3. Customize notification titles for each event (optional)
55
+ 4. Select notification channels (DingTalk / Feishu / WeCom / PWA / Desktop)
56
+ 5. Enter Webhook URLs and secrets
57
+ 6. Automatically install editor hooks:
58
+ - Claude Code Hooks to `~/.claude/settings.json`
59
+ - Cursor Hooks to `~/.cursor/hooks.json` (relay script at `~/.agentwake/hooks/cursor-hook.sh`)
60
+ 7. If PWA is enabled, generate HTTPS certificates automatically; otherwise default to HTTP
61
+ 8. Start the service
58
62
 
59
- ### 方式二:手动配置
63
+ ### Method 2: Manual Configuration
60
64
 
61
65
  ```bash
62
- agentwake init # 生成 ~/.agentwake/.env HTTPS 证书
63
- # 编辑 ~/.agentwake/.env 填入配置
66
+ agentwake setup # Generate ~/.agentwake/.env and complete configuration
67
+ # Edit ~/.agentwake/.env to fill in configurations
64
68
  agentwake start
65
69
  ```
66
70
 
67
- 所有数据存放在 `~/.agentwake/` 目录下,无需手动创建工作目录。
71
+ All data is stored in the `~/.agentwake/` directory, no need to create a working directory manually.
68
72
 
69
- ### 方式三:从源码启动
73
+ ### Method 3: Start from Source
70
74
 
71
75
  ```bash
72
76
  git clone https://github.com/tjdxwwj/agentwake.git
73
77
  cd agentwake
74
78
  npm install
75
79
 
76
- # 初始化(生成 HTTPS 证书和 .env)
77
- npm run init
78
-
79
- # 交互式配置
80
+ # Interactive setup
80
81
  npm run setup
81
82
 
82
- # 启动开发服务器
83
+ # Start development server
83
84
  npm run dev
84
85
  ```
85
86
 
86
- 启动后服务运行在 `https://localhost:3199`。
87
+ After starting, the service runs at `http://localhost:3199` by default, or `https://localhost:3199` when PWA is enabled.
87
88
 
88
89
  ---
89
90
 
90
- ## 通知渠道
91
+ ## Notification Channels
91
92
 
92
- | 渠道 | 配置方式 | 说明 |
93
+ | Channel | Configuration | Description |
93
94
  |------|---------|------|
94
- | 桌面系统通知 | 内置,无需配置 | macOS / Windows / Linux |
95
- | PWA 网页推送 | 内置,手机浏览器打开服务地址 | HTTPS,支持 Service Worker 系统通知 |
96
- | 钉钉 | `AGENTWAKE_DINGTALK_WEBHOOK` | 群机器人 Webhook,支持签名校验 |
97
- | 飞书 | `AGENTWAKE_FEISHU_WEBHOOK` | 群机器人 Webhook,支持签名校验 |
98
- | 企业微信 | `AGENTWAKE_WECOM_WEBHOOK` | 群机器人 Webhook,安全性由 URL Key 保证 |
95
+ | Desktop Notification | Built-in, no config needed | macOS / Windows / Linux |
96
+ | PWA Web Push | Built-in, open service URL in mobile browser | Requires HTTPS, supports Service Worker system notifications |
97
+ | DingTalk | `AGENTWAKE_DINGTALK_WEBHOOK` | Group bot Webhook, supports signature verification |
98
+ | Feishu | `AGENTWAKE_FEISHU_WEBHOOK` | Group bot Webhook, supports signature verification |
99
+ | WeCom | `AGENTWAKE_WECOM_WEBHOOK` | Group bot Webhook, security guaranteed by URL Key |
99
100
 
100
- ### 钉钉配置
101
+ ### DingTalk Configuration
101
102
 
102
- 在钉钉群 -> 群设置 -> 智能群助手 -> 添加机器人 -> 自定义 Webhook,复制 Webhook 地址。
103
+ In DingTalk Group -> Group Settings -> Smart Group Assistant -> Add Bot -> Custom Webhook, copy the Webhook URL.
103
104
 
104
105
  ```env
105
106
  AGENTWAKE_DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=xxx
106
- AGENTWAKE_DINGTALK_SECRET=SECxxx # 可选,签名密钥
107
+ AGENTWAKE_DINGTALK_SECRET=SECxxx # Optional, signature secret
107
108
  ```
108
109
 
109
- ### 飞书配置
110
+ ### Feishu Configuration
110
111
 
111
- 在飞书群 -> 设置 -> 群机器人 -> 添加自定义机器人,复制 Webhook 地址。
112
+ In Feishu Group -> Settings -> Bots -> Add Custom Bot, copy the Webhook URL.
112
113
 
113
114
  ```env
114
115
  AGENTWAKE_FEISHU_WEBHOOK=https://open.feishu.cn/open-apis/bot/v2/hook/xxx
115
- AGENTWAKE_FEISHU_SECRET=xxx # 可选,签名校验密钥
116
+ AGENTWAKE_FEISHU_SECRET=xxx # Optional, signature verification secret
116
117
  ```
117
118
 
118
- ### 企业微信配置
119
+ ### WeCom Configuration
119
120
 
120
- 在企业微信群 -> 群机器人 -> 添加群机器人,复制 Webhook 地址。
121
+ In WeCom Group -> Group Bots -> Add Group Bot, copy the Webhook URL.
121
122
 
122
123
  ```env
123
124
  AGENTWAKE_WECOM_WEBHOOK=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx
@@ -125,122 +126,124 @@ AGENTWAKE_WECOM_WEBHOOK=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx
125
126
 
126
127
  ---
127
128
 
128
- ## 编辑器接入
129
+ ## Editor Integration
129
130
 
130
131
  ### Claude Code
131
132
 
132
- 运行 `agentwake setup` 会自动完成以下操作:
133
- - 生成 Hook 转发脚本到 `~/.agentwake/hooks/claude-hook-relay.sh`
134
- - 写入 Hook 配置到 `~/.claude/settings.json`
133
+ Running `agentwake setup` will automatically:
134
+ - Generate Hook relay script to `~/.agentwake/hooks/claude-hook-relay.sh`
135
+ - Write Hook configuration to `~/.claude/settings.json`
135
136
 
136
- 支持的 Hook 事件:
137
+ Supported Hook events:
137
138
 
138
- | 事件 | 说明 | 默认启用 |
139
+ | Event | Description | Enabled by Default |
139
140
  |------|------|---------|
140
- | Notification | 需要用户注意 | |
141
- | Stop | 任务完成 | |
142
- | StopFailure | 任务异常终止 | |
143
- | SessionEnd | 会话结束 | |
144
- | SessionStart | 会话开始 | |
145
- | PreToolUse | 工具调用前 | |
146
- | PostToolUse | 工具调用后 | |
141
+ | Notification | Requires user attention | Yes |
142
+ | Stop | Task completed | Yes |
143
+ | StopFailure | Task terminated abnormally | Yes |
144
+ | SessionEnd | Session ended | Yes |
145
+ | SessionStart | Session started | No |
146
+ | PreToolUse | Before tool use | No |
147
+ | PostToolUse | After tool use | No |
147
148
 
148
149
  ### Cursor
149
150
 
150
- 1. 在项目中执行 `agentwake init`
151
- 2. 保持 `agentwake start` 运行
152
- 3. Cursor 终端触发授权等待时自动通知
151
+ Running `agentwake setup` will automatically:
152
+ - Generate Cursor relay script to `~/.agentwake/hooks/cursor-hook.sh`
153
+ - Write `beforeShellExecution` / `afterShellExecution` Hook commands to `~/.cursor/hooks.json`
154
+
155
+ Then keep `agentwake start` running to receive Cursor approval/lifecycle notifications.
153
156
 
154
157
  ### Qoder
155
158
 
156
- 自动发现日志目录,或手动指定:
159
+ Automatically discover log directory, or specify manually:
157
160
 
158
161
  ```bash
159
- AGENTWAKE_QODER_LOG_PATH=”/path/to/agent.log agentwake start
162
+ AGENTWAKE_QODER_LOG_PATH="/path/to/agent.log" agentwake start
160
163
  ```
161
164
 
162
165
  ---
163
166
 
164
- ## 自定义通知标题
167
+ ## Custom Notification Titles
165
168
 
166
- 通过 `agentwake setup` 交互式设置,或直接在 `.env` 中配置:
169
+ Set interactively via `agentwake setup`, or configure directly in `.env`:
167
170
 
168
171
  ```env
169
- AGENTWAKE_CLAUDE_TITLE_STOP=AI搞定了
170
- AGENTWAKE_CLAUDE_TITLE_STOP_FAILURE=AI挂了
171
- AGENTWAKE_CLAUDE_TITLE_NOTIFICATION=AI喊你看一眼
172
- AGENTWAKE_CLAUDE_TITLE_SESSION_END=会话结束了
172
+ AGENTWAKE_CLAUDE_TITLE_STOP=AI Done
173
+ AGENTWAKE_CLAUDE_TITLE_STOP_FAILURE=AI Failed
174
+ AGENTWAKE_CLAUDE_TITLE_NOTIFICATION=AI Needs Attention
175
+ AGENTWAKE_CLAUDE_TITLE_SESSION_END=Session Ended
173
176
  ```
174
177
 
175
- 未配置的事件使用默认标题。
178
+ Events without configured titles will use default titles.
176
179
 
177
180
  ---
178
181
 
179
- ## 移动端 PWA 设置
182
+ ## Mobile PWA Setup
180
183
 
181
- 手机需要信任本地 HTTPS 证书才能接收 Service Worker 系统通知。
184
+ Your phone needs to trust the local HTTPS certificate to receive Service Worker system notifications.
182
185
 
183
- 1. 获取根证书路径:`mkcert -CAROOT`,找到 `rootCA.pem`
184
- 2. 安装到手机:
185
- - **iOS** — 发送到手机安装描述文件,然后在 设置 > 通用 > 关于本机 > 证书信任设置 中启用完全信任
186
- - **Android** — 在安全设置中安装 CA 证书(可能需要改后缀为 `.crt`)
187
- 3. 手机浏览器打开 `https://<局域网IP>:3199`,确认 HTTPS 连接安全后允许通知权限
186
+ 1. Get root certificate path: run `mkcert -CAROOT` to find `rootCA.pem`
187
+ 2. Install on mobile:
188
+ - **iOS** — Send to phone, install profile, then enable full trust in Settings > General > About > Certificate Trust Settings
189
+ - **Android** — Install CA certificate in security settings (may need to rename extension to `.crt`)
190
+ 3. Open `https://<LAN IP>:3199` in mobile browser, confirm HTTPS connection is secure and allow notification permissions
188
191
 
189
192
  ---
190
193
 
191
- ## 全部环境变量
194
+ ## All Environment Variables
192
195
 
193
- | 变量 | 默认值 | 说明 |
196
+ | Variable | Default Value | Description |
194
197
  |------|--------|------|
195
- | `AGENTWAKE_HOST` | `0.0.0.0` | 监听地址 |
196
- | `AGENTWAKE_PORT` | `3199` | 监听端口 |
197
- | `AGENTWAKE_HTTPS_ENABLED` | `1` | 是否启用 HTTPS |
198
- | `AGENTWAKE_HTTPS_CERT_PATH` | `certs/dev-cert.pem` | HTTPS 证书路径 |
199
- | `AGENTWAKE_HTTPS_KEY_PATH` | `certs/dev-key.pem` | HTTPS 私钥路径 |
200
- | `AGENTWAKE_DESKTOP_ENABLED` | `1` | 是否启用桌面系统通知(`0` 关闭) |
201
- | `AGENTWAKE_PWA_ENABLED` | `1` | 是否启用 PWA/WebSocket 推送(`0` 关闭) |
202
- | `AGENTWAKE_DINGTALK_ENABLED` | `1` | 是否启用钉钉通知(`0` 关闭) |
203
- | `AGENTWAKE_DINGTALK_WEBHOOK` | — | 钉钉 Webhook URL |
204
- | `AGENTWAKE_DINGTALK_SECRET` | — | 钉钉签名密钥 |
205
- | `AGENTWAKE_FEISHU_ENABLED` | `1` | 是否启用飞书通知(`0` 关闭) |
206
- | `AGENTWAKE_FEISHU_WEBHOOK` | — | 飞书 Webhook URL |
207
- | `AGENTWAKE_FEISHU_SECRET` | — | 飞书签名密钥 |
208
- | `AGENTWAKE_WECOM_ENABLED` | `1` | 是否启用企业微信通知(`0` 关闭) |
209
- | `AGENTWAKE_WECOM_WEBHOOK` | — | 企业微信 Webhook URL |
210
- | `AGENTWAKE_CLAUDE_TITLE_*` | — | Claude 事件自定义标题 |
211
- | `AGENTWAKE_DEDUPE_WINDOW_MS` | `10000` | 去重窗口(毫秒) |
212
- | `AGENTWAKE_RATE_LIMIT_WINDOW_MS` | `10000` | 限流窗口(毫秒) |
213
- | `AGENTWAKE_RATE_LIMIT_MAX_EVENTS` | `40` | 窗口内最大事件数 |
214
- | `AGENTWAKE_WS_PATH` | `/ws` | WebSocket 路径 |
215
- | `AGENTWAKE_QODER_LOG_PATH` | — | Qoder 日志路径(自动发现) |
216
- | `AGENTWAKE_ALLOWED_HOOK_IPS` | — | 限制 Hook 来源 IP(逗号分隔) |
198
+ | `AGENTWAKE_HOST` | `0.0.0.0` | Listening address |
199
+ | `AGENTWAKE_PORT` | `3199` | Listening port |
200
+ | `AGENTWAKE_HTTPS_ENABLED` | `0` | Enable HTTPS (auto set to `1` when PWA is enabled) |
201
+ | `AGENTWAKE_HTTPS_CERT_PATH` | `certs/dev-cert.pem` | HTTPS certificate path |
202
+ | `AGENTWAKE_HTTPS_KEY_PATH` | `certs/dev-key.pem` | HTTPS private key path |
203
+ | `AGENTWAKE_DESKTOP_ENABLED` | `1` | Enable desktop system notifications (`0` to disable); on ARM, uses native command fallback instead of `node-notifier` |
204
+ | `AGENTWAKE_PWA_ENABLED` | `0` | Enable PWA/WebSocket push (`0` to disable) |
205
+ | `AGENTWAKE_DINGTALK_ENABLED` | `1` | Enable DingTalk notifications (`0` to disable) |
206
+ | `AGENTWAKE_DINGTALK_WEBHOOK` | — | DingTalk Webhook URL |
207
+ | `AGENTWAKE_DINGTALK_SECRET` | — | DingTalk signature secret |
208
+ | `AGENTWAKE_FEISHU_ENABLED` | `1` | Enable Feishu notifications (`0` to disable) |
209
+ | `AGENTWAKE_FEISHU_WEBHOOK` | — | Feishu Webhook URL |
210
+ | `AGENTWAKE_FEISHU_SECRET` | — | Feishu signature secret |
211
+ | `AGENTWAKE_WECOM_ENABLED` | `1` | Enable WeCom notifications (`0` to disable) |
212
+ | `AGENTWAKE_WECOM_WEBHOOK` | — | WeCom Webhook URL |
213
+ | `AGENTWAKE_CLAUDE_TITLE_*` | — | Claude event custom titles |
214
+ | `AGENTWAKE_DEDUPE_WINDOW_MS` | `10000` | Deduplication window (ms) |
215
+ | `AGENTWAKE_RATE_LIMIT_WINDOW_MS` | `10000` | Rate limit window (ms) |
216
+ | `AGENTWAKE_RATE_LIMIT_MAX_EVENTS` | `40` | Max events within window |
217
+ | `AGENTWAKE_WS_PATH` | `/ws` | WebSocket path |
218
+ | `AGENTWAKE_QODER_LOG_PATH` | — | Qoder log path (auto-discovered) |
219
+ | `AGENTWAKE_ALLOWED_HOOK_IPS` | — | Limit Hook source IPs (comma-separated) |
217
220
 
218
221
  ---
219
222
 
220
- ## 开发
223
+ ## Development
221
224
 
222
225
  ```bash
223
226
  git clone https://github.com/tjdxwwj/agentwake.git
224
227
  cd agentwake
225
228
  npm install
226
229
  cp .env.example .env
227
- npm run init # 生成本地证书
228
- npm run dev # 启动开发服务器
229
- npm test # 运行测试
230
+ npm run setup # Interactive setup (optional PWA/HTTPS)
231
+ npm run dev # Start development server
232
+ npm test # Run tests
230
233
  ```
231
234
 
232
- ### 目录结构
235
+ ### Directory Structure
233
236
 
234
237
  ```
235
238
  src/
236
- adapters/ # 输入适配器(Cursor / Claude / Qoder
237
- gateway/ # 核心网关(Adapter 注册、事件路由)
238
- notifiers/ # 通知分发(桌面 / WebSocket / 钉钉 / 飞书 / 企业微信)
239
- installers/ # Hook 自动安装器
240
- web/ # PWA 前端
239
+ adapters/ # Input adapters (Cursor / Claude / Qoder)
240
+ gateway/ # Core gateway (Adapter registration, event routing)
241
+ notifiers/ # Notification dispatchers (Desktop / WebSocket / DingTalk / Feishu / WeCom)
242
+ installers/ # Hook auto-installers
243
+ web/ # PWA frontend
241
244
  ```
242
245
 
243
- ### 技术栈
246
+ ### Tech Stack
244
247
 
245
248
  Node.js + TypeScript + Express + WebSocket (ws) + Zod
246
249
 
@@ -248,20 +251,27 @@ Node.js + TypeScript + Express + WebSocket (ws) + Zod
248
251
 
249
252
  ## FAQ
250
253
 
251
- **手机收不到通知?**
252
- 1. 确认手机和电脑在同一局域网
253
- 2. 确认浏览器显示安全的 HTTPS 连接(非”不安全”)
254
- 3. 确认已授予通知权限
255
- 4. 检查 Web 页面 WebSocket 状态是否为”已连接”
254
+ **Cannot receive notifications on mobile?**
255
+ 1. Ensure phone and computer are on the same LAN
256
+ 2. Ensure browser shows secure HTTPS connection (not "Not Secure")
257
+ 3. Ensure notification permissions are granted
258
+ 4. Check if Web page WebSocket status is "Connected"
256
259
 
257
- **如何修改端口?**
260
+ **How to change port?**
258
261
  ```bash
259
262
  AGENTWAKE_PORT=4000 agentwake start
260
263
  ```
261
264
 
262
- **个人微信能收通知吗?**
263
- 微信不支持 Webhook 消息推送 API。可以使用企业微信群机器人作为替代。
265
+ **Can personal WeChat receive notifications?**
266
+ WeChat does not support Webhook message push API. You can use WeCom group bots as an alternative.
267
+
268
+ ---
269
+
270
+ ## Contributors
271
+
272
+ - [@tjdxwwj](https://github.com/tjdxwwj)
273
+ - [@qiangguanglin](https://github.com/qiangguanglin)
264
274
 
265
275
  ---
266
276
 
267
- MIT License
277
+ MIT License