别再口头提醒了:用 ZCode Hooks 把团队规范变成自动执行(附配置模板)
看完你能带走:7 个挂点的完整说明、2 个可以直接照抄的实战配置、6 个最高频的翻车点,以及把规范随仓库共享给全队的方法。建议先收藏。 Hook 是什么:把记得变成必然团队规范落实难,难在它总是靠记性:规范写在文档里,靠人记得;写进 AGENTS.md,靠 AI “自觉”。而只要靠记性,就一定有漏网的时候。Hook 是另一种思路:在 ZCode 工作流程的固定节点上,自动执行你写好的脚本。它不经过 AI 的判断,也不依赖谁的记性——节点一到,脚本必跑。规范从口头约定变成机制保证。一轮对话里有哪些节点?看这张图: 七个挂点:一张表看懂ZCode 只支持七类事件,不多不少:事件触发时机典型用途SessionStart会话启动打印项目提醒、加载环境说明UserPromptSubmit你提交消息时向对话注入团队规范提醒PreToolUse工具执行前拦截危险操作(可拒绝)PermissionRequest弹出权限请求时定制审批策略PostToolUse工具执行后自动格式化、自动检查PostToolUseFailure工具执行失败后收集失败日志Stop一轮回答结束触发测试、生成收尾小结两个关键概念,配置前必须懂:matcher(匹配器):大小写敏感的正则表达式,决定这条 Hook 对不对这次操作生效。比如工具事件匹配的是工具名(Bash、Edit、Write、Agent等),Edit|Write表示只对编辑和写入触发;省略 matcher 则对所有操作生效。两种脚本类型:command型走 shell 执行字符串命令(注意它的超时单位是秒);process型直接调用可执行文件、参数数组传参、不走 shell(超时单位是毫秒,跨平台最稳)。️ 实战一:改完代码,自动检查最常用的场景:AI 每次用编辑/写入工具改了文件,自动跑一遍你的检查脚本(格式化、规范扫描、提示跑测试,都行)。完整配置模板:{hooks:{enabled:true,events:{PostToolUse:[{matcher:Edit|Write,hooks:[{type:process,command:D:/tools/check.cmd,args:[],timeoutMs:10000}]}]}}}放在用户级~/.zcode/cli/config.json(全项目生效)或工作区级.zcode/config.json(仅当前项目、可随 Git 共享)的hooks字段里。逐个说清:enabled: true:必须设。配置文件里的 Hook 默认是关闭的,忘了它,后面全白搭;matcher: Edit|Write:只对编辑、写入两类工具触发(大小写敏感);type: processargs:不走 shell 直接调用可执行文件,跨平台最稳;示例里的脚本路径是示意,换成你自己的;timeoutMs: 10000:10 秒超时。检查类脚本务必快,别拖慢每一次修改。配置怎么生效?记住退出码三个数:0 放行,2 拦截,其他非零 脚本执行出错(会记入日志)。检查类脚本检查通过就返回 0即可。️ 实战二:拦截危险命令PreToolUse 的价值在事前拦截:工具还没执行,你的脚本先过一遍。经典用法——AI 要执行 Bash 命令时,先检查有没有危险模式:{type:command,command:bash ${ZCODE_PROJECT_DIR}/.zcode/hooks/guard.sh,timeout:5}注意两个细节:${ZCODE_PROJECT_DIR}是内置模板变量,会被展开成项目路径,这样脚本写一份、各项目通用;timeout: 5在 command 型里的单位是秒(不是毫秒——这是最经典的翻车点之一)。检查脚本长这样(伪代码示意,输入字段以官方文档为准):#!/usr/bin/env bash# 从标准输入读取本次工具调用的信息# 命中危险模式(如递归删除) - exit 2,ZCode 将拒绝这次操作# 其余情况 - exit 0,放行拦截后,ZCode 会收到这次操作被拒绝并另做安排。用好了是保命符,用不好(误报率高)会很烦——所以拦截规则要从严设计,只拦真正危险的。 团队共享:让规范随仓库走把 Hook 配置和检查脚本放进工作区级配置(项目.zcode/config.json),随 Git 提交:队友拉取代码后,打开项目,规范就已经在场。新人不再需要入职先背规范——机制替你盯着。三个注意事项:工作区配置里同样要设enabled: true;脚本也要一起提交,否则队友那边只会报错;Team 里如果有人用不同操作系统,优先用process型(不走 shell,Windows/macOS/Linux 表现一致)。 6 个高频坑(官方文档都点名的那种)Hook 完全不触发:配置文件里的 Hook 默认关闭,enabled: true忘了设,后面全白搭——这是第一名的高频坑;事件名写错:只有七类事件,网上老文章里的Notification、SubagentStop等并不在支持之列;matcher 从不命中:大小写敏感,bash匹配不到Bash;写错的正则会静默失效;报 permission denied:脚本没有可执行位,改用解释器调用(如bash 脚本路径);动不动超时:command 型超时单位是秒、process 型是毫秒,混了就会被秒杀;指望 async 后台跑:它目前没有运行时效果,Hook 是同步执行的——耗时任务让脚本自行后台化。进阶玩法还有不少:脚本可以输出 JSON 向对话注入上下文、返回允许/询问/拒绝的决策、让 Stop 请求继续工作,此处不展开,以官方文档为准。 安全与克制脚本以你的身份运行:Hook 等于把一段自动化交给自己,写清楚再挂;同步执行,保持轻快:Hook 会阻塞流程,默认超时 60 秒;PreToolUse 的拦截会直接挡住操作,误报率高了寸步难行;第三方插件的 Hook 同样会执行:安装任何插件前,在设置 → 插件管理 → 插件详情里看一眼它注册了哪些 Hook。❓ 快问快答Q:Hook 和 AGENTS.md 什么关系?会冲突吗?不冲突,是互补:AGENTS.md 是告诉 AI 规范,靠模型理解遵守;Hook 是机制强制执行,不经过模型。规范写进 AGENTS.md,底线用 Hook 兜底,是最稳的组合。Q:Windows 上能用吗?能。但 command 型走 shell,POSIX 语法的脚本在 Windows 会失败;跨平台场景推荐 process 型,或提供多平台的包装脚本。Q:怎么知道 Hook 到底执行了没有?执行记录(触发、结果、耗时、错误信息预览)都会写进 ZCode 的日志;配置型 Hook 也可以直接翻配置文件的 hooks 块核对。Q:能让 Hook 自动改我的代码吗?技术上脚本里做什么都行,但建议克制:Hook 只做检查、提醒、拦截,把修改留给 AI 与你的确认流程。权限越大,误伤越多。 写在最后好的协作规范,从来不靠自觉。CI 流水线、代码评审、单元测试,本质上都是用机制代替记性。Hook 是同一思路在 AI 编程里的延伸:你把规范写成脚本,ZCode 负责让它在每个该出现的时刻必然出现。从今天的三个动作开始:挑一条最常被违反的规范、为它写一个十秒钟就能跑完的检查脚本、挂到对应的节点上。第一个 Hook 跑通的那天,你就再也回不去了。️ 声明:本文为个人使用经验总结,属第三方独立教程,非 ZCode 官方文档;ZCode名称及相关商标归其权利人所有;Hook 的配置字段与行为以你所用版本的官方文档为准。 你的团队里哪条规范最常被忘?评论区聊聊,我们一起把它变成 Hook。系列下一篇,写「自己动手写一个 MCP 服务器」。

