DSH 上游差异

August 25, 2026 · View on GitHub

基线

DSH 兼容版本0.1.1-rc.2
上游仓库https://github.com/deepseek-ai/deepseek-harness
当前导入基线b150a551b8d465e31e418e1b2eaf5e79bbb7d28e(2026-08-22 换树,分支 sync/0.1.1-rc1,基于 origin/main 的 rc8 树)
本仓库位置harness/git submodule,2026-08-27 自 vendored 转换;内容应与上游 b150a551 完全一致,发行版增量全部在 overlays/harness/

版本线说明:上游 0.1.0-rc.8 → 0.1.1-rc.1(528c682e,08-21)→ 0.1.1-rc.2(b150a551,08-22,35 提交)。rc.1 在本次同步完成前即被 rc.2 取代:rc.2 主体为图像管线大一统(master/Files 双请求合并、附件规范化编码、deepseek Files 回退、read_image 缩放坐标),并回滚了权限默认值重做(#2608 revert)。本同步直接以 rc.2 为目标。

机器可读值以 maintenance/upstreams.json 为准。本文件记录当前 0.1.1-rc.2 基线、已移出 harness 的发行适配,以及升级 rc 时必须验证什么。harness 源码本身不应承载 Marisa 专用修改。

Harness 源码差异

文件/范围Marisa 修改或同步关注点原因上游同步动作
上游 CLI 与 Web 树当前直接使用上游原生能力;Marisa 通过 launcher/profile 参数选择 marisa避免在 harness 内维护发行版专用源码分叉同步时只更新上游 pin,并运行 profile/boot 验证
tsconfig.host.jsonapps/web/package.json无 Marisa 源码 patch;保持上游的项目引用、examples/website 类型范围和 Vite 构建命令(0.1.1-rc.1 验证:均未变,verify-repository 断言继续成立)harness 只作为上游基线同步,不承载发行版 workspace 适配更新 submodule 时只需 checkout 上游 pin;发行构建适配放在根 workspace/profile/打包阶段
packages/host/webserverpackages/client/webrc7 host/client 使用同一协议树,host.describe.canOpenPath 由双方同源 schema 约束修复旧版 host/client 不一致导致的握手重连后续同步优先确认上游是否已提供等价能力,避免重复补丁
apps/cli/config/agent-presets/anchored-standard/(2026-08-21 引入,2026-08-27 已移出 harness、overlay 化锚定标准实验预设:tool-bootstrap.mjs vendored 自 xiaobright/dsh-anchored-standard@95b98af(MIT,SHA-256 84CF3D58…)+ agent.cordis.yml = rc7 standard + 锚定增量(bootstrap 行第一、Minimal persona complete、tool-bash 全平台禁用)+ preset.yml/LICENSE。现存放于 overlays/harness/agent-presets/anchored-standard/,由 scripts/apply-harness-overlays.mjs 在构建/打包阶段复制到 apps/cli/config/agent-presets/anchored-standard/(CLI profile-boot.tsSHIPPED_PRESET_ROOT 消费点),harness 工作树不再承载该目录实验预设不属上游产品面;Windows 无持久 PTY bash,persistent-shell 组按平台禁用换树时无需重放:overlay 自动应用;上游若引入等价预设再评估删除
品牌兜底字符串(apps/web/index.html 标题、apps/web/vite.config.tspackages/client/ui-sidebar/src/client/SidebarRoot.tsxpackages/client/ui-renderer/src/client/DocumentTitle.tsx2026-08-27 已移出 harness、overlay 化:四文件全部还原为上游 b150a551 原文(DSH Local Build;index.html 另含 lang="en"zh-CN 中文化),Marisa 文案由 overlays/harness/brand-replacements.json 替换表在构建期应用(scripts/apply-harness-overlays.mjs),lib/ 产物固化品牌后源文件还原。品牌相关测试与快照保持上游断言(品牌行为改由构建产物验证,见 scripts/apply-harness-overlays.mjs 文档)侧边栏 sidebar.brand.name 槽无占位者时外壳渲染兜底文案;Marisa 构建不设 DSH_CLIENT_BUILD_PROFILE=official(官方 ui-brand-official 不激活),文档标题同理读不到 DSH_CLIENT_TITLE换树时无需重放;若上游恢复构建期品牌注入或 Marisa 改为品牌 client 插件占位,删除替换表对应条目
scripts/release/(9 个发布脚本)非 Marisa 修改;2026-08-22 发现 rc8 换树时被根 .gitignorerelease/ 规则误吞(git add -A 静默跳过 harness/scripts/release/该 ignore 规则本意是发行构建产物目录,不适用于上游源码路径换树后需 git add -f harness/scripts/release 显式入库;0.1.1-rc.1 已恢复
Windows 平台形态(symlink/可执行位)上游 6 个 symlink 条目以内容等价的普通文件入库(120000→100644),若干脚本不带可执行位(100755→100644);blob SHA 与上游逐一核对一致Windows checkout(core.symlinks=false)的系统性形态,非源码修改对象层比对以 blob SHA 为准,mode 位差异不算增量

当前基线已完成 rc7 同源 host/client 同步;canOpenPath 缺失不应再通过手工响应字段规避。

Harness 边界

harness/ 自 2026-08-27 起是 git submodule.gitmodules 登记 deepseek-harness,gitlink pin 到 b150a551b8d465e31e418e1b2eaf5e79bbb7d28e = dsh-v0.1.1-rc.2):工作树与上游零差异(anchored-standard 预设与品牌兜底字符串已于同日移入 overlays/harness/,发行版增量唯一合法存放处,构建期由 scripts/apply-harness-overlays.mjs 应用,verify-repository 会拦截 harness 树内的 overlay 残留)。fresh clone / CI 需 git submodule update --init harness(CI 的 actions/checkout 已带 submodules: recursivebuild.ps1 有幂等兜底)。核对口径:git -C harness diff b150a551 应为空(Windows 工作树的 CRLF/mode 位差异不影响 blob;scripts/verify-mirror-purity.mjs --ids harness 可复验)。工作区中 agent notes 或生成物(*.tsbuildinfo.claude/skills/ 等)不应进入发行提交。换树同步 = 人工 pin bump(scripts/sync-upstream.mjs harness 只产出 review 候选),避免把换树同步误读为 Marisa 源码修改。

根 workspace 与依赖图

harness/pnpm-lock.yamlharness/pnpm-workspace.yaml 不进入根依赖图;根 workspace 和根 lockfile 是唯一依赖图。打包阶段复制 harness 时排除其嵌套 workspace 文件,避免 pnpm 11 触发二次安装。

harness 目录内不得直接执行 pnpm 命令(会触发 deps-status 自动 install):构建一律从根 workspace 发起 pnpm --filter @deepseek-ai/dsh-root run build(build.ps1 step 3、CI 同此形态);harness 内测试用 node 直跑 vitest。本机裸跑 pnpm install(无 CI=true)时 harness 的 postinstall(install-lefthook)会在 submodule 仓库上拒绝配置 extensions.worktreeConfigcore.worktree 位于 common config)——以 $env:CI='true'--ignore-scripts 运行(build.ps1 已内置 CI=true,CI 环境天然跳过)。

发行组合差异

  • MyGO Core、Hub、CLI 和 Web Panel 以 vendored 源(dsh-mygo/0.2.0-rc.7)经 file: 依赖装载,作为设置页内的插件市场与生命周期入口。
  • marisa-bundle 将 vendored cordis 作为直接 file: 依赖,生产 bundle 不依赖开发 workspace 的 peer 解析。
  • interpretersya-workspace-sidebarmineruaigc-canvas 已插入并完成 boot 链路验证。
  • YAS 保留在 vendored 依赖中,但因与官方 tool-subagent 撞名暂不默认挂载;重新评估时必须先禁用官方项。
  • dsh-llm-fallbacksdsh-sonardsh-trackdsh-diff-viewerdsh-multimedia-webui-inputdsh-suggested-replies 的 rc7 功能兼容性仍待重测,不能把历史 rc6 结论视为 rc7 结论。

插件逐项状态见 rc7-plugin-compatibility.mdplugins.md

删除差异的原则

上游已经提供等价能力时,应优先删除 Marisa 补丁,而不是永久维护双实现。每次 rc 同步必须逐项判断“重放、迁移或删除”,并更新本文件。