🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

主动上下文裁剪 Asaka-RUM/dsh-acp

DeepSeek Harness
Asaka-RUM73 天前有提交已提供中文文档扫描:未发现敏感能力

让模型自主决定何时压缩与保留上下文

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
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 73 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
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 完成。
预览分享卡片长什么样 ↓Asaka-RUM/dsh-acp
分享 · DeepSeek Harness Hub
Asaka-RUM/dsh-acp

让模型自主决定何时压缩与保留上下文

这是你的仓库?认领条目

回到顶部