Zhuchen00123/dsh-compaction-cacheaware

Plugin插件 Native原生 ⭐ 2 MIT Sessions & Context会话与上下文

Reasonix风格的缓存感知压缩后端,适用于DeepSeek Harness(DSH)。模块化紧凑插件,支持从esengine/DeepSeek-Reasonix自动同步。

Project Overview项目介绍

This is a standalone Reasonix-style cache-aware compaction backend plugin for DeepSeek Harness (DSH). It implements the ctx.compaction interface, replaces the default basic compaction backend, and syncs with upstream Reasonix logic. Use it when you want Reasonix's compaction strategy in DSH. Note profile-level patches can't reach isolated preset realms, which need manual migration.

这是DeepSeek Harness(DSH)的Reasonix风格缓存感知压缩后端插件,实现了ctx.compaction接口,可替换默认基础压缩后端,同步Reasonix上游压缩逻辑。需要在DSH中使用Reasonix风格上下文压缩策略时使用。注意:预置的独立压缩域需要手动逐个迁移,配置补丁无法直接覆盖。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add github:Zhuchen00123/dsh-compaction-cacheaware

Zhuchen00123/dsh-compaction-cacheaware 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-compaction-cacheaware

Reasonix-style cache-aware compaction backend for DeepSeek Harness (DSH).

This is a standalone, modular DSH plugin. It implements the official @deepseek-ai/dsh-compaction seam (ctx.compaction) and is designed to be mounted instead of @deepseek-ai/dsh-compaction-basic inside a preset's compaction realm. It does not modify other plugins, presets, or host files.

🐋 收录于 DSH 插件社区目录(1024Store)

本仓库带 dsh-plugin topic,且 package.json 声明了有效的 dsh.bundle.patch(patch 文件随仓库同 revision 提交),可被 awesome-deepseek-harness-plugins 目录的静态校验收录。 在线市场:https://deepseek1024.com/

Docs

What it ports from Reasonix

  • One automatic trigger: compact_ratio (default 0.85), not multiple soft/snip/force thresholds.
  • One structured checkpoint: stable prefix + one summary + recent tail.
  • Recent tail budget: clamp(window×10%, 32K, 96K).
  • Checkpoint acceptance: normal candidates ≤ 50% of window and below the trigger; exceptional fixed-prefix path requires ≥25% savings.
  • Canonical transcript preserved: DSH's surface replace shadows the old range in the model-visible projection only; the raw session log remains the source of truth.
  • One summarizer call per transaction: no application-layer retry loops.
  • Reasonix summary headings: Standing facts & constraints, Goal, Decisions & rationale, Files & code, Commands & outcomes, Errors & fixes, Pending & next step.

Install / build

安装到 DSH profile(推荐)

已发布到 npm registry,直接安装:

cd "$env:USERPROFILE\.dsh\profiles\web"
pnpm add dsh-compaction-cacheaware

本包自带 DSH profile bundle 声明和 cordis.patch.yml。将 dsh-compaction-cacheaware 加入 profile 的 dsh.profile.bundles 后,DSH 会自动禁用 compaction-basic 并挂载本后端;不要再把同一条插入 patch 重复添加到 profile 的 cordis.patch.yml

也可以从 GitHub 安装:

pnpm add dsh-compaction-cacheaware@github:Zhuchen00123/dsh-compaction-cacheaware

本地开发 / 构建

pnpm install
pnpm build

如果不使用 profile bundle,也可以在 preset 的 compaction realm 里手动替换:

# - id: compaction-basic
#   name: '@deepseek-ai/dsh-compaction-basic'
- id: compaction-cacheaware
  name: 'dsh-compaction-cacheaware'
  config:
    compactRatio: 0.85
    checkpointCeilingRatio: 0.5
    recentTailRatio: 0.1
    recentTailMinTokens: 8192
    recentTailMaxTokens: 16384
    summaryMaxTokens: 16384

如果从源码本地调试,也可以直接用编译产物路径:

