当前位置: 首页 > article >正文

Agent Hooks 实战入门:手把手配置你的第一个 Hook(二)

前言在上一篇文章《深入理解 Agent HooksClaude Code 自动化扩展机制详解一》中我们系统介绍了 Hooks 的核心概念、五种类型以及生命周期事件。相信你已经对 Hooks 有了初步的理论认识。本文目标很简单带你亲手完成第一个 Hook 的配置。不管你是刚接触 Claude Code 的新手还是想系统学习 Hooks 的开发者跟着本文操作你将在 10 分钟内掌握 Hooks 的基本配置方法并获得多个可直接复用的实战配置。主包以codebuddy来配置以下的hooks如需下载cli请到腾讯云官网查看文档一、找到并打开配置文件1.1 配置文件位置CodeBuddy Code兼容 Claude Code 规范的 Hooks 配置存储在 JSON 格式的设置文件中根据作用范围不同有以下几个位置作用域文件路径说明用户级~/.codebuddy/settings.json适用于所有项目个人配置项目级项目根目录/.codebuddy/settings.json项目共享可提交 Git项目本地项目根目录/.codebuddy/settings.local.json本地配置不提交 Git用户级的配置位置1.2 查看配置文件是否存在Windows步骤一找到settings.json文件用任意文本编辑器VS Code、记事本等打开。注意如果该目录或文件不存在请新建一个。1.3 打开配置文件然后用你喜欢的编辑器打开我的内容差不多是这样1.4 配置优先级当多个配置文件同时存在时Hooks 会合并而非覆盖。优先级为项目本地 项目级 用户级这意味着你可以在用户级配置通用规则在项目级覆盖特定行为。二、编写你的第一个 Hook首先按传统给出我们的速通宝典—直接给出提示词,让AI自己配这是一个会提醒你操作的hooks我们直接回车-回车-回车可能会看到配置好了如果没有以下配置需要手动贴进去然后回来/reload一下然后就可以听到铺天盖地的notification 叮叮叮的声音 说明配置完成每一次操作都会叮一下正文2.1 场景说明我们来实现一个最实用也最安全的 Hook阻止 Claude 执行rm -rf危险命令。这个场景非常适合作为入门示例因为逻辑简单直观检测命令是否包含危险字符串效果立竿见影保护重要数据不被误删便于理解流程PreToolUse 事件的典型应用2.2 完整配置代码在settings.json中写入以下内容{hooks:{PreToolUse:[{matcher:Bash,hooks:[{type:command,command:echo {\hookSpecificOutput\:{\hookEventName\:\PreToolUse\,\permissionDecision\:\deny\,\permissionDecisionReason\:\禁止执行包含 rm -rf 的危险命令\}} exit 2}]}]}}等等这个配置会阻止所有 Bash 命令我们需要更精细的控制。让我们改进一下配合脚本使用。2.3 改进版配合脚本检测步骤一创建脚本目录和文件mkdir-p~/.codebuddy/hooks创建文件~/.codebuddy/hooks/check-dangerous-command.sh#!/bin/bash# 读取 stdin 中的 JSON 数据input$(cat)# 提取命令内容需要 jq 工具command$(echo$input|jq-r.tool_input.command // empty)# 检查是否包含危险命令if[[$command*rm -rf*]]||[[$command*rm -rf /*]];thenecho{hookSpecificOutput:{hookEventName:PreToolUse,permissionDecision:deny,permissionDecisionReason:禁止执行 rm -rf 危险命令请手动操作}}exit2fi# 安全放行exit0步骤二给脚本执行权限chmodx ~/.codebuddy/hooks/check-dangerous-command.sh步骤三修改配置文件{hooks:{PreToolUse:[{matcher:Bash,hooks:[{type:command,command:~/.codebuddy/hooks/check-dangerous-command.sh}]}]}}2.4 配置字段详解让我们拆解这个配置字段说明hooks顶层字段所有 Hook 配置的容器PreToolUse事件名称表示工具执行前matcher匹配器Bash表示匹配 Bash 工具调用typeHook 类型command表示执行 Shell 命令command要执行的命令路径执行流程Claude 准备执行 Bash 命令PreToolUse 事件触发匹配器Bash匹配成功执行脚本check-dangerous-command.sh脚本检查命令内容返回deny阻止或返回0放行三、验证 Hook 是否生效3.1 触发测试在 CodeBuddy Code 中尝试让 Claude 执行请帮我删除测试目录rm -rf ./test-dir预期结果如果 Hook 配置正确你会看到类似提示禁止执行 rm -rf 危险命令请手动操作3.2 查看执行日志使用--debug模式启动 CodeBuddy Codecodebuddy--debug在日志中可以看到[DEBUG] Executing hooks for PreToolUse:Bash [DEBUG] Found 1 hook matchers [DEBUG] Matched 1 hooks for query Bash [DEBUG] Hook command completed with status 23.3 常见问题排查问题可能原因解决方案Hook 未触发配置文件格式错误检查 JSON 语法Hook 未触发matcher 不匹配确认工具名称正确脚本执行失败没有执行权限chmod x script.sh脚本执行失败路径错误使用绝对路径Windows 报错脚本不兼容确保 Git Bash 可用3.4 使用 /hooks 命令检查在 CodeBuddy Code 会话中输入/hooks这会显示当前已注册的 Hooks 列表确认你的 Hook 是否已被识别。四、实战配置示例合集以下是一系列开箱即用的配置你可以根据需要复制到自己的配置文件中。示例一敏感文件保护场景阻止 Claude 修改.env、.git、密钥文件等敏感内容。{hooks:{PreToolUse:[{matcher:Write|Edit,hooks:[{type:command,command:python3 \$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/protect-sensitive.py\ 2/dev/null || python \$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/protect-sensitive.py\}]}]}}脚本protect-sensitive.py#!/usr/bin/env python3importjsonimportsys SENSITIVE_PATTERNS[.env,.git,id_rsa,.pem,credentials]datajson.load(sys.stdin)file_pathdata.get(tool_input,{}).get(file_path,)forpatterninSENSITIVE_PATTERNS:ifpatterninfile_path:output{hookSpecificOutput:{hookEventName:PreToolUse,permissionDecision:deny,permissionDecisionReason:f禁止修改敏感文件{file_path}}}print(json.dumps(output))sys.exit(2)sys.exit(0)示例二代码自动格式化场景每次编辑或新建文件后自动运行代码格式化工具。{hooks:{PostToolUse:[{matcher:Write|Edit,hooks:[{type:command,command:FILE$(cat | jq -r .tool_input.file_path // empty); if [ -n \$FILE\ ]; then prettier --write \$FILE\ 2/dev/null || true; fi}]}]}}注意需要项目中有prettier和jq安装。可根据项目替换为black、gofmt等工具。如果没有jq可以创建脚本文件来解析。示例三空闲提醒通知场景当 Claude 等待用户输入超过 60 秒时发送桌面通知。{hooks:{Notification:[{matcher:idle_prompt,hooks:[{type:command,command:notify-send \CodeBuddy Code\ \Claude 正在等待你的输入\}]}]}}macOS 可替换为osascript-edisplay notification Claude 正在等待你的输入 with title CodeBuddy CodeWindows PowerShell[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType WindowsRuntime]$null$template[Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02)$textNodes$template.GetElementsByTagName(text)$textNodes.Item(0).AppendChild($template.CreateTextNode(CodeBuddy Code))$null$textNodes.Item(1).AppendChild($template.CreateTextNode(Claude 正在等待你的输入))$null$toast[Windows.UI.Notifications.ToastNotification]::new($template)[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier(CodeBuddy Code).Show($toast)示例四任务完成度智能检查Prompt Hook场景Claude 完成响应时让 AI 判断是否真正完成了用户要求的任务。{hooks:{Stop:[{hooks:[{type:prompt,prompt:你是一个任务完成度检查器。分析以下对话上下文判断 Claude 是否完成了用户要求的所有任务。\n\n上下文$ARGUMENTS\n\n检查要点\n1. 用户的核心需求是否被解决\n2. 是否有遗漏的子任务\n3. 代码是否可运行\n\n返回 JSON 格式{\ok\: true} 表示完成{\ok\: false, \reason\: \具体原因\} 表示需要继续。,timeout:30}]}]}}示例五会话启动自动加载上下文场景每次启动新会话时自动注入项目特定的上下文信息。{hooks:{SessionStart:[{hooks:[{type:command,command:cat \$CODEBUDDY_PROJECT_DIR/.codebuddy/context.md\ 2/dev/null || echo 项目启动成功}]}]}}在项目根目录创建.codebuddy/context.md## 项目上下文 - 技术栈Node.js TypeScript React - 代码规范ESLint Prettier - 提交规范Conventional Commits - 注意事项请勿修改 .env 文件五、总结本文要点回顾步骤要点配置位置用户级~/.codebuddy/settings.json或项目级编写 Hook理解matcher、type、command三个关键字段验证方法使用/hooks查看注册--debug查看日志实战技巧脚本放.codebuddy/hooks/用$CODEBUDDY_PROJECT_DIR引用项目路径最佳实践建议从小配置开始先配置一个简单的 Hook验证流程后再逐步扩展脚本与配置分离复杂逻辑放脚本文件配置文件保持简洁注意跨平台兼容Windows 用户确保脚本能在 Git Bash 中运行善用$ARGUMENTSPrompt Hook 中使用$ARGUMENTS获取完整上下文下篇预告本系列的第三篇文章将深入探讨Hooks 进阶技巧包括如何修改工具输入参数modifiedInput多 Hook 协作与执行顺序MCP 工具的 Hook 配置复杂场景的完整实战案例敬请期待参考资料CodeBuddy Code Hooks 官方文档Claude Code Hooks 官方文档本文首发于 CSDN作者kingwu