相关新闻

《Flink 实战与性能优化》3.2 窗口专题:Flink Window 基础概念、内置窗口用法与源码级实现原理

《Flink 实战与性能优化》3.2 窗口专题:Flink Window 基础概念、内置窗口用法与源码级实现原理

示例工程大数据 【免费下载链接】flink-learning flink learning blog. http://www.54tianzhisheng.cn/ 含 Flink 入门、概念、原理、实战、性能调优、源码解析等内容。涉及 Flink Connector、Metrics、Library、DataStream API、Table API & SQL 等内容的学习案例&#xf…

2026/10/6 5:52:01 阅读更多 →
环境配置全攻略:从Java、Python到深度学习一次讲透

环境配置全攻略:从Java、Python到深度学习一次讲透

1. 聊一聊“环境配置kkkk”:配环境配到无语,几乎是每个开发者的必经之路先解释一下标题里那个“kkkk”,我第一眼看到的时候直接笑出声。这根本不是键盘乱敲,这是配环境配到心态崩溃之后,对着屏幕打出的一串苦笑。你去搜…

2026/10/5 3:38:10 阅读更多 →
Flutter鸿蒙开发实战:从环境搭建到书籍APP上线

Flutter鸿蒙开发实战:从环境搭建到书籍APP上线

这两年做跨平台开发的人,应该都感受到了一个明显的变化:鸿蒙生态不再是“要不要做”的讨论,而是“怎么做”的落地问题。我自己的不少项目,原本只跑在Android和iOS上,现在甲方开口就问“能不能上鸿蒙”。如果用两套原生…

