Hooks 简介
似乎人们对 Hooks 的讨论还不够多。
但它们可能是目前 VS Code 中最强大的功能之一。
本指南详细介绍了什么是 Hooks、它们的工作原理以及如何利用它们来自动化你的工作流程。
先决条件
开始之前:你需要安装 VS Code Insiders,并设置好 GitHub Copilot 和 GitHub Copilot Chat 扩展并完成登录。
什么是 Hooks?
Hooks 允许你在 Agent 会话期间的特定生命周期点执行自定义 Shell 命令。
Hooks 无需手动运行任务,而是让你定义在响应事件时自动执行的操作。这使它们成为自动化、验证和强制执行工作流程一致性的理想选择。
总体而言,Hooks 通常用于:
- 自动化重复性任务
- 强制执行安全或编码规范
- 在执行前后验证变更
- 与外部工具集成
生命周期事件(Hooks 的运行位置)
VS Code 支持八种在 Agent 会话期间特定点触发的 Hook 事件:
| Hook 事件 | 触发时机 | 常见用例 |
|---|---|---|
SessionStart |
用户提交新会话的第一个 Prompt | 初始化资源、记录会话开始、验证项目状态 |
UserPromptSubmit |
用户提交 Prompt | 审计用户请求、注入系统上下文 |
PreToolUse |
Agent 调用任何工具之前 | 阻止危险操作、要求审批、修改工具输入 |
PostToolUse |
工具成功执行完成后 | 运行格式化程序、记录结果、触发后续操作 |
PreCompact |
对话上下文被压缩之前 | 导出重要上下文、在截断前保存状态 |
SubagentStart |
启动子 Agent 时 | 跟踪嵌套 Agent 使用情况、初始化子 Agent 资源 |
SubagentStop |
子 Agent 完成任务时 | 汇总结果、清理子 Agent 资源 |
Stop(停止) |
Agent 会话结束 | 生成报告、清理资源、发送通知 |
Hooks 依赖于生命周期事件,这些事件决定了它们何时运行。
这些事件充当了 Agent 会话期间的触发点。例如,Hook 可能在会话开始时、提交 Prompt 时或工具完成工作后运行。
选择正确的生命周期事件至关重要,因为它决定了你的自动化操作实际发生的时间。
示例:使用 Prettier 进行自动格式化
Hooks 最实用的示例之一是自动格式化代码。
在这种情况下,配置一个 Hook 在每次文件编辑后运行 Prettier。系统会自动确保一切保持一致,而无需手动格式化文件。
核心理念很简单:一旦定义了操作,它就会在每次满足条件时自动运行,无需人工干预。
创建 Hook
要创建 Hook,你可以使用“Agent 自定义”视图并直接生成一个。
例如,你可以创建一个 Hook 来:
- 自动运行 Prettier
- 在工具完成后触发(Post Tool Use)
- 通过 Shell 脚本执行
Copilot 可以根据你的描述为你生成 Hook,包括必要的配置和命令。
示例:Hook 运行实操

创建 Hook 后,你可能需要重新加载环境以激活它。一旦激活,它就会根据你定义的生命周期事件自动运行。

当你进行更改(例如更新 README 文件中的文本)时,Hook 会在后台触发。

结果立竿见影:文件无需额外输入即可更新并完成格式化。Hook 会在后台默默为你处理这些工作。
为什么 Hooks 很重要?
Hooks 将自动化提升到了一个新的高度。
与 Prompt、指令甚至技能不同,Hooks 不需要你显式地触发它们。当满足特定条件时,它们会自动运行。
这改变了你的工作方式:
- 任务在后台自动完成
- 一致性得到自动强制执行
- 工作流程变得无缝衔接
Hooks 代表了一种转变:
手动执行 → 事件驱动的自动化
你不再需要要求 AI 做某事,而是定义它应该在何时发生,然后让系统代为处理。
后续计划
Hooks 有助于在无需输入的情况下实现工作流程自动化。
如果你想了解 Hooks、Agents、Skills 和 Instructions 是如何协同工作的,下一步是将它们作为一个完整的系统进行对比研究。