- id: compaction-cacheaware
  name: 'file:///absolute/path/to/dsh-compaction-cacheaware/lib/index.js'
  config:
    compactRatio: 0.85
    checkpointCeilingRatio: 0.5
    recentTailRatio: 0.1
    recentTailMinTokens: 8192
    recentTailMaxTokens: 16384
    summaryMaxTokens: 16384

Note: mounts inside an agent preset's isolated compaction realm replace compaction-basic there directly; the profile-level bundle patch cannot reach that realm, so every preset that ships compaction-basic in its own compaction group must be migrated to this package.

Keep @deepseek-ai/dsh-command-compact in the same realm so /compact uses this backend. The optional @deepseek-ai/dsh-compaction-tool-result-pruner can still be mounted as a sibling; this plugin reads it through ctx.get().

Configuration

Key Default Meaning
compactRatio 0.85 Sole automatic trigger fraction.
checkpointCeilingRatio 0.5 Normal auto-checkpoint acceptance ceiling.
recentTailRatio 0.1 Recent verbatim tail fraction.
recentTailMinTokens 8192 Lower bound for production tail (lowered from upstream 32K so compaction still triggers under token-meter underestimation).
recentTailMaxTokens 16384 Upper bound for production tail (lowered from upstream 96K, same reason).
summaryMaxTokens 16384 Summarizer output cap.
exceptionalMinSavingsRatio 0.25 Required savings when fixed prefix exceeds ceiling.
minRecentKeep 2 Minimum recent messages kept.
minCompactMessages 2 Minimum compactable messages.
maxPinnedFirstUserTokens 1500 Pin first user turn if ≤ this.
pinnedFirstUserWindowFrac 0.15 First-user pin window fraction cap.
protocolReserveTokens 256 Framing reserve.
summarizationProvider / summarizationModel '' Optional summary route; defaults to conversation route.
auto true Register automatic pressure/overflow listeners.

Modularity

  • The plugin only registers ctx.compaction and its own automatic listeners.
  • Realm self-check (since 0.1.11): mounting logs a warning when another compaction engine already owns ctx.compaction in the same realm, and if a later mount supersedes this instance, its automatic listeners stand down (warn-once, hot-reload aware) instead of racing the new owner. Note a profile-level bundle patch cannot reach an agent preset's isolated compaction realm — migrate each preset individually.
  • It does not edit dsh-wsl-bash, dsh-team-dashboard, router-opencode-wsl, or any other plugin.
  • To use it, mount it in your own preset or profile patch; see cordis.patch.example.yml in this package.

Keeping in sync with Reasonix

scripts/sync-reasonix-compact.mjs and the GitHub Action in .github/workflows/sync-reasonix-compact.yml watch esengine/DeepSeek-Reasonix and open/update a PR when the upstream compact implementation changes. The sync job:

  1. Fetches the latest main-v2 Reasonix source.
  2. Updates vendor/reasonix/compact/ with the upstream compact files and design docs.
  3. Regenerates src/generated/reasonix-constants.ts from the Go constants and summary prompt (when they change).
  4. Commits and opens a PR with a summary of what changed.

The generated constants are imported by this package so tuning values stay traceable to upstream.

Publish to GitHub / community catalog

This repository is designed to be published as a standalone public GitHub repo. The 1024Store catalog discovers public repos with the dsh-plugin topic and statically validates the dsh.bundle.patch declaration (the patch file must exist in the same tree).

# 1. Authenticate GitHub CLI once
gh auth login

# 2. From this repository root, publish and add catalog topics
./scripts/publish.sh dsh-compaction-cacheaware

scripts/publish.sh will:

  1. Create a public GitHub repo and push this repository.
  2. Add dsh-plugin, deepseek-harness, and reasonix topics.

After that, deepseek1024.com lists the entry (browse-only until the npm package is published; installs come from npm).

License

MIT

上一个 Prev dsh-stock-mentions 下一个 Next dsh-split-view