dsh-bili-config
Verifieddsh-bili-config · v0.1.0 · MIT · Web UI
Graphical config panel for the billion-context (ACP) compression engine inside DeepSeek Harness: tune fold thresholds from the plugin page, watch live usage / pending-compress / cache-hit / drift metrics, and apply preset profiles — no more hand-editing a
Install
dsh plugin add dsh-bili-config Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-bili-config
简体中文 | English
给 billion-context(ACP 上下文压缩引擎)做一个图形化配置面板:DSH 插件页里调阈值、看实时压缩指标、一键档位——不用再手啃 328KB 的配置参考文档。
为什么需要它
billion-context 是 DSH 生态里装得最多的上下文压缩插件,但它的默认阈值非常保守:
- 增长门
nudgeGrowthTokens默认 50000 —— 会话每步攒的可压缩量到不了这个数,折叠就永远不触发; - 压力线
maxContextLimit默认 75% —— 上下文占用不到窗口 3/4,同样不压。
于是长会话每一步都把全部历史原样重传(实测单会话 195 次 forward、每分钟 3–5 次、单请求 1.3–1.9 MiB),而压缩引擎一直在"待命"。要让它真正开工,只能去改 ~/.config/billion-context/billion-context.json —— 但那份 CONFIGURATION.zh-CN.md 有 32 万字,普通用户根本不知道从哪下手。
本插件把这件事变成三次点击:设置 → 插件 → bili 压缩 → 选档位。
功能
- 三个档位(只动白名单键,其它配置分毫不动):
| 档位 | 改什么 | 适合 |
|---|---|---|
| 保守 | 只钉 reconcile=repair,其余用引擎默认 |
想先观察的人 |
| 均衡(推荐) | 增长门 50000→25000 | 大多数会话 |
| 激进 | 增长门 20000 + 压力线 50% | 超长会话、高频重发 |
- 实时指标(解析
bili.log尾部 512KB 窗口,5 秒刷新):上下文占用%、待压缩积压、增长量、缓存命中率、折叠漂移次数、退化折叠警告、实际压缩次数与最近一次压缩的压缩比 - 逐键微调:白名单键带说明文字的表单
- 写入即热生效:billion-context 按请求合并配置,改完不用重启
- 每次写入自动备份(
.bak-<时间戳>,保留最近 10 份),支持一键回看 - 附带
bili_config工具:模型侧也能只读查询指标("帮我看看压缩为什么没触发")
安装
dsh plugin --profile web add dsh-bili-config
DSH Desktop 桌面端请在应用内 设置 → 插件 里安装(桌面端 profile 归应用管理)。
要求:DSH 0.2.1-rc.2(engines.dsh 声明),billion-context 任意近期版本(独立进程,经配置文件交互,不依赖其内部 API)。
与其它插件的关系
- @indexyz/dsh-autocompact:管的是 DSH 原生 compaction(
/compact链路、dsh-compaction服务)的触发阈值;本插件管的是 billion-context 的 ACP fold(独立代理、~/.config/billion-context/)。两者是"客厅空调遥控器"和"卧室空调遥控器",互不干涉,可以同装。唯一的交集是 UI 上提醒:两条管线都调太狠会过度压缩丢信息。 - dsh-context-governor:只读观测通用上下文/费用;本插件专写 billion-context 配置,两者互补。
内置插件冲突检测
插件页会自动检查 profile 里已安装的插件,如果发现已知会与本插件或 billion-context 打架的,会在面板顶部逐条提示,格式如:
插件兼容性提示(已检查 18 个已装插件)
⚠️ mosaic-memory-compress 与 billion-context 冲突(冲突):就地对话压缩与 ACP fold 同域竞争……
⚠️ dsh-sieve 与 DSH 0.2.1-rc.2 宿主(不兼容):engines 锁 0.2.1-alpha.1 线,安装会加载失败。
检测分级:
- 冲突:同装互相破坏(如 mosaic-memory-compress 与 billion-context 双压缩引擎互相覆盖状态)
- 不兼容:版本/引擎面不匹配,装不上或加载失败(如 dsh-sieve)
- 功能重叠:不报错但重复/空转(如 dsh-cost-meter 与 whale-widget 同域)
知识库位于 lib/compatibility.mjs(COMPAT 表),只收录有实际依据的条目;未收录的插件一律不猜"没冲突"。模型侧也可以用 bili_config 工具 action=compat 查询。
安全设计
- 键级合并,绝不整文件覆盖 —— billion-context 两天升了三版(0.1.202→0.1.204),键面在变;用户配置里我们不认识的键一律原样保留。
- 白名单:本插件只允许修改
WHITELIST(lib/config.mjs)里声明的 17 个键,且有类型/范围校验;越界写入请求整体拒绝、原文件不动。 - 原子写:临时文件 +
rename,中途断电不留半截文件。 - 自动备份 + 数量上限:每次写入前备份,最多保留 10 份。
- UI 读取与模型工具都是本机文件交互,不碰 billion-context 的管理面 API(
/__bili__/有信任围栏,直接访问 403)。
开发
npm run check # node --check 三个入口
npm test # 离线测试:键级合并/未知键保留/备份清理/日志解析(用真实日志行做夹具)
无构建步骤、无运行时依赖。
已知边界
nudge idle行只在引擎真的评估过压缩时机时出现;刚启动的会话里"待压缩积压"可能显示—。bili.log10MB 自动轮转,指标只反映尾部 512KB 窗口(最近几十轮),不是全历史统计。- 档位"命中"的判断是逐键精确比对;手动改过任何一个档位键,档位就显示"(自定义)"。
License
MIT