集成:工具、钩子与事件入口
MCP 在作用域中扩展工具与资源,命令钩子参与已定义的生命周期位置,Webhook 经认证与可信规则创建新会话。三类接入共享常规执行体系,保留独立的生命周期和可靠性责任。
箭头表示标注的调用或依赖关系;点击组件定位正文。完整关系见下方文字说明。
文字关系说明与章节链接
Webhook 来源适配器 →(已认证事件)→ 事件运行时与可信规则;事件运行时与可信规则 →(规则可创建会话)→ Session/Agent;Session/Agent →(生命周期位置)→ 命令钩子适配器;作用域 MCP 客户端 →(连接/发现/调用)→ 外部 MCP 服务;作用域 MCP 客户端 →(注册资源提供者)→ 共享资源服务;作用域 MCP 客户端 →(注册外部工具)→ 常规工具体系;共享资源服务 →(注册资源工具)→ 常规工具体系;Session/Agent →(按需调用)→ 常规工具体系。
Webhook 来源适配器 · 事件运行时与可信规则 · Session/Agent · 外部 MCP 服务 · 作用域 MCP 客户端 · 命令钩子适配器 · 共享资源服务 · 常规工具体系
作用域客户端管理外部工具
dsh-mcp-client 按配置为每个服务创建客户端,在自己的作用域发布外部工具;它支持 SDK stdio 与 Streamable HTTP,不依赖一个全局共享 ctx.mcp。
相同作用域内重复 serverName 会失败,工具名也必须能区分来源。外部服务连接、发现结果和工具注册都由插件生命周期拥有,卸载时撤销工具并关闭连接,不能留下仍可见但已断开连接的工具入口。
共享资源服务注册读取能力
MCP 发现成功后,客户端将校验后的工具定义交给工具体系;资源由 dsh-mcp-resources 提供统一入口,模型需要指明服务并按需读取。
dsh-mcp-resources · 接口摘录,省略上下文 · ctx.mcpResources.register · docs/subsystems/mcp.md · read_mcp_resource · packages/mcp/mcp-resources/README.md// 按作用域注册服务资源提供者,生命周期内启用共享资源工具。
register(server: string, provider: McpResourceProvider): () => void
// 使用明确服务名和列举或展开得到的 URI,按需读取外部资源。
{ server, uri }服务 instructions 作为带来源的字面材料处理,长度受限且只在成功发现后发布。刷新失败时保留先前有效代次,而不是用不完整的新目录覆盖。外部图像结果走附件能力,避免临时编码内容脱离统一保存与完整性要求。
命令钩子适配生命周期
dsh-hook-protocol 给出共享钩子协议,hooks-claude-code 和 hooks-codex 适配已有配置,在会话、提示、工具或停止等位置运行命令。
// 兼容钩子在工具执行前运行命令,可阻止工具或要求审批。
PreToolUse钩子可以提供上下文、阻止动作并给模型可见说明,或要求继续执行;这些效果由适配器映射到 DSH 的扩展位置。仓库只支持对应生态的子集,不能把读取了对方配置等同于完整实现其全部行为。钩子也仍受自己的进程与取消管理约束。
认证事件经规则创建根会话
dsh-webhook 接收经认证的提供者事件,webhook-github 负责对应来源,可信规则将事件映射为 null 或某个 Workspace 中的新根 Session 请求。
dsh-webhook · 接口摘录,省略上下文 · ctx.webhookRuntime.register · docs/subsystems/webhook.md · ctx.webhookRuntime.dispatch · docs/subsystems/webhook.md// 注册可信程序规则,卸载时中止并等待该规则的活动回调。
register<K extends string>(rule: WebhookRule<K>): () => Promise<void>
// 将已认证事件分派给匹配规则,回调结算前即返回。
dispatch<K extends string>(delivery: VerifiedWebhookDelivery<K>): void规则决定是否启动任务,业务执行随后进入常规 Agent 路径。固定版本这一入口是进程内 fire-and-forget,没有投递数据库、队列、重试、去重或完成状态存储。因此接收端重启、重复外部投递与下游任务失败,均不具备持久消息系统的恢复保证。
辅助示例
用户让模型读取外部设计资源时,MCP 资源工具根据服务名发起读取,返回内容再进入正常工具结果路径。另一次 GitHub 事件则由 webhook 规则决定是否创建检查会话。前者是现有任务中的能力调用,后者是创建任务的入口;一个成功连接不意味着另一个具备自动重试。
设计取舍
沿工具、生命周期钩子和事件入口分别接入外部系统,可以保留来源清楚的行为;代价是兼容面与可靠性必须单独说明。进程内 Webhook 实现轻量,但需要持久投递、幂等去重或完成追踪的部署需要另外实现这些能力。
相关包与插件
- 外部 MCP 服务接入
@deepseek-ai/dsh-mcp-client - 共享 MCP 资源发现工具
@deepseek-ai/dsh-mcp-resources - 外部命令钩子执行协议
@deepseek-ai/dsh-hook-protocol - Claude Code 命令钩子桥
@deepseek-ai/dsh-hooks-claude-code - Codex 命令钩子桥
@deepseek-ai/dsh-hooks-codex - 可信事件到会话的规则运行时
@deepseek-ai/dsh-webhook - GitHub 签名 Webhook 入口
@deepseek-ai/dsh-webhook-github
资料来源与核验范围
本章依据固定版本的官方文档整理,设计取舍根据所述机制分析;核验范围为文档,不包含运行实测。