dsh-ctx-budget:审计并压缩 Agent 每轮请求的静态上下文

前言

在 DSH(DeepSeek Harness)里跑 Agent 时,真正开始执行任务之前,每一轮请求已经带着一批「静态上下文」:规则(如 AGENTS.md)、记忆库、技能元数据、工具 schema、会话日志、知识库。这些内容每轮都会重新进入 prompt,占用 token 预算、推高成本;过期路径、重复记忆还会把模型引向错误方向。常见做法是凭感觉删规则或手工翻 JSON,既难量化,也容易误删长期约束。

dsh-ctx-budget 由社区维护者 LUgABeEEE 发布,分类为 admin-security,目标是把上述六层量出来、找出失效引用、压缩技能描述、体检记忆,并从会话日志推算工具面与冷启动静态上下文。工具默认只读、写操作需显式 --apply,适合在本地 DSH 主目录上做可控的上下文治理。

这是什么

一句话:dsh-ctx-budget 是一套只用 Python 标准库(>= 3.10)的 CLI ctxbudget,同时打包为 DSH 插件(package.json 中 dsh.bundle 版本 0.2.0),用于审计并裁剪 Agent 每轮都要支付的静态上下文。

主目录解析顺序固定:--dsh-home DIR > 环境变量 $DSH_HOME > ~/.dsh。路径与工作区通过 --workspace、--out 等参数或环境变量指定,不依赖本机私有路径。

六层静态上下文与核心能力

README 把常驻内容归纳为六层,baseline 子命令做只读快照:

层 内容 数据来源
L1 rules 全局/项目 AGENTS.md 字节数 文件大小
L2 memory 条目数 / 字符数 / token 估算 memory/**.json
L3 skills 技能数 / 元数据字符数 / token 估算 skills/*/SKILL.md frontmatter
L4 tools 插件条目、停用数、常驻 MCP;schema token 可能为 null 配置
L5 sessions 会话日志文件数 / 磁盘占用 sessions/
L6 kb 知识库表与行数(只读 sqlite) --kb 指向的库

围绕这六层,CLI 提供以下子命令(资料中均已说明行为):

  1. doctor:检查主目录、六层目录、zstdcat/zstd 是否可用。
  2. capabilities:解析能力地图 markdown 里反引号 token,校验路径是否存在;单段命令名找不到不算 broken,避免误报。
  3. skills:压缩 SKILL.md frontmatter 的 description(默认 --max-len 180);默认 dry-run,--apply 写盘并备份。
  4. memory-audit:只读体检 memory/global.json 与 memory/projects/*.json(无 tags、重复、超 90 天、超限文件等)。
  5. memory-archive:按打分把低价值条目移入档案并留指针;不通过 DSH 插件暴露给模型,须人手工加 --apply。
  6. probe:从会话日志读取 request/header.tools 与 usage,估算工具面字符数;冷启动时可推算静态上下文,算不出输出 null。
  7. baseline:六层快照,可选 --cost 成本层。

字符/token 估算使用源码常量(中文约 2 字符/token、英文约 3.5),仅用于横向比较,不等于供应商计费。

安装与启用

仅 CLI(pip / pipx)

Python >= 3.10,无第三方运行时依赖:

python -m pip install -e .
# 或
pipx install .

安装后命令为 ctxbudget;也可不安装直接 python -m ctxbudget ...。

作为 DSH 插件

同一仓库声明为 DSH 插件包,安装后模型可调用四个只读工具,无需记 CLI:

dsh plugin add --profile web \
  https://github.com/LUgABeEEE/dsh-ctx-budget/releases/download/v0.2.0/dsh-ctx-budget-0.2.0.tgz
工具 作用
ctx_budget_report 六层静态上下文快照
ctx_budget_audit 记忆库只读体检
ctx_budget_check 校验能力地图失效路径与命令
ctx_budget_doctor 主目录布局与 Python 运行时自检

插件用宿主上的 python3 执行 bundled 的 ctxbudget/;可经插件选项 python 或环境变量 CTXBUDGET_PYTHON 换解释器。package.json 要求 Node >= 20,DSH 兼容 >=0.2.0。

典型用法

先做环境自检,再量 baseline、查能力地图,按需审计记忆或探针会话。

ctxbudget doctor                                # 主目录与依赖是否齐全(只读)
ctxbudget baseline --workspace .                # 六层静态上下文快照
ctxbudget capabilities --doc CAPABILITIES.md    # 校验能力地图里的失效路径/命令

记忆只读报告与写操作分离:

ctxbudget memory-audit
ctxbudget memory-audit --json
ctxbudget memory-audit --out ./reports      # 写 markdown + json,不碰记忆库
ctxbudget memory-archive                       # dry-run:只算方案
ctxbudget memory-archive --keep 280 --apply    # 备份 memory/ 后真正移动条目

从近总会话估算工具面与 prompt(需本机有会话日志;.jsonl.zstd 依赖 zstdcat/zstd):

ctxbudget probe --since 7d
ctxbudget probe --since 24h --json

技能描述压缩前务必 dry-run:

ctxbudget skills                                  # 只打印 old -> new
ctxbudget skills --root ~/.dsh/skills --apply     # 写盘并生成 SKILL.md.bak-<stamp>

capabilities 存在 broken 时退出码为 1,可接入 CI。

适用场景与注意

适合谁:长期在 DSH 上维护规则、记忆、技能与能力地图的开发者;希望每轮 token 可量化、失效链接在运行前被发现、记忆库不过载但不误删「必须/禁止/红线」类条目。

安全与回滚(资料原文强调):

  • 默认只读;skills 与 memory-archive 默认 dry-run,写操作必须 --apply。
  • 写前自动备份(技能单文件备份;记忆整目录按天备份到 <dsh-home>/backup/memory-<date>/)。
  • 归档是移出主库并原样写入档案,不是删除;全程离线,不调用模型、不联网。

限制(当作已知事实):会话日志里工具 description 被截断,probe 给出的工具面是下界;system prompt 不落盘;非冷启动无法拆分静态部分时会输出 null;只识别 DSH 风格目录布局;归档打分为启发式,必留条目超限只会 warning 不会强删。

安装前:插件以当前 dsh 进程权限运行,会读取主目录下的 memory、sessions、skills 等。安装前应自行查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全策略。社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系,属于 DSH「一切皆插件」生态中的第三方条目。

结尾

静态上下文删一条过期指针,收益是「每一轮」的,而不是一次性的。dsh-ctx-budget 把 baseline、capabilities、memory 体检、probe 和可选压缩归档串成一条可重复的治理路径;作为插件时四个只读工具便于 Agent 自助出报告,危险写操作仍留在 CLI 与人的 --apply 之后。

  • 目录页:https://www.skillhub.cn/plugins/LUgABeEEE/dsh-ctx-budget
  • 源码与文档:https://github.com/LUgABeEEE/dsh-ctx-budget
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