
DeepChat MCP v2 双时代协议架构与剩余验证清单解析【免费下载链接】deepchatDeepChat - A smart assistant that connects powerful AI to your personal world项目地址: https://gitcode.com/GitHub_Trending/dee/deepchatDeepChat 将宿主拥有的 MCP 运行时整体迁移到 MCP TypeScript SDK v2在保留既有 legacy 服务器兼容性的同时支持 MCP2026-07-28stateless 现代线协议并通过“现代优先探测 legacy 回退”的auto协商机制平滑过渡。本文以 MCP v2 协议架构规格、人工验证手册 与 剩余验证任务清单 为主干结合仓库源码说明这套双时代架构的设计决策、实现边界与尚未完成的验证项帮助读者掌握如何在 DeepChat 中理解现代/legacy 协商、稳定服务器身份、打包诊断与生态验证流程。一、架构决策运行在 SDK v2 之上的双时代协议DeepChat 的 MCP 运行时以宿主host身份运行其核心决策是宿主拥有的 MCP 客户端构建在官方 MCP TypeScript SDK v2 之上同时支持 MCP2026-07-28stateless 现代线协议与 legacy 线协议见 spec.md。具体落地方式如下外部 stdio 与 Streamable HTTP 服务器使用 SDK 自带的auto协商即“现代优先探测、有效 legacy 信号才回退”DeepChat 自有的 in-memory 服务器明确保持 legacy 线协议原因是 v2 SDK 目前不提供现代 in-memory 服务端传输legacy 兼容性约束legacy 路径必须与现代化协商保持相同的传输、认证、schema、缓存、结果与错误语义不得在 DeepChat 侧另写一套并行协议代码。从源码看mcpClient.ts 是这套运行时的具体实现它直接从modelcontextprotocol/client包导入Client、StdioClientTransport、SSEClientTransport、StreamableHTTPClientTransport、InMemoryTransport、ProtocolError/ProtocolErrorCode、SdkError/SdkErrorCode与UnauthorizedError并在内部维护probe状态默认{ outcome: not-run }以记录协商探测结果。二、标准基线固定版本与权威参考迁移目标是一组固定版本的官方基线任何依赖刷新都必须先经过独立的兼容性评审组件版本说明MCP 核心规范2026-07-28现代线协议目标modelcontextprotocol/client2.0.0v2 拆分后的客户端包modelcontextprotocol/server2.0.0v2 拆分后的服务端包modelcontextprotocol/core2.0.0由拆分后的 client/server 包传递提供Zod4.2已被 DeepChat 满足modelcontextprotocol/sdk1.30.0仅作为 MCP Apps SDK 的 peer 依赖隔离在 Apps 边界仓库 package.json 中的实际声明与之一致modelcontextprotocol/client、modelcontextprotocol/server均为2.0.0modelcontextprotocol/ext-apps为1.7.5modelcontextprotocol/sdk为1.30.0。关键的包边界约束是DeepChat 自有核心代码只能导入 v2 拆分包任何位于src/main/mcp或共享核心 MCP 类型下的项目文件都不得导入 monolithic v1 SDK。由于modelcontextprotocol/ext-apps1.7.5目前仍把 v1 SDK 声明为 peer 依赖modelcontextprotocol/sdk1.30.0只被保留用于这一依赖边界Apps 宿主使用AppBridge(null, ...)并通过 DeepChat 路由传递经过校验的纯 JSON绝不把 v2 client 实例交给 v1 协议对象。规格中还要求增设导入限制防止未来核心代码意外恢复 v1 导入并在 Apps SDK 支持 v2 后移除该兼容包。三、核心变更现代线协议下的六大行为面3.1 无状态请求Stateless Requests现代请求是自包含的每次请求自带协议版本、客户端信息、能力声明与扩展元数据SDK 负责这些元数据的管理DeepChat 不得在现代传输之上再套一层会话抽象。因此现代路径必须移除对以下机制的依赖initialize/notifications/initializedMcp-Session-Id会话终止与会话过期字符串匹配Last-Event-ID可恢复性keepalivepingroot-list 变更通知logging 级别协商。legacy 行为应保留在 SDK 的兼容路径内部而不是 DeepChat 的并行协议代码中。现代 HTTP 上取消请求会关闭该请求的响应流因此 DeepChat 必须使用 SDK 的取消 API不得发送 legacy 取消通知。现代 logging 是显式的逐请求选项客户端不会自动启用同时保留既有 legacy 兼容且不新增 Logging UI。值得注意的是clientInfo与serverInfo属于自报诊断信息它们可以在脱敏后展示但永远不能用于选择服务器记录、授权动作或建立信任。3.2 能力发现与变更投递现代能力发现走server/discover变更投递走subscriptions/listen。DeepChat 消费 SDK 的类型化发现与列表变更能力让 SDK 拥有响应缓存与订阅宿主只保留一个渲染层展示缓存——它必须由当前 SDK 目录派生并由 SDK 变更事件驱动失效绝不能成为第二个协议级缓存。3.3 结果类型与多轮工具请求所有现代线结果都携带resultType判别符但 v2 SDK 会在返回公共结果类型之前消费该判别符因此 DeepChat 不得读取私有/原始线字段。SDK 返回完整值、通过已注册的 handler 自动完成input_required续填并在遇到不支持的判别符时抛出类型化 SDK 错误。现代工具、提示词与资源请求可能需要额外输入DeepChat 的做法是通过 v2 client 一次性注册既有的 sampling handler 与新增的类型化 elicitation handler让 SDK 可以继续多轮请求表单/URL 式 elicitation 使用宿主拥有的 UI 与显式同意roots 请求返回真实的空列表DeepChat 不暴露客户端 roots弃用的 legacy Sampling 仍为兼容性保留但不新增 root 配置或 Logging 功能。多轮requestState被当作不透明的、不可信协议状态处理原样经 SDK 返回不解释、不修改、不记录、不持久化。SDK 默认的 10 轮上限保持不动除非未来标准或实测互通性问题要求显式缩小。取消宿主交互即取消原始 SDK 请求而不是发起另一个工具调用。Tasks 不作为私有核心行为实现它由独立的io.modelcontextprotocol/tasks扩展处理见 MCP Tasks 规格。当前 v2 SDK 会在现代时代拒绝草案扩展的task结果类型与tasks/*方法因此 Tasks 在上游出现公开扩展适配器或分发 API 之前保持禁用。3.4 稳定的服务器身份Stable Server Identity在持久化扩展或凭据状态之前宿主必须为每个服务器分配不可变身份规格中给出了如下接口interface McpServerIdentity { serverId: string configGeneration: number bindingHash: string }serverId在添加/导入/迁移时生成的本地不可变 ID显示名称只是可变的标签configGeneration每当传输、端点、命令、参数、环境、受保护资源、授权签发方或授权模式变化时递增bindingHash对规范化非机密身份材料传输类型、规范化端点或命令身份、受保护资源、授权签发方的 SHA-256 摘要绝不包含凭据、环境值、请求头或令牌。远程绑定在受保护资源与授权服务器发现完成后才最终确定挂起的 OAuth 状态只能存在于活动流程的临时绑定之下并在可复用前原子地移入最终化的宿主配置。持久化的 App 描述符与凭据都携带serverId、configGeneration、bindingHash一旦不匹配App 描述符失效、凭据作废且绝不静默重新绑定。迁移是事务性的不改变显示名称或连接行为重命名保留身份重新指向或身份相关的认证变更会使代数递增并产生新绑定导入记录永远不能按名称选中已有服务器。模型工具授权也会携带解析后的最终名称、原始 MCP 名称、服务器 ID、代数与绑定哈希一起分发主进程在每个 await 的准备步骤之后重查不可变目标与活动客户端一旦发生碰撞或重配置就取消调用而不是执行当前拥有该模型可见名称的目标。这些类型在 src/shared/types/mcp.ts 中真实存在MCPServerConfig包含serverId?、configGeneration?、bindingHash?、authorization?与临时的forceLegacyWire?注释明确其为“temporary compatibility diagnostic”不得暴露为新服务器设置项McpCredentialBinding extends McpServerIdentity还携带端点与授权信息。3.5 Schema、元数据与请求头现代工具输入/输出 schema 是任意的 JSON Schema 2020-12 文档DeepChat 在保留任意 provider 专属投影的同时必须保留原始 schema 与元数据校验声明的 schema 方言现代连接与 DeepChat 自有打包目录支持 JSON Schema 2020-12不对外部$ref做网络解引用现代与打包定义对无法解析的外部引用失败关闭fail closed而不是宽松放行用户配置的外部 legacy 连接把 schema 文档当作不透明有界 JSON 保留在 legacy SDK 接受响应后不得追加现代专属的方言/远程引用/组合形状拒绝该兼容不豁免网络解引用也不放宽单个 schema 或元数据值的结构与大小边界。在投影、持久化或交付给渲染器之前需要应用字节、深度、键数、节点数与组合展开限制集合信封有总字节上限但成员键/节点数不累加成固定目录配额而是对每个独立消费的成员各自校验。模型提供方投影只能在最终 provider 适配器边界简化 schema现代连接与自有目录在调用工具时仍须保留原始 MCP 定义以便 SDK 校验输出、镜像x-mcp-header标注字段、发出标准Mcp-Method与Mcp-Name请求头、保留工具_meta含 MCP Apps 元数据。结构化内容、结果_meta与原始内容数组始终对扩展 handler 与持久化助手消息块可用而给模型的文本投影保持有界且 provider 兼容。3.6 缓存语义与错误语义缓存方面使用 v2 SDK 响应缓存遵循服务器ttlMs与cacheScope采用 SDK 有界的每客户端默认值除非测量证明需要不同上限。第一版实现不持久化现代/legacy 协商结论——每次新连接都重新探测避免服务器升级后宿主残留过时的时代状态未来的持久化结论必须带过期时间与显式失效规则。错误分类是验收的核心代码必须区分协议失败ProtocolError/ProtocolErrorCodeSDK 失败SdkError/SdkErrorCodeHTTP 失败SdkHttpError取消与用户拒绝不支持的结果类型含当前实验性 Tasks 草案。HTTP401/403进入授权处理5xx仍是服务器失败这些状态码都不是“服务器是 legacy”的证据。现代 HTTP 上以 HTTP400返回的被寻址 JSON-RPC 错误属于ProtocolError而通用 HTTP 失败保持SdkHttpError现代资源未找到是-32602legacy-32002只能经 SDK 兼容路径接受。未知工具调用在 v2 下被拒绝DeepChat 把该拒绝映射进既有工具错误块而不是改写成带isError的成功响应。3.7 打包诊断Packaged Diagnostics手动协商证据必须能在打包构建中取得而不是从开发日志推断。规格要求一个只读类型化路由mcp.getServerDiagnostics { serverId } - { diagnostics }主进程返回的对象仅包含受控枚举与脱敏信息其类型在 src/shared/types/mcp.ts 中定义包括type McpProbeReasonCode | modern-accepted | valid-legacy-signal | authentication-required | http-server-error | transport-error | timeout type McpSubscriptionDiagnostic | tools-list-changed | prompts-list-changed | resources-list-changed | resource-updated interface McpServerDiagnostics { serverId: string serverName: string owner: deepchat | plugin transport: stdio | http | sse | inmemory connectionState: stopped | starting | running | error era: modern | legacy | unknown protocolVersion?: string serverImplementation?: { name: string; version: string } probe: { outcome: modern | legacy-fallback | failed | not-run reasonCode?: McpProbeReasonCode } extensions: string[] clientExtensions: Array{ id: string; revision?: string } cacheState: active | unknown subscriptions: ArrayMcpSubscriptionDiagnostic | modern-listen auth: { state: | unsupported | none | required | authenticating | authenticated | error persistent?: boolean mode?: McpAuthorizationMode } updatedAt: number }探测原因、认证状态与订阅名称都来自有界宿主枚举而非服务器错误文本扩展标识符有显式数量/长度限制响应排除端点、命令、环境变量、请求头、令牌、授权码、密钥、原始服务器错误与协议载荷。该路由只服务宿主拥有的已配置服务器ACP 保留独立的状态/诊断面并把它的 MCP 连接标记为agent-owned不分配宿主serverId也不探测。实现证据McpClient内部维护probe状态并在 mcpClient.ts 中实现classifyProbeFailure(error): McpProbeReasonCode与getDiagnostics(auth): McpServerDiagnosticssrc/main/mcp/index.ts 中暴露getServerDiagnostics(serverId)路由。规格给出的服务器卡片诊断面板原型如下打开面板或点击 Refresh 会读取新的主进程快照既有服务器状态事件会使渲染器查询失效复制诊断即复制同一脱敏对象-------------------------------------------------- | MCP Diagnostics [Refresh] | | Server Local tools | | Owner deepchat | | Transport stdio | | Era modern · 2026-07-28 | | Probe modern | | Extensions io.modelcontextprotocol/ui | | Cache active | | Subscriptions tools/list_changed | | Auth authenticated · persistent | | | | [Copy redacted JSON] | --------------------------------------------------App 的 CSP 与浏览器网络拒绝证据不进入该 MCP 诊断对象App 详情面展示声明的 origin打包的恶意 fixture 用于证明被阻止的请求。四、兼容性矩阵与探测超时规格明确规定了四类连接的所有权与线模式要求连接所有者传输线模式必需行为DeepChat 宿主外部 Streamable HTTPauto先探测现代仅在有效 legacy 信号时回退DeepChat 宿主外部 stdioauto用 SDK 可抛弃子进程探测再连接DeepChat 宿主HTTPSSElegacy保留可选含新配置带兼容性警告DeepChat 宿主内建/内存对legacy从同一 v2 包创建两个传输半端ACP 代理代理声明的传输agent-owned不迁移、不探测、不包装、不重新解释超时参数在源码 mcpClient.ts 中有精确对应HTTP 现代探测20 秒超时 一次重试MCP_HTTP_NEGOTIATION_PROBE_TIMEOUT_MS 20 * 1000让偶发缓慢的远端路由恢复而重复超时仍会落在 DeepChat 既有的45 秒软启动预算MCP_STARTUP_SOFT_TIMEOUT_MS 45 * 1000内stdio 探测8 秒、无重试MCP_STDIO_NEGOTIATION_PROBE_TIMEOUT_MS 8 * 1000且失败的可抛弃 stdio 探测不得留下子进程。其余边界也都在源码中有据可查连接硬超时 5 分钟、stdio 最大缓冲 10 MiB、input_required最大轮数 10、工具结果与控制结果各 32 MiB、elicitation 消息 32 KiB/URL 8 KiB/字段 256 个/内容 1 MiB、自定义请求头最多 64 个且名称/值各有字节上限。协商时的forceLegacyWire兼容开关在 mcpClient.ts 中按!serverConfig.forceLegacyWire (transportType stdio || transportType http)参与auto探测分支而 tasks.md 要求它在完成一个文档化的兼容窗口后移除。五、所有权与目标/非目标5.1 所有权边界规格给出了清晰的职责划分McpServerManager owns lifecycle and one host client per configured server | v McpClient (v2 SDK boundary) owns negotiation, transport, discovery, cache, subscriptions, auth hooks | v McpService / ToolManager owns catalog projection, execution context, result normalization | -- session persistence: durable result/app descriptors | -- typed routes/events: renderer presentation and user interaction扩展实现可以消费原始协议定义与结果但不得拥有传输协商或创建并行客户端。5.2 目标在官方 v2 拆分 SDK 包上运行宿主拥有的 MCP 客户端支持现代 stateless 线的同时保留 legacy 服务器兼容完整保留 MCP schema、元数据、内容与结构化结果用 v2 SDK 行为替换手工协议缓存与会话恢复过渡期间保持现有工具、提示词、资源、sampling、OAuth、内建服务器与插件目录行为可用把协商出的时代、协议版本与扩展能力暴露为诊断为每个已配置服务器提供不可变本地身份连接绑定变化时使持久化扩展状态失效弃用 HTTPSSE 但不破坏既有配置。5.3 非目标不提供 DeepChat MCP 服务器产品或公开服务器 SDK不实现自定义协议协商不迁移 ACP 代理拥有的 MCP 连接不为弃用特性新增 Roots 或 Logging 实现不新增遥测管线若日后支持 trace contextbaggage保持不可信绝不持久化或写入常规日志不围绕两套 SDK API 做永久兼容包装不把任意 MCP schema 静默转换为缩水的内部 schema在仍需要 legacy 线的受支持用户服务器存在期间不移除 legacy 线支持。六、跨目标依赖与上游就绪度生态发布被拆分为可独立验证的目标本架构迁移核心并启用双时代传输移除 MCP 权限系统确立单一权限所有者MCP Apps增加沙箱化交互 UIMCP Tasks记录被阻塞的上游 Tasks 门槛MCP 授权扩展增加加固的交互式、机器与企业授权。上游就绪度并不均匀快照日期 2026-07-29MCP2026-07-28核心 TypeScript SDK v2 为 Stable门槛是 legacy 对等与现代优先auto协商MCP Apps2026-01-26为 Stable 且宿主实现仍归 DeepChat 所有Enterprise-Managed Authorization 为 StableOAuth Client Credentials 在 ext-auth 中仍是 Draft存在公开 v2 provider需显式用户选择草案配置MCP Tasks 为 Experimental 且无包v2 SDK 当前阻止现代任务分发。核心对等与权限系统移除已完成Apps 复用共享权限 broker 而不得复活第二层 MCP 审批Tasks 在其独立上游门槛开启前保持不宣传。七、验收标准仓库内验证已完成的部分规格列出了严格验收标准其中仓库内可自动化验证的部分已通过无 DeepChat 自有 MCP 核心模块导入 v1 SDK既有 legacy stdio、Streamable HTTP、SSE 与 in-memory fixture 保持当前可观察行为含 legacy SDK 曾接受、受每值宿主边界约束的 schema外部 legacy 工具调用在分发前不获得 v2 专属输出 schema 编译既有服务器获得不可变本地 ID 且不丢失配置重命名保留 ID重新指向使旧绑定失效现代 stdio/HTTP fixture 无需 initialize/会话假设即可连接外部双时代 fixture 现代优先、仅对有效 legacy 响应回退认证错误与服务器错误不触发 legacy 回退失败的 stdio 探测不留子进程JSON Schema 2020-12 特性与工具/结果元数据贯穿发现、provider 投影、调用执行与持久化ttlMs、cacheScope、发现变更与订阅无需手工协议缓存即可更新渲染目录多轮输入请求完成或取消且不产生重复工具调用不透明的多轮请求状态不被解释、持久化或记录打包诊断面板能识别宿主服务器的modern/legacy、协商扩展、探测结果、缓存/订阅状态与脱敏认证状态ACP 独立诊断识别 agent-owned 连接SSE 保留可选带兼容徽章并建议使用 Streamable HTTP格式、i18n 校验、lint、类型检查、聚焦 MCP 测试与打包 Electron 冒烟全部通过。八、剩余验证任务外部互通性仍待完成剩余验证任务清单 明确记录实现与仓库内验证已经完成外部互通性验证仍待完成。这正是整个架构目前的状态分界点。尚未完成的事项包括执行 manual-verification.md 中剩余的 core、Apps 与 authorization 用例运行当日公开现代端点与 OAuth/legacy 只读冒烟测试用 runbook 模板归档每个平台的脱敏证据在一个有文档记录的兼容窗口之后移除forceLegacyWire。清单还给出了一个硬性发布纪律DeepChat 不得声称拥有尚未产生归档证据的互通性DeepChat must not claim interoperability that has not produced archived evidence。换言之实现完成不等于验证完成任何对外宣称都须以人工验证产生的脱敏证据为准。8.1 人工验证手册的三级模型与规则manual-verification.md 是执行上述剩余任务的操作手册其验证模型分为三级source-pinned 或精确版本官方本地示例——受控互通性门槛公开远端服务器——当日真实世界冒烟不是稳定基线公开端点可能无预警变更、限流或消失DeepChat 自有的良性/恶意/失败 fixture——证明外部服务器无法安全或确定性地证明的安全与负向行为。执行规则要点从打包构建手动执行不使用自动化测试运行器使用干净测试配置、可抛弃本地进程与测试账号/工作区对公共服务只做只读操作每个本地源码或 npm 包精确固定版本不允许latest记录 DeepChat commit、打包版本、OS、架构、服务器来源/版本、传输、期望时代、实际时代与结果对截图与日志中的令牌、授权码、cookie、密钥与原始授权头做脱敏MCP Inspector 只是当日服务器预检与对比客户端不是一致性裁决者若某个用例需要绕过 SDK 校验、修改外部服务器或削弱 DeepChat 权限/沙箱策略则停止该用例。结果状态只允许五种PASS、FAIL、BLOCKED、ENVIRONMENT-DRIFT、NOT-RUN且禁止把BLOCKED或ENVIRONMENT-DRIFT转换成PASS。8.2 固定源与示例服务器目录手册把下列来源固定到具体 commit/版本MCP TypeScript SDKcc4b41617ce3601b1290d67216ea0b194a3cd9ac对应 client/server2.0.0、MCP 参考服务器6dd0a683e198783e30feabf7abaf42f925bd18b1/ npm2026.7.4即真 v1 SDK legacy 服务器、MCP Apps 扩展92f46a574568a3ddac7600343b7d3c4c4ed7b588/ npm1.7.5、MCP Tasks 扩展仅上游兼容性门槛与 MCP Inspectornpm2.0.0v2 能力但依赖 v22.0.0-beta.5只作对比客户端。必选本地服务器目录覆盖双时代协商dual-era、原始 schema/结构化内容tools、提示词prompts、资源resources、宿主 sampling 与现代 input-requiredsampling、多轮表单/URL 输入与不透明requestStatemrtr、缓存 TTL/作用域caching、subscriptions/listensubscriptions、取消与最终结构化结果streaming、外部浏览器授权码 PKCEoauth、无浏览器client_credentialsoauth-client-credentials、401分类bearer-auth、真 v1 全特性 legacy 服务器server-everything2026.7.4以及三个 Apps 生命周期服务器server-debug1.7.5、server-budget-allocator1.7.5、server-system-monitor1.7.5。公开远端目录包括 Cloudflare 文档 MCP无认证现代 v2 冒烟、官方托管特性参考服务器OAuth 参考、托管 Apps 回退与 Linear 只读真实 OAuth 2.1/DCR 冒烟。手册特别提醒Cloudflare 的/sse是其 stateless v2 handler 的别名不是弃用的 HTTPSSE绝不能用它充当 legacy SSE 用例确定性 SSE 门槛由L-EVERYTHING承担。8.3 用例矩阵速览手册按四组组织用例构成剩余验证的主体工作核心与数据MV-CORE-01现代 HTTP 协商无 legacy 回退、无陈旧会话恢复、MV-CORE-02现代 stdio 协商与子进程清理、MV-CORE-03真 legacy stdio/HTTP/SSE、MV-DATA-01无损工具 schema 与结构化结果持久化、MV-PRIMITIVES-01提示词/资源与更新、MV-SAMPLING-01宿主 sampling 双时代行为、MV-MRTR-01多轮表单/URL 输入含取消不得产生重复工具结果、MV-CACHE-01缓存 TTL 与刷新、MV-SUB-01工具列表订阅、MV-STREAM-01取消与最终化MCP AppsMV-APP-01全生命周期文本/图像/音频/资源/混合/structuredContent/_meta/isError变体、inline→fullscreen→PiP、主机同意、虚拟化重挂载、重启后无可执行 HTML 持久化、MV-APP-02确定性渲染与显示模式、MV-APP-03App-only 工具与 teardown源感知权限 broker、轮询停止、名称碰撞不可调用、MV-APP-04声明的外部网络OSM/Cesium CSP授权MV-AUTH-01本地交互式 OAuth系统浏览器、safeStorage 策略下的凭据复用/重认证、MV-AUTH-02本地 client credentials错误密钥结构化错误、无 legacy 回退、密钥永不落盘、MV-AUTH-03真实世界 OAuthLinear 只读、MV-AUTH-04企业托管授权需受控企业环境不可用时报BLOCKED、MV-AUTH-05Private Key JWT需 RFC 7523 受控授权服务器当前BLOCKED稳定身份与负向MV-IDENTITY-01重命名与重新指向不可变serverId保留、代际/绑定变化使旧描述符失效、显示名碰撞不重新绑定、MV-NEGATIVE-01失败分类401/403/5xx不触发 legacy 回退、探测清理、无重试风暴、MV-SECURITY-01自有恶意 AppsDOM/preload/IPC/cookie/文件系统访问、顶部导航、未声明 fetch/WebSocket/脚本、消息源伪造、跨服务器调用、超大消息等全部必须失败、MV-TASK-01上游阻塞门槛不宣传 Tasks、不用 SEP-1686 工具替代、不使用社区 cast/monkey-patch 服务器、报告BLOCKED。8.4 平台扫描与退出标准平台扫描要求把全部必选本地核心用例跑在 macOS、Windows、Linux 打包构建上Apps 用例额外覆盖显示模式、焦点、键盘、主题、权限、CSP 与 preload 检查Windows 上验证 stdio 命令调用与子进程清理且不经过未评审 shell 包装Linux 上分别验证 secure backend 与basic_text/不可用存储两种 safeStorage 行为每个发布候选在至少一个平台跑公开远端冒烟DeepChat 特有失败再在第二个平台复现。生态验证宣告完成的退出标准包括启用特性的全部必选固定本地用例在所需平台上PASS现代/legacy stdio 与 HTTP、真实 legacy SSE、缓存、订阅、MRTR、流式、持久化结果、Apps 生命周期、App-only 调用、身份重新指向与进程清理全部通过自有失败与恶意 App fixture 通过本地交互式 OAuth 与 client credentials 通过至少一个当前公开现代端点与一个公开 OAuth/legacy 端点完成当日冒烟或将其故障以 Inspector 证据记录为ENVIRONMENT-DRIFT不得用公共服务故障掩盖可在固定本地服务器上复现的失败MV-TASK-01阻塞期间 Tasks 保持不宣传private key JWT 与企业授权在受控人工用例通过前不得宣称支持。每一条用例的证据记录需按手册模板归档包含用例 ID、结果状态、DeepChat commit/版本、OS/架构、服务器 ID 与来源、服务器 pin 或观察时间戳、包完整性/依赖元数据、命令或脱敏端点、传输、期望/实际时代与版本、期望/实际可观察结果、Inspector 对比与协商时代、脱敏诊断/截图、子进程清理结果、备注与后续 issue、测试者与日期。结语从“仓库内验证完成”到“外部互通性归档”DeepChat 的 MCP v2 迁移在架构层面已经闭环核心运行时运行在官方 v2 拆分 SDK 之上现代2026-07-28stateless 线协议与 legacy 线协议共存于同一McpClient稳定服务器身份、有界 schema 校验、SDK 缓存/订阅、类型化错误分类与脱敏打包诊断都有源码级实现支撑mcpClient.ts、src/shared/types/mcp.ts、src/main/mcp/index.ts。但正如 tasks.md 所强调的当前状态是“实现与仓库内验证完成、外部互通性验证待完成”剩余工作——执行 core/Apps/authorization 用例、当日公开冒烟、按 runbook 归档脱敏证据、在兼容窗口后移除forceLegacyWire——全部服务于同一条发布纪律没有归档证据就不宣称互通性。这套“规格 → 实现 → 仓库内验证 → 人工生态验证 → 证据归档”的分层方法既是 DeepChat 双时代 MCP 运行的完整说明书也是一份可复用的 MCP 客户端兼容性验证模板。【免费下载链接】deepchatDeepChat - A smart assistant that connects powerful AI to your personal world项目地址: https://gitcode.com/GitHub_Trending/dee/deepchat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考