" />
文章

Claude Codex 飞书通知集成

Claude Codex 飞书通知集成

启动命令

codex --dangerously-bypass-approvals-and-sandbox -c 'notify=["bash","/Users/zhiwei/.warp-feishu-hook.sh"]' claude

说明:
- notify 会在事件发生时调用 /Users/zhiwei/.warp-feishu-hook.sh
- 当前配置用于把关键状态推送到飞书机器人

回调脚本位置

/Users/zhiwei/.warp-feishu-hook.sh
/Users/zhiwei/.warp-feishu-hook.log

脚本逻辑

脚本会识别以下事件类型并通知飞书:

  • PermissionRequest:需要人工审批时通知
  • Stop(turn complete):任务完成或需要人工参与时通知
  • 其他事件:忽略

飞书消息包含:
- 状态(✅ 任务完成 / ⚠️ 需要人工参与)
- 来源(Codex / Claude)
- 主机名、当前目录、时间
- assistant 最后一条摘要

核心工作流程

  1. Codex/Claude 触发 hook → 传递事件 JSON 给脚本
  2. 脚本记录原始输入到日志(便于排错)
  3. 通过关键字匹配识别事件类型
  4. 提取 assistant 最后一条消息(优先从 JSON,否则从会话日志)
  5. 判断是否需要人工参与
  6. 组装通知正文
  7. 生成飞书签名(HMAC-SHA256 + base64)
  8. 后台发送 HTTP POST 到飞书 webhook
  9. 记录发送结果

依赖项

bash, python3, openssl, base64

快速验证

检查脚本权限

ls -l /Users/zhiwei/.warp-feishu-hook.sh
chmod +x /Users/zhiwei/.warp-feishu-hook.sh  # 如需要

查看日志

tail -n 100 /Users/zhiwei/.warp-feishu-hook.log

手工测试(模拟 Stop 事件)

echo '{"hook_event_name":"turn-complete","last-assistant-message":"测试通知"}' | /Users/zhiwei/.warp-feishu-hook.sh

常见问题排查

问题 排查步骤
飞书没收到 检查日志中 feishu: sent/failed;验证 webhook 地址和签名密钥;检查网络连接
日志有事件但无通知 检查事件类型是否在脚本识别范围内;查看日志中 event: 字段
命令找不到 确认 python3、openssl 已安装并在 PATH 内

安全建议

  • ⚠️ 把 webhook 和签名密钥移到环境变量,避免明文写在脚本中
  • ⚠️ 不要把包含密钥的脚本提交到 Git 仓库

最后更新:2026-02-16

License:  CC BY 4.0