DeepSeek Harness 插件

dsh-llm-call-inspector

Session-scoped LLM request and response inspector for DeepSeek Harness Web(英文原文)

跳到安装方式

来源信息

GitHub 仓库
striveh/dsh-llm-call-inspector
最近更新
2026年8月21日
分类
记忆
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-21

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/striveh/dsh-llm-call-inspector
插件名:dsh-llm-call-inspector
作者:striveh

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh.md来源说明 · 只读预览
README 语言

dsh-llm-call-inspector

English | 中文

![CI](https://github.com/striveh/dsh-llm-call-inspector/actions/workflows/ci.yml) ![License: MIT](LICENSE)

一个面向 DeepSeek Harness Web 的本地、会话级 LLM 请求/响应检查器。它在聊天和“轨迹”旁新增独立的 LLM 调用 页面,让开发者查看每个带会话标识的标准化 llm/stream 调用,同时不改变模型收到的内容,也不改变调用方收到的结果。

这是社区插件,并非 DeepSeek Harness 官方发布。0.1.2 版本已按 0.1.0-rc.80.1.1-rc.1 两个 API 边界验证。

![LLM 调用页面:按会话展示调用列表和有序响应 chunks](docs/llm-calls.png)

> [!WARNING] > 请求与响应正文可能包含提示词、源码、工具参数、工具结果、个人数据,或嵌入内容中的秘密。安装本插件后,Host 默认开始采集正文。请先阅读[隐私与数据处理](docs/privacy.md),再用于敏感会话。

能看到什么

  • 当前 DSH 会话的调用列表,最新调用在前。
  • Provider、模型、用途、状态、开始时间、耗时、chunk 数量与正文采集状态。
  • 搜索,以及按状态、用途筛选。
  • 主从详情布局;请求/响应独立页签;可展开 JSON 与复制操作。
  • 实时轮询、手动刷新、仅清空当前会话、错误/空状态、键盘焦点、响应式布局和中英文界面。
  • 只要调用带有 sessionId,就能覆盖 Assistant、压缩、会话标题和其他标准化用途。

标准化请求只允许采集以下字段:

providermodelreasoningEffortmessagessystemtoolstemperaturemaxTokensstopsessionIdpurpose

响应正文是 llm/stream 边界观察到的有序 DSH StreamChunk 数组。观察器只向下游委托一次,按原顺序交还原始 chunk 对象,并原样保留下游抛错。完整 chunk 采集也会保留 JSON 兼容的适配器回放元数据,包括适配器产生的 finish.replayState

当前 DSH 内置图片块包含附件引用元数据,包括不透明附件 id、媒体类型、字节数、尺寸和可选显示名;插件会把这份引用作为 messages 的一部分采集。插件不会主动加载附件字节,也观察不到供应商侧的 base64 网络请求体。但标准化 messages 是整体复制的:如果某个扩展在自定义消息块里嵌入字节、base64、凭证或其他私有字段,这些内容也会进入采集边界。

能力边界

本插件检查的是 DSH 标准化 LLM 边界,不是供应商网络代理。

它不会采集:

  • 供应商原生 HTTP 请求体或响应体;
  • HTTP headers、顶层 API key、终止信号或请求对象上未声明的适配器私有字段;
  • 原始 SSE 帧、适配器内部隐藏的网络重试或供应商侧处理;
  • 没有 sessionIdllm/stream 调用;
  • 供应商没有作为标准化 chunk 返回的隐藏推理。

排除顶层字段不等于内容脱敏。粘贴到提示词里的密钥、工具结果里返回的密钥,或插件自定义消息块内嵌的字段,仍可能被采集。 响应 chunks 会被完整保留,因此 finish.replayState 内的适配器私有 JSON 也可能被采集,必须按敏感内容处理。

为什么做独立页面,而不直接融合“轨迹”

DeepSeek Harness 0.1.0-rc.80.1.1-rc.1 对外提供的增量 UI 扩展点都是 conversation.view。内置“轨迹”使用了这个扩展点,但没有公开稳定的内部行或面板扩展接口。

两者回答的问题也不同:

  • 轨迹解释持久化的会话故事:用户、Assistant、工具事件,步骤、时序、用量与结局。
  • LLM 调用展示每个标准化调用实例:该次调用中被采集的完整请求快照与有序响应 chunks。

因此,本插件在 order 20 注册相邻页面,不复制、不修改,也不依赖“轨迹”内部实现。将来如果“轨迹”提供稳定的跳转或内部扩展接口,可以在不改变采集所有权的前提下把两个页面连接起来。

架构

带 sessionId 的 GenerateOptions
              |
              v
      llm/stream 透明观察器
              |
              v
      有界、按会话隔离的内存
              |
              v
Connection RPC /dsh-llm-call-inspector(仅 loopback)
              |
              v
     conversation.view / LLM 调用

一个包同时包含两个运行面:

  • Host 注入 llmconnection,在 llm/stream 前置透明观察器,持有有界内存,并注册一个仅 loopback 可用的 Connection RPC channel。
  • Client 注入 connectionslotslocale,注册一个 conversation.view。它轮询不含正文的摘要,只为当前选中的调用读取完整正文。
  • Bundle 声明 dsh.bundle.patch 和 Web client 导出,因此 dsh plugin 能通过官方 profile 机制加载两个运行面。

存储不会把采集正文写入磁盘。在 UI 中清空当前会话、达到单会话/会话总数/全局正文预算被淘汰、插件重载或 DSH 重启,都会让相关记录消失。

安装

前置条件:

  • DeepSeek Harness 0.1.0-rc.80.1.1-rc.1
  • Node.js 22.19 或 package engine 支持的更新版本;
  • PATH 中有 pnpm,这是 dsh plugin 的官方要求。

把 GitHub 仓库安装进 Web profile:

dsh plugin --profile web add github:striveh/dsh-llm-call-inspector
dsh --profile web --dump-config
dsh web

新增、更新或移除 bundle 后,需要重启正在运行的 Web profile。配置展开结果中应出现 # == dsh-llm-call-inspector 层。

正式使用建议锁定已经审阅的 commit:

dsh plugin --profile web add github:striveh/dsh-llm-call-inspector#<commit-sha>

仓库提交了构建好的 lib/,并且有意不提供 prepare 或安装期生命周期脚本;从 GitHub 安装不需要授予 pnpm allowBuilds 权限。

配置

Bundle 默认值如下:

字段默认值含义
captureBodiestrue采集白名单请求字段与有序响应 chunks。设为 false 时仍保留调用元数据,但两个正文都会标记为 omitted。
maxCallsPerSession100单个会话最多保留的调用数;先淘汰最旧调用。
maxSessions32最多保留的会话桶数量;按 LRU 淘汰。
maxRequestBytes524288单个请求快照序列化为 JSON 后的 UTF-8 字节上限。
maxResponseBytes1048576单个响应 chunk 数组序列化为 JSON 后的 UTF-8 字节上限。
maxTotalBodyBytes67108864跨全部会话保留的 captured JSON 全局预算;先淘汰已结束调用,再淘汰运行中调用,同类按创建时间从旧到新。
pollIntervalMs750Host 告知当前浏览器页面的轮询间隔。

如需覆盖,在 $DSH_HOME/profiles/web/cordis.patch.yml 中添加一个更晚生效的配置行。DSH patch 会替换目标行的完整 config,所以下例重述全部字段:

- id: dsh-llm-call-inspector
  config:
    captureBodies: true
    maxCallsPerSession: 50
    maxSessions: 16
    maxRequestBytes: 262144
    maxResponseBytes: 524288
    maxTotalBodyBytes: 33554432
    pollIntervalMs: 1000

正文超过上限时,插件会丢弃整个正文,并以 size-limit 明确标识实测字节数。正文包含不可 JSON 化的值,或关闭正文采集时,也会得到明确的 omission 状态;元数据和 chunk 数量仍然可见。

仅元数据模式

如果只需要 Provider/模型、状态、耗时与 chunk 数量,可以设置 captureBodies: false

- id: dsh-llm-call-inspector
  config:
    captureBodies: false
    maxCallsPerSession: 100
    maxSessions: 32
    maxRequestBytes: 524288
    maxResponseBytes: 1048576
    maxTotalBodyBytes: 67108864
    pollIntervalMs: 750

修改配置会重载插件,并丢弃当时的内存记录。

禁用或卸载

如果想保留依赖但禁用插件,请在 profile 的后续 patch 中添加以下内容并重启 Web:

- id: dsh-llm-call-inspector
  disabled: true

如果要移除依赖及其 bundle 层:

dsh plugin --profile web remove dsh-llm-call-inspector

移除后重启 profile。禁用或卸载不会产生可恢复文件:本插件从未持久化这些内存记录。

现有方案怎么选

这个生态变化很快;选择前请重新核对每个链接项目的最新文档。

方案主要数据与界面更适合的场景
内置轨迹原生 UI 中的持久化会话事件需要理解 Agent/会话叙事、工具流、用量与结局,而不是调用正文。
dsh-devtools原生 Web 页签中的 metadata-first 运行剖析;有意不采集提示词与工具正文需要性能和运行诊断,同时希望内容隐私面更小。
dsh-llm-inspector推理控制、流量统计、think 工作流与可选审计文件;项目文档未描述原生请求详情 UI明确需要行为改写或文件审计能力。
dsh-plugin-langfuse把会话事件作为 OpenTelemetry traces 导出到 Langfuse需要集中式、跨会话可观测性,并愿意配置外部上传。
dsh-llm-call-inspector本地原生主从界面,查看标准化调用正文;仅保留在有界进程内存需要本地 trace、debug、教学或研究检查。

GitHub topic 只是发现元数据,不是安全审核,也不代表官方背书。

开发

pnpm install --frozen-lockfile
pnpm verify
pnpm pack --dry-run

pnpm verify 会执行 Host/Client 类型检查、自动测试、干净构建和只读 package 校验。package 校验覆盖公开 exports、已提交构建产物、Web loader 标识、bundle patch、DSH client 声明、文档安装命令,以及安装期生命周期脚本必须缺失。

构建后测试本地 checkout:

dsh plugin --profile web add .
dsh --profile web --dump-config
dsh web

改动约束见 [CONTRIBUTING.md](CONTRIBUTING.md),私下报告漏洞的方式见 [SECURITY.md](SECURITY.md)。

兼容性

DeepSeek Harness 仍是 developer preview,不承诺预发布版本之间的插件兼容性。本版本在独立 CI lane 中分别验证 @deepseek-ai/dsh-* 0.1.0-rc.80.1.1-rc.1。rc.1 源码审计确认插件依赖的 llm/stream、Connection RPC、conversation.view、client loader 与 bundle/profile 接缝保持兼容;正式发布前还必须通过全新 rc.1 profile 的固定提交安装与浏览器交互验收。其他 DSH 版本只有通过同样的 gates 后,才会声明为已验证。

许可证

[MIT](LICENSE)