智能体
wechat ·
@极客之家
DeepSeek 生态又出神器!这个开源插件,把 Agent 上下文黑盒彻底干碎了
未提供
正文
用 DeepSeek Harness 跑任务的时候,有个痛点问题:上下文窗口对我来说就是个黑盒。
聊着聊着 Agent 开始变笨,我猜多半是窗口快满了或者刚被压缩过,但具体是哪一步涨上去的、压缩到底扔掉了什么、那些又臭又长的工具输出占了多少地方,全不知道。
前阵子把 dsh-context 这个插件装上了,才算是能看见里面了。窗口里现在有什么、每次请求带了多少 token、压缩和剪枝什么时候发生的、哪个工具的 schema 最吃预算,全都展示在面板上,非常实用。
dsh-context 是干嘛的
先交代一句背景,DSH(DeepSeek Harness)是 DeepSeek 开源的 Agent 运行框架,架构上主张一切皆插件,模型、工具、界面都能像积木一样拆装。dsh-context 就是这个生态里的一个社区插件,功能就一个:把 Agent 上下文可视化。 它不改 Agent 行为,也不插手流程,只负责展示。
官方把它拆成五个入口:一个跨会话的上下文洞察页、每个会话里的 Context 面板、子 Agent 的编队页、聊天框里的 /context 命令,再加一个设置卡片。
下面按我自己的使用顺序挨个说。
一眼看全所有会话的用量
装好之后,左侧边栏会多出来一个「上下文洞察」入口,和插件、自动化任务排在同一级,点进去是一个跨会话的总览页。
最上面一排是 KPI:选定时间范围内(7 天、30 天或全部)跑了多少个会话、烧了多少计费 token、估算成本是多少、缓存命中率多少。
下面跟着最近 7 天的用量柱状图,还有一张 8 周的活动热力图,颜色深浅代表当天烧的 token 量,点某一天能直接筛出那天活跃的会话。
再往下是所有会话的卡片,每个会话有自己的上下文组成环图、计费 token 数、轮次、成本,还标了它属于哪个工作区。卡片可以按时间、token 量或上下文大小排序,也能直接搜,点卡片就跳进对应会话。
这个页面我主要用在一种情况:哪天用量突然飙了,点进去就能看到是哪个会话干的,不用自己挨个翻历史。
单个会话的上下文面板
单个会话里会多一个「上下文」标签页,这才是我平时开得最多的地方。整个仪表盘长这样:
里面是一组卡片,我挑常用的说。
当前窗口里装了什么
当前上下文这张卡是我看得最多的。一根七色的堆叠条,按比例画出当前窗口的组成:系统提示词、工具 schema、我发的消息、注入的上下文等内容,每一类都标了大概的 token 数和占比,灰色的部分是剩下的余量。
对话开始变差时,打开这张图,就能看出哪部分吃掉了预算。是系统提示词太长,是挂的工具太多,还是某次工具输出糊了一大段进来,条上一眼就能看出来。知道病因了,才好决定是精简工具、重开会话还是手动清一清。
token 和时间都花在哪了
旁边还有几张统计卡。Token Stats 回答的是计费 token 的去向:总数和输入框下面那行统计对得上,里面按组成拆开,系统提示词、工具、消息各占多少,卡片角上标着这个会话的缓存命中率。命中率高,说明不少输入走了缓存,实际花费会比表面 token 少。
成本估算也在统计卡里,按 models.dev 上的模型标价算的,DeepSeek 的峰谷时段价格也能对上,鼠标悬停能看到每百万 token 的单价。
Timing Stats 则是时间的去向:这一段会话里,模型思考占了多少时间,工具执行占了多少,框架自身的开销占了多少。任务跑得慢的时候,看这张卡能分清是模型在磨蹭还是工具在磨蹭。
上下文的历史变化
这块是历史趋势图,每次模型请求一根柱子,比按消息统计要细。可以在轮次和步骤两种粒度之间切,也可以在总量和增量两种模式之间切。
图上带 ✂ 标记的地方是发生过压缩或者剪枝的位置,柱子会当场矮下去。
官方文档里给过一个真实会话的例子:48 轮对话,上下文一路涨到 56 万多 token,然后一步压缩回收了 53.5 万,对话接着从一个干净的小窗口继续往下走。这一涨一落,图上一眼就能看出来。
图下面还有三行白话说明,叫 step brief:这一轮我说了哪句话、新进来了什么内容(通常是上一步的工具结果)、Agent 回了什么或者调了什么工具。点哪一行,就能跳到上下文浏览器里对应的那条消息。
增量模式看的是每一步的净变化:增长堆在基线上方,压缩直接扎到基线下面:
鼠标在柱子上划过去会出悬浮提示,点一下可以钉住看完整明细,估算的 token 数旁边会并排显示服务商上报的实际计费数。划动的时候旁边的上下文浏览器还会跟着联动,实时预览那一步的上下文内容。
每一次请求拆开看
这部分是我用得最多的部分。选「当前」看到的是下一次请求要发出去的东西,选历史上某一步,就能看到那一次请求到底是用什么拼出来的。
七个可折叠的分类,每一类展开是一行一行的条目,每条带自己的 token 价格。
还有个小细节我挺喜欢:
每一类旁边有和上一轮对比的增减标记,这一轮加了几个条目、多了还是省了几千 token,扫一眼就清楚。另外它对压缩之前的历史也尽量做了还原,用的是被移除消息的存档,还原不准的步数会明说这一步是近似值。
上下文事件记录
上下文事件卡:每次注入、压缩、剪枝、模型切换、计划模式开关,记了是谁触发的(指令文件、插件 id、技能名)、token 变化量、发生在第几轮第几步、什么时间。
Agent 动了哪些文件
这块按文件列出 Agent 读过、写过、搜过什么,还估算每次编辑增删了多少行,逐文件和总计都有。
Agent 一通操作下来改了哪些文件、每个文件动了多少行,这张表一次说完,配合 git diff 看很顺手。
子 Agent 关系图
「上下文」标签右边还有个「编队」标签,打开是 Agent 关系图:当前 Agent、它的父级、它派出去的所有子 Agent,全在一张图上。
当然,没有在 DSH 上跑多 Agent的话,这块没什么用。但跑多 Agent 任务的时候,哪一环占的上下文多、哪一环花的时间长,看这张图就有数了。
聊天框里的 /context 命令
不想离开聊天界面的话,直接敲 /context,会弹一个居中的对话框,里面是当前组成卡片和上下文浏览器,组成条、按步选择、和上一轮的增减对比都在,跟面板里是同一套东西。
对话聊到一半想快速确认一下窗口状态,比如刚塞进去一大段材料想看看占了多少,敲一下这个命令最顺手,看完关掉接着聊。
安装
在 DSH 的 Web 界面或桌面端里,打开添加插件的向导,搜 dsh-context,点安装:
有一点留意一下:
它要求 DSH 的版本在 0.1.7-rc.2 以上,太老的版本装不上。
我的看法
用了这些天,我觉得它解决的是一个很多人都遇到过的问题:上下文基本就是 Agent 干活时的全部家当,以前消耗过程完全看不见,出问题了才后知后觉。
现在每次请求带了多少、钱花在哪、什么时候压缩,都能查到。我现在会删掉不用的 MCP;长任务里会看一眼压缩节点;发大段材料前会先估一下 token。整体来看,这个插件可视化做的非常不错,很有用,大家觉得怎么样?
开源仓库:bowenliang123/dsh-context