Samples

按复杂度级别组织的实用钩子示例 - 从初学者到高级模式

此页面提供完整的、生产就绪的钩子示例,按技能级别组织。每个示例包括完整的工作代码、详细解释以及何时使用每种模式的指导。

如何使用这些示例

每个示例设计为:

  • 即复制即用:直接使用或作为起点

  • 教育性:通过递进的复杂性学习钩子概念

  • 实用性:解决真实的开发工作流挑战

根据你的经验级别选择示例,并逐步发展到更高级的模式。


初学者示例

非常适合开始使用钩子。这些示例使用简单的逻辑演示核心概念。

1. 项目类型检测

钩子: TaskStart

#!/usr/bin/env bash
# 项目类型检测钩子
# 
# 概述:在任务开始时自动检测项目类型,并将相关的
# 编码标准和最佳实践注入到 AI 上下文中。这有助于 Cline 理解
# 你的项目结构并从一开始应用适当的约定。
#
# 演示:基本的钩子输入/输出、文件系统检查、条件逻辑,
# 以及引导 AI 行为的上下文注入。

input=$(cat)

# 读取基本 JSON 结构并检测项目类型
context=""

# 检查不同的项目指示器
if [[ -f "package.json" ]]; then
  if grep -q "react" package.json; then
    context="PROJECT_TYPE: 检测到 React 应用程序。遵循基于组件的架构并使用函数组件。"
  elif grep -q "express" package.json; then
    context="PROJECT_TYPE: 检测到 Express.js API。遵循 RESTful 模式和适当的中间件结构。"
  else
    context="PROJECT_TYPE: 检测到 Node.js 项目。使用适当的 npm 脚本和依赖管理。"
  fi
elif [[ -f "requirements.txt" ]] || [[ -f "pyproject.toml" ]]; then
  context="PROJECT_TYPE: 检测到 Python 项目。遵循 PEP 8 标准并使用虚拟环境。"
elif [[ -f "Cargo.toml" ]]; then
  context="PROJECT_TYPE: 检测到 Rust 项目。遵循 Rust 约定并使用适当的错误处理。"
elif [[ -f "go.mod" ]]; then
  context="PROJECT_TYPE: 检测到 Go 项目。遵循 Go 约定并使用适当的包结构。"
fi

# 返回上下文以引导 Cline 的行为
if [[ -n "$context" ]]; then
  jq -n --arg ctx "$context" '{"cancel": false, "contextModification": $ctx}'
else
  echo '{"cancel": false}'
fi

关键概念:

  • 使用 input=$(cat) 读取钩子输入

  • 使用文件系统检查检测项目类型

  • 返回上下文以影响 AI 行为

  • 使用 jq 进行基本 JSON 输出

2. 文件扩展名验证器

钩子: PreToolUse

关键概念:

  • 提取工具名称和参数

  • 基于项目状态的条件逻辑

  • 使用 "cancel": true 阻止操作

  • 提供有用的错误消息

3. 基本性能监控器

钩子: PostToolUse

关键概念:

  • 工具执行后处理结果

  • bash 中的基本算术运算

  • 简单的文件记录

  • 条件上下文注入

中级示例

这些示例演示更高级的概念,包括外部工具集成、模式匹配和结构化记录。

4. 使用 Linting 进行代码质量检查

钩子: PreToolUse

关键概念:

  • 临时文件创建和清理

  • 外部工具集成(eslint、flake8)

  • 使用正则表达式的复杂模式匹配

  • 结构化错误报告

5. 安全扫描器

钩子: PreToolUse

关键概念:

  • 模式数组和迭代

  • 文件路径异常处理

  • 以安全为重点的验证

  • 错误消息中的清晰用户指导

6. Git 工作流助手

钩子: PostToolUse

关键概念:

  • Git 仓库检测

  • 分支分析和建议

  • 文件路径分析以获取上下文

  • 可操作的用户指导

高级示例

这些示例展示复杂的模式,包括外部集成、异步处理和复杂的状态管理。

7. 综合任务生命周期管理器

钩子: TaskComplete

关键概念:

  • 复杂数据提取和验证

  • 结构化报告生成

  • 异步 webhook 通知

  • 错误处理和资源管理

8. 智能用户输入增强器

钩子: UserPromptSubmit

关键概念:

  • 用户交互分析和记录

  • 多模式安全验证

  • 智能上下文检测

  • 动态建议生成

9. 多服务集成中心

钩子: PostToolUse

关键概念:

  • 多服务集成模式

  • 异步 webhook 编排

  • 复杂的工作流检测

  • 企业通知系统

使用提示

运行多个钩子

你可以通过为每种钩子类型创建单独文件来一起使用多个钩子:

环境配置

为外部集成设置环境变量:

测试你的钩子

通过模拟其输入来手动测试钩子:

这些示例为在你的开发工作流中实现钩子提供了坚实的基础。根据你的特定需求、工具和集成进行自定义。

Last updated