相关文章:

Agent Hooks 实战入门:手把手配置你的第一个 Hook(二)

前言 在上一篇文章《深入理解 Agent Hooks:Claude Code 自动化扩展机制详解(一)》中,我们系统介绍了 Hooks 的核心概念、五种类型以及生命周期事件。相信你已经对 Hooks 有了初步的理论认识。 本文目标很简单:带你亲…...

minimax_image插件基本上能做到无AI感出图了

minimax_image插件介绍minimax_image插件能够通过调用minimax模型生成图像,注意:使用时需要提供minimax的 api key (api 密钥)和 group id (组id)。如何安装 minimax_image 插件步骤 1:进入工具市场在 InfiniSynapse (网页版&…...

MCP插件私有化部署终极方案(含国密SM4加密通道、离线证书链、Air-Gap环境适配包),仅开放给通过等保2.0三级认证企业

更多请点击: https://intelliparadigm.com 第一章:VS Code MCP 插件生态搭建手册 MCP(Model Context Protocol)是新一代 AI 工具链中用于标准化模型调用与上下文管理的关键协议。在 VS Code 中集成 MCP 支持,可实现本…...

RLVR:让AI的回答可验证、可审计、可信赖

2026年,当麦肯锡将“AI不准确性”列为该年度企业最需防范的风险,业界开始追问:如何让模型输出既准确又可控?过去,我们依赖RLHF来优化AI自然度。但在金融、医疗、代码等不容出错的场景,我们需要一种更硬核的…...

终极电路设计神器:Draw.io电子工程绘图库完全指南

终极电路设计神器:Draw.io电子工程绘图库完全指南 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: https://gitcode.com/gh_mirrors/dr…...

72W碳化硅SIC电源方案(24V3A,12V6A)LP8841SC+LP35118N全电压,过认证,六级能效( BOM,典型电路)

LP8841SCLP35118N 组合形成的72W SiC QR 电源方案,依托碳化硅技术优势,实现了小体积、高能效、低成本、强防护的平衡,是 72W 功率段电源升级的优质选择。72W 24V3A 外置电源方案 输入:90Vac~264Vac(47-63Hz&#xff09…...

从Jupyter Notebook一键转生产沙箱:3步实现AI代码自动容器化+依赖锁定+网络策略注入(2026 Docker Desktop 4.32新功能深度拆解)

更多请点击: https://intelliparadigm.com 第一章:Docker Sandbox 运行 AI 代码隔离技术 2026 最新趋势 随着大模型推理服务与第三方 AI 工具链的爆发式增长,安全执行不可信用户代码成为云原生 AI 平台的核心挑战。Docker Sandbox 技术正从轻…...

Windows AirPlay 2接收器终极方案:免费实现iOS设备投屏到Windows电脑

Windows AirPlay 2接收器终极方案:免费实现iOS设备投屏到Windows电脑 【免费下载链接】airplay2-win Airplay2 for windows 项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win 你是否曾经羡慕苹果用户能够轻松地将iPhone或iPad屏幕投射到Mac电脑上&…...

小内存服务器装不了MySQL 8?试试这个CentOS编译安装大法!

上期我们分享了CRMEB多商户系统(Java)升级MySQL 8的完整攻略,其中提到一个常见问题——如果你的服务器内存只有4G,或安装了宝塔这类面板,可能直接安装MySQL 8会失败。 当时我们建议:可以通过命令行手动编译…...

M5Stack Cardputer:30美元ESP32-S3卡片电脑开发指南

1. M5Stack Cardputer:一款30美元的卡片式ESP32-S3计算机 第一次拿到M5Stack Cardputer时,我很难相信这么小的设备能塞下这么多功能。这个只有信用卡大小的设备,内置了ESP32-S3芯片、1.14英寸显示屏和56键键盘,重量不到100克&…...

Flask ORM 的利刃:精通 SQLAlchemy 声明式模型与核心 CRUD 操作

更多内容请见: 《Python Web项目集锦》 - 专栏介绍和目录 在 Flask 生态中,如果说路由和视图是应用的骨架,那么数据库就是它的血液。当业务从简单的“增删改查”演变为复杂的多表关联、事务控制与性能优化时,原生 SQL 往往会让代码变成难以维护的“字符串拼接地狱”。 在 …...

拜读了顶会顶刊上这些论文,原来多模态特征融合是这么玩的

多模态特征融合现在确实比端到端好发,还能蹭一波大模型的热度,因此我最近翻了很多相关的论文,发现这块新活还真不少。简单来说,就是这方向现在不搞简单的拼接/注意力了,改卷动态路由、层次化交互、低秩分解、基于大模型…...

大语言模型在文档伪造检测中的创新应用与实践

1. 大语言模型在文档伪造检测领域的创新应用在信息安全领域,文档伪造检测一直是个棘手的难题。传统方法主要依赖人工编写验证规则,不仅效率低下,而且难以应对日益复杂的伪造手段。想象一下,一位海关工作人员每天需要核验数百份护照…...

【图像传输】OFDM图像加密传输(含QAM QPSK)【含GUI Matlab源码 15384期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…...

Docker 完整教程

Docker 完整教程(从零开始) 一、Docker 是什么? Docker 是一个开源的容器化平台,允许你将应用程序及其所有依赖(代码、运行时、库、配置文件)打包进一个轻量级、可移植的"容器"中运行。 通俗理解: 传统开发中,你可能遇到"在我电脑上能跑,到服务器就报…...

爬虫效率翻倍!指纹浏览器一键检测代理IP太实用

做高并发数据采集久了就会发现,很多效率问题其实不在代码,而是在环境层,尤其是代理IP和指纹浏览器这块。如果这两部分不稳定,再好的采集逻辑也跑不稳,要么频繁失败,要么中途被限制。我之前处理代理问题的方…...

Cursor Pro破解终极指南:3步实现AI编程助手永久免费使用

Cursor Pro破解终极指南:3步实现AI编程助手永久免费使用 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your t…...

罗技新鼠标真的变贵了?拆解溢价背后的技术账

价格背后的“违和感”:参数没赢,价格先涨 最近不少玩家在装机或升级外设时,都发出了同样的感叹:罗技的新鼠标是不是有点太贵了?尤其是当 G Pro X Superlight 2 这类旗舰型号以接近千元的价格上市,而同期国产…...

5步掌握雀魂AI智能辅助工具:提升麻将水平的终极指南

5步掌握雀魂AI智能辅助工具:提升麻将水平的终极指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuk…...

回调函数bind是否需要std::placeholder::_1

不是必须! 只有“调用时才传参数的”才需要占位符 std::placeholders 一、核心规则 1. 如果回调函数不需要参数 → 不需要占位符 2. 如果回调函数需要参数,但绑定时已经直接给死了 → 不需要占位符 3. 如果参数是【调用时才传进来的】 → 必须用占位符 _…...

Docker技术入门与实战【3.0】

第15章 构建Docker容器集群对Docker不熟悉的读者在生产环境中使用Docker的过程中,往往会碰到构建集群的需求。这里最核心的问题就是让不同主机中的Docker容器可以互相访问。 本章将介绍几种解决方案,包括利用端口映射实现容器之间的快速互联,…...

终极指南:超级个体时代,如何用Agent实现百倍效率

终极指南:超级个体时代,如何用Agent实现百倍效率1. 引入与连接:从「短剧单月流水破百万的1人团队」说起 1.1 开场故事:那个“10天攒10部短剧,单月变现97万”的博主 你最近在抖音、快手或者YouTube Shorts上刷到过这类“…...

Stencil计算原理与CharmStencil高性能实践

1. Stencil计算基础与挑战Stencil计算(模板计算)是科学计算中的一种核心模式,其本质是通过局部邻域操作来更新网格数据。想象一下Photoshop中的模糊滤镜——每个像素的新值由其周围像素的加权平均决定,这就是典型的Stencil操作。在…...

每天一个小技能——GitHub入门

GitHub简介 什么是GitHub及其核心功能 GitHub 基于 Git 的代码托管 协作开发平台。程序员的 “云端代码网盘 协作工作台 项目社区”。 核心功能 代码托管:把项目代码存在云端版本管理:记录每一次修改,可回滚、可对比团队协作&#xf…...

DeFi交易客户端开发指南:从协议抽象到套利监控实战

1. 项目概述:一个面向加密货币交易的开源客户端如果你在GitHub上搜索过加密货币相关的自动化交易工具,大概率会看到过各式各样的“client”或“bot”。今天要拆解的这个项目——messyvirgo-coin/messyvirgo-openclaw-client,从名字上就透着一…...

【基于 PyQt5 + PaddleOCR 的工业视觉型号检测系统开发】

目录 系统功能 技术栈 系统架构 1.硬件配置 2.软件架构 核心库安装 项目整体逻辑 完整代码逐段解析 模块1:导入所需库 模块2:辅助函数 2.1 定期释放USB摄像头资源 2.2 命令行参数设置 2.3 报警器控制指令 2.4 控制报警器 2.5 筛选列表中出…...

从芯片选型到PCB布局:手把手教你设计基于GS12170的SDI/HDMI转换板(避坑指南)

从芯片选型到PCB布局:手把手教你设计基于GS12170的SDI/HDMI转换板(避坑指南) 在音视频设备开发领域,SDI与HDMI信号转换一直是专业级应用的核心需求。无论是演播室设备、医疗影像系统还是广电级监控解决方案,都需要稳定…...

DenseGRPO:流匹配模型的密集奖励强化学习框架

1. 项目概述DenseGRPO是一种创新的强化学习框架,专门用于优化流匹配模型(如文本到图像生成系统)的对齐过程。传统强化学习方法在训练这类生成模型时面临一个根本性挑战:稀疏奖励问题。具体表现为仅在生成过程结束时提供单一反馈信…...

如何分析对象依赖关系_DBA_DEPENDENCIES防止删表导致视图失效

查DBA_DEPENDENCIES需DBA或SELECT_CATALOG_ROLE权限,否则应使用ALL_DEPENDENCIES并注意OWNER和NAME大小写;删表前重点查REFERENCED_TYPE为VIEW等的依赖,而非双向关系;动态SQL、JOB、APEX等隐式引用不会被捕获。查 DBA_DEPENDENCIE…...

避坑指南:在OpenHarmony上玩转Modbus RTU,RS-485接线和libmodbus配置那些事儿

OpenHarmony工业互联实战:RS-485硬件连接与libmodbus配置避坑手册 当温控器的数据突然跳变,当电表读数出现异常抖动,很多工程师的第一反应往往是检查代码逻辑——但真正的陷阱可能藏在那些被忽略的物理细节中。在工业现场,RS-485总…...