54shitaimzf/dsh-price-less ↗★ 1
dsh-price-less
DSH 上下文管理插件:任务边界、项目帧、自动判别与上下文优化(开发中,R2 判别域 P8–P14b1 已施工) 适合做任务结构化与上下文压缩实验,当前仍在开发中,请先阅读仓库说明确认稳定性。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:54shitaimzf/dsh-price-lessドキュメント
README 全文を読む ↗Usage
/init I am building a context management plugin
/init confirm
/task Design the command face
/task
/task close
/optimize-prompt
/initis only a proposal;/init confirmpersists the brief. Cancel any time with/init cancel./taskopens a new task; later messages are classified as continuation or new task by intent detection (when enabled);/task closemarks the end, which is what triggers boundary compaction./optimize-promptor the star button opens a preview first: it applies only after you confirm, and your edited version is final.- Any step can fail without changing anything — the worst case is that nothing happened.
Configuration
Configuration is grouped under shear (tool shear), compression (compaction) and discriminator (intent detection / auxiliary model). Use the GUI settings card, or write ~/.dsh/settings.yaml directly:
context-economy:
shear:
enabled: true
compression:
boundary: true
pressure: true
pressureRatio: 0.35 # pressure valve = ratio × main-model context window
domainTokens: 125000 # assumed window when the main model declares none
retainTokens: 10000 # hot-tail budget
thresholdTokens: 100000 # absolute safety net
archiveCapTokens: 10000 # archive hard cap (digest only)
discriminator:
auto: false # intent detection is off by default
# provider: deepseek-official
# model: deepseek-v4-flash-vision-exp
# reasoningEffort: high
| Key | Type | Default | Description |
|---|---|---|---|
shear.enabled | boolean | true | Tool-shear master switch |
compression.boundary | boolean | true | Task-boundary compaction |
compression.pressure | boolean | true | Pressure-path compaction |
compression.pressureRatio | number | 0.35 | Pressure valve = ratio × main-model context window |
compression.domainTokens | number | 125000 | Assumed window when the main model declares none |
compression.retainTokens | number | 10000 | Hot-tail budget |
compression.thresholdTokens | number | 100000 | Absolute safety net |
compression.archiveCapTokens | number | 10000 | Archive hard cap (digest only) |
discriminator.auto | boolean | false | Automatic intent-detection master switch |
discriminator.provider / model | string | unset | Auxiliary LLM route; set both to override, empty = follow the session model |
discriminator.reasoningEffort | string | unset | Auxiliary reasoning effort; unset = follow the model default |
The schema declares no default for
provider/model, and the plugin ships no built-in default model either (2026-09-10: the previously hard-coded id was date-expired, and "the plugin guessing a model id" is itself a drift source). Left empty, auxiliary calls (intent detection,/init, star section, boundary compaction) follow the current session model (provider/model of the latest request). On the first message of a session there is no request record yet, so discrimination is skipped and an observableCE_JUDGE_NO_ROUTEfact is emitted (/initand the star button report "model not configured" instead); from the second message on it follows the session model automatically. Setting both values overrides all of this. Enablingdiscriminator.autoor using/init, the star button, or boundary compaction may invoke the auxiliary LLM. This can incur API costs and may send relevant prompt content to the configured provider.