← Back to home@zszzlzm

dsh-context-compactor

L0-L5 context compaction pipeline for DSH + Ollama

Stars
0
Language
Python
Created
Oct 26, 2026
Updated
Oct 26, 2026

Introduction

DSH Context Compactor

一个跑在本地 Ollama 上的长会话上下文压缩管道(L0–L5):把 DSH 会话压成分段摘要、锚点与稳定的状态 JSON,并在每轮增量合并时做确定性校验。

本仓库是从一个私有中文小说写作工作区中抽出的工具代码,不含小说正文、图片、模型权重或真实会话日志。代码按 Windows 优先设计,其他平台可参考 src/qwen_client.py 的 HTTP 客户端。

它做什么

session.v4.jsonl.zstd
   │  L0 瘦身(工具流水过滤/分块)
   ▼
   │  L1 锚点(路径/编辑/CMD,kind-aware normalization)
   ▼
   │  L2 分段摘要(facts/quotes 逐字校验、薄摘要重摘)
   ▼
   │  L3 变更集合并(JSON Schema 约束解码)
   ▼
   │  L4 校验/两阶段提交(idx+expect、base_hash、fail-closed)
   ▼
   │  L5 垃圾回收(字节预算 + 归档守恒)
   ▼
02_文档/会话状态/状态.json  +  每轮 changes.json

核心模块(src/_试作/,保留原项目目录名以兼容相对路径):

模块作用
compact_context.py驱动:跑 L0–L5、锁、checkpoint、后台续跑、pending 排队
qwen_client.py本地 Ollama HTTP 客户端(JSON/约束解码、done_reason、自动拉起)
slim_v2_27b.py / anchors_v2_27b.pyL0/L1 瘦身与锚点提取
sum_v3_27b.py / thin_check.pyL2 摘要与空壳检测
l4_v3_27b.py / schema_contract.pyL3/L4 校验、契约常量与 schema 比对
gc_v2_27b.pyL5 预算回收与归档
merge_budget.py / job_marker.py / pending_queue.py / service_wait.py预算、任务标识、排队、服务等待
delegate.py / delegate_checks.py本地 27B 派活(契约 lint + 验收反馈)

快速开始

  1. Python 3.12+
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
  1. Ollama + 模型
# 模型目录按你的实际位置改
$env:OLLAMA_MODELS='C:\path\to\ollama-models'
$env:QWEN_MODEL='qwen3.8:27b-mtp-q4_K_M'   # 换成你本地有的模型
.\\.venv\\Scripts\\python.exe src\qwen_client.py --ensure-service
.\\.venv\\Scripts\\python.exe src\qwen_client.py --ping
  1. 跑一轮压缩
.\\.venv\\Scripts\\python.exe src\_试作\compact_context.py --last-turns 1 --dry-run
# 去掉 --dry-run 才会写 02_文档/会话状态/
  1. DSH 插件(可选)

plugins/dsh_plugin_compactor/ 是 DSH Host 插件;把 plugins/dsh_plugin_compactor/cordis.patch.yml 里的 projects 改成你的工作区路径后安装。插件默认用 pythonw.exe,避免 GUI 宿主弹出控制台窗口。

配置

环境变量默认说明
QWEN_URLhttp://127.0.0.1:11434/api/chatOllama chat 地址
QWEN_MODELqwen3.8:27b-mtp-q4_K_M模型名
OLLAMA_MODELSOllama 默认模型目录;自动拉起 ollama serve 时继承
QWEN_NO_AUTOSTART未设置设为 1 禁用自动拉起

测试

.\\.venv\\Scripts\\python.exe tests\run_offline.py

离线测试不需要 Ollama/GPU;覆盖 L4 契约、预算裁剪、排队、任务标识、GBK 控制台、摘要空壳检测等。src/_试作/test_pipeline.py 用合成会话跑端到端(不调模型)。

不包含

  • 小说正文、插图、素材、模型 LoRA 权重
  • 真实会话日志、会话状态、日志、备份
  • 项目问题清单与审查报告(内部数据)

设计文档

License

Apache License 2.0,见 LICENSE。文档与代码同许可。