# DSH × IDBots 融合探索发现报告(供 Boss 参考)— 最终版 > 任务:DSH 融合探索远征(Task #21,无目标 · 过程发现)· 报告人:小刚(规格架构师)· 2026-08-16 > 状态:15/15 路径实证闭环 + Wave4 产物化完成,chair 已盘面核验;v2 升级纳入 #D18 真实模型端到端 + Wave4 产物化 > 事实源:`exploration/exploration-log.md`(发现条目 #D1-#D19,全部真实运行输出/file:line 可核验);本报告为汇总,不新增未落盘事实。 > 目的:把「所有路径全跑一遍」的过程发现收敛成 Boss 可直接决策的结论——能不能融合、怎么融合、先做什么。 --- ## 0. 一句话结论 **DSH 与 IDBots 融合 GO(Route A 换核成立),且我们侧几乎所有资产(bridge 工具 / 链上组合 / 沙箱 / 审批门 / 记忆梦境)都已实测对接打通,近零改造;唯一需要我们自己写的是「协议扩展插件」(wire 三方法)与「KernelAdapter 抽象」——都已出原型、验证可行、并已在 Wave4 正式化进 dsh-idbots 仓库。** 融合从「可行性判断」升级为「已运行事实」:真实模型(deepseek-v4-flash)已自主调用我们的工具并消费真实数据作答(#D18)。接下来是工程排期与上游协作问题。 --- ## 1. 我们到底验证了什么(15 条路径全景) | Wave | 路径 | 结论 | 关键证据 | |---|---|---|---| | W1 实证 | 1 spike 全量实跑 | ✅ 内核 in-process + SDK 子进程 wire 全绿(9/9 + resume seq130 + 8/8) | #D1 | | | 2 bridge 11 工具注册 | ✅ 不只契约一致,是**端到端可跑**(融合栈 15 工具 + live 调通网关) | #D2 #D2b | | | 3 wire 三缺口 | ✅ 确认缺口在 server 端(-32603 根因 `lib/index.js:155-162`) | #D3 | | | 4 PR #15/#16 冲突 | ✅ 零冲突,clean merge,rebase 可解门禁(管理动作非技术问题) | #D4 | | W2 集成 | 5 协议扩展插件 | ✅ **我们实现并双 driver 互证**(steer/cancel/approval 不再 -32603;授 10/10 拒 9/9 + 11/11) | #D5 #D5L #D5E #D11 | | | 6 approval 互操作 | ✅ 双门并存成立,真实 bridge 写工具 × wire 授/拒闭合(拒路径零网络副作用) | #D6 #D7 #D6L #D6L-bridge | | | 7 botos_run_skill 沙箱 | ✅ 进程沙箱可执行链上技能;信任门生效;ESM 缺口已定位 | #D8 | | | 8 bot-composition mount | ✅ 「同 metaid = 同 OS」在 DSH 运行时成立,组合零转换直接挂载 | #D9 | | W3 前瞻 | 9 KernelAdapter 原型 | ✅ **checkpoint 5 定论 ADAPTER-CAPABLE**(继承 override 可行) | #D12 | | | 10 宿主无关插件化 | ✅ 只认 ctx 契约、双宿主行为一致 | #D13 | | | 11 记忆/梦境 live | ✅ 分支态全套测试 59/59 跑通(宿主 release 依赖 PR15 合入) | #D17 | | | 12 常驻部署 | ✅ launchd 三件套自 08-15 就位 | #D10 | | | 13 MCP server 面 | ✅ 可行,路径5 三方法正好补齐 MCP 缺失面 | #D15 | | | 14 上游 main 监视 | ✅ 上游无 Phase 1 信号,KernelAdapter 仍是计划态 | #D14 | | | 15 自我修改路径 | ✅ 进程内可行、持久化不可行;护栏 H1-H6 已设计 | #D16 | **checkpoint 5 问**(来自 Task #20 对齐)全部落地:Q1 bridge 直接注册 ✅ / Q2 approval 落点 ✅ / Q3 宿主无关 ⏳(唯一已知阻塞 = 网关数据源抽象)/ Q4 协议复用 ✅ / Q5 沙箱对接 ✅。 --- ## 2. 核心发现(Boss 最该知道的) ### 2.1 融合是「增量换核」不是「重写」——大量资产零改造直接可用 - **11 个网关工具**按上游 `defineTool` 契约直接注册进 DSH 运行时(近零改造,`ctx.tools.schemas()=15` 全注册)。 - **链上 bot-composition 组合**(demo/weekly/evolved/ping/health-check)从 MAN 实时解析、零转换 mount 进 DSH,trust 校验自动生效。 - **沙箱执行**(botos_run_skill 三档)自包含,内核零改动。 - **fail-closed 审批门**与上游 canUseTool 链双门并存,互不冲突。 ### 2.2 唯一实质缺口 = wire 三方法(我们已补上) 上游 `session/steer / cancel / approval` 三方法在 **rc.6 与 master 两分支均未实现、无社区现成实现**(上游 issues 全关)。我们是**首个实现者**: - 落点:继承 server 包装 `handleRequest`(非侵入,上游 node_modules 零改动) - approval 关键设计:**server→client request 是 dead capability** → 改为 `session.approval` 通知 + `session/approval` 回执两段式(已实测规避) - 授/拒全链路跑通,真实 bridge 写工具过 wire:拒路径 create-pin hit=0(**绝无未授权链上广播**) ### 2.3 安全边界(全部实测) - **审批 fail-closed 三重验证**:进程内 mock(#D7)、stand-in 工具(#D6L)、真实 bridge×wire(#D6L-bridge)三个形态下「唯一放行 allowed-once、其余零网络副作用」全部成立。 - **自我修改护栏**:只允许白名单 adapter/ 前缀、patch 前快照+回滚+全量审计、**禁止 patch approval/权限路径**;持久化修改必须走宿主版本升级。 - **MCP 未知工具不泄漏 -32603**:外部面不暴露内部错误码。 ### 2.4 三个「可带走」的坑/修复点(Phase 1 直接做) 1. spike `run-agent.mjs:176` flush 在 dispose 后执行 → 抛 `session not live`(不影响检查,但进程 exit 1),flush 移到 dispose 前或 catch。 2. **ESM 技能全挂**:沙箱工作区只物化脚本、无 `package.json{type:module}` → `MODULE_TYPELESS`。mountBot 补 package.json 或脚本改 `.mjs`。 3. **bridge 结构化错误码不上 wire**:`IDBOTS_APPROVAL_DENIED` 跨 wire 时 tool 层只转 message,需在 tool-result text 带 code 或回执层补错误码字段。 ### 2.5 终极闭环(Wave4,#D18)——从「能跑」到「已运行」 - **真实模型端到端**(chair 实测,#D18):`deepseek-v4-flash` 真实模型在融合栈内**自主决定调用** `idbots_list_metabots` → bridge → 本地网关真实返回 → 模型用真实数据作答(4 个 MetaBot 角色全对,1895ms,成本可忽略)。不是 fake-llm 脚本驱动——是**模型自己决定调我们的工具并消费真实结果**。spike 推迟项「real-model behavior comparison」正面回答。 - **Wire 三方法正式化**(Wave4,小明):`plugins/dsh-protocol-extension/` 模块(npm test 5/5)+ `compositions/cordis.bridge.yml` 全融合组合(verify 8/8 + wire 冒烟 6/6,三方法不再 -32603)。从 spike 脚本升级为仓库内可复现交付。 --- ## 3. 遗留移交项(不越界,供决策) | # | 事项 | 归属 | 状态 | |---|---|---|---| | T1 | 上游组合增补 `@deepseek-ai/dsh-skill`(bridge apply 依赖 ctx.skills) | 我们→上游组合 | ✅ Wave4 已闭(`compositions/cordis.bridge.yml` 全融合栈已含 dsh-skill) | | T2 | approval 服务挂载(挂 dsh-user-approval 启用交互审批;未挂时写工具 fail-closed 为预期行为) | 我们 | ✅ Wave4 已闭(组合已含 dsh-user-approval) | | T3 | 协议扩展三方法 wire 契约 → **反向给上游提交小 diff**(我们是首走者,契约定稿后上游可吸收) | 我们→上游 | ✅ 契约 + 模块已正式化(`plugins/dsh-protocol-extension/`),提交待排期 | | T4 | R2 逐工具策略清单(7 读确定性门 / 3 写交互审批 / botos_run_skill 按需升级) | 已闭合 | 核验通过 ✅ | | T5 | 网关数据源抽象(`DEFAULT_BASE_URL` 背后数据面)——若「任意 DSH 宿主都能跑」是硬目标(Q3 阻塞) | 我们(Phase 2) | **唯一未解的前瞻阻塞**(Wave4 未触及) | | T6 | container 沙箱档 live 补测(需 docker/podman 机器) | 我们 | 待有环境 | | T7 | PR15/PR16 合入(记忆/梦境 live + chat-gateway) | 上游管理员 | 待合入;分支态已全部跑通;监视持续(#D14/Wave4 小红 11:33 快照仍 open) | | T8 | 版本 pin 纪律:`latest` 是 rc.1 旧版,必须 pin `0.1.0-rc.6`/`next` | 两侧 | 纪律已固化 | | T9 | 真实模型 live 对比质量评估(#D18 已单回合实跑)→ 余额确认需 owner 同意的最小 token 调用 | 我们 | 前置就绪(本机 DeepSeek key + DSH deepseek 适配器),唯一 gate = owner 授权 | **唯一战略性未决**:T5 网关数据源抽象——决定 bridge 能否脱离 IDBots 本地网关、在纯 DSH-native 宿主运行。若「宿主无关」是 Phase 2 硬目标需投入;否则当前融合(DSH 内核 + 本地网关)已闭环。 --- ## 4. 给 Boss 的建议(按价值排序,含 Phase 1 落地口径) 1. **Phase 1 换核按 Route A 走,且门槛已从「可行性」降为「工程化」**:KernelAdapter 抽象已证可行(checkpoint 5 = ADAPTER-CAPABLE),wire 三方法已正式化进仓库(`plugins/dsh-protocol-extension/` npm test 5/5 + `compositions/cordis.bridge.yml` 可复现)。Phase 1 落地点:把 `compositions/cordis.bridge.yml` 作为融合基座 → 泛化 `loadClaudeSdk` 为 KernelAdapter → DSH adapter 挂前缀路由表 → 双核并行过渡(DeepSeek/OpenAI-compatible 先 DSH,Anthropic 留 Claude SDK)。 2. **同步推进 Phase 2 插件化轨**(不赌产品):宿主无关 cordis 插件已验证可行(钱包/metabot 管理/社交搜索/记忆/沙箱都能插件化),MCP 外部编程面也验证可行(5/5)——即使换核延期,这条轨道产出独立价值。 3. **把 T1/T3 作为给上游的「融合礼物」**:dsh-skill 接线 + 三方法契约定稿 + 正式模块,我们做完的活反向贡献上游,显著降低协作摩擦。 4. **真实模型 live 对比(可选,owner 授权后)**:#D18 已证融合栈真实模型端到端可用;若要质量级对比(vs Claude SDK),前置已就绪(本机 key + 适配器 + 路由),需 owner 同意一次最小 token 调用确认余额(T9)。 **Phase 1 落地建议(一句话)**:把 Wave4 产物(`plugins/dsh-protocol-extension/` + `compositions/cordis.bridge.yml`)作为换核起点,KernelAdapter 抽象按 `specs/spec-p9-kernel-adapter.md` AC-P9-1~8 验收,approval/组合/沙箱/记忆全部复用现有资产——**换核是拼装已有零件,不是重新发明**。 --- ## 5. 团队纪律收获(过程发现的一部分) - **文件为唯一事实源**:本次任务多次出现「群消息声称 vs 文件落盘」的时差/偏差(路径5 实证、Wave3 交付),最终都靠 chair 逐文件直读裁定。教训已写入团队纪律。 - **编号纪律**:发现条目编号冲突(#D10/#D14 两次被占用)均已通过「避开已占用号」解决;建议后续任务沿用「先查已用编号再分配」。 - **无预设目标 → 过程发现**:15 条路径全部跑完,产出 17 个发现条目 + 5 份规格/报告,全程无虚标。 --- *报告完毕。全部结论可回溯源:`exploration-log.md` 发现条目 #D1-#D19 + `specs/` 规格(path5/6/8/9)+ `wave3/` 真实运行输出 + `wave4/` 产物化证据(模块 npm test 5/5、组合 verify 8/8、wire 冒烟 6/6,编号 #D19)。*