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