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

动态上下文裁剪 zzzxxxxxxxxxx/dsh-dcp

DeepSeek Harness
zzzxxxxxxxxxx27 天前有提交已提供中文文档扫描:含敏感能力

让模型自动压缩历史并清理重复的工具输出

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zzzxxxxxxxxxx/dsh-dcp
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · chat
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 27 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/5) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
  • 发起网络请求
    src/index.ts:823
    const outcome = await approval.request({
  • 读取本地文件
    src/prompts/index.ts:140
    if (seedDefaults && !existsSync(paths.defaults)) {
  • 写入本地文件
    src/prompts/index.ts:141
    mkdirSync(paths.defaults, { recursive: true })
  • 写入本地文件
    src/prompts/index.ts:143
    writeFileSync(join(paths.defaults, `${name}.md`), `${BUILT_IN[name]}\n`, 'utf8')
  • 读取本地文件
    src/prompts/index.ts:153
    if (!existsSync(file)) continue
  • 读取本地文件
    src/prompts/index.ts:154
    const body = stripComments(readFileSync(file, 'utf8')).trim()
  • 读取本地文件
    src/prompts/index.ts:188
    const stat = statSync(join(promptPaths().overrides, `${name}.md`))
  • 写入本地文件
    src/trace.ts:30
    appendFileSync(target, `${new Date().toISOString()} ${event}${fields.length > 0 ? ` ${fields}` : ''}\n`)
扫描于 2026/11/1(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-commands@deepseek-ai/dsh-compaction@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-format-v3-to-v4@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-token-meter@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-approval
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 模型驱动上下文压缩
  • 裁剪重复工具输出

为 DeepSeek Harness 动态裁剪上下文——模型驱动的压缩与重复输出裁剪。

README

由 DeepSeek 最新模型翻译生成
dsh-dcp DeepSeek Harness 的动态上下文裁剪 —— 把历史交给模型自己收起来。 简介 - 模型驱动的压缩:compact 工具把一段连续历史折叠成模型自撰的摘要,落盘为 Harness 原生的 compaction 事务——对话里显示的就是原生的「上下文已压缩」卡片,插件不需要自绘界面。 - compact_targets / recall:前者列出可压缩的句柄与合法切割位置;后者按需把某次压缩移除的原文读回来,不动上下文。 - 自动去重:同一工具、同一参数的重复调用只保留最新一次的输出,更早的换成占位符;调用成功或失败一视同仁,最新那条的报错原文保留。 - 提醒:上下文压力越过阈值时提醒模型压缩一次,阈值默认是模型窗口的 33% / 67%。 - 底部读数:输入框下方的 pill 显示本会话的压缩与清理计数,点击展开明细。 所有状态都从会话日志折叠派生:除可选的提示词覆盖文件外,插件不写任何旁挂状态,也不新增会话事件类型;被裁剪与被压缩的原文仍留在日志里。 思路来自 opencode-dcp;以 AGPL-3.0 授权(见 LICENSE)。 安装 要求:DeepSeek Harness ≥ 0.2.0-rc.1,Node ^22.19.0 || >=24.0.0。
展开完整文档(README 剩余 1 节)
dsh-dcp

DeepSeek Harness 的动态上下文裁剪 —— 把历史交给模型自己收起来。

简介

- 模型驱动的压缩:compact 工具把一段连续历史折叠成模型自撰的摘要,落盘为 Harness 原生的 compaction 事务——对话里显示的就是原生的「上下文已压缩」卡片,插件不需要自绘界面。
- compact_targets / recall:前者列出可压缩的句柄与合法切割位置;后者按需把某次压缩移除的原文读回来,不动上下文。
- 自动去重:同一工具、同一参数的重复调用只保留最新一次的输出,更早的换成占位符;调用成功或失败一视同仁,最新那条的报错原文保留。
- 提醒:上下文压力越过阈值时提醒模型压缩一次,阈值默认是模型窗口的 33% / 67%。
- 底部读数:输入框下方的 pill 显示本会话的压缩与清理计数,点击展开明细。

所有状态都从会话日志折叠派生:除可选的提示词覆盖文件外,插件不写任何旁挂状态,也不新增会话事件类型;被裁剪与被压缩的原文仍留在日志里。

思路来自 opencode-dcp;以 AGPL-3.0 授权(见 LICENSE)。

安装

要求:DeepSeek Harness ≥ 0.2.0-rc.1,Node ^22.19.0 || >=24.0.0。

从 npm 装(推荐):

dsh plugin --profile <profile> add @zzxxxxxx/dsh-dcp

从源码装 / 本地开发:

git clone https://github.com/zzzxxxxxxxxxx/dsh-dcp && cd dsh-dcp
npm install # 构建依赖,首次需要网络
npm run build # 产出 lib/(插件入口;仓库里不提交构建产物)

dsh plugin --profile <profile> add "$PWD"

从 git 直接装(仓库推送到 GitHub 后可用;prepare 会在安装时构建 lib/,而 pnpm 默认拦下依赖的构建脚本,需先在 profile 的 pnpm-workspace.yaml 里授权):

dsh plugin --profile <profile> add github:zzzxxxxxxxxxx/dsh-dcp

装完后重启 dsh(profile 在启动时组合)。

- dsh plugin --profile add ... 只往 profile 加一条依赖,插件行由本包自带的 bundle patch 挂载。
- 更新:源码装则 git pull && npm install && npm run build;git 装则重新 add 一次。之后都要重启。
- 卸载:dsh plugin --profile remove @zzxxxxxx/dsh-dcp,再重启。
- 浏览器半边(读数 pill 与设置页)只在带 Web 界面的 profile 里出现;其他 profile 下模型工具、压缩与去重照常工作。

用法

- /dcp-compact [focus]:让模型立刻跑一次压缩,可选一段 focus 文本收窄范围。宿主的 /compact 是另一条独立路径,两者互不干扰。
- 模型侧工具:compact(把区间折成摘要,摘要由模型自己写)、compact_targets(列出句柄与合法切割点)、recall(读回原文,可用 query 过滤、offset 翻页)。是否可用由 compaction.permission 决定。
- 自动:每个回合边界跑一次去重;上下文压力越过阈值时按 nudgeFrequency 的间隔提醒模型压缩。
- 手动模式(manualMode.enabled):停发提醒,只有你执行过 /dcp-compact 之后,模型才允许压缩一次。
- 读数:输入框下方的 pill 显示本会话的压缩块数、清理次数与省下的 token,点击展开明细。

配置

设置 → DCP 上下文(宿主 settings.section,id dsh-dcp)列出 12 个可热改字段,写入即时生效;其余 8 个写在插件行的 config: 里,改完重启。

{
"pruneNotification": "minimal", // off | minimal
"protectedFilePatterns": [],
"turnProtection": { "enabled": false, "turns": 4 },
"experimental": { "allowSubAgents": false, "customPrompts": false },
"commands": { "protectedTools": ["subagent", "skill", "compact", "write", "edit", "plan_enter", "plan_exit"] },
"manualMode": { "enabled": false, "automaticStrategies": true },
"compaction": {
"permission": "allow", // allow | ask | denyjson
"maxContextLimit": "67%", // 窗口百分比,或绝对 token 数 "minContextLimit": "33%",
"modelMaxLimits": {}, "modelMinLimits": {},
"nudgeFrequency": 5,
"protectedTools": ["subagent", "skill"],
"protectUserMessages": false,
"recall": true
},
"strategies": { "deduplication": { "enabled": true, "protectedTools": [] } }
}

| 字段 | 默认 | 说明 | 热改 |
| pruneNotification | "minimal" | 自动清理后的报告:minimal 一行计数,off 只留在面板 | ✓ |
| protectedFilePatterns | [] | 路径 glob:命中的调用不被去重改写,压缩时其正文进摘要附录 | |
| turnProtection.enabled | false | 不把最近几轮列入清理候选 | ✓ |
| turnProtection.turns | 4 | 保护多少轮 | ✓ |
| experimental.allowSubAgents | false | 让 DCP 也裁剪子代理会话(默认不动它们) | ✓ |
| experimental.customPrompts | false | 允许 $DSH_HOME/dcp-prompts/ 下的提示词覆盖 | ✓ |
| commands.protectedTools | subagent skill compact write edit plan_enter plan_exit | 三张保护表之一;同时管辖 /dcp-compact 的 sweep 与面板 | |
| manualMode.enabled | false | 停发提醒,只在你显式请求后允许压缩一次 | ✓ |
| manualMode.automaticStrategies | true | 手动模式下是否继续去重 | ✓ |
| compaction.permission | "allow" | allow 直接执行;ask 走宿主审批;deny 不注册模型工具 | |
| compaction.maxContextLimit | "67%" | 强提醒阈值:高于它要求立刻压缩 | ✓ |
| compaction.minContextLimit | "33%" | 弱提醒阈值:低于它完全不提醒 | ✓ |
| compaction.modelMaxLimits | {} | 按 "provider/model" 覆盖强阈值 | |
| compaction.modelMinLimits | {} | 按 "provider/model" 覆盖弱阈值 | |
| compaction.nudgeFrequency | 5 | 每多少个对话节点最多提醒一次 | ✓ |
| compaction.protectedTools | subagent skill | 正文逐字进摘要附录,并豁免去重 | |
| compaction.protectUserMessages | false | 用户消息逐字保留(粘贴的大段提示词不会被压掉) | ✓ |
| compaction.recall | true | 是否注册 recall 工具 | |
| strategies.deduplication.enabled | true | 是否改写重复调用的旧输出 | ✓ |
| strategies.deduplication.protectedTools | [] | 额外的去重豁免表 | |

几条语义:

- 百分比阈值需要路由上报 context window;上报不了就不提醒,不会退化成固定 token 数。
- 三张「受保护工具」表都会被去重读取:写进 compaction.protectedTools、commands.protectedTools 或 strategies.deduplication.protectedTools 中任意一张,该工具的旧输出都不会被自动改写(commands 的默认表因此让 write/edit 天然免疫去重)。
- protectedFilePatterns 同时作用于去重与压缩:命中的调用不会被改写,压缩时其正文进摘要附录。glob 是 fail-open 的:单个待匹配值超过 8192 字符、单条 pattern 超过 4096 字符,或匹配步数超过 1 048 576,一律按「不匹配」处理——后果是少保护,不会多保护;收集一次调用声明的路径时最多扫描 10000 个节点。
- experimental.customPrompts 打开后,可用 $DSH_HOME/dcp-prompts/overrides/<name>.md 覆盖 4 份提示词(compact、compact-targets、context-limit-nudge、turn-nudge);nudge 的「这不是用户发言」前缀由插件在载入时补回,删不掉。开关与覆盖文件的改动即时生效,无需重启。
- 排障开关 DSH_DCP_TRACE:设成文件路径后,插件把每次判定按行追加进去(为什么提醒、为什么跳过及其输入、投递结果、配置与提示词是否真的重载、每回合自动清理的产出)。不设就一个字节都不写;没开 trace 时插件不留任何文件。宿主日志(所有插件,不止 DCP)用 dsh-logger-panel 看。
- 本插件仍在早期,可能还有 bug。遇到问题请到 Issues 反馈,并附上 DSH_DCP_TRACE 生成的日志——它把判定过程写得比会话记录清楚得多。
预览分享卡片长什么样 ↓zzzxxxxxxxxxx/dsh-dcp
分享 · DeepSeek Harness Hub
zzzxxxxxxxxxx/dsh-dcp

让模型自动压缩历史并清理重复的工具输出

回到顶部