返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

用Claude Code Hook实现任务完成后发送飞书提醒(可复用到微信、钉钉、桌面提醒)

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 22:21 |阅读模式 打印 上一主题 下一主题


今天是Claude Code系统的第3期,我们来聊聊怎么用 Claude Code Hook 实现在任务完成后发送飞书提醒,这里的飞书提醒,也可以是微信提醒、钉钉提醒、桌面提醒,整个逻辑和流程基本是一致的。

第一期:初学Claude Code全是卡点?试试我这份工具清单,无痛迁移和使用

第二期:MCP很难?这种方法轻松搞定,而且一劳永逸" data-itemshowtype="0" linktype="text" data-linktype="2">在Claude Code中安装MCP很难?这种方法轻松搞定,而且一劳永逸



为什么要做这个 Claude Code Hook 呢?

主要是我有个不好的习惯,在 Vibe Coding 时总想知道进度,所以时不时切换窗口查看 Claude Code 当前任务到底完成没。这其实很影响效率。

而我现在很多任务都在飞书上完成,所以我就想着是不是可以做个 Claude Code Hook,在它完成任务后给我发个飞书提醒。这样我就不用老切换窗口查看进度,也不用担心其他事情做着做着就忘了还有这个 Vibe Coding 进程。

以下是完整的分步指南,其中容易出现卡点的环节都进行了标注。

步骤一:在飞书创建一个机器人


点击飞书左侧搜索框,在出现的窗口中搜索“飞书机器人”,然后点击“飞书机器人助手”。


如果之前没有安装过“飞书机器人助手”,需要先安装并授权。

完成后就可以在飞书中打开“飞书机器人助手”,在页面中依次选择“我的应用-新建机器人应用”。

接着配置应用名称、应用描述和应用图标。

我在应用描述中填写的是“在Claude Code完成任务后给出消息提醒”,这个描述不用太讲究,主要方便自己后续查看。

完成后点击“确定”就会跳转到这个机器人应用的管理窗口(默认是“流程设计”页面)。

点击“创建流程”后跳转到流程编辑画布中,初始默认三个节点(支持添加更多):触发器→操作→结束

触发器:就是一个能记住状态、按信号自动切换的“记忆开关”,比如自动感应门,当你靠近自动感应门(信号),触发器让电机启动,门自动打开;你走远后,门自动关上(保持状态)。在我们这个案例中,我们需要用到 Webhook,对应飞书机器人助手中的“Wehook触发”。

这里简单介绍下 Webhook,它又叫“网络钩子”,是应用给其它应用提供实时信息的一种方式。通过 Webhook ,系统可以在收到 HTTP/HTTPS 请求时,自动触发流程运行。

飞书机器人助手提供 Webhook 触发能力,我们就可以通过 Webhook 将 Claude Code 与飞书机器人助手连接起来。进而实现从 Claude Code 自动接收数据。比如当 Claude Code 完成任务(这里的任务也可以是其它的)时,通过机器人发送飞书消息。

选择“Wehook触发”后,你就会得到一条Webhook地址。这个地址非常重要,有了它,Claude Code 才知道完成任务后给哪个飞书机器人助手发送消息。

接着填写 Webhook 推送的 JSON 数据格式或示例数据,对应的 key 值可以被后续流程节点(如操作)消费。

:参数需要用大括号 {} 括起来,由 message_type 和键值对组成。message_type 必须为文本类型,键是字符串,值可以是字符串、数字、布尔值、数组、对象或 null。如下图所示,如果你想要获取 Claude Code 项目字段,可以在参数中填写示例数据 "project": "cc";如果你想要获取 Claude Code 任务完成时间字段,可以在参数中填写示例数据 "time":"21:15:37",其它更多字段依次类推。

操作:还是以自动感应门为例,当你靠近自动感应门,门自动打开就是一个操作。而在我们这个 Claude Code Hook 案例中,飞书机器人助手中的“发送飞书消息”就是一个操作。

接着需要配置飞书消息的“发送对象”、消息标题和消息内容,其中的消息内容可以从我们前面 Wehook 触发器节点配置的JSON文件的字段中获取。

完成配置后,你可以通过 curl 指令,向以上 Webhook 地址发送一个 HTTP POST 请求,进行功能测试。

  • macOS 系统:在电脑上打开“终端”应用程序,并执行以下命令。

curl-XPOST-H"Content-Type:application/json"\-d'{"msg_type":"text","content":{"project":"cc","time":"21:15:37"}}'\此处填写Webhook地址


  • Windows 系统:在电脑上用快捷键Win + R打开运行对话框,输入cmd并按回车键。在命令窗口执行以下命令。

curl-XPOST-H"Content-Type:application/json"-d"{\"msg_type\":\"text\",\"content\":{\"text\":\"requestexample\"}}"此处填写Webhook地址

终端返回success就代表成功。

前面所有环节完成后,记得点击“发布”,否则后续步骤在测试时会失败。


步骤二:配置 Claude Code Hook


在正式介绍配置流程前,先简单介绍下 Claude Code 的 Hook 功能。


