DAG总览 / 组目录 / G07 上下文压缩

dsh-compaction-basic · @deepseek-ai/dsh-compaction-basic

Layer 6G07
目录:ACP 协议API 网关与控制器附件启动与插件管理客户端运行时客户端 UI 包上下文压缩上下文注入核心运行时凭据与授权交付物文档处理实验特性宿主扩展反馈通道文件系统目标与计划工具守卫Hooks 扩展宿主服务交互命令作业调度LLM 适配LSP 集成MCP 协议规划模式Agent 预设代码执行运行时运行时诊断沙箱定时调度SDK 与协议会话核心会话检索设置Shell 执行技能溢出存储SSH 远程执行存储子代理子进程终端待办类型契约框架 vendorWeb 访问Webhook工作流工作区
依赖链 · 上游(该插件依赖的前驱):
依赖链 · 下游(依赖该插件的节点):
无下游(叶子/被消费端)
同一拓扑层(Layer 6,层次遍历层序):
↑ Layer 5(55 插件)Layer 6↓ Layer 7(16 插件)

插件信息

包名@deepseek-ai/dsh-compaction-basic
分组G07 · 上下文压缩
拓扑层Layer 6(层次遍历:被依赖方先于依赖方)
源码路径packages/compaction/compaction-basic

① 实现逻辑

压缩 seam 的基础后端实现 BasicCompactionEngine,继承 CompactionEngine 并实现 summarize/compactIfNeeded/compactRegion/compactNow 四个钩子(src/index.ts:113、src/index.ts:247、src/index.ts:269、src/index.ts:358、src/index.ts:383)。summarize 通过一次 ctx.llm.stream() 复用会话原有 system/tools/消息前缀做 KV-cache 友好的摘要调用(src/summarizer.ts:120-181);region.ts 负责可压缩区间的选择、工具配对边界校验与 compaction/start→summary→end 的持久化事务(src/region.ts:117-155、src/region.ts:173-276)。apply 阶段注册 agent/pre-step 压力检测、agent/request-error 上下文溢出恢复(按 maxOverflowRetries 重试)等自动监听器(src/index.ts:148-235)。配置在加载期做严格校验并按路由模型解析阈值/保留/摘要预算(src/config.ts:68-110、src/config.ts:153-217)。

内部结构动态 DAG(深色主题:橙色=上游依赖 · 绿色=下游依赖 · 棕色=外部seam · 蓝=本插件)
本插件 上游依赖 下游依赖 外部 seam

② 注册/提供(provides)

③ 依赖(depends_on · 上游前驱)

dsh-agentE1+E2
在 agent 的步边界与请求错误扩展点上挂自动压缩与溢出恢复,并借 agent.runMaintenance 预约空闲会话的手动压缩
src/index.ts:15 import type Agent/PreStepDecision + src/index.ts:158 ctx.on('agent/pre-step') + src/index.ts:178 ctx.on('agent/status') + src/index.ts:190 ctx.on('agent/request-error') + src/index.ts:390 agent.runMaintenance
dsh-commandsE1
手动命令发起的压缩需把发起命令身份写进压缩生命周期事件用于呈现关联
src/index.ts:16 import type CommandId + src/region.ts:18 import type CommandId + src/region.ts:392 sourceCommandId
dsh-compaction-tool-result-prunerE1+E2
可选地先执行无模型工具结果裁剪降低压力,再决定是否摘要;缺少该插件时保持可独立组合
src/index.ts:18 type-only import (makes sibling service available to ctx.get) + src/index.ts:292 this.ctx.get('toolResultPruner') + src/index.ts:295 prune.pruneSession
dsh-llmE1+E2
解析路由模型上下文容量以计算压力阈值,并通过 llm 流式调用执行摘要、构造备份检查点消息
src/index.ts:12 import CONTEXT_WINDOW_EXCEEDED_CODE + src/index.ts:114 inject 'llm' + src/index.ts:304 ctx.llm.resolveModelInfo + src/summarizer.ts:163 ctx.llm.stream + src/region.ts:19 createUserMessage/errorChain
dsh-sessionE1+E2
直接读写会话表面的追加/替换事务与事件流,并在手动压缩后通过 sessions.flush 做持久化检查点
src/index.ts:11 import type Session/SessionSeq + src/index.ts:114 inject 'sessions' + src/index.ts:184 ctx.on('session/event') + src/index.ts:411 ctx.sessions.flush + src/region.ts:22 import SessionSeq/Session/SessionEvent
dsh-token-meterE1+E2
用统一 token 计量器测量表面压力、估算摘要替换体积,并驱动所有保留与收缩定价决策
src/index.ts:114 inject 'tokenMeter' + src/index.ts:277 ctx.tokenMeter.measure + src/region.ts:21 import type TokenMeasurement/TokenMeter + src/region.ts:417 meter.estimateMessage

④ 被依赖(dependents · 下游消费者)

无下游(叶子/被消费端)