2026/10/5 3:38:10 阅读更多 →

最新新闻

AURIX TC3XX旋变软解码为何必须用EDSADC?

AURIX TC3XX旋变软解码为何必须用EDSADC?

1. 这不是“调个ADC”那么简单:为什么旋变软解码在AURIX TC3XX上必须用EDSADC你搜“AURIX 旋变解码”,十有八九会看到一堆人卡在“怎么让旋变信号真正跑起来”。不是ADC读不到电压,是读到了也解不出角度——或者解出来抖得像手机没信号。我去…

2026/10/6 5:52:09 阅读更多 →
Godot编辑器移植鸿蒙PC:难度拆解与可行路线解析

Godot编辑器移植鸿蒙PC:难度拆解与可行路线解析

后台经常有人拿“把 Godot 游戏编辑器移植到鸿蒙 PC”这个问题来问我,但这个说法其实省略了最关键的限定条件。你是想让鸿蒙 PC 设备能跑 Godot 做的游戏,还是想让 Godot 编辑器本身在这个系统上打开、正常运行,甚至是用它导出鸿蒙应用包&…

2026/10/6 5:52:09 阅读更多 →
74LS161与74HC390在Multisim中实现六进制和六十进制计数器

74LS161与74HC390在Multisim中实现六进制和六十进制计数器

1. 为什么还要折腾74系列计数器数字电路实验里,计数器是最基础也最容易翻车的模块之一。74LS161和74HC390这两颗芯片,一颗是四位二进制同步计数器,一颗是双十进制计数器,几乎覆盖了从模2到模100的所有计数需求。但很多人在Multisi…

2026/10/6 5:52:09 阅读更多 →
OmniGame:基于WebRTC与P2P的无服务器网页游戏运行时

OmniGame:基于WebRTC与P2P的无服务器网页游戏运行时

1. 项目概述:当网页小游戏不再需要“服务器”这个中间人你有没有试过点开一个网页小游戏,等三秒加载、再等两秒初始化、最后卡在“正在连接游戏服务器…”?我做过六年网页游戏前端架构,也带团队从零搭过三款上线超千万用户的H5小游…

2026/10/6 5:52:09 阅读更多 →
从零到15%引用率:AI搜索代码级GEO优化指南

从零到15%引用率:AI搜索代码级GEO优化指南

这两年做网站的站长,应该都有一个明显感受:传统搜索流量在下滑,AI 搜索带来的推荐流量在涨。但很多人发现,自己的内容明明写得很认真,搜索结果页排名也不错,偏偏在 AI 搜索里不被引用,甚至一次都…

2026/10/6 5:52:09 阅读更多 →
电子维修必修课:丝印识别的解码逻辑与实战避坑指南

电子维修必修课:丝印识别的解码逻辑与实战避坑指南

1. 为什么丝印是电子维修人最该练熟的“第一眼功夫”你拆开一台故障电源板,手边没图纸、没BOM、连厂家都倒闭十年了——这时候,能让你在30秒内判断出那个黑黢黢小元件到底是1N4007还是SS34的,不是万用表,不是示波器,而…

2026/10/6 5:51:08 阅读更多 →

日新闻

杰理AC7916A硬件设计全指南:电源、时钟与射频三大关键

杰理AC7916A硬件设计全指南:电源、时钟与射频三大关键

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:01:12 阅读更多 →
探针座选型指南:从需求梳理到验收避坑,稳稳解决半导体测试难题

探针座选型指南:从需求梳理到验收避坑,稳稳解决半导体测试难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:01:36 阅读更多 →
SO-DIMM内存设计指南:DDR3与DDR4引脚、拓扑、布线及调试

SO-DIMM内存设计指南:DDR3与DDR4引脚、拓扑、布线及调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:01:44 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 4:21:51 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →