目录:ACP 协议API 网关与控制器附件启动与插件管理客户端运行时客户端 UI 包上下文压缩上下文注入核心运行时凭据与授权交付物文档处理实验特性宿主扩展反馈通道文件系统目标与计划工具守卫Hooks 扩展宿主服务交互命令作业调度LLM 适配LSP 集成MCP 协议规划模式Agent 预设代码执行运行时运行时诊断沙箱定时调度SDK 与协议会话核心会话检索设置Shell 执行技能溢出存储SSH 远程执行存储子代理子进程终端待办类型契约框架 vendorWeb 访问Webhook工作流工作区
依赖链 · 上游(该插件依赖的前驱):
依赖链 · 下游(依赖该插件的节点):
无下游(叶子/被消费端)
同一拓扑层(Layer 7,层次遍历层序):
dsh-acpdsh-api-session-controllerdsh-experimental-browser-use-stagehand-nativedsh-experimental-computer-use-cua-driver-mcpdsh-experimental-computer-use-cua-driver-nativedsh-hooks-claude-codedsh-plugin-managerdsh-subagent-acpdsh-subagent-claude-codedsh-subagent-codexdsh-subagent-dsh-sdkdsh-subagent-fork-in-processdsh-subagent-spawn-in-processdsh-tool-subagentdsh-tool-subagent-controldsh-workflow-ptc
插件信息
| 包名 | @deepseek-ai/dsh-hooks-claude-code |
|---|---|
| 分组 | G19 · Hooks 扩展 |
| 拓扑层 | Layer 7(层次遍历:被依赖方先于依赖方) |
| 源码路径 | packages/hooks/hooks-claude-code |
| 来源层 | L3 其余插件(独立于 bundle 装配的扩展/变体/示例) |
① 实现逻辑
把未改动的 Claude Code command hooks 桥接到 harness 拦截点:SessionStart、UserPromptSubmit、PreToolUse/PostToolUse、Stop、SubagentStart/Stop(src/index.ts:209-301)。config.ts 解析 CC 的 event→matcher-group 格式,仅保留 command 类型并对命令做 ${CLAUDE_PLUGIN_ROOT}/${CLAUDE_PROJECT_DIR} 替换(src/config.ts:78-122)。runPoint 对每个匹配 hook 记录 invoked/result 事件并调用 runHook,最后把合并结果映射为 PreStepDecision/PreToolDecision/PostToolDecision(src/index.ts:143-192, 225-271)。
内部结构动态 DAG(深色主题:橙色=上游依赖 · 绿色=下游依赖 · 棕色=外部seam · 蓝=本插件)
本插件
上游依赖
下游依赖
外部 seam
② 注册/提供(provides)
- Claude Code hooks 桥 (SessionStart/UserPromptSubmit/Pre+PostToolUse/Stop/SubagentStart+Stop 到 harness 拦截点的决策映射)
③ 依赖(depends_on · 上游前驱)
dsh-agentE1+E2
在 agent 生命周期与步进点注入上下文并映射 hook 决策
src/index.ts:14 import (Agent, PreStepDecision, TurnBoundaryProjection) + src/index.ts:209 ctx.on('agent/created') + src/index.ts:214 agent.inject
dsh-hook-protocolE1+E2
复用共享的 hook 执行/解析/合并/持久事件与 matcher 校验
src/index.ts:27-39 import (runHook, mergeHookOutputs, appendHookInvoked, ...) + src/index.ts:169 runHook(...) + src/config.ts:9 import matcherDiagnostic
dsh-llmE1
构造注入模型的上下文消息及其来源标签
src/index.ts:16-17 import (createUserMessage, ContextFormed) + src/index.ts:24 import (ContentBlock, MessageSource)
dsh-session-projectionE1+E2
读取 turnBoundary 投影获取 open turn 号以记录 hook 事件
src/index.ts:15 import type {} + src/index.ts:318 ctx.sessionProjections.stateOf(agent.session,'turnBoundary')
dsh-subagentE1+E2
把子代理 start/end 映射到 SubagentStart/SubagentStop hook
src/index.ts:42 import SubagentRunId + src/index.ts:287 ctx.on('subagent/start') + src/index.ts:297 ctx.on('subagent/end')
dsh-toolsE1+E2
在工具执行前后拦截点运行 hook 并映射为工具决策
src/index.ts:26 import (PostToolDecision, PreToolDecision, ToolExecution, ToolExecutionResult) + src/index.ts:244 ctx.on('tools/pre-execute') + src/index.ts:253 ctx.on('tools/post-execute')
④ 被依赖(dependents · 下游消费者)
无下游(叶子/被消费端)