Skip to content

第十六部分 · 16.8 综合演练 — 从 Hooks 到 defer 的端到端蓝图

导航← 16.7 defer_loading · 返回 16.1


学习目标

完成本节学习后,你应该能够:

  1. 整合 本部分知识点:在同一虚构项目中同时配置 PreToolUseSkillPlugin 斜杠命令MCP instructionsdefer 工具加载
  2. 演练 一次完整会话:SessionStart → 用户提交 → MCP 连接 → Skill 命中 → 模型发起 MCP 工具 → PreToolUse 审计 → PostToolUse 记录 → Stop 清理
  3. 输出 可交付团队的检查清单回滚策略
  4. 复盘 Token、延迟、安全三者的权衡决策。

生活类比:开一家「受控自动化」咖啡店

你要开一家店:

  • MCP外部原料供应商,每天送货时附当天品控说明(instructions 注入)。
  • Skill员工手册里的「客诉处理 SOP」。
  • Plugin /refund 是收银机上的退款专用键(自定义命令),规定只能店长按disable-model-invocation)。
  • PreToolUse店长在出杯前最后一眼:发现异常配方立刻 block
  • defer_loading库房按需取豆:早上不把 30 种豆子全倒上台面。

演练场景设定

要素取值
仓库payments-service monorepo
MCPmcp__jira__create_ticket
风险禁止模型自动建高优先级工单
合规所有 MCP 调用写审计日志

Mermaid:端到端序列(综合)


Mermaid:组件依赖图


配置蓝图(示意 YAML)

yaml
hooks:
  - event: SessionStart
    callback: { kind: shell, command: ./scripts/bootstrap-audit.sh }
  - event: PreToolUse
    matcher: { type: prefix, value: 'mcp__jira__' }
    callback: { kind: shell, command: ./scripts/jira-guard.sh }
  - event: PostToolUse
    matcher: { type: prefix, value: 'mcp__' }
    callback: { kind: http, url: https://audit.internal/mcp }
  - event: Stop
    callback: { kind: shell, command: ./scripts/teardown-cache.sh }

skills:
  searchPaths: ['.claude/skills']

plugins:
  - path: ./plugins/payments-plugin

mcp:
  servers:
    - id: jira
      command: npx
      args: ['-y', '@example/mcp-jira']

tools:
  deferLoading: true

Skill 摘要(示意)

markdown
---
name: payments-regression
description: 当讨论支付回归、对账、退款链路时启用
allowed-tools: FileRead, Grep, mcp__jira__create_ticket
---
## 流程
1. 定位相关模块 `payments/`.
2. 列出潜在边界条件。
3. 如需工单,仅使用 Jira MCP,并设置优先级为 Low,除非用户显式授权。

Plugin 命令片段(示意)

markdown
---
command: triage
description: 人工触发高优先级工单流程(需审批)
disableModelInvocationFor:
  - mcp__jira__create_ticket
---
用户已显式运行 /triage。允许以下例外:……

PreToolUse 决策表(演练)

调用决策理由
mcp__jira__create_ticket priority=Highblock/triage
同上 priority=Lowallow符合 Skill
Bash curl 外网block数据外泄

defer_loading 演练步骤

步骤操作观察
1冷启动会话首屏时间
2首次触发 Jira 工具hydrate_ms 峰值
3第二次调用命中缓存

回滚策略

层级动作
L1关闭单个 Hook
L2禁用插件 manifest
L3defer_loading: false 临时恢复 eager
L4断开 MCP

Token 复盘表

片段粗估影响
MCP instructions+0.5–2k tokens
Skill 正文+0.2–1k
工具 schema(defer 后)首调前较小

团队分工 RACI

工作RACI
Hook 策略安全平台负责人SRE研发
Skill 内容业务架构工程经理QA全员
Plugin 发布工具链发布经理安全用户

常见问题 FAQ

问题回答方向
演练环境?独立 staging + 假 Jira
失败重试?PostToolUse 应幂等
成本谁买单?MCP + LLM 双计费

交付物清单

交付物格式
Hook 脚本scripts/*.sh + 单元测试
Skill 库.claude/skills/*.md
Pluginplugins/.../plugin.json
运行手册本节 + 内部 wiki

小结

  • 本演练把 Hooks / Skills / Plugins / MCP / defer 穿成一条可审计链路。
  • PreToolUse 是安全闸,Skill 是流程,Slash 是人工钥匙,defer 是性能垫。
  • 回滚分层RACI 让实验可进可退。

课后自测(大作业)

  1. 将示意 YAML 转为你团队真实路径,并列出三条验证命令。
  2. 写一次「事故复盘」模板:当 PreToolUse 误 block 时如何快速旁路。
  3. 估算全链路 P99:从用户发送到 MCP 首次返回。

本部分回顾(16.1–16.8)

关键词
16.1六事件、总览、三件套
16.2PreToolUse、MCP 匹配
16.3Skills、allowed-tools
16.4Plugins、disable-model-invocation
16.5MCP instructions 注入
16.6Slash 命令
16.7defer_loading、缓存
16.8综合演练

上一节16.7 defer_loading
返回16.1 总览

本项目仅用于教育学习目的。Claude Code 源码版权归 Anthropic, PBC 所有。