Claude Code 和 Codex 的本地完成通知器。
任务结束后自动发飞书消息,不占用 agent 上下文,不需要公网 IP,也不用在本机起 HTTPS 服务。
当前只做飞书。Telegram、企业微信以后可以继续加。
配置成功后,飞书群会收到类似这样的消息:
[Agent] Codex test 已结束
项目: agent-notify
目录: D:\agent-notify
时间: 04/26 20:43
日常使用时不是你一发消息就通知,而是 Codex / Claude Code 回答完一轮后通知。
Codex / Claude Code 完成一轮
|
v
CLI 触发本地 hook / notify
|
v
node D:\agent-notify\notify.mjs
|
v
飞书群机器人 webhook
通知逻辑在模型外面运行,所以不会把“发通知”这件事塞进 Codex 或 Claude Code 的上下文。
机器人配置界面大概长这样,复制里面的 Webhook 地址 即可:
- 打开飞书。
- 进入你要收通知的群。
- 点群设置里的
群机器人。 - 点
添加机器人。 - 选择
自定义机器人。 - 名字可以填
Agent Notify。 - 安全设置选
自定义关键词。 - 关键词填:
Agent
- 复制飞书给你的 webhook 地址,格式类似:
https://open.feishu.cn/open-apis/bot/v2/hook/xxxx
不要把真实 webhook 提交到 git。
打开 PowerShell:
cd D:\agent-notify
.\install.ps1 -FeishuWebhookUrl "这里换成你的飞书 webhook"如果你的机器人开启了签名校验:
.\install.ps1 `
-FeishuWebhookUrl "这里换成你的飞书 webhook" `
-FeishuWebhookSecret "这里换成飞书给你的签名密钥"安装器会做这些事:
- 写入
D:\agent-notify\config.json - 给 Claude Code 添加
Stop/Notificationhooks - 给 Codex 开启
codex_hooks,添加Stop/PermissionRequesthooks - 包装 Codex 的
notify = [...]作为兼容链路 - 保留原来的 Codex notify,并在兼容链路触发后继续调用它
默认只发送两类消息:
任务完成:主任务结束。需要处理:需要权限、确认或输入。
阶段完成、子任务完成和无法分类的通知默认不发飞书。
飞书消息标题会直接区分提醒类型:
[Agent] 任务完成 | Codex
[Agent] 需要处理 | Claude Code
默认规则:
- Claude Code 的
Stop会发送任务完成。 - Claude Code 的
Notification会发送需要处理。 - Codex 的
Stop会发送任务完成。 - Codex 的
PermissionRequest会发送需要处理。 TaskCompleted、SubagentStop、阶段完成和子任务完成默认忽略。
如果需要临时关闭某一类提醒,编辑 D:\agent-notify\config.json:
"notifications": {
"completion": true,
"actionRequired": true,
"stage": false,
"subagent": false,
"unknown": false
}先检查配置:
node D:\agent-notify\notify.mjs doctor看到下面这样就说明 webhook 已写入:
config: ok
enabled: on
feishu: on
feishu.mode: webhook
feishu.webhookUrl: set
发送一条测试通知:
node D:\agent-notify\notify.mjs test看到:
OK
然后去飞书群看消息。
重新打开一个 PowerShell,让 Codex 重新读取配置:
codex exec "只回复:Codex 自动通知测试完成"Codex 结束后,飞书应该收到一条 Codex 通知。
交互式也可以:
codex注意:安装前已经打开的 Codex 会话通常不会重新加载配置。要新开一个 Codex。
重新打开一个 PowerShell:
claude -p "只回复:Claude 自动通知测试完成"Claude 结束后,飞书应该收到一条 Claude Code 通知。
交互式也可以:
claude同样需要新启动 Claude Code 进程。
编辑:
D:\agent-notify\config.json
全部关闭:
"enabled": false只关 Claude:
"agents": {
"claude": false,
"codex": true
}只关 Codex:
"agents": {
"claude": true,
"codex": false
}只关飞书:
"feishu": {
"enabled": false
}cd D:\agent-notify
.\uninstall.ps1卸载器会移除 Claude Code hooks,并恢复安装前的 Codex notify。
重新安装一次:
cd D:\agent-notify
.\install.ps1 -FeishuWebhookUrl "你的飞书 webhook"
node D:\agent-notify\notify.mjs doctor检查飞书机器人安全设置。关键词必须能匹配消息内容,推荐填:
Agent
安装 hook 前已经启动的 Codex / Claude Code 进程不一定重新加载配置。关闭旧窗口,重新打开再试。
不需要。一个飞书机器人可以同时接 Codex 和 Claude Code。消息里会区分来源。

