
Zhenyu98/dsh-context-doctor
Context Doctor
Audit token cost of the AGENTS.md instruction chain, skill catalogs, and tool schemas. Detect duplicates and conflicts, then suggest cuts.
Install
npx @deepseek-ai/dsh plugin --profile web add github:Zhenyu98/dsh-context-doctorRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-context-doctor)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from Zhenyu98/dsh-context-doctor, cleaned of badges and images.
<strong>DSH 上下文注入审计插件:看清模型每个请求到底背着多少上下文,找出重复、冲突与浪费 token 的注入物。</strong>
<strong>全程只读</strong> · <strong>token 成本逐项量化</strong> · <strong>可执行裁剪建议</strong>
<a href="#why">为什么</a> · <a href="#quick-start">快速安装</a> · <a href="#agent-setup">Agent 安装</a> · <a href="#它能做什么">功能</a> · <a href="#使用">使用</a> · <a href="#faq">FAQ</a> · <a href="#license">License</a>
<sub>面板文案跟随 DSH 的语言设置(简体中文 / English),并沿用宿主的浅色 / 深色 / 跟随系统主题。<br> 截图待更新至 v0.7 版式。</sub>
Why
DSH 会话里,模型每个请求都自动携带一批注入物:层层叠加的 AGENTS.md 指令链、一百多个技能的目录摘要、几十个工具 schema、MCP 工具面。它们悄悄消耗输入 token,且经常出现跨文件重复段落、同名技能互相遮蔽、工具面膨胀——但平时没人量化,问题到上下文告警时才暴露。
| 之前 | 之后 |
|---|---|
| 只能靠上下文计量条猜个大概,说不清是谁在消耗 | 指令链 / 技能 catalog / 工具 schema / MCP 四项逐项给出 token 估算 |
| 重复指令、重复技能描述散落在各层文件里,无人察觉 | 自动检测跨文件完全相同的重复段落、描述完全相同的冗余技能 |
| 同名技能多来源并存时被静默遮蔽,模型用的是哪个要靠猜 | 报告冲突胜出者与被遮蔽者(rank shadow) |
| 看到告警只能手工翻文件找线索 | 模型可直接调用 context_audit 拿到分节报告与按严重度排序的裁剪建议 |
Quick Start
宿主版本要求:DSH
>= 0.1.2-rc.1(已对 0.1.2-rc.1 验证)。0.1.2 重排了客户端模块表(dsh-client-runtime换成dsh-client-store),旧版宿主请固定v0.6.1—— 版本错配会让整个 web shell 起不来,不只是本插件(见 #9)。@deepseek-ai/cordis与@deepseek-ai/dsh-tools是 peer 依赖,由宿主 profile 提供;插件不自带这两份运行时(自带会铸造第二个工具调度器,见 #2)。
# 1. 安装(官方 bundle 插件机制;构建产物已入库,git 源安装无需构建)
dsh plugin --profile web add "github:Zhenyu98/dsh-context-doctor#main"
# 2. 验证合成树含该条目
dsh --profile web --dump-config | grep context-doctor
# 3. 重启 dsh web,在新会话里让模型调用
context_audit
预期成功信号:
dsh --profile web --dump-config | grep context-doctor
# - insert:
# - id: context-doctor
# name: 'dsh-context-doctor'
重启后,在已有会话的发送按钮左侧出现 Context Doctor 控件,或模型调用 context_audit 返回分节报告,即安装成功。面板文案跟随 DSH 的语言设置,并沿用其浅色 / 深色 / 跟随系统主题;新会话尚未分配 sessionId 时不会显示会话级控件。
Agent Setup
把下面这段发给 Codex、Claude Code、Cursor 或 DSH 里的任意 agent:
请阅读 https://github.com/Zhenyu98/dsh-context-doctor/blob/main/agent-setup.md
并按照步骤帮我安装和配置 Context Doctor(DSH 上下文注入审计插件)。
目标:装好后我能在 dsh web 里看到 Context Doctor 面板,并能让模型调用 context_audit。
修改文件、使用凭据、发布或运行破坏性命令前,先给我看计划并征得同意。
完整安装、验证与排障见 agent-setup.md。
它能做什么
两种形态
- Web UI
Context Doctor面板(已有会话的发送按钮左侧,与内置计量条并列;触发器是 30×30 的纯图标按钮,颜色即状态,名称在 tooltip 里):顶部一条预算轨把 10k / 30k 两个阈值直接画成刻度——离警戒线还有多远是看得见的,不再是隐含规则;轨内按互不重叠的四项(指令链 / 技能目录 / 内置工具 schema / MCP 工具)着色分段。每项可展开到具体条目——指令链逐文件、技能按来源、工具按单个 schema、MCP 按服务器——直接回答「谁在占用」。面板文案跟随 DSH 的语言设置(中 / 英),正文沿用宿主 UI 字体、等宽只用于数字;点击面板外任意处或按 Esc 收起。面板自动跟随 DSH 的浅色、深色与系统主题,并会在窄视窗内滚动以保持完整可用。数据经GET /api/context-doctor/audit(host 侧 60s 缓存)拉取。 context_audit模型工具:完整审计报告(含 rank shadow 冲突与按严重度排序的建议),模型可自主调用并执行建议。
审计内容
| 注入物 | 审计内容 | 成本性质 |
|---|---|---|
| 指令链 | 从 git 根到当前工作目录每一层的 AGENTS.md / CLAUDE.md:文件数、token 估算、跨文件完全相同的重复段落 | 每请求常驻 |
| 技能目录(catalog) | ctx.skills 中所有技能的 name + description(模型每请求看到 <available_skills>)、按来源分组统计、描述完全相同的冗余技能 | 每请求常驻 |
| 工具 schema | 当前 agent 可见的全部工具(ctx.tools.schemas):数量、schema token 估算、原生工具与 MCP 工具分组 | 每请求常驻 |
| MCP 工具面 | 按服务器分组的 MCP 工具数与 schema token(mcp__<server>__<tool> 命名解析),识别工具面膨胀 | 每请求常驻 |
| 技能正文(可选) | 前 N 个技能的正文总 token(按需加载,不常驻请求,用于对比"常驻 vs 按需"成本) | 按需加载 |
冲突检测:同名技能多来源并存时(如项目技能 shadow 掉 bundled 技能),报告哪个胜出、哪些被静默遮蔽。
使用
模型直接调用工具:
…

