让模型自主决定何时压缩与保留上下文
25.9/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/12 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Asaka-RUM/dsh-acp该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 73 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 模型自主压缩上下文
- 模型决定保留内容
DeepSeek Harness 的主动上下文修剪(ACP)——模型驱动的上下文压缩插件,移植自 ranxianglei/opencode-acp(AGPL-3.0)。
README
由 DeepSeek 最新模型翻译生成dsh-acp
DeepSeek Harness 的主动上下文裁剪(ACP)
署名 — 本项目移植自 ranxianglei/opencode-acp(AGPL-3.0),而后者又是 Tarquinen/opencode-dynamic-context-pruning 的加固分支。原始设计的功劳归他们所有;本仓库以相同的 AGPL-3.0-or-later 许可证重新分发这一思路,并由 Asaka-RUM 针对 DeepSeek Harness 插件系统做了改造。
署名声明 — 本项目移植自 ranxianglei 的 opencode-acp(AGPL-3.0),而后者又是 Tarquinen 的 opencode-dynamic-context-pruning 的加固分支。原始设计功劳归上述作者所有;本仓库以相同的 AGPL-3.0-or-later 许可证发布,由 Asaka-RUM 针对 DeepSeek Harness 插件系统做了适配改造。
为 DeepSeek Harness (DSH) 提供模型驱动的上下文压缩。这里不用宿主机固定的截断策略,而是让模型自己掌管上下文:它盯着压力,决定何时压缩、保留什么。
展开完整文档(README 剩余 1 节)
dsh-acp
DeepSeek Harness 的主动上下文裁剪(ACP)
署名 — 本项目移植自 ranxianglei/opencode-acp(AGPL-3.0),而后者又是 Tarquinen/opencode-dynamic-context-pruning 的加固分支。原始设计的功劳归他们所有;本仓库以相同的 AGPL-3.0-or-later 许可证重新分发这一思路,并由 Asaka-RUM 针对 DeepSeek Harness 插件系统做了改造。
署名声明 — 本项目移植自 ranxianglei 的 opencode-acp(AGPL-3.0),而后者又是 Tarquinen 的 opencode-dynamic-context-pruning 的加固分支。原始设计功劳归上述作者所有;本仓库以相同的 AGPL-3.0-or-later 许可证发布,由 Asaka-RUM 针对 DeepSeek Harness 插件系统做了适配改造。
为 DeepSeek Harness (DSH) 提供模型驱动的上下文压缩。这里不用宿主机固定的截断策略,而是让模型自己掌管上下文:它盯着压力,决定何时压缩、保留什么。
Raw ──compress──▶ T1 capture (~45×) ──distill──▶ T2 refine (~10×) ──condense──▶ T3 facts (~5×)
▲ │
└── decompress ──────┘
如何对应到 DSH
opencode-acp 直接改写要发出的消息列表。DSH 不向插件暴露这一层——也不需要:DSH 自带一流的压缩架构,所以这个插件顺着它走,而不是跟它对着干。
| opencode-acp | dsh-acp |
| compress 工具(模型写摘要) | acp_compress —— 原始区间 → 宿主 ctx.compaction.compactRegion() 执行真正的裁剪;模型的摘要成为该块的搜索索引(t1 层)。块区间 → 层级提升(t1→t2→t3)完全在存储内完成,零表层开销 |
| decompress | acp_decompress —— 沿消费链回溯,通过延迟上下文重新注入摘要链 |
| acp_status + 提示词催促注入 | acp_status 读取 ctx.tokenMeter + ctx.llm.resolveModelInfo();催促在 agent/pre-step 触发,超过 minContextLimit 时(超过 maxContextLimit 时更强),最多每 nudgeFrequency 步一次 |
| search_context | acp_search —— 对块摘要做关键词打分,带层级权重(支持 CJK 的分词器) |
| 三层 LSM 存储 | 每个会话一个 JSON 文件,放在 ~/.dsh/acp/<sessionId>.json —— 重启后依然保留 |
| GC 截断兜底 | 不再重新实现 —— 宿主 compaction-basic 后端已经负责压力与溢出恢复 |
零核心补丁。 一切都走公共服务(ctx.tools、ctx.compaction、ctx.tokenMeter、ctx.llm),所以 DSH 更新不会把它冲掉。
安装
1. clone anywhere
git clone https://github.com/Asaka-RUM/dsh-acp E:\path\to\dsh-acp
2. link into a profile (junction)
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-acp" -Target "E:\path\to\dsh-acp"
3. 在配置档的 cordis.patch.yml 插入列表里注册
(在已有的 "- insert:" 块下面加上这两行)
- id: acp
name: 'dsh-acp'
4. 重启 DSH
裸区间剪枝需要 @deepseek-ai/dsh-compaction-basic 包(每个默认组合里都有)。兼容 DSH 0.1.0-rc.x(同步 resolveModelInfo())和 ≥ 0.1.1(异步 resolveModelInfo(provider, model))。
工具
| 工具 | 用途 |
| acp_status | 用量对比阈值、各层合计、推荐区间(以 n<seq> id 表示) |
| acp_compress | ranges: [{ startId, endId, summary }] —— 裸区间交给宿主引擎做真剪枝;块 id 向上合并 |
| acp_decompress | 把某个块的摘要链还原进持久上下文 |
| acp_search | 对压缩块做关键词搜索 |
配置(cordis 补丁) yaml
- id: acp
name: 'dsh-acp'
config:
enabled: true
contextWindow: 0 # 0 = auto via llm service
minContextLimit: 0.45 # nudges on at/above this fraction of the window
maxContextLimit: 0.55 # nudges turn strong here
nudgeFrequency: 3 # at most every Nth step
tailProtectNodes: 4 # newest surface nodes never offered as candidates
storeRoot: '' # empty = ~/.dsh/acp
设计说明
- 模型的摘要为什么「只是个索引」: 宿主引擎自己给被遮蔽的区间做摘要,走一次对缓存友好的前缀重放 llm.stream 调用。模型自己写的摘要另存一份,作为可搜索、可还原的索引——你既拿到 ACP 由模型判断的重要性,又拿到 DSH 对缓存安全的机制。
- 原文永不丢失: DSH 的 surface 契约把被遮蔽的事件留在原始会话日志里;块引用 startSeq–endSeq,所以没有东西找不回来。
- 服务访问是显式声明的(inject = ['agents','tools','tokenMeter','compaction','llm']),并带 ctx.get() 兜底——不去戳跨 fiber 代理。
面向 DeepSeek Harness(DSH)的模型主导上下文压缩插件:不做硬性截断,而是把上下文管理权交给模型自己——由模型观察用量,决定何时压缩、压缩什么、保留什么。
Raw ──compress──▶ T1 捕获(~45×) ──distill──▶ T2 蒸馏(~10×) ──condense──▶ T3 浓缩(~5×) ▲ │ └── decompress ──────┘
与 DSH 原语的映射
opencode-acp 靠改写发往 LLM 的消息列表实现剪枝;DSH 不对插件开放这个口子——也不需要:DSH 自带一流的 compaction 架构,本插件直接骑在上面。
| opencode-acp | dsh-acp |
| compress 工具(模型自己写摘要) | acp_compress — 裸区间 → 宿主 ctx.compaction.compactRegion() 执行真剪枝;模型的摘要存为该区间的可搜索索引(t1 层)。块区间 → 店内升层合并(t1→t2→t3),零 surface 成本 |
| decompress | acp_decompress — 沿消费链还原摘要层级,经延迟上下文重新注入 |
| acp_status + nudge 注入 | acp_status 读 ctx.tokenMeter + ctx.llm.resolveModelInfo();nudge 挂在 agent/pre-step,越过 minContextLimit 触发(越过 maxContextLimit 转强提醒),每 nudgeFrequency 步最多一次 |
| search_context | acp_search — 对块摘要做关键词打分,带层级权重(分词器支持中文) |
| 三级 LSM 存储 | 每会话一个 JSON 文件:~/.dsh/acp/<sessionId>.json,重启存活 |
| GC 截断兜底 | 不重复造——宿主 compaction-basic 后端自带压力/溢出恢复 |
零核心补丁。 全部走公开服务(ctx.tools、ctx.compaction、ctx.tokenMeter、ctx.llm),DSH 升级不会冲掉它。
安装 powershell
1. 克隆到任意位置
git clone https://github.com/Asaka-RUM/dsh-acp E:\path\to\dsh-acp
2. 以 junction 链入 profile
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-acp" -Target "E:\path\to\dsh-acp"
3. 在 profile 的 cordis.patch.yml insert 列表注册
(在已有 "- insert:" 块下加两行)
- id: acp
name: 'dsh-acp'
4. 重启 DSH
裸区间剪枝需要 @deepseek-ai/dsh-compaction-basic bundle(默认组合必装)。兼容 DSH 0.1.0-rc.x(同步 resolveModelInfo())与 ≥ 0.1.1(异步 resolveModelInfo(provider, model))。
工具
| 工具 | 用途 |
| acp_status | 用量与阈值对比、各层块统计、推荐压缩区间(n<seq> 编号) |
| acp_compress | ranges: [{ startId, endId, summary }] — 裸区间走宿主引擎真剪枝;块编号店内升层 |
| acp_decompress | 把块的摘要链还原进持久上下文 |
| acp_search | 关键词搜索已压缩块 |
配置(cordis patch) yaml
- id: acp
name: 'dsh-acp'
config:
enabled: true
contextWindow: 0 # 0 = 经 llm 服务自动探测 minContextLimit: 0.45 # 达到窗口此比例后开启 nudge maxContextLimit: 0.55 # 达到此比例转为强提醒 nudgeFrequency: 3 # 每 N 步最多提醒一次 tailProtectNodes: 4 # 最新 N 个 surface 节点不作为压缩候选 storeRoot: '' # 空 = ~/.dsh/acp
设计说明
- 为什么模型的摘要只是「索引」: 宿主引擎会用缓存友好的前缀重放 llm.stream,自己为被遮蔽区间生成正式摘要;模型写的摘要作为可搜索、可解压的索引并存。ACP 的「模型判断重要性」与 DSH 的缓存安全机制两者兼得。
- 原文永不丢失: DSH 的 surface 契约保证被遮蔽事件留在原始会话日志中;块记录 startSeq–endSeq,一切可回溯。
- 服务访问采用静态声明(inject = ['agents','tools','tokenMeter','compaction','llm'])并保留 ctx.get() 回退——不做跨 fiber 的代理窥探。
License / 许可证
AGPL-3.0-or-later — see LICENSE.
Ported from ranxianglei/opencode-acp (AGPL-3.0), a fork of Tarquinen/opencode-dynamic-context-pruning. Original copyrights belong to their respective authors; modifications for DeepSeek Harness by Asaka-RUM.
移植自 ranxianglei 的 opencode-acp(AGPL-3.0),其上游为 Tarquinen 的 opencode-dynamic-context-pruning。原始版权归各自作者所有;针对 DeepSeek Harness 的适配修改由 Asaka-RUM 完成。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Asaka-RUM/dsh-acp
让模型自主决定何时压缩与保留上下文
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1
这是你的仓库?认领条目