Skip to content

支持 DeepSeek Harness 插件安装:宿主级挂载连续性插件并完成本机安装 #102

Description

@mindcarver

结果与范围

用户要求 Thinloop 以插件形式真正安装进 DeepSeek Harness(DSH)。当前状态:十二个 Skill 已链接到 ~/.dsh/skills,但连续性 Cordis 插件 .dsh-plugin/continuity.mjs 未挂载——~/.dsh/cordis.patch.yml 为空数组,旧文档要求把它手工加进 agent preset 的 agent.cordis.yml,且本机残留一份已与 0.1.5-rc.1 shipped standard preset 漂移的 ~/.dsh/.agent-presets/standard-thinloop/ 拷贝。

范围内:

  • 把 DSH 插件挂载方式修正为宿主级用户 patch 层($DSH_HOME/cordis.patch.yml,必要时含 profile 层),覆盖全部 preset(含 Electron desktop),消除 preset 拷贝漂移;
  • 插件 steer 消息 provenance 改为 plugin 来源(对齐官方 dsh-hooks-codex 桥的 Stop 处理);
  • .dsh-plugin/README.md、docs/installation.md、docs/verification.md 同步新挂载与验证方式;
  • config/platform-capabilities.json 与 scripts/verify-install.mjs 增加只读挂载检查(无 CLI 探测,纯文件系统);
  • 测试更新与新增;版本推进 0.17.1 并补发布说明;
  • 本机实际安装:写入 home 级挂载行、移除陈旧 standard-thinloop preset、完成组合与运行时验证。

范围外:其他平台行为、Skill 内容、DSH 源码修改、DSH 宿主升级。

方案与确认

实施方案:DSH 的 profile 组合顺序为 bundle patch → profile cordis.patch.yml → home 级 $DSH_HOME/cordis.patch.yml;desktop 宿主经 runProfile 使用同一组合代码(apps/desktop-host/src/index.ts),因此 home 级行对所有 profile 生效。dsh-scope 的事件过滤规则允许未打标签的宿主监听器接收 agent 作用域派发的 agent/turn-stopping(祖先可观察后代活动),与官方 dsh-hooks-codex/dsh-hooks-claude-code 桥的挂载形态一致,无需复制 agent preset。挂载行使用 file:/// 绝对 URL 指向源码检出内的 .dsh-plugin/continuity.mjs。

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

验收与任务

  • A1:node scripts/verify-install.mjs --platform dsh 能识别挂载状态——挂载行存在且指向当前源码时 hooks 检查为 PASS;未挂载时保持 MANUAL(skills-only 安装仍是受支持形态);fixture 测试覆盖两态。
  • A2:真实 DSH headless 会话行为验证——存在 SCD 管理但不可恢复的 .scd/tasks/current.md 时 Agent 停止前被纠正消息打断并补齐;无状态文件时静默不干预。
  • T1:.dsh-plugin/continuity.mjs 纠正消息 source 改为 { kind: "plugin", plugin: "thinloop-continuity" }。
  • T2:更新 .dsh-plugin/README.md、docs/installation.md、docs/verification.md 的挂载与验证说明。
  • T3:config/platform-capabilities.json 增加 DSH 挂载描述,scripts/verify-install.mjs 增加只读挂载检查。
  • T4:更新 tests/platform-capabilities.test.mjs 预期并新增挂载检查测试;tests/plugin-compatibility.test.mjs 增加 DSH 插件结构断言。
  • T5:版本推进 0.17.1(含全部版本表面)并新增 docs/releases/v0.17.1.md。
  • T6:本机安装——~/.dsh/cordis.patch.yml 写入挂载行;移除陈旧 ~/.dsh/.agent-presets/standard-thinloop/;dsh --profile web --dump-config 组合包含插件行;提示 desktop 需重启生效。

验证

  • A1:尚未执行。
  • A2:尚未执行。

完成审计

  • 验收闭合:A1、A2 待验证。
  • 实施账目:T1–T6 待完成。
  • 交付状态:精确差异、检查、独立验收、合并与清理待完成。

