Skip to content

修复 DSH v4 拒绝连续性纠正消息的来源格式 #108

Closed

Description

@mindcarver

结果与范围

修复 Thinloop 的 DSH 连续性纠正消息在 Session v4 下触发 format v4 message requires a producer-owned source kind。修改 .dsh-plugin/continuity.mjs、直接相关测试及插件说明。

方案与确认

将退役的 { kind: "plugin", plugin: "thinloop-continuity" } 改成 { kind: "plugin:thinloop-continuity" },保留纠正消息内容和连续性闸门行为。

方案确认:需要确认:否;状态:默认免确认。

根因:Confirmed。本机 DSH Desktop 0.2.1-rc.2 的实际安装代码拒绝 source.kind === "plugin";现有插件在 agent/turn-stopping 纠正路径返回该值。先添加真实 listener 回归用例并观察失败,再执行修复。

验收与任务

  • A1:不可恢复的 SCD 状态触发纠正时,实际 agent.steer 消息携带 v4 可接受的生产方来源;相同未修改状态不会重复纠正。
  • A2:修复后的消息可通过实际安装 DSH 0.2.1-rc.2 的会话格式写入校验,旧来源被同一校验拒绝;仓库相关测试与检查通过。
  • A3:本机 DSH 组合包含启用的 Thinloop 与 dsh-mem0 插件,入口仍使用已有源码路径;保留无关未提交工作与运行中的桌面会话。
  • T1:添加失败回归、修正来源字段及对应说明。
  • T2:完成工程验证和独立新上下文验收。
  • T3:合并、同步已安装客户端并清理任务资源。

验证

  • A1 PASS:node --test tests/plugin-compatibility.test.mjs tests/validate-state.test.mjs tests/check-state.test.mjs,38 项通过;先前回归实际观察到旧来源与期望不同而失败。
  • A2 PASS:node --test tests/*.test.mjs,357 项通过;node --check .dsh-plugin/continuity.mjs、node scripts/check-version.mjs(0.17.1、11 个表面)、node scripts/sync-routing-kernel.mjs --check、node scripts/generate-readme-diagrams.mjs --check、git diff --check 均通过。本仓库为直接运行的 JS,无独立构建步骤。
  • A2 运行时格式验证:从 /Applications/DeepSeek Harness.app/Contents/Resources/app.asar 提取的实际 0.2.1-rc.2 格式库,对两个插件实际构造的 5 种消息执行 encodeEvent 与 restoreReleasedV4Artifact;5 种新来源均通过,同样内容改回旧来源均被拒绝。脚本:/Users/carver/Documents/Codex/2026-10-21/format-v4-message-requires-a-producer/work/dsh-v4-fix/verify-installed-v4.mjs。
  • A3 PASS:应用捆绑 CLI --profile headless --dump-config 退出 0,thinloop-continuity 与 dsh-mem0 均启用且指向现有源码文件;主检出无关文件未改动,未重启桌面应用。
  • 相邻本地修复:dsh-mem0 的来源字段、读取端 plugin: 识别与对应测试已修复(共 4 个文件),npm test 19 项通过。读取端新增回归先观察到插件文本被误识别为用户问题的失败,修复后通过。该目录原本未跟踪,保留为本地未提交工作,不把整个未完成模块加入本 PR。
  • 真实桌面聊天由用户重启后验收,不以静态配置或格式校验冒充真实聊天结果。

完成审计

  • 验收闭合:A1、A2、A3 工程 PASS,独立验收 PASS。
  • 实施账目:T1 DONE;T2 DONE(独立新上下文子智能体 /root/accept_dsh_v4,目标 758c0ae5788c450857c1f7c2e87eac390332b74e,返回 PASS);T3 DONE(已合并、同步并完成精确任务资源清理)。
  • 交付状态:分支 fix/108-dsh-v4-source,目标提交 758c0ae,基准 71d8083;4 文件、9 增 9 删,无页面变更。PR 修复 DSH v4 连续性消息来源格式 #109 的 Thinloop CI 已 PASS;独立验收 PASS,合并、安装同步与清理均已完成。

独立验收证据

实际调用新上下文子智能体 /root/accept_dsh_v4,亲读 Issue/PR/AGENTS 与完整差异。对 A1 直接运行 38 项相关测试;A2 直接运行全部 357 项测试及实际安装库 5 正/5 反校验,并比对安装包代码;A3 独立运行捆绑 CLI config-dump(退出 0),核对两个启用的源码挂载。相邻 mem0 四文件快照差异与 19 项测试亦通过。结论 PASS(工程阶段);真实桌面聊天留给用户重启后验收。

最终交付与清理审计

  • 合并:PR 修复 DSH v4 连续性消息来源格式 #109 已 MERGED;head 758c0ae5788c450857c1f7c2e87eac390332b74e,main 合并提交 ae1d2c8c15273e08c96ce2e8aaed1c2fc4746eb5。PR CI 与合并提交的 CI 均 success(run 39583355569 / 39666905901)。本地 main 与 origin/main 相同,四个交付文件与独立验收目标逐文件一致。
  • 合并后验证:在 main 运行两个相关测试文件,18/18 通过;实际安装 DSH 格式校验再次 5 正/5 反通过。mem0 四个任务修改文件的 SHA256 与独立验收时一致。
  • 安装:Codex 12/12 skills 源链接刷新并 PASS;Claude Code 原生刷新后版本 0.17.1、12/12 skills、2/2 hooks、完整受管 payload PASS;ZCode 0.17.0 的旧 app-server 更新路径返回异常,改用其原生 zcode plugins marketplace update thinloop --json 与 zcode plugins update thinloop@thinloop --json,两个返回 ok=true、无目标 error diagnostics,随后版本 0.17.1、12/12 skills、2/2 runnable hooks 及 payload PASS。未修改客户端版本或全局身份配置。
  • 其他受支持安装:Pi、CodeWhale、Reasonix 源链接检查 PASS。OpenCode 静态检查对运行时发现标 MANUAL,已直接执行 opencode debug skill(退出 0),12/12 Thinloop skills 被发现。DSH 12/12 源链接 PASS,保守 YAML 检查因现有 !!js 标 MANUAL,已由独立捆绑 CLI config-dump 与实际格式库校验补充直接证据;不宣称运行中的桌面进程已重新加载。WorkBuddy 按仓库规则 SKIP。
  • 清理:任务工作树 work/thinloop-dsh-v4 已移除;本地与远端 fix/108-dsh-v4-source 均不存在;未创建任务连续性状态文件。原主检出三个无关未跟踪项及 mem0 已有未提交工作均保留。
  • 三本账:A1/A2/A3 PASS;T1/T2/T3 DONE;CI、独立验收、合并版本、安装状态和任务资源清理已闭合。无页面变更。真实桌面聊天仍由用户重启 DSH 后使用验收。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions