Files
deepseek-harness/docs/rfc/rejected/simplification/2026-07-19-fold-compaction-package-split.zh.md
2026-07-19 11:12:26 +08:00

3.1 KiB
Raw Blame History

RFC: 将唯一的压缩后端并入服务包

Status: rejected — 计划增加更多压缩后端,因此接口包与 basic 实现包继续分离。

English | 中文

问题

压缩compaction目前拆分在两个包中@deepseek-ai/dsh-compact 拥有一个含两个方法的抽象服务和共享类型,@deepseek-ai/dsh-compact-basic 拥有唯一的完整实现。交付配置只加载 basic 包,除了该实现外,没有生产包独立消费接口包。

该拆分增加了一份包packagemanifest元数据清单、README、项目边界、依赖边、抽象转发类、生成目录项和组合接线却没有体现后端替换需求。能力服务边界决策要求接口、实现和消费方都必须真实存在,而不能预先拆分;压缩决策也记录了独立消费方仍被推迟。

提案

把 basic 实现移入 @deepseek-ai/dsh-compact,并删除 @deepseek-ai/dsh-compact-basicctx.compactCompactionResult、共享 transcript文本记录和工具配对辅助方法、现有配置以及具体压缩算法都由一个包负责。

保留 summarize() 作为受保护的自定义钩子。部署专用的摘要器可以通过继承或拦截现有 LLM大语言模型调用完成定制无需第二个能力包。只有在第二个完整后端与独立消费方确实需要替换实现时才重新提取接口包。

如果本提案获准,应同步修订已实现的压缩决策与可回忆压缩提案,使包所有权只有一处持久说明。

备选方案

为可能出现的远程或回忆后端保留拆分。 一种可能的未来实现不足以支撑当前包边界。回忆功能会增加压缩结果的消费方,但不一定增加另一种实现;远程摘要器也可以使用受保护钩子。

让接口包并入实现包名。 如果保留 compact-basic 作为最终名称,产品服务会看起来像一个可选后端。compact 已经是 ctx.compact 使用的稳定服务标识,更适合作为单包所有者。

验收标准

  • 删除 @deepseek-ai/dsh-compact-basic 及其工作区和包元数据。
  • @deepseek-ai/dsh-compact 拥有当前配置、插件类、算法、类型、事件和共享辅助方法。
  • 现有部署可以使用等效配置加载保留的包,模型可见行为不变。
  • 自动压缩和手动压缩保留取消、锁、token 用量、工具配对、持久事件、来源、重试收敛和 transcript 渲染行为。
  • Loader 组合、单元、失控轮次、取消、快照和真实模型压缩测试全部通过;生成目录与模块图保持最新。

风险

这是一项有意实施的预发布包名收缩。加载 @deepseek-ai/dsh-compact-basic 的嵌入方必须切换包,未来的后端替换也需要重新提取边界。只有在仍然只有一个完整实现时,这项代价才可接受;如果第二个后端先行落地,应重新评估是否接纳本提案。