Activity

  1. mindcarver commented on Sep 30, 2026

    @mindcarver
    OwnerAuthor

    验证更新(实施完成,待独立验收)

    • A1:PASS(两态)
      • fixture:node --test tests/platform-capabilities.test.mjs 48/48,新增 4 个 DSH 用例——home patch insert 挂载 → hooks PASS;profile patch 绝对路径 → PASS;foreign 行与 node_modules bundle patch 忽略 → 保持 MANUAL;DSH_HOME 覆盖生效。
      • 本机:node scripts/verify-install.mjs --platform dsh → [PASS](skills 12/12、version 0.17.1、hooks 1/1 mounted via /Users/carver/.dsh/cordis.patch.yml)。
    • A2:PASS(真实 headless 会话,三面证据)
      • 治疗组(坏状态 + 插件挂载):Agent 停止前被纠正消息打断;状态文件 140 → 2996 字节,validateState 复核 {managed:true, managedBy:"scd-quickdev", issues:[]};随后允许停止,exit 0。
      • 对照组(坏状态 + 未挂载):直答"2",文件原样 140 字节。
      • 负向(挂载 + 无状态文件):直答"4",静默不干预。
    • 附加组合证据:dsh --profile headless|web --dump-config 均含 thinloop-continuity 行、零 patch 错误;裸行形式实测被拒(entry "thinloop-continuity" not found),文档记录了正确的 insert 形式。
    • 全量 node --test tests/*.test.mjs:266/269;3 个失败在干净 main 同样失败(本机代理环境 stderr 噪声,与差异无文件交集)。
    • check-version(11 surfaces 0.17.1)、sync-routing-kernel --check、四个评测定义校验:全部 PASS。
    • PR:DSH 插件化安装:宿主级挂载连续性插件(v0.17.1) #103(分支 feat/102-dsh-plugin-install,提交 64a6610,17 文件 +433/−59)。

    任务账目

    • T1:DONE——provenance 改为 { kind: "plugin", plugin: "thinloop-continuity" },结构测试断言通过。
    • T2:DONE——.dsh-plugin/README.md、docs/installation.md、docs/verification.md 三处同步。
    • T3:DONE——config/platform-capabilities.json 挂载描述 + verify-install.mjs 只读挂载检查(无 CLI 探测)。
    • T4:DONE——4 个新 fixture 用例 + 插件结构断言(plugin-compatibility.test.mjs)。
    • T5:DONE——11 处版本表面 0.17.1 + docs/releases/v0.17.1.md。
    • T6:DONE——本机 ~/.dsh/cordis.patch.yml 已挂载;陈旧 ~/.dsh/.agent-presets/standard-thinloop/ 已移除(备份于 /tmp/standard-thinloop-preset-backup);--dump-config 组合核对通过;desktop 宿主需重启后生效(启动时应用 patch 层,已在文档与发布说明标注)。

    完成审计:验收闭合(A1/A2 有直接证据);实施账目闭合(T1–T6 DONE);交付状态:待 CI、独立验收与合并。

  2. mindcarver commented on Sep 30, 2026

    @mindcarver
    OwnerAuthor

    完成审计(最终)

    独立验收

    已实际调用独立的新上下文子智能体(不继承实施对话;调用标识 e5c90807-d755-407d-94ea-01ae7db1f77f,目标版本 feat/102-dsh-plugin-install@64a6610)。它亲读 Issue #102 与 PR #103 全部 762 行差异,独立复跑:平台测试 48/48、插件契约测试 8/8、check-version(11 surfaces 0.17.1)、verify-install --platform dsh 挂载态 PASS、临时 DSH_HOME 未挂载态 MANUAL、dsh --profile headless --dump-config 组合含 thinloop-continuity 且无 patch 错误、A2 证据链(治疗组 2996 字节 + validateState issues:[] + stderr 打断记录;对照组 B 140 字节原样;C 空目录)、本机安装态与 CI。结论 PASS,无 BLOCKED 项。

    三本账

    • 验收闭合:A1 PASS(两态直接证据);A2 PASS(真实 headless 会话三面证据)。
    • 实施账目:T1–T6 全部 DONE(明细见前次评论)。
    • 交付状态闭合:PR DSH 插件化安装:宿主级挂载连续性插件(v0.17.1) #103 已合并(merge commit 9870a3e),本地/远端任务分支已删除,无任务工作树,仓库无 .scd/tasks/current.md(不适用),main 与 origin/main 一致且包含验收过的差异。

    合并后安装核对(AGENTS 规程)

    • DeepSeek Harness:verify-install --platform dsh → PASS(skills 12/12、version 0.17.1、hooks 1/1 mounted via ~/.dsh/cordis.patch.yml)。desktop 宿主需重启后应用 home 级挂载(启动时应用 patch 层)。
    • Codex:PASS(链接指向当前源码,0.17.1)。
    • Claude Code:已用原生 plugin marketplace update + plugin update 刷新 → PASS(thinloop 0.17.1,manifest/skills/hooks 全部一致)。
    • ZCode:UNVERIFIED(命名缺口,非本交付引入)——verify-install 的 ZCode 探测无法解析当前 CLI 的裸数组输出(前置缺陷,DSH 插件化安装:宿主级挂载连续性插件(v0.17.1) #103 未触碰该路径),刷新脚本因此拒绝执行,已安装端停留 0.17.0。跟踪于 verify-install 的 ZCode 探测无法解析当前 plugins list --json 输出形状 #104;未将其视为 PASS。
  3. mindcarver commented on Sep 30, 2026

    @mindcarver
    OwnerAuthor

    A1/A2 直接证据、T1–T6 DONE、独立验收 PASS、PR #103 已合并进 main(9870a3e)、资源已清理、三端核对完成(ZCode 缺口单列于 #104)。三本账闭合,关闭。

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