多层智能代理协调系统 - Hooks自动化流程说明
基于.claude/settings.local.json配置的事件驱动自动化系统
Claude Code Hooks 是事件驱动的自动化系统,在特定的Claude Code生命周期事件发生时自动执行预定义的命令。我们的多层代理系统利用这些Hooks实现任务状态自动更新、代理协调和项目管理。
触发时机:Claude准备使用工具之前(可以阻止工具执行)
{
"matcher": "Task",
"hooks": [{
"type": "command",
"command": "node agents/todo-hook-manager.js validate-task-prerequisites",
"timeout": 10000
}]
}🔍 触发条件:当Claude准备启动一个子代理任务(Task工具)时
⚡ 执行动作:
- 验证任务的前置条件是否满足
- 检查依赖任务是否完成
- 验证必要的文件和资源是否存在
- 如果验证失败,可以阻止任务执行
💡 实际场景:
用户: @agents/spec-developer 开始实施任务
↓ PreToolUse触发
↓ 验证前置条件...
↓ ✅ 验证通过 → 继续执行任务
↓ ❌ 验证失败 → 阻止任务并返回错误
{
"matcher": "Edit|MultiEdit|Write",
"hooks": [{
"type": "command",
"command": "python3 -c \"import json, sys; data=json.load(sys.stdin); path=data.get('tool_input',{}).get('file_path',''); sys.exit(2 if any(p in path for p in ['.env', 'package-lock.json', '.git/', 'node_modules/']) else 0)\"",
"timeout": 5000
}]
}🔍 触发条件:当Claude准备编辑、创建或写入文件时
⚡ 执行动作:
- 检查目标文件路径是否安全
- 阻止编辑敏感文件(.env、.git/、node_modules/等)
- 防止意外修改系统文件
💡 实际场景:
Claude: 正在编辑 src/app.js
↓ PreToolUse触发
↓ 安全检查通过 → 允许编辑
Claude: 正在编辑 .env
↓ PreToolUse触发
↓ 安全检查失败 → 阻止编辑,提示错误
触发时机:Claude成功使用工具之后
{
"matcher": "Edit|MultiEdit|Write",
"hooks": [{
"type": "command",
"command": "node agents/todo-hook-manager.js handle-file-change",
"timeout": 30000
}]
}🔍 触发条件:文件被成功编辑、创建或写入后
⚡ 执行动作:
- 检测哪些任务与修改的文件相关
- 自动更新相关任务的状态为"进行中"或"完成"
- 更新TODO.md中的进度追踪
- 触发相关任务的自动检查
💡 实际场景:
Claude编辑: src/components/Header.tsx
↓ PostToolUse触发
↓ 检测到与任务"实现Header组件"相关
↓ 自动更新TODO.md: ✅ Header组件实现完成
↓ 检查是否触发下一个任务
{
"matcher": "Task",
"hooks": [{
"type": "command",
"command": "node agents/todo-hook-manager.js update-stats",
"timeout": 15000
}]
}🔍 触发条件:子代理任务(Task)执行完成后
⚡ 执行动作:
- 更新项目统计信息(完成任务数、进度百分比)
- 记录任务执行时间和性能指标
- 更新代理工作负载分布
- 生成进度报告
💡 实际场景:
@agents/spec-developer 任务完成
↓ PostToolUse触发
↓ 更新统计: 总任务18个,已完成3个
↓ 更新TODO.md进度条: 16.7%
↓ 记录性能指标
{
"matcher": "TodoWrite",
"hooks": [{
"type": "command",
"command": "node agents/todo-hook-manager.js update-stats",
"timeout": 10000
}]
}🔍 触发条件:使用TodoWrite工具更新TODO.md后
⚡ 执行动作:
- 同步TODO状态到项目仪表板
- 重新计算项目进度统计
- 更新任务依赖关系图
- 检查是否需要触发新任务
触发时机:子代理任务完成并停止时
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "node agents/todo-hook-manager.js handle-task-complete",
"timeout": 45000
},
{
"type": "command",
"command": "git add . && git commit -m \"Auto-commit: Agent task completed - $(date)\" || true",
"timeout": 20000
}
]
}🔍 触发条件:任何子代理任务完成时
⚡ 执行动作:
- 第一个命令:标记任务完成,触发下一个任务
- 第二个命令:自动Git提交,记录代理工作成果
💡 实际场景:
@agents/ui-ux-master 完成设计任务
↓ SubagentStop触发
↓ 1. 标记"UI设计"任务完成
↓ 2. 触发下一个任务"前端实现"
↓ 3. Git自动提交: "Auto-commit: Agent task completed - 2025-01-17 15:30"
{
"matcher": "spec-*",
"hooks": [{
"type": "command",
"command": "node agents/agent-selector.js trigger-next-phase",
"timeout": 30000
}]
}🔍 触发条件:specialist代理(spec-开头)完成时
⚡ 执行动作:
- 触发下一阶段的智能代理选择
- 根据当前阶段完成情况选择下一批代理
- 启动跨阶段的工作流程
💡 实际场景:
@agents/specialist/spec-orchestrator 完成协调
↓ SubagentStop触发 (匹配spec-*)
↓ 启动智能代理选择器
↓ 分析当前阶段:设计阶段完成
↓ 选择下一阶段代理:开发执行团队
↓ 自动启动 @agents/spec-developer
触发时机:Claude发送通知时
{
"matcher": "",
"hooks": [{
"type": "command",
"command": "node agents/todo-hook-manager.js handle-notification",
"timeout": 10000
}]
}🔍 触发条件:
- Claude需要用户权限确认时
- 长时间任务完成时
- 系统状态变更通知时
⚡ 执行动作:
- 处理系统通知并记录
- 更新用户界面状态
- 必要时发送外部通知(如邮件、Slack等)
触发时机:主Claude响应完成时
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "node agents/todo-hook-manager.js update-stats",
"timeout": 15000
},
{
"type": "command",
"command": "echo \"$(date): Claude Code session completed\" >> .claude/session.log",
"timeout": 5000
}
]
}🔍 触发条件:Claude完成当前响应,准备等待用户输入时
⚡ 执行动作:
- 第一个命令:更新最终项目状态和统计
- 第二个命令:记录会话完成时间到日志
graph TD
A[用户执行命令] --> B[PreToolUse: Task验证]
B --> C[✅验证通过]
C --> D[启动spec-orchestrator]
D --> E[PostToolUse: Task统计更新]
E --> F[SubagentStop: spec-* 处理]
F --> G[触发agent-selector.js]
G --> H[选择并启动专业代理]
H --> I[PostToolUse: 文件编辑处理]
I --> J[更新TODO.md]
J --> K[PostToolUse: TodoWrite处理]
K --> L[Stop: 会话完成]
L --> M[记录日志并更新统计]
15:30:01 - PreToolUse triggered for Task
15:30:02 - Validating prerequisites... ✅ Pass
15:30:03 - Task started: spec-orchestrator
15:30:45 - PostToolUse triggered for Task completion
15:30:46 - Stats updated: 1/18 tasks completed
15:30:47 - SubagentStop triggered for spec-orchestrator
15:30:48 - Triggering next phase selection...
15:30:50 - Selected agents: ui-ux-master, spec-developer
15:31:20 - PostToolUse triggered for file edit (TODO.md)
15:31:21 - File change detected, updating task status
15:31:22 - PostToolUse triggered for TodoWrite
15:31:23 - Stats synchronized with dashboard
15:31:24 - Stop triggered
15:31:25 - Final stats updated, session logged
.claude/settings.local.json # 主配置文件(本地,不提交Git)
agents/todo-hook-manager.js # TODO管理器脚本
agents/agent-selector.js # 智能代理选择器
.claude/session.log # 会话日志(自动生成)
# 在Claude Code中执行
/hooks# 查看会话日志
cat .claude/session.log
# 实时监控(Windows PowerShell)
Get-Content .claude/session.log -Wait# 测试文件编辑Hook
echo "test" > test.txt
# 测试TODO更新Hook
# 使用TodoWrite工具更新任务状态- 文件路径验证:PreToolUse Hook会阻止编辑敏感文件
- 命令超时:所有Hook都有超时限制,防止死锁
- 错误恢复:Hook失败不会影响主流程
- 权限控制:Hook执行的命令受用户权限限制
最后更新:2025-01-17
适用版本:Claude Code 最新版
配置状态:✅ 已激活并运行