Skip to content

kkkano/agent-notify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

agent-notify

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 地址 即可:

飞书机器人配置

  1. 打开飞书。
  2. 进入你要收通知的群。
  3. 点群设置里的 群机器人
  4. 添加机器人
  5. 选择 自定义机器人
  6. 名字可以填 Agent Notify
  7. 安全设置选 自定义关键词
  8. 关键词填:
Agent
  1. 复制飞书给你的 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 / Notification hooks
  • 给 Codex 开启 codex_hooks,添加 Stop / PermissionRequest hooks
  • 包装 Codex 的 notify = [...] 作为兼容链路
  • 保留原来的 Codex notify,并在兼容链路触发后继续调用它

默认只发送两类消息:

  • 任务完成:主任务结束。
  • 需要处理:需要权限、确认或输入。

阶段完成、子任务完成和无法分类的通知默认不发飞书。

提醒策略

飞书消息标题会直接区分提醒类型:

[Agent] 任务完成 | Codex
[Agent] 需要处理 | Claude Code

默认规则:

  • Claude Code 的 Stop 会发送 任务完成
  • Claude Code 的 Notification 会发送 需要处理
  • Codex 的 Stop 会发送 任务完成
  • Codex 的 PermissionRequest 会发送 需要处理
  • TaskCompletedSubagentStop、阶段完成和子任务完成默认忽略。

如果需要临时关闭某一类提醒,编辑 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

然后去飞书群看消息。

测试 Codex 自动通知

重新打开一个 PowerShell,让 Codex 重新读取配置:

codex exec "只回复:Codex 自动通知测试完成"

Codex 结束后,飞书应该收到一条 Codex 通知。

交互式也可以:

codex

注意:安装前已经打开的 Codex 会话通常不会重新加载配置。要新开一个 Codex。

测试 Claude Code 自动通知

重新打开一个 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。

常见问题

doctor 里 feishu.webhookUrl 还是 empty

重新安装一次:

cd D:\agent-notify
.\install.ps1 -FeishuWebhookUrl "你的飞书 webhook"
node D:\agent-notify\notify.mjs doctor

test 显示 OK,但飞书没消息

检查飞书机器人安全设置。关键词必须能匹配消息内容,推荐填:

Agent

当前 Codex 窗口为什么不通知

安装 hook 前已经启动的 Codex / Claude Code 进程不一定重新加载配置。关闭旧窗口,重新打开再试。

Claude Code 需要单独建机器人吗

不需要。一个飞书机器人可以同时接 Codex 和 Claude Code。消息里会区分来源。

About

Claude Code 和 Codex 任务结束后自动发飞书消息通知

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors