dsh 基线与对齐

Tether 是 deepseek-harness(dsh)的 C# 重实现。 本页固定三件事:对照的是 dsh 的哪个版本、dsh 底层机制里哪些语义是必须复刻的、以及"对齐与否"由什么制度裁决。

固定基线

当前行为对照固定为 dsh ddefc45fbc7f8e46dd73185e68295696d1297887(tag dsh-v0.1.6-alpha.2),这是 2026-09-18 批准的锚点迁移;此前的锚点依次为 76fda729(2026-09-06)与 c291e79(2026-09-11)。完整 SHA 是读取权威,不随 master 或 tag 后续变化漂移。

当前目标入口 #259(c291e79→ddefc45f)与历史 ledger #241(76fda729→c291e79)、#186(dd6322d6→76fda729)、#100 分开:#100 仍记录 528c682e061696f5a160f363f236ecbf53cbd006 → cd5ef8148158c3a752a658978873241fdf8e2bbc 的 1114 commits,不把历史 alpha.1 重新设为当前目标。旧条款若已在当前快照撤回,按双侧代码证据裁定;保留义务继续由原 owner 或明确的承接 issue 跟踪。#106 的保留范围由 #208 承接,#121 的保留范围由 #209 承接。

#1 保留 2026-08-21 等历史迁移与能力记录,不代表当前所有能力均已追平。历史设计中的旧 SHA 保留其历史语境;新的基线迁移须明确记录目标、语义差额和 owner,不能只修改版本标签。

alpha.3 到 76fda729 的增量由 semantic disposition ledger 逐 32 个 first-parent 条目审计(历史页,锚点已两次前移,后续区间的 ledger 只在 GitHub issue 上维护);它只记录 delta、证据与 owner,不替代 GitHub milestone 的完成状态。

dsh 的底层机制

Tether 复刻的是 dsh 的调用方可观察语义,而不是它的包名或内部实现。以下机制是 dsh 的骨架,也是 Tether 设计的对照基准:

Cordis 插件架构。 dsh 构建在 vendored 的 Cordis 之上:插件贡献服务、类型化事件与可逆 effect;没有特权核心可打补丁,模型适配器、工具注册表、会话日志、agent 循环本身都是插件,从配置即可替换。Tether 的 Cordis 层 逐项对应:服务仓库 + 事件总线 + effect 作用域三合一的 Context、inject 激活图、注册即回收。

事件派发四模式。 dsh 的 emit / waterfall / parallel / serial 各有严格语义,且派发模式是事件公共契约的一部分(dsh 用 @mode 标注、由生成目录校验)。Tether 的 事件系统 已对齐 bail 判定、waterfall 嵌套、普通 listener 异常传播和 parallel 全失败聚合;EmitContained 是调用方显式选择的通知扩展。

turn/step 括号结构。 dsh 里 step 是”一次模型请求加它调起的工具”,turn 是零或多个 step:先认领输入、组装提示词与工具 schema、过 agent/pre-step,请求流经 llm/stream,工具走 tools/* 四段 waterfall,agent/turn-stopping 决定关闭或继续。Tether 的 Agent 生命周期 复刻同一骨架。

一切皆事件溯源。 dsh 把 model-visible 的一切——输入、chunk、工具调用与结果、标题请求——都写成 append-only SessionEvent,重放可重建全部领域状态。Tether 的 AgentLoop 已逐块追加 provider-neutral assistant/chunk,最终 assistant/message.sourceEventSeqs 精确引用本次成功/中断 attempt 的 durable 前缀。物理编码不改变逻辑事件;当前 Session SQLite 去留按 #150 已批准的 FOLLOW 决策实施,不将旧 schema 目标继续当作 dsh 必需能力。

Profile / bundle 分层组合。 dsh 的进程形状由 profile 叠 bundle 叠 cordis.patch.yml 的有序层决定,任何一行都能被上层 patch 替换。Tether 的 预设与 Bundle 以 stable-id 有序补丁对齐同一组合语义(不做 !!js 表达式,用环境变量替换,属记录在案的偏离)。

对齐矩阵与 deviation 制度

“哪些能力已实现、哪些故意不同”的唯一事实来源是 GitHub milestones/issues,其中 #100 记录历史 delta 归属(README 与本站都不维护第二份进度表)。矩阵按 milestone 分组,每一行标注 dsh 能力族、Tether 状态、owner issue 与剩余义务。状态只有三种:

  • implemented —— 语义已对齐并有回归测试;
  • partial —— 主体落地但基线义务未齐(矩阵写明缺什么);
  • intentional deviation —— 有意不同。每条 deviation 必须说明 dsh 语义、Tether 映射、差异后果与验收证据四要素,且不允许把”尚未交付”提前标记成 deviation。

当前记录在案的 deviation 举例:

能力dsh 语义Tether 映射
LLM 路由llm-pi-ai 单适配器v0.1 保留 Direct DeepSeek 单例 + 独立 multi-provider 适配器(#52 收口 rc.8 compat)
cached token 计数供应商 wire 值InputTokenCount 保留 wire 总数、CachedInputTokenCount 表示其子集,贴合 MEAI 字段语义
沙箱多平台原生 confinementmacOS seatbelt 同世界;E2B 容器世界已按 #271 退役,不支持的原生 confinement fail closed
LSP framingStreamJsonRpc手写 Content-Length JSON-RPC,零额外依赖
test-support 包独立 TS 包以测试程序集 + loopback server + scripted model 提供等价能力
压缩压力预算锚点 ddefc45f:floor(W × ratio) 阈值,summary 上限 8192#365 提前实现 v0.22 目标 c36a83ff 的 W − O − headroom 双帽阈值与 65 536 summary 上限(四要素见上下文压缩)

验收纪律

矩阵末尾的验收标准是每行状态的前提,摘录核心四条:

  • 每个 Service 能力包含 Definition / Provider / Consumer 三角色,不适用的角色必须写明原因;
  • 所有 model-visible 输入、结果与替换都可从 SessionEvent 重建;
  • lifecycle、取消、失败、恢复、owner teardown 与跨 Agent 隔离都有针对性测试;
  • 产品可见行为通过真实 composition、发布进程与无密钥 snapshot 验收。

下一步

在 GitHub 上编辑此页