它和前面介绍的 Wehook 能力上是类似的,只不过 Claude Code 的 Hook 是给AI编程加了个“自动开关”——你提前写好规则,它在代码编辑的关键节点自动触发,不用你每次提醒,该做的事一件不会落。比如你想让AI每次修改代码后自动格式化,或者在它完成任务后发送飞书提醒,Hook 就能帮你把这些“要求”变成AI必须遵守的“铁律”,彻底告别“说了八百遍还是忘”的麻烦。


它本质上是用“代码规则”替代“AI自觉”,让你的 Vibe Coding 流程更稳定、更高效。不管是代码格式化、安全检查,还是自动化测试,只要你能想到“想在某个时候做某件事”,就能借助 Hook 实现。

Claude Code 的 Hook 通过 JSON 文件配置,可以添加到以下任一位置:

  • 用户设置:~/.claude/settings.json- 适用于所有项目

  • 项目设置:.claude/settings.json- 与团队共享

  • 本地项目设置:.claude/settings.local.json- 个人使用,不提交到版本控制

在这个案例中,我们使用的是第三种。我们首先创建或编辑 .claude/settings.local.json 文件,添加以下配置:

{"hooks":{"Stop":[{"hooks":[{"type":"command","command":"$CLAUDE_PROJECT_DIR/.claude/scripts/feishu-notify.sh"}]}]}}


这里使用的是 Stop hook,因为它在 Claude Code 会话结束(任务完成后)触发。

整段 JSON 的整体含义是:当 Claude Code 完成当前会话的任务(如代码生成、问题解答)时,自动执行项目根目录下的feishu-notify.sh脚本。


步骤三:创建飞书通知脚本


在项目目录创建一个脚本文件(如~/.claude/scripts/feishu-notify.sh),脚本中的Wehook 链接,需要替换成我们在步骤一中得到的飞书 Wehook 链接。


#!/bin/bash
# 从stdin读取hook输入数据input=$(cat)
# 记录原始输入用于调试echo"Raw inputinput">> /tmp/feishu-debug.log
# 提取基本信息ifcommand-v jq >/dev/null 2>&1;then cwd=$(echo"$input"| jq -r'.cwd // "Unknown"') session_id=$(echo"$input"| jq -r'.session_id // "Unknown"')else
# 如果没有jq,使用简单的方法 cwd="Unknown" session_id="Unknown"fiproject_name=$(basename"$cwd")completion_time=$(date'+%H:%M:%S')completion_date=$(date'+%Y-%m-%d')
# 记录提取的信息echo"Extracted: cwd=$cwd, project=$project_name">> /tmp/feishu-debug.log
# 构建消息文本(避免在JSON中使用换行符)text_content="Claude Code任务完成 项目名称project_name完成时间completion_time完成日期completion_date"
# 使用简单的JSON构建(避免复杂的转义)curl -X POST'替换成你的实际 Wehook 链接'\ -H'Content-Type: application/json'\ -d"{\"msg_type\":\"text\",\"content\":{\"project\":\"$project_name\",\"time\":\"$completion_time\",\"date\":\"$completion_date\"}}" >> /tmp/feishu-debug.log 2>&1echo"Script completed at$(date)">> /tmp/feishu-debug.log

这个脚本的主要作用就是,读取 Claude Code 传来的 JSON 数据(包括项目名、任务完成时间、任务完成日期)并构造一条飞书通知消息,通过curl发送 HTTP POST 请求到飞书 Webhook。

注意:虽然脚本里已经对系统是否安装 jq 的处理,但还是建议大家提前安装 jq,方便命令行中的 JSON 处理。

这里的脚本内容大家不用自己去写,因为可以把问题抛给 AI(建议Claude Code 和 Claude Docs AI,一问一个准),比如这里你可以这么问:

我想要创建一个ClaudeCodeHook,实现在ClaudeCode完成任务后发送飞书通知消息,返回的消息字段包括项目名称、任务完成时间、任务完成日期脚本创建完成后,记得在终端运行以下指令,确保脚本有执行权限(这是大家比较容易落下的点)。
chmod+x~/.claude/scripts/feishu-notify.sh或者如果脚本在项目目录中:
chmod+x/Users/caicai/Documents/cursor开发文件-3/feishu-hook/.claude/scripts/feishu-notify.sh



步骤四:功能测试和优化


完成前面的配置后,启动 Claude Code(如果之前开着,记得退出后重新进入)中运行一个简单任务(比如“你现在使用的是哪个模型”),完成后检查前面配置的飞书账号是否收到通知。


收到通知就大功告成了!当然,大家还可以根据自己的实际情况对消息通知的内容进行调整,这些就留给大家自己去探索啦 ~

就像前面介绍的,这里的飞书提醒,也可以替换微信提醒、钉钉提醒、桌面提醒,整个核心逻辑和流程基本是一致的,比如:

  • 微信提醒,可以借助企业微信机器人,或者第三方推送工具如虾推啥;

  • 钉钉提醒,可以借助钉钉机器人;

  • 还有桌面、Discord、Telegram、Slack等提醒,也都是类似的流程。

其中桌面、Discord、Telegram、Slack 有现成的 Hook 可以直接用,在这里就可以快速安装的指令 >>> https://www.aitmpl.com/hooks

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