资讯详情

Claude Code Agent Hook 系统提示词深度解析:基于代码库与对话记录的结构化条件判定机制

📅 2026/10/4 23:15:31 | 华诺云谱 👁 阅读
Claude Code Agent Hook 系统提示词深度解析:基于代码库与对话记录的结构化条件判定机制
文档提示工程人工智能【免费下载链接】claude-code-system-promptsAll parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, security review, agent creation). Updated for each Claude Code version.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-system-prompts点击查看免费下载导读Agent Hook 是 Claude Code Hooks 体系中一种由 LLM 驱动的工具事件钩子它在 PreToolUse、PostToolUse、PermissionRequest 等工具生命周期节点上派遣一个具备工具调用能力的 Agent 去核实用户给定的条件是否成立并返回结构化的 pass/fail 结果。本文以本仓库中的 agent-prompt-agent-hook.md 为骨架结合 system-prompt-hooks-configuration.md 及同族的 hook 条件评估器提示词深入讲解 Agent Hook 的提示词模板结构、四个运行时注入变量、三种对话记录transcript场景、执行纪律与返回协议并给出可复制的配置示例。读完本文你将理解 Claude Code 内部 Agent Hook 的完整运行机制并能自行编写条件型 hook 与对应的 agent 提示词。一、Agent Hook 在 Claude Code Hooks 体系中的位置在进入提示词细节之前先明确 Agent Hook 在整个 hooks 配置体系中的坐标。根据 system-prompt-hooks-configuration.md 中的定义Claude Code 的 hooks 是在 Claude Code 生命周期特定节点运行命令的机制标准配置结构如下{ hooks: { EVENT_NAME: [ { matcher: ToolName|OtherTool, hooks: [ { type: command, command: your-command-here, timeout: 60, statusMessage: Running... } ] } ] } }hooks 支持三类实现方式其中 Agent Hook 专指type: agent这一形态Command Hook—— 运行一条 shell 命令例如prettier --write $FILEPrompt Hook—— 由 LLM 直接评估一个条件表达式例如Is this safe? $ARGUMENTSAgent Hook—— 派遣一个具备完整工具调用能力的 Agent 去核实条件例如Verify tests pass: $ARGUMENTS。配置文件明确标注了可用范围Prompt Hook 与 Agent Hook仅可用于工具事件PreToolUse、PostToolUse、PermissionRequest而 Command Hook 可挂载到全部事件含 Notification、Stop、PreCompact、PostCompact、UserPromptSubmit、SessionStart 等。这是理解本提示词适用场景的第一条边界Agent Hook 本质上服务于工具调用前后的条件把关。二、agent-prompt-agent-hook.md 模板结构逐层拆解agent-prompt-agent-hook.md 是一个带模板变量的运行时提示词其 frontmatter 声明了如下元信息name: Agent Prompt: Agent Hookdescription: Evaluates agent hook conditions against the codebase and, when available, the conversation transcript, then returns a structured pass/fail resultccVersion: 2.1.284该提示词随 Claude Code 2.1.284 版本提取见 README.md 的版本说明四个运行时注入变量HOOK_EVALUATION_TASK_PROMPT、TRANSCRIPT_PATH、IS_REMOTE_HOOK_CALL、STRUCTURED_OUTPUT_TOOL_NAME正文核心由三段组成下面逐一展开。2.1 任务提示词与对话记录的拼接逻辑提示词正文第一句是一个三元条件拼接模板${HOOK_EVALUATION_TASK_PROMPT} ${TRANSCRIPT_PATH ! void 0 ? The conversation transcript is available at: ${TRANSCRIPT_PATH}\nYou can read this file to analyze the conversation history if needed. : IS_REMOTE_HOOK_CALL ? This call is being served for another machines session; there is no local conversation transcript to read. : There is no conversation transcript file to read here; ignore transcript_path in the hook input.}其运行逻辑可以归纳为有 transcript当TRANSCRIPT_PATH有值时提示词明确告知 Agent对话记录位于该路径需要时可以读取该文件分析会话历史远程 hook 调用当TRANSCRIPT_PATH无值且IS_REMOTE_HOOK_CALL为真时说明本次调用是在为另一台机器的会话提供服务本地不存在可读的对话记录本地无 transcript两种情况都不满足时直接声明此处没有对话记录文件可读忽略 hook input 中的 transcript_path 字段。这段拼接是整个提示词中最关键的分支设计它决定了 Agent 在证据获取上的边界——条件判定所需的证据可能来自代码库通过工具检查也可能来自对话历史通过读取 transcript而该模板负责在三种运行环境中精确声明 transcript 的可得性。从仓库的同族提示词可以看出依据对话记录做判定是条件评估器家族的通用模式。例如 agent-prompt-hook-condition-evaluator.md 要求评估器判断用户提供的 hook 条件是否成立并输出{ok: true, reason: ...}或{ok: false, reason: ...}而其 stop 变体 agent-prompt-hook-condition-evaluator-stop.md 进一步要求仔细阅读对话记录后判定 stop 条件是否满足并额外支持第三种返回形态{ok: false, impossible: true, reason: ...}用于表达该条件在本会话中永远不可能满足。这三份提示词共同勾勒出 Claude Code 内部条件评估的完整谱系Agent Hook 是其中唯一被明确要求使用工具检查代码库的形态其余两个纯评估器则主要依赖给定上下文与 transcript 直接判定。2.2 执行纪律面向代码库验证的最小步数原则模板的第二部分只有两句却是 Agent Hook 的行为准则Use the available tools to inspect the codebase and verify the condition. Use as few steps as possible - be efficient and direct.翻译过来即使用可用工具检查代码库以核实条件尽可能少地使用步骤——要高效、直接。这意味着 Agent Hook 的 Agent 被设计为验证器而非研究者它不探索、不总结、不发散只围绕给定的条件做最小化的证据收集与判定。结合 agent-prompt-workflow-subagent-structured-output.md 所描述的子 Agent 约定做完工作后调用结构化输出工具返回答案不要用文本响应可以推断 Agent Hook 的 Agent 同样遵循工作 → 一次性结构化返回 → 结束的紧凑执行模式。2.3 返回协议STRUCTURED_OUTPUT_TOOL_NAME 与 ok 字段模板的最后一部分定义返回协议When done, return your result using the ${STRUCTURED_OUTPUT_TOOL_NAME} tool with:ok: true if the condition is metok: false with reason if the condition is not met即完成核实后必须通过结构化输出工具返回结果结果形状为ok: true—— 条件满足ok: falsereason—— 条件不满足并附原因。这里有两个值得注意的实现细节。其一STRUCTURED_OUTPUT_TOOL_NAME是运行时注入的工具名在提取版提示词中以${STRUCTURED_OUTPUT_TOOL_NAME}字面量形式存在实际运行时由 Claude Code 插值替换它指向一个专门接收结构化 JSON 的工具——仓库中>{ session_id: abc123, tool_name: Write, tool_input: { file_path: /path/to/file.txt, content: ... }, tool_response: { success: true } // PostToolUse only }其中tool_name、tool_input以及仅 PostToolUse 场景存在的tool_response正是 Agent 检查代码库时最常用的上下文来源——例如一个写操作前校验文件路径合法性的 Agent Hook可以从tool_input.file_path直接拿到目标路径再用 Read/Glob 等工具验证。这也是模板要求忽略 transcript_path分支存在的原因没有 transcript 时判定依据完全来自 hook input 与代码库本身。3.2 transcript 的可靠性边界与截断处理模板对 transcript 的使用持谨慎态度它只是如果需要可以读取的可选证据而非强制依据。这与 system-prompt-hook-evaluator-truncated-transcript-note.md 的语义一脉相承——当早期对话因上下文窗口限制被省略时该提示词要求评估器仅基于最近的 transcript 判定如果所需证据可能位于被省略的前缀中则返回{ok: false, reason: insufficient evidence in transcript}。可以推断Agent Hook 在读取 transcript 时同样遵循证据不足即判 false的保守原则避免在信息不完整时误判条件成立。四、实战配置一个 Agent Hook 并理解其判定链路4.1 配置形态Agent Hook 在设置文件中以如下形态声明仅可用于工具事件{ hooks: { PreToolUse: [ { matcher: Write|Edit, hooks: [ { type: agent, prompt: Verify that the file at $ARGUMENTS is inside the projects whitelisted directories; if not, refuse., timeout: 120, statusMessage: Checking path safety... } ] } ] } }当Write或Edit工具被调用时Claude Code 会将prompt展开为HOOK_EVALUATION_TASK_PROMPT连同 transcript 可达性分支与返回协议一起组装成完整的 Agent Hook 提示词即本文剖析的模板再派遣一个带工具的 Agent 执行核实。4.2 完整判定链路触发某工具如Write即将执行命中PreToolUse matcher组装运行时注入四个变量拼接出完整提示词本地会话通常带TRANSCRIPT_PATH执行Agent 依据 hook input 中的tool_input字段用 Read/Glob/Grep 等工具最小化检查代码库必要时读取 transcript 核对会话上下文返回Agent 调用STRUCTURED_OUTPUT_TOOL_NAME输出{ok: true}或{ok: false, reason: ...}决策上层依据ok值决定放行或拦截并结合 system-prompt-hooks-configuration.md 中定义的 hook JSON 输出字段如hookSpecificOutput.permissionDecision取allow/deny/ask或decision: blockstopReason向用户呈现结果。4.3 与 classifierContext 的联动注意点如果 Agent Hook 的判定结果需要影响权限分类器需留意>赞分享文档提示工程人工智能【免费下载链接】claude-code-system-promptsAll parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, security review, agent creation). Updated for each Claude Code version.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-system-prompts点击查看免费下载相关推荐OLMo 数据集构建完全指南把 TB 级原始文本变成模型直接能吃的 MemMap 训练数据OLMo 数据集构建完全指南把 TB 级原始文本变成模型直接能吃的 MemMap 训练数据 OLMo 是一个开源大模型项目它的训练数据集构建把原始 .jso文档提示工程人工智能Claude Code 插件 Agent 开发完全指南结构、触发条件与系统提示词实战Claude Code 插件 Agent 开发完全指南结构、触发条件与系统提示词实战 本篇指南基于 claude plugins official 官方插件仓AI 插件开发工具插件系统深入解析 Claude Code 交互式系统提示词基于 leaked-system-prompts 仓库的 Claude Opus 5 版 Prompt 结构拆解深入解析 Claude Code 交互式系统提示词基于 leaked system prompts 仓库的 Claude Opus 5 版 Prompt 结构人工智能大模型提示工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